# ============================================================================= # DCSS init.rc | trunk 0.34.1 # 최종 적용: 역할 기반 슬롯(방향 A), 0.34 전수조사, 논의 내용 전부 반영 # # 슬롯 맵 (spell 메뉴 = z키 / ability 메뉴 = a키 — 완전 독립) # # Q W E R T Y U I O P # A S D F G H J K L # Z X C V B N M # # 소문자 — 전투 중 자주 누르는 키 # z x c v 단일 공격 L1 → L8 # a s d f AoE/장판 L2 → L6 # e r h t 제어 Hex / Earth / 지형 # j 제어 보조 # b g n q 이동/탈출 # w i 방어 버프 # y k l Nec 유틸 # u p 소환 유틸 # o m Forgecraft # # 대문자 — 강력기 L5+, Shift 눌러 신중하게 # L=Lee's T=Crystal V=Shatter # Z=Magna X=Maxwell C=ChainL # G=Glaciate P=Polar F=Ignition K=FireStorm # M=Manifold N=Battles S=SumHorr D=Dragon # A=Fusillade E=Yara R=Intox H=Martyrdom # B=Cigotuvi # # Q J W — 폴백 (미배정 주문 격리) # ============================================================================= # ============================================================================= # §0 LUA — CORE FUNCTIONS # ============================================================================= # ----------------------------------------------------------------------------- # §0.1 Version helper # ----------------------------------------------------------------------------- { function version() return tonumber(string.sub(crawl.version("major"), 3, 4)) end } # ----------------------------------------------------------------------------- # §0.2 Smart equipment autopickup # artefact 필터 → 방어구 업그레이드 → 직업별 스태프/단검 # ----------------------------------------------------------------------------- { add_autopickup_func(function(it, name) if it.is_useless then return false end -- ── artefact 필터 ──────────────────────────────────────────────────── if it.artefact then if name:find("%*Rage") then if you.god() == "Trog" or (you.god() == "Ashenzari" and you.piety_rank() >= 3) or you.get_base_mutation_level("Clarity") == 1 or (items.equipped_at("Amulet") and items.equipped_at("Amulet").name():find("Clar")) or (items.equipped_at("Body Armour") and items.equipped_at("Body Armour").name():find("Clar")) then return true end return false end if name:find("Harm") or name:find("%*Noise") or name:find("%*Corrode") then return false end if name:find("%*Slow") then return you.race() == "Formicid" end if name:find("slick") or name:find("Mesm") or name:find("Charlatan") then return false end if name:find("mace of Variability") and you.god() ~= "Xom" then return false end return true end local class = it.class(true) local sub_type = it.subtype() -- ── 방어구 업그레이드 판단 ──────────────────────────────────────────── if class == "armour" then local slot_map = {boots="Boots", cloak="Cloak", gloves="Gloves", helmet="Helmet", shield="Shield"} local worn = items.equipped_at(slot_map[sub_type]) if sub_type == "boots" then if worn then local plus = worn.plus local nobrand = worn.branded == false if nobrand then if plus < 2 and name:find("["..(plus+1).."-2].*boots") then return true end if plus < 4 and name:find("["..(plus+1).."-4].*barding") then return true end end return it.branded or it.ego end return true end if sub_type == "cloak" then if name:find("scarf.*harm") then return false end if worn then local plus = worn.plus local nobrand = worn.branded == false if plus < 2 and nobrand and name:find("["..(plus+1).."-2].*cloak") then return true end return it.branded or it.ego end return true end if sub_type == "gloves" then if worn then local plus = worn.plus local nobrand = worn.branded == false if plus < 2 and nobrand and name:find("["..(plus+1).."-2].*gloves") then return true end return it.branded or it.ego end if you.has_claws() ~= 0 then return it.branded or it.ego end return true end if sub_type == "helmet" then if worn then local plus = worn.plus local ac = worn.ac local nobrand = worn.branded == false if plus < 2 and nobrand then if ac == 0 and plus < 2 and name:find("["..(plus+1).."-2].*hat") then return true end if ac == 0 and name:find("[0-2].*helmet") then return true end if ac == 1 and plus < 2 and name:find("["..(plus+1).."-2].*helmet") then return true end end return it.branded or it.ego end return true end if sub_type == "shield" then if worn then local wname = worn.name() local light = wname:find("orb.*light") local buck = wname:find("buck") local kite = wname:find("kite") local plus = worn.plus local ac = worn.ac local nobrand = worn.branded == false if nobrand then if ac == 3 and plus < 3 and name:find("["..(plus+1).."-3].*buck") then return true end if ac == 8 and plus < 5 and name:find("["..(plus+1).."-5].*kite") then return true end if ac == 13 and plus < 8 and name:find("["..(plus+1).."-8].*tower") then return true end end if light and name:find("buck") then return true end if buck and name:find("buck") then return it.branded or it.ego end if buck and name:find("kite") then return true end if kite and name:find("kite") then return it.branded or it.ego end if name:find("tower") then return true end if name:find("orb") then return false end return it.branded or it.ego end if name:find("buck") then return true end return false end end -- ── 무기: 직업별 스태프/단검 판단 ───────────────────────────────────── if class == "weapon" then local function staff_ok(n) if you.class():find("Wizard") and n:find("staff.*conj") then return true end if you.class() == "Summoner" and n:find("staff.*summoning") then return true end if you.class() == "Necromancer" and n:find("staff.*death") then return true end if you.class() == "Fire Elementalist" and n:find("staff.*fire") then return true end if you.class() == "Ice Elementalist" and n:find("staff.*cold") then return true end if you.class() == "Air Elementalist" and n:find("staff.*air") then return true end if you.class() == "Earth Elementalist" and n:find("staff.*earth") then return true end if you.class() == "Venom Mage" and n:find("staff.*poison") then return true end if you.class() == "Alchemist" and n:find("staff.*alchemy") then return true end return false end local ew = items.equipped_at("Weapon") if ew then if ew.weap_skill == "Short Blades" and ew.name():find("dagger") then return staff_ok(name) end return false else if staff_ok(name) then return true end if you.base_skill("Unarmed Combat") == 0 and name:find("[0-9].*dagger") then return true end return false end end end) } # ----------------------------------------------------------------------------- # §0.3 Spell fail-rate monitor (10% 미만 시 1회 알림) # ----------------------------------------------------------------------------- { local SAFE_FAIL = 10 local spell_notified = {} function checkSpellFailRate() for _, spellName in pairs(you.spells()) do local fail = spells.fail(spellName) if not spell_notified[spellName] and fail < SAFE_FAIL then crawl.mpr(spellName .. " spell is stabilized!") spell_notified[spellName] = true end end end } # ----------------------------------------------------------------------------- # §0.4 Prompt auto-answer # ----------------------------------------------------------------------------- { function c_answer_prompt(prompt) if prompt == "Die?" or prompt == "Annotate level on other end of current stairs?" or prompt == "Are you sure you want to leave the Dungeon?" .. " This will make you lose the game!" then return false end if version() < 25 and prompt:find("Memorise Iskenderun's Mystic Blast") then return false end if version() < 27 and prompt:find("Memorise Chain Lightning") then return false end if version() < 32 and prompt:find("Memorise Teleport Other") then return false end if prompt:find("vortices") or prompt:find("vortex") or prompt:find("battlesphere") then return true end if prompt:find("Really.*into that cloud of flame?") and you.res_fire() == 3 then return true end if prompt:find("Really.*into that cloud of freezing vapour?") and you.res_cold() == 3 then return true end end } # ----------------------------------------------------------------------------- # §0.5 GDR calculator (@키) # 주의: 공식은 trunk 버전마다 달라질 수 있음 (현재 고전 공식 기준) # ----------------------------------------------------------------------------- { function with_gdr() local ac = you.ac() local gdr = math.floor(16 * math.sqrt(math.sqrt(math.max(0, ac)))) crawl.formatted_mpr(string.format("GDR: %d%%", gdr)) crawl.sendkeys("@") end crawl.setopt("macros += M \\@ ===with_gdr") } # ----------------------------------------------------------------------------- # §0.6 ready() — 매 턴 실행 # ----------------------------------------------------------------------------- { function ready() checkSpellFailRate() skill_menu_once() end } # ============================================================================= # §1 STARTUP # ============================================================================= # 수동 스킬 훈련 기본값 — Lua 블록 밖에서 선언해야 유효 default_manual_training = true # 게임 시작 턴(turn 0)에 스킬 메뉴 자동 오픈 { local _skill_menu_shown = false function skill_menu_once() if you.turns() == 0 and not _skill_menu_shown then _skill_menu_shown = true crawl.sendkeys("m") end end } # ============================================================================= # §2 DISPLAY # ============================================================================= # ----------------------------------------------------------------------------- # §2.1 Tile / Viewport # ----------------------------------------------------------------------------- tile_cell_pixels = 48 tile_filter_scaling = false tile_show_player_species = false view_delay = 200 # ----------------------------------------------------------------------------- # §2.2 Minimap colours (EN0N 기반 다크 팔레트) # tile_item_col = 바닥 동색 → 미니맵 아이템 노이즈 제거 의도 # 아이템 위치 파악이 필요하면 #6b5a3e 으로 변경 # ----------------------------------------------------------------------------- tile_upstairs_col = green tile_downstairs_col = red tile_branchstairs_col = #ffa500 tile_door_col = #c27149 tile_wall_col = #5a524c tile_explore_horizon_col = #aaaaaa tile_floor_col = #1e1b1a tile_item_col = #1e1b1a tile_feature_col = #d4be21 tile_plant_col = #4b6d39 tile_water_col = #0b5d79 tile_deep_water_col = #1212b3 tile_trap_col = #f447ff tile_transporter_col = #ff5656 tile_transporter_landing_col = #59ff89 tile_lava_col = #5f0a00 # ----------------------------------------------------------------------------- # §2.3 Status bars # HP/MP: 100=green 75-99=grey 50-74=yellow 25-49=lightred <25=red # ----------------------------------------------------------------------------- tile_show_minihealthbar = true tile_show_minimagicbar = true tile_show_threat_levels = tough nasty unusual hp_colour = 100:green, 99:lightgrey, 75:yellow, 50:lightred, 25:red mp_colour = 100:green, 99:lightgrey, 75:yellow, 50:lightred, 25:red stat_colour = 3:red, 7:lightred # ----------------------------------------------------------------------------- # §2.4 Fonts # ----------------------------------------------------------------------------- tile_font_crt_family = Consolas tile_font_stat_family = Consolas tile_font_msg_family = Consolas tile_font_tip_family = Consolas tile_font_lbl_family = Consolas # ============================================================================= # §3 MESSAGES # ============================================================================= # ----------------------------------------------------------------------------- # §3.1 Global channel settings # ----------------------------------------------------------------------------- show_more = false messages_at_top = true msg_condense_repeats = true show_newturn_mark = true channel.monster_damage = plain channel.god = plain channel.monster_spell = plain channel.monster_enchant = plain channel.friend_spell = darkgrey channel.friend_enchant = darkgrey channel.monster_warning = yellow channel.timed_portal = lightgreen # ----------------------------------------------------------------------------- # §3.2 force_more_message # [0.34] "An X comes into view" → "You encounter an X" # 양쪽 패턴 병기로 구버전 서버 호환 유지 # ----------------------------------------------------------------------------- # ── 게임 상태 ───────────────────────────────────────────────────────────── force_more_message += You have finished your manual force_more_message += Your transformation is almost over. force_more_message += LOW HITPOINT WARNING force_more_message += skill increases to level force_more_message += Training target.*for.*reached! # ── 위험 상태이상 ────────────────────────────────────────────────────────── force_more_message += Ouch! That really hurt! force_more_message += You convulse force_more_message += You feel yourself slow down force_more_message += You are slowing down force_more_message += You are confused force_more_message += you cannot.* because force_more_message += (the weather|forecast) force_more_message += you!! force_more_message += you with.*!! # ── Doom & Bane [0.34] ─────────────────────────────────────────────────── force_more_message += You gain a Bane force_more_message += You have gained a Bane force_more_message += Doom.*100% force_more_message += A reaper.*appears nearby # ── 함정 & 이동 ─────────────────────────────────────────────────────────── force_more_message += (blundered into a|invokes the power of) Zot force_more_message += You fall through a shaft force_more_message += You enter a teleport trap force_more_message += You are suddenly yanked force_more_message += You found a shaft # ── Boundless Tesseract [0.34] ─────────────────────────────────────────── force_more_message += tesseract.*awakens force_more_message += Boundless Tesseract # ── Death's Door ────────────────────────────────────────────────────────── confirm_action += Death's Door force_more_message += time is quickly running out # ── Pandemonium & Abyss ─────────────────────────────────────────────────── force_more_message += The mighty Pandemonium lord .* resides here force_more_message += Found a gateway leading out of the Abyss force_more_message += Found a gateway leading deeper into the Abyss force_more_message += Found .* abyssal rune of Zot force_more_message += Found a gate leading to another region of Pandemonium force_more_message += interdimensional caravan # ── 신성 & 포털 ─────────────────────────────────────────────────────────── force_more_message += A sentinel's mark forms upon you force_more_message += god:(sends|finds|silent|anger) force_more_message += watched by something force_more_message += flickers and vanishes! # ── 환경 위험 ───────────────────────────────────────────────────────────── force_more_message += hell_effect: force_more_message += You are engulfed in seething chaos force_more_message += filled with .* inner flame force_more_message += grabs you force_more_message += starts rolling force_more_message += vile air hits you force_more_message += engulfs you in water force_more_message += breathes miasma force_more_message += You feel your flesh start force_more_message += venomous gases force_more_message += pie hits you # ── 특수 이벤트 ─────────────────────────────────────────────────────────── force_more_message += You have reached level force_more_message -= You finish merging with the rock force_more_message += distant snort force_more_message += You hear the loud beating of a very distant drum force_more_message += Careful! force_more_message += You are starting to lose your buoyancy force_more_message += You miscast Flight force_more_message += looks more experienced force_more_message += Found .* staircase leading down force_more_message += fire storm spell force_more_message += Your guardian golem overheats force_more_message += offers itself force_more_message += volcano erupts force_more_message += Uskayaw prepares the audience for your solo force_more_message += Something reaches out for you force_more_message += You become entangled in the net force_more_message += wield.* blowgun force_more_message += goes berserk force_more_message += vanishes in a puff force_more_message += weaves a glowing orb force_more_message += The ironbrand convoker begins to recite a word of recall force_more_message += Something unseen opens the door force_more_message += You feel less protected from missiles force_more_message += Your unholy channel is weakening force_more_message += Deactivating autopickup # ── 포털 주변음 ─────────────────────────────────────────────────────────── force_more_message += ticking.*clock force_more_message += dying ticks force_more_message += coins.*counted force_more_message += tolling.*bell force_more_message += roar of battle force_more_message += creaking.*portcullis force_more_message += portcullis is probably force_more_message += wave of frost force_more_message += crackling.*melting force_more_message += hiss.*sand force_more_message += sound.*rushing water force_more_message += rusting.*drain force_more_message += drain falling apart force_more_message += heat about you force_more_message += falling.*rocks force_more_message += rumble.*avalanche of rocks force_more_message += crackle.*arcane power force_more_message += crackle.*magical portal force_more_message += distant wind force_more_message += whistling.*wind force_more_message += rapidly growing quiet # ── 유니크 몬스터 [0.34] 양쪽 패턴 병기 ───────────────────────────────── # 구버전: "Name comes into view" force_more_message += (?!An|As|You|There)(?-i:[A-Z]{1}[a-z]+).*(comes? into view|open.*door|break.*door) # 신버전: "You encounter Name" force_more_message += You encounter (?!an? |the )(?-i:[A-Z]{1}[a-z]+) # ── 종족별 ──────────────────────────────────────────────────────────────── : if you.race() ~= "Gargoyle" and you.race() ~= "Ghoul" and you.race() ~= "Mummy" and you.race() ~= "Djinni" then force_more_message += dream sheep.* comes? into view force_more_message += You encounter.*dream sheep : end : if you.race() ~= "Gargoyle" then force_more_message += plume of calc : end # ----------------------------------------------------------------------------- # §3.3 monster_alert # [0.34] doom hound → oblivion hound # 신규: zykzyl drude cognitogaunt clockroach mountainshell # slymdra eye of draining orb of winter/entropy cassandra # ----------------------------------------------------------------------------- # ── 눈 계열 (시선 공격) ─────────────────────────────────────────────────── monster_alert += giant eye monster_alert += floating eye monster_alert += shining eye monster_alert += eye of draining # ── 곤충 & 연체 ─────────────────────────────────────────────────────────── monster_alert += moth of wrath monster_alert += ghost moth monster_alert += torpor snail # ── 드라코니안 ──────────────────────────────────────────────────────────── monster_alert += guardian serpent monster_alert += draconian shifter monster_alert += draconian convoker # ── 언데드 ──────────────────────────────────────────────────────────────── monster_alert += flayed ghost monster_alert += royal mummy monster_alert += mummy priest monster_alert += ancient lich # ── 악마 ────────────────────────────────────────────────────────────────── monster_alert += fiend monster_alert += tzitzimitl monster_alert += tormentor monster_alert += hellion monster_alert += hell sentinel monster_alert += neqoxec monster_alert += cacodemon monster_alert += zykzyl monster_alert += drude # ── 저주 몬스터 ─────────────────────────────────────────────────────────── monster_alert += curse toe monster_alert += curse skull # ── 깊은 엘프 시전자 ────────────────────────────────────────────────────── monster_alert += deep elf sorcerer monster_alert += deep elf high priest monster_alert += scorcher # ── 고위협 ──────────────────────────────────────────────────────────────── monster_alert += orb of fire monster_alert += orb of winter monster_alert += orb of entropy monster_alert += executioner monster_alert += juggernaut monster_alert += shrike monster_alert += wretched star monster_alert += lurking horror monster_alert += oblivion hound monster_alert += slymdra # ── 특수 ────────────────────────────────────────────────────────────────── monster_alert += radroach monster_alert += entropy weaver monster_alert += meliai monster_alert += salamander tyrant monster_alert += ironbound frostheart monster_alert += cognitogaunt monster_alert += clockroach monster_alert += mountainshell monster_alert += cassandra # ── Walking Tomes ───────────────────────────────────────────────────────── monster_alert += walking crystal tome monster_alert += walking divine tome monster_alert += walking earthen tome monster_alert += walking frostbound tome # ── 27두 하이드라 (monster_alert 불가, force_more 사용) ─────────────────── force_more_message += 27-headed.* comes? into view force_more_message += You encounter.*27-headed # ----------------------------------------------------------------------------- # §3.4 Distortion weapon warnings # He/She/They/It + 0.34 메시지 형식 병기 # ----------------------------------------------------------------------------- force_more_message += It (is|was) wielding.*of distortion force_more_message += She (is|was) wielding.*of distortion force_more_message += He (is|was) wielding.*of distortion force_more_message += They (is|are|were) wielding.*of distortion force_more_message += wielding.* distortion.* comes? into view force_more_message += You encounter.*wielding.*distortion flash_screen_message += It (is|was) wielding.*of distortion flash_screen_message += She (is|was) wielding.*of distortion flash_screen_message += He (is|was) wielding.*of distortion flash_screen_message += They (is|are|were) wielding.*of distortion flash_screen_message += distortion.* comes? into view flash_screen_message += You encounter.*distortion # ----------------------------------------------------------------------------- # §3.5 flash_screen_message # ----------------------------------------------------------------------------- flash_screen_message += time is quickly running out flash_screen_message += LOW HITPOINT WARNING flash_screen_message += sentinel's mark flash_screen_message += You fall through a shaft flash_screen_message += You are slowing down flash_screen_message += You gain a Bane flash_screen_message += You have gained a Bane flash_screen_message += Ashenzari invites you to partake flash_screen_message += Ru believes you are ready to make a new sacrifice flash_screen_message += Vehumet offers you knowledge # ----------------------------------------------------------------------------- # §3.6 message_colour — 위험도 3단계 # magenta 즉사급 위협 # red 즉각 위험 # lightred 주의 # ----------------------------------------------------------------------------- msc := message_colour # ── 즉사급 (magenta) ────────────────────────────────────────────────────── msc ^= magenta: cacodemon.* (comes? into view|is here) msc ^= magenta: You encounter.*cacodemon msc ^= magenta: neqoxec.* (comes? into view|is here) msc ^= magenta: You encounter.*neqoxec msc ^= magenta: wretched star.* (comes? into view|is here) msc ^= magenta: You encounter.*wretched star msc ^= magenta: shining eye.* (comes? into view|is here) msc ^= magenta: You encounter.*shining eye msc ^= magenta: distortion.* (comes? into view|is here) msc ^= magenta: You encounter.*distortion # ── 즉각 위험 (red) ─────────────────────────────────────────────────────── msc ^= red: You gain a Bane msc ^= red: You have gained a Bane msc ^= red: Doom.*100 msc ^= red: you shout at msc ^= red: carrying a wand msc ^= red: floating eye.* (comes? into view|is here) msc ^= red: You encounter.*floating eye msc ^= red: You are slowing down msc ^= red: you cannot.* because msc ^= red: (the weather|forecast) msc ^= red: you will pay : if you.race() == "Mummy" then msc ^= red: golden eye : end # ── 주의 (lightred) ─────────────────────────────────────────────────────── msc ^= lightred: LOW HITPOINT WARNING msc ^= lightred: You fall through a shaft # ── 킬 (brown) ──────────────────────────────────────────────────────────── msc ^= brown: you kill msc ^= brown: you destroy msc ^= brown: dies msc ^= brown: you blow up msc ^= brown: is destroyed # ── 성장 (green) ────────────────────────────────────────────────────────── msc ^= green: more experienced msc ^= green: pick up a manual msc ^= green: you have finished your manual msc ^= green: Training target # ── 기타 ────────────────────────────────────────────────────────────────── msc ^= darkgrey: you are exhausted msc ^= yellow: is nearby msc ^= yellow: there are.* nearby msc ^= darkgrey: You now have msc ^= mute: begin reading message_colour ^= red:danger:torment message_colour ^= yellow:teleport trap message_colour ^= yellow:sentinel's mark # ----------------------------------------------------------------------------- # §3.7 runrest stop / ignore # ----------------------------------------------------------------------------- stop := runrest_stop_message ignore := runrest_ignore_message # ── 중단 조건 ───────────────────────────────────────────────────────────── stop += (blundered into a|invokes the power of) Zot stop += (devoid of blood|starving) stop += A huge blade swings out and slices into you[^r] stop += An alarm trap emits a blaring wail stop += flesh start stop += found a zot trap stop += hear a soft click stop += lose consciousness stop += sense of stasis stop += Wait a moment stop += wrath finds you stop += You fall through a shaft stop += You are marked stop += teleport trap stop += You feel yourself slow down stop += You gain a Bane stop += You have gained a Bane stop += A reaper.*appears stop += Your unholy channel is weakening stop += You found a shaft # ── 무시 메시지 ─────────────────────────────────────────────────────────── ignore += You regained.*mp ignore += A.*toadstool withers and dies ignore += disappears in a puff of smoke ignore += engulfed in a cloud of smoke ignore += engulfed in white fluffiness ignore += grinding sound ignore += in your inventory.*rotted away ignore += safely over a trap ignore += standing in the rain ignore += toadstools? grow ignore += You feel.*sick ignore += You walk carefully through the ignore += the wereblood boils in your veins ignore += Your primal bloodlust is almost over ignore += A nearby plant withers and dies ignore += Your fire (vortex|vortices).*something ignore += something .* fire (vortex|vortices) ignore += Your unholy channel expires ignore += blood rots? away ignore += Your icy armour ignore += Your skin is crawling a little less ignore += infusion is running out ignore += shroud begins to fray ignore += butterfly ignore += Jiyva appreciates your sacrifice ignore += Jiyva gurgles merrily ignore += Jiyva says ignore += You hear.*splatter ignore += You feel better ignore += You feel your power returning ignore += Your protection from.*is fading ignore += You feel less protected from # ============================================================================= # §4 AUTOPICKUP # ============================================================================= # ----------------------------------------------------------------------------- # §4.1 Core symbols # % = Talisman (0.34, gear로 분류) # ----------------------------------------------------------------------------- autopickup = $?!:"/|}% ae := autopickup_exceptions drop_mode += multi pickup_mode += multi default_friendly_pickup += all ae += useless_item, dangerous_item, evil_item ae += scrolls? of (amn|noise) # ── 반지 [0.34: ring of fire / ice 삭제됨] ─────────────────────────────── ae += >ring of (protection from (mag|fire|cold)|mag|ste|pos|wil|wiz) ae += >ring of (dex|int|str) # ── 소환 아이템 ─────────────────────────────────────────────────────────── ae += <(lamp of fire|phial of floods|lightning rod|figurine|condenser vane) ae += scroll.*(torment|vulnerability|immolation) ae ^= >potion.*berserk ae ^= >potion.*lignification # ── 유용 장비 ───────────────────────────────────────────────────────────── ae += >staff of (fire|cold|air|earth|conj|alchem|death) ae += >amulet of (faith|regen|reflect|the acrobat|guardian spirit|magic) ae += ring of protection from (magic|fire|cold) ae += >ring of (pois|positive|resist corr|see) ae += >ring of (mag|flight|wiz|int|str|dex|slay|prot|eva) : end : if you.race() == "Ogre" or you.race() == "Troll" then ae += qty,charged,slot show_paged_inventory = true # ── 포션 ────────────────────────────────────────────────────────────────── menu_colour += green:potions? of (enlightenment|resistance|heal wounds) menu_colour += cyan:potions? of (haste|brilliance|might|invisibility) menu_colour += lightgreen:ambrosia menu_colour += yellow:potions? of experience menu_colour += magenta:potions? of (berserk|cancellation|lignification|attraction) menu_colour += red:potions? of mutation # ── 스크롤 ──────────────────────────────────────────────────────────────── menu_colour += cyan:scrolls? of (brand weapon|enchant weapon|enchant armour|revelation) menu_colour += cyan:scrolls? of (blinking|teleportation|magic mapping|fog) menu_colour += yellow:scrolls? of (acquirement|summoning|fear) menu_colour += red:scrolls? of (immolation|vulnerability|torment) # ── 완드 ────────────────────────────────────────────────────────────────── menu_colour += cyan:wand of ligh menu_colour += cyan:wand of acid menu_colour += cyan:wand of quic menu_colour += green:wand of digg menu_colour += green:wand of iceb menu_colour += green:wand of mind menu_colour += green:wand of root menu_colour += green:wand of warp # ── 0.34 신규 아이템 ────────────────────────────────────────────────────── menu_colour += cyan:orb of (attunement|pyromania|stardust) menu_colour += yellow:orb of (mesmerism|glass) menu_colour += yellow:amulet of (chemistry|alchemy|dissipation|wildshape) menu_colour += cyan:talisman of (spore|eel) # ============================================================================= # §6 COMBAT # ============================================================================= autofight_throw = false autofight_stop = 65 hp_warning = 40 mp_warning = 20 unusual_highlight = hi:magenta monster_unusual_items += curare,atropa,throwing_net,dispersal monster_unusual_items += artefact, ego_weapon, wand monster_unusual_items += heavy,vamp,disto,chaos,spect force_spell_targeter = ignition, starburst, frozen ramparts, chain lightning, fulminant prism, shatter, glaciate, ozocubu's refrigeration fail_severity_to_quiver = 3 fail_severity_to_confirm = 3 # Irradiate 시전 시 오염 100% 초과 경고 [0.34] warn_contam_cost = true # ============================================================================= # §7 TRAVEL & EXPLORATION # ============================================================================= travel_delay = -1 explore_delay = -1 rest_delay = -1 show_travel_trail = true travel_one_unsafe_move = true # 자동이동 중 문 열지 않음 (함정 방지) travel_open_doors = true always_show_exclusions = true easy_floor_use = true always_show_gems = true more_gem_info = true # 사거리 밖 어둡게 darken_beyond_range = true travel_avoid_terrain = deep water explore_auto_rest = true auto_exclude = true explore_stop += artefacts, glowing_items, runes explore_stop += greedy_visited_item_stack, stairs explore_stop += altars, portals, branches, runed_doors explore_stop += items, shops explore_stop += greedy_pickup_smart rest_wait_both = true rest_wait_percent = 100 rest_wait_ancestor = true # ============================================================================= # §8 ABILITY SLOTS # spell_slot 과 ability_slot 은 완전히 독립된 메뉴 # → 같은 키가 양쪽에 있어도 충돌 없음 # ============================================================================= as := ability_slot as ^= End Transfo: t as ^= Evoke Invis: i as ^= Turn Visibl: j as ^= Evoke Fligh: l as ^= Fly: l as ^= Stop Flying: m as ^= Spit: q as ^= Breath: q as ^= Rolling: r as ^= Blink: d # ============================================================================= # §9 SPELL SLOTS — 역할 기반 배치 # # 동작 원리: ^= 는 prepend → 마지막 선언이 우선순위 높음 # 같은 슬롯 내 주문들은 학파 분리로 동시 보유 없음 (Fire vs Ice 등) # ============================================================================= ss := spell_slot # 폴백: 미배정 주문을 Q,J,W 에 격리 ss ^= .*:QJW # ----------------------------------------------------------------------------- # 단일 공격 z x c v (새끼→검지, 빠른 접근) # ----------------------------------------------------------------------------- # [z] L1 빌드 진입 주문 (학파별 공존 없음) ss ^= Sandblast : z ss ^= Shock : z ss ^= Magic Dart : z # [x] L2~3 중반 주력기 ss ^= Searing Ray : x ss ^= Mercury Arrow : x ss ^= Stone Arrow : x ss ^= Vampiric Draining : x # [c] L4~5 중후반 주력기 ss ^= Sticky Flame : c ss ^= Iskenderun's Mystic B : c ss ^= Airstrike : c ss ^= Dispel Undead : c ss ^= Arcjolt : c # [v] L5~8 고레벨 단일 딜 # Lehudib's Crystal Spear 는 [T] 전용 — 여기 중복 배정 없음 ss ^= Fireball : v ss ^= Plasma Beam : v # ----------------------------------------------------------------------------- # AoE / 장판 a s d f (홈 포지션) # ----------------------------------------------------------------------------- # [a] 단거리/접근전 AoE ss ^= Static Discharge : a ss ^= Hailstorm : a ss ^= Frozen Ramparts : a ss ^= Irradiate : a # [s] 중거리 AoE ss ^= Mephitic Cloud : s ss ^= Olgreb's Toxic Radia : s ss ^= Fulminant Prism : s ss ^= Freezing Cloud : s # [d] 광역 필살 AoE ss ^= Necrotise : d ss ^= Ozocubu's Refrigerat : d ss ^= Conjure Ball Lightni : d # [f] 지속/설치형 AoE ss ^= Eringya's Noxious Bo : f ss ^= Starburst : f # ----------------------------------------------------------------------------- # 제어 e r h t j + 대문자 I O U Y (Hex 전문 주문) # # Hex 전문 빌드에서 제어 주문이 동시 보유되므로 모두 전용 슬롯 배정 # 소문자: 가장 기본적이고 자주 쓰는 2종 # 대문자: 중고급 Hex (L3~5) — Shift 눌러 신중하게 # ----------------------------------------------------------------------------- # [e] Confusing Touch 전용 L1 Hex ss ^= Confusing Touch : e # [r] Slow 전용 L2 Hex ss ^= Slow : r # [I] Tukima's Dance L3 Hex ss ^= Tukima's Dance : I # [O] Gloom L4 Hex/Nec [0.34: Dazzling Flash 개명] ss ^= Gloom : O # [U] Dimensional Bullseye L4 Hex/Tloc ss ^= Dimensional Bullseye : U # [Y] Enfeeble L5 Hex ss ^= Enfeeble : Y # [h] Earth/Nec 봉쇄 ss ^= Petrify : h ss ^= Borgnjor's Vile Clut : h # [t] 지형/전장 제어 ss ^= Leda's Liquefaction : t ss ^= Silence : t # [j] 제어 보조 (덜 중요) ss ^= Jinxbite : j ss ^= Cause Fear : j # ----------------------------------------------------------------------------- # 이동 / 탈출 b g n q # ----------------------------------------------------------------------------- # [b] 긴급 탈출 (단독) ss ^= Blink : b # [g] 포지셔닝 ss ^= Passage of Golubria : g ss ^= Vhi's Electric Charg : g # [n] 특수 이동 ss ^= Passwall : n ss ^= Lesser Beckoning : n # [q] 아이템 회수 ss ^= Apportation : q # ----------------------------------------------------------------------------- # 방어 버프 w i # ----------------------------------------------------------------------------- # [w] 방어적 강화 (Ice vs Alch/Fire — 공존 없음) ss ^= Ozocubu's Armour : w ss ^= Detonation Catalyst : w # [i] Air 속도버프 (단독) ss ^= Swiftness : i # ----------------------------------------------------------------------------- # Necromancy 유틸 y k l # ----------------------------------------------------------------------------- ss ^= Sublimation of Blood : y ss ^= Fugue of the Fallen : k ss ^= Animate Dead : l # ----------------------------------------------------------------------------- # 소환 유틸 u p # ----------------------------------------------------------------------------- # [u] 소환 L3~5 ss ^= Conjure Flame : u ss ^= Battlesphere : u ss ^= Summon Demon : u ss ^= Summon Mana Viper : u # [p] 소환/유틸 L5~7 ss ^= Summon Forest : p ss ^= Sculpt Simulacrum : p ss ^= Summon Greater Demon : p ss ^= Spellspark Servitor : p # ----------------------------------------------------------------------------- # Forgecraft 유틸 o m # ----------------------------------------------------------------------------- # [o] Forge 핵심 L4~5 ss ^= Forge Lightning Spir : o ss ^= Fortress Blast : o ss ^= Alistair's Walking A : o # [m] Forge 중상급 L6~7 ss ^= Hellfire Mortar : m ss ^= Martyr's Knell : m ss ^= Animated Cannon : m # ----------------------------------------------------------------------------- # 강력기 L5+ — 대문자 (Shift, 신중하게) # ----------------------------------------------------------------------------- # Earth ss ^= Lee's Rapid Deconstr : L ss ^= Lehudib's Crystal Sp : T ss ^= Shatter : V # Air ss ^= Magnavolt : Z ss ^= Maxwell's Capacitive : X ss ^= Chain Lightning : C # Ice (Glaciate + Polar Vortex — 공존 가능하므로 슬롯 분리) ss ^= Glaciate : G ss ^= Polar Vortex : P # Fire (Ignition + Fire Storm — 공존 가능하므로 슬롯 분리) ss ^= Ignition : F ss ^= Fire Storm : K # Tloc ss ^= Manifold Assault : M # Forgecraft ss ^= Iskenderun's Battles : N # Summoning (공존 없음) ss ^= Summon Horrible Thin : S ss ^= Dragon's Call : D # Alchemy ss ^= Fulsome Fusillade : A ss ^= Yara's Violent Unrav : E ss ^= Alistair's Intoxicat : R # Necromancy ss ^= Martyrdom : H # 기타 ss ^= Cigotuvi's Putrefact : B # ============================================================================= # §10 INSCRIPTIONS # ============================================================================= # 스크롤 — 읽기 방지 autoinscribe += scroll.*teleportation:!r autoinscribe += scroll.*blinking:!r autoinscribe += scroll.*magic mapping:!r autoinscribe += scroll.*vulnerability:!r autoinscribe += scroll.*immolation:!r autoinscribe += scroll.*torment:!r # 포션 — 마시기 방지 # heal wounds:!q 는 실수 방지 목적 (의도적 사용 시 메뉴에서 직접 선택) autoinscribe += potion.*mutation:!q autoinscribe += potion.*heal wounds:!q autoinscribe += potion.*cancel:!q autoinscribe += potion.*berserk:!q autoinscribe += potion.*lignification:!q # 투척 — 발사 방지 autoinscribe += curare:!f autoinscribe += throwing net:!f # ============================================================================= # §11 QOL # ============================================================================= equip_unequip = true show_game_time = true cloud_status = true bad_item_prompt = true easy_door = true enable_recast_spell = true warn_hatches = true # % 화면에서 저항별 방어량 표시 [0.34] show_resist_percent = true # ============================================================================= # §12 SERVER & SOUND # ============================================================================= sound_on = true sound_volume = 0.5 bgm_volume = 0.3 sound_pack += https://osp.nemelex.cards/build/latest.zip:["init.txt"] sound_pack += https://sound-packs.nemelex.cards/Autofire/BindTheEarth/BindTheEarth.zip sound_pack += https://sound-packs.nemelex.cards/DCSS-UST/v1.0.1.zip one_SDL_sound_channel = true sound_fade_time = 0.5 redirect_chat = true show_gold_status = true disable_clear_chat = true lab_use_click_to_send_chat = true translation_language = ko record_wtrec = true # ============================================================================= # §13 MACROS # ============================================================================= macros += M 8 X< macros += M 9 X> macros += M 1 zz macros += M 2 zx macros += M z Z # @ → GDR Calculator (§0.5 에서 정의) # ============================================================================= # §14 RACE OVERRIDES (필요 시 주석 해제) # ============================================================================= # BaIE (Barachi Ice Elementalist) #ae +=