git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@3813 c06c8d41-db1a-0410-9941-cceddc491573
KAOE5HB3THUKVGFZRO5EZESHEB3Q34WUO5DFMLWIKOBF47LZTIYAC
GGEB64C3QQ5PPS7GOFXULDUCRT2NZL2PMIE5UDDUJTUTLLPTDU7QC
FEBNNCNH6C44FRFAJKLVC4QF6JLXVEPYUNMCVUJK3KA3ALKSOC3QC
O2A7I25VYURCVDZEGRMFCP6X6DEYT4EB3TZESZSDCDDJE2U7QYVAC
UTGQ25S6K4R2POPYLVF6A5ZU4PRTN3SIR4DL672HERNAE3RZP7AAC
GO6DARZD47R5UPXZIBMPX7PZUGJH24JWYDFMTWWESS4IZR7PAWRQC
TDE7UVSZX4XJDAQWKCAPZ5IU25C75KKYUHXFI53JRIWHKK5SAGHQC
OBGOBCWABXEGCPYXEY45DRPXL4AVGPATUQ4NFLJGMAF7XLEGOOBAC
TMN6MGCYNMQL3GG5P3JKKT4ROF2RB26H4AE6LHNEE76MBRVCDZMQC
7MXX53FZ5VFNAFDQN5WPPYF2MPKL5B3H3TINRKCFV2P6QZ2APVGQC
EOJPYR3QD5GGS7GB2P7SBLMOP7YC57YMIVR7VKCOMWNCKNBPESBQC
V7IKAPO5OY7CJTT62GMHQOD3EQW42FTTY3KDBOTJUODPS5WMBCHAC
DH3D44HGNRXTSZLL5HTHKOPKCO4VZQZVBEMFOAPRJGQMLGN2BFQAC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
AUXVWXWIFSTWFA6VZXN2FMG7FQEKRZVV6MD32VQQ7J2RKCXHAVGAC
T2AYVN57EFJQLFUFLAZDXKDAFDGTDLQIEQWQZNYFWJZBYSTYH4QQC
NUYXKJP5YXHRDUQW5QW7UC3D5U3VPANIOZAOHFCPWMSRYGMA3GCAC
OSGS3PH2L5CBTDVZCZS6OCFQNA4A7RMEXBYJQB7DDZBYYJW7QSSAC
SDLKLUNFGVKDS55DDJZCBAVIB7NL3RRYPTACAY65SCUQKV6APFSAC
RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC
DODCHP2S4I6VZKQAVXX6D76OPNFI2YWZ4XH3HZTMAJZXA2RJ3XRQC
TR4NPGNO5QNNRJNVMNSUEO5QLT37HCXXDOBKXCB5XWXRQNAJ5SHAC
YOH32TMLN6QJG4ZFLYWPJF3YUEGIMZPVPYN57RTB26QBBHMICV3AC
TV3ZC6WOZKSQQJQN26JIVKCHK6UK7WMDBYZDUYRWEAZ4JB4YVNAAC
5UC5TI7B6NWGIGN74QRBZKDBYUMHLM2ZO5ATXEZ6TZOGOLF3JX5QC
C5VA63WAQRWPENIMXRPUPZLZJMC77PL2B3A77HYFWDCZU5QDG7VQC
NLQNXH3SVJ52CWXEV35FSSZP32VHC4QFGN3HINF4KO5GZHZMOBKQC
NDCVITU5R7TBEUC4FILNFRKWQGUNCJUGW5HA5KW3CQTU6AYRLYWQC
QDTVLBRGHDTRUVT7I3O72K6TMOYAUSAJBZUHGOEFU2RKJNUPWZSQC
77H4BWWPPGLM3PLZH4QTAJRXIZTSDVNCOKZE223I437FN2UJ34RQC
DOZORMA366M4HB5JKSS27BMCR6ET7QNZNND2B7KV3NVEEPR5H7EAC
YA24HFHVUI2LDWFOZR5QSHRIVTAWGSGPAH5E2FPP6ANCL2MTUSTAC
KFULGQQOHWUTXOM3BXCCYPGGVGGY4Z6265XUFRCBPNLTZAEHJZSQC
MX2KOWAIE37VLSQJWXVEDVQVB3DL325Q7YFUSSHYMAIH53Y74IJQC
TC2BJGPEDVBTY6YWMGLBYQKFLPZPEJC5ZN3HPHXFBIBDIEJ2ZTRQC
F7Q5PX44SLPANIZXCY67TG2W5JTRVJMHGQW54VJLGB4XRH7R6JBQC
RISMOCQM6BKK4XSIRKYLOBB2UPDYJNDAL6OGIIR5GGNZQAK5YSZAC
UZ6N6HOUPGVSPC5NQROEEDWMEGJA5XUWUY2AKH5QG65AZ25PVXDAC
2E4RV454MTTCKYLKMSHEEAFPNAFVUXXPBZV3XP6V7QMF4BBWE7TAC
DDU4A3JGN5IUIPP5IASOODKPR2WBHSDSV4FITZ6HNXNSXXQACWAQC
G2IBQUJ2V2OGM4TR6VKC4CLNVLALTDLB5STOBN7637GOUX2SH4ZAC
SJDOBXECX7F3ZPPVR7FPURE53D47PP2TFIF4SB6XPS456PZV3DQAC
3BJ2OOF4F524G6UKVGOZVT6W3FSTSHHTKRJADUBZCHDXZWV3KANQC
CGYTZT5QWIEGYKUOLOK7MFXSLJKLYRZONER5ZCDZO5XYWSLG475QC
NFOXLH722RGWYY5D63VV6SF2XEJBEOQEFQME6FSA4HZRK3CPLSRQC
AOAJ6D3OKSELEYKAT55XCVU5LYJ7SMCZKC6DIEGLLB3TF2LEENWQC
UIRWVLX5LDNWURTZOG7EFLXE5OOEL4XBPSLSUHUQSKHC4A7WCVLQC
4HATGRJJE7Q6LXHJ3ZGYTNBLG542KAUEK6ERKARIYRKRWY6VTDKQC
4UXFU3FZOCBSLDQ4S7MJKAE2H7VUHCNRDQMIY6NJ3PHYXWNGISDQC
AKDVUYRVYFPCV23KOSWGC3VQ52UK5AH2KZONXTPL57I66V4CRFFAC
NNG27Y5ZQAZX6UD7F7M4F6KEZBEDFXPEEC3LFUSX4ESKT7K6UJQAC
NW6P7VRKBFBQ2FRDZBXN7APJZPYC4SYCIA3MOOE2KZGX43IXNK2AC
RBAGQ2PB7V5YAM5KSHSZR2E3MLKDSRVM5XYGI2TIXP5QMVBOQHDQC
PM65H4V4GNPVIJFUQW57DC3VDB7TRUUNXKVZONQKEFZSK3AXX5GQC
FSD7GIK3YLZXWLEH37BU6KV3IUCFGXPQL6IZ7H65YWNRBEKDBX5AC
WUWTYSQ2Z7HI637WNO2J55LW6WLPBDF2ILH622T47ICW3AN7OWMQC
K7SLUAS7TC2T6AG5HMZHVMD4ANGAI42FBSZTB6CTHLSGY2CRY4LQC
GT7BSR54BVJKHUCLEBTELGBMNBFFDQW52EVC4XKVEMUVG2UGZMDAC
X5WLJCJVW55SXZVP7IKP7ADCJIGNKN4PKAXFECVR6TNK7XSMZR7QC
5K2ANIEXD3CPJM4XNKNPZINP2G4NT7SJBKRN62WNBUKJXFERTILQC
UN4CXQWERF622PXUR3ZM4CJWR6R7OOFVELMY22WLVVT7RD3G2XYAC
QNKMXCJSGRBEPE6ZNPEXU5EQIOME6EI4DECVC56GLOBCMGWWE6MQC
WCK6TM2ZD56WSOK6SMMKBYAYGG4OUCTILLMVVLMB4QO5I5S2IVNAC
5NV5FF4MDZFC5E3UQQSGX2CTESAGBSSEVCR5UIPRZRBYL6TSDGBQC
AS2IQQJNNCEQNXXKTGYHLB7RO3ZKCF4F7GK6FJH66BOOKDDRGNIQC
OPNCHI4UGN7WBIYPAXVV2C4N22ZSWROA435FJCY5UZVXKWRYQ42QC
GVCGKTH5IJ4VSQEIN4CRC7ZFVZW26JPIYNCPTO7GY66CSZZEW3ZQC
HFXCFYFH2X3BIZR55ZADL3CV4MQJEEHDSIJZ7YSTHO3HTZP7GWEAC
IDTLZ6PEPJP67PO7K5TODLXTBFAEVIE4C3HZCXIQK6OIAQKRVDUQC
B62ICMDTN5V7R7RBL4JALFVKEMVOOVLRSJASRNYS6CGFWBEEF5JQC
QKGDOYIYKE6B36ION5O2DRW65DWWPZMYNWJVH7LJJ7FPGGM2MYAQC
CAGCTYIUYWDHQAJOLVLKOEV5HG6K5ZG7IDHONLIG6BDNCWZJAK4AC
ZP2KE7A2LE7Z2S7AC45WE4CXDSEVDTWIMV2EM4IBUKXYJIDU6R7QC
HH3HFWVXABJ4IRMN22PPJCREMULZSN6DA7VYKOGECGMNUQTZ5QNQC
RCPQNIRPR3NQXEMVLBAQW6657UJFIP43N54UJVEZHJH22OH4UQIQC
I2B33Z7NZGC33AMDSSK446AZZYWKPHWLAGULVHKKZU4MVB4BNJOAC
5BJPWUPLJFS34FUTFJVKA4A52YMIGV6EWDXLNSDCWBJWBGVSQFGQC
2SNCC2NXKFVBYTWH7THU2QELHONTOBRNCWH6FWYORKKCWZAXTTVAC
GBUB77EAYHOFY6GQ5IY3ZSBC7FSQFZZKYNBD5QMCQFIKFLYLWHOQC
TCZNXMPFNAWJYUIBTUEOTT73KLB4CU5S6HBKTHRT6KCD4ZVGBGUQC
MZXKH5NHXRMX5Y5FG4XXNHZQ7HTQZFX3ARQU55DO4RM5NR3GIAIQC
YX2LDGNQNB6AQRKAVXNYQ473X6EVPQEBT5AJKBIIWFIMS3U2BNQQC
X6W4FXCQ72PYSDPGMQCZ44QQANZFGTXPUHDC5GW4YFSJ2KPBVAMAC
static bool handle_special_ability(monsters *monster, bolt & beem);
static bool handle_pickup(monsters *monster);
static void handle_behaviour(monsters *monster);
static void set_nearest_monster_foe(monsters *monster);
static void mons_in_cloud(monsters *monster);
static bool monster_move(monsters *monster);
static bool plant_spit(monsters *monster, bolt &pbolt);
static spell_type map_wand_to_mspell(int wand_type);
static bool _handle_special_ability(monsters *monster, bolt & beem);
static bool _handle_pickup(monsters *monster);
static void _handle_behaviour(monsters *monster);
static void _set_nearest_monster_foe(monsters *monster);
static void _mons_in_cloud(monsters *monster);
static bool _monster_move(monsters *monster);
static bool _plant_spit(monsters *monster, bolt &pbolt);
static spell_type _map_wand_to_mspell(int wand_type);
static void monster_drop_ething(monsters *monster,
bool mark_item_origins = false)
static void _monster_drop_ething(monsters *monster,
bool mark_item_origins = false)
while (tries-- && (!valid_morph( monster, targetc )
|| is_poly_power_unsuitable(power, source_power,
target_power, relax)));
while (tries-- && (!_valid_morph( monster, targetc )
|| _is_poly_power_unsuitable(power, source_power,
target_power, relax)));
if (mons_check_set_foe(mon, mx - k, y, friendly, neutral)
|| mons_check_set_foe(mon, mx + k, y, friendly, neutral))
return;
if (_mons_check_set_foe(mon, mx - k, y, friendly, neutral)
|| _mons_check_set_foe(mon, mx + k, y, friendly, neutral))
{
return;
}
handle_special_ability(monster, beem)
|| handle_monster_spell(monster, beem)
: handle_monster_spell(monster, beem)
|| handle_special_ability(monster, beem))
_handle_special_ability(monster, beem)
|| _handle_monster_spell(monster, beem)
: _handle_monster_spell(monster, beem)
|| _handle_special_ability(monster, beem))
static bool mon_can_move_to_pos(const monsters *monster, const int count_x,
const int count_y, bool just_check = false);
static bool _mon_can_move_to_pos(const monsters *monster, const int count_x,
const int count_y, bool just_check = false);
if ((mon_can_move_to_pos(monster, x-1, y, true)
|| mon_can_move_to_pos(monster, x+1,y, true))
&& (mon_can_move_to_pos(monster, x,y-1, true)
|| mon_can_move_to_pos(monster, x,y+1, true)))
if ((_mon_can_move_to_pos(monster, x-1, y, true)
|| _mon_can_move_to_pos(monster, x+1,y, true))
&& (_mon_can_move_to_pos(monster, x,y-1, true)
|| _mon_can_move_to_pos(monster, x,y+1, true)))
static void sticky_flame_monster( int mn, kill_category who, int hurt_final );
static bool affects_wall(const bolt &beam, int wall_feature);
static bool isBouncy(bolt &beam, unsigned char gridtype);
static int beam_source(const bolt &beam);
static std::string beam_zapper(const bolt &beam);
static bool beam_term_on_target(bolt &beam, int x, int y);
static void beam_explodes(bolt &beam, int x, int y);
static int affect_wall(bolt &beam, int x, int y);
static int affect_place_clouds(bolt &beam, int x, int y);
static void affect_place_explosion_clouds(bolt &beam, int x, int y);
static int affect_player(bolt &beam);
static void affect_items(bolt &beam, int x, int y);
static int affect_monster(bolt &beam, monsters *mon);
static int affect_monster_enchantment(bolt &beam, monsters *mon);
static void beam_paralyses_monster( bolt &pbolt, monsters *monster );
static int range_used_on_hit(bolt &beam);
static void explosion1(bolt &pbolt);
static void explosion_map(bolt &beam, int x, int y,
int count, int dir, int r);
static void explosion_cell(bolt &beam, int x, int y, bool drawOnly);
static void _sticky_flame_monster( int mn, kill_category who, int hurt_final );
static bool _affects_wall(const bolt &beam, int wall_feature);
static bool _isBouncy(bolt &beam, unsigned char gridtype);
static int _beam_source(const bolt &beam);
static std::string _beam_zapper(const bolt &beam);
static bool _beam_term_on_target(bolt &beam, int x, int y);
static void _beam_explodes(bolt &beam, int x, int y);
static int _affect_wall(bolt &beam, int x, int y);
static int _affect_place_clouds(bolt &beam, int x, int y);
static void _affect_place_explosion_clouds(bolt &beam, int x, int y);
static int _affect_player(bolt &beam);
static void _affect_items(bolt &beam, int x, int y);
static int _affect_monster(bolt &beam, monsters *mon);
static int _affect_monster_enchantment(bolt &beam, monsters *mon);
static void _beam_paralyses_monster( bolt &pbolt, monsters *monster );
static int _range_used_on_hit(bolt &beam);
static void _explosion1(bolt &pbolt);
static void _explosion_map(bolt &beam, int x, int y,
int count, int dir, int r);
static void _explosion_cell(bolt &beam, int x, int y, bool drawOnly);
static void ench_animation( int flavour, const monsters *mon = NULL, bool force = false);
static void zappy(zap_type z_type, int power, bolt &pbolt);
static void monster_die(monsters *mons, const bolt &beam);
static void _ench_animation( int flavour, const monsters *mon = NULL, bool force = false);
static void _zappy(zap_type z_type, int power, bolt &pbolt);
static void _monster_die(monsters *mons, const bolt &beam);
affect_items(beam, realx, realy);
if (affects_wall(beam, grd[realx][realy]))
affect_wall(beam, realx, realy);
_affect_items(beam, realx, realy);
if (_affects_wall(beam, grd[realx][realy]))
_affect_wall(beam, realx, realy);