##### 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 small_more = true allow_self_target = no equip_unequip = true stop := runrest_stop_message more := force_more_message runrest_ignore_monster += butterfly:1 # Bad things stop += found.*trap stop += (blundered into a|invokes the power of) Zot stop += You fall through a shaft stop += A sentinel's mark forms upon you\. stop += A huge blade swings out and slices into you stop += sense of stasis stop += flesh start stop += (starving|devoid of blood) stop += wrath finds you stop += lose consciousness # Expiring effects stop += You feel yourself slow down stop += You are starting to lose your buoyancy stop += You lose control over your flight stop += Your hearing returns stop += Your transformation is almost over stop += back to life stop += uncertain stop += time is quickly running out stop += life is in your own hands stop += is no longer charmed # Important features : if you.god() == "Ashenzari" then more += You have a vision of.*gates? : else more += interdimensional caravan more += distant snort more += roar of battle more += wave of frost more += hiss of flowing sand more += sound of rushing water more += heat about you more += crackle of arcane power more += Found a gateway leading out of the Abyss : end more += Found .* abyssal rune of Zot more += The mighty Pandemonium lord .* resides here # Interrupts more += You don't .* that spell more += You fail to use your ability more += You miscast.*(Blink|Borgnjor|Door|Haste|Invisibility) more += You can't (read|drink|do) more += You cannot .* in your current state more += There's nothing to (close|open) nearby more += not good enough to have a special ability more += You are too berserk more += no means to grasp more += That item cannot be evoked more += This wand has no charges more += You are held in a net more += You have disarmed more += You don't have any such object more += do not work when you're silenced more += You can't unwield more += enough magic points more += You feel your control is inadequate # Bad things more += Your surroundings flicker more += sense of stasis more += ^Your amulet of stasis more += You cannot teleport right now more += You fall through a shaft more += A sentinel's mark forms upon you more += (blundered into a|invokes the power of) Zot more += Ouch! That really hurt! more += dispelling energy hits you more += You convulse more += You are blasted by holy energy! more += You are (blasted|electrocuted)! more += You are.*(confused|poisoned) more += flesh start more += (starving|devoid of blood) more += god:(sends|finds|silent|anger) more += You feel a surge of divine spite more += lose consciousness more += You are too injured to fight blindly more += calcifying dust hits more += Space warps.*around you more += Space bends around you more += hits you.*distortion more += watched by something more += flickers and vanishes! # Hell effects more += hell_effect: stop += hell_effect: # Expiring effects more += You feel yourself slow down more += You are starting to lose your buoyancy more += You lose control over your flight more += Your hearing returns more += Your transformation is almost over more += You have a feeling this form more += You feel yourself come back to life more += uncertain more += time is quickly running out more += life is in your own hands more += is no longer charmed more += Your shroud falls apart more += You start to feel a little slower more += You feel less protected from missiles # Others more += You have reached level more += You have finished (your manual|forgetting about) more += Your scales start more += You feel monstrous more += Jiyva alters your body : if you.god() == "Xom" then more += god: : end :if you.god() == "Xom" then stop += god: :else ignore += god: :end default_manual_training=true show_travel_trail=true autofight_stop=60 hp_warning=50 note_hp_percent = 1 language = dwarven travel_delay = -1 explore_delay = -1 rest_delay = -1 autofight_throw_nomove = true chunks_autopickup = true confirm_butcher = never # auto butcher first corpse prefer_safe_chunks = true easy_eat_chunks = true easy_eat_gourmand = true auto_eat_chunks = true # mlist_allow_alternate_layout = true show_game_turns = false # messages_at_top = true autopickup = $?!+"/%X autopickup_exceptions += 0 then return end if it.branded then return true end local cur = items.equipped_at(good_slots[st]) if cur == nil then return true end if cur.branded or cur.artefact then return end if armour_plus(it) ~= nil then if armour_plus(it) > armour_plus(cur) then return true end else if armour_plus(cur) < 0 then return true end end elseif st == "body" then local cur = items.equipped_at("armour") if cur == nil then return end if cur.name("qual") ~= it.name("qual") then return end if it.branded then return true end if cur.branded or cur.artefact then return end if armour_plus(it) ~= nil then if armour_plus(it) > armour_plus(cur) then return true end else if armour_plus(cur) < 0 then return true end end end end if class == "missile" then if name:find("curare") then return true end if name:find("confusion") or name:find("paralysis") or name:find("frenzy") or name:find("sleeping") or name:find("slowing") then return end end return end add_autopickup_func(autopickup) } # -- 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 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 have_no_chunks = number_of_chunks() == 0 # : local have_no_blood = number_of_potions_of_blood() == 0 # : local you_do_not_eat = string.find(you.race(), "Spriggan") or you_are_mummy or you_are_vampire # : local need_to_recover = should_rest(hp, mp, max_hp, max_mp) # : 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 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 have_no_chunks and (want_to_eat or you_want_spare_chunks)) or (you_are_vampire and number_of_potions_of_blood() < 55) or (you_are_ghoul and number_of_chunks() < 66) # : --crawl.mpr(string.format("need_to_recover is: %s", need_to_recover and "True" or "False")) # : --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_potions_of_blood is: %s", number_of_potions_of_blood())) # : --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") # local bloodless_vampire = (number_of_potions_of_blood() == 0) and (you.hunger_name() == "bloodless") # local can_not_regen = you_are_deep_dwarf or bloodless_vampire # local missing_hp = (hp < (max_hp*0.80)) or ((max_hp-hp) > 30) # local missing_mp = (mp < (max_mp*0.50)) or ((max_mp-mp) > 20) # return missing_mp # or (missing_hp and not can_not_regen) # 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_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") and string.find(it.name(), "flesh") and not food.dangerous(it) then # return it.quantity # end # end # return 0 # end # # function number_of_potions_of_blood() # for it in inventory() do # if string.find(it.name(), "potion") and string.find(it.name(), "blood") 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 = -8,8 do # for y = -8,8 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() # > #tile_water_anim = true tile_realtime_anim = true # tile_display_mode = hybrid tile_menu_icons = false tile_tag_pref = named tile_map_pixels = 1 tile_cell_pixels = 64 # tile_force_overlay = true tile_show_player_species = true # tile_player_tile = playermons tile_layout_priority = monster, command, spell, gold_turn, minimap