# use_fake_player_cursor = true show_player_species = true allow_extended_colours = true # Monsters # cset_unicode = plant : ⚶ # ⚵ ❦ ❡ ♤ mon_glyph ^= plant : ⚶ mon_glyph ^= bush : ⚶ mon_glyph ^= toadstool : ⚵ mon_glyph ^= fungus : ⚵ # mon_glyph ^= * : ✱ # Items cset_unicode=item_missile:➘ cset_unicode=item_gold:€ # Dungeon Features # cset_unicode=wall:░ feature += rock wall {░} feature += crystal wall {░} feature += stone wall {▒} feature += metal wall {▓} feature += unnaturally hard rock wall {█} # feature += altar {▩} # ◆ ▃ ⚑ mon_glyph ^= trivial sensed monster : darkgrey ☖ mon_glyph ^= easy sensed monster : lightgrey ☖ mon_glyph ^= tough sensed monster : yellow ☗ mon_glyph ^= nasty sensed monster : red ☗ mon_glyph ^= friendly sensed monster : ☖ simple_targetting = true autofight_throw = false autofight_throw_nomove = false autofight_caught = true autofight_prompt_range = true # Travel easy_open = false travel_delay = -1 show_travel_trail = true travel_open_doors = false explore_wall_bias = 5 explore_improved = true explore_delay = -1 rest_delay = -1 view_delay = 300 runrest_ignore_poison = 2:10 runrest_ignore_monster += ^butterfly$:1 # runrest_ignore_message ^= You feel.*sick # feature = rock wall{,,brown} # Eating confirm_butcher = never auto_eat_chunks = true easy_eat_chunks = true auto_drop_chunks = yes # Combat hp_colour = 100:green, 75:yellow, 50:red, 25:lightred mp_colour = 100:green, 75:yellow, 50:red, 25:lightred hp_warning = 50 mp_warning = 50 autofight_stop = 30 # Autopickup # autopickup = $?!+"/%|\ # ae := autopickup_exceptions ## Don't ever need a second stave # ae += staff of .* #{ #local function autopickup(it, name) # if it.artefact then # return true # end # local class = it.class(true) # if class == "armour" then # local good_slots = {cloak="Cloak", helmet="Helmet", # gloves="Gloves", boots="Boots"} # st, _ = it.subtype() # if good_slots[st] ~= nil and # items.equipped_at(good_slots[st]) == nil then # return true # end # end # if class == "weapon" then # if name:find("demon") or # name:find("quick") or # name:find("double") or # name:find("distortion") then # return true # end # end # if class == "missile" then # if name:find("curare") then # return true # end # end # return false #end #add_autopickup_func(autopickup) #} # Interface #drop_filter += useless_item default_manual_training = true allow_self_target = prompt bindkey = [~] CMD_LUA_CONSOLE # Inscriptions autoinscribe += distortion:!w autoinscribe += net:=f autoinscribe += dispersal:=f autoinscribe += potion.*mutation:!q autoinscribe += potion.*berserk rage:!q autoinscribe += scroll.*torment:!r autoinscribe += scroll.*silence:!r # autoinscribe += scroll.*(teleportation|blinking|fear):!r autoinscribe += of faith:!P autoinscribe += rod of:!a autoinscribe += staff of (Wucad Mu|energy|channeling|wizardry|power):!a autoinscribe += staff of (conjuration|enchantment|summoning|poison):!a autoinscribe += curare:=f #: if you.god() == "Fedhas" then #autoinscribe += fruit:!e #: end ai := autoinscribe ai += curing:@q1 ai += potions? of heal wounds:@q2 ai += wand of heal wounds:@v2 ai += potions? of haste:@q3 ai += wand of hasting:@v3 ai += scrolls? of teleportation:@r4 ai += wand of teleportation:@v4 ai += identify:@r1 ai += remove curse:@r2 ai += blowgun:@w1 ai += ration:@e1 ai += (beef jerk|fruit|pizza):@e2 ai += royal jell:@e3 # Message Colours msc := message_colour #channel.plain = plain #channel.prompt = plain #channel.god = plain # channel.pray = mute #channel.pray = plain #channel.duration = plain #channel.danger = plain #channel.food = plain #channel.warning = plain #channel.recovery = plain # channel.talk = mute #channel.talk = plain # channel.talk_visual = mute #channel.talk_visual = magenta #channel.intrinsic_gain = plain #channel.mutation = plain #channel.monster_spell = plain #channel.monster_enchant = plain #channel.friend_spell = plain #channel.friend_enchant = plain #channel.monster_damage = plain #channel.rotten_meat = plain #channel.equipment = plain #channel.floor = plain # channel.multiturn = mute #channel.multiturn = plain #channel.examine = plain #channel.examine_filter = plain #channel.error = red #channel.tutorial = white #msc += lightred:Ashenzari warns you #msc += lightblue:Vehumet offers #msc +=red:ice beasts? comes? into view #msc +=red:fire drakes? comes? into view #msc +=red:giant eyeballs? comes? into view #msc += cyan:comes? into view ## msc += darkgrey:You are cast.*Abyss msc += cyan:your body is wracked with pain ## Smiting #msc += cyan:something smites you # msc += darkgrey:calls on the powers of darkness # msc += darkgrey:kneels in prayer.*energy #$item_dmg := red #$msg_warning := red $msg_combat := cyan $msg_special := cyan #msc += $item_dmg:acid corrodes #msc += $item_dmg:catch(es)? fire #msg += $msg_warning:shout msc += $msg_combat:You destroy msc += $msg_combat:You kill msc += $msg_combat:You feel a bit more experienced. msc += $msg_special:Your .* skill increases to level 3! ## Messages more := force_more_message ## Important features #: if you.god() == "Ashenzari" then #more += You have a vision of.*gates? #: else more += interdimensional caravan more += distant snort more += Found a gateway leading out of the Abyss #: end more += Found .* abyssal rune of Zot #more += You feel a terrible weight on your shoulders #more += Your surroundings flicker #more += sense of stasis #more += You cannot teleport right now #more += The writing blurs in front of your eyes more += You fall through a shaft #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|electrocuted)! #more += You are (more )?confused #more += You are (more |lethally )?poisoned #more += wrath finds you #more += lose consciousness more += Space warps horribly around you more += hits you.*distortion more += Space bends around you\. #more += watched by something #more += The dungeon rumbles around #more += The air twists around and violently strikes you in flight # Expiring effects #more += You feel yourself slow down #more += You are starting to lose your buoyancy #more += Your hearing returns #more += Your transformation is almost over #more += You feel yourself come back to life #more += uncertain # Others #more += You have reached level #more += You have finished your manual of #more += Deactivating autopickup ################### ### Spell slots ### ################### # Buff/utility/escape spells we always try to put on specific letters. # Uses following letters: aeghijlmrsBEKU # spell_slot += Abjuration:jJA # spell_slot += Aura of abjuration:jJA spell_slot += Apportation:aAP spell_slot += Blink:v # spell_slot += Borgnjor's revivification:BNV # spell_slot += Cigotuvi's Embrace:ige # spell_slot += Controlled blink:ieC # spell_slot += Cure poison:ieP # spell_slot += Death's door:DOT # spell_slot += Deflect missiles:rRM spell_slot += Haste:HA spell_slot += Invisibility:IN # spell_slot += Mass abjuration:jJA spell_slot += Ozocubu's armour:oOM spell_slot += Passage of golubria:dp # spell_slot += Recall:eER spell_slot += Regeneration:c spell_slot += Repel missiles:rRM # spell_slot += Ring of flames:meF spell_slot += Shroud of golubria:g spell_slot += Silence:SIC # spell_slot += Song of slaying:giS spell_slot += Swiftness:WTS # spell_slot += Sublimation of blood:BMN spell_slot += Summon butterflies:B # All other spells # Use z for L1 damage/buff spells # Generic: bodkqvwy # Uses the following for specific schools, preferably is spell name contains it # or as a fallback if it doesn't. # Fire: f; Cold: c; Necromancy: n; Earth: t; Poison: p; Summoning: u; Hexes: x spell_slot += Alistair's intoxication:tox spell_slot += Airstrike:ktT spell_slot += Agony:yno spell_slot += Animate dead:ndt spell_slot += Animate skeleton:nkt spell_slot += Beastly appendage:zbt spell_slot += Blade hands:bdB # Try to put bolt spells on b spell_slot += Bolt of cold:bco spell_slot += Bolt of draining:bnd spell_slot += Bolt of fire:bfo spell_slot += Bolt of magma:bof spell_slot += Call canine familiar:fuc spell_slot += Call imp:puc spell_slot += Cause fear:xcf spell_slot += Corona:zox spell_slot += Chain lightning:tcn spell_slot += Cigutovi's embrace:vtn spell_slot += Confusing touch:oxc spell_slot += Confuse:ocf spell_slot += Conjure flame:ofu spell_slot += Control undead:not spell_slot += Corpse rot:otn spell_slot += Dazzling spray:ydz spell_slot += Darkness:DAR spell_slot += Death channel:ndt spell_slot += Discord:DOC spell_slot += Disjunction:dox spell_slot += Dispel undead:ndp spell_slot += Dispersal:dxp spell_slot += Dragon form:dof spell_slot += Dragon's call:dou spell_slot += Ensorcelled hibernation:zbx spell_slot += Excruciating wounds:nwd spell_slot += Fire storm:fot spell_slot += Fireball:fbd spell_slot += Flame tongue:zfo spell_slot += Force lance:ofc spell_slot += Freezing cloud:cdo spell_slot += Freeze:zcf spell_slot += Fulminant prism:ptf spell_slot += Gell's Gravitas:vxt spell_slot += Glaciate:ctb spell_slot += Haunt:unt spell_slot += Hydra form:ydo spell_slot += Ice form:cof spell_slot += Ice storm:cot spell_slot += Iron shot:ton spell_slot += Infusion:ofn spell_slot += Inner flame:fxn spell_slot += Irradiate:tdI spell_slot += Iskenderun's battlesphere:kdb spell_slot += Iskenderun's mystic blast:byd spell_slot += Leda's Liquefaction:qtx spell_slot += Lee's rapid deconstruction:tdo spell_slot += Lehudib's crystal spear:tyb spell_slot += Lightning bolt:bot spell_slot += Magic dart:zdt spell_slot += Malign gateway:wyt spell_slot += Mass confusion:oxc spell_slot += Mephitic cloud:pdc spell_slot += Metabolic englaciation:cob spell_slot += Monstrous menagerie:uot spell_slot += Necromutation:ntN spell_slot += Orb of destruction:odb spell_slot += Ozocubu's refrigeration:coz spell_slot += Pain:znp spell_slot += Passwall:wpP spell_slot += Petrify:yxt spell_slot += Poison arrow:pwo spell_slot += Poisonous cloud:pod spell_slot += Portal projectile:otc spell_slot += Sandblast:zbt spell_slot += Searing ray:ybn spell_slot += Shadow creatures:wdu spell_slot += Shatter:TSH spell_slot += Shock:zok spell_slot += Simulacrum:cnu spell_slot += Slow:wox spell_slot += Spectral weapon:wox spell_slot += Spellforged servitor:vto spell_slot += Spider form:pdS spell_slot += Static discharge:tdc spell_slot += Statue form:toS spell_slot += Sticks to snakes:tkc spell_slot += Sticky flame:yfk spell_slot += Sting:zpt spell_slot += Stone arrow:wto spell_slot += Summon demon:dou spell_slot += Summon forest:ouf spell_slot += Summon greater demon:dou spell_slot += Summon guardian golem:dou spell_slot += Summon horrible things:bou spell_slot += Summon hydra:ydu spell_slot += Summon ice beast:bcu spell_slot += Summon lightning spire:tpu spell_slot += Summon mana viper:vpu spell_slot += Summon small mammal:zou spell_slot += Teleport other:opt spell_slot += Throw frost:cow spell_slot += Throw flame:fow spell_slot += Throw icicle:cwo spell_slot += Tornado:TOD spell_slot += Tukima's Dance:dkx spell_slot += Vampiric draining:vnd spell_slot += Venom bolt:bpo spell_slot += Warp weapon:wop # Default letters spell_slot += .*:YXWZ ################## ### Item slots ### ################## ## In order of letter used. item_slot += amulet of stasis : A item_slot += amulet of rage : B item_slot += ring of (ice|protection from cold) : Cc item_slot += amulet of the gourmand : D item_slot += \+[0-9]+ ring of evasion : Ee item_slot += ring of .*fire : Ff item_slot += amulet of regeneration : g item_slot += amulet of guardian spirit : G item_slot += amulet of faith : H item_slot += \+[0-9]+ ring of intelligence : Ii item_slot += amulet of warding : J item_slot += amulet of clarity : K item_slot += ring of flight : L item_slot += ring of protection from magic : Mm item_slot += ring of positive energy : Nn item_slot += \+[0-9]+ ring of protection : Oo item_slot += ring of poison resistance : P item_slot += ring of stealth : Qq item_slot += amulet of resist corrosion : R item_slot += \+[0-9]+ ring of strength : Ss item_slot += ring of teleportation : T item_slot += ring of sustain (abilities|attributes) : u item_slot += amulet of resist mutation : U item_slot += ring of see invisible : v item_slot += ring of invisibility : V item_slot += ring of magical power : Ww item_slot += \+[0-9]+ ring of dexterity : Xx item_slot += \+[0-9]+ ring of slaying : Yy item_slot += ring of wizardry : Zz ################### ## Debug Options ## ################### fsim_rounds = 10000 ##----------------------------- #---- Beging target_skill ---- #----------------------------- #-- See README.md for documentation. #skill_list = {"Fighting","Short Blades","Long Blades","Axes","Maces & Flails", # "Polearms","Staves","Unarmed Combat","Bows","Crossbows", # "Throwing","Slings","Armour","Dodging","Shields","Spellcasting", # "Conjurations","Hexes","Charms","Summonings","Necromancy", # "Translocations","Transmutations","Fire Magic","Ice Magic", # "Air Magic","Earth Magic","Poison Magic","Invocations", # "Evocations","Stealth"} #need_target_skill = nil #function record_current_skills(maxlev) # c_persist.current_skills = { } # for _,sk in ipairs(skill_list) do # if you.train_skill(sk) > 0 and you.base_skill(sk) < (maxlev or 27) then # table.insert(c_persist.current_skills, sk) # end # end #end #function check_skills() # if not c_persist.current_skills or not c_persist.target_skill then # return # end # for _,sk in ipairs(c_persist.current_skills) do # if you.base_skill(sk) >= c_persist.target_skill then # crawl.formatted_mpr(sk .. " reached " .. c_persist.target_skill # .. ".", "prompt") # crawl.more() # set_new_skill_training() # break # end # end #end #function init_target_skill() # c_persist.target_skill = nil # c_persist.current_skills = { } # need_target_skill = true #end #function set_new_skill_training() # init_target_skill() # c_persist.target_skill = 0 # crawl.sendkeys("m") #end #function set_target_skill() # record_current_skills() # local str = "Currently training: " # local first_skill = true # for _,sk in ipairs(c_persist.current_skills) do # val = you.base_skill(sk) # if first_skill then # str = str .. sk .. "(" .. val .. ")" # else # str = str .. ", " .. sk .. "(" .. val .. ")" # end # first_skill = false # end # str = str .. "." # crawl.formatted_mpr(str, "prompt") # crawl.formatted_mpr("Choose a target skill level: ", "prompt") # c_persist.target_skill = tonumber(crawl.c_input_line()) # record_current_skills(c_persist.target_skill) # -- Update the target skill for char_defaults if necessary. # if save_default_target_skill and you.turns() == 0 then # save_default_target_skill() # end #end #function control(c) # return string.char(string.byte(c) - string.byte('a') + 1) #end# #-- Moved this to its own function to clean up ready() -gammafunk #function target_skill() # prev_need_target = need_target_skill# # -- Need to look at skills and then set a target skill if our # -- need_target_skill variable is uninitialized and we're either at turn 0 or # -- c_persist.target_skill also uninitialized. # if prev_need_target == nil # and (you.turns() == 0 or c_persist.target_skill == nil) then # set_new_skill_training() # end # if prev_need_target then # set_target_skill() # need_target_skill = false # elseif not need_target_skill then # check_skills() # end #end #-------------------------- #---- End target_skill ---- #-------------------------- #{# #function ready() # -- Enable char default skills; this must come before target_skill(). # char_defaults() # -- Enable skill target settings. # target_skill() # # -- Enable speedrun resting. # # speedrun_rest() # -- Enable persistent messages. # load_message() # -- Dynamic force-mores. # force_mores() # -- Char dumps every 1k turns. # char_dump() # -- Enable RandomTiles. # random_tile() #end #}