the inventory (or other menus) and to messages. Most controversial will be food_colouring which colour codes chunks andcorpses based on their quality. Note that these files are included by default.
Thanks go to a great many ##crawl activists, among them b0rsuk, doy, ekiM, stabwound.
To do: Examining corpses and chunks should show their edible state as well. Several of the colours should be globally defined; see FR 1977121 for this. Also copy the highlighting of marked items.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@5319 c06c8d41-db1a-0410-9941-cceddc491573
TDAVD56MGLFSMJLPLSYLEVW7MBRMT7V5BNII4TRWVDIHH47CD2OAC WLSIZSBF2F7A5Q6CEZFHAMU57ATJGDPWXDAVKJJIGGSBYKHE2JDAC ZNMUUTINYIFCCBFSQDKTTXWXEGAXLDCGPX47NK3Q7NUHRH7S4GXQC QSRRV725GCNDOMIDS36NYAA65MOLDMAZSENVSZ3PNOLBFSGHH7BQC L2BH25YQXSIQ7B66SXO7Q3IWUFVX7HTERRJZ5ZJJZS54ZETVFP6AC WCEH6FL4P6NFEU3LVWBLD36QCRNCFSZAV2H73NN54GIPGZS5UR3QC 36DYXIWAQTBOCZBCUPYWDKAXVWDU3TRMSM3OCQZGGMWE2KPERJMAC KX23OEQBBLMQHTFCA4TYYEGLHCETXVZCXALYR5U5RELKJMMB66SAC KI2WFER7ZCET4FVNEJ2UTK2AEYLTJ6R5OSRJG3Q3EHOEPLZC2BTQC RVST2QHYJ757ZHK4AUJ5NGPDZ44AD6RVFVXYPKQIBJXZBDNUCHXQC EHSY6DVGUMI6C67WKET3GDJVLWJWGYBYQONNDK5JVT7BCTHBEZVAC K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC WL5WZXFJ6TONUQRSHUY4GQ5USU47ILWNN5X2JDQZO4CRJJZSRQIAC 2ZFV5PKZU3HDHMLJWVWPPFV43NUNUON6YSAITHB26D7L4XIVWUHQC SKV6JBDAWUWTFECFSQARSNA3DDPUFCR7N3T7D5J35NYTEDMXLP3QC YL67KHG3TAZXJCWGRZPVASD6RS2SQ3V5KMIUK4E6PV43V2NBOLEAC C55G5JGGSVWMU7XVEJL6YZZLDXQZGRN7JQOAALS6WIKFPX3L2U6QC V6REAY6RCAG2QQ4BO54GHYOVTNCYHTLERJCIZJPSANXFBINZOTXAC 23476JBTNJRBK3NJD552PEZVDWO4LE5X4U7K4FWJFPZDOGN3JMLQC 3D6NWJ44UYHLZMD3BOQIWXJUEGITAVCHK6Z2WWDQONVQC4HSBRXQC THEWZBBFONK266AMYIIFQ4SFGZMTMU62ZO2Y43UMCDD6DDBSDYKAC 5RK245FAGZFCDDYG4AZAXSC7JPVIJG4DSAVAKHWWVBUNGICHYNJQC 72CQFK27NR37P2WQ32U4PEXXKMRIO7JEMJN2ZCPNVPZMT7UPFJJAC V2OQTNDCAEYXJRGSU7BG4TMLIQLT7X32ILOXW7KEWVL2R33B6XJQC # Ghouls#: if you.race() == "Ghoul" thenstop = smell.*(rott(ing|en)|decay)stop = something tasty in your inventory: end
# Pick up a butchering weapon if we don't already have one# This requires ) to be in the autopickup option line< dolocal old_ch_autopickup = ch_autopickup or function() return true endlocal function can_butcher(it)if item.name(it):find("distort", 0, true) thenreturn falseendlocal skill = item.weap_skill(it)-- have to handle polearms separately, since only some of them can butcherif skill == "Polearms" or skill == "Staves" thenlocal butcherable_polearms = {"scythe", "lajatang", "halberd", "bardiche", "glaive"}for _, weap in ipairs(butcherable_polearms) doif item.name(it):find(weap, 0, true) then return true endendreturn falseelsereturn skill:find("Blades", 0, true) or skill == "Axes"endendfunction ch_autopickup(it)if item.class(it, true) == "weapon" thenlocal need_blade = true-- Trolls and Ghouls don't need weapons to butcher things, and Mummies-- and Spriggans can't eat chunks. Ideally, we could detect a player-- with the claws mutation here too, but that's not currently possibleif you.race() == "Troll" oryou.race() == "Ghoul" oryou.race() == "Mummy" oryou.race() == "Spriggan" thenneed_blade = falseelsefor _, inv_it in pairs(item.inventory()) doif item.class(inv_it, true) == "weapon" andcan_butcher(inv_it) thenneed_blade = falseendendendreturn need_blade and not item.cursed(it) and can_butcher(it)elsereturn old_ch_autopickup(it)endendend >
### Highlighting of various messagesmsc := message_colour# Really important messages#msc = lightred:drains youmsc = lightred:feel drainedmsc = lightred:strangely unstablemsc = lightred:curare-tipped.*hits youmsc = lightred:Space warps.* around youmsc = lightred:Space bends around youmsc = lightred:is eaten awaymsc = lightred:you are carrying w.* destroyedmsc = lightred:you are carrying catche?s? firemsc = lightred:you are carrying freezes? and shatters?msc = lightred:Some of your food is covered with sporesmsc = lightred:lose your buoyancymsc = lightred:sense of stasismsc = lightred:clumsily bash# Less urgent, but still significant messages#msc = yellow:ticking.*clockmsc = yellow:snortmsc = yellow:coins.*countedmsc = yellow:tolling.*bellmsc = lightcyan:LOW MAGIC WARNINGmsc = yellow:fails to return# Unimportant messages and combat clutter#message_colour = darkgrey:You start (resting|searching)message_colour = darkgrey:Unknown commandmessage_colour = darkgrey:disappears in a puff of smoke#message_colour = darkgrey:miss(es)? (the|you|it)message_colour = darkgrey:but (do no|doesn't do any) damage
# Changing colours of items in the inventory and other menusmenu := menu_colourae := autopickup_exceptions# Important game items#menu = lightmagenta:.*misc.*rune( of Zot)?menu = lightmagenta:.*orb.*Zot# Identified artefacts#menu = magenta:.*(weapon|armour|jewellery|staff).*[+-] the# Unidentified weapon artefacts#menu = magenta:.*weapon.* ((brightly|faintly) glowing|smoking|twisted)menu = magenta:.*weapon.* (bloodstained|shimmering|warped|crystal)menu = magenta:.*weapon.* (jewelled|transparent|encrusted|pitted|slimy)menu = magenta:.*weapon.* (polished|fine|crude|ancient|ichor-stained)menu = magenta:.*weapon.* (steaming|shiny|polka-dotted)menu = magenta:.*weapon.* (golden|purple|bone|serpentine|ruby|chunky)menu = magenta:.*weapon.* (thin|green|ivory|ephemeral|blackened)menu = magenta:.*weapon.* (sapphire|rusty|blue|brutal|adamantine|ebony)menu = magenta:.*weapon.* (mangy|mithril|black|very long|steel|tiny)menu = magenta:.*weapon.* flaming crossbow# Unidentified armour artefacts#menu = lightgrey:.*armour.* jewelled helm(et)?menu = magenta:.*armour.* ((brightly|faintly) glowing|smoking|twisted)menu = magenta:.*armour.* (bloodstained|shimmering|warped|heavily runed)menu = magenta:.*armour.* (jewelled|transparent|encrusted|pitted|slimy)menu = magenta:.*armour.* (polished|fine|crude|ancient|ichor-stained)menu = magenta:.*armour.* (steaming|distressingly furry|plaid|tie-dyed)menu = magenta:.*armour.* (dull|golden|silk|tattered|round|bronze)menu = magenta:.*armour.* (fabulously|vibrating|soft|smelly|red|thick)menu = magenta:.*armour.* (weird-looking|blue|black|dirty|paisley)menu = magenta:.*armour.* (chartreuse)# Unidentified jewellery artefacts#menu = magenta:.*jewellery.* ((brightly|faintly) glowing|smoking)menu = magenta:.*jewellery.* (shimmering|warped|crystal|diamond)menu = magenta:.*jewellery.* (transparent|pitted|slimy|polished|fine)menu = magenta:.*jewellery.* (crude|ancient|steaming|scintillating)menu = magenta:.*jewellery.* (sparkling|flickering|glittering)menu = magenta:.*jewellery.* (black |blood-stained|cast-iron)menu = magenta:.*jewellery.* (phosphorescent)menu = magenta:.*jewellery.* an (encrusted|emerald) (ring|amulet)menu = magenta:.*jewellery.* a (runed|twisted|shiny|ruby) (ring|amulet)menu = magenta:.*jewellery.* a (sapphire) ringmenu = magenta:.*jewellery.* a (jade) amulet# Possible ego items#menu = lightblue:.*weapon.*(runed|glowing)menu = lightblue:.*armour.*(runed|glowing|embroidered|shiny|dyed)# Mummies' potions#: if you.race() == "Mummy" thenmenu_colour = darkgrey:.*potion.*: end# Emergency items#menu = cyan:.*scroll.*(blinking|teleport|fear)menu = cyan:.*wand.*(teleport|healing|hasting)menu = cyan:.*potion.*(heal|berserk|speed|resistance)menu = cyan:.*misc.*[lL]antern# Good items#menu = magenta:.*scroll.*(acquirement)menu = magenta:.*potion.*(gain (strength|dexterity|intelligence))menu = magenta:.*potion.*(experience|magic): if not you_real_undead() thenmenu = magenta:.*potion.*(of mutation): elsemenu = lightred:.*potion.*(of mutation): end# Dangerous items#menu = lightred:.*scroll.*(forgetfulness|torment|curse armour)menu = lightred:.*scroll.*(immolation|curse weapon)menu = lightred:.*potion.*(slowing|degeneration|poison|confusion)menu = lightred:.*potion.*(paralysis|decay)menu = lightred:.*jewellery.*(inaccuracy|hunger)# Useless items#menu = darkgrey:.*scroll.*(random uselessness|paper|noise)menu = darkgrey:.*potion.*water: if you.race() == "Mummy" thenmenu = darkgrey:.*jewellery.*(sustenance): end: if you_real_undead() thenmenu = darkgrey:.*jewellery.*(regeneration|rage): end: if string.find(you.race(), "Draconian", 0, true) thenmenu = darkgrey:.*jewellery.*(controlled flight)ae = >amulet.*(controlled flight): end: if you.race() == "Green Draconian" or you.race() == "Naga" thenmenu = darkgrey:.*jewellery.*(poison resistance)ae = >ring.*(poison resistance): end< if you.race() == "Naga" oryou.race() == "Spriggan" oryou.race() == "Vampire" then >menu = darkgrey:.*jewellery.*(see invis)ae = >ring.*(see invis):end: if you.race() == "Spriggan" thenmenu = darkgrey:.*jewellery.*(sustenance)ae = >ring.*(sustenance):end# need to save and restore after temple if you get trog later: if you.god() == "Trog" thenmenu = darkgrey:.*jewellery.*(rage|wizardry)ae = >amulet.*(rage)ae = >ring.*(wizardry): end# Exceptions#menu = yellow:.*potion.*(porridge|gluggy white)# Defaults for normal items#menu = lightgreen:uncursed.*\(.*(worn|neck|hand|weapon).*\)menu = lightred:cursed.*\(.*(worn|neck|hand|weapon).*\)menu = white:\(.*(worn|neck|hand|weapon).*\)menu = green:uncursedmenu = red:cursedmenu = lightgrey:^(scroll|potion|ring|amulet)
# autopickup = $?!+"/%# autopickup_exceptions = scrolls? of random uselessness# autopickup_exceptions = <deck of cards#
autopickup = $?!+"/%)# lua routines for automatically picking up one butchering tool# This require ) in autopickup and no further weapons are picked up.include pickup_butcher_tool.txt# There is a long list of autopickup exceptions ininclude autopickup_exceptions.txt
# You can use travel_stop_message to make autotravel stop for situations that# warrant your attention. This file (travel_stoppers.txt) contains a list of# travel_stop_message settings, with brief descriptions of what they do.
# The file (travel_stoppers.txt) contains a list of travel_stop_message# settings, with brief descriptions of what they do.
# Colouring for the inventorymenu_colour = inventory:lightred: cursed.*(worn|neck|hand|weapon)\)menu_colour = inventory:green:(worn|neck|hand|weapon)\)menu_colour = inventory:red: cursedmenu_colour = inventory:red: rotting
##### Colours (messages and menus) ####### menu_colour_prefix_id = truemenu_colour_prefix_class = true# Food is colour coded as follows:## yellow = preferred food# lightgrey = normal food# darkgey = cannot be eaten at all# lightred = extremely dangerous# magenta = mutagenic# lightgreen = poisonous# brown = contaminated (may cause sickening)#include food_colouring.txt# There is elaborate colouring of items in the inventory (and other menus)# depending on their usefulness, taking race and other criteria into account.include menu_colours.txt
# This block colours ego items; it requires annotate_item_class = true# menu_colour_prefix_id = true# menu_colour_prefix_class = true# menu_colour_prefix_id = true# menu_colour_prefix_class = true# menu_colour = inventory:green:(^identified armour .* pair of .* of )# menu_colour = inventory:lightgrey:(^identified armour .* pair of )# menu_colour = inventory:green:(^identified (weapon|armour) .* of )
# Colouring of messagesinclude messages.txt
# dump_message_count = 7# dump_order = header,hiscore,stats,misc,notes,inventory,# dump_order += turns_by_place,skills,spells,overview,mutations,# dump_order += messages,screenshot,monlist,kills_by_place,kills
# dump_message_count = 20# dump_order = header, hiscore, stats, misc, notes, inventory,# dump_order += turns_by_place, skills,s pells, overview, mutations,# dump_order += messages, screenshot, monlist, kills_by_place, kills
# note_items = rod,book# note_monsters = orb of fire# ood_interesting = 8# note_hp_percent = 5# note_skill_levels = 1,5,10,15,27# note_all_skill_levels = true# note_skill_max = true# note_all_spells = true# note_all_spells = true# The following takes a note whenever the Abyss is left:# note_messages = You pass through the gate
ood_interesting = 8note_hp_percent = 5note_skill_levels = 1,5,10,15,27note_all_skill_levels = truenote_skill_max = truenote_all_spells = truenote_all_spells = truenote_items = rod of, acquirement, preservation, running, of Zotnote_messages = You pass through the gatenote_messages = [bB]anish.*Abyssnote_messages = Your scales startnote_messages = protects you from harmnote_monsters = orb of fire, ancient lich, Sigmund
### Colouring of corpses, depending on whether you can eat them, and### whether it's safe to eat them. Contains spoilers!### Colours both on the ground and in inventory!msg := message_colourinv := menu_colour# Spriggans don't care for corpses and chunks.#: if you.race() == "Spriggan" thenmsg = darkgrey:.*corpsemsg = darkgrey:.*chunkinv = darkgrey:.*chunks? ofinv = darkgrey:.*corpseinv = yellow:.*food.*(bread ration|snozzcumber|slice of pizza)inv = yellow:.*food.*(orange|banana|lemon|pear|apple|apricot|choko)inv = yellow:.*food.*(rambutan|lychee|strawberry|grape|sultana): end# Mummies don't care for food at all.#: if you.race() == "Mummy" thenmsg = darkgrey:.*corpsemsg = darkgrey:.*chunkinv = darkgrey:.*food.*: end# Rotten chunks eaters: Ghouls, Ogres, Kobolds, Trolls, Hill Orcs#: if you.race() == "Ghoul" thenmsg = yellow:rot.*chunks? ofmsg = yellow:rot.*corpseinv = yellow:.*rot.*chunks? of< elseif you.race() == "Ogre" oryou.race() == "Kobold" oryou.race() == "Troll" oryou.race() == "Hill Orc" then ># color rotten chunks as normal chunks: elsemsg = lightred:rot.*chunks? ofmsg = lightred:rot.*corpseinv = lightred:.*rot.*chunks? ofinv = lightred:.*rot.*corpseautopickup_exceptions = >rot.*chunks? of: end# Kobolds don't want fruits but meat.#: if you.race() == "Kobold" theninv = darkgrey:.*food.*(bread ration|snozzcumber|slice of pizza)inv = darkgrey:.*food.*(orange|banana|lemon|pear|apple|apricot)inv = darkgrey:.*food.*(rambutan|lychee|strawberry|grape|sultana)inv = yellow:.*chunks? of: end# Undead corpses/chunks#msg = lightred:chunks? of.*(ghoul|necrophage|death drake)msg = lightred:(ghoul | necrophage|death drake).*corpseinv = lightred:.*chunks? of.*(ghoul|necrophage|death drake)# Mutagenic corpses/chunks#msg = magenta:chunks? of.*(draining|orange brain|great orb)msg = magenta:chunks? of.*(guardian naga|shapeshifter|very ugly)msg = magenta:(draining|orange brain|great orb).*corpsemsg = magenta:(guardian naga|shapeshifter|very ugly).*corpseinv = magenta:.*chunks? of.*(draining|orange brain|great orb)inv = magenta:.*chunks? of.*(guardian naga|shapeshifter|very ugly)# Poisonous corpses/chunks#msg = lightgreen:chunks? of.*(ant larva|kobold|beetle)msg = lightgreen:chunks? of.*(brain worm|green draconian)msg = lightgreen:chunks? of.*((black|brown|yellow) snake)msg = lightgreen:chunks? of.*(bee|death yak|slug|amoeba)msg = lightgreen:chunks? of.*(centipede|mite|snail|gila|hydra)msg = lightgreen:chunks? of.*(iron troll|naga|queen|wasp)msg = lightgreen:chunks? of.*(redback|(golden|mottled) dragon)msg = lightgreen:chunks? of.*((orange|green) rat)msg = lightgreen:chunks? of.*(scorpion|soldier ant|spiny|spider)msg = lightgreen:(ant larva|kobold|beetle).*corpsemsg = lightgreen:(brain worm|green draconian).*corpsemsg = lightgreen:((black|brown|yellow) snake).*corpsemsg = lightgreen:(bee|death yak|slug|amoeba).*corpsemsg = lightgreen:(centipede|mite|snail|gila|hydra).*corpsemsg = lightgreen:(iron troll|naga|queen|wasp).*corpsemsg = lightgreen:(redback|(golden|mottled) dragon).*corpsemsg = lightgreen:((orange|green) rat).*corpsemsg = lightgreen:(scorpion|soldier ant|spiny|spider).*corpseinv = lightgreen:.*chunks? of.*(ant larva|kobold|beetle)inv = lightgreen:.*chunks? of.*(brain worm|green draconian)inv = lightgreen:.*chunks? of.*((black|brown|yellow) snake)inv = lightgreen:.*chunks? of.*(bee|death yak|slug|amoeba)inv = lightgreen:.*chunks? of.*(centipede|mite|snail|gila|hydra)inv = lightgreen:.*chunks? of.*(iron troll|naga|queen|wasp)inv = lightgreen:.*chunks? of.*(redback|(golden|mottled) dragon)inv = lightgreen:.*chunks? of.*((orange|green) rat)inv = lightgreen:.*chunks? of.*(scorpion|soldier ant|spiny|spider)# Contaminated corpses/chunks#msg = brown:chunks? of.*(elf|human|drake|blowfly|cockroach)msg = brown:chunks? of.*((fire|hill|frost|stone) giant)msg = brown:chunks? of.*(mosquito|gnoll|goblin|jackal)msg = brown:chunks? of.*(manticore|minotaur|ogre|orc)msg = brown:chunks? of.*(war dog|warg|((rock|deep) )?troll)msg = brown:chunks? of.*(grey rat|ugly thing|draconian)msg = brown:chunks? of.*((quicksilver|iron|swamp|komodo) dragon)msg = brown:chunks? of.*(mer(folk|maid))msg = brown:(elf|human|drake|blowfly|cockroach).*corpsemsg = brown:((fire|hill|frost|stone) giant).*corpsemsg = brown:(mosquito|gnoll|goblin|jackal).*corpsemsg = brown:(manticore|minotaur|ogre|orc).*corpsemsg = brown:(war dog|warg|((rock|deep) )?troll).*corpsemsg = brown:(grey rat|ugly thing|draconian).*corpsemsg = brown:((quicksilver|iron|swamp|komodo) dragon).*corpsemsg = brown:(mer(folk|maid)).*corpseinv = brown:.*chunks? of.*(elf|human|drake|blowfly|cockroach)inv = brown:.*chunks? of.*((fire|hill|frost|stone) giant)inv = brown:.*chunks? of.*(mosquito|gnoll|goblin|jackal)inv = brown:.*chunks? of.*(manticore|minotaur|ogre|orc)inv = brown:.*chunks? of.*(war dog|warg|((rock|deep) )?troll)inv = brown:.*chunks? of.*(grey rat|ugly thing|draconian)inv = brown:.*chunks? of.*((quicksilver|iron|swamp|komodo) dragon)inv = brown:.*chunks? of.*(mer(folk|maid))# Other food#inv = lightgrey:^food
ae := autopickup_exceptions#### inclusions #### curare is always dangerous on the floorae = <curare-tipped### exclusions #### Don't autopickup in the Abyss< dolocal old_ch_autopickup = ch_autopickup or function() return true endfunction ch_autopickup(it)return you.where() ~= "Abyss" and old_ch_autopickup(it)endend ># universally bad options and scrollsae = potions? of (confusion | degeneration | poison | strong poison)ae = potions? of (slowing | paralysis | decay | water)ae = scrolls? of (paper | torment | immolation | curse weapon)ae = scrolls? of (curse armour | random uselessness | noise)# Excluding amulets as you only need one of each. Also for some rings.# There is some (intended) overlap with pickup.lua, which also exludes# the ring of hunger, for example.ae = amulet of (inaccuracy | gourmand | controlled flight | warding)ae = amulet of (resist mutation | resist slow | clarity | rage)ae = ring of (see invisible | levitation | poison resistance | hunger)ae = ring of (fire | ice | sustenance | invisibility)ae = ring of (magical power | regeneration): if you.race() == "Mummy" or you.race() == "Ghoul" thenae = ring of life protection: end: if you.race() == "Kenku" thenae = potions? of levitation: end: if you.god() == "Trog" thenae = wizardryae = staff: end