# TEAMCAPTAIN Leszczynek
##### Crawl Init file ###############################################
# For descriptions of all options, as well as some more in-depth information
# on setting them, consult the file
# options_guide.txt
# in your /docs directory. If you can't find it, the file is also available
# online at:
# https://github.com/crawl/crawl/blob/master/crawl-ref/docs/options_guide.txt
#
# Crawl uses the first file of the following list as its option file:
# * init.txt in the -rcdir directory (if specified)
# * .crawlrc in the -rcdir directory (if specified)
# * init.txt (in the Crawl directory)
# * ~/.crawl/init.txt (Unix only)
# * ~/.crawlrc (Unix only)
# * ~/init.txt (Unix only)
# * settings/init.txt (in the Crawl directory)
##### Some basic explanation of option syntax #######################
# Lines beginning with '#' are comments. The basic syntax is:
#
# field = value or field.subfield = value
#
# Only one specification is allowed per line.
#
# The terms are typically case-insensitive except in the fairly obvious
# cases (the character's name and specifying files or directories when
# on a system that has case-sensitive filenames).
#
# White space is stripped from the beginning and end of the line, as
# well as immediately before and after the '='. If the option allows
# multiple comma/semicolon-separated terms (such as
# autopickup_exceptions), all whitespace around the separator is also
# trimmed. All other whitespace is left intact.
#
# There are three broad types of Crawl options: true/false values (booleans),
# arbitrary values, and lists of values. The first two types use only the
# simple =, with later options - which includes your options that are different
# from the defaults - overriding earlier ones. List options allow using +=, ^=,
# -=, and = to append, prepend, remove, and reset, respectively. Usually you will
# want to use += to add to a list option. Lastly, there is := which you can use
# to create an alias, like so:
# ae := autopickup_exceptions
# From there on, 'ae' will be treated as if it you typed autopickup_exceptions,
# so you can save time typing it.
#
##### Other files ###################################################
# You can include other files from your options file using the 'include'
# option. Crawl will treat it as if you copied the whole text of that file
# into your options file in that spot. You can uncomment some of the following
# lines by removing the beginning '#' to include some of the other files in
# this folder.
# Some useful, more advanced options, implemented in LUA.
# include = advanced_optioneering.txt
# Alternative vi bindings for Dvorak users.
# include = dvorak_command_keys.txt
# Alternative vi bindings for Colemak users.
# include = colemak_command_keys.txt
# Override the vi movement keys with a non-command.
# include = no_vi_command_keys.txt
# Turn the shift-vi keys into safe move, instead of run.
# include = safe_move_shift.txt
##### Ancient versions ##############################################
# If you're used to the interface of ancient versions of Crawl, you may
# get back parts of it by uncommenting the following options:
# include = 034_command_keys.txt
# And to revert monster glyph and colouring changes:
# include = 034_monster_glyphs.txt
# include = 052_monster_glyphs.txt
# include = 060_monster_glyphs.txt
# include = 071_monster_glyphs.txt
# include = 080_monster_glyphs.txt
# include = 0.9_monster_glyphs.txt
# include = 0.12_monster_glyphs.txt
# include = 0.13_monster_glyphs.txt
# include = 0.14_monster_glyphs.txt
# Logs chat messages into the notes
note_chat_messages = true
<
function ready()
AnnounceDamage()
--SpoilerAlert()
OpenSkills()
end
>
####################
# Included RcFiles #
####################
# Just Message colors
# include += HDAMessageColors.rc
# Just Item colors
# include += HDAItemColors.rc
# Monster warning messages -- disabled by default
# Uncomment the next line and the call to SpoilerAlert() in the ready function to use it
# include += SpoilerAlert.rc
# The damage announcement messages
#include += HDamage.rc
# Ask HilariousDeathArtist to fix things
# To use this you must add have a call to AnnounceDamage() in the ready() function like below:
# This is important if you override this ready() function
<
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
>
# Force More prompts
#include += HDAForceMore.rc
#####################
# Table of Contents #
#####################
# 1. Dungeon Features
# 2. Failure
# 3. Bad Things
# 4. Translocations
# 5. Expiring Effects
# 6. Religion
# 7. Hell Effects
# 8. Monsters
# Set Alias
more := force_more_message
####################
# Dungeon Features #
####################
# Abyssal Rune
more += Found .* abyssal rune of Zot
# Entrances, Exits, and Arrivals
more += Found a frozen archway
more += Found a gateway leading out of the Abyss
more += Found a labyrinth entrance
more += Found a staircase to the Ecumenical Temple
more += The mighty Pandemonium lord.*resides here
# Portal Timers
more += distant snort
more += interdimensional caravan
more += invites you to visit
more += oppressive heat
more += roar of battle
more += sound of rushing water
more += The drain falls to bits
more += There is an entrance to a bailey on this level
more += tolling of a bell
more += wave of frost
more += You hear the drain falling apart
more += You hear.*crackle.*magical portal
more += You hear.*crackling.*archway
more += You hear.*creaking.*(oriflamme|portcullis)
more += You hear.*hiss.*sand
more += You hear.*rumble.*avalanche
more += You hear.*rusting.*drain
more += You hear.*ticking.*clock
# Traps
more += (blundered into a|invokes the power of) Zot
more += A huge blade swings out and slices into you
stop += An alarm trap emits a blaring wail
stop += found a zot trap
stop += hear a soft click
more += The power of Zot is invoked against you
more += You (become entangled|are caught) in (a|the) (web|net)
more += You fall through a shaft
more += You stumble into the trap
# Other
more += Another plant grows acid sacs
more += One of the plants suddenly grows acid sacs
more += The walls and floor vibrate strangely for a moment
more += You are suddenly pulled into a different region
more += You have a vision of.*gates?
###########
# Failure #
###########
more += do not work when you're silenced
more += sense of stasis
more += Something interferes with your magic
more += The rod doesn't have enough magic points
more += The spell fizzles
more += The writing blurs in front of your eyes
more += The.*is unaffected
more += This potion can/'t work under stasis
more += This wand has no charges
more += too hungry
more += You are held in a net
more += You are too injured to fight blindly
more += You can't gag anything down
more += You can't unwield
more += You cannot cast spells when silenced
more += You cannot cast spells while unable to breathe
more += You cannot teleport right now
more += You don't have any such object
more += You don't have enough magic
more += You don't.* that spell
more += You fail to use your ability
more += You have no appropriate body parts free
more += You have no means to grasp a wand firmly enough
more += You haven't enough magic at the moment
more += You miscast
more += Your amulet of stasis
more += Your attempt to break free
more += Your body armour is too heavy
#############################
# Bad and Unexpected Things #
#############################
# Bad things happening to you
more += corrodes your equipment
more += Your corrosive artefact corrodes you
more += are blown away by the wind
more += dispelling energy hits you
more += infuriates you
more += lose consciousness
more += mark forms upon you
more += MASSIVE DAMAGE
more += Ouch! That really hurt!
more += silver sears you
more += Space bends around you
more += Space warps horribly around you
more += surroundings become eerily quiet
more += Terrible wounds (open|spread) all over you
more += The acid corrodes your
more += The air around.*erupts in flames
more += The air twists around and violently strikes you in flight
more += You shudder from the earth-shattering force
more += The arrow of dispersal hits you[^r]
more += The barbed spikes become lodged in your body
more += The barbed spikes dig painfully into your body as you move
more += The blast of calcifying dust hits you[^r]
more += The poison in your body grows stronger
more += The pull of.*song draws you forwards
more += The.*engulfs you in water
more += The.*grabs you[^r]
more += You (are|feel) drained
more += You are (blasted|electrocuted)
more += You are blown backwards
more += You are burned terribly
more += You are encased in ice
more += You are engulfed in calcifying dust
more += You are engulfed in dark miasma
more += You are engulfed in mutagenic fog
more += You are knocked back
more += You are mesmerised
more += You are slowing down
more += You are trampled
more += You convulse
more += You feel a (horrible|terrible) chill
more += You feel haunted
more += You feel less vulnerable to poison
more += You feel your attacks grow feeble
more += You feel your flesh.*rot
more += You feel your power drain away
more += You feel your power leaking away
more += You feel yourself grow more vulnerable to poison
more += You stumble backwards
more += You.*re (confused|more confused|too confused)
more += You.*re (poisoned|more poisoned|lethally poisoned)
more += Your body is wracked with pain
more += Your damage is reflected back at you
more += Your limbs are stiffening
more += Your magical defenses are stripped away
more += Your?.*suddenly stops? moving
# Monsters doing bad things
more += A tree reaches out and hits you!
more += Agitated ravens fly out from beneath the
more += begins to recite a word of recall
more += Being near the torpor snail leaves you feeling lethargic
more += blows on a signal horn
more += cast banishment
more += cast paralyse
more += cast Torment
more += goes berserk
more += The moth of wrath goads something on
more += is duplicated
more += is no longer invulnerable
more += Its appearance distorts for a moment
more += Mara seems to draw the.*out of itself
more += Mara shimmers
more += Miasma billows from the
more += shoots a curare
more += stands defiantly in death's doorway
more += steals.*your
more += swoops through the air toward you
more += The forest starts to sway and rumble
more += The jumping spider pounces on you [^but]
more += The octopode crusher throws you
more += The shadow imp is revulsed by your support of nature
more += The water nymph flows with the water
more += The.*offers itself to Yredelemnul
more += The.*seems to speed up
more += The.*shudders
more += There is a horrible\, sudden wrenching feeling in your soul
more += Vines fly forth from the trees!
more += You are hit by a branch
more += You feel you are being watched by something
more += Your magical defenses are stripped away
more += \'s.*reflects
# Unexpected situations
more += A magical barricade bars your way
more += Done waiting
more += doors? slams? shut
more += It doesn't seem very happy
more += Mutagenic energies flood into your body
more += Some monsters swap places
more += (starving|devoid of blood)
more += (The|Your).*falls away!
more += The divine light dispels your darkness!
more += The walls disappear
more += There is a sealed passage
more += You are wearing\:
more += You can now
more += You cannot afford.*fee
more += You feel (dopey|clumsy|weak)
more += You feel a genetic drift
more += You feel monstrous
more += You feel your rage building
more += You have disarmed
more += You have finished your manual
more += You have reached level
more += You need to eat something NOW
more += You smell decay. (^Yuck!)
more += You stop (a|de)scending the stairs
more += You turn into a fleshy mushroom
more += Your body shudders with the violent release of wild energies
more += Your guardian golem overheats
more += your magic stops regenerating
more += Your scales start
more += your.*devoured
more += Your?.*can no longer
more += Green shoots are pushing up through the earth
# Things getting better
stop += contamination has completely
more += You can move again
more += You slip out of the net
more += You.*and break free
more += Your fit of retching subsides
more += seems mollified
# Ghouls
: if you.race() == "Ghoul" then
stop += smell.*(rott(ing|en)|decay)
stop += something tasty in your inventory
: end
##################
# Translocations #
##################
# Teleporting
more += You blink
more += You.*teleport [^f]
more += You feel strangely (unstable|stable)
more += You feel your translocation being delayed
more += Your surroundings flicker
more += Your surroundings seem slightly different
more += Your surroundings suddenly seem different
# -Tele
more += You cannot blink right now
more += You cannot teleport right now
more += You feel.*firmly anchored in space
more += You are no longer firmly anchored in space
# -cTele
more += You feel your control is inadequate
####################
# Expiring Effects #
####################
# God Abilities
# Divine Shield (The Shining One)
Your divine shield starts to fade.
Your divine shield fades away.
# Jelly Prayer (Jiyva)
Your prayer is over.
# Mirror Damage (Yredelemnul)
more += dark mirror aura disappears
# Player Spells
# Aura of Abjuration
stop += Your aura of abjuration expires
# Control Teleport
stop += you feel uncertain
# Death's Door
more += time is quickly running out
more += life is in your own
# Enslavement
more += is no longer charmed
# Flight
more += You are starting to lose your buoyancy
stop += You lose control over your flight
# Haste
more += Your extra speed is starting to run out
more += You feel yourself slow down
# Invisibility
more += You feel more conspicuous
more += You flicker for a moment
more += You flicker back
# Ozocubu's Armour and Condensation Shield
more += Your icy (shield|armour) evaporates
more += Your.*(shield|armour) melts away
# Phase Shift
more += You feel closer to the material plane
more += You are firmly grounded in the material plane once more
# Repel/Deflect
stop += missiles spell is about to expire
more += You feel less protected from missiles
# Shroud of Golubria
stop += shroud begins to fray
stop += shroud unravels
more += Your shroud falls apart
# Silence
more += Your hearing returns
# Swiftness
stop += start to feel a little slower
more += You feel sluggish
# Transmutations
more += Your transformation is almost over
more += You have a feeling this form
more += Your skin feels tender
more += You feel yourself come back to life
# Other
# Potion of Resistance
more += You start to feel less resistant.
more += Your resistance to elements expires
############
# Religion #
############
# Gifts or abilities are ready
# Dithmenos
more += You are shrouded in an aura of darkness
more += You now sometimes bleed smoke
more += You.*no longer.*bleed smoke
more += Your shadow no longer tangibly mimics your actions
more += Your shadow now sometimes tangibly mimics your actions
# Gozag
more += will now duplicate a non-artefact item
# Jiyva
more += will now unseal the treasures of the Slime Pits
# Kikubaaqudgha
more += Kikubaaqudgha will now enhance your necromancy
# Lugonu
more += Lugonu will now corrupt your weapon
# Qazlal
more += resistances upon receiving elemental damage
more += You are surrounded by a storm which can block enemy attacks
# Ru
more += you are ready to make a new sacrifice
# Sif Muna
more += Sif Muna is protecting you from the effects of miscast magic
# The Shining One
more += The Shining One will now bless
# Zin
more += will now cure all your mutations
# You Screwed Up
more += is no longer ready
# Poor Decisions
more += You really shouldn't be using
# Wrath
more += Nemelex gives you another card to finish dealing
more += Fedhas invokes the elements against you
more += Lugonu sends minions to punish you
more += Okawaru sends forces against you
more += wrath finds you
# Xom Effects
more += staircase.*moves
more += is too large for the net to hold
# Other
more += Jiyva alters your body
: if you.god() == "Xom" then
more += god:
: end
: if not string.find(you.god(), "Jiyva") then
more += splits in two
:end
################
# Hell Effects #
################
more += A gut-wrenching scream fills the air
more += Brimstone rains from above
more += Die\, mortal
more += Leave now\, before it is too late
more += Something frightening happens
more += Trespassers are not welcome here
more += We do not forgive those who trespass against us
more += We have you now
more += You do not belong in this place
more += You feel a terrible foreboding
more += You feel lost and a long\, long way from home
more += You hear diabolical laughter
more += You hear words spoken in a strange and terrible language
more += You sense a hostile presence
more += You sense an ancient evil watching you
more += You shiver with fear
more += You smell brimstone
more += You suddenly feel all small and vulnerable
more += You will not leave this place
############
# Monsters #
############
# Arriving Unexpectedly
more += appears in a shower of sparks
more += appears out of thin air
more += comes (up|down) the stairs
more += Something appears in a flash of light
more += The.*is a mimic
more += You sense the presence of something unfriendly
more += The.*answers the.*call
more += Wisps of shadow swirl around
more += Shadows whirl around
# Item Use
more += drinks a potion
more += evokes.*(amulet|ring)
more += reads a scroll
more += zaps a (wand|rod)
# Terrible Monsters
more += 's ghost.*(comes? into view|opens the)
more += A player ghost.*(comes? into view|opens the)
more += boggarts?.*(comes? into view|opens the)
more += curse skull.*comes? into view
more += fiend.*(comes? into view|opens the)
more += flayed ghost.*(comes? into view|opens the)
more += giant eyeball.*comes? into view
more += giant orange brains?.*(comes? into view|opens the)
more += giant spore.*comes? into view
more += hellion.*(comes? into view|opens the)
more += ironbrand convoker.*(comes? into view|opens the)
more += Lich.*(comes? into view|opens the)
more += orange crystal statue.*comes? into view
more += shadow demons?.*(comes? into view|opens the)
more += silver statue.*comes? into view
more += tormentor.*(comes? into view|opens the)
# Uniques
more += 27-headed.*(comes? into view|opens the)
more += Agnes.*(comes? into view|opens the)
more += Aizul.*(comes? into view|opens the)
more += Antaeus.*(comes? into view|opens the)
more += Arachne.*(comes? into view|opens the)
more += Asmodeus.*(comes? into view|opens the)
more += Asterion.*(comes? into view|opens the)
more += Azrael.*(comes? into view|opens the)
more += Blork the orc.*(comes? into view|opens the)
more += Boris.*(comes? into view|opens the)
more += Cerebov.*(comes? into view|opens the)
more += Crazy Yiuf.*(comes? into view|opens the)
more += Dispater.*(comes? into view|opens the)
more += Dissolution.*(comes? into view|opens the)
more += Donald.*(comes? into view|opens the)
more += Dowan.*(comes? into view|opens the)
more += Duvessa.*(comes? into view|opens the)
more += Edmund.*(comes? into view|opens the)
more += Ereshkigal.*(comes? into view|opens the)
more += Erica.*(comes? into view|opens the)
more += Erolcha.*(comes? into view|opens the)
more += Eustachio.*(comes? into view|opens the)
more += Fannar.*(comes? into view|opens the)
more += Frances.*(comes? into view|opens the)
more += Francis.*(comes? into view|opens the)
more += Frederick.*(comes? into view|opens the)
more += Gastronok.*(comes? into view|opens the)
more += Geryon.*(comes? into view|opens the)
more += Gloorx Vloq.*(comes? into view|opens the)
more += Grinder.*(comes? into view|opens the)
more += Grum.*(comes? into view|opens the)
more += Harold.*(comes? into view|opens the)
more += Ignacio.*(comes? into view|opens the)
more += Ijyb.*(comes? into view|opens the)
more += Ilsuiw.*(comes? into view|opens the)
more += Jessica.*(comes? into view|opens the)
more += Jorgrun.*(comes? into view|opens the)
more += Jory.*(comes? into view|opens the)
more += Joseph.*(comes? into view|opens the)
more += Josephine.*(comes? into view|opens the)
more += Jozef.*(comes? into view|opens the)
more += Khufu.*(comes? into view|opens the)
more += Kirke.*(comes? into view|opens the)
more += Lamia.*(comes? into view|opens the)
more += Lom Lobon.*(comes? into view|opens the)
more += Louise.*(comes? into view|opens the)
more += Mara.*(comes? into view|opens the)
more += Margery.*(comes? into view|opens the)
more += Maud.*(comes? into view|opens the)
more += Maurice.*(comes? into view|opens the)
more += Menkaure.*(comes? into view|opens the)
more += Mennas.*(comes? into view|opens the)
more += Mnoleg.*(comes? into view|opens the)
more += Murray.*(comes? into view|opens the)
more += Natasha.*(comes? into view|opens the)
more += Nergalle.*(comes? into view|opens the)
more += Nessos.*(comes? into view|opens the)
more += Nikola.*(comes? into view|opens the)
more += Norris.*(comes? into view|opens the)
more += Pikel.*(comes? into view|opens the)
more += Polyphemus.*(comes? into view|opens the)
more += Prince Ribbit.*(comes? into view|opens the)
more += Psyche.*(comes? into view|opens the)
more += Purgy.*(comes? into view|opens the)
more += Roxanne.*(comes? into view|opens the)
more += Rupert.*(comes? into view|opens the)
more += Saint Roka.*(comes? into view|opens the)
more += Sigmund.*(comes? into view|opens the)
more += Snorg.*(comes? into view|opens the)
more += Sojobo.*(comes? into view|opens the)
more += Sonja.*(comes? into view|opens the)
more += Terence.*(comes? into view|opens the)
more += The Lernaean hydra.*(comes? into view|opens the)
more += The royal jelly.*(comes? into view|opens the)
more += The Serpent of Hell.*(comes? into view|opens the)
more += Tiamat.*(comes? into view|opens the)
more += Urug.*(comes? into view|opens the)
more += Vashnia.*(comes? into view|opens the)
more += Wiglaf.*(comes? into view|opens the)
more += Xtahua.*(comes? into view|opens the)
# Message and Item colors
#include += HDAColors.rc
# The ===HDAtravel autotravel replacement macro
#include += HDAtravel.rc
message_colour += mute:you're not good enough to have a special ability
message_colour += mute:@corpse
-- To use this create a macro with the following function call in game
-- ===HDAtravel
-- This file can be included in your rc file with the following line:
-- include += HDAtravel.rc
# This still has plenty of bugs, submit them at:
# https://github.com/HilariousDeathArtist/DCSSConfigFile
# or find me on crawl.s-z.org
confirm_butcher = never
easy_eat_chunks = true
auto_eat_chunks = true
auto_drop_chunks = yes
easy_eat_contaminated = true
autoinscribe += bread ration:@e1
autoinscribe += meat ration:@e2
autoinscribe += chunk:@w0
autoinscribe += staff of energy:@w1
##################
# HDAtravel #
##################
-- Rests up to at least 75% hp (or missing at least 30hp) and 50% mp (or missing at least 20mp)
-- Eats chunks automatically, handled by auto_eat_chunks interface option
-- Travels to the nearest corpse if we have no chunks and are at Very Hungry or Hungry or using Gourmand and at Full
-- Automatically chops valid corpses if we are standing on them and we have no chunks
-- Will stop autotravel at Near Starving
-- Channels MP if you have staff of energy or worship Sif when you have extra chunks
-- Casts regen out of combat if you have spare chunks and are missing hp
-- TODO: better detection of non-edible corpses before standing on them
-- TODO: Fix up for Vampire, Ghoul, and possibly Spriggan/Mummy
-- NOTE: If you don't have rP you will still chop poisonous corpses, but not pick up their chunks
: function HDAtravel()
: local mp, max_mp = you.mp()
: local hp, max_hp = you.hp()
: local first_monster = next(getMonsterList())
: local already_checked = (no_results() or dont_know_how_to_get_there())
: local you_are_barbed = (have_barbs() and not removed_barbs())
: local is_safe = (first_monster == nil)
: local missing_mp = (mp < max_mp)
: local missing_hp = (hp < max_hp)
: local need_to_recover = should_rest(hp, mp, max_hp, max_mp)
: local have_no_chunks = have_no_chunks()
: local you_are_sif = string.find(you.god(), "Sif")
: local you_are_yred = string.find(you.god(), "Yred")
: local you_are_zin = string.find(you.god(), "Zin")
: local you_are_good = string.find(you.god(), "Shining") or string.find(you.god(), "Elyvilon") or you_are_zin
: local sacrifice_god = you_worship_sacrifice_god()
: local you_are_mummy = string.find(you.race(), "Mummy")
: local you_are_vampire = string.find(you.race(), "Vampire")
: local you_are_bloodless = you.hunger_name() == "bloodless"
: local you_are_ghoul = string.find(you.race(), "Ghoul")
: local you_are_bloodless = you.hunger_name() == "bloodless"
: local you_do_not_eat = string.find(you.race(), "Spriggan") or you_are_mummy
: local lichform = string.find(you.transform(), "lich")
: local bladehands = string.find(you.transform(), "blade")
: local dragonform = string.find(you.transform(), "dragon")
: local melded_weapon = (bladehands or dragonform)
: local you_are_regen = you.regenerating()
: local you_know_sublimation = known_spells["Sublimation of Blood"] and (spells.fail("Sublimation of Blood") < 20) and (mp>3)
: local you_know_animate_skeleton = known_spells["Animate Skeleton"] and (spells.fail("Animate Skeleton") < 20) and (mp>1)
: local you_know_animate_dead = known_spells["Animate Dead"] and (spells.fail("Animate Dead") < 20) and (mp>4)
: local chunks_are_equipped = is_weapon("chunk")
: local distort_weapon = is_weapon("distort")
: local vamp_weapon = is_weapon("vamp") and not chunks_are_equipped
: local have_a_weapon = weapon_in_inventory()
: local gourmand_and_hungry = you_are_gourmand() and not (you_are_very_full() or you_are_engorged() or you_are_ghoul)
: local ghoul_missing_hp = you_are_ghoul and ((hp < (max_hp - 5)) or you.rot() > 0)
: local want_to_eat = (you_are_hungry() or gourmand_and_hungry or ghoul_missing_hp) and not you_do_not_eat
: local have_spare_chunks = not have_no_chunks and not you_are_hungry()
: local you_have_staff_of_energy = is_in_inventory("staff of energy")
: local have_potion_of_blood = is_in_inventory("potion of blood") or is_in_inventory("potions of blood")
: local staff_of_energy_is_equipped = is_weapon("staff of energy")
: local staff_of_power_is_equipped = is_weapon("staff of power")
: local staff_of_energy_letter = find_item_letter("staff of energy")
: local chunks_letter = find_item_letter("chunk")
: local you_are_hungerless = you_are_mummy or lichform
: local no_food_issues = (you_are_hungerless or have_spare_chunks)
: local should_channel_mp = ((max_mp - mp) > 5) and no_food_issues
: local can_cast_regen = known_spells["Regeneration"] and (mp>3) and (spells.fail("Regeneration") < 20)
: local you_have_regen_ring = is_in_inventory("regeneration")
: local regen_ring_letter = find_item_letter("regeneration")
: local regen_ring_is_equipped = is_ring("regeneration")
: local should_regen_hp = (not (you_are_good or you_are_regen or lichform)) and ((hp/max_hp) < 0.80) and (you_have_regen_ring or can_cast_regen) and not you_are_bloodless
: local should_sublimate = (not (you_are_good or lichform)) and ((mp/max_mp) < 0.60) and you_know_sublimation and mp>2 and ((hp/max_hp) > 0.95)
: local should_animate_skeleton = (not you_are_good) and you_know_animate_skeleton and mp>1 and (not can_not_animate())
: local should_animate_dead = (not you_are_good) and you_know_animate_dead and mp>4 and (not can_not_animate())
: local you_want_spare_chunks = (not (have_spare_chunks or you_do_not_eat)) and (can_cast_regen or you_have_staff_of_energy or you_are_sif)
: local you_want_chunks = (not you_are_hungerless and (number_of_chunks() == 0) and (want_to_eat or you_want_spare_chunks)) or you_are_vampire or (you_are_ghoul and number_of_chunks() < 4)
: --crawl.mpr(string.format("you.piety_rank() is: %s", you.piety_rank()))
: --crawl.mpr(string.format("you_want_chunks is: %s", you_want_chunks and "True" or "False"))
: --crawl.mpr(string.format("want_to_eat is: %s", want_to_eat and "True" or "False"))
: --crawl.mpr(string.format("number_of_chunks is: %s", number_of_chunks()))
: --crawl.mpr(string.format("ghoul_missing_hp is: %s", ghoul_missing_hp and "True" or "False"))
: --crawl.mpr(string.format("you.hunger_name() is: %s", you.hunger_name()))
: --crawl.mpr(string.format("have_spare_chunks is: %s", have_spare_chunks and "True" or "False"))
: --crawl.mpr(string.format("can_cast_regen is: %s", can_cast_regen and "True" or "False"))
: --crawl.mpr(string.format("you_are_not_ghoul is: %s", you_are_not_ghoul and "True" or "False"))
: --crawl.mpr(string.format("you_want_spare_chunks is: %s", you_want_spare_chunks and "True" or "False"))
: --crawl.mpr(string.format("you_are_hungerless is: %s", you_are_hungerless and "True" or "False"))
: --crawl.mpr(string.format("have_no_chunks is: %s", have_no_chunks and "True" or "False"))
: if (is_safe) then
: if you_are_barbed then
: rest()
: elseif should_sublimate and not (you_are_vampire or lichform) then
: crawl.mpr("Autocasting Sublimation of Blood.")
: sendkeys('zm')
: elseif should_channel_mp and you_are_sif and (you.piety_rank() > 0) then
: crawl.mpr("Autochanneling using Sif.")
: sendkeys('aa')
: elseif should_regen_hp and can_cast_regen then
: crawl.mpr("Autocasting Regen.")
: --This assumes casting regen is bound to zr
: sendkeys('zr')
: elseif (not melded_weapon) and (should_channel_mp and you_have_staff_of_energy and no_food_issues) and (not (distort_weapon or vamp_weapon)) and you_are_not_felid() then
: if not staff_of_energy_is_equipped then
: crawl.mpr("Switching to staff of energy.")
: sendkeys('w1')
: end
: crawl.mpr("Autochanneling using staff of energy.")
: sendkeys('v')
: elseif (weapon_in_slot_a() or uses_unarmed()) and (no_weapon() and have_a_weapon) or (staff_of_energy_is_equipped and (not (staff_of_energy_letter == 'a')) or (chunks_are_equipped and (not (chunks_letter == 'a')))) then
: if uses_unarmed() then
: crawl.mpr("Switching to unarmed.")
: sendkeys('w-')
: else
: crawl.mpr("Switching to main weapon.")
: sendkeys('wa')
: end
: elseif want_to_eat and number_of_chunks() > 0 then
: crawl.mpr("Autoeating chunks.")
: sendkeys('e')
: elseif you_want_chunks and on_corpses() and not on_chunks() and (not can_not_butcher()) then
: if should_animate_skeleton then
: crawl.mpr("Autocasting Animate Skeleton for chunks.")
: sendkeys('zA')
: else
: crawl.mpr("Autochopping corpse.")
: sendkeys('c')
: end
: elseif you_want_chunks and (not (you_are_zin or need_to_recover or on_chunks() or on_corpses() or already_checked)) then
: crawl.mpr("You may need something to eat soon, looking for food.")
: find_corpses()
: elseif you_are_starving_or_near() and (number_of_chunks == 0) and (not (on_chunks() or on_corpses())) then
: local have_bread = is_in_inventory("bread ration")
: local have_meat = is_in_inventory("meat ration")
: if have_bread or have_meat then
: local result = crawl.yesnoquit("Eat a ration?", true, 'e')
: if result == 1 and have_bread then
: sendkeys('e1')
: elseif result == 1 then
: sendkeys('e2')
: elseif result == 0 then
: autoexplore()
: end
: if not (is_in_inventory("bread ration") or is_in_inventory("meat ration")) then
: crawl.mpr("That was your last ration! You should go get more.")
: end
: else
: crawl.mpr("No rations left! You should look for food.")
: end
: elseif need_to_recover and not you_are_starving() then
: if you_are_bloodless and have_potion_of_blood then
: crawl.mpr("Autoquaffing potion of blood.")
: sendkeys('q1')
: else
: rest()
: end
: elseif you_are_yred and (you.piety_rank() >= 3) and (item_in_view("corpse") or item_in_view("skeleton") or on_corpses()) and not recently_mass_animated() then
: crawl.mpr("Autocasting Mass Animate Remains.")
: sendkeys('aa')
: elseif (not sacrifice_god) and (item_in_view("corpse") or item_in_view("skeleton") or on_corpses()) and should_animate_dead and not already_animated() then
: crawl.mpr("Autocasting Animate Dead.")
: sendkeys('zA')
: elseif (not sacrifice_god) and on_corpses() and should_animate_skeleton then
: crawl.mpr("Autocasting Animate Skeleton.")
: sendkeys('zA')
: elseif you_are_yred and (you.piety_rank() >= 1) and on_corpses() then
: crawl.mpr("Autocasting Animate Remains.")
: sendkeys('aa')
: else
: --This does the general travelling
: autoexplore()
: end
: else
: --This will provide the "foo is nearby" message
: autoexplore()
: end
: end
<
function sendkeys(command)
crawl.flush_input()
crawl.sendkeys(command)
coroutine.yield(true)
crawl.flush_input()
end
function should_rest(hp, mp, max_hp, max_mp)
local you_are_mummy = string.find(you.race(), "Mummy")
local you_are_deep_dwarf = string.find(you.race(), "Deep Dwarf")
return (mp < (max_mp*0.50) or ((max_mp-mp) > 20)
or ((hp < (max_hp*0.80)) or ((max_hp-hp) > 30)
and not you_are_deep_dwarf)
or you.slowed()
or you.poisoned()
or you.confused()
or you.exhausted()
or (((hp < max_hp) or (mp < max_mp)) and you_are_mummy))
end
-- Hungry, Very Hungry, Near Starving, Starving
function you_are_hungry()
return not you_are_not_hungry() and ((string.find(you.hunger_name(), "hungry")) or you_are_starving_or_near())
end
-- Normal Satiation
function you_are_not_hungry()
return (string.find(you.hunger_name(), "not hungry"))
end
-- Engorged
function you_are_engorged()
return (string.find(you.hunger_name(), "completely stuffed"))
end
-- Very full
function you_are_very_full()
return (string.find(you.hunger_name(), "very full"))
end
-- Near Starving
function you_are_near_starving()
return (string.find(you.hunger_name(), "near starving"))
end
-- Near Starving, Starving
function you_are_starving_or_near()
return (string.find(you.hunger_name(), "starving"))
end
-- Starving
function you_are_starving()
return you_are_starving_or_near() and not you_are_near_starving()
end
function autoexplore()
sendkeys('o')
end
function have_barbs()
return string.find(crawl.messages(10), escape("The barbed spikes become lodged in your body"))
or string.find(crawl.messages(10), escape("The barbed spikes dig painfully into your body as you move"))
end
function already_animated()
return string.find(crawl.messages(20), escape("Autocasting Animate Dead"))
end
function removed_barbs()
return string.find(crawl.messages(10), escape("You carefully extract the manticore spikes from your body"))
or string.find(crawl.messages(10), escape("The manticore spikes snap loose"))
end
function no_results()
return string.find(crawl.messages(10), escape("Can't find anything matching that"))
or string.find(crawl.messages(10), escape("You may need something to eat soon"))
end
function dont_know_how_to_get_there()
return string.find(crawl.messages(10), escape("know how to get there"))
or string.find(crawl.messages(10), escape("Have to go through"))
end
function can_not_animate()
return string.find(crawl.messages(10), escape("There is nothing here that can be animated"))
end
function can_not_bottle()
return string.find(crawl.messages(10), escape("There isn't anything to bottle here"))
end
function recently_mass_animated()
return string.find(crawl.messages(10), escape("Autocasting Mass Animate Remains"))
end
function can_not_butcher()
return string.find(crawl.messages(10), escape("anything suitable to butcher here"))
end
function can_not_eat_that()
return string.find(crawl.messages(10), escape("You can't eat that"))
--These strings don't seem to show up in messages
--or string.find(crawl.messages(10), escape("Not only inedible but also greatly harmful"))
--or string.find(crawl.messages(10), escape("It is caustic"))
end
function rest()
sendkeys('5')
end
function you_are_gourmand()
return you.gourmand() or (not you_are_not_ghoul()) or (not you_are_not_felid()) or (not you_are_not_troll()) or (string.find(you.race(), "Kobold"))
end
function have_no_chunks()
for it in inventory() do
if string.find(it.name(), "chunk") then
return false
end
end
return true
end
function have_rotten_chunks()
for it in inventory() do
if string.find(it.name(), "chunk") and string.find(it.name(), "rott") then
return false
end
end
return true
end
function number_of_chunks()
for it in inventory() do
--if string.find(it.name(), "chunk") then
--crawl.mpr(it.name() .." is edible: " .. (food.can_eat(it) and "True" or "False") .. " and dangerous: " .. (food.dangerous(it) and "True" or "False"))
--end
if string.find(it.name(), "chunk") and (not string.find(it.name(), "book")) and food.can_eat(it) and not food.dangerous(it) then
return it.quantity
end
end
return 0
end
function is_in_inventory(str)
for it in inventory() do
if string.find(it.name(), str) then
return true
end
end
return false
end
function weapon_in_inventory()
for it in inventory() do
if string.find(it.class(true), "weapon") then
return true
end
end
return false
end
function weapon_in_slot_a()
local it = items.inslot(0)
if it then
return string.find(it.class(true), "weapon")
else
return false
end
end
function find_item_letter(str)
for i = 0,51 do
it = items.inslot(i)
if it then
if string.find(it.name(), str) then
return items.index_to_letter(i)
end
end
end
return false
end
function you_worship_sacrifice_god()
return string.find(you.god(), "Trog")
--or string.find(you.god(), "Oka")
--or string.find(you.god(), "Makhleb")
or string.find(you.god(), "Beogh")
or string.find(you.god(), "Lugonu")
--or string.find(you.god(), "Nemelex")
end
function on_corpses()
local fl = you.floor_items()
for it in iter.invent_iterator:new(fl) do
if string.find(it.name(), "corpse")
and not string.find(it.name(), "rotting")
and not string.find(it.name(), "plague") then
return true
end
end
return false
end
function on_chunks()
for it in floor_items() do
if string.find(it.name(), "chunk") then
return true
else
return false
end
end
end
function you_are_carnivore()
return you.saprovorous()
end
function you_are_not_ghoul()
return not (string.find(you.race(), "Ghoul"))
end
function you_are_not_troll()
return not (string.find(you.race(), "Troll"))
end
function you_are_not_felid()
return not (string.find(you.race(), "Felid"))
end
function you_are_not_octopode()
return not (string.find(you.race(), "Octopode"))
end
function find_corpses()
local race = you.race()
local god = you.god()
local exclude_this = ""
if string.find(god, "Shining") then
exlude_this = race
end
sendkeys(string.char(6) .. "@corpse&&!!rott&&!!skel&&!!sky&&!!necrop&&!!ugly&&!!vampire&&!!corpse rot&&!!&&!!botono" .. exclude_this .. "\ra\r")
end
function inventory()
return iter.invent_iterator:new(items.inventory())
end
function floor_items()
return iter.invent_iterator:new(you.floor_items())
end
function no_weapon()
return (items.equipped_at("Weapon") == nil) and not uses_unarmed()
end
function uses_unarmed()
return not you_are_not_ghoul()
or not you_are_not_troll()
or not you_are_not_felid()
or (you.skill("Unarmed Combat") >= 3)
end
function is_weapon(str)
local weapon = items.equipped_at("Weapon")
if weapon then
return string.find(weapon.name(), str)
else
return false
end
end
function is_ring(str)
local ring1 = items.equipped_at("Left Ring")
local ring2 = items.equipped_at("Right Ring")
if ring1 and ring2 then
return string.find(ring1.name(), str) or string.find(ring2.name(), str)
elseif ring1 then
return string.find(ring1.name(), str)
elseif ring2 then
return string.find(ring2.name(), str)
else
return false
end
end
function item_in_view(str)
local x,y
for x = -8,8 do
for y = -8,8 do
if not (x == 0 and y == 0) then
local pile = items.get_items_at(x,y)
if pile ~= nil then
for it in iter.invent_iterator:new(pile) do
if string.find(it.name(), str) and you.see_cell_no_trans(x,y) then
return true
end
end
end
end
end
end
return false
end
-- Returns a table where the key is the monster description and value is the total number of that mob in your vision
function getMonsterList()
local monsters = {}
for x = -7,7 do
for y = -7,7 do
m = monster.get_monster_at(x, y)
local attitude_hostile = 0
if m and (m:attitude() == attitude_hostile) and not (m:is_firewood()) then
desc = m:desc()
if (monsters[desc] == nil) then
monsters[desc] = 1
else
monsters[desc] = monsters[desc] + 1
end
end
end
end
return monsters
end
--Escapes the special characters in a string for pattern matching
function escape(str)
--Escapes parens and dash "()-"
local escaped = str:gsub('[%(%)%-]','%\%1')
--Removes any coloration parts of the string
return (escaped:gsub('<[^<]*>',''))
end
local function init_spells()
local spell_list = {}
for _, spell_name in ipairs(you.spells()) do
spell_list[spell_name] = true
end
return spell_list
end
known_spells = init_spells()
>
####################
# Opens skill menu #
####################
<
local need_skills_opened = true
function OpenSkills()
if you.turns() == 0 and need_skills_opened then
need_skills_opened = false
sendkeys("m")
end
end
>
#############
# Autofight #
#############
# Do/don't throw stuff when autofighting
autofight_throw = false
autofight_throw_nomove = false
# If true. items are autofired stopping at the monsters feet (same as firing using .)
autofight_fire_stop = false
fire_order = launcher, return
fire_order += rock, javelin, tomahawk, stone
# Doesn't work
# fire_order += poisoned javelin, steel javelin, javelin, tomahawk of returning
# Prevent me from tab-fighting to death by keeping this high
autofight_stop = 70
# Enables automagic attacks
automagic_enable = false
automagic_slot = a
# Percentage of MP to stop automagic at
automagic_stop = 50
# If set to true, resort to melee when automagic_stop is active
automagic_fight = true
##############
# Autopickup #
##############
# Used
# $ = gold
# ? = scroll
# ! = potion
# : = book
# " = jewellery
# / = wand
# % = food
# } = miscellaneous
# \ = rods
# | = staves
: if (you.god():find("Trog")) then
autopickup += $?!:"/%}\
: else
autopickup += $?!:"/%}\|
: end
# Unused
# ) = weapon
# ( = missiles
# [ = armour
# X = corpses
# Allows easily dropping multiple items
drop_mode += multi
# Always show the full list of items when you pick up a stack
pickup_mode += multi
# Allows followers to pick up ANYTHING (take care not to lose artefacts)
default_friendly_pickup += all
# Set Alias for Autopickup Exceptions
ae := autopickup_exceptions
ae += useless_item, dangerous_item, evil_item
# Don't pick up potion(s) of [coagulated] blood if you are not a vampire
: if you.race() ~= "Vampire" then
ae += potions? of.*blood
: end
# Autopickup artefacts
# Begin my changes.
ae += 2
local ego = equipped_item.branded
local armour_name = equipped_item.name()
local dragon = armour_name:find("dragon")
local troll = armour_name:find("troll")
local artefact = equipped_item.artefact
if artefact then return false end
if not (enchanted or ego or dragon or troll) then
return it.branded or it.ego
end
else
return true
end
end
if (sub_type == "shield") then
if equipped_item then
return it.artefact or it.branded or it.ego
end
end
end
if (class == "weapon") then
if it.is_useless then return false end
if it.artefact then return true end
if (you.xl() < 12) or (you.god():find("Beogh"))
and not ((you.race() == "troll") or (you.skill("Unarmed Combat") > 9)) then
return it.branded and not (name == "club")
end
end
end)
}
###############
# Spell slots #
###############
# Set Alias for Spell Slots
slot := spell_slot
# Try to keep in alphabetic order (by keybind)
slot += Freeze:a
slot += Shroud:a
slot += Blink:b
slot += Call Canine Familiar:c
slot += Call Imp:c
slot += Confuse:c
slot += Conjure Flame:c
slot += Control Undead:c
slot += Freezing Aura:c
slot += Petrify:c
slot += Spider Form:c
slot += Deflect Missiles:d
slot += Lethal Infusion:d
slot += Repel Missiles:d
slot += Fire Brand:f
slot += Fireball:f
slot += Apportation:g
slot += Haste:h
slot += Sublimation of Blood:m
slot += Abjuration:q
slot += Recall:r
slot += Regeneration:r
slot += Condensation Shield:s
slot += Shroud of Golubria:s
slot += Slow:s
slot += Sticks to Snakes:s
slot += Sticky Flame:s
slot += Stoneskin:s
slot += Swiftness:s
slot += Passwall:w
slot += Corona:v
slot += Blade Hands:x
slot += Iskenderun's Mystic Blast:x
slot += Lightning Bolt:x
slot += Mephitic Cloud:x
slot += Stone Arrow:x
slot += Throw Flame:x
slot += Throw Frost:x
slot += Throw Icicle:x
slot += Vampiric Draining:x
slot += Iskenderun's Battlesphere:z
slot += Lee's Rapid Deconstruction:z
slot += Spectral Weapon:z
slot += Animate Dead:A
slot += Animate Skeleton:A
slot += Ozocubu's Armour:A
slot += Controlled Blink:B
slot += Summon Butterflies:B
slot += Control Teleport:C
slot += Death's Door:D
slot += Flight:F
slot += Cure Poison:P
slot += Borgnjor's Revivification:R
slot += Phase Shift:S
slot += Song of Slaying:S
################
# Auto Exclude #
################
## dangerous monsters ##
auto_exclude += ancient lich, death drake, hydra, ice statue, shining eye, orb of fire
## paralysing monsters and uniques ##
auto_exclude += [^c] wizard, ancient lich, Ereshkigal, Erolcha, eyeball, Grinder, Jory, lich
auto_exclude += Norris, ogre-mage, orb of eyes, orc sorcerer, Rupert, sphinx, vampire knight
## other uniques and unique followers ##
auto_exclude += Agnes, Aizul, Arachne, Asterion, Blork, Boris, Crazy Yiuf, Donald, Dowan
auto_exclude += Duvessa, Edmund, Erica, Eustachio, Fannar, Frances, Frederick, Gastronok
auto_exclude += Grum, Harold, Ijyb, Jessica, Jorgrun, Joseph, Kirke, Louise, Mara, Maud
auto_exclude += Maurice, Menkaure, Mennas, Natasha, Nergalle, Nessos, Nikola, Pikel
auto_exclude += Polyphemus, Prince Ribbit, Psyche, Roxanne, Saint Roka, Sigmund, Snorg
auto_exclude += Sojobo, Sonja, Terence, Urug, Wiglaf, Xtahua, hog, slave
###############
# Auto Travel #
###############
# Set travel delay to -1 for instant-travel, set to 1 to see travel paths
travel_delay = 1
explore_stop = glowing_items,artefacts,greedy_pickup_smart
explore_stop += greedy_visited_item_stack,stairs,shops
explore_stop += altars,portals,branches,runed_doors,greedy_sacrificeable
# Adjusts how much autoexplore favours attempting to discover room perimeters and corners.
# At values higher than 0, autoexplore will more heavily favour visiting squares that are next to walls
# reasonable values range from 0 to 10 maybe?
explore_wall_bias = 3
# Make auto travel sacrifice corpses
sacrifice_before_explore = true
auto_sacrifice = true
# Disables key press from stopping autoexplore
travel_key_stop = false
runrest_ignore_poison = 3:30
runrest_ignore_monster += butterfly:1
trapwalk_safe_hp = dart:15,needle:25,arrow:25,bolt:30,spear:20,axe:40,blade:50
# Only stop resting when both HP/MP are full
rest_wait_both = true
# Set Alias'
stop := runrest_stop_message
ignore := runrest_ignore_message
ignore += You regained.*mp
# Annoyances -- Don't stop autotravel for these events
ignore += A.*toadstool withers and dies
ignore += disappears in a puff of smoke
ignore += engulfed in a cloud of smoke
ignore += engulfed in white fluffiness
ignore += grinding sound
ignore += in your inventory.*rotted away
ignore += safely over a trap
ignore += standing in the rain
ignore += toadstools? grow
ignore += You feel.*sick
ignore += You walk carefully through the
# Jiyva Messages
ignore += Jiyva appreciates your sacrifice
ignore += Jiyva gurgles merrily
ignore += Jiyva says: Divide and consume
ignore += You hear.*splatter
# Qazlal
ignore += The plant is engulfed
ignore += You destroy the (bush|fungus|plant)
ignore += You displace your
# Bad things -- Stop autotravel for these events (duplicates some of HDAForceMore)
stop += (blundered into a|invokes the power of) Zot
stop += (devoid of blood|starving)
stop += A huge blade swings out and slices into you[^r]
stop += An alarm trap emits a blaring wail
stop += flesh start
stop += found a zot trap
stop += hear a soft click
stop += lose consciousness
stop += sense of stasis
stop += Wait a moment
stop += wrath finds you
stop += You fall through a shaft
# Expiring spells effects -- Stop to allow recasts (duplicates some of HDAForceMore)
# Control Teleport
stop += you feel uncertain
# Death's Door
more += time is quickly running out
more += life is in your own
# Enslavement
more += is no longer charmed
# Flight
more += You are starting to lose your buoyancy
stop += You lose control over your flight
# Haste
more += You feel yourself slow down
# Phase Shift
more += You feel closer to the material plane
# Repel/Deflect
stop += missiles spell is about to expire
# Shroud of Golubria
stop += shroud begins to fray
stop += shroud unravels
more += Your shroud falls apart
# Swiftness
stop += start to feel a little slower
# Transmutations
more += Your transformation is almost over
more += You have a feeling this form
more += Your skin feels tender
more += You feel yourself come back to life
# Ghouls (Not part of HDAForceMore)
: if you.race() == "Ghoul" then
stop += smell.*(rott(ing|en)|decay)
stop += something tasty in your inventory
: end
# Good things - Bad things wearing off (Duplicates some of HDAForceMore)
stop += contamination has completely
stop += You are no longer firmly anchored in space
#Ally actions?
#ignore += pray:
#ignore += friend_spell:
#ignore += friend_enchant:
#ignore += friend_action:
#ignore += sound:
#############
# Interface #
#############
allow_self_target = prompt
sort_menus = true
#WARNING TO KEYPAD USERS: The number 7 is mapped to the letter 'y'
easy_confirm = all
confirm_butcher = never
easy_eat_chunks = true
auto_eat_chunks = true
auto_drop_chunks = yes
easy_eat_contaminated = true
equip_unequip = true
#hp_warning = 25 -- Damage Calc overrides these
#mp_warning = 25 -- Damage Calc overrides these
hp_colour = 100:green, 99:lightgrey, 75:yellow, 50:lightred, 25:red
mp_colour = 100:green, 99:lightgrey, 75:yellow, 50:lightred, 25:red
stat_colour = 3:red, 7:lightred
# Removes the more prompts when outputting more than one screen of messages
show_more = false
small_more = true
# Setting this to false changes the turn display to show player turns (used for scoring)
show_game_turns = true
msg_min_height=7
msg_max_height=10
default_manual_training = true
####################
# Autoinscriptions #
####################
# Set Alias
ai := autoinscribe
# Overwrite annoying inscriptions with your own
# Inscribe vampiric weapons if you are not a vampire
: if you.race() ~= "Vampire" then
ai += vampiric:!w
# Inscribe potions of blood if you are a vampire
: else
ai += potion.*blood:@q1
: end
# Inscribe distortion weapons if you are not worshipping Lugonu
: if you.god() ~= "Lugonu" then
ai += distortion:!w
ai += (Sonja|Psyche):!w
: end
# Misc
ai += rod of [^s][^t]:!a
ai += [Mm]anual of:!d
ai += dispersal:=f
ai += large rock:!d
ai += throwing net:=f, !d
ai += tome of destruction:!d
# Consumables
ai += (bad|dangerous)_item.*potion:!q
ai += potions? of berserk rage:!q
ai += potions? of cure mutation:!q
ai += (bad|dangerous)_item.*scroll:!r
ai += scrolls? of blinking:!r
ai += scrolls? of holy word:!r
ai += scrolls? of magic mapping:!r
ai += scrolls? of vulnerability:!r
# Body Armour
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
# Body Armour Egos
#ai += ([^l] leather armour|mail|plate armour|robe|skin) of cold resistance:rC+
#ai += ([^l] 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 += plate armour of ponderousness:Speed-
#ai += robe of resistance:rC+, rF+
#ai += robe of the archmagi:Spellpower+
#ai += troll leather armour of cold resistance:, rC+
#ai += troll leather armour of fire resistance:, rF+
# Accessory Egos
#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:Ranged Slay+4
#ai += hat of spirit shield:Spirit
# Amulets
ai += amulet of clarity:Clar, !d
ai += amulet of faith:Faith, !P
ai += amulet of guardian spirit:Spirit
ai += amulet of rage:+Rage, !d
ai += amulet of regeneration:+regen, !d
ai += amulet of resist corrosion:rCorr, !d
ai += amulet of resist mutation:rMut, !d
ai += amulet of stasis:Stasis, !d
ai += amulet of the gourmand:Gourm, !d
ai += amulet of warding:Ward, rN+, !d
# Rings
ai += ring of fire:rF+, rC-
ai += ring of flight:+Fly, !d
ai += ring of ice:rC+, rF-
ai += ring of invisibility:+Inv, !d
ai += ring of loudness:Stlth-
ai += ring of magical power:MP+9
ai += ring of poison resistance:rPois, !d
ai += ring of positive energy:rN+
ai += ring of protection from cold:rC+, !d
ai += ring of protection from fire:rF+, !d
ai += ring of protection from magic:MR+, !d
ai += ring of see invisible:sInv, !d
ai += ring of stealth:Stlth+
ai += ring of sustain abilities:SustAb
ai += ring of teleport control:cTele, !d
ai += ring of teleportation:+/*tele, !d
ai += ring of wizardry:Wiz+, !d
# Obsolete in 0.16
ai += ring of regeneration:regen, !d
# Staves
ai += staff of air:rElec
ai += staff of cold:rC+
ai += staff of conjuration:!a
ai += staff of death:rN+
ai += staff of energy:+MP, hungerless spells, !d!a
ai += staff of fire:rF+
ai += staff of poison:rPois
ai += staff of power:MP+17, !a
ai += staff of summoning:!a
ai += staff of wizardry:wiz+, !a
# Save fruit for abilities under Fedhas
: if you.god() == "Fedhas" then
ai += fruit:!e
: end
autoinscribe_cursed = false
show_god_gift = unident
##################
# Character Dump #
##################
dump_item_origins = all
dump_item_origin_price = 100
dump_message_count = 100
#dump_order = header,hiscore,stats,misc,mutations,skills,spells,overview,inventory
#dump_order += screenshot,monlist,messages,action_counts,vaults,notes,kills
dump_order += vaults, turns_by_place, kills_by_place
dump_book_spells = false
ood_interesting = 6
note_hp_percent = 25
note_all_skill_levels = true
note_xom_effects = true
note_items += of Zot,rod,acquirement
note_messages += Your scales start
note_messages += protects you from harm
note_messages += You fall through a shaft
note_messages += [bB]anish.*Abyss
note_monsters += orb of fire,silver star,pearl dragon,ancient lich
##################
# TEST & MISC #
##################
#tile_menu_icons = false
#tile_player_tile = (normal | playermons | mons: | tile:)