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" then
stop = 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
< do
local old_ch_autopickup = ch_autopickup or function() return true end
local function can_butcher(it)
if item.name(it):find("distort", 0, true) then
return false
end
local skill = item.weap_skill(it)
-- have to handle polearms separately, since only some of them can butcher
if skill == "Polearms" or skill == "Staves" then
local butcherable_polearms = {
"scythe", "lajatang", "halberd", "bardiche", "glaive"
}
for _, weap in ipairs(butcherable_polearms) do
if item.name(it):find(weap, 0, true) then return true end
end
return false
else
return skill:find("Blades", 0, true) or skill == "Axes"
end
end
function ch_autopickup(it)
if item.class(it, true) == "weapon" then
local 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 possible
if you.race() == "Troll" or
you.race() == "Ghoul" or
you.race() == "Mummy" or
you.race() == "Spriggan" then
need_blade = false
else
for _, inv_it in pairs(item.inventory()) do
if item.class(inv_it, true) == "weapon" and
can_butcher(inv_it) then
need_blade = false
end
end
end
return need_blade and not item.cursed(it) and can_butcher(it)
else
return old_ch_autopickup(it)
end
end
end >
### Highlighting of various messages
msc := message_colour
# Really important messages
#
msc = lightred:drains you
msc = lightred:feel drained
msc = lightred:strangely unstable
msc = lightred:curare-tipped.*hits you
msc = lightred:Space warps.* around you
msc = lightred:Space bends around you
msc = lightred:is eaten away
msc = lightred:you are carrying w.* destroyed
msc = lightred:you are carrying catche?s? fire
msc = lightred:you are carrying freezes? and shatters?
msc = lightred:Some of your food is covered with spores
msc = lightred:lose your buoyancy
msc = lightred:sense of stasis
msc = lightred:clumsily bash
# Less urgent, but still significant messages
#
msc = yellow:ticking.*clock
msc = yellow:snort
msc = yellow:coins.*counted
msc = yellow:tolling.*bell
msc = lightcyan:LOW MAGIC WARNING
msc = yellow:fails to return
# Unimportant messages and combat clutter
#
message_colour = darkgrey:You start (resting|searching)
message_colour = darkgrey:Unknown command
message_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 menus
menu := menu_colour
ae := 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) ring
menu = 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" then
menu_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() then
menu = magenta:.*potion.*(of mutation)
: else
menu = 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" then
menu = darkgrey:.*jewellery.*(sustenance)
: end
: if you_real_undead() then
menu = darkgrey:.*jewellery.*(regeneration|rage)
: end
: if string.find(you.race(), "Draconian", 0, true) then
menu = darkgrey:.*jewellery.*(controlled flight)
ae = >amulet.*(controlled flight)
: end
: if you.race() == "Green Draconian" or you.race() == "Naga" then
menu = darkgrey:.*jewellery.*(poison resistance)
ae = >ring.*(poison resistance)
: end
< if you.race() == "Naga" or
you.race() == "Spriggan" or
you.race() == "Vampire" then >
menu = darkgrey:.*jewellery.*(see invis)
ae = >ring.*(see invis)
:end
: if you.race() == "Spriggan" then
menu = darkgrey:.*jewellery.*(sustenance)
ae = >ring.*(sustenance)
:end
# need to save and restore after temple if you get trog later
: if you.god() == "Trog" then
menu = 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:uncursed
menu = red:cursed
menu = 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 in
include 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 inventory
menu_colour = inventory:lightred: cursed.*(worn|neck|hand|weapon)\)
menu_colour = inventory:green:(worn|neck|hand|weapon)\)
menu_colour = inventory:red: cursed
menu_colour = inventory:red: rotting
##### Colours (messages and menus) #####
#
# menu_colour_prefix_id = true
menu_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 messages
include 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 = 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
note_items = rod of, acquirement, preservation, running, of Zot
note_messages = You pass through the gate
note_messages = [bB]anish.*Abyss
note_messages = Your scales start
note_messages = protects you from harm
note_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_colour
inv := menu_colour
# Spriggans don't care for corpses and chunks.
#
: if you.race() == "Spriggan" then
msg = darkgrey:.*corpse
msg = darkgrey:.*chunk
inv = darkgrey:.*chunks? of
inv = darkgrey:.*corpse
inv = 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" then
msg = darkgrey:.*corpse
msg = darkgrey:.*chunk
inv = darkgrey:.*food.*
: end
# Rotten chunks eaters: Ghouls, Ogres, Kobolds, Trolls, Hill Orcs
#
: if you.race() == "Ghoul" then
msg = yellow:rot.*chunks? of
msg = yellow:rot.*corpse
inv = yellow:.*rot.*chunks? of
< elseif you.race() == "Ogre" or
you.race() == "Kobold" or
you.race() == "Troll" or
you.race() == "Hill Orc" then >
# color rotten chunks as normal chunks
: else
msg = lightred:rot.*chunks? of
msg = lightred:rot.*corpse
inv = lightred:.*rot.*chunks? of
inv = lightred:.*rot.*corpse
autopickup_exceptions = >rot.*chunks? of
: end
# Kobolds don't want fruits but meat.
#
: if you.race() == "Kobold" then
inv = 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).*corpse
inv = 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).*corpse
msg = magenta:(guardian naga|shapeshifter|very ugly).*corpse
inv = 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).*corpse
msg = lightgreen:(brain worm|green draconian).*corpse
msg = lightgreen:((black|brown|yellow) snake).*corpse
msg = lightgreen:(bee|death yak|slug|amoeba).*corpse
msg = lightgreen:(centipede|mite|snail|gila|hydra).*corpse
msg = lightgreen:(iron troll|naga|queen|wasp).*corpse
msg = lightgreen:(redback|(golden|mottled) dragon).*corpse
msg = lightgreen:((orange|green) rat).*corpse
msg = lightgreen:(scorpion|soldier ant|spiny|spider).*corpse
inv = 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).*corpse
msg = brown:((fire|hill|frost|stone) giant).*corpse
msg = brown:(mosquito|gnoll|goblin|jackal).*corpse
msg = brown:(manticore|minotaur|ogre|orc).*corpse
msg = brown:(war dog|warg|((rock|deep) )?troll).*corpse
msg = brown:(grey rat|ugly thing|draconian).*corpse
msg = brown:((quicksilver|iron|swamp|komodo) dragon).*corpse
msg = brown:(mer(folk|maid)).*corpse
inv = 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 floor
ae = <curare-tipped
### exclusions ###
# Don't autopickup in the Abyss
< do
local old_ch_autopickup = ch_autopickup or function() return true end
function ch_autopickup(it)
return you.where() ~= "Abyss" and old_ch_autopickup(it)
end
end >
# universally bad options and scrolls
ae = 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" then
ae = ring of life protection
: end
: if you.race() == "Kenku" then
ae = potions? of levitation
: end
: if you.god() == "Trog" then
ae = wizardry
ae = staff
: end