# Crawl Init file
tile_web_mouse_control = false
###############
### Display ###
###############
view_delay = 300
hp_colour = 100:green, 99:lightgray, 75:yellow, 50:lightred, 25:red
mp_colour = 100:green, 99:lightgray, 75:yellow, 50:lightred, 25:red
hp_warning = 50
monster_list_colour =
monster_list_colour += friendly:green,neutral:brown
monster_list_colour += trivial:darkgrey,easy:lightgrey
monster_list_colour += tough:yellow,nasty:lightred
###############
### Console ###
###############
# Enable use of darkgrey.
# needed in 0.20
bold_brightens_foreground=true
best_effort_brighten_background=false
## For item_glyph, subsequent matches override previous ones.
item := item_glyph
## Reasonable defaults
item += potion:lightgrey
item += scroll:lightgrey
item += wand:lightgrey
item += dangerous_item:blue
item += useless_item:darkgrey
### Potions ###
item += potions? of.*(lignification|mutation):blue
item += potions? of.*heal wounds:lightred
item += potions? of.*(curing|flight):lightgrey
item += potions? of.*(experience|beneficial mutation):white
item += potions? of.*berserk:brown
item += potions? of.*might:yellow
item += potions? of.*brilliance:green
item += potions? of.*(invisibility|agility):lightgreen
item += potions? of.*cancellation:cyan
item += potions? of.*cure mutation:lightcyan
item += potions? of.*(magic|ambrosia):magenta
item += potions? of.*(haste|resistance):lightmagenta
### Scrolls ###
item += scroll.*noise:blue
item += scroll.*recharging:lightred
item += scroll.*(amnesia|curse):lightgrey
item += scroll.*acquirement:white
: if you.race() == "Vampire" or you.race() == "Mummy"
: or you.race() == "Ghoul" then
item += scroll.*holy word:blue
item += scroll.*torment:brown
: else
item += scroll.*holy word:brown
item += scroll.*torment:blue
: end
item += scroll.*(summoning):yellow
item += scroll.*(silence|vulnerability|immolation):green
item += scroll.*(enchant|brand weapon):lightgreen
item += scroll.*identify:cyan
item += scroll.*magic mapping:lightcyan
item += scroll.*(fog|teleport):magenta
item += scroll.*(fear|blink):lightmagenta
### Wands ###
item += wand of.*random effects:blue
item += wand of.*heal wounds:lightred
# frost/mdart not needed in 0.18
item += wand of.*(flame|frost|magic dart):lightgrey
item += wand of.*iceblast:white
# fire/cold/drain not needed in 0.18
item += wand of.*(acid|fire|cold|drain):yellow
# fireball not needed in 0.18
item += wand of.*(lightning|fireball):brown
item += wand of.*(slowing|confusion|polymorph):green
item += wand of.*(invisibility|paralysis|enslavement):lightgreen
item += wand of.*(digging|disintegration):cyan
item += wand of.*teleportation:magenta
item += wand of.*hasting:lightmagenta
### General Identification ###
item += ( rod ):yellow
item += (identified|known).*(jewellery|magical staff):brown
item += identified.*spellbook:magenta
item += unidentified.*(potion|scroll|jewellery|wand|rod|magical staff).*:lightblue
item += unidentified.*book:lightmagenta
item += manual:lightcyan
item += manual of:cyan
### Jewellery ###
item += known.*(ring of (dexterity|strength|intelligence|slaying|evasion|protection(?! from))|amulet of reflection):magenta
item += identified.*artefact.*(jewellery):white
item += unidentified.*artefact.*(jewellery).*:lightmagenta
item += (a )?stones?$:lightgray
### Food ###
item += chunks?.*flesh:lightgrey
: if you.race() == "Vampire" then
item += potions? of blood:lightgrey
: end
item += mutagenic.*chunk:blue
item += evil_eating.*chunk:red
item += inedible.*chunk:darkgrey
item += fruit:brown
item += (pizza|jerky|jerkies):yellow
item += royal jell:green
item += bread ration:lightgreen
item += meat ration:lightred
# Want this to override anything above
item += useless:darkgrey
# Only mark these types when forbidden; for other types it looks odd.
item += forbidden.*(potion|scroll|food):red
mons := mon_glyph
# Monsters that can be easy to miss
mons ^= * : ✱
mons ^= dancing weapon : cyan {
mons ^= spectral weapon : lightcyan {
# Classed Demonspawn
mon += blood saint:9
# not needed in 0.18
mon += chaos champion:9
mon += warmonger:9
mon += corrupter:9
mon += black sun:9
# Wall glyphs; requires a font and terminal that can render these.
feature += crystal wall {â–‘}
feature += stone wall {â–’}
feature += metal wall {â–“}
feature += unnaturally hard rock wall {â–ˆ}
feature += altar {âš‘}
#############
### Tiles ###
#############
tile_window_width = 1300
tile_window_height = 700
tile_full_screen = false
tile_map_pixels = 3
## To set up RandomTiles, you need (1) the include below and (2) to add/modify
## the ready() function in your rc. See my ready() section below and the
## project page: https://github.com/gammafunk/dcss-rc#randomtiles
###################
### Menu Colors ###
###################
# These should match the item_glyph colours exactly when possible.
# For menu_colour, the first match ignores subsequent matches.
menu := menu_colour
menu =
# Many of the entries below come from dat/defaults/menu_colours.txt,
# which we have to duplicate here since we want only some of the
# entries from that file.
menu += notes:white:Reached XP level
### General Inventory###
# Items currently not affecting you.
menu += darkgrey:(melded)
# Items disliked by your god.
menu += red:forbidden
# Useless items, comes here to override artefacts etc.
menu += darkgrey:.*useless.*
# Handle cursed and equipped items early to override other colour settings.
menu += lightred:.*equipped.* cursed
menu += red: (a|the) cursed
menu += inventory:lightgreen:.*equipped.*
# Colouring of autoinscribed god gifts
menu += pickup:lightred:god gift
# Highlight (partly) selected items
menu_colour += inventory:white:\w \+\s
menu_colour += inventory:white:\w \#\s
### Food ###
# Color chunks, put ordinary ones on lightgrey.
menu += red:evil_eating.*chunk
menu += blue:mutagenic.*chunk
menu += darkgrey:inedible
menu += lightgrey: +(chunks?$|chunks? +)
# These are analogous to chunks
: if you.race() == "Vampire" then
menu += lightgrey:potions? of blood
: end
# Other food
menu += brown:fruit
menu += yellow:(pizza|jerky|jerkies)
menu += green:royal jell
menu += lightgreen:bread ration
menu += lightred:meat ration
### Potions ###
# Mostly harmful
menu += blue:potions? of.*(lignification|(?>
note_items += experience,of resistance, Archmagi
# 0.18
note_items += crystal plate armour,pearl dragon (armour|scales)
note_items += artefact,wand of (heal wounds|hasting|teleportation)
note_messages += You feel monstrous
note_messages += You pass through the gate
note_messages += cast .* Abyss
# Noteable monsters
# Undead
note_monsters += ancient lich,curse skull,curse toe,greater mummy
# Depths
note_monsters += caustic shrike
# Special hall_of_zot spawns
note_monsters += killer klown,electric golem,orb of fire
dump_message_count = 30
dump_order = header,hiscore,stats,misc,mutations,skills,spells,inventory
dump_order += overview,screenshot,monlist,messages,skill_gains,action_counts
dump_order += vaults,notes,kills
############
## Macros ##
############
macros += M 1 za
macros += M 2 zb
macros += M 3 zc
###########
### Lua ###
###########
{
function ready()
AnnounceDamage()
end
}
###############
# Damage Calc #
###############
{
local previous_hp = 0
local previous_mp = 0
local previous_form = ""
local was_berserk_last_turn = false
function AnnounceDamage()
local current_hp, max_hp = you.hp()
local current_mp, max_mp = you.mp()
--Things that increase hp/mp temporarily really mess with this
local current_form = you.transform()
local you_are_berserk = you.berserk()
local max_hp_increased = false
local max_hp_decreased = false
if (current_form ~= previous_form) then
if (previous_form:find("dragon") or
previous_form:find("statue") or
previous_form:find("tree") or
previous_form:find("ice")) then
max_hp_decreased = true
elseif (current_form:find("dragon") or
current_form:find("statue") or
current_form:find("tree") or
current_form:find("ice")) then
max_hp_increased = true
end
end
if (was_berserk_last_turn and not you_are_berserk) then
max_hp_decreased = true
elseif (you_are_berserk and not was_berserk_last_turn) then
max_hp_increased = true
end
--crawl.mpr(string.format("previous_form is: %s", previous_form))
--crawl.mpr(string.format("current_form is: %s", current_form))
--crawl.mpr(string.format("max_hp_increased is: %s", max_hp_increased and "True" or "False"))
--crawl.mpr(string.format("max_hp_decreased is: %s", max_hp_decreased and "True" or "False"))
--crawl.mpr(string:format("you_are_berserk is: %s", you_are_berserk and "True" or "False"))
--crawl.mpr(string:format("was_berserk_last_turn is: %s", was_berserk_last_turn and "True" or "False"))
--Skips message on initializing game
if previous_hp > 0 then
local hp_difference = previous_hp - current_hp
local mp_difference = previous_mp - current_mp
if max_hp_increased or max_hp_decreased then
if max_hp_increased then
crawl.mpr("You now have " .. current_hp .. "/" .. max_hp .. " hp.")
else
crawl.mpr("You now have " .. current_hp .. "/" .. max_hp .. " hp.")
end
else
--On losing health
if (current_hp < previous_hp) then
if current_hp <= (max_hp * 0.30) then
crawl.mpr("You take " .. hp_difference .. " damage, and have " .. current_hp .. "/" .. max_hp .. " hp.")
elseif current_hp <= (max_hp * 0.50) then
crawl.mpr("You take " .. hp_difference .. " damage, and have " .. current_hp .. "/" .. max_hp .. " hp.")
elseif current_hp <= (max_hp * 0.70) then
crawl.mpr("You take " .. hp_difference .. " damage, and have " .. current_hp .. "/" .. max_hp .. " hp.")
elseif current_hp <= (max_hp * 0.90) then
crawl.mpr("You take " .. hp_difference .. " damage, and have " .. current_hp .. "/" .. max_hp .. " hp.")
else
crawl.mpr("You take " .. hp_difference .. " damage, and have " .. current_hp .. "/" .. max_hp .. " hp.")
end
if hp_difference > (max_hp * 0.20) then
crawl.mpr("MASSIVE DAMAGE!!")
end
end
--On gaining more than 1 health
if (current_hp > previous_hp) then
--Removes the negative sign
local health_inturn = (0 - hp_difference)
if (health_inturn > 1) and not (current_hp == max_hp) then
if current_hp <= (max_hp * 0.30) then
crawl.mpr("You regained " .. health_inturn .. " hp, and now have " .. current_hp .. "/" .. max_hp .. " hp.")
elseif current_hp <= (max_hp * 0.50) then
crawl.mpr("You regained " .. health_inturn .. " hp, and now have " .. current_hp .. "/" .. max_hp .. " hp.")
elseif current_hp <= (max_hp * 0.70) then
crawl.mpr("You regained " .. health_inturn .. " hp, and now have " .. current_hp .. "/" .. max_hp .. " hp.")
elseif current_hp <= (max_hp * 0.90) then
crawl.mpr("You regained " .. health_inturn .. " hp, and now have " .. current_hp .. "/" .. max_hp .. " hp.")
else
crawl.mpr("You regained " .. health_inturn .. " hp, and now have " .. current_hp .. "/" .. max_hp .. " hp.")
end
end
if (current_hp == max_hp) then
crawl.mpr("Health restored: " .. current_hp .. "")
end
end
--On gaining more than 1 magic
if (current_mp > previous_mp) then
--Removes the negative sign
local mp_inturn = (0 - mp_difference)
if (mp_inturn > 1) and not (current_mp == max_mp) then
if current_mp < (max_mp * 0.25) then
crawl.mpr("You regained " .. mp_inturn .. " mp, and now have " .. current_mp .. "/" .. max_mp .. " mp.")
elseif current_mp < (max_mp * 0.50) then
crawl.mpr("You regained " .. mp_inturn .. " mp, and now have " .. current_mp .. "/" .. max_mp .. " mp.")
else
crawl.mpr("You regained " .. mp_inturn .. " mp, and now have " .. current_mp .. "/" .. max_mp .. " mp.")
end
end
if (current_mp == max_mp) then
crawl.mpr("MP restored: " .. current_mp .. "")
end
end
--On losing magic
if current_mp < previous_mp then
if current_mp <= (max_mp / 5) then
crawl.mpr("You now have " .. current_mp .. "/" ..max_mp .." mp.")
elseif current_mp <= (max_mp / 2) then
crawl.mpr("You now have " .. current_mp .. "/" ..max_mp .." mp.")
else
crawl.mpr("You now have " .. current_mp .. "/" ..max_mp .." mp.")
end
end
end
end
--Set previous hp/mp and form at end of turn
previous_hp = current_hp
previous_mp = current_mp
previous_form = current_form
was_berserk_last_turn = you_are_berserk
end
}