コード例 #1
0
ファイル: hit.c プロジェクト: AhmadTux/DragonFlyBSD
boolean
mon_damage(object *monster, short damage)
{
	const char *mn;
	short row, col;

	monster->hp_to_kill -= damage;

	if (monster->hp_to_kill <= 0) {
		row = monster->row;
		col = monster->col;
		dungeon[row][col] &= ~MONSTER;
		mvaddch(row, col, (int)get_dungeon_char(row, col));

		fight_monster = NULL;
		cough_up(monster);
		mn = mon_name(monster);
		sprintf(hit_message+strlen(hit_message), "defeated the %s", mn);
		message(hit_message, 1);
		hit_message[0] = 0;
		add_exp(monster->kill_exp, 1);
		take_from_pack(monster, &level_monsters);

		if (monster->m_flags & HOLDS) {
			being_held = 0;
		}
		free_object(monster);
		return(0);
	}
	return(1);
}
コード例 #2
0
ファイル: spechit.c プロジェクト: naota/rogueclone2s-utf8
void
disappear(object *monster)
{
    short row, col;

    row = monster->row;
    col = monster->col;

    dungeon[row][col] &= ~MONSTER;
    if (rogue_can_see(row, col)) {
	mvaddch_rogue(row, col, get_dungeon_char(row, col));
    }
    take_from_pack(monster, &level_monsters);
    free_object(monster);
    mon_disappeared = 1;
}
コード例 #3
0
ファイル: use.c プロジェクト: AhmadTux/DragonFlyBSD
void
vanish(object *obj, short rm, object *pack)
{
	if (obj->quantity > 1) {
		obj->quantity--;
	} else {
		if (obj->in_use_flags & BEING_WIELDED) {
			unwield(obj);
		} else if (obj->in_use_flags & BEING_WORN) {
			unwear(obj);
		} else if (obj->in_use_flags & ON_EITHER_HAND) {
			un_put_on(obj);
		}
		take_from_pack(obj, pack);
		free_object(obj);
	}
	if (rm) {
		reg_move();
	}
}