Fix 1971216: Kills by confused undead use LIVING_KILLED_BY_SERVANT instead because the message ("collateral kill") fits better and, though it's basically a hack, the distinction does fit somehow. Fix 1914948: Tweak message when you resist a spell cast by an invisible monster. Fix 1946608: Print "Nothing appears to happen." if reading ?EWI when unarmed.
I guess that's it, plus probably some more cleanup.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@5378 c06c8d41-db1a-0410-9941-cceddc491573
NG53L53MSFQZAIVKHG54IEMXNJ33AYVPF2OZM4MMJFDKEJCGPBSAC
YBYCTMIHQ2LLSLZNC6CLZ26KJVQZBNAM23ZVZKYSFC2DKTAXHVZAC
UCEAWJ4I6AEFR64SSUFQSX6Q62JGLMJQ5BOO5MQSV3XIE7KAS6CQC
BRNMISYGZGT3XGXA2VCDTPDDROEWX6O23VNEPWMHYVEQEKUVVWOQC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC
AMFTO4UE74UYQBU3R2EYUU6BJ7SC4O4NOAFICRTLMT3MIFRQ6AKAC
ED62QWGKBPORWVKDFOQRKJXEIWZVNGR3O4KWQBDSRNPT36AYOQYAC
GZMPIDNMBXZ4B2ZWKREHBPAVN53J6WRVY5W5KY52KEBHKU6IW4IQC
25CH7HH4LKXFIZ75YNMXS3TSXO6O27DYSOPLOD45K4OCNFWLS4LQC
2TECJQA3PK7OYSSTOWZSQFWMTATJRHHA6JV3IGRHFGS3R7U27RZAC
UH3CJQMQ3NPICXD34NTCTUZJWOCEF4P5XEGXFLLNDDFLZK7QPUBQC
XHNJ2W4AQHIF32P2ENIMMDLWAIFWP442KJIZC6RKS4HBJNZIHHBAC
AUXVWXWIFSTWFA6VZXN2FMG7FQEKRZVV6MD32VQQ7J2RKCXHAVGAC
4VK7VHWRVRO66BRSGTBPSYJGGXLRF6AG6G74UDTPHTPXR7ZRNINQC
E7DV36ZR6TOGBD75BHGARCMIQQS6MSV7V3A7M7V4LOFHEC5NF6CQC
AVCMVFA3MKCXHO6H44UK5KJNIHTGQV7UA7GYXM26VI6TXXU5ZN6QC
45EMD3KLQPMERNMIKU5G76H6556XOMIW352TSBP7VLWJX2YYGS7AC
Z7SNXEH74EM5YJW3KVPVDQAQZB425M62AYB5GODBNVYMBRVJ4LSQC
HKMVHUQLTDIDM3HGXCTLPHHT5YJHV5UMQPEVX5ZL4G7OLEICIOXQC
LOJYD6QZRNLNDDZJKVBMKQIBPTKSRN2ETCYGNVV47M7L3QLUJUJAC
WHY6LRRJ5T2NSBE3IUCR4X3TOAH7TTK5NPUPUIFT7TPNJ6J4HBDAC
CQ24AVAI6SW3AHTIDMLPSTRRBEU6FHRF5I5FD6G5QIYE6PO4BQMQC
4HATGRJJE7Q6LXHJ3ZGYTNBLG542KAUEK6ERKARIYRKRWY6VTDKQC
FCZSQBKDNMJZRJS2LWQQWLUFGOXSKXDJZQIHC7L5S7HXCXQPOMMAC
W54GZBNFKPOF6DTOVK73PVASTQI5DXG42WQ6CXFDPXHFZOHUVVSQC
MCBXXIV6GICTZB56APSXMJEI63FVQWVZR3H2DRNMMFDH2XCGK4JAC
77H4BWWPPGLM3PLZH4QTAJRXIZTSDVNCOKZE223I437FN2UJ34RQC
HQTS3VQ6PNUZKHNVEWMML7JNAAAKL4DSW3KFSRCCSLGYTDHZFCCAC
XDJGQNFELURGXMUAOOVALQMSLAJVHMG63KPKVA33HTJFVZROGZ4AC
QYUAYEGK7WPBJLZRSWZVDWD5SMNAWWIJSQPWYA7BEYXMEBD2SDKAC
SDLKLUNFGVKDS55DDJZCBAVIB7NL3RRYPTACAY65SCUQKV6APFSAC
LIBWXPN6HLJAIGEFJYLOL4HLIUD236U3WM5QPHIZ3DSB4CCUJERAC
GMCNF7YBSN7WQJNHSF3RV2NTHTVP4TABCNP7S26UEIHPAKNCPWGAC
7Y5HSDFKA5TPLS2TWTRFMQVX6UXUDHXU5MUMXQSDFAIY4THQ3BIQC
T5XERKCC6UL2UI2HKE34BTKNINTOXOSDCBYGC3A3JY7XMKIQW4GQC
2AHWXCB737Q3LL7NXDNWHWNGTZZQSB4FRXCLQV3UZGO2DDZNGT4QC
LS3DAZVRDCXVN2BKBC6RGCKO3R43Z7HKG4GXJWLBK4AKBL2G6QDQC
EO4FXWNFJRHPOSDHWH2Y6QNUP7KB5ANLX43GA3TJLXR3QOOJZ7VQC
KEANRIMF5CGFVZ2XJYNFPOAKLXOSOJUOVA73IWBWOG576265ERHAC
C5VA63WAQRWPENIMXRPUPZLZJMC77PL2B3A77HYFWDCZU5QDG7VQC
HQSI2RK5QGNSOR5Y67GZDK4ZWFZ5DSRPASXAV4VHYVB5TUXFZWJQC
F7QFSXE22UPQTBLYJLY26HJ3QPHFNBJMUOFJRV35R5YCHSGKTBYQC
2TFYJ7D72JY4DYQW3GSPEONA2WYIVHAJXTIQ2QRDIWF65XN2QFGAC
J6APXOT4QOGQFONWB7G546VTVF6QG42HVOROMHF7YBDJPR4K26OAC
RBAGQ2PB7V5YAM5KSHSZR2E3MLKDSRVM5XYGI2TIXP5QMVBOQHDQC
W5VEC2PBIM5DMU5233HOWAZUEPTGWJRZZIA3H35YYQQW6BTP6XUAC
VCG3BRIYRTNNWYC3LOXD6KFGXOX37HAFW2HNV7WXVG2V7EUHLDZQC
3WHI3KM43ZCN4ITJLFQQBQBC4OJPRS7QTBPIQ6QBCUVKRSK476SAC
4UXFU3FZOCBSLDQ4S7MJKAE2H7VUHCNRDQMIY6NJ3PHYXWNGISDQC
IQ62EJHYKMOSPZ2M2S5KSYYLGPOQ5A6TDCXA3EHHCWBER7QVTFLAC
KFWX5LI235XQYQOSUSSAKKQUNB2OCN3NOYP6E7D3HSM2UOSBGYHQC
VEPHAIXR3GSPHBLOW5DWFFU4ULEMVWRQG4G5PKSKRA2I6RHYROUAC
OQ4KB7QCJSK7GSW3DYBARH4DCB75HFKLUSOSOZZZ4IUFKNGFRUDQC
3ZWALZFSTSIVYXY4BAY6ANGINTDACZC6RSSJTEMQSTSUIE66YOBQC
MDAJYB6STTZPNHRQ2X66MMMSONMKXTESLHJSFPGN7H3D3TOVBAVAC
KFULGQQOHWUTXOM3BXCCYPGGVGGY4Z6265XUFRCBPNLTZAEHJZSQC
2H32CFFM2FNS63JJPNM2S6HMO543EX72GMPOU5GI6HTMQYPL6I3AC
UZ5623MOLKBTGBSRBJ4OBOEI4IEZSPV3NCV2DRMUZ3CHHJQVHIIAC
RQR4PTMGQLTRWLYRU3KXIIDGND7FBORESJWMWFVD3WYU5SISZXAAC
EB2ECXZ3EQ6L2ZY42KLQV4QPE4YCNYENXFGUM7EDTCWC2LDZJYCAC
JCWJWGMQIKQGSSFJUQRKNIWW3HBOJSHYDTOPPE5BWOJTIJTDYUTAC
MLZSEZWNNZMSIDQNAAIOJJR4K7VSVJICL5SAGHD3ROM7SYDVZABAC
YCL3W2PFE6ILTGBFODCSXNPDIA46KVSZP2TI7HDMYAOEJT65RIEAC
7V4DCKFJCNBXFODMKJ6H3MCDUTSD4XVQ7D4D6XFCD4JNF4HCE4KAC
XRZPPYWPWUOM4SFNI6BHKH2UKJQNLKOV6Y7XIEPEZXE5QYRT26PAC
H6ZPCZ7HN5UZTOS6QFAE4WUJR6BCDU4OB7ONQ7ELXIK65ASPJOTAC
QXQE7C5XDYNF4JSHGDAVMS7HYLOC6YEZFOVFJ3RD7RB6U4AJSFIQC
6IY4YKTCKV4YYQKG7CUB6HNTGRUSP3BCZV2B6GEATTC4QN4TESNQC
557IY36VX2M4ERVCP5HNI3YTHHVTHPETZ5RWDX5BKDKXXIYCFUJAC
F7Q7QRZACTDPP6KH3AB5J6B6B5PRVV4FURTOIGXHRHWNVSQT3TVAC
RYT42Z6CED4KV5CCJ45CHZ3DQGLFMDCVH6CSQZNXOILULDG4MXVQC
CA3UUPVVUCMU7V7AUUIG6LOPEQEQKNYRPCSKF7FECSCA6VCZYAAAC
JZ4YC57SR2WQJIEIZSO3ZECA2FNMQUB7JYFKID4SIQ3RQ5NYXIVAC
7K5P2GRF6QUXTMERG2R3BB6DZFQYJQ6V2KNPMBPFDLOP36NQILPAC
MBBPLL4SZUB3JUUYQYLZW7S5OXRCEGJX3WWADOQXGHWQ7BIKCY5QC
LSAVA5BJQO4Z2MYXVQOM4AOXTCLKDNQMOS3DZ4SDNO4LI422LA3AC
72GIZBEMQLEF3TITOHABWHRLL5TE7KOUSVWOUEHFMO2OZQ4EIB7AC
G5WLU3B4MR3ZDJLGR6OHNIMLZXGQS2EWBJ5YYY5J2GWM6DTD44BAC
BMHUBADDGIOZRVN4P3O5QKIDUYD4RFWBS7MP5X6LZWAYHUBRVD2QC
5K2ANIEXD3CPJM4XNKNPZINP2G4NT7SJBKRN62WNBUKJXFERTILQC
5BJPWUPLJFS34FUTFJVKA4A52YMIGV6EWDXLNSDCWBJWBGVSQFGQC
// can't use set_envmap_obj because that
// will overwrite the gmap.
env.tile_bk_bg[i][j] =
tile_idx_unseen_terrain(i, j, grd[i][j]);
// Can't use set_envmap_obj because that would
// overwrite the gmap.
env.tile_bk_bg[i][j] = tile_idx_unseen_terrain(i, j, grd[i][j]);
Feature[i].dchar = NUM_DCHAR_TYPES;
Feature[i].symbol = 0;
Feature[i].colour = BLACK; // means must be set some other way
Feature[i].flags = FFT_NONE;
Feature[i].magic_symbol = 0; // made equal to symbol if untouched
Feature[i].map_colour = DARKGREY;
Feature[i].seen_colour = BLACK; // marks no special seen map handling
Feature[i].dchar = NUM_DCHAR_TYPES;
Feature[i].symbol = 0;
Feature[i].colour = BLACK; // means must be set some other way
Feature[i].flags = FFT_NONE;
Feature[i].magic_symbol = 0; // set to symbol if unchanged
Feature[i].map_colour = DARKGREY;
Feature[i].seen_colour = BLACK; // -> no special seen map handling
// Note: get_secret_door_appearance means this probably isn't used
Feature[i].dchar = DCHAR_WALL;
Feature[i].colour = EC_ROCK;
// Note: get_secret_door_appearance means this probably isn't used.
Feature[i].dchar = DCHAR_WALL;
Feature[i].colour = EC_ROCK;
Feature[i].dchar = DCHAR_ARCH;
Feature[i].colour = LIGHTRED;
Feature[i].map_colour = LIGHTGREY;
Feature[i].dchar = DCHAR_ARCH;
Feature[i].colour = LIGHTRED;
Feature[i].map_colour = LIGHTGREY;
Feature[i].dchar = DCHAR_ARCH;
Feature[i].colour = RED;
Feature[i].flags |= FFT_NOTABLE;
Feature[i].map_colour = LIGHTGREY;
Feature[i].dchar = DCHAR_ARCH;
Feature[i].colour = RED;
Feature[i].flags |= FFT_NOTABLE;
Feature[i].map_colour = LIGHTGREY;
Feature[i].dchar = DCHAR_ARCH;
Feature[i].colour = YELLOW;
Feature[i].flags |= FFT_NOTABLE;
Feature[i].map_colour = LIGHTGREY;
Feature[i].dchar = DCHAR_ARCH;
Feature[i].colour = YELLOW;
Feature[i].flags |= FFT_NOTABLE;
Feature[i].map_colour = LIGHTGREY;
Feature[i].dchar = DCHAR_ARCH;
Feature[i].colour = CYAN;
Feature[i].flags |= FFT_NOTABLE;
Feature[i].map_colour = LIGHTGREY;
Feature[i].dchar = DCHAR_ARCH;
Feature[i].colour = CYAN;
Feature[i].flags |= FFT_NOTABLE;
Feature[i].map_colour = LIGHTGREY;
Feature[i].dchar = DCHAR_STAIRS_UP;
Feature[i].colour = LIGHTGREY;
Feature[i].map_colour = GREEN;
Feature[i].dchar = DCHAR_STAIRS_UP;
Feature[i].colour = LIGHTGREY;
Feature[i].map_colour = GREEN;
Feature[i].colour = CYAN;
Feature[i].dchar = DCHAR_ARCH;
Feature[i].flags |= FFT_NOTABLE;
Feature[i].map_colour = LIGHTGREY;
Feature[i].colour = CYAN;
Feature[i].dchar = DCHAR_ARCH;
Feature[i].flags |= FFT_NOTABLE;
Feature[i].map_colour = LIGHTGREY;
Feature[i].colour = RED;
Feature[i].dchar = DCHAR_ARCH;
Feature[i].flags |= FFT_NOTABLE;
Feature[i].map_colour = LIGHTGREY;
Feature[i].colour = RED;
Feature[i].dchar = DCHAR_ARCH;
Feature[i].flags |= FFT_NOTABLE;
Feature[i].map_colour = LIGHTGREY;
Feature[i].colour = LIGHTCYAN;
Feature[i].dchar = DCHAR_ARCH;
Feature[i].flags |= FFT_NOTABLE;
Feature[i].map_colour = LIGHTGREY;
Feature[i].colour = LIGHTCYAN;
Feature[i].dchar = DCHAR_ARCH;
Feature[i].flags |= FFT_NOTABLE;
Feature[i].map_colour = LIGHTGREY;
Feature[i].colour = DARKGREY;
Feature[i].dchar = DCHAR_ARCH;
Feature[i].flags |= FFT_NOTABLE;
Feature[i].map_colour = LIGHTGREY;
Feature[i].colour = DARKGREY;
Feature[i].dchar = DCHAR_ARCH;
Feature[i].flags |= FFT_NOTABLE;
Feature[i].map_colour = LIGHTGREY;
Feature[i].colour = EC_RANDOM;
Feature[i].dchar = DCHAR_ARCH;
Feature[i].flags |= FFT_NOTABLE;
Feature[i].map_colour = LIGHTGREY;
Feature[i].colour = EC_RANDOM;
Feature[i].dchar = DCHAR_ARCH;
Feature[i].flags |= FFT_NOTABLE;
Feature[i].map_colour = LIGHTGREY;
Feature[i].colour = LIGHTBLUE;
Feature[i].dchar = DCHAR_ARCH;
Feature[i].flags |= FFT_NOTABLE;
Feature[i].map_colour = LIGHTGREY;
Feature[i].colour = LIGHTBLUE;
Feature[i].dchar = DCHAR_ARCH;
Feature[i].flags |= FFT_NOTABLE;
Feature[i].map_colour = LIGHTGREY;
// Note: has special handling for colouring with mutation
Feature[i].colour = LIGHTBLUE;
Feature[i].dchar = DCHAR_ARCH;
Feature[i].map_colour = LIGHTGREY;
// Note: Has special handling for colouring with mutation.
Feature[i].colour = LIGHTBLUE;
Feature[i].dchar = DCHAR_ARCH;
Feature[i].map_colour = LIGHTGREY;
Feature[i].colour = LIGHTGREEN;
Feature[i].dchar = DCHAR_ARCH;
Feature[i].map_colour = LIGHTGREY;
Feature[i].colour = LIGHTGREEN;
Feature[i].dchar = DCHAR_ARCH;
Feature[i].map_colour = LIGHTGREY;
Feature[i].colour = YELLOW;
Feature[i].dchar = DCHAR_STAIRS_DOWN;
Feature[i].flags |= FFT_NOTABLE;
Feature[i].map_colour = RED;
Feature[i].colour = YELLOW;
Feature[i].dchar = DCHAR_STAIRS_DOWN;
Feature[i].flags |= FFT_NOTABLE;
Feature[i].map_colour = RED;
Feature[i].colour = MAGENTA;
Feature[i].dchar = DCHAR_ARCH;
Feature[i].flags |= FFT_NOTABLE;
Feature[i].map_colour = LIGHTGREY;
Feature[i].colour = MAGENTA;
Feature[i].dchar = DCHAR_ARCH;
Feature[i].flags |= FFT_NOTABLE;
Feature[i].map_colour = LIGHTGREY;
Feature[i].colour = MAGENTA;
Feature[i].dchar = DCHAR_ARCH;
Feature[i].map_colour = LIGHTGREY;
Feature[i].colour = MAGENTA;
Feature[i].dchar = DCHAR_ARCH;
Feature[i].map_colour = LIGHTGREY;
Feature[i].colour = WHITE;
Feature[i].dchar = DCHAR_ALTAR;
Feature[i].flags |= FFT_NOTABLE;
Feature[i].map_colour = DARKGREY;
Feature[i].colour = WHITE;
Feature[i].dchar = DCHAR_ALTAR;
Feature[i].flags |= FFT_NOTABLE;
Feature[i].map_colour = DARKGREY;
Feature[i].colour = YELLOW;
Feature[i].dchar = DCHAR_ALTAR;
Feature[i].flags |= FFT_NOTABLE;
Feature[i].map_colour = DARKGREY;
Feature[i].colour = YELLOW;
Feature[i].dchar = DCHAR_ALTAR;
Feature[i].flags |= FFT_NOTABLE;
Feature[i].map_colour = DARKGREY;
Feature[i].colour = DARKGREY;
Feature[i].dchar = DCHAR_ALTAR;
Feature[i].flags |= FFT_NOTABLE;
Feature[i].map_colour = DARKGREY;
Feature[i].colour = DARKGREY;
Feature[i].dchar = DCHAR_ALTAR;
Feature[i].flags |= FFT_NOTABLE;
Feature[i].map_colour = DARKGREY;
Feature[i].colour = EC_UNHOLY;
Feature[i].dchar = DCHAR_ALTAR;
Feature[i].flags |= FFT_NOTABLE;
Feature[i].map_colour = DARKGREY;
Feature[i].colour = EC_UNHOLY;
Feature[i].dchar = DCHAR_ALTAR;
Feature[i].flags |= FFT_NOTABLE;
Feature[i].map_colour = DARKGREY;
Feature[i].colour = EC_RANDOM;
Feature[i].dchar = DCHAR_ALTAR;
Feature[i].flags |= FFT_NOTABLE;
Feature[i].map_colour = DARKGREY;
Feature[i].colour = EC_RANDOM;
Feature[i].dchar = DCHAR_ALTAR;
Feature[i].flags |= FFT_NOTABLE;
Feature[i].map_colour = DARKGREY;
Feature[i].colour = EC_VEHUMET;
Feature[i].dchar = DCHAR_ALTAR;
Feature[i].flags |= FFT_NOTABLE;
Feature[i].map_colour = DARKGREY;
Feature[i].colour = EC_VEHUMET;
Feature[i].dchar = DCHAR_ALTAR;
Feature[i].flags |= FFT_NOTABLE;
Feature[i].map_colour = DARKGREY;
Feature[i].colour = CYAN;
Feature[i].dchar = DCHAR_ALTAR;
Feature[i].flags |= FFT_NOTABLE;
Feature[i].map_colour = DARKGREY;
Feature[i].colour = CYAN;
Feature[i].dchar = DCHAR_ALTAR;
Feature[i].flags |= FFT_NOTABLE;
Feature[i].map_colour = DARKGREY;
Feature[i].colour = EC_FIRE;
Feature[i].dchar = DCHAR_ALTAR;
Feature[i].flags |= FFT_NOTABLE;
Feature[i].map_colour = DARKGREY;
Feature[i].colour = EC_FIRE;
Feature[i].dchar = DCHAR_ALTAR;
Feature[i].flags |= FFT_NOTABLE;
Feature[i].map_colour = DARKGREY;
Feature[i].colour = BLUE;
Feature[i].dchar = DCHAR_ALTAR;
Feature[i].flags |= FFT_NOTABLE;
Feature[i].map_colour = DARKGREY;
Feature[i].colour = BLUE;
Feature[i].dchar = DCHAR_ALTAR;
Feature[i].flags |= FFT_NOTABLE;
Feature[i].map_colour = DARKGREY;
Feature[i].colour = RED;
Feature[i].dchar = DCHAR_ALTAR;
Feature[i].flags |= FFT_NOTABLE;
Feature[i].map_colour = DARKGREY;
Feature[i].colour = RED;
Feature[i].dchar = DCHAR_ALTAR;
Feature[i].flags |= FFT_NOTABLE;
Feature[i].map_colour = DARKGREY;
Feature[i].colour = LIGHTMAGENTA;
Feature[i].dchar = DCHAR_ALTAR;
Feature[i].flags |= FFT_NOTABLE;
Feature[i].map_colour = DARKGREY;
Feature[i].colour = LIGHTMAGENTA;
Feature[i].dchar = DCHAR_ALTAR;
Feature[i].flags |= FFT_NOTABLE;
Feature[i].map_colour = DARKGREY;
Feature[i].colour = LIGHTGREY;
Feature[i].dchar = DCHAR_ALTAR;
Feature[i].flags |= FFT_NOTABLE;
Feature[i].map_colour = DARKGREY;
Feature[i].colour = LIGHTGREY;
Feature[i].dchar = DCHAR_ALTAR;
Feature[i].flags |= FFT_NOTABLE;
Feature[i].map_colour = DARKGREY;
Feature[i].colour = GREEN;
Feature[i].dchar = DCHAR_ALTAR;
Feature[i].flags |= FFT_NOTABLE;
Feature[i].map_colour = DARKGREY;
Feature[i].colour = GREEN;
Feature[i].dchar = DCHAR_ALTAR;
Feature[i].flags |= FFT_NOTABLE;
Feature[i].map_colour = DARKGREY;
Feature[i].colour = EC_BEOGH;
Feature[i].dchar = DCHAR_ALTAR;
Feature[i].flags |= FFT_NOTABLE;
Feature[i].map_colour = DARKGREY;
Feature[i].colour = EC_BEOGH;
Feature[i].dchar = DCHAR_ALTAR;
Feature[i].flags |= FFT_NOTABLE;
Feature[i].map_colour = DARKGREY;
if (longtext && wherey() <= get_number_of_lines() - 2)
{
if (autoinscribe)
{
formatted_string::parse_string(
"<cyan>So, do you wish to inscribe this item? "
"('a' to autoinscribe) ").display();
}
else
{
formatted_string::parse_string(
"<cyan>So, do you wish to inscribe this item? ").display();
}
}
// special "wield slot" case - see if you can figure out why {dlb}:
// because only cursed weapons in hand only count as cursed -- bwr
// Special "wield slot" case - see if you can figure out why {dlb}:
// ... because only cursed weapons in hand count as cursed -- bwr
case GOD_LUGONU: return (long_name ? "Lugonu the Unformed" : "Lugonu");
case GOD_BEOGH: return (long_name ? "Beogh the Brigand" : "Beogh");
case GOD_LUGONU: return (long_name ? "Lugonu the Unformed" : "Lugonu");
case GOD_BEOGH: return (long_name ? "Beogh the Brigand" : "Beogh");
"Weapon",
"Cloak",
"Helmet",
"Gloves",
"Boots",
"Shield",
"Armour",
"Left Ring",
"Right Ring",
"Amulet",
"Weapon", "Cloak", "Helmet", "Gloves", "Boots",
"Shield", "Armour", "Left Ring", "Right Ring", "Amulet",
pbolt.name += "searing blast";
#ifdef DEBUG_DIAGNOSTICS
mprf( MSGCH_DIAGNOSTICS, "bolt name: '%s'", pbolt.name.c_str() );
#endif
pbolt.flavour = BEAM_FIRE;
pbolt.colour = RED;
pbolt.name += "searing blast";
pbolt.name += "chilling blast";
#ifdef DEBUG_DIAGNOSTICS
mprf( MSGCH_DIAGNOSTICS, "bolt name: '%s'", pbolt.name.c_str() );
#endif
pbolt.flavour = BEAM_COLD;
pbolt.colour = WHITE;
pbolt.name += "chilling blast";
notice |=
did_god_conduct(DID_LIVING_KILLED_BY_UNDEAD_SLAVE,
monster->hit_dice);
{
// Yes, this is a hack, but it makes sure that confused
// monsters doing the kill are not referred to as
// "slave", and I think it's okay that Yredelemnul
// ignores kills done by confused monsters as opposed
// to enslaved or friendly ones. (jpeg)
if (mons_friendly(&menv[i]))
{
notice |=
did_god_conduct(DID_LIVING_KILLED_BY_UNDEAD_SLAVE,
monster->hit_dice);
}
else
{
notice |=
did_god_conduct(DID_LIVING_KILLED_BY_SERVANT,
monster->hit_dice);
}
}
// Provide the player with an ingame clue to Boris' return. -- bwr
std::string msg = getSpeakString("Boris return_speech");
if (!msg.empty())
{
msg = do_mon_str_replacements(msg, monster);
mpr(msg.c_str(), MSGCH_TALK);
}
msg = do_mon_str_replacements(msg, monster);
mpr(msg.c_str(), MSGCH_TALK);
beam.flavour = BEAM_FIRE;
beam.target_x = you.x_pos;
beam.target_y = you.y_pos;
beam.name = "fiery explosion";
beam.colour = RED;
beam.flavour = BEAM_FIRE;
beam.type = dchar_glyph(DCHAR_FIRED_BURST);
beam.damage = dice_def( 3, 10 );
beam.target_x = you.x_pos;
beam.target_y = you.y_pos;
beam.name = "fiery explosion";
beam.colour = RED;
switch (item_type)
{
case FOOD_MEAT_RATION:
mpr("That meat ration really hit the spot!");
break;
case FOOD_BEEF_JERKY:
mprf("That beef jerky was %s!",
one_chance_in(4) ? "jerk-a-riffic"
: "delicious");
break;
case FOOD_SAUSAGE:
mpr("That sausage was delicious!");
break;
default:
break;
}
int duration = 1;
if (item_type == FOOD_MEAT_RATION || item_type == FOOD_BREAD_RATION)
duration = 3;
start_delay( DELAY_EAT, 1, 0, item_type );
lessen_hunger( food_value, true );
break;
default:
break;
}
return;
} // end eating()
// Handle messaging at the end of eating.
// Some food types may not get a message.
void finished_eating_message(int food_type)
{
bool herbivorous = player_mutation_level(MUT_HERBIVOROUS) > 0;
bool carnivorous = player_mutation_level(MUT_CARNIVOROUS) > 0;
switch (item_type)
{
case FOOD_BREAD_RATION:
mpr("That bread ration really hit the spot!");
break;
case FOOD_PEAR:
case FOOD_APPLE:
case FOOD_APRICOT:
mprf("Mmmm... Yummy %s.",
(item_type == FOOD_APPLE) ? "apple." :
(item_type == FOOD_PEAR) ? "pear." :
(item_type == FOOD_APRICOT) ? "apricot."
: "fruit.");
break;
case FOOD_CHOKO:
mpr("That choko was very bland.");
break;
case FOOD_SNOZZCUMBER:
mpr("That snozzcumber tasted truly putrid!");
break;
case FOOD_ORANGE:
mprf("That orange was delicious!%s",
one_chance_in(8) ? " Even the peel tasted good!" : "");
break;
case FOOD_BANANA:
mprf("That banana was delicious!%s",
one_chance_in(8) ? " Even the peel tasted good!" : "");
break;
case FOOD_STRAWBERRY:
mpr("That strawberry was delicious!");
break;
case FOOD_RAMBUTAN:
mpr("That rambutan was delicious!");
break;
case FOOD_LEMON:
mpr("That lemon was rather sour... But delicious nonetheless!");
break;
case FOOD_GRAPE:
mpr("That grape was delicious!");
break;
case FOOD_SULTANA:
mpr("That sultana was delicious! (but very small)");
break;
case FOOD_LYCHEE:
mpr("That lychee was delicious!");
break;
default:
break;
}
case FOOD_MEAT_RATION:
case FOOD_BEEF_JERKY:
case FOOD_SAUSAGE:
mpr("Blech - you need greens!");
return;
default:
break;
case FOOD_HONEYCOMB:
mpr("That honeycomb was delicious.");
break;
case FOOD_ROYAL_JELLY:
mpr("That royal jelly was delicious!");
restore_stat(STAT_ALL, 0, false);
case FOOD_MEAT_RATION:
mpr("That meat ration really hit the spot!");
return;
case FOOD_BEEF_JERKY:
mprf("That beef jerky was %s!",
one_chance_in(4) ? "jerk-a-riffic"
: "delicious");
return;
case FOOD_SAUSAGE:
mpr("That sausage was delicious!");
return;
default:
case FOOD_PIZZA:
if (!SysEnv.crawl_pizza.empty() && !one_chance_in(3))
mprf("Mmm... %s.", SysEnv.crawl_pizza.c_str());
else
{
if (how_carnivorous >= 1) // non-vegetable
temp_rand = 5 + random2(4);
else if (how_herbivorous >= 1) // non-meaty
temp_rand = random2(6) + 2;
else
temp_rand = random2(9);
}
}
mprf("Mmm... %s",
(temp_rand == 0) ? "Ham and pineapple." :
(temp_rand == 2) ? "Vegetable." :
(temp_rand == 3) ? "Pepperoni." :
(temp_rand == 4) ? "Yeuchh - Anchovies!" :
(temp_rand == 5) ? "Cheesy." :
(temp_rand == 6) ? "Supreme." :
(temp_rand == 7) ? "Super Supreme!"
: "Chicken.");
}
if (carnivorous)
{
switch (food_type)
{
case FOOD_BREAD_RATION:
case FOOD_BANANA:
case FOOD_ORANGE:
case FOOD_LEMON:
case FOOD_PEAR:
case FOOD_APPLE:
case FOOD_APRICOT:
case FOOD_CHOKO:
case FOOD_SNOZZCUMBER:
case FOOD_RAMBUTAN:
case FOOD_LYCHEE:
case FOOD_STRAWBERRY:
case FOOD_GRAPE:
case FOOD_SULTANA:
mpr("Blech - you need meat!");
return;
default:
case FOOD_CHEESE:
temp_rand = random2(9);
mprf("Mmm...%s.",
(temp_rand == 0) ? "Cheddar" :
(temp_rand == 1) ? "Edam" :
(temp_rand == 2) ? "Wensleydale" :
(temp_rand == 3) ? "Camembert" :
(temp_rand == 4) ? "Goat cheese" :
(temp_rand == 5) ? "Fruit cheese" :
(temp_rand == 6) ? "Mozzarella" :
(temp_rand == 7) ? "Sheep cheese"
: "Yak cheese");
break;
}
}
else
{
switch (food_type)
{
case FOOD_BREAD_RATION:
mpr("That bread ration really hit the spot!");
return;
case FOOD_PEAR:
case FOOD_APPLE:
case FOOD_APRICOT:
mprf("Mmmm... Yummy %s.",
(food_type == FOOD_APPLE) ? "apple." :
(food_type == FOOD_PEAR) ? "pear." :
(food_type == FOOD_APRICOT) ? "apricot."
: "fruit.");
return;
case FOOD_CHOKO:
mpr("That choko was very bland.");
return;
case FOOD_SNOZZCUMBER:
mpr("That snozzcumber tasted truly putrid!");
return;
case FOOD_ORANGE:
mprf("That orange was delicious!%s",
one_chance_in(8) ? " Even the peel tasted good!" : "");
return;
case FOOD_BANANA:
mprf("That banana was delicious!%s",
one_chance_in(8) ? " Even the peel tasted good!" : "");
return;
case FOOD_STRAWBERRY:
mpr("That strawberry was delicious!");
return;
case FOOD_RAMBUTAN:
mpr("That rambutan was delicious!");
return;
case FOOD_LEMON:
mpr("That lemon was rather sour... but delicious nonetheless!");
return;
case FOOD_GRAPE:
mpr("That grape was delicious!");
return;
case FOOD_SULTANA:
mpr("That sultana was delicious! (but very small)");
return;
case FOOD_LYCHEE:
mpr("That lychee was delicious!");
return;
// finally, modify player's hunger level {dlb}:
if (carnivore_modifier && how_carnivorous > 0)
food_value += (carnivore_modifier * how_carnivorous);
if (herbivore_modifier && how_herbivorous > 0)
food_value += (herbivore_modifier * how_herbivorous);
if (food_value > 0)
switch (food_type)
{
case FOOD_HONEYCOMB:
mpr("That honeycomb was delicious.");
break;
case FOOD_ROYAL_JELLY:
mpr("That royal jelly was delicious!");
restore_stat(STAT_ALL, 0, false);
break;
case FOOD_PIZZA:
if (!SysEnv.crawl_pizza.empty() && !one_chance_in(3))
mprf("Mmm... %s.", SysEnv.crawl_pizza.c_str());
else
lessen_hunger( food_value, true );
mprf("Mmm... %s",
(temp_rand == 0) ? "Ham and pineapple." :
(temp_rand == 2) ? "Vegetable." :
(temp_rand == 3) ? "Pepperoni." :
(temp_rand == 4) ? "Yeuchh - Anchovies!" :
(temp_rand == 5) ? "Cheesy." :
(temp_rand == 6) ? "Supreme." :
(temp_rand == 7) ? "Super Supreme!"
: "Chicken.");
case FOOD_CHEESE:
{
int temp_rand = random2(9);
mprf("Mmm...%s.",
(temp_rand == 0) ? "Cheddar" :
(temp_rand == 1) ? "Edam" :
(temp_rand == 2) ? "Wensleydale" :
(temp_rand == 3) ? "Camembert" :
(temp_rand == 4) ? "Goat cheese" :
(temp_rand == 5) ? "Fruit cheese" :
(temp_rand == 6) ? "Mozzarella" :
(temp_rand == 7) ? "Sheep cheese"
: "Yak cheese");
break;
}
msg::stream << you.inv[you.equip[EQ_WEAPON]].name(DESC_CAP_YOUR)
<< " glows " << weird_glowing_colour()
<< " for a moment." << std::endl;
mprf("%s glows %s for a moment.",
you.inv[you.equip[EQ_WEAPON]].name(DESC_CAP_YOUR).c_str(),
weird_glowing_colour().c_str());
if (wherey() <= get_number_of_lines() - 2)
{
if (allow_autoinscribe)
{
formatted_string::parse_string(
"<cyan>So, do you wish to inscribe this item? "
"('a' to autoinscribe) ").display();
}
else
{
formatted_string::parse_string(
"<cyan>So, do you wish to inscribe this item? ").display();
}
}
}
/*
Monster has probably failed save, now it gets enchanted somehow.
returns MON_RESIST if monster is unaffected due to magic resist.
returns MON_UNAFFECTED if monster is immune to enchantment
returns MON_AFFECTED in all other cases (already enchanted, etc)
*/
// Monster has probably failed save, now it gets enchanted somehow.
// * Returns MON_RESIST if monster is unaffected due to magic resist.
// * Returns MON_UNAFFECTED if monster is immune to enchantment.
// * Returns MON_AFFECTED in all other cases (already enchanted, etc).
canned_msg(MSG_YOU_RESIST);
bool need_msg = true;
if (beam.beam_source != -1)
{
monsters *mon = &menv[beam.beam_source];
if (!player_monster_visible(mon))
{
mpr("Something tries to affect you, but you resist.");
need_msg = false;
}
}
if (need_msg)
canned_msg(MSG_YOU_RESIST);