Last active
December 18, 2023 16:32
-
-
Save quill18/1bf44f9589800d2c694d09f69f4487dc to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Crawl Init file | |
# See the README for further details: | |
# https://github.com/gammafunk/dcss-rc/blob/master/README.md | |
# NOTE: This RC has things enabled only for my username. If you're just | |
# including this RC file in your own with | |
# | |
# include = gammafunk.rc | |
# | |
# then you don't have to worry about these. However if you're copy all or parts | |
# of gammafunk.rc directly into your own RC file, look for any sections | |
# conditioned on my username and follow notes in the comments for removing or | |
# modifying them. | |
################ | |
### RC files ### | |
################ | |
# Only load RandomTiles.rc under my username. If copying this part of my RC | |
# directly into your own, remove this section including the beginning and | |
# ending lines with '{' and '}'. If you don't want RandomTiles, you don't need | |
# to replace it with anything. If you do want RandomTiles, replace this section | |
# with the line: | |
# | |
# include = RandomTiles.rc | |
# | |
# and see the comments in the ready() function section as well. | |
{ | |
if you.name() == "gammafunk" then | |
-- Prevent gammaspeed.rc from trying to load this file twice. | |
gammafunk_rc_loaded = true | |
crawl.read_options("RandomTiles.rc") | |
end | |
} | |
############### | |
### Display ### | |
############### | |
view_delay = 300 | |
hp_colour = 100:green, 99:lightgray, 75:yellow, 50:lightred, 25:red | |
mp_colour = 100:green, 99:lightgray, 75:yellow, 50:lightred, 25:red | |
hp_warning = 50 | |
monster_list_colour = | |
monster_list_colour += friendly:green,neutral:brown,good_neutral:brown | |
monster_list_colour += trivial:darkgrey,easy:lightgrey,tough:yellow | |
monster_list_colour += nasty:lightred | |
############### | |
### Console ### | |
############### | |
equip_bar = true | |
## For item_glyph, subsequent matches override previous ones. | |
item := item_glyph | |
## Reasonable defaults | |
item += potion:lightgrey | |
item += scroll:lightgrey | |
item += wand:lightgrey | |
item += dangerous_item:blue | |
item += useless_item:darkgrey | |
### Potions ### | |
item += potions? of.*(curing|flight):lightgrey | |
item += potions? of.*heal wounds:white | |
item += potions? of.*berserk:brown | |
item += potions? of.*might:yellow | |
item += potions? of.*brilliance:cyan | |
item += potions? of.*magic:lightcyan | |
item += potions? of.*(lignification|ambrosia|attraction):blue | |
item += potions? of.*experience:lightred | |
item += potions? of.*resistance:green | |
item += potions? of.*(haste|invisibility):lightgreen | |
item += potions? of.*cancellation:magenta | |
item += potions? of.*mutation:lightmagenta | |
### Scrolls ### | |
: if you.race() == "Vampire" or you.race() == "Mummy" | |
: or you.race() == "Ghoul" then | |
item += scroll.*holy word:darkgrey | |
item += scroll.*torment:brown | |
: else | |
item += scroll.*holy word:brown | |
item += scroll.*torment:darkgrey | |
: end | |
item += scroll.*summoning:yellow | |
item += scroll.*acquirement:white | |
item += scroll.*identify:cyan | |
item += scroll.*magic mapping:lightcyan | |
item += scroll.*(silence|vulnerability|immolation):blue | |
item += scroll.*(fog|teleport):green | |
item += scroll.*(fear|blink):lightgreen | |
item += scroll.*enchant:magenta | |
item += scroll.*brand weapon:lightmagenta | |
### Wands ### | |
item += wand of.*random effects:blue | |
# Single target damage. | |
item += wand of.*flame:brown | |
item += wand of.*mindburst:yellow | |
# "Transmutations" | |
item += wand of.*polymorph:green | |
item += wand of.*digging:lightgreen | |
item += wand of.*acid:cyan | |
item += wand of.*iceblast:lightcyan | |
# Hexes | |
item += wand of.*paralysis:magenta | |
item += wand of.*charming:lightmagenta | |
### General Identification ### | |
item += (identified|known).*(jewellery|magical staff):brown | |
item += unidentified.*(potion|scroll|jewellery|wand|magical staff).*:lightblue | |
item += manual:lightcyan | |
### Jewellery ### | |
item += identified.*artefact.*(jewellery):white | |
item += unidentified.*artefact.*(jewellery).*:lightmagenta | |
item += (a )?stones?$:lightgray | |
# Want this to override anything above | |
item += useless:darkgrey | |
# Only mark these types when forbidden; for other types it looks odd. | |
item += forbidden.*(potion|scroll):red | |
mons := mon_glyph | |
# Monsters that can be easy to miss | |
mons ^= * : ✱ | |
mons ^= dancing weapon : cyan { | |
mons ^= spectral weapon : lightcyan { | |
# Classed Demonspawn | |
mon += blood saint:9 | |
mon += warmonger:9 | |
mon += corrupter:9 | |
mon += black sun:9 | |
# Wall glyphs; requires a font and terminal that can render these. | |
feature += crystal wall {░} | |
feature += stone wall {▒} | |
feature += metal wall {▓} | |
feature += unnaturally hard rock wall {█} | |
feature += altar {⚑} | |
############# | |
### Tiles ### | |
############# | |
tile_full_screen = false | |
tile_map_pixels = 3 | |
################### | |
### Menu Colors ### | |
################### | |
# These should match the item_glyph colours exactly when possible. | |
# For menu_colour, the first match ignores subsequent matches. | |
menu := menu_colour | |
menu = | |
# Many of the entries below come from dat/defaults/menu_colours.txt, | |
# which we have to duplicate here since we want only some of the | |
# entries from that file. | |
menu += notes:white:Reached XP level | |
### General Inventory### | |
# Items currently not affecting you. | |
menu += darkgrey:(melded) | |
# Items disliked by your god. | |
menu += red:forbidden | |
# Useless items, comes here to override artefacts etc. | |
menu += darkgrey:.*useless.* | |
# Handle cursed and equipped items early to override other colour settings. | |
menu += lightred:.*equipped.* cursed | |
menu += inventory:lightgreen:.*equipped.* | |
# Colouring of autoinscribed god gifts | |
menu += pickup:lightred:god gift | |
# Highlight (partly) selected items | |
menu += inventory:white:\w \+\s | |
menu += inventory:white:\w \#\s | |
### Potions ### | |
menu += lightgrey:potions? of.*(curing|flight) | |
menu += white:potions? of.*heal wounds | |
menu += brown:potions? of.*berserk | |
menu += yellow:potions? of.*might | |
menu += cyan:potions? of.*cancellation | |
menu += lightcyan:potions? of.*mutation | |
menu += blue:potions? of.*(lignification|ambrosia|attraction) | |
menu += lightred:potions? of.*experience | |
menu += green:potions? of.*resistance | |
menu += lightgreen:potions? of.*(haste|invisibility) | |
menu += magenta:potions? of.*brilliance | |
menu += lightmagenta:potions? of.*magic | |
### Scrolls ### | |
: if you.race() == "Vampire" or you.race() == "Mummy" | |
: or you.race() == "Ghoul" then | |
menu += darkgrey:scroll.*holy word | |
menu += brown:scroll.*torment | |
: else | |
menu += brown:scroll.*holy word | |
menu += darkgrey:scroll.*torment | |
: end | |
menu += yellow:scroll.*(summoning) | |
menu += white:scroll.*acquirement | |
menu += cyan:scroll.*identify | |
menu += lightcyan:scroll.*magic mapping | |
menu += blue:scroll.*(noise|silence|vulnerability|immolation) | |
menu += green:scroll.*(fog|teleport) | |
menu += lightgreen:scroll.*(fear|blink) | |
menu += magenta:scroll.*enchant | |
menu += lightmagenta:scroll.*brand weapon | |
### Wands ### | |
menu += blue:wand of.*random effects | |
# Single target damage. | |
menu += brown:wand of.*flame | |
menu += yellow:wand of.*mindburst | |
# "Transmutations" | |
menu += green:wand of.*polymorph | |
menu += lightgreen:wand of.*digging | |
# AOE damage. | |
menu += cyan:wand of.*acid | |
menu += lightcyan:wand of.*iceblast | |
# Hexes | |
menu += magenta:wand of.*paralysis | |
menu += lightmagenta:wand of.*charming | |
### General identification ### | |
menu += lightcyan:manual | |
menu += lightmagenta:unidentified.*artefact.* | |
menu += white:.*artefact.* | |
menu += lightblue:unidentified .*(potion|scroll|wand|jewellery|spellbook|rod|magical staff) | |
menu += inventory:lightgray:.*(jewellery|magical staff) | |
# Ego items | |
menu += lightblue:unidentified.*weapon.*(runed|glowing|enchanted) | |
menu += lightblue:unidentified.*armour.*(runed|glowing|embroidered|shiny|dyed) | |
################# | |
### Interface ### | |
################# | |
default_manual_training = true | |
equip_unequip = true | |
sort_menus = true:equipped,identified,basename,art,ego,glowing,qualname,charged,slot | |
ability_menu = false | |
autofight_stop = 50 | |
autofight_caught = true | |
autofight_wait = false | |
bindkey = [~] CMD_LUA_CONSOLE | |
############################ | |
### Travel & Exploration ### | |
############################ | |
rest_wait_both = true | |
travel_delay = -1 | |
explore_delay = -1 | |
rest_delay = -1 | |
show_travel_trail = false | |
explore_stop += greedy_items | |
################## | |
### Autopickup ### | |
################## | |
# Add staves, misc; note you can't use += with this option. | |
autopickup = $?!:"/}| | |
ae := autopickup_exceptions | |
ae += <throwing net | |
# Exceptions | |
# I use immolation somewhat early on, and vulnerability is useful the entire | |
# game. | |
ae += <vulnerability|immolation | |
# Tend to not use these. | |
ae += >scrolls? of silence | |
# Don't ever need a second stave | |
ae += staff of .* | |
################ | |
### 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|(?<!orc )wizard|ogre mage|great orb of eyes|sphinx).*into view | |
more += (vampire knight|basilisk|deep elf (sorcerer|demonologist)).*into view | |
# Torment/flay or hellfire | |
more += (flayed ghost|royal mummy|mummy priest|fiend|tzitzimitl).*into view | |
more += (tormentor|curse toe|curse skull|hell sentinel|hellion).*into view | |
more += (deep elf (sorcerer|high priest)|draconian scorcher).*into view | |
# Things that can hit for over 90+ damage in a turn that is either ranged or | |
# very fast. | |
more += ((deep elf|draconian) annihilator|tengu reaver).*into view | |
more += (lich|orb of fire|executioner|juggernaut|shrike).*into view | |
# Any uniques and any pan lords | |
more += (?-i:[A-Z]).* comes? into view | |
stop := runrest_stop_message | |
ignore := runrest_ignore_message | |
:if you.god() == "Xom" then | |
stop += god: | |
:else | |
ignore += god: | |
:end | |
# Bad things | |
stop += A huge blade swings out and slices into you | |
stop += starving | |
stop += wrath finds you | |
stop += lose consciousness | |
stop += hell_effect: | |
# Expiring effects | |
stop += You feel yourself slow down | |
stop += You are starting to lose your buoyancy | |
stop += Your hearing returns | |
stop += Your transformation is almost over | |
stop += back to life | |
stop += time is quickly running out | |
stop += life is in your own hands | |
stop += is no longer charmed | |
# Annoyances | |
ignore += contamination has completely | |
ignore += your breath back | |
ignore += talk: | |
ignore += talk_visual: | |
ignore += friend_spell: | |
ignore += friend_enchant: | |
ignore += friend_action: | |
ignore += sound: | |
########################### | |
### Spell/Ability slots ### | |
########################### | |
ability_slot += Fly|flight:lF | |
ability_slot += Stop Flying:L | |
ability_slot += Breathe:t | |
ability_slot += Invisibility:iv | |
# Abilities prone to miskeys. | |
ability_slot += Blink:IB | |
ability_slot += Berserk:k | |
ability_slot += Corrupt:C | |
ability_slot += Enter the Abyss:E | |
# 4 letters from words of the spell name at (1) beginning, (2) end, | |
# of words in the spell, (3) anywhere from the spell name, or (4) from the | |
# names of the spell schools, in order of preference. | |
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 | |
# 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:fezr | |
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:stnr | |
spell_slot += Inner flame:frn | |
spell_slot += Invisibility:iyvb | |
spell_slot += Irradiate:ierd | |
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:mdtc | |
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: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 | |
# 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:stmf | |
spell_slot += Sticky flame:yfk | |
spell_slot += Sting:zptg | |
spell_slot += Stone arrow:wtn | |
spell_slot += Storm form:somf | |
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 | |
# 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 | |
######################## | |
### Autoinscriptions ### | |
######################## | |
show_god_gift = unident | |
ai := autoinscribe | |
ai += potions? of berserk rage:!q | |
ai += scrolls? of silence:!r | |
ai += of faith:!P | |
ai += manual of:!d | |
# Prevent melee with all staves; if we want to melee with one, it's safe to | |
# require removing the annotation. | |
ai += magical staff:!a | |
ai += (large rock|throwing net|curare|of dispersal):=f | |
# Convenient shortcuts | |
ai += curing:@q1 | |
ai += potions? of heal wounds:@q2 | |
ai += potions? of haste:@q3 | |
ai += scrolls? of teleportation:@r2 | |
ai += identify:@r1 | |
############## | |
### Morgue ### | |
############## | |
note_hp_percent = 10 | |
note_all_skill_levels = true | |
note_chat_messages = false | |
user_note_prefix = >> | |
note_items += experience,of resistance, Archmagi | |
note_items += crystal plate armour,pearl dragon scales | |
note_items += artefact | |
note_messages += You feel monstrous | |
note_messages += You pass through the gate | |
note_messages += cast .* Abyss | |
# Noteable monsters | |
# Undead | |
note_monsters += ancient lich,curse skull,curse toe,royal mummy | |
# Depths | |
note_monsters += caustic shrike | |
# Special hall_of_zot spawns | |
note_monsters += killer klown,electric golem,orb of fire | |
dump_message_count = 30 | |
dump_order = header,hiscore,stats,misc,mutations,skills,spells,inventory | |
dump_order += overview,screenshot,monlist,messages,skill_gains,action_counts | |
dump_order += vaults,notes,kills,turns_by_place,xp_by_level | |
############ | |
## Macros ## | |
############ | |
# Only make these macros for my username. If copying this part of my RC | |
# directly into your own, remove these lines including the '{' and '}' if you | |
# don't want RandomTiles or save_with_message. If you want either of those, | |
# replace these lines with normal RC macro lines like: | |
# | |
# macros += M S ===save_with_message | |
# macros += M 8 ===new_random_tile | |
# ... | |
# | |
{ | |
-- Must use crawl.setopt() for the name condition to work. | |
if you.name() == "gammafunk" then | |
crawl.setopt("macros += M 1 zz") | |
crawl.setopt("macros += M S ===save_with_message") | |
crawl.setopt("macros += M 8 ===new_random_tile") | |
crawl.setopt("macros += M 9 ===set_tile_by_name") | |
crawl.setopt("macros += M 0 ===toggle_tile_timer") | |
crawl.setopt("macros += M - ===toggle_random_tile") | |
end | |
} | |
########### | |
### Lua ### | |
########### | |
{ | |
-- Equipment autopickup (by Medar and various others) | |
local function pickup_equipment(it, name) | |
if it.is_useless then return end | |
local class = it.class(true) | |
if class == "armour" then | |
local good_slots = {cloak="Cloak", helmet="Helmet", | |
gloves="Gloves", boots="Boots"} | |
st, _ = it.subtype() | |
-- Autopickup found aux armour if 1) we don't have any or 2) it's artefact, | |
-- or 3) if we don't have artefact or ego armour, and the found armour is | |
-- ego. | |
if good_slots[st] ~= nil then | |
if good_slots[st] == "Gloves" and you.has_claws() > 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) | |
-- Spellcasting spam reduction by monqy | |
local function generic_cast_spell(cmd) | |
crawl.mpr('<cyan>Cast which spell?</cyan>') | |
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 | |
} | |
# 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 .. "</" .. color .. ">") | |
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 = "(?<!spectral )(" .. msg .. ")(?! (skeleton|zombie|simulacrum)).*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() | |
------------------------- | |
---- End force_mores ---- | |
------------------------- | |
---------------------------- | |
---- Begin load_message ---- | |
---------------------------- | |
-- See README.md for documentation. | |
message_color = "white" | |
-- 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 .. "</" .. color .. ">") | |
end | |
end | |
function save_with_message() | |
if you.turns() == 0 then | |
crawl.sendkeys("S") | |
return | |
end | |
crawl.formatted_mpr("Save game and exit?", "prompt") | |
local res = crawl.getch() | |
if not (string.char(res) == "y" or string.char(res) == "Y") then | |
crawl.formatted_mpr("Okay, then.", "prompt") | |
return | |
end | |
crawl.formatted_mpr("Leave a message: ", "prompt") | |
local res = crawl.c_input_line() | |
c_persist.message = res | |
crawl.sendkeys(control("s")) | |
end | |
function load_message() | |
if c_persist.message and c_persist.message ~= "nil" | |
and c_persist.message ~= "" then | |
mpr("MESSAGE: " .. c_persist.message, message_color) | |
c_persist.message = nil | |
end | |
end | |
----------------------------------- | |
---- End leave message on save ---- | |
----------------------------------- | |
} | |
# 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() | |
-- Enable these only for my username. If copying this portion of my RC into | |
-- your own and you don't want these features, remove everything from the 'if | |
-- you.name() ...' line to the ' end' line corresponding to that 'if' | |
-- statement. If you do want those features, remove only the 'if' line and | |
-- its corresponding ' end' line so that they're not conditioned on my | |
-- username. | |
if you.name() == "gammafunk" then | |
-- load_message.lua | |
load_message() | |
-- RandomTiles | |
random_tile() | |
end | |
end | |
} | |
############# | |
### Debug ### | |
############# | |
fsim_rounds = 10000 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment