############## ## Keybinds ## ############## bindkey = [s] CMD_WEAPON_SWAP bindkey = [ยง] CMD_EXPLORE ############# ## Display ## ############# tile_font_crt_family = Consolas tile_font_stat_family = Consolas tile_font_msg_family = Consolas tile_font_lbl_family = Consolas view_delay = 200 hp_warning = 50 monster_list_colour = monster_list_colour += friendly:green,neutral:brown monster_list_colour += good_neutral:brown,strict_neutral:brown monster_list_colour += trivial:darkgrey,easy:lightgrey monster_list_colour += tough:yellow,nasty:lightred ############### ## Interface ## ############### default_manual_training = true auto_hide_spells = true equip_unequip = true easy_confirm = all autofight_stop = 70 autofight_caught = true ############ ## Travel ## ############ explore_auto_rest = true rest_wait_percent = 100 rest_wait_both = true travel_delay = -1 explore_delay = -1 rest_delay = -1 warn_hatches = true ############## ## Messages ## ############## show_more = false ##Message colors message_colour += blue:You start resting message_colour += blue:You start waiting. message_colour += blue:You riposte. message_colour += blue:.* stings the plant.* message_colour += blue:Cheibriados appreciates the change of pace. message_colour += blue:Cheibriados thoroughly appreciates the change of pace. message_colour ^= blue:Okawaru is honoured by your kill message_colour += blue:You now have .* gold pieces (gained .* message_colour ^= magenta:distortion ##Message muting message_colour += mute:Things that are here: message_colour += mute:There is an open door here message_colour += mute:You (open|reach down and open) the door. message_colour += mute:You feel sick message_colour += mute:You headbutt.* message_colour ^= mute:your headbutt misses .* message_colour += mute:you block .* message_colour += mute:You furiously retaliate. message_colour += mute:You kick the .* message_colour += mute:You bite the .* message_colour += mute:Lightning courses through the.* message_colour += mute:.* bites you but does no damage. message_colour += mute:.* claws you but does no damage. message_colour += mute:.* pecks you but does no damage. message_colour += mute:.* elephant trunk-slaps .* message_colour += mute:accepts your kill message_colour += mute:The zombie hands constrict .* message_colour += mute:Zombie hands grab the .* message_colour += mute:Decaying hands burst forth from the earth. message_colour += mute:Your fire vortex resists. message_colour += mute:(You see here|Found) .* stone(|s). message_colour += mute:(You see here|Found) .* arrow(|s). message_colour += mute:(You see here|Found) .* bolt(|s). message_colour += mute:(You see here|Found) a club. message_colour += mute:(You see here|Found) a robe. ##Force pause fmm := force_more_message fmm += distortion fmm += suddenly seem different fmm += strangely unstable fmm += (?-i:[A-Z]).* comes? into view fmm += player ghost.* comes? into view fmm += titanic fmm += The golden dragon goes berserk! fmm += A sentinel.s mark fmm += cast into the abyss fmm += you hear the fmm += breathes a plume of cal fmm += less protected from missiles fmm += have finished your manual fmm += is.*carrying a wand of fmm += Your surroundings flicker fmm += You cannot teleport right now fmm += (blundered into a|invokes the power of) Zot fmm += enter a teleport trap fmm += Ouch! That really hurt! fmm += dispelling energy hits you fmm += You are blasted by holy energy! fmm += You are (blasted|electrocuted)! fmm += You are.*(confused|poisoned) fmm += (starving|devoid of blood) fmm += god:(sends|finds|silent|anger) fmm += You feel a surge of divine spite fmm += disloyal to dabble fmm += lose consciousness fmm += You are too injured to fight blindly fmm += calcifying dust hits fmm += Space warps.*around you fmm += Space bends around you fmm += watched by something fmm += flickers and vanishes! fmm += doesn.t seem very happy fmm += is no longer charmed ##Runrest bad things runrest_stop_message += You flicker for a moment. runrest_stop_message += You flicker back into view. runrest_stop_message += You fall through a shaft runrest_stop_message += You are sucked into a shaft! .* runrest_stop_message += An alarm trap emits a blaring wail runrest_stop_message += (blundered into a|invokes the power of) Zot runrest_stop_message += flesh start runrest_stop_message += (starving|feel devoid of blood) runrest_stop_message += wrath finds you runrest_stop_message += lose consciousness runrest_stop_message += watched by something runrest_stop_message += appears from out of your range of vision runrest_stop_message += wand of acid ########### ## Slots ## ########### ##Spell Slots spell_slot += Absolute Zero:azeo spell_slot += Alistair.s intoxication:aisn spell_slot += Apportation:anpt 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:bvch 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:dtcl spell_slot += Death.s door:EAOI 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:eao spell_slot += Fire storm:fsmt spell_slot += Fireball:fbl spell_slot += Foxfire:fxr spell_slot += Freezing cloud:fcg spell_slot += Freeze:fezr spell_slot += Frozen Ramparts:frns spell_slot += Fulminant prism:fpm spell_slot += Gell.s Gravitas:gvt spell_slot += Haunt:htn spell_slot += Hydra form:hydf spell_slot += Ice form:crmf spell_slot += Ignition:ntg spell_slot += Iron shot:stnr spell_slot += Inner flame:frn spell_slot += Invisibility:Iie spell_slot += Irradiate:rtd spell_slot += Iskenderun.s battlesphere:bnk spell_slot += Leda.s Liquefaction:eai spell_slot += Lee.s rapid deconstruction:rld spell_slot += Lesser Beckoning:lbg spell_slot += Lehudib.s crystal spear:lcs spell_slot += Lightning bolt:lbt spell_slot += Magic dart:mdtc spell_slot += Malign gateway:mgy spell_slot += Mephitic cloud:mcd spell_slot += Metabolic englaciation:mcn spell_slot += Monstrous menagerie:mst spell_slot += Necromutation:eou spell_slot += Olgreb.s toxic radiance:oia spell_slot += Orb of destruction:dbn spell_slot += Ozocubu.s armour:oau spell_slot += Ozocubu.s refrigeration:cbz spell_slot += Pain:pnai spell_slot += Passage of golubria:uoi 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 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:stmf spell_slot += Sticky flame:yfk spell_slot += Sting:zptg spell_slot += Stone arrow:wtn spell_slot += Summon demon:dsmn spell_slot += Summon forest:ftms spell_slot += Summon greater demon:gds 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 ##Ability slots ability_slot += Berserk:k ability_slot += Blink:B ability_slot += Fly|flight:F ability_slot += Stop Flying:L ##Item slots item_slot ^= scroll of blinking:D item_slo2 ^= scroll of fear:E item_slot ^= scroll of fog:F item_slot ^= scroll of holy word:W item_slot ^= scroll of identify:Z item_slot ^= scroll of immolation:K item_slot ^= scroll of magic map:X item_slot ^= scroll of noise:f item_slot ^= scroll of random uselessness:f item_slot ^= scroll of silence:O item_slot ^= scroll of summoning:S item_slot ^= scroll of teleportation:Y item_slot ^= scroll of vulnerability:V item_slot ^= potion of ambrosia:G item_slot ^= potion of attraction:A item_slot ^= potion of berserk rage:T item_slot ^= potion of brilliance:B item_slot ^= potion of cancellation:C item_slot ^= potion of curing:J item_slot ^= potion of degeneration:f item_slot ^= potion of flight:L item_slot ^= potion of haste:H item_slot ^= potion of heal wounds:N item_slot ^= potion of invisibility:I item_slot ^= potion of lignification:P item_slot ^= potion of magic:Q item_slot ^= potion of mutation:U item_slot ^= potion of might:M item_slot ^= potion of resistance:R item_slot ^= wand of acid:h item_slot ^= wand of digging:d item_slot ^= wand of mindburst:y item_slot ^= wand of charming:e item_slot ^= wand of flame:q item_slot ^= wand of iceblast:i item_slot ^= wand of paralysis:p item_slot ^= wand of polymorph:j item_slot ^= wand of random effects:r item_slot ^= tin of tremorstones:g item_slot ^= condenser vane:l item_slot ^= phial of floods:w item_slot ^= lightning rod:v item_slot ^= box of beasts:z item_slot ^= Horn of Geryon:n item_slot ^= phantom mirror:m item_slot ^= stone:s ################# ## Autopickups ## ################# ae := autopickup_exceptions ae += 0 then return end if it.artefact then return true end local cur = items.equipped_at(good_slots[st]) if cur == nil then return true end if name:find("scarf") and you.xl()<20 then return true end if cur.branded or cur.artefact then return end if it.branded then return true end elseif st == "body" and want_body then local cur = items.equipped_at("armour") if cur == nil then return end if have_gds == false and name:find("gold dragon scales") then have_gds = true return true end if you.xl() > 10 then if not it.artefact and not possible_brand(name) then return end end local aValue = cur.ac * 20 if cur.plus then aValue = aValue + cur.plus * 10 end local bValue = it.ac * 20 if it.plus then bValue = bValue + it.plus * 10 end if it.artefact then bValue = bValue + 120 end if possible_brand(name) then bValue = bValue + 20 end if bValue > aValue then return true end elseif st == "shield" and want_shield then if you.base_skill("Shields") > 14 and it.ac < 5 then return end if it.artefact then return true end local cur = items.equipped_at("Shield") if cur == nil then if you.xl()<14 then return true else return end end if it.ac >= cur.ac then if it.branded or possible_brand(name) then return true end end end elseif class == "weapon" then if it.ego() == "Distortion" then return end local cur = items.equipped_at("Weapon") if cur == nil then return end local aValue = cur.damage * 10 if cur.plus then aValue = aValue + cur.plus * 5 end if cur.hands == 2 and want_shield then aValue = aValue - 40 end if cur.ego() == "vampirism" then aValue = aValue + 75 end if cur.ego() == "flaming" or cur.ego() == "freezing" or cur.ego() == "electrocution" or cur.ego() == "chopping" then aValue = aValue + 35 end if cur.ego() == "venom" or cur.ego() == "draining" or cur.ego() == "protection" then aValue = aValue + 20 end local bValue = it.damage * 10 if it.plus then bValue = bValue + it.plus * 5 end if it.ego() == "vampirism" then bValue = bValue + 50 end if it.hands == 2 and want_shield then bValue = bValue - 40 end if it.ego() == "flaming" or it.ego() == "freezing" or it.ego() == "electrocution" or it.ego() == "chopping" then bValue = bValue + 35 end if it.ego() == "venom" or it.ego() == "draining" or it.ego() == "protection" then bValue = bValue + 20 end if it.artefact and not it.fully_identified then bValue = bValue + 100 end if possible_brand(name) then bValue = bValue + 75 end if name:find("enchant") then bValue = bValue + 15 end if it.weap_skill == "Axes" and want_axe then if you.xl() < 18 then if possible_brand(name) or it.ego() == "flaming" then return true end end if bValue > aValue then return true end elseif it.weap_skill == "Polearms" and want_polearm then if bValue > aValue then return true end elseif it.weap_skill == "Bows" and want_bow then if you.xl() < 18 then if name:find("runed") or name:find("glowing") or name:find("shiny") then return true end end local bValue = it.damage * 10 if it.plus then bValue = bValue + it.plus * 3 end if it.ego() == "flaming" or it.ego() == "freezing" then bValue = bValue + 20 end if it.artefact and not it.fully_identified then bValue = bValue + 100 end if name:find("runed") or name:find("glowing") or name:find("shiny") then bValue = bValue + 50 end if bValue > aValue then return true end end end return end add_autopickup_func(pickup_equipment) function possible_brand(name) if name:find("runed") or name:find("glowing") or name:find("dyed") or name:find("embroidered") or name:find("shiny") then return true end return end } { last_turn = you.turns() fm_patterns = { {name = "50mhp", cond = "maxhp", cutoff = 50, pattern = "orc priest|electric eel|gnoll"}, {name = "60mhp", cond = "maxhp", cutoff = 60, pattern = "acid dragon|steam dragon|manticore|ogre|centaur|killer bee|water moccasin"}, {name = "80mhp", cond = "maxhp", cutoff = 80, pattern = "gargoyle|meliai|yaktaur|orc warrior|troll"}, {name = "90mhp", cond = "maxhp", cutoff = 90, pattern = "centaur warrior|efreet|molten gargoyle|tengu conjurer|orc (warlord|knight)"}, {name = "110mhp", cond = "maxhp", cutoff = 110, pattern = {"centaur warrior", "deep elf", "cyclops", "efreet", "molten gargoyle", "tengu conjurer", "yaktaur captain", "necromancer", "deep troll earth mage", "hell knight", "boulder beetle", "stone giant", "ugly thing", "two-headed ogre", "ogre mage"} }, {name = "160mhp", cond = "maxhp", cutoff = 160, pattern = {"(fire|ice|quicksilver|shadow|storm) dragon", "(fire|frost) giant", "war gargoyle","hydra","thorn hunter","minotaur","merfolk javelineer"} }, {name = "500mhp", cond = "maxhp", cutoff = 500, pattern = "orb of fire|caustic shrike|curse skull|curse toe|iron giant|juggernaut|shining eye"}, } -- end fm_patterns active_fm = {} -- Set to true to get a message when the fm change notify_fm = false -- Wrapper of crawl.mpr() that prints text in white by default. if not mpr then mpr = function (msg, color) if not color then color = "white" end crawl.mpr("<" .. color .. ">" .. msg .. "") end end function init_force_mores() for i,v in ipairs(fm_patterns) do active_fm[#active_fm + 1] = false end end function update_force_mores() local activated = {} local deactivated = {} local hp, maxhp = you.hp() for i,v in ipairs(fm_patterns) do local msg = nil if type(v.pattern) == "table" then for j, p in ipairs(v.pattern) do if msg == nil then msg = p else msg = msg .. "|" .. p end end else msg = v.pattern end msg = "(" .. msg .. ").*into view" local action = nil local fm_name = v.pattern if v.name then fm_name = v.name end if not v.cond and not active_fm[i] then action = "+" elseif v.cond == "xl" then if active_fm[i] and you.xl() >= v.cutoff then action = "-" elseif not active_fm[i] and you.xl() < v.cutoff then action = "+" end elseif v.cond == "maxhp" then if active_fm[i] and maxhp >= v.cutoff then action = "-" elseif not active_fm[i] and maxhp < v.cutoff then action = "+" end end if action == "+" then activated[#activated + 1] = fm_name elseif action == "-" then deactivated[#deactivated + 1] = fm_name end if action ~= nil then local opt = "force_more_message " .. action .. "= " .. msg crawl.setopt(opt) active_fm[i] = not active_fm[i] end end if #activated > 0 and notify_fm then mpr("Activating force_mores: " .. table.concat(activated, ", ")) end if #deactivated > 0 and notify_fm then mpr("Deactivating force_mores: " .. table.concat(deactivated, ", ")) end end local last_turn = nil function force_mores() if last_turn ~= you.turns() then update_force_mores() last_turn = you.turns() end end init_force_mores() }