Make menu_colour_item_prefix also apply for autopickup_exceptions, so you can exclude, for example, all evil_eating at once. Fix Vampires "continuing draining" after having "stopped".
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@5666 c06c8d41-db1a-0410-9941-cceddc491573
QGUV5IINCOK6AXWQ2QTZMPDJTEZPON5O565ANT2EE236I5OAPAVAC 3GBXSMNQIP63NWDR4AVYCVHFEIBWDTTLIGP5L5ZBIH3LZ6P3ANJAC YXY47WGHSW2UMFCUOHFPGRX4LKRSFVUTWUCIOL6OTZPS3C7ZHLNAC SXTWWMONWAVOGIYRQP6ALJLLNCDNT4NNDTE2HXCUOVP6HZ7XNXFQC OK5VPFM4IAUPE3W75VZMR3RNXHWTOIB6QVCT6FO2GXQHXQFRACVQC 4GYZYBY7FFORRNPIEFTV4ZM2C7Z6D2KTQOM537ZCC2YBXT2TNSHAC SSCG2FLJMUTTIRXBFSPLAUUBUIN375ZGL5UOAF3SC62ZIILSMMKAC 7YUGK5Q64KG5O7GJGTUBRRLHAHBCJ5YOE23YUPT6UBKUSB67CYAQC K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC RREJL4WZKWFEMA62AC5G5UDTOXMW4UULIQXVA5RPFASPODMHQZ7AC 547JREUJXTZNYVGHNNAET5F5O5JYYGNTDQB6ABZNT7YX5EY64OHAC F4F7W4Z2DEJBKPEEOKBV5364WE6N6N6OMA4N7D5ESVEGCCUCWZLAC KX23OEQBBLMQHTFCA4TYYEGLHCETXVZCXALYR5U5RELKJMMB66SAC 3D6NWJ44UYHLZMD3BOQIWXJUEGITAVCHK6Z2WWDQONVQC4HSBRXQC OFH2B2UZBK43QLFQBZ54FOCFLFNE54BZVDNCEUGDTBCUGNVZULIQC NGW2XPEX2XRK3CYC37DNUZSSB5IQLECMKRB6NX257I2X3G35LMPAC UET576SVCGS2TXEDRTO7BUTOTLJ77MYHIVZJCDWGH2BAXYMKG6DAC 57E4T664CXRFPVW2BZBYI33UIHFS4PSEZURZYPSYSZK5DRLJJ5CQC RQR4PTMGQLTRWLYRU3KXIIDGND7FBORESJWMWFVD3WYU5SISZXAAC PZNRGNZPN4YLXL2UDMEUPE33AAZZ6Z2YPK6EQGYZL2PNTRWLCUNQC UL7XFKMUX3WIU4O2LZANK4ECJ654UZPDBFGNXUEYZYOLKBYBCG6AC 66B4FST7OBWPB2T5FZ4RO32G5QSLQSNPAHHLGEVOL6WDS455PABQC 36DYXIWAQTBOCZBCUPYWDKAXVWDU3TRMSM3OCQZGGMWE2KPERJMAC J2A4YGNZ64W3UVI3GGUXOHWE3YMZAJNODOMW3REP7KIE6TCMGX7QC TDAVD56MGLFSMJLPLSYLEVW7MBRMT7V5BNII4TRWVDIHH47CD2OAC RVST2QHYJ757ZHK4AUJ5NGPDZ44AD6RVFVXYPKQIBJXZBDNUCHXQC WL5WZXFJ6TONUQRSHUY4GQ5USU47ILWNN5X2JDQZO4CRJJZSRQIAC 5RK245FAGZFCDDYG4AZAXSC7JPVIJG4DSAVAKHWWVBUNGICHYNJQC NZFU5APXZZDBRYJGE57F43JKBBPWC33TIZNK6K4OZYSI47PFJMQQC THEWZBBFONK266AMYIIFQ4SFGZMTMU62ZO2Y43UMCDD6DDBSDYKAC 2ZFV5PKZU3HDHMLJWVWPPFV43NUNUON6YSAITHB26D7L4XIVWUHQC GSPHLNMEIUY5KSOV2LPKQLGJVBPGHXZENIXSJELA6ZBT74F5ZGRQC XYJ5Y635KCRCTL2BFPP53NWQRK3NUHS6T3ARPIXV5A3CHWBW7VCQC EHSY6DVGUMI6C67WKET3GDJVLWJWGYBYQONNDK5JVT7BCTHBEZVAC WOZSB5NEBGQATZFRE6J65VWODTFQFNW7J5TTC3FA72Y7JZYMTZGQC VIHJ3Z75JN7BXWNOPWV3CWQZEA7K5DK36EKHCYMZC7SOSJYH2XHQC BFYHDL4EHSPKKC6EPKDRPESHYAA2WFKC6RXQIRRTSSTF3Z2QPVCAC 4UQBOVCMAMNCCF6PPX222H6JJO7MPYOKKC2NBKMVYIT5R5FOACNAC ZEXKK2T26K2IMZRZCFGMD55TVH3XCV5BHZZV6WFOU5HCDR4W6U7QC V6REAY6RCAG2QQ4BO54GHYOVTNCYHTLERJCIZJPSANXFBINZOTXAC GPEQXXKYWFSEHRNHZENL23KWT2WWVJJG5DVFUP3LLIRGCWR7X4UAC UWA77ZXA34J6UHPHAMFCCMP2OIPRIMGXYTEPXUU53FIRK3GZBL4QC 23476JBTNJRBK3NJD552PEZVDWO4LE5X4U7K4FWJFPZDOGN3JMLQC E5GFDGV5XJVVDZGWFQIIZ47FGGF7AEJLGGBWRUZ34HPLNFJTNLLQC && !is_useless_item(item) && !is_inedible(item)&& !is_dangerous_item(item)#ifdef CLUA_BINDINGS&& clua.callbooleanfn(true, "ch_autopickup", "u", &item)#endif|| _is_forced_autopickup(item, itemname))
&& !is_useless_item(item) && !is_inedible(item)|| _is_forced_autopickup(item, itemname))
// Certainly not useless if it can be used for attacking.if (is_bad_item(item))
switch (item.sub_type){case POT_CONFUSION:case POT_SLOWING:case POT_DEGENERATION:case POT_DECAY:case POT_PARALYSIS:case POT_POISON:case POT_STRONG_POISON:case POT_MUTATION:// Certainly not useless if it can be used for attacking.
if (you.species == SP_GHOUL|| you.species == SP_VAMPIRE && you.hunger_state >= HS_SATIATED){switch (item.sub_type){case POT_BERSERK_RAGE:case POT_CURE_MUTATION:case POT_GAIN_STRENGTH:case POT_GAIN_INTELLIGENCE:case POT_GAIN_DEXTERITY:return (true);}}
// Do a second switch for the other potions.
-------------------------------------------------------------- pickup.lua:-- Smarter autopickup handling that takes into account the-- item type in combination with your character's race,-- religion, knowledge, and eating habits.---- To use this, add this line to your init.txt:-- lua_file = lua/pickup.lua---- Notes:-- * This script only handles items of classes with-- autopickup on.-- * Any result can still be overridden using-- autopickup_exceptions.------------------------------------------------------------function make_hash(ls)local h = { }for _, i in ipairs(ls) doh[i] = trueendreturn hendreturn you.race() == "Mummy" or you.race() == "Ghoul"end-- not identifiedfunction unknown_potion(type)return type == 0endfunction good_potion(type)return type == 1endfunction bad_potion(type)return type == 2end-- special casesfunction spec_potion(type)return type == 3endfunction ch_autopickup(it)local spells = make_hash( you.spells() )if item.class(it) == "Potions" thenlocal type = item.potion_type(it)-- "bad" potions only for Evaporateif spells["Evaporate"] and bad_potion(type) thenreturn trueend-- no potions for Mummiesif you.race() == "Mummy" or bad_potion(type) thenreturn falseend-- pickup "good" and unID'd potionsif good_potion(type) or unknown_potion(type) thenreturn trueend-- special handlingif spec_potion(type) thenif item.subtype(it) == "berserk"return falseelsereturn trueendend-- special cases for blood, water, and porridgeif item.subtype(it) == "blood"or item.subtype(it) == "porridge" thenreturn food.can_eat(it, false)endend-- anything not handled until here can be picked upreturn trueendif item.class(it) == "Carrion"or item.class(it) == "Comestibles" thenreturn food.can_eat(it, false)endendif item.class(it) == "Jewellery" thenif item.subtype(it) == "hunger"or item.subtype(it) == "inaccuracy" thenreturn falseend(item.subtype(it) == "regeneration"return falseendend-- we only get here if class autopickup ONreturn trueendor item.subtype(it) == "rage"or item.subtype(it) == "sustenance"and you.race() == "Mummy") thenif you_real_undead() andif item.class(it) == "Books" and item.subtype(it) == "spellbook"and you.god() == "Trog" thenreturn falseor item.subtype(it) == "water"or item.subtype(it) == "gain ability"if you_real_undead() thenor item.subtype(it) == "cure mutation"or item.subtype(it) == "mutation" then-- real undead cannot use berserk-- or anything involving mutations-- also: no bad potions for anyone else-- don't count Vampires here because of all those exceptionsfunction you_real_undead()
# status_caption_colour = yellow# delay_message_clear = true# show_inventory_weights = true# show_gold_turns = true# show_beam = false
# status_caption_colour = yellow# classic_hud = true# mlist_min_height = 5# msg_max_height = 10# mlist_allow_alternate_layout = true# show_gold_turns = true# delay_message_clear = true# show_inventory_weights = true
# list_rotten = false# mlist_min_height = 5# msg_max_height = 10# mlist_allow_alternate_layout = true# classic_hud = true
# list_rotten = false# show_beam = false
# Excluding amulets as you only need one of each. Also for some rings.# There is some (intended) overlap with pickup.lua, which also excludes# the ring of hunger, for example.
# Exclude potentially useful items of high risk, like ?torment.ae = dangerous_item# Excluding amulets as you only need one of each. (If you know the# subtype that means you already have one of it.) Also for some rings.# Some items may already be excluded as bad_item, e.g. inaccuracy.
menu_colour_prefix_id = falseSetting this option to true will prefix the string against whichmenu_colour regexes are matched (not the stringdisplayed) with the item's identification state: "unidentified"for unidentified, "known" for wands for which you know the typebut don't know the number of charges, and for rings with plussesfor which you know the type but don't know the plus value, and"identified" for other identified items.Note that the prefix is put before the the *entire* string whichis displayed, so if you're wielding an uncursed dagger which hasthe 'a' slot, the string the regexes will match against is"identified a - an uncursed dagger (weapon)".
the item's object type: armour, weapon, wand, etc. If both thisoption and menu_colour_prefix_id are set to true, then theidentification string comes before the object type string (i.e.,"identified weapon", "known wand", etc).
the item's object type: armour, weapon, wand, etc.