############### # Fancy Lua ######################################################### ############### { function quaff_id() for it in inventory() do if it.class(true) == "potion" and not (it.name():find("potion of") or it.name():find("potions of")) then l = items.index_to_letter(it.slot) magic("q" .. l) return true end end end function read_id() for it in inventory() do if it.class(true) == "scroll" and not (it.name():find("scroll of") or it.name():find("scrolls of") or it.tried) then l = items.index_to_letter(it.slot) items.swap_slots(it.slot, items.letter_to_index('Y'), false) magic("rY\rY b") -- hack that seems to handle all scrolls somehow return true end end end function magic(command) crawl.process_keys(command .. string.char(27) .. string.char(27) .. string.char(27)) end function inventory() return iter.invent_iterator:new(items.inventory()) end } ############## # Autopickup # ############## include += hugedmg.rc pickup_mode = multi autopickup = $?!:"/%|\ ae := autopickup_exceptions ae = ae += useless_item, dangerous_item, evil_item ae += (amulet|ring|staff|rod|tome) of { add_autopickup_func(function(it, name) if it.class(true) == "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 return false end) } ########## # Travel # ########## travel_delay = -1 explore_stop = items,greedy_items,greedy_pickup,greedy_pickup_gold explore_stop += greedy_visited_item_stack,stairs,shops,altars,gates explore_stop += greedy_sacrificeable show_travel_trail = false stop := runrest_stop_message stop = ignore := runrest_ignore_message ignore = # Annoyances ignore += Jiyva gurgles merrily ignore += Jiyva appreciates your sacrifice ignore += Jiyva says: Divide and consume ignore += You hear.*splatter ignore += You feel.*sick ignore += disappears in a puff of smoke ignore += engulfed in a cloud of smoke ignore += standing in the rain ignore += engulfed in white fluffiness ignore += safely over a trap ignore += A.*toadstool withers and dies ignore += toadstools? grow ignore += You walk carefully through the ignore += grinding sound ignore += contamination has completely ignore += chunks of flesh in your inventory.*rotted away ignore += lightning rod has recharged runrest_ignore_poison = 2:10 runrest_ignore_monster += butterfly:1 # Bad things stop += found.*trap stop += You fall through a shaft stop += An alarm trap emits a blaring wail stop += (blundered into a|invokes the power of) Zot 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 += less insulated 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 : if you.race() == "Ghoul" then stop += smell.*(rott(ing|en)|decay) stop += something tasty in your inventory : end :if you.god() == "Xom" then stop += god: :else ignore += god: :end ignore += pray: ignore += talk: ignore += talk_visual: ignore += friend_spell: ignore += friend_enchant: ignore += friend_action: ignore += sound: ########### # Prompts # ########### more := force_more_message more = # 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 # Interrupts more += You don't.* that spell more += You fail to use your ability more += You miscast Controlled Blink more += You can't (read|drink) that 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 += The writing blurs in front of your eyes more += You fall through a shaft more += A huge blade swings out and slices into 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|electrocuted) more += You are.*(confused|poisoned) stop += flesh start more += (starving|devoid of blood) more += wrath finds you more += lose consciousness more += You are too injured to fight blindly more += Green shoots are pushing up through the earth # Hell effects more += You will not leave this place more += Die\, mortal more += We do not forgive those who trespass against us more += Trespassers are not welcome here more += You do not belong in this place more += Leave now\, before it is too late more += We have you now more += You smell brimstone more += Brimstone rains from above more += You feel lost and a long\, long way from home more += You shiver with fear more += You feel a terrible foreboding more += Something frightening happens more += You sense an ancient evil watching you more += You suddenly feel all small and vulnerable more += You sense a hostile presence more += A gut-wrenching scream fills the air more += You hear words spoken in a strange and terrible language more += You hear diabolical laughter # Expiring effects more += You feel yourself slow down more += less insulated 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 += shroud falls apart # Others more += You have reached level more += Your scales start more += You feel monstrous more += Jiyva alters your body : if you.god() == "Xom" then more += god: : end ############# # Interface # ############# equip_unequip = true allow_self_target = no easy_confirm = all confirm_butcher = never sacrifice_before_explore = true auto_sacrifice = true auto_eat_chunks = true auto_drop_chunks = yes easy_eat_contaminated = true hp_warning = 50 hp_colour = 100:green, 99:lightgray, 75:yellow, 50:lightred, 25:red mp_colour = 100:green, 99:lightgray, 75:yellow, 50:lightred, 25:red stat_colour = 3:red, 7:lightred small_more = true show_inventory_weights = true show_gold_turns = true show_game_turns = true default_manual_training = true skill_focus = true sort_menus = true : equipped, art, basename, qualname, curse, qty # Spellcasting spam reduction by monqy { local function generic_cast_spell(cmd) crawl.mpr('Cast which spell?') crawl.flush_prev_message() crawl.process_keys(cmd) end function cast_spell() generic_cast_spell('z') end function force_cast_spell() generic_cast_spell('Z') end } ################### # Message colours # ################### $inedible := darkgrey $evil := red $preferred := yellow $rot-inducing := lightred $mutagenic := magenta $dangerous := magenta $poisonous := lightgreen $contaminated := brown ### standard colours to be used for message highlighting $danger := lightred $warning := yellow $boring := darkgrey $item_dmg := $danger msc := message_colour msc = menu := menu_colour menu = # Multi-turn channel.multiturn = mute # Allies msc += mute:returns to your side msc += mute:a demon appears msc += mute:puff of smoke msc += mute:carefully avoids msc += mute:is recalled msc += mute:wall.*burn.*your msc += mute:dissolves? into (sparkling lights|shadows) msc += mute:you swap places msc += mute:your.*(looks stronger|shudders|resist) msc += mute:(stumbles backwards|holds.*ground) msc += mute:(something|your).*(misses|does no damage) msc += mute:your.*(blinks|safely over|gestures) msc += mute:(phases out.*|misses) (your|something).* msc += mute:your.*but does no damage msc += mute:your.*(picks up|drops) msc += mute:your.*basks in the mutagenic energy # Prayer channel.pray += mute # Jiyva : if you.god() == "Jiyva" then msc += mute:slurping|squelching msc += mute:splits in two msc += mute:You feel.*(less hungry|power returning|better) : end # Interface msc += mute:Cast which spell\? \( msc += mute:^Casting.* msc += mute:Confirm with \. or Enter, or press \? or \* to list all spells\. msc += mute:Press\: \? - help, Shift-Dir - straight line, f - you msc += mute:for a list of commands and other information msc += mute:melds.* msc += mute:Switching to.* msc += mute:Switching back.* msc += mute:No target in view! # Other msc += mute:This raw flesh tastes terrible msc += mute:melds into your body msc += mute:begins to bleed from.*wounds msc += mute:writhes in agony as.*flesh msc += mute:An air elemental.*itself.*the air msc += mute:You feel a.*surge of power msc += mute:Your legs become a tail as you enter the water # Default colours msc += $danger:drains you msc += $danger:feel drained msc += $danger:strangely unstable msc += $danger:curare-tipped.*hits you msc += $danger:Space warps.* around you msc += $danger:Space bends around you msc += $danger:sense of stasis msc += $danger:clumsily bash msc += $danger:goes berserk msc += $danger:Forgetting.* will destroy the book msc += $danger:The blast of calcifying dust hits you msc += $danger:You are engulfed in calcifying dust msc += $danger:is moving more slowly msc += $danger:^It .* you msc += $danger:You block its attack msc += $danger:constricts you msc += $danger:you convulse msc += $item_dmg:acid corrodes msc += $item_dmg:catch(es)? fire msc += $item_dmg:freezes? and shatters? msc += $item_dmg:covered with spores msc += $item_dmg:devours some of your food msc += $item_dmg:rots? away msc += $warning:ticking.*clock msc += $warning:dying ticks msc += $warning:distant snort msc += $warning:odd grinding sound msc += $warning:creaking of ancient gears msc += $warning:floor suddenly vibrates msc += $warning:a sudden draft msc += $warning:coins.*counted msc += $warning:tolling.*bell msc += $warning:fails to return msc += $warning:no longer ripe msc += $boring:You start (resting|waiting) msc += $boring:Unknown command msc += $boring:but (do no|doesn't do any) damage msc += $boring:(prevent|prevents) you from hitting menu += inventory:white:\w \+\s menu += inventory:white:\w \#\s menu += darkgrey:(melded) menu += darkgrey:.*useless_item.* menu += red:.*evil_item.* menu += lightred: cursed menu += inventory:lightgreen:.*equipped.* menu += lightmagenta:.*misc.*rune( of Zot)? menu += lightmagenta:.*orb.*Zot menu += white:.*artefact.* menu += lightblue:^unidentified .*(potion|scroll|wand|jewellery).* menu += lightblue:^unidentified .*weapon.*(runed|glowing) menu += lightblue:^unidentified .*armour.*(runed|glowing) menu += lightblue:^unidentified .*armour.*(embroidered|shiny|dyed) menu += yellow:heal wounds # Food menu += $inedible:.*inedible.* menu += $evil:.*evil_eating.* menu += $rot-inducing:.*rot-inducing.* menu += $mutagenic:.*mutagenic.* menu += $poisonous:.*poisonous.* menu += $contaminated:.*contaminated.* #################### # Autoinscriptions # #################### autoinscribe += (distortion|vampiric):!w autoinscribe += (bad|dangerous)_item.*potion:!q autoinscribe += (bad|dangerous)_item.*scroll:!r autoinscribe += of faith:!P autoinscribe += rod of:!a autoinscribe += staff of (Wucad Mu|energy|channeling|wizardry|power):!a : if you.race() == "Vampire" then autoinscribe += of blood:@*1 autoinscribe += of coagulated blood:@*2 : else autoinscribe += chunks? of:@*1 : end : if you.god() == "Fedhas" then autoinscribe += fruit:!e : end ############### # Keybindings # ############### # Useless commands bindkey = [R] CMD_NO_CMD_DEFAULT bindkey = [T] CMD_NO_CMD_DEFAULT bindkey = [D] CMD_NO_CMD_DEFAULT bindkey = [O] CMD_NO_CMD_DEFAULT bindkey = [|] CMD_NO_CMD_DEFAULT bindkey = [^E] CMD_NO_CMD_DEFAULT # Macro keys bindkey = [`] CMD_NO_CMD_DEFAULT bindkey = [1] CMD_NO_CMD_DEFAULT bindkey = [2] CMD_NO_CMD_DEFAULT bindkey = [3] CMD_NO_CMD_DEFAULT bindkey = [4] CMD_NO_CMD_DEFAULT bindkey = [6] CMD_NO_CMD_DEFAULT bindkey = [7] CMD_NO_CMD_DEFAULT bindkey = [8] CMD_NO_CMD_DEFAULT bindkey = [9] CMD_NO_CMD_DEFAULT bindkey = [0] CMD_NO_CMD_DEFAULT # Wizmode bindkey = [&] CMD_NO_CMD_DEFAULT # Targeting bindkey = [\] CMD_TARGET_OBJ_CYCLE_FORWARD bindkey = [^I] CMD_TARGET_CYCLE_FORWARD # Saving bindkey = [S] CMD_SAVE_GAME_NOW ######### # Notes # ######### dump_on_save = true dump_message_count = 30 dump_order = header,hiscore,stats,misc,mutations,skills,spells,inventory dump_order += screenshot,monlist,messages,action_counts,vaults,notes,kills ood_interesting = 6 note_hp_percent = 10 note_all_skill_levels = true ############### # Spell slots # ############### # Utility spells spell_slot += Dispel undead:q spell_slot += Alistair's intoxication:Q spell_slot += Abjuration:w spell_slot += Mass abjuration:W spell_slot += Apportation:e spell_slot += Recall:r spell_slot += Summon butterflies:R spell_slot += Control teleport:t spell_slot += Insulation:i spell_slot += Ozocubu's armour:aA spell_slot += Stoneskin:aA spell_slot += Phase shift:aA spell_slot += Shroud of golubria:aA spell_slot += Swiftness:s spell_slot += Repel missiles:d spell_slot += Deflect missiles:d spell_slot += Darkness:D spell_slot += Flight:f spell_slot += Levitation:f spell_slot += Ring of flames:F spell_slot += Regeneration:g spell_slot += Silence:G spell_slot += Haste:h spell_slot += Invisibility:j spell_slot += Death's door:J spell_slot += Borgnjor's revivification:L spell_slot += Blink:b spell_slot += Controlled blink:B spell_slot += Projected noise:N spell_slot += Sublimation of blood:n spell_slot += Necromutation:M # Transformations spell_slot += Beastly appendage:zxc spell_slot += Spider form:zxc spell_slot += Ice form:zxc spell_slot += Blade hands:zxc spell_slot += Statue form:XC spell_slot += Dragon form:XC # Low-level spells spell_slot += Freeze:z spell_slot += Magic dart:z spell_slot += Flame tongue:z spell_slot += Pain:z spell_slot += Shock:z spell_slot += Sandblast:z spell_slot += Sting:z spell_slot += Ensorcelled hibernation:z spell_slot += Confusing touch:Z spell_slot += Confuse:x spell_slot += Slow:x spell_slot += Vampiric draining:x spell_slot += Summon small mammals:zx spell_slot += Throw frost:zx spell_slot += Throw flame:zx spell_slot += Call imp:zx spell_slot += Static discharge:ZX spell_slot += Mephitic cloud:c # Mid-level spells spell_slot += Stone arrow:zxc spell_slot += Iskenderun's mystic blast:zxc spell_slot += Sticky flame:zxc spell_slot += Throw icicle:zxc spell_slot += Venom bolt:zxc spell_slot += Summon scorpions:zxc spell_slot += Summon demon:zxc spell_slot += Airstrike:zxc spell_slot += Agony:zxc spell_slot += Lee's rapid deconstruction:XC spell_slot += Poisonous cloud:XC spell_slot += Freezing cloud:XC spell_slot += Ozocubu's refrigeration:ZX # High-level spells spell_slot += Lightning bolt:xcv spell_slot += Fireball:xcv spell_slot += Bolt of:xcv spell_slot += Iron shot:xcv spell_slot += Poison arrow:xcv spell_slot += Orb of destruction:xcv spell_slot += Lehudib's crystal spear:xcv spell_slot += Chain lightning:XCV spell_slot += Fire storm:V spell_slot += Ice storm:V spell_slot += Shatter:V spell_slot += Tornado:V # Default letters spell_slot += .*:yuopYUOP ################# # Miscellaneous # ################# char_set = unicode show_player_species = true # Features #cset_unicode = item_gold:£ cset_unicode = door_closed: + cset_unicode = cloud:# feature = explore horizon {.,,green} # Monsters mon_glyph = ice beast:ice Y mon_glyph = sky beast:mutagenic Y mon_glyph = hippogriff:Q mon_glyph = griffon:Q mon_glyph = harpy:Q mon_glyph = tengu:Q mon_glyph = boggart:i mon_glyph = dancing weapon:7 mon_glyph = greater mummy:magenta mon_glyph = tough sensed monster:lightred mon_glyph = nasty sensed monster:red # Dwarves mon_glyph = Wiglaf:lightcyan g mon_glyph = dwarf:lightcyan g mon_glyph = deep dwarf:lightblue g mon_glyph = deep dwarf scion:cyan g mon_glyph = deep dwarf artificer:blue g mon_glyph = deep dwarf necromancer:magenta g mon_glyph = deep dwarf berserker:lightred g mon_glyph = deep dwarf death knight:green g mon_glyph = unborn deep dwarf:lightmagenta L # Mimics mon_glyph = item mimic:lightmagenta x mon_glyph = feature mimic:lightmagenta x # Lua autopickup (currently disabled) { local function autopickup(it, name) local class = it.class(true) local branch = you.branch() -- For multi-Zig runs. local zigscumming = false if it.is_useless then return false end -- For Pan runs. if branch == "Pandemonium" or branch:find("Zig") then if class == "wand" and not zigscumming then if name:find("heal wounds") or name:find("hasting") or name:find("teleportation") then return true end end if class == "scroll" then if name:find("acquirement") or name:find("identify") or name:find("magic mapping") then return true end if not zigscumming and (name:find("amnesia") or name:find("blinking") or name:find("enchant armour") or name:find("enchant weapon") or name:find("fog") or name:find("holy word") or name:find("recharging") or name:find("remove curse") or name:find("teleportation")) then return true end end if class == "jewellery" and not it.identified then return true end if class == "potion" then if name:find("cure mutation") or name:find("experience") or name:find("gain") or name:find("magic") or name:find("restore abilities") then return true end if not zigscumming and (name:find("curing") or name:find("heal wounds") or name:find("porridge")) then return true end end if class == "food" then if name:find("ambrosia") or name:find("royal jelly") then return true end end -- For normal gameplay. elseif not zigscumming then -- Armour autopickup by rwbarton. 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 == "wand" then if name:find("confusion") or name:find("enslavement") or name:find("flame") or name:find("frost") or name:find("magic dart") or name:find("random effects") or name:find("slowing") then return false else return true end end if class == "scroll" then if name:find("detect curse") or name:find("fear") or name:find("torment") or name:find("unholy creation") or name:find("vorpalise weapon") or name:find("vulnerability") then return false else return true end end if class == "jewellery" and not it.identified then return true end if class == "potion" then if name:find("blood") and you.race() ~= "Vampire" or name:find("levitation") or name:find("water") then return false else return true end end if class == "book" then if name:find("tome of Destruction") then return false else return true end end if class == "staff" and not it.identified then return true end if class == "food" then if name:find("ambrosia") or name:find("honeycomb") or name:find("ration") or name:find("royal jelly") then return true end end end if you.god() == "Nemelex Xobeh" and class == "miscellaneous" and name:find("deck") then return true end return false end -- add_autopickup_func(autopickup) }