it for holy word in order to generalize it. This way, monsters as well as players may be able to use it in the future.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@8598 c06c8d41-db1a-0410-9941-cceddc491573
LFIEDWOSNPS5D6EUWPUPOBBN5CEHVF2MLNOSPXEIVMRZ77A5BH4AC
7Z4BW72WSXVYBFEPMJI5PCFAV7POF6JSCX4MAW47G3CGTQAAPQOAC
ZNBSMRH6K5SUITIIOYG4NT6ZW63LDTT6ZPT6BLS7T3FS6KMKNNSQC
HMEKK5ADDYNQQXI5JSYDVH5JPTLZCJQSG6PFBXQXXCRNYLGY57VQC
C3MMW5WJAJNHNJIRNHFOYNIZ7NB3OKIKI2HXPS5PQS65FP3E76RQC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
LUH6GAJODIQXNPBEHMSUTKH3KA3DYVRCKZ6GJJ4HHNHOIMMUEP6QC
SIDH2P7NBIG5KEOE27XHD3ZT2NQ2OJZFN6VZXWNWYFFY5YVXSSVQC
AUXVWXWIFSTWFA6VZXN2FMG7FQEKRZVV6MD32VQQ7J2RKCXHAVGAC
3DQXSE4YGFBBDUWK4YEOFWW4UPWILWELFSLP37SL6BERGAZJC5YAC
QKGDOYIYKE6B36ION5O2DRW65DWWPZMYNWJVH7LJJ7FPGGM2MYAQC
B62ICMDTN5V7R7RBL4JALFVKEMVOOVLRSJASRNYS6CGFWBEEF5JQC
ZLQAAP55CJ77XIJN3DZVPT4GTTVLIBFJLIJJKI6L5UBSHX7VUK6AC
FIYBXLWALQINNQTHG2KNDUUTAQAZRDDLXW2XOVSKDKBADJ3XCJ4AC
LMRRQE4ZXQYZPXVGBTDZP7LEIM6OGSSOOQ5FAOWXJCDCNCECX5VAC
TJRYL3NXPW5IUGEV3YOC7JYWEXCZDBFPLT4AUG4P227WVKVB72ZAC
U5SDF665RTV32CTKTC4QO3Q5B44IAE42MZYJSYUNZP3JZEUTO4KQC
GJA3C5HTAVUBNX44QYQTPWQPTP5ER4J2VJA5GLHJ2R5WNVMWC3YQC
PFEJ4LMDNEKLMGRCMWQ7EIRVU4JMYGICI4G7X4WVWOROVXQCBZ7QC
UEI5JAVCMN7Y2SACTEZPZSNFJWOJTC55G24Q6LKQCT4XNDH5ZQIAC
KATZLWENEIQMKKWIV4ZLXJ5HFUW6SU5K4ZU6NENBOL4XAAVTDUKAC
KKEPQAZMWQFWPQ4P4KT5PWG2YFPG7H4JHL5K7USVHQ3Y6L4NWURQC
CGYTZT5QWIEGYKUOLOK7MFXSLJKLYRZONER5ZCDZO5XYWSLG475QC
RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC
Q7GGSLY6IUX2YPBQNRR7JL5HY7VEWLBQN3KCZGMS2WAA2LNXRI6QC
WHY6LRRJ5T2NSBE3IUCR4X3TOAH7TTK5NPUPUIFT7TPNJ6J4HBDAC
KYVZGUJXV23ELA4CKPVQZO3NTJCODXMCWYAZJYWVWJVLPETNHLGQC
MJWFTUS66PTCNEYXEJA3CUJFXNWXIKDD6H3V24PW7HK64NSVOFSAC
NDKS43E4XVAU3FDY276OF5JW7E5SF6F5EJD2XLV5JLKZ5W6N554QC
5HGMULU7IWTFJJH35S6XTCW3YZEMCORXHQL6NVY2TO4DUMVITNJAC
GAUT326KHT3MMZPC7TJUOKGPZ6X624E7Z3IOFZEXYWUCORBCZTOAC
C5WZ62XDFNON4HCJOXC6IL6SQYLE6TKX7DDSJX3MTWAZ4HHM27GQC
BX6P2BQYNZH2FM4ADLPULHK5FCWEAVXFEUYNHYLCUTSQCOWGNWAQC
FJCG7QPYI2ON5QIGUZDIA6KTJP2BOU45K5ZE6HOEUSLZTEW2YW6QC
33ZMPQC6OXTESW7SRW765GRNJUEJRSYONRVZVIEUDAUEJ2PPMB4AC
JI4NDSOXGGZ7QHXXFB3ZTHAKHABXYBZXPDGLUFV5SKYEOL5FT7JQC
KX6HOBTF5OBZLH2VNEFHH6YAX66FSE6JGBY5I2WIAW5IEJUGNL6AC
RQFQSU37Y3ZBFR634JWYHE77LIOOINGBRNL4KUHPPRA3ZR6W5QIAC
LRSBPYUTFVUVZ3QLP6VGQSWNTJYFJQGY5VQOUYYUSNYAQMJZ5C2QC
JRMVNXBOAVFIEKN3AP3EN63PO5ATZPM2MWQYGWZJFP2LCDOLU36AC
3GQ4LKESL3LNEHHTXK334UMJJV75ZKL6O763V6RMYPDUBY5GUPZAC
EADWOF6DJ7WTY3ZAFRVJ2VHFWNLDGX6W3JXESBTXJ6K4PM2AJVDQC
CSC3SNU2QMWV5MJL6L2DJIQ5W7V3XXMZM6VULPSENTOT7R4DFQKAC
5FHWTG7M6FW4B3I33YI7QSM3OZIB6ZGC6TI6JISSLY5Y43HI56VAC
IZZKCZ2TOAFFDUXYN3XRPNKEEO7GHD4UDBPDJ4ULH446KACLBSIAC
YA7FBPKLDYEK5GKQUVIQNFXVNSEPGCQAOLM7MGVE4TIIOFOLTSBAC
APZNEKBBSU2PFBU6BCASYZTXDQQGVLBQCPOME2MOVLK44SHQ3ZIAC
IHRRXPRJZMKQHVYBZP3UWKWGBS47JCYB4H6L6K52C7UY3JAYC7MAC
F3STYUG6GEHXQX54YE6ZXXDJE3HWJ77SKHPL3F4GNKOQ43MEIRJQC
YVBTWF7VNCQ3MSY7YQFFSR4E35OCSP5JUB5ADODDB6V7W7K3TV4AC
K7J2IGELTIQL5KAMBV62MFVIVMEZEWCOLZ7GHFXHYPANYIF7BRZAC
RTB6BWX5OPHNXFSRXCQ34G5THZO4F6QZCW4GQBAL6JHVEMEMSPOAC
23PFLB2E4QHL5SF3Q2YV5FXRH6MFHENEU2ACVC572ZCYDXCBZVQAC
G4TVXOLIF5X2MWV7I4UPT3MSQHRMGME6QRIIFAQ64C45JGYK7SIAC
ERTQJ5ZXDBRGKC5N3GZ6U4MFFK5HB6737FVLVD4GSMGTIFCSJJJQC
6DNNPEMZGBQDMA7YG4LCTQUVZ7LYPC3R4A2XBYT5SDQ65GYOLJVAC
CUB27EJDQG66FF2YCKOV4HU3LAJVJIHUJ5QYLURRDIEVGPK666DQC
AVSWNOP23Z2QCLQGXFDZV7TI4RC3XSXHIX2HDXFHXGKDEZSSIGJQC
int apply_random_around_square( cell_func cf, const coord_def& where,
bool hole_in_middle, int power, int max_targs );
int apply_random_around_square(cell_func cf, const coord_def& where,
bool hole_in_middle, int power, int max_targs,
actor *agent = NULL);
void apply_area_cloud(cloud_func func, const coord_def& where,
int pow, int number, cloud_type ctype,
kill_category kc, killer_type killer,
int spread_rate = -1);
// Effect up to max_targs monsters around a point, chosen randomly
// Return varies with the function called; return values will be added up.
int apply_random_around_square( cell_func cf, const coord_def& where,
bool exclude_center, int power, int max_targs )
// Affect up to max_targs monsters around a point, chosen randomly.
// Return varies with the function called; return values will be added up.
int apply_random_around_square(cell_func cf, const coord_def& where,
bool exclude_center, int power, int max_targs,
actor *agent)
if (apply_area_around_square( disperse_monsters, you.pos(), pow ) == 0)
{
mpr( "The air shimmers briefly around you." );
}
if (apply_area_around_square(disperse_monsters, you.pos(), pow) == 0)
mpr("The air shimmers briefly around you.");
if (!defender->cannot_fight() && attacker->can_see(defender))
if (defender->cannot_fight() || (attacker && !attacker->can_see(defender)))
return (unchivalric);
// Distracted (but not batty); this only applies to players.
if (attacker && attacker->atype() == ACT_PLAYER && def->foe != MHITYOU
&& !mons_is_batty(def))
// Distracted (but not batty); this only applies to players.
if (attacker->atype() == ACT_PLAYER && def->foe != MHITYOU
&& !mons_is_batty(def))
{
unchivalric = UCAT_DISTRACTED;
}
unchivalric = UCAT_DISTRACTED;
}
// confused (but not perma-confused)
if (def->has_ench(ENCH_CONFUSION)
&& !mons_class_flag(def->type, M_CONFUSED))
{
unchivalric = UCAT_CONFUSED;
}
// confused (but not perma-confused)
if (def->has_ench(ENCH_CONFUSION)
&& !mons_class_flag(def->type, M_CONFUSED))
{
unchivalric = UCAT_CONFUSED;
}
// invisible
if (!attacker->visible_to(defender))
unchivalric = UCAT_INVISIBLE;
// invisible
if (attacker && !attacker->visible_to(defender))
unchivalric = UCAT_INVISIBLE;
// held in a net
if (mons_is_caught(def))
unchivalric = UCAT_HELD_IN_NET;
// held in a net
if (mons_is_caught(def))
unchivalric = UCAT_HELD_IN_NET;
int holy_word_player(int pow, int caster);
int holy_word_monsters(coord_def where, int pow, int caster);
int holy_word_player(int pow, int caster, actor *attacker = NULL);
int holy_word_monsters(coord_def where, int pow, int caster,
actor *attacker = NULL);
// Currently, holy word annoys the monsters it affects because it
// can kill them, and because hostile monsters don't use it.
behaviour_event(monster, ME_ANNOY, MHITYOU);
simple_monster_message(monster, " convulses!");
monster->hurt(&you, hploss);
if (hploss)
simple_monster_message(monster, " convulses!");
if (monster->speed_increment >= 25)
monster->speed_increment -= 20;
retval = 1;
// Holy word won't annoy, slow, or frighten its user.
if (monster->alive() && attacker != monster)
{
// Currently, holy word annoys the monsters it affects
// because it can kill them, and because hostile monsters
// don't use it.
behaviour_event(monster, ME_ANNOY, MHITYOU);