1 /** 2 * @file 3 * @brief Monster polymorph and mimic functions. 4 **/ 5 6 #pragma once 7 8 #include "item-def.h" 9 #include "libutil.h" // always_true 10 11 class monster; 12 13 bool feature_mimic_at(const coord_def &c); 14 item_def* item_mimic_at(const coord_def &c); 15 bool mimic_at(const coord_def &c); 16 17 #define ORIGINAL_TYPE_KEY "original_type" 18 const string POLY_SET_KEY = "poly_set"; 19 20 enum poly_power_type 21 { 22 PPT_LESS, 23 PPT_MORE, 24 PPT_SAME, 25 PPT_SLIME, 26 }; 27 28 void monster_drop_things( 29 monster* mons, 30 bool mark_item_origins = false, 31 bool (*suitable)(const item_def& item) = always_true<const item_def &>); 32 33 void change_monster_type(monster* mons, monster_type targetc); 34 void init_poly_set(monster *mons); 35 bool monster_polymorph(monster* mons, monster_type targetc, 36 poly_power_type power = PPT_SAME); 37 38 void slimify_monster(monster* mons); 39 bool mon_can_be_slimified(const monster* mons); 40 41 void seen_monster(monster* mons); 42