# Key bindings: # F5 — open known-spells menu (pick which one to cast) # F6 — toggle autofight_throw (ranged autofight on/off) # F7 — toggle explore_auto_rest (autoexplore rests at low HP/MP on/off) # # Notable behaviours: # * Enter at the cast prompt repeats your last spell (enable_recast_spell). # * Newly-learned library spells start hidden (auto_hide_spells). # * autoexplore waits out negatives/cooldowns/contam before resuming. # * Tab is pure melee — quivered spells/wands are NOT auto-fired. # * Failure-≥3 spells prompt; bad items prompt; one-way hatches prompt. # * Auto-exclude rings around oklobs, statues, curse skulls, etc. ############ GENERAL SETTINGS ############ default_manual_training = true show_more = false view_delay = 300 auto_hide_spells = true enable_recast_spell = true show_resist_percent = true show_paged_inventory = false sort_menus = inv: true : equipped, charged, identified, usefulness, slot # Animations — keep beam visible, suppress monster flicker for speed. use_animations = beam, hp, monster_in_sight, branch_entry, range reduce_animations = true # Combat / exploration pacing autofight_stop = 70 autofight_warning = 20 autofight_caught = true autofight_wait = true autofight_fires = false autofight_prompt_range = true fail_severity_to_quiver = 4 rest_wait_percent = 100 rest_wait_both = true rest_wait_ancestor = true explore_auto_rest = true explore_auto_rest_status = all_negative, all_cooldown, contam explore_delay = 1 travel_delay = -1 travel_key_stop = false travel_one_unsafe_move = false explore_wall_bias = 0 explore_stop_pickup_ignore = arrow, dart travel_open_doors = open # Targeting darken_beyond_range = true # Auto-explore stops explore_stop = stairs,shops,altars,portals,branches,runed_doors,runes explore_stop += artefacts,glowing_items,greedy_pickup_smart,greedy_visited_item_stack # Auto-mark exclusions around dangerous stationary/sleeping threats so # autoexplore won't walk into LOS. auto_exclude = oklob,statue,curse skull,roxanne,hyperactive ballistomycete auto_exclude += lurking horror,silent spectre,floating eye,glowing orange brain auto_exclude += guardian mummy,torpor snail,moth of wrath,sleepcap auto_exclude += ironbound convoker # HP/MP bar colors hp_colour = 100:lightgreen, 99:lightgray, 75:yellow, 50:lightred, 25:red mp_colour = 100:cyan, 99:lightgray, 75:yellow, 50:lightred, 25:red stat_colour = 1:lightred, 3:red, 7:yellow hp_warning = 50 enemy_hp_colour = green green brown brown magenta red # Safe-cast / confirmation prompts allow_self_target = prompt fail_severity_to_confirm = 3 warn_contam_cost = true warn_hatches = true bad_item_prompt = true show_invis_targeter = true equip_unequip = true always_show_zot = false always_show_gems = false more_gem_info = false confirm_action += Death's Door confirm_action += Borgnjor's Revivification note_skill_levels = 1,3,6,9,12,15,18,21,24,27 note_messages += magical essence is drained by the effort dump_message_count = 50 dump_book_spells = false dump_on_save = true dump_kill_breakdowns = true dump_item_origins = >0 regex_search = true autopickup_search = true stash_tracking = all annotate_item_class = always easy_floor_use = true prompt_menu = true equip_bar = true mlist_allow_alternative_layout = true status_caption_colour = brown # Webtiles-only HUD (silently ignored in console builds) tile_show_threat_levels = true tile_show_demon_tier = true tile_player_status_icons = true action_panel = !?/} action_panel_show_unidentified = true action_panel_orientation = horizontal tile_layout_priority = minimap, inventory, gold_turn, command, spell, ability, monster tile_level_map_hide_messages = true tile_show_player_species = false # Empty placeholder for sharing macros across characters. additional_macro_file = ############ HIGH-CONTRAST MINIMAP ############ # Each tile color is picked to stand out strongly from neighbors. # Floor/items are near-black so monsters and features pop. tile_floor_col = #050505 tile_item_col = #ffcc00 tile_wall_col = #666666 tile_door_col = #ff8c00 tile_upstairs_col = #00ff44 tile_downstairs_col = #ff1a1a tile_branchstairs_col = #ffa500 tile_feature_col = #ffff44 tile_explore_horizon_col = #aaaaaa tile_unseen_col = #000000 tile_plant_col = #2ecc40 tile_water_col = #0074d9 tile_deep_water_col = #001f7f tile_lava_col = #ff4136 tile_trap_col = #ff00ff tile_transporter_col = #ff66ff tile_transporter_landing_col= #66ffaa tile_player_col = #ffffff tile_monster_col = #ee2222 tile_neutral_col = #ffd700 tile_friendly_col = #00cc66 tile_peaceful_col = #66cc66 tile_excl_centre_col = #2222ee tile_excluded_col = #404088 dos_use_background_intensity = true # Monster list colors (text UI) monster_list_colour = monster_list_colour += friendly:green,neutral:brown monster_list_colour += good_neutral:brown monster_list_colour += trivial:darkgrey,easy:lightgrey monster_list_colour += tough:yellow,nasty:lightred ############ AUTOPICKUP ############ ae := autopickup_exceptions # Avoid stale rings/amulets pickups ae += >ring of (poi|resist cor|fli|see) ae += >amulet of (the acr|fai|the gou|gua|har|mag|rag|ref|reg) # Junk scrolls/wands/rings ae += >scrolls? of (amn|noise) ae += >wand of rand ae += >ring of (protection from (mag|fire|cold)|mag|ste|ice|fire|pos|wil|wiz) ae += >ring of (dex|int|str) # Worth picking up ae ^= staff of # Conditional pickup tweaks : if you.race() == "Mummy" or you.race() == "Demonspawn" or you.race() == "Revenant" then ae ^= scrolls? of torment : end : if you.race() == "Tengu" or you.race() == "Merfolk" or you.race() == "Barachi" or you.race() == "Octopode" then ae += >potions? of flight : end # Avoid routing through deep water for permanent-flyers / amphibious races # (they swim/fly safely but it's still slow / risky for travel pathing). : if you.race() == "Tengu" or you.race() == "Felid" or you.race() == "Spriggan" then travel_avoid_terrain = deep water : end : if you.race() == "Troll" or you.race() == "Oni" then ae += potions? of brilliance ae += >potions? of berserk ae += >magical staff : end : if you.god() == "Zin" then ae ^= potions? of ambro : end : if you.god() == "Cheibriados" then default_autopickup = false : end : if you.race() == "Spriggan" or you.race() == "Gnoll" then default_autopickup = false : else default_autopickup = true : end ############ AUTO INSCRIBE ############ ai := autoinscribe ai += scrolls? of identify:@r1 ai += scrolls? of fog:@r2 ai += scrolls? of teleportation:@r3 ai += scrolls? of blinking:@r4 ai += scrolls? of revelation:@r5 ai += potions? of heal wounds:@q1 ai += potions? of curing:@q2 ai += potions? of might:@q3 ai += potions? of haste:@q5 ai += potions? of berserker rage:@q6 ai += potion of blood:@q9 ai += potions? of moonshine:!q ai += scrolls? of poison:!r ai += scrolls? of vulnerability:!r ai += scrolls? of silence:!r ai += scrolls? of summoning:!r ai += staff of conjuration:!a ai += staff of wizardry:Wiz, !a ai += staff of air:rElec !a ai += staff of fire:rF+ !a ai += staff of cold:rC+ !a ai += staff of death:rN+ !a ai += staff of poison:rPois !a autoinscribe ^= scroll of silence:!r ############ FORCE MORES ############ more := force_more_message # Generic dangers (status / effects) more += Your body becomes as fragile as glass! more += malevolent more += Your transformation has ended more += You feel weirdly uncertain more += You occasionally lose the ability to read scrolls when taking damage more += You feel firmly anchored in space more += You feel a little pissed off more += You are yanked towards a nearby monster! more += You are yanked towards some nearby monsters! more += You feel more firmly anchored in space more += Found a gateway leading deeper into the Abyss more += A sentinel's mark forms upon you more += You lose the ability to read scrolls when threatened more += You stop ascending the stairs more += wielding .*distort more += watched by something more += mighty Pandemonium lord more += calcifying dust hits you more += you have finished your manual of more += crystal spear hits you more += you have mastered more += feel a terrible chill more += strangely unstable more += power of zot more += expect to remain undetected more += your icy armour evaporates more += come back to life more += revert to your normal more += enter a teleport trap more += Vehumet offers you more += You fall through a shaft more += Your time is quickly running out! more += It guards the demonic rune of Zot more += You turn into a (filthy swine|insubstantial wisp|sentient fungus|bat) # Always announce a new enemy in LOS more += comes? into view # Nasty threats entering LOS more += guardian serpent.*come more += orbs? of (fire|winter|entropy) .*come more += curse toe.*come more += greater mumm.*come more += hell sentinel.*come more += curse skull.*come more += ghost moth.*come more += swamp worm bursts forth more += floating eye.*come more += vault sentinel.*come more += vault warden.*come more += ironbound (preserver|convoker|frostheart|thunderhulk).*come more += royal jelly.*come more += tzitzimitl.*come more += seraph.*come more += pearl dragon.*come more += shadow dragon.*come more += quicksilver dragon.*come more += The royal jelly comes? into view more += Cerebov.*come more += Asmodeus.*come more += Antaeus.*come more += Dispater.*come more += Ereshkigal.*come more += Mnoleg.*come more += Lom Lobon.*come more += Gloorx Vloq.*come more += Mlioglotl.*come more += The Serpent of Hell.*come # Pan lords / orb-run threats (catch-all by phrasing) more += zenata.*(comes? into view|opens the). more += parghit.*(comes? into view|opens the). more += josephina.*(comes? into view|opens the). more += vv.*(comes? into view|opens the). more += lodul.*(comes? into view|opens the). more += amaemon.*(comes? into view|opens the). # Named uniques (extant in 0.34; excludes Jozef/Purgy which are gone). more += Agnes.*(comes? into view|opens the). more += Aizul.*(comes? into view|opens the). more += Antaeus.*(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 += 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 += Frederick.*(comes? into view|opens the). more += Gastronok.*(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 += Khufu.*(comes? into view|opens the). more += Kirke.*(comes? into view|opens the). more += Lom Lobon.*(comes? into view|opens the). more += Louise.*(comes? into view|opens the). more += Maggie.*(comes? into view|opens the). more += Mara.*(comes? into view|opens the). more += Margery.*(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 += Mioglotl.*(comes? into view|opens the). more += Mnoleg.*(comes? into view|opens the). more += Murray.*(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 += Robin.*(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 += 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 += Xtahua.*(comes? into view|opens the). # XL-gated reminders : if you.xl() <= 7 then more += is wielding .*elec : end : if you.xl() <= 11 then more += two-headed ogre.*come : end : if you.xl() <= 16 then more += sorcerer.*come more += ogre mage.*come : end : if you.xl() <= 18 then more += (a|2|3|4|5|6|7|8|9) wizard.*come more += occultist.*come : end : if you.xl() <= 22 then more += wielding .*distortion more += demonologist.*come ai += weapon .*distort:!w : end : if you.race() == "Demonspawn" or you.race() == "Mummy" or you.race() == "Revenant" then more += wielding .*holy : end ############ MONSTER ALERT (first-sight --More--) ############ # Use monster_alert for "first time I see X this level" prompts that don't # spam every turn the monster is visible. monster_alert += uniques, unusual monster_alert += orb of (fire|winter|entropy) monster_alert += curse skull monster_alert += ghost moth monster_alert += tentacled monstrosity monster_alert += pan lord unusual_monster_items = disto, chaos, curare, throwing net, silver, pain, freezing, flaming, electrocution ############ RUNREST / TRAVEL INTERRUPTS ############ # Ignore harmless interrupts during rest/travel. runrest_ignore_message += You feel .* sick runrest_ignore_message += disappears? in a puff of smoke runrest_ignore_message += engulfed in a cloud of smoke runrest_ignore_message += standing in the rain runrest_ignore_message += safely over a trap runrest_ignore_message += A.+toadstool withers and dies runrest_ignore_message += Your scales? feels? .* against your skin runrest_ignore_message += Your magical effects are unaffected runrest_ignore_message += Your transformation is almost over # Stop rest/travel on critical status changes. runrest_stop_message += You feel yourself slow down runrest_stop_message += sense of stasis runrest_stop_message += You are starting to lose your buoyancy runrest_stop_message += Your icy armour evaporates runrest_stop_message += Your transformation is almost over runrest_stop_message += Your shroud falls apart runrest_stop_message += Your hand stops glowing runrest_stop_message += Your antimagic field dissipates # Ignore distant non-threats (they don't actually approach during rest). runrest_ignore_monster += butterfly:1 runrest_ignore_monster += plant:1 runrest_ignore_monster += fungus:1 runrest_ignore_monster += bush:1 # Suppress noisy regen messages during rest. message_colour += mute:You start (resting|searching) message_colour += mute:Done waiting message_colour += mute:^Unknown command\.$ message_colour += lightred:warning:You are in a bad position message_colour += lightcyan:god:Vehumet message_colour += lightmagenta:god:Xom ############ MENU COLOURS / ITEM HIGHLIGHTS ############ # Highlight items by tag inside menus. menu_colour ^= inventory:lightcyan:.*god gift menu_colour ^= inventory:lightmagenta:.*unrand menu_colour ^= inventory:yellow:.*artefact menu_colour ^= inventory:lightred:.*forbidden menu_colour ^= inventory:lightblue:.*emergency_item menu_colour ^= inventory:darkgrey:.*useless_item menu_colour ^= inventory:lightgreen:.*ego menu_colour ^= pickup:white:gold piece menu_colour ^= notes:white:Reached XP level menu_colour ^= notes:cyan:Identified menu_colour ^= notes:lightred:HP: 1/ # Highlight unidentified consumables (yellow) and uncast books (green). menu_colour ^= inventory:yellow:potion of (unknown|.*\?) menu_colour ^= inventory:yellow:scroll labelled menu_colour ^= inventory:yellow:wand of (unknown|.*\?) menu_colour ^= inventory:lightgreen:book of (?!.*memorised) menu_colour ^= inventory:lightgreen:.*manual of ############ DROP FILTER ############ df := drop_filter df += brilliance df += torment df += amnesia df += ring of positive energy df += ring of magical power df += amulet of magic regeneration df += ring of flight df += wand of charming df += wand of iceblast df += wand of paralysis df += wand of disintegration ############ ITEM SLOTS ############ item_slot ^= wand of digging:v item_slot ^= wand of acid:c item_slot ^= wand of quicksilver:c item_slot ^= wand of light:c item_slot ^= wand of iceblast:i item_slot ^= wand of roots:i item_slot ^= (condenser vane):V item_slot ^= (tremorstone):B item_slot ^= (lightning rod):R item_slot ^= (box of beasts):C item_slot ^= (phantom mirror):M ############ SPELL SLOTS (0.34-current only) ############ # Removed compared to sg.txt: Conjure flame, Dazzling flash, Gell's gravitas, # Spider form, Spellforged servitor (renamed), Animate armour (renamed), # Summon lightning spire (renamed), Lightning bolt (replaced). # Renames applied: Awaken Armour, Spellspark Servitor, Forge Lightning Spire. spell_slot += Airstrike:aAeEiIrRsStTkK spell_slot += Alistair's intoxication:aiAIsnSNlLtToOxXcCrR spell_slot += Animate dead:adADeEnNiImMtT spell_slot += Apportation:aAnNpPoOrRtTiI spell_slot += Awaken Armour:aAerERnNimIMoOuUtT spell_slot += Blink:bBkKlLiInN spell_slot += Borgnjor's revivification:brBRsnSNoeOEvVgiGIjJfFcCaAtT spell_slot += Borgnjor's vile clutch:bvcBVCsehSEHoilOILruRUgtGTnNjJ spell_slot += Call canine familiar:cfCFlerLERaAnmNMiI spell_slot += Call imp:ciCIlpLPamAM spell_slot += Cause fear:cfCFerERaAuUsS spell_slot += Chain lightning:clCLngNGhiHIaAtT spell_slot += Confusing touch:ctCTghGHoOnuNUfFsSiI spell_slot += Conjure ball lightning:cblCBLegEGoaiOAInNjhJHutUTrR spell_slot += Death channel:dcDChlHLeEaAtnTN spell_slot += Death's door:dDsrSReoEOaAtThH spell_slot += Discord:dDiIsScCoOrR spell_slot += Disjunction:JdDnNiIsSjJuUcCtToO spell_slot += Dispel undead:duDUlLinINsSpePEaA spell_slot += Dispersal:dDlLiIsSpPeErRaA spell_slot += Dragon's call:dcDCslSLraRAgGoOnN spell_slot += Ensorcelled hibernation:ehEHdnDNiIsbSBoOrRcCaAltLT spell_slot += Eringya's noxious bog:enbENBsgSGroROixIXyuYUaA spell_slot += Fire storm:fsFSemEMitITroRO spell_slot += Fireball:fFlLiIrReEbBaA spell_slot += Forge Lightning Spire:slSLngeNGEuipUIPmMhrHRotOT spell_slot += Foxfire:fFeEoOxXiIrR spell_slot += Freeze:fFeErRzZ spell_slot += Freezing cloud:fcFCgdGDrlRLeoEOuUzZiInN spell_slot += Frozen ramparts:frFRnsNSaAomOMzpZPeEtT spell_slot += Fulminant prism:fpFPtmTMurURliLIsSnNaA spell_slot += Hailstorm:hHmMaAiIlLsStToOrR spell_slot += Haunt:hHtTaAuUnN spell_slot += Ignite poison:ipIPenENgoGOsStT spell_slot += Ignition:iInNgGtToO spell_slot += Infestation:iInNfFeEsStTaAoO spell_slot += Inner flame:ifIFreREnlNLaAmM spell_slot += Irradiate:iIeErRaAdDtT spell_slot += Iskenderun's battlesphere:ibIBseSEaAktKTnlNLdDrpRPuhUH spell_slot += Iskenderun's mystic blast:imbIMBsctSCTylYLkaKAeEnNdDrRuU spell_slot += Leda's liquefaction:lLsnSNeiEIdqDQauAUfFcCtToO spell_slot += Lee's rapid deconstruction:lrdLRDsnSNeaEApcPCioIOtTuU spell_slot += Lehudib's crystal spear:lcsLCSrRepEPhyHYuaUAdtDTiIbB spell_slot += Lesser beckoning:lbLBrgRGeEscSCkKoOnNiI spell_slot += Magic dart:mdMDctCTaAgrGRiI spell_slot += Malign gateway:mgMGnyNYaAltLTieIEwW spell_slot += Manifold assault:maMAdtDTsSnNiIfuFUolOL spell_slot += Maxwell's capacitive coupling:mcMCsegSEGaoAOxpuXPUwWlLiItnTNvV spell_slot += Mephitic cloud:mcMCdDelELpoPOhuHUiItT spell_slot += Metabolic englaciation:meMEcnCNtgTGalALbBoOiI spell_slot += Monstrous menagerie:mMseSEoOnNaAtgTGrRuiUI spell_slot += Olgreb's toxic radiance:otrOTRsceSCElaLAgxdGXDiIbnBN spell_slot += Orb of destruction:odODbnBNreREsStTuUcCiI spell_slot += Ozocubu's armour:oaOAsrSRzZmMcCuUbB spell_slot += Ozocubu's refrigeration:orORsnSNzeZEfFcCuiUIbgBGaAtT spell_slot += Passage of golubria:pgPGeaEAoOslSLuUbBrRiI spell_slot += Passwall:pPlLaAsSwW spell_slot += Petrify:pPyYeEtTrRiIfF spell_slot += Poisonous vapours:pvPVsSoaOAiIuUnrNR spell_slot += Polar vortex:pvPVrxRXoOlLatATeE spell_slot += Sandblast:sStTaAnNdDbBlL spell_slot += Searing ray:srSRgyGYeaEAiInN spell_slot += Shatter:sSrRhHaAtTeE spell_slot += Shock:sSkKhHoOcC spell_slot += Silence:sSeEiIlLnNcC spell_slot += Slow:sSwWlLoO spell_slot += Spellspark Servitor:sSdrDRpePElvLViIftFToOgG spell_slot += Starburst:sStTaArRbBuU spell_slot += Static discharge:sdSDceCEtiTIaAhHrRgG spell_slot += Sticky flame:sfSFyeYEtlTLiaIAcmCMkK spell_slot += Sting:sSgGtTiInN spell_slot += Stone arrow:saSAewEWtrTRoOnN spell_slot += Sublimation of blood:sbSBndNDulULoOiImMaAtT spell_slot += Summon forest:sfSFntNTuoUOmrMReE spell_slot += Summon horrible things:shtSHTneNEuoUOmriMRIgGbBlL spell_slot += Summon hydra:shSHnaNAuyUYmdMDrRoO spell_slot += Summon ice beast:sibSIBnetNETucUCmaMAoO spell_slot += Summon mana viper:smvSMVnarNARuiUIpPeEoO spell_slot += Summon small mammal:smSMnlNLuaUAoO spell_slot += Swiftness:sSwWiIfFtTnNeE spell_slot += Teleport other:toTOrReElhLHpP spell_slot += Tukima's dance:tdTDseSEuaUAknKNicICmM spell_slot += Vampiric draining:vdVDcgCGarARmMpiPInN spell_slot += Yara's violent unravelling:yvuYVUstgSTGainAINroROlLeE ############ ANTI-PROMPT SQUELCHERS ############ { function c_answer_prompt(prompt) if prompt == "Annotate level on other end of current stairs?" then return false end if prompt == "Are you sure you want to leave the Dungeon? This will make you lose the game!" then return false end end } ############ LUA: STARTUP / READY HOOK ############ { local opened_skills = false local greeted = false function ready() if you.turns() == 0 and not opened_skills then opened_skills = true crawl.sendkeys("m") end if not greeted then greeted = true crawl.mpr("F5=spells " .. "F6=autothrow " .. "F7=autorest " .. "F8=more-mores " .. "F9=portal-time " .. "F10=cheiwalk " .. "F11=resists") end end } ############ LUA: TOGGLES ############ { local aft = false function toggle_autothrow() if aft then crawl.setopt("use_animations += beam, monster") crawl.setopt("autofight_throw = false") crawl.mpr("Autofight_throw is OFF.") else crawl.setopt("use_animations -= beam, monster") crawl.setopt("autofight_throw = true") crawl.mpr("Autofight_throw is ON.") end aft = not aft end local autorestmode = true function toggle_autorest() if autorestmode then crawl.setopt("explore_auto_rest = false") crawl.mpr("Autorest during explore is OFF.") else crawl.setopt("explore_auto_rest = true") crawl.mpr("Autorest during explore is ON.") end autorestmode = not autorestmode end local mmores = false function toggle_more_mores() if mmores then crawl.setopt("force_more_message -= Found") crawl.mpr("Found-X mores OFF.") else crawl.setopt("force_more_message += Found") crawl.mpr("Found-X mores ON.") end mmores = not mmores end local portalmode = false function toggle_portal_mode() if portalmode then crawl.setopt("show_game_time = false") crawl.mpr("Portal timer display OFF.") else crawl.setopt("show_game_time = true") crawl.mpr("Portal timer display ON.") end portalmode = not portalmode end local cheiwalk = false function toggle_cheiwalk() if cheiwalk then crawl.setopt("force_more_message -= comes? into view") crawl.mpr("Cheiwalk OFF (no more on enemy sight).") else crawl.setopt("force_more_message += comes? into view") crawl.mpr("Cheiwalk ON (more on every enemy).") end cheiwalk = not cheiwalk end -- Pretty-print current resistance pips on demand. local function pip(n) if n == nil or n == 0 then return "·" end if n < 0 then return "x" .. (-n) .. "" end if n >= 3 then return "+++" end return "" .. string.rep("+", n) .. "" end function print_resists() local hp, hpm = you.hp() local mp, mpm = you.mp() crawl.mpr(string.format( "HP %d/%d MP %d/%d " .. "rF%s rC%s rElec%s rPois%s rN%s rCorr%s Will%s SInv%s", hp, hpm, mp, mpm, pip(you.res_fire()), pip(you.res_cold()), pip(you.res_shock()), pip(you.res_poison()), pip(you.res_draining()), pip(you.res_corr()), pip(you.willpower()), pip(you.see_invisible() and 1 or 0))) end } ############ AUTOPICKUP LUA HOOK ############ { local function autopickup(it, name) local class = it.class(true) local weap = items.equipped_at("Weapon") local shie = items.equipped_at("Shield") if it.is_useless then return false end if class == "armour" then local aux_slots = {cloak="Cloak", helmet="Helmet", gloves="Gloves", boots="Boots", shield="Shield"} local st, _ = it.subtype() if aux_slots[st] == "Shield" then if (weap == nil or weap.hands == 1) and (shie == nil or it.branded) then return true end elseif aux_slots[st] ~= nil and items.equipped_at(aux_slots[st]) == nil then return true elseif st ~= "body" and it.branded then return true end end return nil end add_autopickup_func(autopickup) } ############ ABILITY SLOTS (stable letters for god abilities) ############ ability_slot += Renounce Religion:!@ ability_slot += Channel Magic:cC ability_slot += Stop Channelling:sS ability_slot += Bend Time:bB ability_slot += Enkindle:eE ############ GEAR SLOTS (stable letters for common artefacts) ############ gear_slot += amulet of reflection:R gear_slot += amulet of regeneration:G gear_slot += amulet of guardian spirit:S gear_slot += amulet of the acrobat:A gear_slot += ring of willpower:W gear_slot += ring of evasion:V gear_slot += ring of protection:P gear_slot += ring of resist corrosion:C ############ MACROS / KEYBINDINGS ############ # F5: open the known-spells menu (manual pick from learned spells). bindkey = [f5] CMD_DISPLAY_SPELLS # F6..F11 toggles. Key codes match Linux curses KEY_F(n). # If a code doesn't trigger on your terminal, run `\` then the F-key in-game # to see the actual code, and edit the numbers here. macros += M \{-266} ===toggle_autothrow macros += M \{-265} ===toggle_autorest macros += M \{-264} ===toggle_more_mores macros += M \{-263} ===toggle_portal_mode macros += M \{-262} ===toggle_cheiwalk macros += M \{-261} ===print_resists