# TEAMCAPITAN
# RC edited by Alipheese from xtahua
# https://github.com/hexophile/crawl
# Thanks to pipel for all help with this RC
# Many thanks to bart for RC
# Thanks to Pikaro and Lasty for their RC files
# Thanks to Vidiiot for speedrunning part
# https://github.com/crawl/crawl/blob/master/crawl-ref/docs/options_guide.txt
# You can find there 95% of this pretty primitive RC
#####################
##################### clua main body section
#####################
include = advanced_optioneering.txt
bindkey = [s] CMD_LUA_CONSOLE
#
# Please be aware where do you place functions calls - always after declaration.
# Function ready() can stop working if you mess up one function, most of errors
# will show up in crawl message log, but there can be 'errors' that won't be
# error for interpreter at all, like calling function BEFORE declaration.
#
# Please note in function("regex") size of letters matters.
#
{
--##################### Send command to crawl
function Cmd(cmd)
crawl.setopt(cmd)
end
--##################### Print message to log
function Msg(log_msg)
crawl.mpr(log_msg)
end
--##################### Wielded item - bool
function IsWielded()
return items.equipped_at("Weapon")
end
--##################### Wielded item
function IsWielded(item)
if items.equipped_at("Weapon") then
return string.find(items.equipped_at("Weapon").name(), item)
else
return false
end
end
--##################### Speedrunning mode
local SpeedMode = false
function SpeedrunMode()
if IsWielded("meat ration") or IsWielded("bread ration") then
if not SpeedMode then
SpeedMode = true
Cmd("force_more_message += .*into view")
else
return
end
else
if SpeedMode then
SpeedMode = false
Cmd("force_more_message -= .*into view")
else
return
end
end
end
--##################### If for all untiled races except naga. They're ugly.
if you.race() ~= "Naga" then
tile_show_player_species = true
end
}
# mechanics, travel, rest, chunk, lua, butcher, misc, damage, eating, tile,
#####################
##################### End of clua main body section
#####################
#####################
##################### Player status information
#####################
{
playerMainSkill = ""
player = { XL = 0, god = "", HP = 0, baseHP = 0, MP = 0, baseMP = 0, hunger = 0, gold = 0, turns = 0 }
resist = { rF = 0, rC = 0, rN = 0, rPois = 0, rElec = 0, rCorr = 0, rMut = 0, MR = 0 }
power = { sInv = 0, sustAt = 0, clar = 0, gourm = 0, spirit = 0, ward = 0, stasis = 0, stealth = 0 }
attr = { str = 0, int = 0, dex = 0 }
stat = { fly = 0, rage = 0, conf = 0, para = 0, caught = 0, fast = 0, slow = 0, exh = 0, tele = 0, root = 0, pois = 0, corr = 0, inv = 0, mesm = 0, onFire = 0, petr = 0, sil = 0, regen = 0, might = 0, agile = 0, brill = 0, sick = 0, contam = 0 }
earlierPlayer = { XL = 0, god = "", HP = 0, baseHP = 0, MP = 0, baseMP = 0, hunger = 0, gold = 0, turns = 0 }
earlierResist = { rF = 0, rC = 0, rN = 0, rPois = 0, rElec = 0, rCorr = 0, rMut = 0, MR = 0 }
--##################### Update player main informations
function PlayerUpdate()
player["XL"] = you.xl()
player["god"] = you.god()
player["baseHP"] = you.hp()
player["baseMP"] = you.base_mp()
player["hunger"] = you.hunger()
player["gold"] = you.gold()
player["turns"] = you.turns()
end
--##################### Update the current turn HP and base HP status
function HealthUpdate()
player["HP"], player["baseHP"] = you.hp()
end
--##################### Announce the amount of HP and paint it realtive to % of max HP
function AnnounceHP( hp, maxhp )
if hp > 0.90 * maxhp then
Msg("You have now: "..hp.."/"..maxhp.." HP.")
elseif hp > 0.60 * maxhp then
Msg("You have now: "..hp.."/"..maxhp.." HP.")
elseif hp > 0.30 * maxhp then
Msg("You have now: "..hp.."/"..maxhp.." HP.")
elseif hp > 0.15 * maxhp then
Msg("You have now: "..hp.."/"..maxhp.." HP.")
else
Msg("You have now: "..hp.."/"..maxhp.." HP.")
end
end
--##################### Announce difference between an earlier turn HP and base HP and the current turn
function AnnounceDiff()
local modifiedHP = 0
if earlierPlayer["baseHP"] > player["baseHP"] then
Msg("You lost additional "..earlierPlayer["baseHP"] - player["baseHP"].." HP.")
earlierPlayer["baseHP"] = player["baseHP"]
modifiedHP = 0
elseif earlierPlayer["baseHP"] < player["baseHP"] then
modifiedHP = player["baseHP"] - earlierPlayer["baseHP"]
Msg("You got additional "..modifiedHP.." HP.")
end
-- There is thing with this, when you start the game you will get message about additional HP
-- equal your base HP. This can be solved by placing earlierPlayer["baseHP"] = player["baseHP"]
-- before ready() loop. I like it, so if you find this annoying, fix it by yourself. :) (same for HP)
local HP = 0
if earlierPlayer["HP"] < player["HP"]-1 then
HP = player["HP"] - earlierPlayer["HP"]
Msg("Restored "..HP.." HP.")
AnnounceHP( player["HP"], player["baseHP"] )
elseif earlierPlayer["HP"] > player["HP"] then
HP = earlierPlayer["HP"]-player["HP"]
if HP > 0.20 * player["baseHP"] and HP > 5 and not modifiedHP then
Msg("!MASSIVE DAMAGE! YOU LOST "..HP.." HP!")
else
Msg("You lost "..HP.." HP.")
end -- not modifiedHp doesn't seem to work
AnnounceHP( player["HP"], player["baseHP"] )
end
end
--##################### Main health management function
function HealthStatement()
HealthUpdate()
AnnounceDiff()
earlierPlayer["HP"] = player["HP"]
earlierPlayer["baseHP"] = player["baseHP"]
end
--##################### Update the current turn player's resists
function ResistUpdate()
resist["rF"] = you.res_fire()
resist["rC"] = you.res_cold()
resist["rN"] = you.res_draining()
resist["rPois"] = you.res_poison()
resist["rCorr"] = you.res_corr()
resist["rMut"] = you.res_mutation()
end
--##################### Main resists management function
function ResistStatement()
local changed = false
ResistUpdate()
for elem in pairs(earlierResist) do
if earlierResist[elem] ~= resist[elem] then
earlierResist[elem] = resist[elem]
changed = true
end
end
return changed
end
--##################### Update the current turn player's powers
function PowerUpdate()
power["sInv"] = you.see_invisible()
power["sustAt"] = you.res_statdrain()
power["gourm"] = you.gourmand()
power["spirit"] = you.spirit_shield()
--help! power["clar"] = you.???()
--halp! power["ward"] = you.???()
-- ;-; power["stasis"] = you.???()
--helpz power["stealth"] = you.???()
end
--##################### Update the current turn player's attributes
function AttributesUpdate()
attr["str"] = you.strength()
attr["int"] = you.intelligence()
attr["dex"] = you.dexterity()
end
--##################### Update player's status
function StatusUpdate()
stat["fly"] = you.flying()
stat["rage"] = you.berserk()
stat["conf"] = you.confused()
stat["para"] = you.paralysed()
stat["caught"] = you.caught()
stat["fast"] = you.hasted()
stat["slow"] = you.slowed()
stat["exh"] = you.exhausted()
stat["tele"] = you.teleporting()
stat["root"] = you.rooted()
stat["pois"] = you.poisoned()
stat["corr"] = you.corrosion()
stat["inv"] = you.invisible()
stat["mesm"] = you.mesmerised()
stat["onFire"] = you.on_fire()
stat["petr"] = you.petrifying()
stat["sil"] = you.silencing()
stat["regen"] = you.regenerating()
stat["might"] = you.mighty()
stat["agile"] = you.agile()
stat["brill"] = you.brilliant()
stat["sick"] = you.sick()
stat["contam"] = you.contaminated()
end
}
Tags: status, resists, player, character,
#####################
##################### End of player status information
#####################
#####################
##################### Colouring
#####################
# Definitions of colours
$bad := red
$verybad := lightred
$dangerous := magneta
$helpful := brown
$artefact := yellow
$useless := darkgrey
$decent := white
$good := green
$verygood := lightgreen
$magic := lightblue
$important := cyan
$survival := lightcyan
$unknown := lightmagneta
menu := menu_colour
menu =
menu += $useless:(melded)
menu += $bad:.*evil_item.*
menu += $verybad:[^n] cursed.*
menu += inventory:$verybad:[^n] cursed.*
menu += inventory:$important:.*equipped.*
menu += $useless:.*useless_item.*
menu += $artefact:.*artefact.*
menu += $useless:amulet of inaccuracy
menu += $magic:amulet of (guardian spirit|stasis|warding)
menu += $good:amulet of (faith|rage|resist corrosion)
menu += $verygood:amulet of (clarity|regeneration|resist mutation|the gourmand)
menu += $good:\+.*(buckler|shield|mail|armour|robe|hat|helmet)
menu += $magic:.*(runed|dyed|shiny|glowing|enchanted).*
menu += $useless:inert
menu += $survival:disc of storms
menu += $dangerous:tome of Destruction
menu += $magic:box of beasts
menu += $useless:lantern of shadows
menu += $helpful:stone of tremors
menu += $survival:fan of gales
menu += $helpful:lamp of fire
menu += $helpful:phial of floods
menu += $magic:sack of spiders
menu += $helpful:phantom mirror
menu += $magic:crystal ball of energy
menu += $bad:evil_eating
menu += $dangerous:rot-inducing
menu += $dangerous:poisonous
menu += $useless:inedible
menu += $good:(bread ration|meat ration)
menu += $good:preferred
menu += $helpful:(corpse|chunk)
menu += $dangerous:mutagenic
menu += $dangerous:potions? of (berserk|mutation)
menu += $good:potions? of (flight|restore)
menu += $helpful:potions? of (agility|brilliance|invisibility|resistance)
menu += $verygood:potions? of curing
menu += $survival:potions? of (haste|heal wounds|cancellation|might)
menu += $important:potions? of (beneficial|cure mutation|experience|gain)
menu += $magic:potions? of magic
# XL depend: lignification
menu += $bad:scrolls? of torment
menu += $dangerous:scrolls? of (noise|random|immolation)
menu += $helpful:scrolls? of (amnesia|holy word|identify|remove curse)
menu += $good:scrolls? of (silence|summoning|vulnerability)
menu += $verygood:scrolls? of (brand|enchant|magic mapping|recharging)
menu += $survival:scrolls? of (blinking|teleportation|fog|acquirement|fear)
menu += $useless:wand of (flame|frost|magic darts|random effects)
menu += $helpful:wand of (confusion|enslavement|polymorph|slowing)
menu += $good:wand of (digging|disintegration|draining)
menu += $verygood:wand of (cold|fire|fireball|lightning)
menu += $survival:wand of (teleportation|invisibility|heal wounds|hasting)
menu += $verybad:ring of \-.*(dexterity|evasion|intelligence|protection|slaying|strength)
menu += $helpful:ring of (fire|ice)
menu += $useless:ring of (flight|loudness)
menu += $good:ring of (.*evasion|invisibility|magical power|.*protection|stealth|sustain abilities|wizardry)
menu += $verygood:ring of (poison resistance|protection from cold|protection from fire|protection from magic|see invisible)
menu += $important:ring of (teleport|.*slaying|sustain abilities)
##################### Glyph colouring (console/log)
glyph := item_glyph
glyph =
glyph += $bad:.*evil_item.*
glyph += $verybad:[^n] cursed.*
glyph += inventory:$verybad:[^n] cursed.*
glyph += inventory:$important:.*equipped.*
glyph += $useless:.*useless_item.*
glyph += $artefact:.*artefact.*
glyph += $useless:amulet of inaccuracy
glyph += $magic:amulet of (guardian spirit|stasis|warding)
glyph += $good:amulet of (faith|rage|resist corrosion)
glyph += $verygood:amulet of (clarity|regeneration|resist mutation|the gourmand)
glyph += $good:\+.*(buckler|shield|mail|armour|robe|hat|helmet)
glyph += $magic:.*(runed|dyed|shiny|glowing|enchanted).*(armour|weapon|shield).*
glyph += $survival:disc of storms
glyph += $dangerous:tome of Destruction
glyph += $magic:box of beasts
glyph += $useless:lantern of shadows
glyph += $helpful:stone of tremors
glyph += $survival:fan of gales
glyph += $helpful:lamp of fire
glyph += $helpful:phial of floods
glyph += $magic:sack of spiders
glyph += $helpful:phantom mirror
glyph += $magic:crystal ball of energy
glyph += $bad:evil_eating
glyph += $dangerous:rot-inducing
glyph += $dangerous:poisonous
glyph += $useless:inedible
glyph += $good:(bread ration|meat ration)
glyph += $good:preferred
glyph += $helpful:(corpse|chunk)
glyph += $dangerous:mutagenic
glyph += $dangerous:potions? of (berserk|mutation)
glyph += $good:potions? of (flight|restore)
glyph += $helpful:potions? of (agility|brilliance|invisibility|resistance)
glyph += $verygood:potions? of curing
glyph += $survival:potions? of (haste|heal wounds|cancellation|might)
glyph += $important:potions? of (beneficial|cure mutation|experience|gain)
glyph += $magic:potions? of magic
glyph += $bad:scrolls? of torment
glyph += $dangerous:scrolls? of (noise|random|immolation)
glyph += $helpful:scrolls? of (amnesia|holy word|identify|remove curse)
glyph += $good:scrolls? of (silence|summoning|vulnerability)
glyph += $verygood:scrolls? of (brand|enchant|magic mapping|recharging)
glyph += $survival:scrolls? of (blinking|teleportation|fog|acquirement|fear)
glyph += $useless:wand of (flame|frost|magic darts|random effects)
glyph += $helpful:wand of (confusion|enslavement|paralysis|polymorph|slowing)
glyph += $good:wand of (digging|disintegration|draining)
glyph += $verygood:wand of (cold|fire|fireball|lightning)
glyph += $survival:wand of (teleportation|invisibility|heal wounds|hasting)
glyph += $verybad:ring of \-.*(dexterity|evasion|intelligence|protection|slaying|strength)
glyph += $helpful:ring of (fire|ice)
glyph += $useless:ring of (flight|loudness)
glyph += $good:ring of (.*evasion|invisibility|magical power|.*protection|stealth|sustain abilities|wizardry)
glyph += $verygood:ring of (poison resistance|protection from cold|protection from fire|protection from magic|see invisible)
glyph += $important:ring of (teleport|.*slaying|sustain abilities)
##################### Stats colouring (numbers)
status_caption_colour = green
hp_colour = 100:lightgreen, 90:green, 60:yellow, 30:lightred, 15:red
stat_colour = 125:white, 50:lightgreen, 14:green, 9:yellow, 6:lightred, 3:red
mp_colour = 100:lightcyan, 85:cyan, 60:lightblue, 30:blue, 15:red
##################### XL depend colouring
: if you.xl() >= 22 then
menu += $helpful:potions? of (lignification)
: else
menu += $survival:potions? of (lignification)
: end
{
--##################### Colours
local bad = "red"
local verybad = "lightred"
local dangerous = "magneta"
local helpful = "brown"
local artefact = "yellow"
local useless = "darkgrey"
local decent = "white"
local good = "green"
local verygood = "lightgreen"
local magic = "lightblue"
local important = "cyan"
local survival = "lightcyan"
local unknown = "lightmagneta"
--##################### Painting menu function
function PaintMenu(colour, rule)
crawl.setopt("menu_colour += "..colour..":"..rule)
end
function DepaintMenu(colour, rule)
crawl.setopt("menu_colour -= "..colour..":"..rule)
end
--##################### Painting glyph function
function PaintGlyph(colour, rule)
crawl.setopt("item_glyph += "..colour..":"..rule)
end
--##################### Paint by XL function
function PaintByXL()
if player["XL"] < 22 then
PaintMenu(survival, "potions? of (lignification)")
else
PaintMenu(helpful, "potions? of (lignification)")
end
if player["XL"] < 13 then
PaintMenu(survival, "wand of (paralysis)")
else
DepaintMenu(survival, "wand of (paralysis)")
PaintMenu(helpful, "wand of (paralysis)")
end
end
}
# Tags: stats, colours, colouring, menu, glyphs, hp, mp, health, mana,
#####################
##################### End of colouring
#####################
#####################
##################### Autoinscription
#####################
# Great thanks to bart for his/her RC and/or true author of this part.
ai := autoinscribe
autoinscribe_cursed = false
ai += bad_item.*potion:!q
ai += potion.*mutation:!q
ai += wand of heal wounds:!V
ai += wand of teleportation:!V
ai += wand of haste:!V
ai += wand of invisibility:!V
ai += trishula:!d
ai += staff of air:rElec
ai += staff of cold:rC+
ai += staff of death:rN+
ai += staff of energy:channel
ai += staff of fire:rF+
ai += staff of poison:rPois
ai += staff of power:MP+15
ai += staff of wizardry:Wiz+
ai += fire dragon (armour|hide):rF++ rC-
ai += gold dragon (armour|hide):rC+ rF+ rPois
ai += ice dragon (armour|hide):rC++ rF-
ai += mottled dragon (armour|hide):rSticky
ai += pearl dragon (armour|hide):rN+
ai += quicksilver dragon armour:MR+
ai += shadow dragon (armour|hide):Stlth++++
ai += steam dragon (armour|hide):rSteam
ai += storm dragon (armour|hide):rElec
ai += swamp dragon (armour|hide):rPois
ai += troll (hide|leather armour):regen
ai += (leather armour|mail|plate armour|robe|skin) of cold resistance:rC+
ai += (leather armour|mail|plate armour|robe|skin) of fire resistance:rF+
ai += (leather armour|mail|plate armour|robe) of magic resistance:MR+
ai += (leather armour|mail|plate armour|robe) of positive energy:rN+
ai += (leather armour|mail|plate armour) of poison resistance:rPois
ai += troll leather armour of cold resistance:regen rC+
ai += troll leather armour of fire resistance:regen rF+
ai += plate armour of ponderousness:Speed-
ai += robe of resistance:rC+ rF+
ai += robe of the archmagi:Spellpower+
ai += (barding|boots|buckler|cloak|gloves|hat|helmet|shield) of cold resistance:rC+
ai += (barding|boots|buckler|cloak|gloves|hat|helmet|shield) of fire resistance:rF+
ai += (barding|boots) of flight:Fly
ai += (barding|boots) of stealth:Stlth+
ai += (barding|boots) of running:Speed+
ai += (barding|boots) of jumping:+Jump
ai += (buckler|cloak|shield) of poison resistance:rPois
ai += (buckler|shield) of positive energy:rN+
ai += (buckler|shield) of protection:AC+3
ai += (buckler|shield) of reflection:Reflect
ai += (buckler|shield) of resistance:rC+, rF+
ai += (cloak|hat|helmet) of magic resistance:MR+
ai += (hat|helmet) of intelligence:Int+3
ai += (hat|helmet) of see invisible:SInv
ai += cloak of darkness:+Inv
ai += gloves of strength:Str+3
ai += gloves of dexterity:Dex+3
ai += gloves of archery:RNG Slay+4
ai += ring of fire:rF+ rC-
ai += ring of flight:+Fly
ai += ring of ice:rC+ rF-
ai += ring of invisibility:+Inv
ai += ring of loudness:Stlth-
ai += ring of magical power:MP+9
ai += ring of poison resistance:rPois
ai += ring of positive energy:rN+
ai += ring of protection from cold:rC+
ai += ring of protection from fire:rF+
ai += ring of protection from magic:MR+
ai += ring of see invisible:SInv
ai += ring of stealth:Stlth+
ai += ring of sustain abilities:SustAb
ai += ring of teleportation:+/*tele
ai += ring of wizardry:Wiz+
ai += amulet of clarity:Clar
ai += amulet of faith:Faith
ai += amulet of guardian spirit:Spirit
ai += amulet of rage:+Rage
ai += amulet of regeneration:+Regen
ai += amulet of resist corrosion:rCorr
ai += amulet of resist mutation:rMut
ai += amulet of stasis:Stasis
ai += amulet of the gourmand:Gourm
ai += amulet of warding:Ward rN+
ai += amulet of inaccuracy:Acc-5
ai += potions? of might:Str+5 DMG+1d10
ai += potions? of agility:Stlth+ Dex+5 EV+5
ai += potions? of brilliance:Archmagi Int+5 Wiz++
ai += potions? of resistance:rF+ rC+ rPois rElec rCorr
ai += throwing net:+f
# Tags: autoinscription, au, ai, autoinscribe, description, ego, brand
#####################
##################### End of autoinscription
#####################
#####################
##################### Autobinding spells
#####################
sp := spell_slot
sp += Apportation:z
sp += Controlled Blink:a
# spells, autobind, bind, casting, keys,
#####################
##################### End of autobinding spells
#####################
#####################
##################### Autobinding items
#####################
it := item_slot
it += trishula:w
it += bread ration:r
it += throwing net:F
it += wand of heal wounds:V
it += wand of teleportation:G
it += wand of haste:Y
it += wand of invisibility:H
it += wand of digging:b
it += wand of disintegration:c
it += disc of storms:v
it += fan of gales:f
# items, autobind, bind, evocable, scrolls, keys,
#####################
##################### End of autobinding items
#####################
#####################
##################### Autopickup & exceptions
#####################
# $ = gold
# ? = scroll
# ! = potion
# : or + = book
# " or = = jewellery
# / = wand
# % = food
# } = miscellaneous
# \ = rods
# | = staves
# ) = weapon
# ( = missiles
# [ = armour
ap := autopickup
#ap =
ap -= \|
ap += $
##################### Auto-not-grab - exceptions of your kleptomania
ae := autopickup_exceptions
ae =
ae ^= <(unidentified).*(scrolls?|wand|jewellery|book).*
: if you.race() == "Mummy" then
ae ^= >(unidentified).*potions?
: else
ae ^= <(unidentified).*potions?
: end
ae ^= scrolls? of holy word
: else
ae ^= >scrolls? of torment
ae ^= useless_item, >bad_item, >evil_item, >deck of.*
ae ^= >wand of.*(frost|flame|magic darts|enslavement|paralyze|confusion|polymorph|random effects|slowing)
ae ^= >wand of.*(digging|disintegration)
ae ^= >ring of (ice|fire|protection from .*|positive energy)
ae ^= >ring of (wizardry|magicial power|stealth|flight|sustain abilities)
ae ^= >ring of (strength|intelligence|dexterity|see invisible)
ae ^= <(phial|lamp|disc|fan) of.*
: if you.race() ~= "Mummy" then
ae ^= <.*food.*
# ae ^= <(meat rations?|bread rations?|chunks?.*|fruits?|royal jelly)
: else
ae ^= >.*food.*
# ae ^= >(meat rations?|bread rations?|chunks?.*|fruits?|royal jelly)
: end
{
--##################### Autopickup management function
function Autopickup(item, t)
if t then
Cmd("autopickup_exceptions ^= <"..item)
else
Cmd("autopickup_exceptions ^= >"..item)
end
end
--##################### XL depend autopickup
function AutopickupByXL()
if you.xl() < 24 then
Autopickup("potions? of.*lignification", true)
else
Autopickup("potions? of.*lignification", false)
end
if you.xl() < 13 then
Autopickup("(throwing nets?|needles?).*", true)
else
Autopickup("(throwing nets?|needles?).*", false)
end
if you.xl() < 16 then
Autopickup("wand of.*(fire|cold|draining|lighting|fireball)", true)
else
Autopickup("wand of.*(fire|cold|draining|lighting|fireball)", false)
end
end
--##################### Race depend autopickup
function AutopickupByRace()
if you.race() == "Troll" or you.race() == "Ogre" then
Autopickup("large rocks?", true)
end
end
--##################### Autopickup for certain items
Autopickup("potions? of.*flight", false)
Autopickup(".*rod", false)
--##################### Autopickup rules function
local function AutopickupSpecific(item, name)
if not item.is_useless and item.artefact then
return true
end
end
add_autopickup_func(AutopickupSpecific)
}
# Tags: autopickup, expceptions, items, grab, unidentified
#####################
##################### End of autopickup
#####################
#####################
##################### Ignore log messages
#####################
ignore := runrest_ignore_message
ignore += Jiyva gurgles merrily
ignore += Jiyva appreciates your sacrifice
ignore += Jiyva says: Divide and consume
ignore += You hear.*splatter
ignore += You feel.*sick
ignore += disappears in a puff of smoke
ignore += engulfed in a cloud of smoke
ignore += standing in the rain
ignore += engulfed in white fluffiness
ignore += safely over a trap
ignore += A.*toadstool withers and dies
ignore += toadstools? grow
ignore += You walk carefully through the
ignore += grinding sound
ignore += contamination has completely
ignore += chunks of flesh in your inventory.*rotted away
ignore += rod.*has recharged
ignore += your breath back
ignore += the plant is engulfed
ignore += the walls burn your
ignore += the wall burns your
ignore += absorbed by ash
ignore += .*quivers
ignore += .*jiggles
# Tags: log, messages, ignore, runrest
#####################
##################### End of ignore
#####################
#####################
##################### Stop log messages
#####################
show_more = false
stop := runrest_stop_message
stop += Your transformation is almost over
# lichform, transformation, almost, over, transmutation, poison
#####################
##################### End of stop
#####################
#####################
##################### Force 'more' message events
#####################
# force("regex", true|false)
# Where true means "add" and false "remove"
{
--##################### Force more function
function force(rng, t)
if t then
Cmd("force_more_message += "..rng)
else
Cmd("force_more_message -= "..rng)
end
end
force("Trog sends monsters to punish you", true)
force(".*skill increases.*", true)
force(".*LOW HITPOINT.*", true)
force(".*MASSIVE.*", true)
force("Your transformation is almost over.", true)
force("seraph.*into view", true)
force("You fail to use your ability", true)
force("You miscast", true)
force("You feel your control is inadequate", true)
force("Your surroundings flicker", true)
force("is wielding.*distortion", true)
force("sense of stasis", true)
force("You have reached level", true)
force("You have finished your manual of", true)
force("Agnes.*into view", true)
force("Aizul.*into view", true)
force("Antaeus.*into view", true)
force("Asmodeus.*into view", true)
force("Asterion.*into view", true)
force("Azrael.*into view", true)
force("Blork the orc.*into view", true)
force("Boris.*into view", true)
force("Cerebov.*into view", true)
force("Crazy Yiuf.*into view", true)
force("Dispater.*into view", true)
force("Dissolution.*into view", true)
force("Donald.*into view", true)
force("Dowan.*into view", true)
force("Duvessa.*into view", true)
force("Edmund.*into view", true)
force("the Enchantress.*into view", true)
force("Ereshkigal.*into view", true)
force("Erica.*into view", true)
force("Erolcha.*into view", true)
force("Eustachio.*into view", true)
force("Fannar.*into view", true)
force("Frances.*into view", true)
force("Frederick.*into view", true)
force("Gastronok.*into view", true)
force("Geryon.*into view", true)
force("Gloorx Vloq.*into view", true)
force("Grinder.*into view", true)
force("Grum.*into view", true)
force("Harold.*into view", true)
force("Ignacio.*into view", true)
force("Ijyb.*into view", true)
force("Ilsuiw.*into view", true)
force("Jessica.*into view", true)
force("Jorgrun.*into view", true)
force("Jory.*into view", true)
force("Joseph.*into view", true)
force("Josephine.*into view", true)
force("Khufu.*into view", true)
force("Kirke.*into view", true)
force("Lamia.*into view", true)
force("the Lernaean hydra.*into view", true)
force("Lom Lobon.*into view", true)
force("Louise.*into view", true)
force("Mara.*into view", true)
force("Margery.*into view", true)
force("Maud.*into view", true)
force("Maurice.*into view", true)
force("Menkaure.*into view", true)
force("Mennas.*into view", true)
force("Mnoleg.*into view", true)
force("Murray.*into view", true)
force("Natasha.*into view", true)
force("Nergalle.*into view", true)
force("Nessos.*into view", true)
force("Nikola.*into view", true)
force("Norris.*into view", true)
force("Pikel.*into view", true)
force("Plog.*into view", true)
force("Polyphemus.*into view", true)
force("Prince Ribbit.*into view", true)
force("Psyche.*into view", true)
force("Purgy.*into view", true)
force("Robin.*into view", true)
force("Roxanne.*into view", true)
force("the royal jelly.*into view", true)
force("Rupert.*into view", true)
force("Saint Roka.*into view", true)
force("the Serpent of Hell.*into view", true)
force("Sigmund.*into view", true)
force("Snorg.*into view", true)
force("Sonja.*into view", true)
force("Terence.*into view", true)
force("Tiamat.*into view", true)
force("Urug.*into view", true)
force("Vashnia.*into view", true)
force("Wiglaf.*into view", true)
force("Xtahua.*into view", true)
force(".*ghost of.*into view", true)
--##################### force_more by XL
function ForceByXL()
if you.xl() < 25 then
force("juggernaut.*into view", true)
force(".*distortion.*into view", true)
else
force("juggernaut.*into view", false)
force(".*distortion.*into view", false)
end
if you.xl() < 20 then
force(".*dragon.*into view", true)
force(".*ugly.*into view", true)
force("catoblepas.*into view", true)
else
force(".*dragon.*into view", false)
force(".*ugly.*into view", false)
force("catoblepas.*into view", false)
end
if you.xl() < 15 then
force(".*hydra.*into view", true)
force("dire elephant.*into view", true)
force("death yak.*into view", true)
force("ettin.*into view", true)
force(".*electrocution.*into view", true)
else
force(".*hydra.*into view", false)
force("dire elephant.*into view", false)
force("death yak.*into view", false)
force("ettin.*into view", false)
force(".*electrocution.*into view", false)
end
if you.xl() < 13 then
force("spiny frog.*into view", true)
force("hill giant.*into view", true)
else
force("spiny frog.*into view", false)
force("hill giant.*into view", false)
end
if you.xl() < 10 then
force("orc warrior.*into view", true)
force("orc priest.*into view", true)
force("ogre.*into view", true)
else
force("orc warrior.*into view", false)
force("orc priest.*into view", false)
force("ogre.*into view", false)
end
if you.xl() < 5 then
force("gnoll.*halberd.*into view", true)
else
force("gnoll.*halberd.*into view", false)
end
end
--##################### End of force_more by XL
--##################### force_more by resists
function ForceByRes()
if you.res_fire() <= 0 then
force(".*flaming.*into view", true)
force(".*fire.*into view", true)
else
force(".*flaming.*into view", false)
force(".*fire.*into view", false)
end
if you.res_cold() <= 0 then
force(".*freezing.*into view", true)
force(".*ice.*into view", true)
else
force(".*freezing.*into view", false)
force(".*ice.*into view", false)
end
if you.res_draining() <= 0 then
force(".*draining.*into view", true)
force(".*shadow.*into view", true)
else
force(".*draining.*into view", false)
force(".*shadow.*into view", false)
end
if you.res_shock() <= 0 then
force(".*electrocution.*into view", true)
force(".*storm.*into view", true)
else
force(".*electrocution.*into view", false)
force(".*storm.*into view", false)
end
if you.res_mutation() <= 0 and not you.god():find("Zin") then
force("neqoxec.*into view", true)
force("cacodemon.*into view", true)
force("shining eye.*into view", true)
force("orb of fire.*into view", true)
else
force("neqoxec.*into view", false)
force("cacodemon.*into view", false)
force("shining eye.*into view", false)
force("orb of fire.*into view", false)
end
end
--##################### End of force_more by resists
}
# Nested if statement doesn't seem to work here.
# Tags: force, more, force_more_message, resists, stats, XL
#####################
##################### End of force_more_message
#####################
#####################
##################### Auto change tile
#####################
{
--##################### Tile change function
function ChangeTile(tile)
Cmd("tile_player_tile = mons:"..tile)
end
--##################### Automatic tile change function
function AutoChangeTile()
if you.race() == "Hill Orc" then
if you.xl() < 5 then
ChangeTile("orc")
elseif you.xl() < 10 then
ChangeTile("orc priest")
elseif you.xl() < 15 then
ChangeTile("orc warrior")
elseif you.xl() < 20 then
ChangeTile("orc knight")
elseif you.xl() < 25 then
ChangeTile("orc warlord")
else
ChangeTile("saint roka")
end
elseif you.god():find("Jiyva") then
if you.xl() < 6 then
ChangeTile("ooze")
elseif you.xl() < 12 then
ChangeTile("acid blob")
elseif you.xl() < 18 then
ChangeTile("dissolution")
else
ChangeTile("the royal jelly")
end
elseif you.god():find("the Shining One") then
if you.xl() < 15 then
ChangeTile("cherub")
elseif you.xl() < 20 then
ChangeTile("angel")
elseif you.xl() < 24 then
ChangeTile("daeva")
else
ChangeTile("seraph")
end
elseif you.god():find("Zin") then
if you.xl() < 15 then
ChangeTile("cherub")
elseif you.xl() < 20 then
ChangeTile("angel")
elseif you.xl() < 24 then
ChangeTile("daeva")
else
ChangeTile("mennas")
end
elseif you.race() == "Troll" then
if you.xl() < 10 then
ChangeTile("purgy")
elseif you.xl() < 15 then
ChangeTile("snorg")
elseif you.xl() < 20 then
ChangeTile("deep troll")
else
ChangeTile("iron troll")
end
elseif you.god():find("Makhleb") then
if you.xl() < 5 then
ChangeTile("crimson imp")
elseif you.xl() < 13 then
ChangeTile("red devil")
elseif you.xl() < 18 then
ChangeTile("balrug")
elseif you.xl() < 24 then
ChangeTile("hell sentinel")
elseif you.race() == "high elf" or you.race() == "deep elf" or you.race() == "human" then
ChangeTile("asmodeus")
elseif you.race() == "ogre" or you.race() == "troll" or you.race() == "naga" or you.race() == "hill orc" then
ChangeTile("cerebov")
else
ChangeTile("pandemonium lord")
end
elseif you.god():find("Vehumet") or you.god():find("Sif muna") then
if you.xl() < 10 then
ChangeTile("wizard")
elseif you.xl() < 15 then
ChangeTile("dowan")
elseif you.xl() < 20 then
ChangeTile("hellbinder")
elseif you.xl() < 26 then
ChangeTile("wretched star")
else
ChangeTile("lom lobon")
end
end
end
--##################### End of AutoChangeTile function
}
# Tags: tile, autochange, player
#####################
##################### End of auto change tile
#####################
#####################
##################### Main loop
#####################
{
function ready()
SpeedrunMode()
-- Call HealthStatement() function to announce damage we got last turn.
HealthStatement()
-- Not assigned yet
PlayerUpdate()
PowerUpdate()
AttributesUpdate()
StatusUpdate()
-- Call ResistStatement() function to check if our resists changed.
if ResistStatement() then
ForceByRes()
end
-- Every new XL call functions that need only XL information to work.
if player["XL"] ~= earlierPlayer["XL"] then
earlierPlayer["XL"] = player["XL"]
AutopickupByXL()
ForceByXL()
PaintByXL()
AutoChangeTile()
end
end
}
#####################
##################### End of main loop
#####################
#####################
##################### Non-LUA mechanics
#####################
confirm_butcher = never
easy_eat_chunks = true
auto_eat_chunks = true
auto_sacrifice = true
rest_wait_both = true
travel_delay = -1
explore_delay = -1
rest_delay = -1
explore_stop = items,stairs,shops,altars,portals,branches,runed_doors
: if you.race() ~= "Merfolk" then
travel_avoid_terrain = deep water
: end
easy_unequip = true
equip_unequip = true
fire_order += inscribed
pickup_thrown = false
enable_recast_spell = true
show_gold_turns = true
show_game_turns = true
explore_wall_bias = 0
explore_improved = true
hp_warning = 40
mp_warning = 30
autofight_stop = 35
default_manual_training = true
{
--##################### Open skills window
player["turns"] = you.turns()
if player["turns"] == 0 then
crawl.sendkeys("m")
end
}
# Tags: hp, tab, autofight, warning, skills window, start,
#####################
##################### End of non-LUA mechanics
#####################
#####################
##################### Notes
#####################
note_all_skill_levels = true
user_note_prefix=--
dump_message_count = 50
dump_order = header, hiscore, stats, misc, mutations, inventory, spells, skills, overview, vaults, monlist, messages, action_counts, notes, turns_by_place, kills_by_place, kills
# Tags: dump, notes, order, prefix,
#####################
##################### End of notes
#####################