- char * f_name = "player_hits_monster()";
- struct MapObjDef * mod = get_map_obj_def(world, monster->map_obj.type);
- char * hit_dsc = "You hit the ";
- char * monster_dsc = mod->desc;
- char hitmsg[strlen(hit_dsc) + strlen(monster_dsc) + 3];
- sprintf(hitmsg, "\n%s%s.", hit_dsc, monster_dsc);
- update_log(world, hitmsg);
- monster->hitpoints--;
- if (0 == monster->hitpoints)
- {
- hit_dsc = "You kill the ";
- char kill_msg[strlen(hit_dsc) + strlen(monster_dsc) + 3];
- sprintf(kill_msg, "\n%s%s.", hit_dsc, monster_dsc);
- update_log(world, kill_msg);
- struct MonsterDef * md = (struct MonsterDef * ) mod;
- struct Item * corpse = try_malloc(sizeof(struct Item), world, f_name);
- corpse->map_obj.type = md->corpse_id;
- corpse->map_obj.pos = monster->map_obj.pos;
- corpse->map_obj.next = world->item;
- world->item = corpse;
- if (world->monster == monster)
+ struct yx_uint16 target = mv_yx_in_dir(d, actor->pos);
+ struct MapObj * other_actor;
+ for (other_actor = world->map_objs;
+ other_actor != 0;
+ other_actor = other_actor->next)
+ {
+ if (0 == other_actor->lifepoints || other_actor == actor)