##### 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 # Alternative vi bindings for Neo users. # include = neo_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 sound_on = true sound_pack += https://osp.nemelex.cards/build/latest.zip:["init.txt"] one_SDL_sound_channel = true sound_fade_time = 0.5 ########################## default_manual_training = true autofight_stop = 50 auto_butcher = true auto_eat_chunks = true show_more = false explore_auto_rest = true travel_delay = -1 show_travel_trail = true note_chat_messages = true # Set Alias more := force_more_message # Item Use more += drinks a potion more += evokes.*(amulet|ring) more += reads a scroll more += zaps a (wand|rod) ######## Autoexplore Interruption Messages ######################## stop := runrest_stop_message stop += Your transformation is almost over ## Dangerous messages ## flash_screen_message += You are slowing down flash_screen_message += your limbs are stiffening flash_screen_message += The floating eye seems to glare at you flash_screen_message += The floating eye's stare focuses on you flash_screen_message += The floating eye's view fixates on you flash_screen_message += A sentinel's mark forms upon you flash_screen_message += distant snort flash_screen_message += unleashes a terrible howl flash_screen_message += engulfs you in water flash_screen_message += The ushabti shakes and rattles deafeningly! flash_screen_message += You hear strange and distant voices. flash_screen_message += finished your manual flash_screen_message += The spriggan druid calls out to the beasts of the wild! flash_screen_message += Found a gateway to a bazaar. flash_screen_message += You are engulfed in seething chaos. # Terrible Monsters more += giant eyeball.*comes? into view more += A player ghost.*(comes? into view|opens the) more += floating eye.*comes? into view more += juggernaut.*comes? into view more += ghost moth.*comes? into view # Malmutate more += Cacodemon.*comes? into view more += Neqoxec.*comes? into view more += Orb of fire.*comes? into view more += Shining eye.*comes? into view # 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) # Special block for a Ghoul : if you.race() == "Vampire" or you.race() == "Mummy" : or you.race() == "Ghoul" then more += (comes? into view|opens the).*Holy wrath more += Anubis guard.*(comes? into view|opens the) more += Black sun.*(comes? into view|opens the) more += Revenant.*(comes? into view|opens the) more += Tzitzimitl.*(comes? into view|opens the) more += Josephine.*(comes? into view|opens the) : end # Special block for a Tengu(airstrikes) # : if you.race() == "Tengu" then # more += Wind drake.*(comes? into view|opens the) # more += Blizzard demon.*(comes? into view|opens the) # more += Spriggan air mage.*(comes? into view|opens the) # more += Cloud mage.*(comes? into view|opens the) # more += Titan.*(comes? into view|opens the) # : end more += finished your manual more += The mighty Pandemonium lord .* resides here as := ability_slot as ^= End Trans: h as ^= Evoke Invis: i as ^= Turn Visibl: j as ^= Evoke Fligh: l as ^= Fly: l as ^= Stop Flying: m as ^= Evoke Telep: t as ^= Spit: q as ^= Breath: q #spell_slot += Alistair's intoxication:aisn spell_slot += Apportation:n #spell_slot += Airstrike:ae #spell_slot += Agony:aygn #spell_slot += Animate dead:adet #spell_slot += Animate skeleton:asen spell_slot += Beastly appendage:baye spell_slot += Blade hands:bhes spell_slot += Blink:BKLN spell_slot += Bolt of magma:bmta spell_slot += Borgnjor's revivification:BRSN spell_slot += Borgnjor's vile clutch:b spell_slot += Call canine familiar:cflr spell_slot += Call imp:cilp spell_slot += Cause fear:cfer spell_slot += Controlled blink:cbdk spell_slot += Corona:carn spell_slot += Chain lightning:clng spell_slot += Confusing touch:ctgh spell_slot += Conjure flame:cfej spell_slot += Corpse rot:cret spell_slot += Dazzling Flash:dfgh spell_slot += Darkness:aed spell_slot += Death channel:d # Upper-case to prevent miskeys. spell_slot += Death's door:DROT spell_slot += Discord:DCSR spell_slot += Disjunction:iuoe spell_slot += Dispel undead:ndp spell_slot += Dispersal:iea spell_slot += Dragon form:dgrf spell_slot += Dragon's call:dcl spell_slot += Ensorcelled hibernation:ehnd spell_slot += Eringya's Toxic Bog:bteg spell_slot += Excruciating wounds:ewgx spell_slot += Fire storm:fsmt spell_slot += Fireball:flbr spell_slot += Foxfire:fxro spell_slot += Freezing cloud:fcgd spell_slot += Freeze:zfezr spell_slot += Frozen Ramparts:frnt spell_slot += Fulminant prism:fpmt spell_slot += Gell's Gravitas:glvt spell_slot += Haunt:htna spell_slot += Ice form:crmf spell_slot += Ignition:ntg spell_slot += Iron shot:s spell_slot += Inner flame:frn spell_slot += Invisibility:iyvb spell_slot += Irradiate:i spell_slot += Iskenderun's battlesphere:ibne spell_slot += Leda's Liquefaction:lanq spell_slot += Lee's rapid deconstruction:ldr spell_slot += Lesser Beckoning:lbg spell_slot += Lehudib's crystal spear:lcsb spell_slot += Lightning bolt:lbgt spell_slot += Magic dart:zmdtc spell_slot += Malign gateway:mgy spell_slot += Manifold Assault:madt spell_slot += Maxwell's Capacitive Coupling:mclp spell_slot += Mephitic cloud:mcdp spell_slot += Metabolic englaciation:mcn spell_slot += Monstrous menagerie:mst spell_slot += Necromutation:Y spell_slot += Olgreb's toxic radiance:oia spell_slot += Orb of destruction:dbn spell_slot += Ozocubu's armour:oau spell_slot += Ozocubu's refrigeration:c spell_slot += Pain:pnai spell_slot += Passage of golubria:z spell_slot += Passwall:aeu spell_slot += Petrify:pyt spell_slot += Poisonous vapours:pvs spell_slot += Portal projectile:oei spell_slot += Sandblast:zst spell_slot += Searing ray:sry spell_slot += Shadow creatures:scw # Upper-case to prevent miskeys. spell_slot += Shatter:sth spell_slot += Shock:zok spell_slot += Simulacrum:scm spell_slot += Silence:SLC spell_slot += Slow:swlh spell_slot += Spellforged servitor:spvt spell_slot += Spider form:sprf spell_slot += Static discharge:tdc spell_slot += Statue form:I spell_slot += Sticky flame:yfk spell_slot += Sting:zptg spell_slot += Stone arrow:wtn spell_slot += Storm form:Y spell_slot += Summon forest:ftms spell_slot += Summon guardian golem:gds spell_slot += Summon horrible things:hts spell_slot += Summon hydra:hsy spell_slot += Summon ice beast:bct spell_slot += Summon lightning spire:lst spell_slot += Summon mana viper:vms spell_slot += Summon small mammal:zsm spell_slot += Swiftness:ieao spell_slot += Teleport other:tprh spell_slot += Tornado:tdn spell_slot += Tukima's Dance:dkc spell_slot += Vampiric draining:vnd spell_slot += Wereblood:wbld spell_slot += Yara's violent unraveling:yvgl spell_slot += Iskenderun's Mystic Blast:ximb # Default letters # spell_slot += .*:XYZ ################## ### Item slots ### ################## ## Rings, in order of letter used. item_slot += ring of dexterity : Dd item_slot += ring of evasion : Ee item_slot += ring of .*fire : Ff item_slot += ring of (ice|protection from cold) : Cc item_slot += ring of intelligence : Ii item_slot += ring of flight : L item_slot += ring of magical power : Mm item_slot += ring of positive energy : Nn item_slot += ring of poison resistance : P item_slot += ring of resist corrosion : R item_slot += ring of strength : Ss item_slot += ring of see invisible : v item_slot += ring of willpower: Ww # Need numeric match to not trigger for rF/rC rings item_slot += \+[0-9]+ ring of protection : Tt item_slot += ring of slaying : Yy item_slot += ring of wizardry : Zz ######## Function Section ######################## { function ready() OpenSkills() hp_percent() mp_percent() AnnounceDamage() Ruoffer() 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 Petrifying_Check() if you.petrifying() then crawl.yesno("You are now petrifying so your action will be checked. (Y or N to confirm.)", false, false, true, true) crawl.mpr("Consider to using tele/blink, Yara, cancellation or other emergency measures......", 5) end end } { local need_skills_opened = true function OpenSkills() if you.turns() == 0 and need_skills_opened then need_skills_opened = false crawl.sendkeys("m") crawl.mpr("Don't forget about skills", 3) end end } { local early = true function hpWarning_Early() if you.hp() < 21 and hp_percent() < 30 and you.xl() < 9 and early then crawl.yesno("Low HP: Be careful! (Y or N to confirm.)", false, false, true, true) crawl.mpr("The dice are ABSOLUTELY not on your side......", 5) early = false end if you.hp() > 20 and hp_percent() > 29 and you.xl() < 9 then early = true end end } { local mid = true function hpWarning_Mid() if you.hp() < 35 and you.xl() < 20 and you.xl() > 8 and mid then crawl.yesno("Low HP: Be careful! (Y or N to confirm.)", false, false, true, true) crawl.mpr("Consider to using tele/blink, potion or other emergency measures......", 5) mid = false end if you.hp() > 34 and you.xl() < 20 and you.xl() > 8 then mid = true end end } { local late = true function hpWarning_Late() if you.hp() < 60 and you.xl() == 27 and not you.status("death's door") and not you.status("death's door (expiring)") and late then crawl.yesno("Low HP: Be careful! (Y or N to confirm.)", false, false, true, true) crawl.mpr("Keep playing discreetly even on late-game......", 5) late = false end if you.hp() > 59 and you.xl() == 27 then late = true end end } { 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 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 } { local veh = true function Vehumetoffer() if string.find(crawl.messages(4), "Vehumet offers") and veh then crawl.yesno("Vehumet offers a spell for you! (Y or N to confirm.)", false, false, true, true) veh = false end if string.find(crawl.messages(4), "Vehumet accepts") then veh = true end end } { local ru = true function Ruoffer() if string.find(crawl.messages(4), "Ru believes") and ru then crawl.yesno("Ru offers sacrifice for you! (Y or N to confirm.)", false, false, true, true) ru = false end if string.find(crawl.messages(6), "Ru asks you to") or string.find(crawl.messages(6), "Ru will take longer") then ru = true end end } ######## Non-ready() Function Section ######################## { function custom_rest() if hp_percent() == 100 and mp_percent() == 100 then if crawl.yesnoquit("Really wait turns while hp and mp are full?", true, 'n') == 1 then crawl.process_keys("5") end else crawl.process_keys("5") end end } local aft = false function toggle_autothrow() if aft then crawl.setopt("autofight_throw = false") crawl.mpr("Autofight_throw is off.") else crawl.setopt("autofight_throw = true") crawl.mpr("Autofight_throw is on.") end aft = not aft end always_show_zot = true