World *game_init() { int cx, cy; int i; srand(time(0)); World *w = (World *) malloc(sizeof(World)); memset(w, 0, sizeof(World)); for (cy = 0; cy < 100; cy++) { for (cx = 0; cx < 100; cx++) { w->map[cy][cx].bg_color = 0; w->map[cy][cx].fg_color = 6; w->map[cy][cx].layer = 0; w->map[cy][cx].block = 0; strcpy(w->map[cy][cx].str, "."); } } for (i = 0; i < 400; i++) { Cell c; c.fg_color = 2; c.bg_color = 0; c.layer = 1; c.block = 1; strcpy(c.str, "#"); w->map[rand() % 100][rand() % 100] = c; } new_mk_obj("enemy", w, 10, 10, 0); Object *hero_ptr; hero_ptr = new_mk_obj("hero", w, 0, 0, 0); w->hero = hero_ptr; return w; }
int fn_death_drop(Object * me) { int i; for (i = 0; i < 10; i++) { char *item = &(me->item_slots[i][0]); if (!strcmp(item, "")) continue; new_mk_obj(item, me->world, me->x, me->y, me); } }
int act_skill(Object * obj, char name[SHORT_STRLEN]) { int hx = obj->x; int hy = obj->y; World *w = obj->world; if (strlen(name) == 0) return 0; new_mk_obj(name, w, hx, hy, obj); char buf[64]; sprintf(buf, "skill %s is issued", name); set_notice(obj, buf); return 1; }
int fn_bomb_timer(Object * o) { o->timer -= 1; snprintf(o->shape.str, 3, "%d", o->timer); if (o->timer <= 0) { int cy, cx; for (cy = -1; cy <= 1; cy++) { for (cx = -1; cx <= 1; cx++) { new_mk_obj("fire", o->world, o->x + cx, o->y + cy, o); } } delete_object(o); } }
int fn_do_rand(Object * o) { int r = rand() % 50; if (r == 0) { obj_move(o->world, o, -1, 0); } if (r == 1) { obj_move(o->world, o, 1, 0); } if (r == 2) { obj_move(o->world, o, 0, -1); } if (r == 3) { obj_move(o->world, o, 0, 1); } if (r == 4) { if (rand() % 10 == 0) new_mk_obj("bomb", o->world, o->x, o->y, o); } }
void key_attack(Object * obj) { new_mk_obj("bomb", obj->world, obj->x, obj->y, obj); strcpy(obj->last_action, "bomb"); }