Lines Matching refs:monster
73 special_hit(object *monster)
75 if ((monster->m_flags & CONFUSED) && rand_percent(66)) {
78 if (monster->m_flags & RUSTS) {
79 rust(monster);
81 if ((monster->m_flags & HOLDS) && !levitate) {
84 if (monster->m_flags & FREEZES) {
85 freeze(monster);
87 if (monster->m_flags & STINGS) {
88 sting(monster);
90 if (monster->m_flags & DRAINS_LIFE) {
93 if (monster->m_flags & DROPS_LEVEL) {
96 if (monster->m_flags & STEALS_GOLD) {
97 steal_gold(monster);
98 } else if (monster->m_flags & STEALS_ITEM) {
99 steal_item(monster);
104 rust(object *monster)
111 if (monster && (!(monster->m_flags & RUST_VANISHED))) {
113 monster->m_flags |= RUST_VANISHED;
123 freeze(object *monster)
137 monster->m_flags |= FREEZING_ROGUE;
151 monster->m_flags &= (~FREEZING_ROGUE);
156 steal_gold(object *monster)
172 disappear(monster);
176 steal_item(object *monster)
225 disappear(monster);
229 disappear(object *monster)
233 row = monster->row;
234 col = monster->col;
236 dungeon[row][col] &= ~MONSTER;
240 take_from_pack(monster, &level_monsters);
241 free_object(monster);
246 cough_up(object *monster)
255 if (monster->m_flags & STEALS_GOLD) {
260 if (!rand_percent((int)monster->drop_percent)) {
265 row = monster->row;
266 col = monster->col;
300 (!(dungeon[row][col] & MONSTER))) {
309 seek_gold(object *monster)
313 if ((rn = get_room_number(monster->row, monster->col)) < 0) {
318 if ((gold_at(i, j)) && !(dungeon[i][j] & MONSTER)) {
319 monster->m_flags |= CAN_FLIT;
320 s = mon_can_go(monster, i, j);
321 monster->m_flags &= (~CAN_FLIT);
323 move_mon_to(monster, i, j);
324 monster->m_flags |= ASLEEP;
325 monster->m_flags &= (~(WAKENS | SEEKS_GOLD));
328 monster->m_flags &= (~SEEKS_GOLD);
329 monster->m_flags |= CAN_FLIT;
330 mv_1_monster(monster, i, j);
331 monster->m_flags &= (~CAN_FLIT);
332 monster->m_flags |= SEEKS_GOLD;
355 check_gold_seeker(object *monster)
357 monster->m_flags &= (~SEEKS_GOLD);
361 check_imitator(object *monster)
363 if (monster->m_flags & IMITATES) {
364 wake_up(monster);
366 mvaddch(monster->row, monster->col,
367 get_dungeon_char(monster->row, monster->col));
369 messagef(1, "wait, that's a %s!", mon_name(monster));
379 if (dungeon[row][col] & MONSTER) {
380 object *monster;
382 if ((monster = object_at(&level_monsters, row, col)) != NULL) {
383 if (monster->m_flags & IMITATES) {
392 sting(object *monster)
406 mon_name(monster));
462 m_confuse(object *monster)
464 if (!rogue_can_see(monster->row, monster->col)) {
468 monster->m_flags &= (~CONFUSES); /* will not confuse the rogue */
472 monster->m_flags &= (~CONFUSES);
474 mon_name(monster));
482 flame_broil(object *monster)
486 if ((!mon_sees(monster, rogue.row, rogue.col)) || coin_toss()) {
489 row = rogue.row - monster->row;
490 col = rogue.col - monster->col;
501 dir = get_dir(monster->row, monster->col, row, col);
502 bounce(FIRE, dir, monster->row, monster->col, 0);