##### 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://gitorious.org/crawl/crawl/source/HEAD: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
more += distortion
force_more_message += transformation, weakening
force_more_message += toss it
force_more_message += malevolance
runrest_stop_message += friend_action:
runrest_stop_message += melt, evaporates, transformation, flicker, weakening
auto_sacrifice = true
auto_butcher = true
explore_auto_rest = true
autofight_stop = 70
#rest_wait_percent = 80
tile_web_mouse_control = false
auto_exclude += web
screen_flash += distortion
{
safe_move_toggle = true
toggle_hurt_allies = false
crawl.setopt("mon_glyph += player : green")
function toggle_safe_move()
if safe_move_toggle then
safe_move_toggle = false
crawl.message("safe move off", 0)
crawl.setopt("mon_glyph += player : red")
else
safe_move_toggle = true
crawl.message("safe move on", 0)
crawl.setopt("mon_glyph += player : green")
end
end
function toggle_hurt_allies()
if toggle_hurt_allies then
toggle_hurt_allies = false
crawl.message("hurt allies off", 0)
crawl.setopt("mon_glyph += player : red")
else
toggle_hurt_allies = true
crawl.message("hurt allies on", 0)
crawl.setopt("mon_glyph += player : green")
end
end
function toggles()
if crawl.yesno("Toggle safe mode?", true, 'n') == 1 then
toggle_safe_move()
end
if crawl.yesno("Toggle hurt allies?", true, 'n') == 1 then
toggle_hurt_allies()
end
end
}
{
safe = you.feel_safe()
function update_safe()
local old_safe = safe
safe = you.feel_safe()
if not safe and old_safe and safe_move_toggle then
crawl.mpr("Danger!", "warning")
crawl.more()
end
end
function ready()
update_safe()
end
local contam = 0
function smart_invis()
contam = you.contaminated()
if contam > 0
then crawl.mpr("Too much contam")
else
crawl.sendkeys("zI")
end
contam = 0
end
function swap_for_autoexplore()
local w = items.equipped_at("Weapon")
if w and string.find(w.inscription, "autoexplore") then
return nil
else
for i, j in ipairs(items.inventory()) do
if string.find(j.inscription, "autoexplore") then
return items.index_to_letter(j.slot)
end
end
return nil
end
end
function custom_autoexplore()
if not you.feel_safe() then
crawl.mpr("But you're not safe!")
return
end
if string.find(you.status(), "On berserk cooldown") then
crawl.mpr("Cooling down")
crawl.sendkeys("5")
return
end
if you.slowed() then
crawl.mpr("Speeding up")
crawl.sendkeys("5")
return
end
local action = ""
local swap = swap_for_autoexplore()
if swap then action = "w" .. swap end
local dummy, mmp = you.mp()
local mp_threshold = math.max(3, math.ceil(mmp / 2))
crawl.sendkeys(action .. "o")
end
function hp_percent() a,b=you.hp() return 100*a/b end
function mp_percent() a,b=you.mp() return 100*a/b end
function custom_rest()
if not you.feel_safe() then
crawl.mpr("But you're not safe!")
return
end
local swap = swap_for_autoexplore()
if swap then action = "w" .. swap end
crawl.sendkeys(action)
if ((not you.breath_timeout()) and
(hp_percent() == 100 and you.race() == "Djinni" or
hp_percent() == 100 and mp_percent() == 100 or
mp_percent() == 100 and you.race() == "Deep Dwarf")) then
if crawl.yesno("Wait 100 turns?", true, 'n') == 1 then
crawl.sendkeys("5")
end
else crawl.sendkeys("5")
end
end
}
--this function is module, so don't change its name
{
if prompt.find("Really attack near" and toggle_hurt_allies then
return true
end
}
macros += M o ===custom_autoexplore
macros += M 5 ===custom_rest
macros += M ` ===toggles
macros += M e ===smart_invis