# CRAWL.NEMELEX.CARDS ##### 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 translation_language = ko --------------RC 모둠------------------ # 방어구 자동 줍기 { add_autopickup_func(function(it, name) local class = it.class(true) local armour_slots = {cloak="Cloak", helmet="Helmet", gloves="Gloves", boots="Boots", body="Armour", shield="Shield"} if (class == "armour") then if it.is_useless then return false end sub_type = it.subtype() equipped_item = items.equipped_at(armour_slots[sub_type]) if (sub_type == "cloak") or (sub_type == "helmet") or (sub_type == "gloves") or (sub_type == "boots") then if not equipped_item then return true else return it.artefact or it.branded or it.ego end end if (sub_type == "body") then return false end if (sub_type == "shield") then if equipped_item then return it.artefact or it.branded or it.ego end end end end) } # 언데드 홀리무기 경고 : if you.race() == "Poltergeist" or you.race() == "Mummy" or you.race() == "Revenant" or you.race() == "Demonspawn" then unusual_monster_items += holy : end #디스펠언데드 피격, 신성공격 피격 force_more_message += You convulse #카오스무기 장비한 몬스터, 춤추는 카오스무기 출현 force_more_message += It is wielding.*of chaos force_more_message += She is wielding.*of chaos force_more_message += He is wielding.*of chaos force_more_message += wielding.* chaos.*(come.*into view|open.*door) flash_screen_message += It is wielding.*of chaos flash_screen_message += She is wielding.*of chaos flash_screen_message += He is wielding.*of chaos flash_screen_message += wielding.* chaos.*(come.*into view|open.*door) flash_screen_message += chaos.*(come.*into view|open.*door) #신성공격에 취약한 종족일 때 신성무기 장비한 몬스터, 춤추는 신성무기 출현 : if you.race() == "Poltergeist" or you.race() == "Mummy" or you.race() == "Revenant" or you.race() == "Demonspawn" then force_more_message += It is wielding.*of holy wrath force_more_message += She is wielding.*of holy wrath force_more_message += He is wielding.*of holy wrath force_more_message += wielding.* holy wrath.*(come.*into view|open.*door) force_more_message += holy wrath.*(come.*into view|open.*door) flash_screen_message += It is wielding.*of holy wrath flash_screen_message += She is wielding.*of holy wrath flash_screen_message += He is wielding.*of holy wrath flash_screen_message += wielding.* holy wrath.*(come.*into view|open.*door) flash_screen_message += holy wrath.*(come.*into view|open.*door) : end #킬러클라운 파이 피격 force_more_message += pie hits you #포스랜스 피격 force_more_message += You are knocked back #윈드 블라스트 피격 force_more_message += You are blown backwards # engulf 상태에서 주문 시전 시도 force_more_message += You cannot cast spells while unable to breathe! # 침묵 상태에서 주문 시전 시도 force_more_message += You cannot cast spells when silenced! #메세지가 너무 많이 떴을 때 강제로 more 띄우지 않게 함 show_more = false default_manual_training = true ## 체력 경고 hp_warning = 50 force_more_message += LOW HITPOINT WARNING ## 자동공격이 멈추는 체력 비율 autofight_stop = 50 # 킬러 유니크 등장 시 강제 정지 force_more_message += (Mennas|Mara|Vv|Jory|Ignacio|Cerebov|Gloorx|Lom Lobon|Mnoleg|Antaeus|Asmodeus|Dispater|Ereshkigal).*comes into view # 위험한 몬스터 알림 monster_alert += glass eye, shining eye, great orb of eyes monster_alert += moth of wrath, ghost moth, torpor snail monster_alert += radroach, entropy weaver, meliai, raven monster_alert += guardian serpent, draconian shifter monster_alert += royal mummy, mummy priest, ice fiend, brimstone fiend, tzitzimitl monster_alert += flayed ghost, Tormentor, curse toe, curse skull, alderking monster_alert += hellion, hell sentinel, deep elf sorcerer monster_alert += deep elf high priest, draconian scorcher monster_alert += ancient lich, dread lich, undying armoury, juggernaut monster_alert += executioner, shard shrike, caustic shrike, chonchon, wyrmhole monster_alert += wretched star, lurking horror, screaming refraction monster_alert += neqoxec, cacodemon, oblivion hound, nekomata, zykzyl monster_alert += salamander tyrant, ironbound frostheart, ironbound beastmaster, ironbound convoker monster_alert += walking crystal tome, walking divine tome, walking earthen tome, walking frostbound tome monster_alert += orb of fire, orb of winter, orb of entropy #왜곡무기 장비한 몬스터, 춤추는 왜곡무기 출현 시 more를 띄워주고 화면이 번쩍이는 효과를 줌 force_more_message += It is wielding.*of distortion force_more_message += She is wielding.*of distortion force_more_message += He is wielding.*of distortion force_more_message += wielding.* distortion.* comes? into view flash_screen_message += It is wielding.*of distortion flash_screen_message += She is wielding.*of distortion flash_screen_message += He is wielding.*of distortion flash_screen_message += wielding.* distortion.* comes? into view flash_screen_message += distortion.* comes? into view #폰트를 Consolas로 바꿈 tile_font_crt_family = Consolas tile_font_stat_family = Consolas tile_font_msg_family = Consolas tile_font_lbl_family = Consolas #아이템 더미로 이동 explore_stop -= greedy_visited_item_stack #그물, 다투라 던지기 전 확인 autoinscribe += throwing net:!f autoinscribe += datura:!f autopickup_exceptions ^= >useless_item #골드, 스크롤, 포션, 책, 장신구, 완드, 스태프, 잡동사니를 자동으로 주움 autopickup = $?!:"/|}% #그물, 다트 자동으로 주움 autopickup_exceptions += 0 then local hp_diff = previous_hp - current_hp if max_hp_changed then crawl.mpr('최대 체력이 변경되었습니다. [' .. current_hp .. '/' .. max_hp .. ']') else -- [1] 데미지 입었을 때 if (current_hp < previous_hp) then local msg_head = '' local dmg_color = 'white' local hp_color = 'white' -- (A) 남은 체력 색상 local hp_percent = (current_hp / max_hp) * 100 if hp_percent <= 30 then msg_head = '!! 죽음의 문턱 !! ' hp_color = 'lightred' elseif hp_percent <= 50 then msg_head = '!! 중상을 입음 !! ' hp_color = 'yellow' elseif hp_percent <= 75 then hp_color = 'lightgreen' else hp_color = 'green' end -- (B) 데미지 수치 색상 local dmg_percent = (hp_diff / max_hp) * 100 if dmg_percent >= 20 then dmg_color = 'lightred' elseif dmg_percent >= 10 then dmg_color = 'yellow' else dmg_color = 'white' end -- [수정됨] 색상 태그를 올바른 문법으로 수정 -- 예: 69 형식으로 변환 crawl.mpr(msg_head .. '<' .. dmg_color .. '>' .. hp_diff .. '의 피해를 입음. 잔여 생명력 [' .. '<' .. hp_color .. '>' .. current_hp .. '' .. '/' .. max_hp .. ']') if hp_diff > (max_hp * 0.20) then crawl.mpr('!! 치명적인 일격 !!') end end -- [2] 체력 회복 if (current_hp > previous_hp) then local hp_gain = current_hp - previous_hp if (hp_gain > 1) and (current_hp < max_hp) then crawl.mpr(hp_gain .. '의 체력 회복. [' .. current_hp .. '/' .. max_hp .. ']') elseif (current_hp == max_hp) and (previous_hp ~= max_hp) then crawl.mpr('체력이 완전히 회복되었습니다.') end end -- [3] 마나 완충 if (current_mp == max_mp) and (previous_mp ~= max_mp) then crawl.mpr('마력이 가득 찼습니다.') end end end previous_hp = current_hp previous_mp = current_mp previous_form = current_form was_berserk_last_turn = you_are_berserk end } # 죽음의 문(DDoor) 경고 및 카운터 # 설명: 죽음의 문 종료 임박 시 게임을 일시정지하고 팝업창을 띄웁니다. { local door_warning_flag = true local door_counter_val = 0 local door_speed_flag = true function DDoorWarning() if you.status("in death's door (expiring)") and door_warning_flag then -- [팝업 경고] Y를 눌러야 풀림 crawl.yesno("!!! 죽음의 문이 곧 끝납니다 (5-10턴) !!! (Y/N)", false, false, true, false) crawl.mpr("!!! 경고: 죽음의 문 종료 임박 !!!") door_warning_flag = false end if not you.status("in death's door (expiring)") then door_warning_flag = true end end function DDoorCounter() if you.status("in death's door (expiring)") then -- 원본처럼 턴 수를 세어줌 local turns_passed = you.turns() - door_counter_val crawl.mpr("DDoor Ending... Count " .. turns_passed .. " (Check Status!)") else door_counter_val = you.turns() end end function Slowed_Check() if door_speed_flag and string.find(crawl.messages(8), "yourself slow down") and you.status("in death's door (expiring)") then -- 감속 걸리면 팝업 띄움 (Y/N) crawl.yesno("!!! 경고: 죽음의 문 종료 중 감속 걸림 !!! (Y/N)", false, false, true, true) door_speed_flag = false end if not door_speed_flag and not you.status("in death's door (expiring)") then door_speed_flag = true end end } #아티팩트 감지 (오류 해결 및 중복 방지) #설명: you.pos() 대신 아이템 이름과 현재 층 정보를 사용하여 중복 경고를 막습니다. { local seen_artefacts = {} function CheckArtefactsInView() local r = 9 local current_level = you.where() -- 현재 위치(예: D:5)를 가져옵니다. for x = -r, r do for y = -r, r do if you.see_cell(x, y) then local floor_items = items.get_items_at(x, y) if floor_items then for _, item in ipairs(floor_items) do if item.artefact then -- 아이템 이름과 층 이름을 조합해 고유 키 생성 local unique_key = item.name() .. "_" .. current_level if not seen_artefacts[unique_key] then crawl.mpr("!!! 아티팩트 발견: " .. item.name() .. " !!!") crawl.more() seen_artefacts[unique_key] = true end end end end end end end end } #메인 실행 (Ready 함수) #설명: 위에서 정의한 기능들을 매 턴 실행하고, 시작 시 스킬창을 엽니다. { local skill_check_done = false function AutoOpenSkills() if you.turns() == 0 and not skill_check_done then skill_check_done = true crawl.sendkeys("m") end end function ready() announce_damage_ko() -- 체력 알림 DDoorWarning() -- DDoor 팝업 경고 DDoorCounter() -- DDoor 턴 카운터 Slowed_Check() -- 감속 체크 AutoOpenSkills() -- 스킬창 자동 오픈 CheckArtefactsInView() -- 아티팩트 감지! end } #마법 스태프 예상 데미지/발동률 계산기 { function calc_staff_info(school_level, evo_level, multiplier) multiplier = multiplier or 1.575 local max_damage = multiplier * (school_level + evo_level/2) local activation = (evo_level + school_level/2) * 6.66 if activation > 100 then activation = 100 end return max_damage, activation end function staff_info_display() local evo = you.skill("Evocations") local output = "" -- Fire local fire = you.skill("Fire Magic") local fire_dmg, fire_chance = calc_staff_info(fire, evo) output = output .. string.format("[Fire] D: 0-%.1f, P: %.1f%% \n", fire_dmg, fire_chance) -- Cold local ice = you.skill("Ice Magic") local cold_dmg, cold_chance = calc_staff_info(ice, evo) output = output .. string.format("[Cold] D: 0-%.1f, P: %.1f%% \n", cold_dmg, cold_chance) -- Earth (계수 1.5) local earth = you.skill("Earth Magic") local earth_dmg, earth_chance = calc_staff_info(earth, evo, 1.5) output = output .. string.format("[Earth] D: 0-%.1f, P: %.1f%% (33%% to flying)\n", earth_dmg, earth_chance) -- Air (계수 1.25) local air = you.skill("Air Magic") local air_dmg, air_chance = calc_staff_info(air, evo, 1.25) output = output .. string.format("[Air] D: 0-%.1f, P: %.1f%% (Half AC)\n", air_dmg, air_chance) -- Alchemy local alchemy = you.skill("Alchemy") local poison_dmg, poison_chance = calc_staff_info(alchemy, evo) output = output .. string.format("[Alchemy] D: 0-%.1f, P: %.1f%% \n", poison_dmg, poison_chance) -- Death local necro = you.skill("Necromancy") local death_dmg, death_chance = calc_staff_info(necro, evo) output = output .. string.format("[Death] D: 0-%.1f, P: %.1f%% \n", death_dmg, death_chance) -- Conjuration (계수 1.25) local conj = you.skill("Conjurations") local conj_dmg, conj_chance = calc_staff_info(conj, evo, 1.25) output = output .. string.format("[Conj] D: 0-%.1f, P: %.1f%% (Irresistible)", conj_dmg, conj_chance) crawl.formatted_mpr(output) end crawl.setopt("macros += M \\{F11} ===staff_info_display") } # GDR(물리 피해 감소율) 확인기 (@ 키) # [수정됨] GDR(물리 피해 감소율) 확인기 # 설명: F3을 누르면 현재 AC 효율(GDR)을 계산해서 알려줍니다. { function show_gdr() local armour_class = you.ac() -- GDR 공식: 14 * sqrt(AC)가 기본이지만, 스크립트의 공식(16 * 4제곱근)을 따릅니다. local gdr = math.floor(16 * math.sqrt(math.sqrt(math.max(0, armour_class)))) -- GDR 상한선은 보통 50% (가고일 등 제외) if gdr > 50 then gdr = 50 end crawl.formatted_mpr(string.format("내 방어구의 물리 피해 감소율(GDR): %d%%", gdr)) end crawl.setopt("macros += M \\{F12} ===show_gdr") } # 화면에 보석(Gem) 아이콘 항상 표시 (수집욕 자극) always_show_gems = true # 조트의 시계(Zot Clock) 항상 표시 (급사 방지) always_show_zot = true # 악마 몬스터의 등급(1~5티어)을 타일에 표시 (위험도 식별 용이) tile_show_demon_tier = true # 플레이어 타일을 현재 종족 모습으로 변경 (룩딸용) tile_show_player_species = # 불꽃 회오리(Fire Vortex)가 보여도 휴식/탐색 멈추지 않음 (귀찮음 방지) runrest_ignore_message += Your fire (vortexlvortices).*something runrest_ignore_message += something .* fire (vortexlvortices) ## 이펙트 딜레이 ## view_delay = 200 ## 위험도를 노란색, 빨간색만 표시 ## tile_show_threat_levels = tough,nasty,unusual_highlight ## 자동줍기 해제 시 다음 장 (투명몹 대비) ## force_more_message += Deactivating autopickup ## 안 보이는 무언가에게 마나가 빨리면 다음 장 ## force_more_message += watched by something ## 방을 이동해도 채팅을 지우지 않음 ## #$ lab_disable_chat_clear = true ## 우클릭시 채팅창에 아이템 공유 ## lab_use_click_to_send_chat = true