git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@9668 c06c8d41-db1a-0410-9941-cceddc491573
4S7GTHOCXO5MLS3DKSZWUYYZFBVNHDG6RFJONUALXVA7CCPFKXKAC
22SDIOJF2PJ7GNXQBHLQJM3NATXUQ5FUEC6ZIVCPXVSY7WEIM4NQC
NY542NCYUW2ANJKIW4PUHL3FATTXCAUDMHKY3PPWAFJC5MWZFWQQC
LH2E37LV4XOP5HABYSS4PEJ3DRXMRI2R5SZ7J6P3E576PELY6GMQC
WLBSQ2ESMTOPKZUFZL6KPKKTRPW5Y2LDJO6F34K6WSNE7H77KFKAC
ZUFIANAWHSOBFMQZDE5GFZSEUWT7KCTC4XHCBBUM6SCEVRSMQ4LAC
AVEOSLDREJHWFZE6ULAWGQPDT24YX4OAOGL7YAUCFVRGHCS22UCAC
KFULGQQOHWUTXOM3BXCCYPGGVGGY4Z6265XUFRCBPNLTZAEHJZSQC
RIW55YSFKKTJLBTOJRVUBC7JOFUBOK7OBMISW4PBSVLYJHAAKPPQC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
SCXTTP2FDNB2A7F4XXGXSSOEKZQ7ODDGN5YBCTZXGZ22CLCEH3WQC
2OY3EXIBFR22QCCKPZOA37YUI7CX7BEKRRYSDSBDKQN6VTDBD7LAC
RDZUMV3A5TREQHLPPJWDWVXBNIOWC3CQJJ35TYFBQQVQNTU7SPXQC
3EUPIYJNWOMOQBP2Z5SGSMWK453BXJD6KL2WFTR3NM565MEBYASAC
HKQTMQVLLOBG2VO47TUGSTQALA3D2YLMEVADXXYNR4RGGKD3F2ZAC
TO43FWKHNIA5MVDOFXYHQODTLBQYEZKX5UIUGID57436UF7G2EXQC
5R4WV4H5SNIM5WU2X33JJ63HIEGKCXN2HELZ6FRRKKANPLMRLF3QC
3PBG6FJ6WGSR4UM3I7UQUYYCSYU3UBCKCIKYKUEEANIK72TUL4XAC
UADYVV3UD5ERJTZZJGY4EUQ4NJ2JSBG7YYUJ75ZRBIXRQXQKOJPAC
PONOTAV3NEDNVGEJNPMLC5AY2BPV5E3ZHWDLNQCKCEBVKPBIY7QQC
2TZT4GURBCNHSVOXO5ZMN7XEIO3K4GWJCDPVSYUCMVZ6UFDL4DIQC
7TK2D5RI45FKCIQBHGU4FA75NSFZA3ZYFF2UYQJEGHCOV7I4XUGQC
WKX3GD3EAZUV5PV5EXVB7CFYJOGMIOM3LPPPUAW3HTS2EFPF2EPAC
JIEXJFA2CK46JWK2YXA73S6QMCTPVV7JYVW63CHHHN33IBFSCEQQC
SNSU5AMDAZNG55NQ4JDHU2YBK62MXPIE2QTSYS7PGV7Y2N3VJBFQC
BTHEX36BHZOAGTT5SNO6OPWDAZJQSUUNDXSJ77FBEFZE3NGJ7CAQC
SKIHTFLZCN33YOLY6DBH5AD45EIUFX3CS44CMITAP7JVHRZN5RSQC
CDFS7Z74W5HKPQIHQICOG442KQFXUSBGGLDDQLE3MG74T44YU6AQC
VYGSRD6AGPW3JDTKAMFIUEERMWNCV35SPWXH75XCX2SCMMR72RQQC
AJHVP42Y67SB4NKFMZB24524PGX2XA5WLFNEFV52MIGTS47ALMVQC
2YD477TH5GQ36WMPP5P63K6CE44BBZ4DNT66REMTMINEIXVUPY5QC
V633AMMPMHJB5ZLP5IHFXCT6FCENVTPX25TY7T5MF2QZLDDN24HAC
MACQITZTGQEWIRQWNC7G46R4QUFSLGQ7ATERWEHAFRA66AS2XICQC
TPPJRQ2NTCV3GI2VRHEXQJREDERPJODCJWUG5WCOQGN4REPPPAMAC
3523HSJ5BHDJWA4LG27ZJS3QAECBV3NDHUUPIEEU5FVT33L2TGEAC
4CIYU7SAAGQJ6BH2WWS4EJWUS6GX25IV24GLYSPGDNWNASVJSIYAC
OYANFNGKCXG2NLQMYW4TNFU3LFK3533XQ3HFGI3LNMY4JGMDMK5QC
UDDZ7BNFAK3BDG5UIOMEDWGH4XRJOWV4AERTZOJ7VT6IOKBP4EIQC
PQ5IPCENBLGCTUKM7AHXQKUCALLLAX5KAM3OQLAWFY2RDX57NYYQC
RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC
ACSERNMWRXP4VUEUVKDBSDGTBZRI34P2PUVUDTKSAHNTCEDDCCVAC
HRBCN6CYP36HGNB3IDETM2UXWSANJM3QZA2HAM4P4B62QB4KBKXAC
PI5BATR2SER3RFE76IUGHM2AGXVFOUM3PLU7WC2K2Q2BA5K2E73QC
XK3UF67LUGQZ2RGUSY5MW6W6VVVNERDYXR7CZMJS45RIVLW3A3DAC
QMZHUQRN2EMPP45BUSVVYV7QBERENBU2PDXVQYAIE2WMUZ5NUOIAC
4FQAKUKUO6PCAZ3N4HUR5XL6E4VA5UQUZ3AEDGRBLVY7W2LMWI7QC
MFOXVZEY4AR3FDNGKAIB7YSXWTE6DOUXPS7UGSJGSBIK7VCRWLKAC
CB7U6IEEN2Z74672EYQQHWTB4GXVNNMAYDRQYAGY6K3QSDYYEHYAC
6DNNPEMZGBQDMA7YG4LCTQUVZ7LYPC3R4A2XBYT5SDQ65GYOLJVAC
CH7JECYYH35H4TRHRNRTRJCQTQLZ2WRH62TKV72SUIU2RTK5OH7AC
P6CQZRWDS3QNWW7W5LJYH4KU6YRSWZT5M4X3KLLTJY23CRBA7RXAC
FSJKED4U2SOUP64DTHF2NEGAYY7EUMSIDKC2SATEXAXEVOCNL3CAC
CK7CT5TUFUL2AQY7FUHB5JI3FC2KSPWUWHXC6VEUJJ7G4OWUQFTAC
77H4BWWPPGLM3PLZH4QTAJRXIZTSDVNCOKZE223I437FN2UJ34RQC
TGJZXTUIAKCFZQJ54ZQEBGFBVZSJCAX6AWDRSH3TP7UJRLGUM5SAC
C3OUSRCHDUOJ6ELVDX6YWMQQVXDJLNEXTXWCDDAYWTKNPFPNSONAC
O4ZFDG3AEV3K4NPGCCLB7DXUH5CBETKP5FBKLCIET7JNTNDX5DUAC
475LL4U4ND6PTNV4XKC7WQAOJC7RF2VCCVX3DRILP2PKIBFYWE6QC
QLMCSREGK2UUAPXZSZQKLZOLM4BCB7PAVCSR3DLFQS3EW3IMWQSQC
5XNQ3SSNBFXFNWA6DPM74W6FH65NX665P3DMH6YCWVFOPZTJSYCQC
YF2GZWXNV6NVFFEBEOYS67JQJQK2IUS5BZMGJW3XQPYIJYHQJCEQC
Y2VKZYSQXLYYQNB6OSQP44IYLT2M56SE2ZW2MHOAZUODKCVDHEAQC
BXXOYFMWNQY4TLLJBFYROSH43KO5F4JQTATU3ZEJNKGIJGOIQN4AC
X5WLJCJVW55SXZVP7IKP7ADCJIGNKN4PKAXFECVR6TNK7XSMZR7QC
7VRY3OH6WA7QLMNNOX76RR7C6HA7CLNYLZLWPXJWAP75QRF5B27AC
QKV56RZTWOX64VLWW52R2DEUM3HGGZNLRAJ2ZV2BHW5K422OPNJQC
LJK4ZQATLSB4MKZG3ARZX5V6RFGTN3NLCN6GTCUGJQKU26SOXMUAC
KYKFOLADMUWUGJG2YWH2SSQRPRU5VOLSORANZKHDYGJSLIKVAXUQC
B7MSPF6X2RLGWN4M6ZZF3WSOPKGYPTTD7LIJVST7DXN27DG6JHNAC
ZGUJWUFJ4NFFJ6PGXLFGQWCWBCZHPWGWI44NJHJEVPRG5L36PADQC
YMLVBQ6M27MECUVMU3BQP3WSGR7GW4XJMQIHLGHHWMVXHMMIXOYAC
5BJPWUPLJFS34FUTFJVKA4A52YMIGV6EWDXLNSDCWBJWBGVSQFGQC
SIDH2P7NBIG5KEOE27XHD3ZT2NQ2OJZFN6VZXWNWYFFY5YVXSSVQC
NEPBSPCYPPJ3UYHPU5F6FMAOJC4DUTXSTTDB3VPCZOQ3MI6KACPAC
LFPHI3TJK5V4HPJJHCG5XATY23P25OVIZ4ITQVG354DJHPEPKU4AC
S6ADNAPM545WP3FRHCU6UWKX5VEMY5TPSIZYSZ3XE76VCBTVIN5QC
26TGZ3ARBTOI4GTW4LO7R25QYQP3KDY75D4RFWUUFB3OBWVOIDMQC
KW43PGXTTM57DXUGGBQXJ5G5OYYIY3WB76TXIKL2ZCIJGH7GH4LAC
UEI5JAVCMN7Y2SACTEZPZSNFJWOJTC55G24Q6LKQCT4XNDH5ZQIAC
/* FIXME: remove this
int explosion( bolt &pbolt, bool hole_in_the_middle = false,
bool explode_in_wall = false,
bool stop_at_statues = true,
bool stop_at_walls = true,
bool show_more = true,
bool affect_items = true);
*/
for (unsigned int i = 0; i < messages.size(); i++)
// Maybe the user wants to cancel at this point.
handle_stop_attack_prompt(mon);
if (beam_cancelled)
return;
// Check only if actual damage.
if (final > 0)
{
for (unsigned int i = 0; i < messages.size(); ++i)
case BEAM_POTION_STEAM:
case BEAM_STEAM: return("steam");
case BEAM_ENERGY: return("energy");
case BEAM_HOLY: return("holy energy");
case BEAM_FRAG: return("fragments");
case BEAM_LAVA: return("magma");
case BEAM_ICE: return("ice");
case BEAM_NUKE: return("nuke");
case BEAM_RANDOM: return("random");
case BEAM_CHAOS: return("chaos");
case BEAM_SLOW: return("slow");
case BEAM_HASTE: return("haste");
case BEAM_HEALING: return("healing");
case BEAM_PARALYSIS: return("paralysis");
case BEAM_CONFUSION: return("confusion");
case BEAM_INVISIBILITY: return("invisibility");
case BEAM_DIGGING: return("digging");
case BEAM_TELEPORT: return("teleportation");
case BEAM_POLYMORPH: return("polymorph");
case BEAM_CHARM: return("enslave");
case BEAM_BANISH: return("banishment");
case BEAM_DEGENERATE: return("degeneration");
case BEAM_ENSLAVE_UNDEAD: return("enslave undead");
case BEAM_ENSLAVE_SOUL: return("enslave soul");
case BEAM_PAIN: return("pain");
case BEAM_DISPEL_UNDEAD: return("dispel undead");
case BEAM_DISINTEGRATION: return("disintegration");
case BEAM_ENSLAVE_DEMON: return("enslave demon");
case BEAM_BLINK: return("blink");
case BEAM_PETRIFY: return("petrify");
case BEAM_BACKLIGHT: return("backlight");
case BEAM_SLEEP: return("sleep");
case BEAM_POTION_BLACK_SMOKE: return("black smoke");
case BEAM_POTION_GREY_SMOKE: return("grey smoke");
case BEAM_POTION_BLUE_SMOKE: return("blue smoke");
case BEAM_POTION_PURP_SMOKE: return("purple smoke");
case BEAM_POTION_RANDOM: return("random potion");
case BEAM_VISUAL: return ("visual effects");
case BEAM_TORMENT_DAMAGE: return("torment damage");
case BEAM_STEAL_FOOD: return("steal food");
case BEAM_ENERGY: return("energy");
case BEAM_HOLY: return("holy energy");
case BEAM_FRAG: return("fragments");
case BEAM_LAVA: return("magma");
case BEAM_ICE: return("ice");
case BEAM_NUKE: return("nuke");
case BEAM_RANDOM: return("random");
case BEAM_CHAOS: return("chaos");
case BEAM_SLOW: return("slow");
case BEAM_HASTE: return("haste");
case BEAM_HEALING: return("healing");
case BEAM_PARALYSIS: return("paralysis");
case BEAM_CONFUSION: return("confusion");
case BEAM_INVISIBILITY: return("invisibility");
case BEAM_DIGGING: return("digging");
case BEAM_TELEPORT: return("teleportation");
case BEAM_POLYMORPH: return("polymorph");
case BEAM_CHARM: return("enslave");
case BEAM_BANISH: return("banishment");
case BEAM_DEGENERATE: return("degeneration");
case BEAM_ENSLAVE_UNDEAD: return("enslave undead");
case BEAM_ENSLAVE_SOUL: return("enslave soul");
case BEAM_PAIN: return("pain");
case BEAM_DISPEL_UNDEAD: return("dispel undead");
case BEAM_DISINTEGRATION: return("disintegration");
case BEAM_ENSLAVE_DEMON: return("enslave demon");
case BEAM_BLINK: return("blink");
case BEAM_PETRIFY: return("petrify");
case BEAM_BACKLIGHT: return("backlight");
case BEAM_SLEEP: return("sleep");
case BEAM_POTION_BLACK_SMOKE: return("black smoke");
case BEAM_POTION_GREY_SMOKE: return("grey smoke");
case BEAM_POTION_BLUE_SMOKE: return("blue smoke");
case BEAM_POTION_PURP_SMOKE: return("purple smoke");
case BEAM_POTION_RANDOM: return("random potion");
case BEAM_VISUAL: return ("visual effects");
case BEAM_TORMENT_DAMAGE: return("torment damage");
case BEAM_STEAL_FOOD: return("steal food");
case NUM_BEAMS:
DEBUGSTR("invalid beam type");
return("INVALID");
case NUM_BEAMS: DEBUGSTR("invalid beam type");
return("INVALID");
bool shaft = (get_trap_type(you.pos()) == TRAP_SHAFT
&& grd(you.pos()) != DNGN_UNDISCOVERED_TRAP);
const bool shaft = (get_trap_type(you.pos()) == TRAP_SHAFT
&& grd(you.pos()) != DNGN_UNDISCOVERED_TRAP);
case 3: beam.range = 5; ztype = ZAP_STICKY_FLAME; break;
case 4: beam.range = 5; ztype = ZAP_IRON_BOLT; break;
case 5: beam.range = 6; ztype = ZAP_NEGATIVE_ENERGY; break;
case 3: beam.range = 5; ztype = ZAP_STICKY_FLAME; break;
case 4: beam.range = 5; ztype = ZAP_IRON_BOLT; break;
case 5: beam.range = 6; ztype = ZAP_NEGATIVE_ENERGY; break;