# TEAMCAPTAIN Moanerette ## basics default_manual_training = true rest_wait_both = true autofight_caught = true hp_warning = 40 hp_colour = 100:green, 99:lightgray, 75:yellow, 50:lightred, 25:red mp_colour = 100:green, 99:lightgray, 75:yellow, 50:lightred, 25:red autopickup = $?!:"/}| autoinscribe += of faith:!P autoinscribe += potions? of berserk rage:!q autoinscribe += (bad|dangerous)_item.*scroll:!r ## keymap with vi keys that make sense on colemak keyboards bindkey = [h] CMD_MOVE_LEFT bindkey = [n] CMD_MOVE_DOWN bindkey = [e] CMD_MOVE_UP bindkey = [i] CMD_MOVE_RIGHT bindkey = [j] CMD_MOVE_UP_LEFT bindkey = [l] CMD_MOVE_UP_RIGHT bindkey = [b] CMD_MOVE_DOWN_LEFT bindkey = [k] CMD_MOVE_DOWN_RIGHT bindkey = [H] CMD_RUN_LEFT bindkey = [N] CMD_RUN_DOWN bindkey = [E] CMD_RUN_UP bindkey = [I] CMD_RUN_RIGHT bindkey = [J] CMD_RUN_UP_LEFT bindkey = [L] CMD_RUN_UP_RIGHT bindkey = [B] CMD_RUN_DOWN_LEFT bindkey = [K] CMD_RUN_DOWN_RIGHT bindkey = [h] CMD_TARGET_LEFT bindkey = [n] CMD_TARGET_DOWN bindkey = [e] CMD_TARGET_UP bindkey = [i] CMD_TARGET_RIGHT bindkey = [j] CMD_TARGET_UP_LEFT bindkey = [l] CMD_TARGET_UP_RIGHT bindkey = [b] CMD_TARGET_DOWN_LEFT bindkey = [k] CMD_TARGET_DOWN_RIGHT bindkey = [H] CMD_TARGET_DIR_LEFT bindkey = [N] CMD_TARGET_DIR_DOWN bindkey = [E] CMD_TARGET_DIR_UP bindkey = [I] CMD_TARGET_DIR_RIGHT bindkey = [J] CMD_TARGET_DIR_UP_LEFT bindkey = [L] CMD_TARGET_DIR_UP_RIGHT bindkey = [B] CMD_TARGET_DIR_DOWN_LEFT bindkey = [K] CMD_TARGET_DIR_DOWN_RIGHT bindkey = [h] CMD_MAP_MOVE_LEFT bindkey = [n] CMD_MAP_MOVE_DOWN bindkey = [e] CMD_MAP_MOVE_UP bindkey = [i] CMD_MAP_MOVE_RIGHT bindkey = [j] CMD_MAP_MOVE_UP_LEFT bindkey = [l] CMD_MAP_MOVE_UP_RIGHT bindkey = [b] CMD_MAP_MOVE_DOWN_LEFT bindkey = [k] CMD_MAP_MOVE_DOWN_RIGHT bindkey = [H] CMD_MAP_JUMP_LEFT bindkey = [N] CMD_MAP_JUMP_DOWN bindkey = [E] CMD_MAP_JUMP_UP bindkey = [I] CMD_MAP_JUMP_RIGHT bindkey = [J] CMD_MAP_JUMP_UP_LEFT bindkey = [L] CMD_MAP_JUMP_UP_RIGHT bindkey = [B] CMD_MAP_JUMP_DOWN_LEFT bindkey = [K] CMD_MAP_JUMP_DOWN_RIGHT # replace (e) with (u) # bindkey = [u] CMD_EAT # RIP FOOD bindkey = [u] CMD_TARGET_EXCLUDE bindkey = [u] CMD_MAP_EXCLUDE_AREA bindkey = [U] CMD_EXPERIENCE_CHECK bindkey = [U] CMD_MAP_FIND_EXCLUDED bindkey = [^U] CMD_TOGGLE_TRAVEL_SPEED bindkey = [^U] CMD_MAP_CLEAR_EXCLUDES # replace (i) with (y) bindkey = [y] CMD_DISPLAY_INVENTORY bindkey = [Y] CMD_DISPLAY_SPELLS bindkey = [Y] CMD_MAP_FIND_STASH bindkey = [^Y] CMD_AUTOFIGHT ## spell slots that are actually sort of part of my habits spell_slot += Foxfire:z 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 += Infusion:z spell_slot += Throw Frost:zxc spell_slot += Throw Flame:zxc spell_slot += Searing Ray:zxc spell_slot += Tukima's Dance:zxc spell_slot += Conjure Flame:XZ spell_slot += Stone Arrow:zxcv spell_slot += Dazzling Spray:zxcv spell_slot += Iskenderun's Mystic Blast:zxcv spell_slot += Force Lance:zxcv spell_slot += Sticky Flame:zxcv spell_slot += Throw Icicle:zxcv spell_slot += Venom Bolt:zxcv spell_slot += Airstrike:zxcv spell_slot += Confuse:zxcv spell_slot += Mephitic Cloud:cC spell_slot += Static Discharge:ZX 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 += Conjure Ball Lightning:XCV spell_slot += Fire Storm:V spell_slot += Maxwell's Capacitive Coupling:V spell_slot += Shatter:V spell_slot += Polar Vortex:V spell_slot += .*:yuiopYUIOP ## things from https://github.com/gammafunk/dcss-rc mostly the force_more stuff ################ ### Messages ### ################ channel.multiturn = mute msc := message_colour 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:(crumbles|melts) away\. msc += mute:(merges|forms) itself .* the air msc += mute:you swap places msc += mute:your.*(looks stronger|shudders|resists) msc += mute:your.*(stumbles backwards|holds.*ground) msc += mute:your.*(blinks|safely over) msc += mute:(phases out.*|misses) (your|something).* msc += mute:your.*(picks up|drops) msc += mute:your.*basks in the mutagenic energy msc += mute:your.*(struggles|tears|pulls away).*(web|net) more := force_more_message : if you.god() == "Ashenzari" then more += You have a vision of.*gates? : end more += The mighty Pandemonium lord .* resides here # Interrupts more += You don't .* that spell more += You fail to use your ability more += You miscast.*(Blink|Borgnjor|Door|Invisibility) more += You can't (read|drink|do) more += You cannot .* while unable to breathe more += You cannot .* in your current state more += when .*silenced more += too confused more += There's something in the way more += There's nothing to (close|open) nearby more += not good enough to have a special ability more += You are too berserk more += no means to grasp more += That item cannot be evoked more += You are held in a net more += You don't have any such object more += You can't unwield more += enough magic points more += You don't have the energy to cast that spell more += You are unable to access your magic # Bad things more += Your surroundings flicker more += You cannot teleport right now more += A sentinel's mark forms upon you more += (blundered into a|invokes the power of) Zot more += enter a teleport trap more += Ouch! That really hurt! more += dispelling energy hits you more += You are blasted by holy energy! more += You are (blasted|electrocuted)! more += You are.*(confused|poisoned) more += god:(sends|finds|silent|anger) more += You feel a surge of divine spite more += disloyal to dabble more += lose consciousness more += You are too injured to fight blindly more += calcifying dust hits more += Space warps.*around you more += Space bends around you more += watched by something more += flickers and vanishes! more += doesn't seem very happy more += is no longer charmed # Hell effects more += hell_effect: # 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 have a feeling this form more += You feel yourself come back to life more += time is quickly running out more += life is in your own hands more += You start to feel a little slower more += You feel less protected from missiles # Others more += You have reached level more += You rejoin the land of the living more += You have finished (your manual|forgetting about) more += Your scales start more += You feel monstrous more += Jiyva alters your body : if you.god() == "Xom" then more += god: : end # Dangerous monsters we force_more when first seen. # Things with ranged (or extremely fast), irresistable effects. more += ((floating|shining) eye|dream sheep|death drake).*into view more += (wretched star|apocalypse crab|death drake).*into view more += (entropy weaver|torpor snail|spriggan druid).*into view more += (vault (warden|sentinel)|merfolk (avatar|siren)).*into view more += (guardian serpent|draconian shifter|convoker|death cob).*into view more += (phantasmal warrior|air elemental).*into view # Paralysis/Petrify/Banish more += (orc sorcerer|(? 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 cur.branded or cur.artefact then return end if it.branded then return true end -- Autopickup found body armour of the same kind we're wearing, according -- to conditions (2) and (3) above used for aux slots. elseif st == "body" then local cur = items.equipped_at("armour") if cur == nil then return end if cur.name("qual") ~= it.name("qual") then return end if it.artefact then return true end if cur.branded or cur.artefact then return end if it.branded then return true end end end return end add_autopickup_func(pickup_equipment) } # Note: My final RC file has code from lua files found at: # https://github.com/gammafunk/dcss-rc/blob/master/README.md # starting from the line below. { --------------------------- ---- Begin force_mores ---- --------------------------- -- See README.md for documentation. last_turn = you.turns() -- Each entry must have a 'name' field with a descriptive name, a 'pattern' -- field, a 'cond' field giving the condition type, and a 'cutoff' field giving -- the max value for where the force_more will apply. Possible values for -- 'cond' are xl and maxhp. -- -- The 'pattern' field's value can be either a regexp string or array of regexp -- strings matching the appropriate monster(s). Any values are joined by "|" to -- make a new force_more of the form: -- -- ((?!spectral )VALUE1|VALUE2|...)(?! (skeleton|zombie|simularcrum)).*into view". -- -- To allow derived undead forms of a monster to match, include 'spectral ' at -- the beginning of and/or ' (skeleton|zombie|simularcrum)' at the end of your -- pattern for that monster. fm_patterns = { -- Fast, early game Dungeon problems for chars with low mhp. {name = "30mhp", cond = "maxhp", cutoff = 30, pattern = "adder|hound"}, -- Dungeon monsters that can damage you for close to 50% of your mhp with a -- ranged attack. {name = "40mhp", cond = "maxhp", cutoff = 40, pattern = "orc priest|electric eel"}, {name = "60mhp", cond = "maxhp", cutoff = 60, pattern = "acid dragon|steam dragon|manticore"}, {name = "70mhp", cond = "maxhp", cutoff = 70, pattern = "centaur(?! warrior)|meliai|yaktaur(?! captain)"}, {name = "80mhp", cond = "maxhp", cutoff = 80, pattern = "gargoyle|orc (warlord|knight)"}, {name = "90mhp", cond = "maxhp", cutoff = 90, pattern = {"centaur warrior", "deep elf archer", "efreet", "molten gargoyle", "tengu conjurer"} }, {name = "110mhp", cond = "maxhp", cutoff = 110, pattern = {"centaur warrior", "deep elf (mage|knight)", "cyclops", "efreet", "molten gargoyle", "tengu conjurer", "yaktaur captain", "necromancer", "deep troll earth mage", "hell knight", "stone giant"} }, {name = "160mhp", cond = "maxhp", cutoff = 160, pattern = {"(fire|ice|quicksilver|shadow|storm) dragon", "(fire|frost) giant", "war gargoyle", "draconian (knight|stormcaller)"} }, } -- 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 = "(?= 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() ------------------------- ---- End force_mores ---- ------------------------- } # The ready() function is needed for code that has to process each turn or UI # action. { function ready() -- Open skill screen on turn 0. if not skills_set and you.turns() == 0 then crawl.sendkeys("m") skills_set = true end -- force_mores.lua force_mores() end }