Fix 1939901: Weapon listing not updated right away after being cursed.
Put the code to colour arbitrary substrings of a message according to the menu_colour settings into a function of its own, and use it for pick up and eating prompts (currently from floor only) as well as for the "Things that are here" listing. Could be overly spammy, thus needs testing. If all works well, we can remove the "msg =" settings in food_colouring.txt that currently don't do anything anyway, or reuse them for non-prompt messages like "You see here a green rat corpse."
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@5436 c06c8d41-db1a-0410-9941-cceddc491573
OFH2B2UZBK43QLFQBZ54FOCFLFNE54BZVDNCEUGDTBCUGNVZULIQC VT3WFNEYL2JRNSKHN2OEOGCEL4LK4PIY3RXJS5TDY6MDZFF23ELAC QCIPZ52TOIKLA6O22P7USLEAYI4VAZRLGVXMAASSGEP37KN5PEVAC PDOFPXD2X6VI23AHKCGQ5RVDBG74CNP2E3YOHKXLOARHHBXEK3HQC 4CK7LBQIQYKOEZ6B4YGRYDXV2ICEA3OHQHCXXVPNSMEKGPCHR52QC 77H4BWWPPGLM3PLZH4QTAJRXIZTSDVNCOKZE223I437FN2UJ34RQC K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC DDU4A3JGN5IUIPP5IASOODKPR2WBHSDSV4FITZ6HNXNSXXQACWAQC NG53L53MSFQZAIVKHG54IEMXNJ33AYVPF2OZM4MMJFDKEJCGPBSAC OR7VGWIBRR55M7HATPIORQMMB4YQ7EQXO2IWAFFFPEJ4VV3ASRRQC ZQ62K2WXC4EJUO7VNJ3VHPGU2LAMSTKYSL62ENYB2CGW2BEI6KBAC 45EMD3KLQPMERNMIKU5G76H6556XOMIW352TSBP7VLWJX2YYGS7AC VNIAJEGE3PYE6F6EAMCQDWMAS52EQTKJUPAFXK7ARCITZ326WTTQC 5CNYJQGEILRX2TAYBWMVECJ6D4OPV2CD6YPDIERS2SR77Z4LTZPAC 7YUGK5Q64KG5O7GJGTUBRRLHAHBCJ5YOE23YUPT6UBKUSB67CYAQC YCL3W2PFE6ILTGBFODCSXNPDIA46KVSZP2TI7HDMYAOEJT65RIEAC BFYHDL4EHSPKKC6EPKDRPESHYAA2WFKC6RXQIRRTSSTF3Z2QPVCAC RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC XKAJWK6MPHS3ZCZIPPLTIMOPF6AROGLRDDCS6EFE3IGE4AHT7MYQC BDFIS53HAIHOCXQ5BE7WCO2MEOFCUQPFY4JGUWVLWY6JO3IFMEKQC RREJL4WZKWFEMA62AC5G5UDTOXMW4UULIQXVA5RPFASPODMHQZ7AC O6ZMFKDI3XO2SWPNEYHIPYFDWJR4TVDP5BAATK6LVCVETQID6E7AC 5BJPWUPLJFS34FUTFJVKA4A52YMIGV6EWDXLNSDCWBJWBGVSQFGQC MDAJYB6STTZPNHRQ2X66MMMSONMKXTESLHJSFPGN7H3D3TOVBAVAC VEPHAIXR3GSPHBLOW5DWFFU4ULEMVWRQG4G5PKSKRA2I6RHYROUAC SVY2PTCLXR3KNPQAWXVXTTGCC5DR334HOAKHYO3VDDRWM2BWMALAC 3D6NWJ44UYHLZMD3BOQIWXJUEGITAVCHK6Z2WWDQONVQC4HSBRXQC SDLKLUNFGVKDS55DDJZCBAVIB7NL3RRYPTACAY65SCUQKV6APFSAC VCG3BRIYRTNNWYC3LOXD6KFGXOX37HAFW2HNV7WXVG2V7EUHLDZQC FLAGBNUNSIQNFDN53CDWABJRTTFWDL4PG34AI474ZKPXDEPYHOAQC P33QUZKDQZ2XKFPFI4HP5A7KG76PTBFGB3ZSGMBN3X6JYOOMYLLQC BJPPSWEN35BG4KP3XTXPDMAJ2GAUMHXKHCNALAZ4B4OS6B3KDSUQC KFULGQQOHWUTXOM3BXCCYPGGVGGY4Z6265XUFRCBPNLTZAEHJZSQC A5YOVQMFZRMT6NK7YUQI632TWC3CFATXDNCSB7M33EEYB62SA3XAC ZGUJWUFJ4NFFJ6PGXLFGQWCWBCZHPWGWI44NJHJEVPRG5L36PADQC 3UYAIGVJBYPSAUTDRTQXRXNFGKKSCYGIFZ3YRZJGPDKJEMOTQOUQC AZ2RCXNVULJUSCBDBK3VARTUCTPEJXHTA7ALP73S4EXLJB6YYB5QC 5FBOE2QNRLKUNOP54CZD6LFAMM7LX6NNLHJRJHRDDIUTQ7J723DQC CIPVRZGLOZHCERK6YPOBV3P2E4IAB4H6D5EHLRQE2O5E4P4VCBUAC SHSIZVHSB4RPTLGMFJXUDVHF3FTEZZYCRIH4CBZP4MXOBR3HC4QAC LCVUTR5N23C2AE3EXJUDTYQVURXN6XXGGOYR4ALIVRIUBTVLN5PAC K2MLPJIAXXZRWEWZCNSGICCBNIU2WAAPT7SPIMOH7FLLTOB4QFRAC QXD3HX6QQ37PW6HVKIIKGFLO2ACROLUGKK66KFX7ED6SO4FDXB2AC U6Q43EFKHJIDBBWN6RUTOYRHHX4IT73OPBR4CWIOKUDGTCYQE5PAC 57E4T664CXRFPVW2BZBYI33UIHFS4PSEZURZYPSYSZK5DRLJJ5CQC GBUB77EAYHOFY6GQ5IY3ZSBC7FSQFZZKYNBD5QMCQFIKFLYLWHOQC BPSH3LUDUTXMK2QZKSMFDTBNDD6HPILMCBLZNMCRLZZQKPS5QOQQC TV3ZC6WOZKSQQJQN26JIVKCHK6UK7WMDBYZDUYRWEAZ4JB4YVNAAC FJ2URTFOTFNB5VZUQMFTO7MMQBBWSOPRY2RE3UG2ZFJYOXBIMC7QC CIAIASCBKKV7VMYBL2CIFAYGFQTB6GIME4FSQGZNQGXO7FXQTA5AC KQNIGKATHT4YSPJFPJGIGPD6VNR5B753SE2JN2LCXZZJNHCGY3DQC SWT4O2TCOAQOVFA6WRA7MCU3KMTMJWFEMIHO64N4PWL5FNHDPADAC 7V4DCKFJCNBXFODMKJ6H3MCDUTSD4XVQ7D4D6XFCD4JNF4HCE4KAC T7PHMSG47WP4MTKIGVBP4EAQRGXHMZPYSI3GT3DAEWKHUDFCH3QQC 74LQ7JXVLAFSHLI7LCBKFX47CNTYSKGUQSXNX5FCIUIGCC2JTR3QC 2W34FMSGJ2BZY7QQM6X6RTVRXXI2H72Z2MH75SU3SDL4FN4G74KAC RZLMIEOHITWGYNVBHDVVWS24YQ5SD5HG3T3JCMIBCD2VA5TEPHCQC M2HMYLYYXSP5XGX6MCI77IT6UW5K4YSEUJWHPQPYXVSW5L36BJ2AC KAOE5HB3THUKVGFZRO5EZESHEB3Q34WUO5DFMLWIKOBF47LZTIYAC 3EUPIYJNWOMOQBP2Z5SGSMWK453BXJD6KL2WFTR3NM565MEBYASAC TQLWCGVXVZ75H7MDBJD3DJDUFNW62WOAEDJUVKCHQTAXKBP47CSAC PI5BATR2SER3RFE76IUGHM2AGXVFOUM3PLU7WC2K2Q2BA5K2E73QC 22RFWMSJGG26Z2MQEEXGKVTFSTLREHQIG46WYOTMDRKI5YVMRNVAC AMAPVOFKH3YS5VCVOG2YNHXNDAZATMXFUL6ODZUIOF5OYYKBVKGAC TCZNXMPFNAWJYUIBTUEOTT73KLB4CU5S6HBKTHRT6KCD4ZVGBGUQC 7EI4HMXZ7TAWZKFZG2SXHDAX3FWFBCZLUAKOALPRFF72FS7NKVBQC VD4KDTGHVKCN35AWREYB4TEOUMCTW7SAUPAMTMF5ABC7VBHVKP4AC U3KGUJJQWQORJIIFH3ADVNIEEX5HOX6KEOXO7DJSL7L3Z6GG3PAQC BIZDHHK5LIO57S5AKHEPJFLWV5DAFKZIKYBGOUNGICSWTX7DCXKAC QRD2M37AMG76CPGCALZQ3N2PZ3OZ3MFETMVAEHBJJVVH2BCPVGUAC TOOHYAX73C5KPSWGHPCBWCUN62WMMO3BI5CWEEMGV3WBFZ5RIH5AC mpr("In your confused state, you trip and fall down the stairs.");
std::string fall_where = "down the stairs";if (stair_find == DNGN_ENTER_ABYSS|| stair_find == DNGN_ENTER_PANDEMONIUM|| stair_find == DNGN_TRANSIT_PANDEMONIUM|| stair_find == DNGN_ENTER_PORTAL_VAULT){fall_where = "through the gate";}mprf("In your confused state, you trip and fall %s.",fall_where.c_str());
for ( unsigned int i = 0; i < items.size(); ++i )strm << items[i]->name(DESC_NOCAP_A) << std::endl;
for (unsigned int i = 0; i < items.size(); ++i){item_def it(*items[i]);std::string name = get_menu_colour_prefix_tags(it, DESC_NOCAP_A);strm << name << std::endl;}
if ( !grid_destroys_items(my_grid)&& !copy_item_to_grid( you.inv[item_dropped],you.x_pos, you.y_pos, quant_drop, true ))
if (!grid_destroys_items(my_grid)&& !copy_item_to_grid( you.inv[item_dropped],you.x_pos, you.y_pos, quant_drop, true ))
const std::string get_menu_colour_prefix_tags(item_def &item,description_level_type desc){std::string cprf = menu_colour_item_prefix(item);std::string colour = "";std::string colour_off = "";std::string item_name = item.name(desc);int col = menu_colour(item_name, cprf, "pickup");if (col != LIGHTGRAY)colour = colour_to_str( col );if (!colour.empty()){// Order is important here.colour_off = "</" + colour + ">";colour = "<" + colour + ">";item_name = colour + item_name + colour_off;}return (item_name);}
random = true;if (dangerous){// Xom loves it when you use a Wand of Random Effects and// there is a dangerous monster nearby...xom_is_stimulated(255);}}
// (highest possible range, and unresistable beam flavour).if (!player_tracer(random ? ZAP_DEBUGGING_RAY : type_zapped,2 * (you.skills[SK_EVOCATIONS] - 1), beam,random ? 17 : 0))
// and unknown wands (highest possible range, and unresistable beam// flavour). Don't use the tracer if firing at self.if (!beam.aimed_at_feet&& !player_tracer(!beam.effect_known ? ZAP_DEBUGGING_RAY: type_zapped,2 * (you.skills[SK_EVOCATIONS] - 1),beam, !beam.effect_known ? 17 : 0))
// zapping() updates beam
if (dangerous && alreadyknown && wand.sub_type == WAND_RANDOM_EFFECTS){// Xom loves it when you use a Wand of Random Effects and// there is a dangerous monster nearby...xom_is_stimulated(255);}// zapping() updates beam.
// Don't bother colouring if it's only for sacrificing.std::string cprf = menu_colour_item_prefix(mitm[o]);std::string colour = "";std::string colour_off = "";int col = menu_colour(corpse_name, cprf, "pickup");if (col != LIGHTGRAY)colour = colour_to_str( col );if (!colour.empty()){// Order is important here.colour_off = "</" + colour + ">";colour = "<" + colour + ">";corpse_name = colour + corpse_name + colour_off;}
corpse_name = get_menu_colour_prefix_tags(mitm[o],DESC_NOCAP_A);
// NOTE: Whenever zapping() is called with a randomized value for power,// player_tracer should be called directly with the highest power possible// respecting current skill, experience level etc.
// NOTE: Whenever zapping() is called with a randomized value for power// (or effect), player_tracer should be called directly with the highest// power possible respecting current skill, experience level etc.
// if there is a monster at this location, affect it// submerged monsters aren't really there -- bwr
// If there is a monster at this location, affect it.// Submerged monsters aren't really there. -- bwr