# ccsdt ##### Crawl Init file ############################################### # For descriptions of all options, as well as some more in-depth information # on setting them, consult the file # options_guide.txt # in your /docs directory. If you can't find it, the file is also available # online at: # https://github.com/crawl/crawl/blob/master/crawl-ref/docs/options_guide.txt # # Crawl uses the first file of the following list as its option file: # * init.txt in the -rcdir directory (if specified) # * .crawlrc in the -rcdir directory (if specified) # * init.txt (in the Crawl directory) # * ~/.crawl/init.txt (Unix only) # * ~/.crawlrc (Unix only) # * ~/init.txt (Unix only) # * settings/init.txt (in the Crawl directory) ##### Some basic explanation of option syntax ####################### # Lines beginning with '#' are comments. The basic syntax is: # # field = value or field.subfield = value # # Only one specification is allowed per line. # # The terms are typically case-insensitive except in the fairly obvious # cases (the character's name and specifying files or directories when # on a system that has case-sensitive filenames). # # White space is stripped from the beginning and end of the line, as # well as immediately before and after the '='. If the option allows # multiple comma/semicolon-separated terms (such as # autopickup_exceptions), all whitespace around the separator is also # trimmed. All other whitespace is left intact. # # There are three broad types of Crawl options: true/false values (booleans), # arbitrary values, and lists of values. The first two types use only the # simple =, with later options - which includes your options that are different # from the defaults - overriding earlier ones. List options allow using +=, ^=, # -=, and = to append, prepend, remove, and reset, respectively. Usually you will # want to use += to add to a list option. Lastly, there is := which you can use # to create an alias, like so: # ae := autopickup_exceptions # From there on, 'ae' will be treated as if it you typed autopickup_exceptions, # so you can save time typing it. # ##### Other files ################################################### # You can include other files from your options file using the 'include' # option. Crawl will treat it as if you copied the whole text of that file # into your options file in that spot. You can uncomment some of the following # lines by removing the beginning '#' to include some of the other files in # this folder. # Some useful, more advanced options, implemented in LUA. # include = advanced_optioneering.txt # Alternative vi bindings for Dvorak users. # include = dvorak_command_keys.txt # Alternative vi bindings for Colemak users. # include = colemak_command_keys.txt # Alternative vi bindings for Neo users. # include = neo_command_keys.txt # Override the vi movement keys with a non-command. # include = no_vi_command_keys.txt # Turn the shift-vi keys into safe move, instead of run. # include = safe_move_shift.txt show_paged_inventory = false autofight_stop = 30 autofight_fires = true fail_severity_to_confirm = 4 warn_hatches = false enable_recast_spell = true hp_warning = 25 enemy_hp_colour = green green brown brown magenta red clear_messages = false show_more = false small_more = false show_newturn_mark = true equip_bar = false item_stack_summary_minimum = 7 monster_item_view_coordinates = true messages_at_top = false show_blood = true #can be disabled tile_web_mobile_input_helper = auto #set to true for mobile language = es #de for german, es for spanish #Fun thing to do if bored #Options: dwarven (Pirate), jagerkin (heavy Russian accent), kraut (Heavy German accent), runes (It's runes), wide (w i d e), grunt (!!!), and butt (fart jokes): #fake_lang = [,[,...]] --fake_lang = grunt, dwarven #fake_lang = runes #autopickup = $?!+"/♦ # The above is the default list. The valid symbols are # ) Weapons # ( Missiles # [ Armour # / Wands # ? Scrolls # " or = Jewellery # ! Potions # + or : Books # | Staves # 0 Orbs # } Misc. items # $ Gold # ♦ Gems (Copy and paste symbol ♦ ♦ ♦ ) #autopickup = ()[|0}$?!+"/♦ autopickup = (|0}$?!+"/♦ explore_greedy = true explore_stop = stairs, shops, altars, portals, branches, runed_doors explore_greedy_visit = artefacts, glowing_items explore_greedy_visit -= stacks explore_stop_ignore += greedy_pickup, greedy_visited_item_stack, stacks, greedy_pickup_smart, visited_item_stack, unvisited_item_stack, item_stack, corpse explore_stop -= greedy_pickup, greedy_visited_item_stack, stacks, greedy_pickup_smart, visited_item_stack, unvisited_item_stack, item_stack, corpse explore_stop_pickup_ignore += greedy_pickup, greedy_visited_item_stack, stacks, greedy_pickup_smart, visited_item_stack, unvisited_item_stack, item_stack, corpse #explore_stop += greedy_pickup_smart #runrest_stop_message ^= hi runrest_ignore_message ^= You see here,Things that are here,Found an escape hatch,Found a stone staircase explore_auto_rest = true easy_floor_use = true sort_menus = auto:2 sort_menus = true : curse, equipped, art, ego, identified, glowing, qty, basename, qualname autopickup_exceptions += is never pick up #this is unnescesary, but why not autopickup_exceptions += show_god_gift = unident #3-n tile_show_items = |[=/?!0(}:) #Default: !?/=([)}:| # ) Weapons # ( Missiles # [ Armour # / Wands # ? Scrolls # " or = Jewellery # ! Potions # + or : Books # | Staves # 0 Orbs # } Misc. items # $ Gold # ♦ Gems (Copy and paste symbol ♦ ♦ ♦ ) #Minimap pixel colors tile_menu_icons = true tile_player_col = white tile_monster_col = #660000 tile_neutral_col = #660000 tile_peaceful_col = #664400 tile_friendly_col = #664400 tile_plant_col = #446633 tile_item_col = #005544 tile_unseen_col = black tile_floor_col = #333333 tile_wall_col = #666666 tile_mapped_floor_col = #222266 tile_mapped_wall_col = #444499 #tile_explore_horizon_col = #6b301b tile_explore_horizon_col = yellow tile_door_col = #775544 tile_downstairs_col = #ff00ff tile_upstairs_col = cyan tile_branchstairs_col = #ff7788 tile_portal_col = #ffdd00 tile_transporter_col = #0000ff tile_transporter_landing_col = #5200aa tile_feature_col = #997700 tile_trap_col = #aa6644 tile_water_col = #114455 tile_deep_water_col = #001122 tile_lava_col = #552211 tile_excluded_col = #552266 tile_excl_centre_col = #552266 tile_window_col = #558855 #Default 100 tile_runrest_rate = 50 #Might be fun, but could get confusing if playing a race commonly found in the dungeon, like a troll tile_show_player_species = false tile_show_threat_levels = nasty, unusual tile_layout_priority = minimap, inventory, command, spell, monster #Possible options #abilities, commands, inventory, memorisation, minimap, monsters, navigation, skills, spells, system commands tile_display_mode = tiles #try setting to hybrid or glyphs #tile_player_tile = mons:hellion #options are normal, playermons (just tile_show_player_species), mons:monster (use spaces (like mons:centaur warrior) (royal jelly or Sigmund could be fun), and tile:tile (use the name in the rctiles folder (try rock_wall?)) tile_weapon_offsets = reset tile_shield_offsets = reset # can be x,y tile_grinch = false #Keeping the Santa hats #4-b kill_map = friend:you, other:you dump_kill_places = all dump_item_origins = all #dump_item_origins = artefacts, ego_arm, staves #Options: artefacts, ego_arm, ego_weap, jewellery, runes, staves, books, all, none. dump_item_origin_price = 1 #setting to -1 disables this #spacer for dump #dump_order += - dump_message_count = 999999999 dump_order = header,hiscore,stats, vaults, overview,misc,notes,inventory,skills,spells, dump_order += ,mutations,screenshot,monlist,kills, dump_order += screenshots,skill_gains,action_counts dump_order += turns_by_place, kills_by_place, messages #4-c note_items += identify,acquirement,alchemy,conjuration,mutation,heal,curing note_monsters += centaur, centaur warrior, yaktaur, yaktaur captain, Boris note_skill_levels = 3,5,7,27 #7 is when IMB and prism get to yellow danger note_messages += The power to cast #5-a wiz_mode = no explore_mode = no #Colours: black, blue, green, cyan, red, magenta, brown, lightgrey, darkgrey, lightblue, lightgreen, lightcyan, lightred, lightmagenta, yellow, white #Magenta is more purple #Remaps black into orange #colour.black = orange custom_text_colours = black:#fcba03 #can't create new colours --------------------------------------------------------------------------------- :function muteexplore() :if crawl.messages(1):sub(1,-3) == "Done exploring." then message_colour += mute:Done exploring. :else message_colour -= mute:Done exploring :end :end --:ch_start_running("explore") -- :muteexplore() :function find_affinities () :local affinities = {0,0,0,0,0,0,0,0,0,0,0} --fire, ice, air, earth, alch, forge, hexes, necro/summon, conj/tloc -- 1 2 3 4 5 6 7 8 9 -- there are too many schools, so I had to combine four schools into two pairs. Spells like IMB count as 9 twice --"name",, "name", :local spell_types = {"Apportation",9,1, "Call Canine Familiar",8,3, "Call Imp",8,2, "Chain Lightning",39,9, "Dispersal",9,6, "Fireball",1,5, "Forge Monarch Bomb",19,6, "Foxfire",1,1, "Fulminant Prism",59,4, "Iskenderun's Mystic Blast",99,4, "Launch Clockwork Bee",6,3, "Magic dart",9,1, "Manifold Assault",9,7, "Maxwell's Portable Piledriver",9,3, "Orb of Destruction",9,7, "Passwall",4,3, "Permafrost eruption",24,6, "Searing Ray",9,2, "Shatter",4,9, "Silence",37,5, "Slow",7,1, "Spellspark Servitor",69,7, "Summon Horrible Things",8,8, "Summon Seismosaurus Egg",48,4} :for i,v in ipairs(spell_types) do :if i <= (#spell_types)/2 then :if spells.memorised(spell_types[i*3-2]) then :if i*2 <= #spell_types then :local spell_type = 0 :if #tostring(spell_types[i*3-1]) == 2 then :spell_type = tonumber(tostring(spell_types [i*3-1]):sub(1,-2)) :affinities [spell_type] = affinities [spell_type] + spells.level(spell_types[i*3-2]) :spell_type = tonumber(tostring(spell_types [i*3-1]):sub(2,-1)) :else :spell_type = spell_types [i*3-1] :end :affinities [spell_type] = affinities [spell_type] + spells.level(spell_types[i*3-2]) :end :end :end :end :local skillnames = {"fire magic","ice magic","air magic","earth magic","alchemy","forgecraft","hexes"} :for i, v in ipairs(affinities) do :if i <= #skillnames then :affinities [i] = affinities [i] + (you.skill(tostring(skillnames [i]))*1.5) :end :end :affinities [8] = affinities [8] + you.skill("necromancy")/2 :affinities [8] = affinities [8] + you.skill("summonings")/2 :affinities [9] = affinities [9] + you.skill("conjurations")/2 :affinities [9] = affinities [9] + you.skill("translocations")/2 :local max_affin = -1 :for i, v in ipairs(affinities) do :if max_affin < affinities[i] then :max_affin = affinities[i] :end :end :for i, v in ipairs(affinities) do :if max_affin == affinities [i] then :return i :end :end :end --tile_player_tile = tile:mons_player_shadow_djinn drop_filter += useless_item :if you.race() == "Djinni" then menu_colour ^= darkgrey:.*of might menu_colour ^= darkgrey:.*of enchant weapon menu_colour ^= darkgrey:.*of brand weapon --anti-flood, only spellcasting shows up message_colour += mute:Your.*Magic skill increases to level message_colour += mute:Your Necromancy skill increases to level message_colour += mute:Your Forgecraft skill increases to level message_colour += mute:Your Hexes skill increases to level message_colour += mute:Your Alchemy skill increases to level message_colour += mute:Your Summonings skill increases to level message_colour ^= mute:Your Conjurations skill increases to level message_colour += mute:Your Translocations skill increases to level #Sprite changing :if you.xl() >= 7 then :local class = find_affinities() --fire, ice, air, earth, alch, forge, hex, necro/summon, conj/tloc -- 1 2 3 4 5 6 7 8 9 :if class == 1 then tile_player_tile = mons:hellion :elseif class == 2 then tile_player_tile = mons:blizzard demon :elseif class == 3 then tile_player_tile = mons:spriggan air mage :elseif class == 4 then tile_player_tile = tile:mons_living_spell_earth :elseif class == 5 then tile_player_tile = tile:mons_will_o_the_wisp :elseif class == 6 then --couldn't find anything that fit tile_player_tile = tile:mons_ghost :elseif class == 7 then tile_player_tile = tile:mons_spectral_naga :elseif class == 8 then tile_player_tile = tile:mons_player_shadow_djinn :elseif class == 9 then tile_player_tile = tile:mons_living_spell_crystal :end :end -- Vampires were deleted the day after I wrote this :elseif you.race() == "Vampire" then message_colour ^= red:You bite.*and draw.*blood message_colour ^= green:You can now turn into a vampire bat when bloodless --each class has 3 value at one level in each skill (one defensive, one primary, and one weapon) :local rogue = you.skill("stealth") + you.skill("Long blades")/2 + you.skill("Short blades")/2 + you.skill("dodging") :local caster = you.skill("spellcasting")*2 + you.skill("ice magic")/11 + you.skill("fire magic")/11 + you.skill("Earth magic")/11 + you.skill("air magic")/11 + you.skill("conjurations")/11 + you.skill("translocations")/11 + you.skill("Forgecraft")/11 + you.skill("Summonings")/11 + you.skill("hexes")/11 + you.skill("necromancy")/11 + you.skill("alchemy")/11 :local fighter = you.skill("fighting") + you.skill("armour")/2 + you.skill("shields")/3 + you.skill("dodging")/6 + you.skill("maces & flails")/6 + you.skill("axes")/6 + you.skill("polearms")/6 + you.skill("staves")/6 + you.skill("Unarmed combat")/6 + you.skill("throwing")/6 --:crawl.mpr("caster: " ..caster..", rogue: "..rogue..", fighter: "..fighter) :if you.xl() < 3 then tile_player_tile = normal :elseif you.xl() < 8 then tile_player_tile = playermons :elseif caster > fighter and caster > rogue then tile_player_tile = vampire mage :elseif fighter > rogue then tile_player_tile = vampire knight :else tile_player_tile = vampire shadow :end :elseif you.race() == "Mountain Dwarf" then fake_lang = grunt, dwarven :elseif you.race() == "Naga" then fake_lang = jagerkin :elseif you.race() == "Vine Stalker" then --do something :elseif you.race() == "Deep Elf" then :if you.xl() > 6 then :local class = find_affinities() --fire, ice, air, earth, alch, forge, hex, necro/summon, conj/tloc -- 1 2 3 4 5 6 7 8 9 :if class == 1 then tile_player_tile = mons:deep elf pyromancer :elseif class == 2 then tile_player_tile = tile:mons_deep_elf_elementalist4 :elseif class == 3 then tile_player_tile = mons:deep elf zephyrmancer :elseif class == 4 then tile_player_tile = tile:mons_deep_elf_elementalist3 :elseif class == 5 then tile_player_tile = mons:deep elf master archer :elseif class == 6 then tile_player_tile = mons:deep elf knight :elseif class == 7 then tile_player_tile = mons:deep elf sorcerer :elseif class == 8 then tile_player_tile = mons:deep elf demonologist :elseif class == 9 then tile_player_tile = mons:deep elf annihilator :end :end :elseif you.race == "Demonspawn" then message_colour += purple:your demonic ancestry asserts itself --:elseif you.race == "" then --idk :end --Gods :if you.god() == "Makhleb" then message_colour += lightgreen:You feel better :elseif you.god() == "Okawaru" then tile_show_threat_levels = tough, nasty, unusual crawl.mpr ("Oka") :elseif you.god() == "Yredelemnul" then message_colour += mute:The dead are.* message_colour += mute:A black mist starts to gather message_colour += mute:Your.*misses the message_colour += mute:Your mindless puppets stay behind to rot message_colour += lightmagenta:You lift the black torch aloft and begin your conquest of.*in Yredelemnul's name message_colour += magenta:Its soul becomes fuel for the torch crawl.mpr("Yred") :end :crawl.mpr("Hi me") :crawl.mpr(you.race()) :crawl.mpr(you.class()) :crawl.mpr(you.god()) :crawl.mpr("level "..you.xl()) :crawl.mpr(you.skill("FIGHTING")) :crawl.mpr(you.skill("SpelLcaStiNg")) :crawl.mpr(you.deaths()) --testing --crawl.mpr(tostring(spells.memorised("magic dart"))) --local spells = spells.letter("magic dart") --crawl.mpr(spells) feature += altar { , , lightmagenta, lightmagenta} messaging = true --------------------------------------------------------------------------------- --macros: macros += M 1 ===more_explore :function more_explore() :local starting_hp = you.hp() :local i = 0 :while you.hp() > starting_hp/1.5 and i < 25 do :local lastmsg = crawl.messages(1):sub(1,-3) :if lastmsg == "Done exploring." then :i = 10000 :elseif you.turn_is_over() == true then :i = 10000 :else :crawl.process_keys("po") :i = i + 1 :end :end :end macros += M ; ===examineself :function examineself() :crawl.process_keys('xv') :end --doesn't work because you can't process *, and sendkeys doesn't wait for the popup to appear --macros += M 3 ===nextfloor --:function nextfloor() --:crawl.sendkeys(\{17}.."g"..you.branch()..you.depth()+1) --:end macros += M d ===autodrop :function autodrop() :crawl.process_keys('d,') :end macros += M . ===badWait :function badWait() :if you.caught() then --try to break the web instead :crawl.sendkeys('1') :elseif crawl.messages(1):sub(1,-3) == "You miscast Fulminant Prism." or crawl.messages(1):sub(1,-3) == "You miscast Searing Ray." or crawl.messages(1):sub(1,-3) == 'Your fulminant prism detonates feebly.' then :crawl.yesno('Spell is not active, really wait?', true) :else :crawl.sendkeys('.') :end :end macros += M 2 ===testing :function testing() :crawl.sendkeys('1') :end --updated:2/12/26