##### 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 # 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 ##### Ancient versions ############################################## # If you're used to the interface of ancient versions of Crawl, you may # get back parts of it by uncommenting the following options: # include = 034_command_keys.txt ##### 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 # 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 ##### Ancient versions ############################################## # If you're used to the interface of ancient versions of Crawl, you may # get back parts of it by uncommenting the following options: # include = 034_command_keys.txt force_more_message += .*(Agnes|Aizul|Antaeus|Arachne|Asmodeus|Azrael|Bai suzhen|Blork the orc|Boris|Cerebov|Crazy Yiuf|Dispater|Dissolution|Donald|Dowan|Duvessa|Edmund|the Enchantress|Ereshkigal|Erica|Erolcha|Eustachio|Fannar|Frances|Frederick|Gastronok|Geryon|Gloorx Vloq|Grinder|Grum|Harold|Ignacio|Ijyb|Ilsuiw|Jessica|Jorgrun|Jory|Joseph|Josephine|Khufu|Kirke|the Lernaean hydra|Lom Lobon|Louise|Mara|Margery|Maurice|Menkaure|Mennas|Mnoleg|Murray|Nergalle|Natasha|Nessos|Nikola|Pan|Pikel|Polyphemus|Prince Ribbit|Psyche|Purgy|Roxanne|the royal jelly|Rupert|Saint Roka|the Serpent of Hell|Sigmund|Snorg|Sojobo|Sonja|Terence|Tiamat|Urug|Vashnia|Xtahua).*comes? into view tile_show_threat_levels = tough nasty ########################### ### Interface & Commands ### ############################ #탐험 시 자동 휴식 유무. true 는 휴식을 취하고 false는 휴식을 취하지 않음 explore_auto_rest = true #true는 체력과 마나가 같이 회복될 때까지 쉼 #false는 하나가 회복되면 휴식을 멈춤 rest_wait_both = true #휴식 시 선조도 고려 rest_wait_ancestor = true #자동 탐색 시 깊은 물은 탐색하지 않도록 함. #얕은 물도 추가하려면 shallow water, deep water로 추가하면 됨 travel_avoid_terrain = deep water #탭질 멈춰지는 체력 퍼센트 autofight_stop = 50 #투사체나 마법 등 이펙트 재생 속도. 기본값은 500 view_delay = 100 default_manual_training = true sort_menus = true:equipped,identified,basename,art,ego,glowing,qualname,curse,charged,slot ability_menu = true cloud_status = true hp_warning = 50 mp_warning = 50 show_more = false ########################## ### Messages & Display ### ########################## ########################## ##### autoinscribe ##### ########################## #손가락 꼬여서 소모품 날리는 걸 방지하기 위해 사용 시 한 번 확인하게 만듦 #아이템 창의 (i)nscribe 기능으로 아이템에 !q, !r 등을 자동으로 붙이는 기능임 #보라색 아이템은 아래에 안 적어도 알아서 확인 창 뜸 autoinscribe += potion.*berserk rage:!q autoinscribe += potion.*might:!q autoinscribe += potion.*curing:!q autoinscribe += potion.*brilliance:!q autoinscribe += potion.*ambrosia:!q autoinscribe += potion.*cancellation:!q autoinscribe += potion.*magic:!q autoinscribe += potion.*invisibility:!q autoinscribe += potion.*resistance:!q autoinscribe += potion.*haste:!q autoinscribe += potion.*flight:!q autoinscribe += potion.*heal wounds:!q autoinscribe += scroll.*mapping:!r autoinscribe += scroll.*fog:!r autoinscribe += scroll.*fear:!r autoinscribe += scroll.*teleportation:!r autoinscribe += scroll.*summoning:!r autoinscribe += scroll.*holy word:!r autoinscribe += throwing net:!f autoinscribe += atropa:!f autoinscribe += curare-:!f autoinscribe += datura:!f ########################### ####### 알파벳 할당 ####### ########################### #자동으로 특정 아이템에 특정 알파벳을 할당하는 기능 #완드와 감정 스크롤, 큐어 포션 등 자주 써야하는 아이템에 #쓰기 편한 알파벳을 할당하면 게임이 편해짐 #Item_slot += wand of flame:f는 #f키에 할당된 아이템이 없을 경우 화염 완드를 할당함 #Item_slot += wand of flame:+f는 #f키에 다른 아이템이 할당되어 있어도 화염 완드로 바꿈 #예시용으로 하나씩 놔뒀으니 컨트롤cv로 원하는 것들을 추가하자 Item_slot += poisoned dart:+v Item_slot += wand of digging:+D Item_slot += tin of tremorstones:+F item_slot += scroll.*identify:+r item_slot += potion.*curing:+Q #어빌리티 부분 ability_slot += Fly|flight:+d ability_slot += Stop Flying:+D ability_slot += End Transformation:+q #권능도 됨(아래는 죠베 권능) ability_slot += Draw Destruction:+a ability_slot += Deal Four:+A #마법 부분 #za보단 zz가 편하므로 1렙 마법들을 z에 할당해 놓았음 #다른 마법들도 자신의 손에 익은 대로 바꿔 놓자 spell_slot += Magic Dart:z spell_slot += Sandblast:a spell_slot += Freeze:z spell_slot += Shock:z spell_slot += Sting:z spell_slot += pain:z spell_slot += Corona:z #폭스파이어, 올그렙, 냉장고 등 조준이 필요 없으면서 수 백 번 쓰는 마법들은 #매크로를 이용해 더 쉽게 사용할 수 있음 spell_slot += foxfire:u macros += M {-1011} zu # {-1011}은 f1키를 뜻 함. f1키를 누르면 컴퓨터가 zu를 눌러줌. #즉 f1을 누르면 u에 할당된 폭스파이어 마법이 시전 된다. #이를 응용해 수집 마법도 편하게 쓸 수 있다. #아래 #을 지우면 b키를 누를 시 수집이 시전 됨 #spell_slot += Apportation:+n #macros += M b zn. ###################### ##### Autopickup ##### ###################### #아래는 돈, 포션, 스크롤 등 대부분의 아이템을 줍도록 함 autopickup = $?!:"/|} autopickup_exceptions += <(Roxanne|horn of Geryon|Wucad Mu) #필요 없는 투척무기는 아래에서 지우면 줍지 않음 autopickup_exceptions += <(throwing net|dart|javelin) #진동석, 이몰 스크롤과 일부 포션 등 보라색 아이템들은 따로 설정해야 줍는다 autopickup_exceptions ^= scroll.*(torment|vulnerability) autopickup_exceptions ^= >potion.*berserk #확인 된 지팡이는 줍지 않도록 함 autopickup_exceptions += >staff of (fire|cold|air|earth|conj|pois|death) #확인 된 아뮬렛은 줍지 않도록 함 autopickup_exceptions += >amulet of (faith|regen|reflect|the acrobat|guardian|magic) #종족이 문어가 아닐 경우 확인 된 반지는 줍지 않도록 함 : if you.race() ~= "Octopede" then ae += >ring of protection from (magic|fire|cold) ae += >ring of (fire|ice|pois|positive|resist corr|see) ae += >ring of (mag|flight|steal|wiz|int|str|dex|slay|prot|eva) : end #종족이 오우거, 트롤 일 경우 바위도 자동줍기 목록에 포함시킴 : if you.race() == "Ogre" or you.race() == "Troll" then ae += = 8 and early then crawl.setopt("more -= (ogre|orc priest|orc warrior).*into view") crawl.setopt("more -= (hornet|centaur|drake|cyclops).*into view") crawl.setopt("more -= wield.*(venom|chaos|elec|drain)") crawl.setopt("flash -= wield.*(venom|chaos|elec|drain)") crawl.setopt("more -= you!") crawl.setopt("more -= you with.*!") crawl.setopt("more ^= you!!") crawl.setopt("more ^= you with.*!!") early = false end end } #아래는 15레벨 미만일 때 : if you.xl() < 15 then more += (meliai|beetle|hydra|dragon).*into view more += (ettin|stone|frost giant|fire giant).*into view more += carrying a wand of (acid|dis|ice|para|slave|poly) flash += carrying a wand of (acid|dis|ice|para|slave|poly) more += zaps a wand more += is.*quivering.*(curare|atropa|datura) flash += is.*quivering.*(curare|atropa|datura) : end { local mid = true function XLCheckOptions_Mid() if you.xl() >= 15 and mid then crawl.setopt("more -= (meliai|beetle|hydra|dragon).*into view") crawl.setopt("more -= (ettin|stone|frost giant|fire giant).*into view") crawl.setopt("more -= carrying a wand of (acid|dis|ice|para|slave|poly)") crawl.setopt("flash -= carrying a wand of (acid|dis|ice|para|slave|poly)") crawl.setopt("more -= zaps a wand") crawl.setopt("more -= is.*quivering.*(curare|atropa|datura)") crawl.setopt("flash -= is.*quivering.*(curare|atropa|datura)") mid = false end end } : if you.xl() < 27 then more += (high priest|annihilator|sorcerer|scorcher).*into view more += (titan|juggernaut|shrike|moth).*into view more += (warden|acid blob|executioner).*into view #아래는 슬라임 4~5단계가 될 때 나오는 메세지 more += form an (enormous|titanic) #투명 몹 발견 시 more += Deactivating autopickup #텔레포트 시 more += Your surroundings suddenly seem different : end { local late = true function XLCheckOptions_Late() if you.xl() == 27 and late then crawl.setopt("more -= (high priest|annihilator|sorcerer|scorcher).*into view") crawl.setopt("more -= (titan|juggernaut|shrike|moth).*into view") crawl.setopt("more -= (warden|acid blob|executioner).*into view") crawl.setopt("more -= form an (enormous|titanic)") crawl.setopt("more -= Deactivating autopickup") crawl.setopt("more -= Your surroundings suddenly seem different") late = false end end } #텔포, 광폭화, 블러리 비전 변이 시 확인 창을 띄우는 기능 { local mut = true function mutate() if mut then if string.find(crawl.messages(5), "you.*uncertain") or string.find(crawl.messages(5), "pissed off") or string.find(crawl.messages(5), "vision blurs") then mut = false crawl.yesno("위험한 변이@@") end end if not mut and not string.find(crawl.messages(8), "@@") then mut = true end end } #페다스, 루고누를 믿을 때 건틀렛 입장 시 확인 창을 띄우는 기능 #두 신 다 권능으로 건틀렛의 벽을 파괴할 수 있다 { local guant = true function gauntletwall() if gaunt and string.find(crawl.messages(4), "enter.*gauntlet") and ( you.god() == "Lugonu" or you.god() == "Fedhas") then crawl.yesno("권능으로 벽 파괴", false, false, true, true) gaunt = false end end } #아래는 입은 데미지 계산과 저체력 경고 rc (아마) { function hp_percent() a,b=you.hp() return 90*a/b end } { function mp_percent() a,b=you.mp() return 90*a/b end } { local early = true function hpWarning_Early() if you.hp() < 21 and hp_percent() < 30 and you.xl() < 9 and early then crawl.yesno("Low HP: Be careful! (Y or N to confirm.)", false, false, true, true) crawl.mpr("확인") early = false end if you.hp() > 20 and hp_percent() > 29 and you.xl() < 9 then early = true end end } { local mid = true function hpWarning_Mid() if you.hp() < 35 and you.xl() < 20 and you.xl() > 8 and mid then crawl.yesno("Low HP: Be careful! (Y or N to confirm.)", false, false, true, true) crawl.mpr("확인") mid = false end if you.hp() > 34 and you.xl() < 20 and you.xl() > 8 then mid = true end end } { local late = true function hpWarning_Late() if you.hp() < 60 and you.xl() == 27 and not you.status("death's door") and not you.status("death's door (expiring)") and late then crawl.yesno("Low HP Warning! (Y/N)", false, false, true, true) crawl.mpr("확인") late = false end if you.hp() > 59 and you.xl() == 27 then late = true end end } { local previous_hp = 0 local previous_mp = 0 local previous_form = "" local was_berserk_last_turn = false function AnnounceDamage() local current_hp, max_hp = you.hp() local current_mp, max_mp = you.mp() --Things that increase hp/mp temporarily really mess with this local current_form = you.transform() local you_are_berserk = you.berserk() local max_hp_increased = false local max_hp_decreased = false if (current_form ~= previous_form) then if (previous_form:find("dragon") or previous_form:find("statue") or previous_form:find("tree") or previous_form:find("ice")) then max_hp_decreased = true elseif (current_form:find("dragon") or current_form:find("statue") or current_form:find("tree") or current_form:find("ice")) then max_hp_increased = true end end if (was_berserk_last_turn and not you_are_berserk) then max_hp_decreased = true elseif (you_are_berserk and not was_berserk_last_turn) then max_hp_increased = true end --crawl.mpr(string.format("previous_form is: %s", previous_form)) --crawl.mpr(string.format("current_form is: %s", current_form)) --crawl.mpr(string.format("max_hp_increased is: %s", max_hp_increased and "True" or "False")) --crawl.mpr(string.format("max_hp_decreased is: %s", max_hp_decreased and "True" or "False")) --crawl.mpr(string:format("you_are_berserk is: %s", you_are_berserk and "True" or "False")) --crawl.mpr(string:format("was_berserk_last_turn is: %s", was_berserk_last_turn and "True" or "False")) --Skips message on initializing game if previous_hp > 0 then local hp_difference = previous_hp - current_hp local mp_difference = previous_mp - current_mp if max_hp_increased or max_hp_decreased then if max_hp_increased then crawl.mpr("You now have " .. current_hp .. "/" .. max_hp .. " hp.") else crawl.mpr("You now have " .. current_hp .. "/" .. max_hp .. " hp.") end else --On losing health if (current_hp < previous_hp) then if current_hp <= (max_hp * 0.30) then crawl.mpr("@ " .. hp_difference .. " 의 대미지, 남은 HP = " .. current_hp .. "/" .. max_hp .. " hp.") elseif current_hp <= (max_hp * 0.50) then crawl.mpr("@2 " .. hp_difference .. " 의 대미지, 남은 HP2 = " .. current_hp .. "/" .. max_hp .. " hp.") elseif current_hp <= (max_hp * 0.70) then crawl.mpr("@3 " .. hp_difference .. " 의 대미지, 남은 HP3 = " .. current_hp .. "/" .. max_hp .. " hp.") elseif current_hp <= (max_hp * 0.90) then crawl.mpr("@4 " .. hp_difference .. " 의 대미지, 남은 HP4 = " .. current_hp .. "/" .. max_hp .. " hp.") else crawl.mpr("@5 " .. hp_difference .. " 의 대미지, 남은 HP5 = " .. current_hp .. "/" .. max_hp .. " hp.") end end end end --Set previous hp/mp and form at end of turn previous_hp = current_hp previous_mp = current_mp previous_form = current_form was_berserk_last_turn = you_are_berserk end } #아래는 데스도어 관련 편의성 기능 { local door = true function DDoorWarning() if you.status("death's door (expiring)") and door then crawl.yesno("DDoor is almost expired! (Y or N to confirm.)", false, false, true, false) crawl.mpr("It will be ended within 5-10 turns......") door = false end if not you.status("death's door (expiring)") then door = true end end } { local counter = you.turns() function DDoorCounter() if you.status("death's door (expiring)") then crawl.mpr("Count "..you.turns() - counter.."......") end if not you.status("death's door (expiring)") then counter = you.turns()+1 end end } ###아래는 게임 중 확인 창이 떴을 때 자동으로 Y/N을 눌러주는 기능임 #새로 만들고 싶다면 prompt:find(“특정 메시지”) 여기에 #확인 창에 나오는 메시지 일부 또는 전부를 넣으면 됨 # return true는 Y, return false는 N을 누르게 함 #아군이 근처에 있을 때 싱잉소드 등 #광역 공격 무기를 휘두를 때 확인 창 띄우는 것을 무시하는 기능 #강령술을 이용해 만든 아군과 악마 소환으로 소환 된 악마들은 #송환 되지 않고 적대적으로 변하므로 주의 #아군 공격을 싫어하는 신들을 믿을 땐 작동하지 않도록 함 { function c_answer_prompt(prompt) if prompt:find("Really attack near your") and (you.god() ~= "Okawaru" or you.god() ~= "Fedhas" or you.god() ~= "Jiyva" or you.god() ~= "Beogh" or you.god() ~= "Yredelemnul" or you.god() ~= "Elyvilon" or you.god() ~= "The Shining One" or you.god() ~= "Zin") then return true end end } #화폭의 볼텍스와 배틀 스피어가 광역 마법 시전을 방해하는 것을 무시 { function c_answer_prompt2(prompt) if prompt:find("vortices") or prompt:find("vortex") or prompt:find("battlesphere") then return true end end } #화염, 냉기 저항이 3단계면 해당 구름에 들어갈 때 경고창 뜨는 것을 무시하는 기능 #작동하지 않도록 #으로 주석처리를 해놓았으니 사용하려면 #아래 문장 앞의 #들을 지우면 됨 #{ #function c_answer_prompt3(prompt) # #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 #} ###아래는 자동 휴식 관련 onoff 기능 #f9를 누를 시 자동탐험 전 휴식을 취하는 기능을 on, off 함 macros += M {-1019} ===ToggleAutorest { local autorest = true function ToggleAutorest() if autorest then crawl.setopt("explore_auto_rest = true") crawl.mpr("자동 휴식 OFF") autorest = false else crawl.setopt("explore_auto_rest = true") crawl.mpr("자동 휴식 ON") autorest = true end return end } #f10을 누를 시 휴식 시 체력, 마나를 회복하는 양(90%, 100%)을 조절함 macros += M {-1020} ===ToggleRestper { local restper1 = true function ToggleRestper() if restper1 then crawl.setopt("rest_wait_percent = 90") crawl.mpr("90% 휴식") restper1 = false else crawl.setopt("rest_wait_percent = 100") crawl.mpr("100% 휴식") restper1 = true end return end } ######### Experimental ########################### ###include += SpeedrunRest1.rc macros += M p za\{13} macros += M - \{9} macros += K \{-1005} \{32} ######## Autoexplore Interruption Messages ######################## stop := runrest_stop_message stop += Your transformation is almost over ######## Annoyances ######################## ;ignore += grinding sound ;ignore += contamination has completely ;ignore += your breath back #-----------------------------------------------------------------------------------------------------------# #----------------------------------------------- Force More ------------------------------------------------# #-----------------------------------------------------------------------------------------------------------# ## Dangerous messages ## flash_screen_message += You are slowing down flash_screen_message += your limbs are stiffening flash_screen_message += The floating eye seems to glare at you flash_screen_message += The floating eye's stare focuses on you flash_screen_message += The floating eye's view fixates on you flash_screen_message += A sentinel's mark forms upon you flash_screen_message += distant snort flash_screen_message += unleashes a terrible howl flash_screen_message += engulfs you in water flash_screen_message += The ushabti shakes and rattles deafeningly! flash_screen_message += You hear strange and distant voices. flash_screen_message += finished your manual flash_screen_message += The spriggan druid calls out to the beasts of the wild! flash_screen_message += Found a gateway to a bazaar. flash_screen_message += You are engulfed in seething chaos. ## Player's status ## force_more_message += .*(Agnes|Aizul|Amaemon|Antaeus|Arachne|Asmodeus|Azrael|Bai suzhen|Blork the orc|Boris|Cerebov|Crazy Yiuf|Dispater|Dissolution|Donald|Dowan|Duvessa|Edmund|the Enchantress|Ereshkigal|Erica|Erolcha|Eustachio|Fannar|Frances|Frederick|Gastronok|Geryon|Gloorx Vloq|Grinder|Grum|Grunn|Harold|Ignacio|Ijyb|Ilsuiw|Jessica|Jorgrun|Jory|Joseph|Josephina|Josephine|Khufu|Kirke|the Lernaean hydra|Lodul|Lom Lobon|Louise|Maggie|Mara|Margery|Maurice|Menkaure|Mlioglotl|Mennas|Mnoleg|Murray|Nergalle|Natasha|Nessos|Nikola|Pan|Parghit|Pikel|Polyphemus|Prince Ribbit|Psyche|Purgy|Robin|Roxanne|the royal jelly|Rupert|Saint Roka|the Serpent of Hell|Sigmund|Snorg|Sojobo|Sonja|Terence|Tiamat|Urug|Vashnia|Vv|Xtahua|Zenata).*comes? into view ######## Miscellaneous ######################## #tile_player_tile = mons: dart slug #you.transform() == "statue" then~ #you.mutation("slowness") then~ #you.hunger_name() == "starving" then~ ##! means you did 7-17 damage. 2!!: 18-35. 3!!!: 36-71. 4!!!!: 72-143. 5!!!!!: 144-287. 6!!!!!!: 288+; and so on. Yikes! ##<6: 288-575, 7: 576-1151, 8: 1152-2303, 9: 2304-4607> ######## Function Section ######################## { function ready() Petrifying_Check() OpenSkills() hpWarning_Early() hpWarning_Mid() hpWarning_Late() hp_percent() mp_percent() AnnounceDamage() Vehumetoffer() Ruoffer() DDoorCounter() end } { function hp_percent() a,b=you.hp() return 100*a/b end } { function mp_percent() a,b=you.mp() return 100*a/b end } { function Petrifying_Check() if you.petrifying() then crawl.yesno("You are now petrifying so your action will be checked. (Y or N to confirm.)", false, false, true, true) crawl.mpr("Consider to using tele/blink, Yara, cancellation or other emergency measures......", 5) end end } { local need_skills_opened = true function OpenSkills() if you.turns() == 0 and need_skills_opened then need_skills_opened = false crawl.sendkeys("m") crawl.mpr("Pride is your worst enemy! Be on prudent way!", 3) end end } { local early = true function hpWarning_Early() if you.hp() < 21 and hp_percent() < 30 and you.xl() < 9 and early then crawl.yesno("Low HP: Be careful! (Y or N to confirm.)", false, false, true, true) crawl.mpr("The dice are ABSOLUTELY not on your side......", 5) early = false end if you.hp() > 20 and hp_percent() > 29 and you.xl() < 9 then early = true end end } { local mid = true function hpWarning_Mid() if you.hp() < 35 and you.xl() < 20 and you.xl() > 8 and mid then crawl.yesno("Low HP: Be careful! (Y or N to confirm.)", false, false, true, true) crawl.mpr("Consider to using tele/blink, potion or other emergency measures......", 5) mid = false end if you.hp() > 34 and you.xl() < 20 and you.xl() > 8 then mid = true end end } { local late = true function hpWarning_Late() if you.hp() < 60 and you.xl() == 27 and not you.status("death's door") and not you.status("death's door (expiring)") and late then crawl.yesno("Low HP: Be careful! (Y or N to confirm.)", false, false, true, true) crawl.mpr("Keep playing discreetly even on late-game......", 5) late = false end if you.hp() > 59 and you.xl() == 27 then late = true end end } { local previous_hp = 0 local previous_mp = 0 local previous_form = "" local was_berserk_last_turn = false function AnnounceDamage() local current_hp, max_hp = you.hp() local current_mp, max_mp = you.mp() --Things that increase hp/mp temporarily really mess with this local current_form = you.transform() local you_are_berserk = you.berserk() local max_hp_increased = false local max_hp_decreased = false if (current_form ~= previous_form) then if (previous_form:find("dragon") or previous_form:find("statue") or previous_form:find("tree") or previous_form:find("ice")) then max_hp_decreased = true elseif (current_form:find("dragon") or current_form:find("statue") or current_form:find("tree") or current_form:find("ice")) then max_hp_increased = true end end if (was_berserk_last_turn and not you_are_berserk) then max_hp_decreased = true elseif (you_are_berserk and not was_berserk_last_turn) then max_hp_increased = true end --crawl.mpr(string.format("previous_form is: %s", previous_form)) --crawl.mpr(string.format("current_form is: %s", current_form)) --crawl.mpr(string.format("max_hp_increased is: %s", max_hp_increased and "True" or "False")) --crawl.mpr(string.format("max_hp_decreased is: %s", max_hp_decreased and "True" or "False")) --crawl.mpr(string:format("you_are_berserk is: %s", you_are_berserk and "True" or "False")) --crawl.mpr(string:format("was_berserk_last_turn is: %s", was_berserk_last_turn and "True" or "False")) --Skips message on initializing game if previous_hp > 0 then local hp_difference = previous_hp - current_hp local mp_difference = previous_mp - current_mp if max_hp_increased or max_hp_decreased then if max_hp_increased then crawl.mpr("You now have " .. current_hp .. "/" .. max_hp .. " hp.") else crawl.mpr("You now have " .. current_hp .. "/" .. max_hp .. " hp.") end else --On losing health if (current_hp < previous_hp) then if current_hp <= (max_hp * 0.30) then crawl.mpr("You take " .. hp_difference .. " damage, and have " .. current_hp .. "/" .. max_hp .. " hp.") elseif current_hp <= (max_hp * 0.50) then crawl.mpr("You take " .. hp_difference .. " damage, and have " .. current_hp .. "/" .. max_hp .. " hp.") elseif current_hp <= (max_hp * 0.70) then crawl.mpr("You take " .. hp_difference .. " damage, and have " .. current_hp .. "/" .. max_hp .. " hp.") elseif current_hp <= (max_hp * 0.90) then crawl.mpr("You take " .. hp_difference .. " damage, and have " .. current_hp .. "/" .. max_hp .. " hp.") else crawl.mpr("You take " .. hp_difference .. " damage, and have " .. current_hp .. "/" .. max_hp .. " hp.") end end end end --Set previous hp/mp and form at end of turn previous_hp = current_hp previous_mp = current_mp previous_form = current_form was_berserk_last_turn = you_are_berserk end } { local veh = true function Vehumetoffer() if string.find(crawl.messages(4), "Vehumet offers") and veh then crawl.yesno("Vehumet offers a spell for you! (Y or N to confirm.)", false, false, true, true) veh = false end if string.find(crawl.messages(4), "Vehumet accepts") then veh = true end end } { local ru = true function Ruoffer() if string.find(crawl.messages(4), "Ru believes") and ru then crawl.yesno("Ru offers sacrifice for you! (Y or N to confirm.)", false, false, true, true) ru = false end if string.find(crawl.messages(6), "Ru asks you to") or string.find(crawl.messages(6), "Ru will take longer") then ru = true end end } ######## Non-ready() Function Section ######################## { function custom_rest() if hp_percent() == 100 and mp_percent() == 100 then if crawl.yesnoquit("Really wait turns while hp and mp are full?", true, 'n') == 1 then crawl.process_keys("5") end else crawl.process_keys("5") end end } { function c_answer_prompt(prompt) if prompt:find("vortices") or prompt:find("vortex") or prompt:find("friend") then return true end if prompt:find("That beam") and you.res_fire() == 0 and not you.status("death's door") then if crawl.yesno("REALLY cast on yourself without fire resistance?",false,'n') then return end end if prompt == "Really attack while wielding the +9 staff of Wucad Mu {channel, !a!d}?" then return false end end } ;{ ;function c_answer_prompt(prompt) ; if prompt:find("vortices") or prompt:find("vortex") or prompt:find("friend") ;then ; return true ; end ; if prompt:find("That beam") and you.res_fire() == 0 and not ;you.status("death's door") then ; return false ; end ;end } { local counter = you.turns() function DDoorCounter() if you.status("in death's door (expiring)") then crawl.mpr("Count "..you.turns() - counter.."......") end if not you.status("in death's door (expiring)") then counter = you.turns()+1 end end } ## Player's status ## more := force_more_message more += Careful! more += .*LOW HITPOINT WARNING more += Ouch! That really hurt! more += You stumble into a teleport trap! ## Holy weapon force more when undead or ds :if you.race() == "Vampire" or you.race() == "Mummy" or you.race() == "Ghoul" or you.race() == "Demonspawn" then more += (revenant|black sun).*into view more += wielding.*holy wrath more += holy wrath.*into view flash += wielding.*holy wrath flash += holy wrath.*into view :end travel_delay = 0 explore_delay=-1 ##### 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 # 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 ##### Ancient versions ############################################## # If you're used to the interface of ancient versions of Crawl, you may # get back parts of it by uncommenting the following options: # include = 034_command_keys.txt ##### 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 # 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 ##### Ancient versions ############################################## # If you're used to the interface of ancient versions of Crawl, you may # get back parts of it by uncommenting the following options: # include = 034_command_keys.txt force_more_message += .*(Agnes|Aizul|Antaeus|Arachne|Asmodeus|Azrael|Bai suzhen|Blork the orc|Boris|Cerebov|Crazy Yiuf|Dispater|Dissolution|Donald|Dowan|Duvessa|Edmund|the Enchantress|Ereshkigal|Erica|Erolcha|Eustachio|Fannar|Frances|Frederick|Gastronok|Geryon|Gloorx Vloq|Grinder|Grum|Harold|Ignacio|Ijyb|Ilsuiw|Jessica|Jorgrun|Jory|Joseph|Josephine|Khufu|Kirke|the Lernaean hydra|Lom Lobon|Louise|Mara|Margery|Maurice|Menkaure|Mennas|Mnoleg|Murray|Nergalle|Natasha|Nessos|Nikola|Pan|Pikel|Polyphemus|Prince Ribbit|Psyche|Purgy|Roxanne|the royal jelly|Rupert|Saint Roka|the Serpent of Hell|Sigmund|Snorg|Sojobo|Sonja|Terence|Tiamat|Urug|Vashnia|Xtahua).*comes? into view tile_show_threat_levels = tough nasty #$lab_transfer_chat_ingame=true #$lab_hide_chat_control=true #$lab_disable_mouse_move=true #$lab_sound_on=false #$lab_disable_chat_clear=true #$lab_gold_status=true ########################### ### Interface & Commands ### ############################ #탐험 시 자동 휴식 유무. true 는 휴식을 취하고 false는 휴식을 취하지 않음 explore_auto_rest = true #true는 체력과 마나가 같이 회복될 때까지 쉼 #false는 하나가 회복되면 휴식을 멈춤 rest_wait_both = true #휴식 시 선조도 고려 rest_wait_ancestor = true #자동 탐색 시 깊은 물은 탐색하지 않도록 함. #얕은 물도 추가하려면 shallow water, deep water로 추가하면 됨 travel_avoid_terrain = deep water #탭질 멈춰지는 체력 퍼센트 autofight_stop = 50 #투사체나 마법 등 이펙트 재생 속도. 기본값은 500 view_delay = 100 default_manual_training = true sort_menus = true:equipped,identified,basename,art,ego,glowing,qualname,curse,charged,slot ability_menu = true cloud_status = true hp_warning = 50 mp_warning = 50 show_more = false ########################## ### Messages & Display ### ########################## hp_colour = 100:green, 99:lightgray, 75:yellow, 50:lightred, 25:red mp_colour = 100:green, 99:lightgray, 75:yellow, 50:lightred, 25:red ########################## ##### autoinscribe ##### ########################## #손가락 꼬여서 소모품 날리는 걸 방지하기 위해 사용 시 한 번 확인하게 만듦 #아이템 창의 (i)nscribe 기능으로 아이템에 !q, !r 등을 자동으로 붙이는 기능임 #보라색 아이템은 아래에 안 적어도 알아서 확인 창 뜸 autoinscribe += potion.*berserk rage:!q autoinscribe += potion.*might:!q autoinscribe += potion.*curing:!q autoinscribe += potion.*brilliance:!q autoinscribe += potion.*ambrosia:!q autoinscribe += potion.*cancellation:!q autoinscribe += potion.*magic:!q autoinscribe += potion.*invisibility:!q autoinscribe += potion.*resistance:!q autoinscribe += potion.*haste:!q autoinscribe += potion.*flight:!q autoinscribe += potion.*heal wounds:!q autoinscribe += scroll.*mapping:!r autoinscribe += scroll.*fog:!r autoinscribe += scroll.*fear:!r autoinscribe += scroll.*teleportation:!r autoinscribe += scroll.*summoning:!r autoinscribe += scroll.*holy word:!r autoinscribe += throwing net:!f autoinscribe += atropa:!f autoinscribe += curare-:!f autoinscribe += datura:!f ########################### ####### 알파벳 할당 ####### ########################### #자동으로 특정 아이템에 특정 알파벳을 할당하는 기능 #완드와 감정 스크롤, 큐어 포션 등 자주 써야하는 아이템에 #쓰기 편한 알파벳을 할당하면 게임이 편해짐 #Item_slot += wand of flame:f는 #f키에 할당된 아이템이 없을 경우 화염 완드를 할당함 #Item_slot += wand of flame:+f는 #f키에 다른 아이템이 할당되어 있어도 화염 완드로 바꿈 #예시용으로 하나씩 놔뒀으니 컨트롤cv로 원하는 것들을 추가하자 Item_slot += poisoned dart:+v Item_slot += wand of digging:+D Item_slot += tin of tremorstones:+F item_slot += scroll.*identify:+r item_slot += potion.*curing:+Q #어빌리티 부분 ability_slot += Fly|flight:+d ability_slot += Stop Flying:+D ability_slot += End Transformation:+q #권능도 됨(아래는 죠베 권능) ability_slot += Draw Destruction:+a ability_slot += Deal Four:+A #마법 부분 #za보단 zz가 편하므로 1렙 마법들을 z에 할당해 놓았음 #다른 마법들도 자신의 손에 익은 대로 바꿔 놓자 spell_slot += Magic Dart:z spell_slot += Sandblast:z spell_slot += Freeze:z spell_slot += Shock:z spell_slot += Sting:z spell_slot += pain:z spell_slot += Corona:z #폭스파이어, 올그렙, 냉장고 등 조준이 필요 없으면서 수 백 번 쓰는 마법들은 #매크로를 이용해 더 쉽게 사용할 수 있음 spell_slot += foxfire:u macros += M {-1011} zu # {-1011}은 f1키를 뜻 함. f1키를 누르면 컴퓨터가 zu를 눌러줌. #즉 f1을 누르면 u에 할당된 폭스파이어 마법이 시전 된다. #이를 응용해 수집 마법도 편하게 쓸 수 있다. #아래 #을 지우면 b키를 누를 시 수집이 시전 됨 #spell_slot += Apportation:+n #macros += M b zn. ###################### ##### Autopickup ##### ###################### #아래는 돈, 포션, 스크롤 등 대부분의 아이템을 줍도록 함 autopickup = $?!:"/|} autopickup_exceptions += <(Roxanne|horn of Geryon|Wucad Mu) #필요 없는 투척무기는 아래에서 지우면 줍지 않음 autopickup_exceptions += <(throwing net|dart|javelin) #진동석, 이몰 스크롤과 일부 포션 등 보라색 아이템들은 따로 설정해야 줍는다 autopickup_exceptions ^= scroll.*(torment|vulnerability) autopickup_exceptions ^= >potion.*berserk #확인 된 지팡이는 줍지 않도록 함 autopickup_exceptions += >staff of (fire|cold|air|earth|conj|pois|death) #확인 된 아뮬렛은 줍지 않도록 함 autopickup_exceptions += >amulet of (faith|regen|reflect|the acrobat|guardian|magic) #종족이 문어가 아닐 경우 확인 된 반지는 줍지 않도록 함 : if you.race() ~= "Octopede" then ae += >ring of protection from (magic|fire|cold) ae += >ring of (fire|ice|pois|positive|resist corr|see) ae += >ring of (mag|flight|steal|wiz|int|str|dex|slay|prot|eva) : end #종족이 오우거, 트롤 일 경우 바위도 자동줍기 목록에 포함시킴 : if you.race() == "Ogre" or you.race() == "Troll" then ae += = 8 and early then crawl.setopt("more -= (ogre|orc priest|orc warrior).*into view") crawl.setopt("more -= (hornet|centaur|drake|cyclops).*into view") crawl.setopt("more -= wield.*(venom|chaos|elec|drain)") crawl.setopt("flash -= wield.*(venom|chaos|elec|drain)") crawl.setopt("more -= you!") crawl.setopt("more -= you with.*!") crawl.setopt("more ^= you!!") crawl.setopt("more ^= you with.*!!") early = false end end } #아래는 15레벨 미만일 때 : if you.xl() < 15 then more += (meliai|beetle|hydra|dragon).*into view more += (ettin|stone|frost giant|fire giant).*into view more += carrying a wand of (acid|dis|ice|para|slave|poly) flash += carrying a wand of (acid|dis|ice|para|slave|poly) more += zaps a wand more += is.*quivering.*(curare|atropa|datura) flash += is.*quivering.*(curare|atropa|datura) : end { local mid = true function XLCheckOptions_Mid() if you.xl() >= 15 and mid then crawl.setopt("more -= (meliai|beetle|hydra|dragon).*into view") crawl.setopt("more -= (ettin|stone|frost giant|fire giant).*into view") crawl.setopt("more -= carrying a wand of (acid|dis|ice|para|slave|poly)") crawl.setopt("flash -= carrying a wand of (acid|dis|ice|para|slave|poly)") crawl.setopt("more -= zaps a wand") crawl.setopt("more -= is.*quivering.*(curare|atropa|datura)") crawl.setopt("flash -= is.*quivering.*(curare|atropa|datura)") mid = false end end } : if you.xl() < 27 then more += (high priest|annihilator|sorcerer|scorcher).*into view more += (titan|juggernaut|shrike|moth).*into view more += (warden|acid blob|executioner).*into view #아래는 슬라임 4~5단계가 될 때 나오는 메세지 more += form an (enormous|titanic) #투명 몹 발견 시 more += Deactivating autopickup #텔레포트 시 more += Your surroundings suddenly seem different : end { local late = true function XLCheckOptions_Late() if you.xl() == 27 and late then crawl.setopt("more -= (high priest|annihilator|sorcerer|scorcher).*into view") crawl.setopt("more -= (titan|juggernaut|shrike|moth).*into view") crawl.setopt("more -= (warden|acid blob|executioner).*into view") crawl.setopt("more -= form an (enormous|titanic)") crawl.setopt("more -= Deactivating autopickup") crawl.setopt("more -= Your surroundings suddenly seem different") late = false end end } #텔포, 광폭화, 블러리 비전 변이 시 확인 창을 띄우는 기능 { local mut = true function mutate() if mut then if string.find(crawl.messages(5), "you.*uncertain") or string.find(crawl.messages(5), "pissed off") or string.find(crawl.messages(5), "vision blurs") then mut = false crawl.yesno("위험한 변이@@") end end if not mut and not string.find(crawl.messages(8), "@@") then mut = true end end } #페다스, 루고누를 믿을 때 건틀렛 입장 시 확인 창을 띄우는 기능 #두 신 다 권능으로 건틀렛의 벽을 파괴할 수 있다 { local guant = true function gauntletwall() if gaunt and string.find(crawl.messages(4), "enter.*gauntlet") and ( you.god() == "Lugonu" or you.god() == "Fedhas") then crawl.yesno("권능으로 벽 파괴", false, false, true, true) gaunt = false end end } #아래는 입은 데미지 계산과 저체력 경고 rc (아마) { function hp_percent() a,b=you.hp() return 90*a/b end } { function mp_percent() a,b=you.mp() return 90*a/b end } { local early = true function hpWarning_Early() if you.hp() < 21 and hp_percent() < 30 and you.xl() < 9 and early then crawl.yesno("Low HP: Be careful! (Y or N to confirm.)", false, false, true, true) crawl.mpr("확인") early = false end if you.hp() > 20 and hp_percent() > 29 and you.xl() < 9 then early = true end end } { local mid = true function hpWarning_Mid() if you.hp() < 35 and you.xl() < 20 and you.xl() > 8 and mid then crawl.yesno("Low HP: Be careful! (Y or N to confirm.)", false, false, true, true) crawl.mpr("확인") mid = false end if you.hp() > 34 and you.xl() < 20 and you.xl() > 8 then mid = true end end } { local late = true function hpWarning_Late() if you.hp() < 60 and you.xl() == 27 and not you.status("death's door") and not you.status("death's door (expiring)") and late then crawl.yesno("Low HP Warning! (Y/N)", false, false, true, true) crawl.mpr("확인") late = false end if you.hp() > 59 and you.xl() == 27 then late = true end end } { local previous_hp = 0 local previous_mp = 0 local previous_form = "" local was_berserk_last_turn = false function AnnounceDamage() local current_hp, max_hp = you.hp() local current_mp, max_mp = you.mp() --Things that increase hp/mp temporarily really mess with this local current_form = you.transform() local you_are_berserk = you.berserk() local max_hp_increased = false local max_hp_decreased = false if (current_form ~= previous_form) then if (previous_form:find("dragon") or previous_form:find("statue") or previous_form:find("tree") or previous_form:find("ice")) then max_hp_decreased = true elseif (current_form:find("dragon") or current_form:find("statue") or current_form:find("tree") or current_form:find("ice")) then max_hp_increased = true end end if (was_berserk_last_turn and not you_are_berserk) then max_hp_decreased = true elseif (you_are_berserk and not was_berserk_last_turn) then max_hp_increased = true end --crawl.mpr(string.format("previous_form is: %s", previous_form)) --crawl.mpr(string.format("current_form is: %s", current_form)) --crawl.mpr(string.format("max_hp_increased is: %s", max_hp_increased and "True" or "False")) --crawl.mpr(string.format("max_hp_decreased is: %s", max_hp_decreased and "True" or "False")) --crawl.mpr(string:format("you_are_berserk is: %s", you_are_berserk and "True" or "False")) --crawl.mpr(string:format("was_berserk_last_turn is: %s", was_berserk_last_turn and "True" or "False")) --Skips message on initializing game if previous_hp > 0 then local hp_difference = previous_hp - current_hp local mp_difference = previous_mp - current_mp if max_hp_increased or max_hp_decreased then if max_hp_increased then crawl.mpr("You now have " .. current_hp .. "/" .. max_hp .. " hp.") else crawl.mpr("You now have " .. current_hp .. "/" .. max_hp .. " hp.") end else --On losing health if (current_hp < previous_hp) then if current_hp <= (max_hp * 0.30) then crawl.mpr("@ " .. hp_difference .. " 의 대미지, 남은 HP = " .. current_hp .. "/" .. max_hp .. " hp.") elseif current_hp <= (max_hp * 0.50) then crawl.mpr("@2 " .. hp_difference .. " 의 대미지, 남은 HP2 = " .. current_hp .. "/" .. max_hp .. " hp.") elseif current_hp <= (max_hp * 0.70) then crawl.mpr("@3 " .. hp_difference .. " 의 대미지, 남은 HP3 = " .. current_hp .. "/" .. max_hp .. " hp.") elseif current_hp <= (max_hp * 0.90) then crawl.mpr("@4 " .. hp_difference .. " 의 대미지, 남은 HP4 = " .. current_hp .. "/" .. max_hp .. " hp.") else crawl.mpr("@5 " .. hp_difference .. " 의 대미지, 남은 HP5 = " .. current_hp .. "/" .. max_hp .. " hp.") end end end end --Set previous hp/mp and form at end of turn previous_hp = current_hp previous_mp = current_mp previous_form = current_form was_berserk_last_turn = you_are_berserk end } #아래는 데스도어 관련 편의성 기능 { local door = true function DDoorWarning() if you.status("death's door (expiring)") and door then crawl.yesno("DDoor is almost expired! (Y or N to confirm.)", false, false, true, false) crawl.mpr("It will be ended within 5-10 turns......") door = false end if not you.status("death's door (expiring)") then door = true end end } { local counter = you.turns() function DDoorCounter() if you.status("death's door (expiring)") then crawl.mpr("Count "..you.turns() - counter.."......") end if not you.status("death's door (expiring)") then counter = you.turns()+1 end end } ###아래는 게임 중 확인 창이 떴을 때 자동으로 Y/N을 눌러주는 기능임 #새로 만들고 싶다면 prompt:find(“특정 메시지”) 여기에 #확인 창에 나오는 메시지 일부 또는 전부를 넣으면 됨 # return true는 Y, return false는 N을 누르게 함 #아군이 근처에 있을 때 싱잉소드 등 #광역 공격 무기를 휘두를 때 확인 창 띄우는 것을 무시하는 기능 #강령술을 이용해 만든 아군과 악마 소환으로 소환 된 악마들은 #송환 되지 않고 적대적으로 변하므로 주의 #아군 공격을 싫어하는 신들을 믿을 땐 작동하지 않도록 함 { function c_answer_prompt(prompt) if prompt:find("Really attack near your") and (you.god() ~= "Okawaru" or you.god() ~= "Fedhas" or you.god() ~= "Jiyva" or you.god() ~= "Beogh" or you.god() ~= "Yredelemnul" or you.god() ~= "Elyvilon" or you.god() ~= "The Shining One" or you.god() ~= "Zin") then return true end end } #화폭의 볼텍스와 배틀 스피어가 광역 마법 시전을 방해하는 것을 무시 { function c_answer_prompt2(prompt) if prompt:find("vortices") or prompt:find("vortex") or prompt:find("battlesphere") then return true end end } #화염, 냉기 저항이 3단계면 해당 구름에 들어갈 때 경고창 뜨는 것을 무시하는 기능 #작동하지 않도록 #으로 주석처리를 해놓았으니 사용하려면 #아래 문장 앞의 #들을 지우면 됨 #{ #function c_answer_prompt3(prompt) # #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 #} ###아래는 자동 휴식 관련 onoff 기능 #f9를 누를 시 자동탐험 전 휴식을 취하는 기능을 on, off 함 macros += M {-1019} ===ToggleAutorest { local autorest = true function ToggleAutorest() if autorest then crawl.setopt("explore_auto_rest = true") crawl.mpr("자동 휴식 OFF") autorest = false else crawl.setopt("explore_auto_rest = true") crawl.mpr("자동 휴식 ON") autorest = true end return end } #f10을 누를 시 휴식 시 체력, 마나를 회복하는 양(90%, 100%)을 조절함 macros += M {-1020} ===ToggleRestper { local restper1 = true function ToggleRestper() if restper1 then crawl.setopt("rest_wait_percent = 90") crawl.mpr("90% 휴식") restper1 = false else crawl.setopt("rest_wait_percent = 100") crawl.mpr("100% 휴식") restper1 = true end return end } ##################### ##### webmodule ##### ##################### ##상태창에 보유한 골드 띄움 #$ lab_gold_status = true ##마우스 사용을 막음 #$ lab_disable_mouse_move = true ##한 번 사운드를 키면 이후 자동으로 사운드를 킴 #$ lab_sound_on = off ## 웹죽 세션 강제 유지 및 잠수 알림 (5분 이상 입력이 없어도 종료되지 않음) ## #$ lab_maintain_session = true ## 방을 이동해도 채팅을 지우지 않음 ## #$ lab_disable_chat_clear = true #구버전이나 김치죽용 고기해체 rc confirm_butcher=never :if you.race() == "Kobold" or you.race() == "Troll" :or you.race() == "Felid" or you.race() =="Ghoul" then auto_butcher = very full :else auto_butcher = hungry :end :if you.race() == "Ghoul" then auto_eat_chunks = false :end # TEAMCAPTAIN sentinel #9th Version of rc setting file (190622) #some functions was originated by HDA, Yermak, gammafunk and various ######## Accounts ######################## #1 = Kirara (for 1st DEWz) #2 = megumin (for DEFE^sif) #3 = Fortis931 (for DEFE^veh) #4 = Yoshino (for DEIE) #5 = AsparasYuuki (for 2nd DEWz) #6 = TheSpecies (for .22 tournament) #7 = omgwtf (for speedrun/for test) #8 = AdeptusOne (reserved;for test) #9 = YunYun (for 3rd DEWz) ######## Generic ######################## tile_font_crt_family = Consolas tile_font_stat_family = Consolas tile_font_msg_family = Consolas tile_font_lbl_family = Consolas show_more = false travel_delay = -1 travel_key_stop = true explore_delay = -1 explore_wall_bias = 0 explore_key_stop = true rest_wait_percent = 100 default_manual_training = true num_rest_turns = 25 cloud_status = true autofight_stop = 50 easy_confirm = all explore_stop -= greedy_item_stack msg_webtiles_height = 8 auto_butcher = true easy_eat_chunks = true ######### Experimental ########################### ###include += SpeedrunRest1.rc macros += M p za\{13} macros += M - \{9} macros += K \{-1005} \{32} ######## Autoexplore Interruption Messages ######################## stop := runrest_stop_message stop += Your transformation is almost over ######## Annoyances ######################## ;ignore += grinding sound ;ignore += contamination has completely ;ignore += your breath back #-----------------------------------------------------------------------------------------------------------# #----------------------------------------------- Force More ------------------------------------------------# #-----------------------------------------------------------------------------------------------------------# ## Dangerous messages ## flash_screen_message += You are slowing down flash_screen_message += your limbs are stiffening flash_screen_message += The floating eye seems to glare at you flash_screen_message += The floating eye's stare focuses on you flash_screen_message += The floating eye's view fixates on you flash_screen_message += A sentinel's mark forms upon you flash_screen_message += distant snort flash_screen_message += unleashes a terrible howl flash_screen_message += engulfs you in water flash_screen_message += The ushabti shakes and rattles deafeningly! flash_screen_message += You hear strange and distant voices. flash_screen_message += finished your manual flash_screen_message += The spriggan druid calls out to the beasts of the wild! flash_screen_message += Found a gateway to a bazaar. flash_screen_message += You are engulfed in seething chaos. ## Player's status ## force_more_message += .*(Agnes|Aizul|Amaemon|Antaeus|Arachne|Asmodeus|Azrael|Bai suzhen|Blork the orc|Boris|Cerebov|Crazy Yiuf|Dispater|Dissolution|Donald|Dowan|Duvessa|Edmund|the Enchantress|Ereshkigal|Erica|Erolcha|Eustachio|Fannar|Frances|Frederick|Gastronok|Geryon|Gloorx Vloq|Grinder|Grum|Grunn|Harold|Ignacio|Ijyb|Ilsuiw|Jessica|Jorgrun|Jory|Joseph|Josephina|Josephine|Khufu|Kirke|the Lernaean hydra|Lodul|Lom Lobon|Louise|Maggie|Mara|Margery|Maurice|Menkaure|Mlioglotl|Mennas|Mnoleg|Murray|Nergalle|Natasha|Nessos|Nikola|Pan|Parghit|Pikel|Polyphemus|Prince Ribbit|Psyche|Purgy|Robin|Roxanne|the royal jelly|Rupert|Saint Roka|the Serpent of Hell|Sigmund|Snorg|Sojobo|Sonja|Terence|Tiamat|Urug|Vashnia|Vv|Xtahua|Zenata).*comes? into view ######## Miscellaneous ######################## #you.transform() == "statue" then~ #you.mutation("slowness") then~ #you.hunger_name() == "starving" then~ ##! means you did 7-17 damage. 2!!: 18-35. 3!!!: 36-71. 4!!!!: 72-143. 5!!!!!: 144-287. 6!!!!!!: 288+; and so on. Yikes! ##<6: 288-575, 7: 576-1151, 8: 1152-2303, 9: 2304-4607> ######## Function Section ######################## { function ready() Petrifying_Check() OpenSkills() hpWarning_Early() hpWarning_Mid() hpWarning_Late() hp_percent() mp_percent() AnnounceDamage() Vehumetoffer() Ruoffer() DDoorCounter() end } { function hp_percent() a,b=you.hp() return 100*a/b end } { function mp_percent() a,b=you.mp() return 100*a/b end } { function Petrifying_Check() if you.petrifying() then crawl.yesno("You are now petrifying so your action will be checked. (Y or N to confirm.)", false, false, true, true) crawl.mpr("Consider to using tele/blink, Yara, cancellation or other emergency measures......", 5) end end } { local need_skills_opened = true function OpenSkills() if you.turns() == 0 and need_skills_opened then need_skills_opened = false crawl.sendkeys("m") crawl.mpr("Pride is your worst enemy! Be on prudent way!", 3) end end } { local early = true function hpWarning_Early() if you.hp() < 21 and hp_percent() < 30 and you.xl() < 9 and early then crawl.yesno("Low HP: Be careful! (Y or N to confirm.)", false, false, true, true) crawl.mpr("The dice are ABSOLUTELY not on your side......", 5) early = false end if you.hp() > 20 and hp_percent() > 29 and you.xl() < 9 then early = true end end } { local mid = true function hpWarning_Mid() if you.hp() < 35 and you.xl() < 20 and you.xl() > 8 and mid then crawl.yesno("Low HP: Be careful! (Y or N to confirm.)", false, false, true, true) crawl.mpr("Consider to using tele/blink, potion or other emergency measures......", 5) mid = false end if you.hp() > 34 and you.xl() < 20 and you.xl() > 8 then mid = true end end } { local late = true function hpWarning_Late() if you.hp() < 60 and you.xl() == 27 and not you.status("death's door") and not you.status("death's door (expiring)") and late then crawl.yesno("Low HP: Be careful! (Y or N to confirm.)", false, false, true, true) crawl.mpr("Keep playing discreetly even on late-game......", 5) late = false end if you.hp() > 59 and you.xl() == 27 then late = true end end } { local previous_hp = 0 local previous_mp = 0 local previous_form = "" local was_berserk_last_turn = false function AnnounceDamage() local current_hp, max_hp = you.hp() local current_mp, max_mp = you.mp() --Things that increase hp/mp temporarily really mess with this local current_form = you.transform() local you_are_berserk = you.berserk() local max_hp_increased = false local max_hp_decreased = false if (current_form ~= previous_form) then if (previous_form:find("dragon") or previous_form:find("statue") or previous_form:find("tree") or previous_form:find("ice")) then max_hp_decreased = true elseif (current_form:find("dragon") or current_form:find("statue") or current_form:find("tree") or current_form:find("ice")) then max_hp_increased = true end end if (was_berserk_last_turn and not you_are_berserk) then max_hp_decreased = true elseif (you_are_berserk and not was_berserk_last_turn) then max_hp_increased = true end --crawl.mpr(string.format("previous_form is: %s", previous_form)) --crawl.mpr(string.format("current_form is: %s", current_form)) --crawl.mpr(string.format("max_hp_increased is: %s", max_hp_increased and "True" or "False")) --crawl.mpr(string.format("max_hp_decreased is: %s", max_hp_decreased and "True" or "False")) --crawl.mpr(string:format("you_are_berserk is: %s", you_are_berserk and "True" or "False")) --crawl.mpr(string:format("was_berserk_last_turn is: %s", was_berserk_last_turn and "True" or "False")) --Skips message on initializing game if previous_hp > 0 then local hp_difference = previous_hp - current_hp local mp_difference = previous_mp - current_mp if max_hp_increased or max_hp_decreased then if max_hp_increased then crawl.mpr("You now have " .. current_hp .. "/" .. max_hp .. " hp.") else crawl.mpr("You now have " .. current_hp .. "/" .. max_hp .. " hp.") end else --On losing health if (current_hp < previous_hp) then if current_hp <= (max_hp * 0.30) then crawl.mpr("You take " .. hp_difference .. " damage, and have " .. current_hp .. "/" .. max_hp .. " hp.") elseif current_hp <= (max_hp * 0.50) then crawl.mpr("You take " .. hp_difference .. " damage, and have " .. current_hp .. "/" .. max_hp .. " hp.") elseif current_hp <= (max_hp * 0.70) then crawl.mpr("You take " .. hp_difference .. " damage, and have " .. current_hp .. "/" .. max_hp .. " hp.") elseif current_hp <= (max_hp * 0.90) then crawl.mpr("You take " .. hp_difference .. " damage, and have " .. current_hp .. "/" .. max_hp .. " hp.") else crawl.mpr("You take " .. hp_difference .. " damage, and have " .. current_hp .. "/" .. max_hp .. " hp.") end end end end --Set previous hp/mp and form at end of turn previous_hp = current_hp previous_mp = current_mp previous_form = current_form was_berserk_last_turn = you_are_berserk end } { local veh = true function Vehumetoffer() if string.find(crawl.messages(4), "Vehumet offers") and veh then crawl.yesno("Vehumet offers a spell for you! (Y or N to confirm.)", false, false, true, true) veh = false end if string.find(crawl.messages(4), "Vehumet accepts") then veh = true end end } { local ru = true function Ruoffer() if string.find(crawl.messages(4), "Ru believes") and ru then crawl.yesno("Ru offers sacrifice for you! (Y or N to confirm.)", false, false, true, true) ru = false end if string.find(crawl.messages(6), "Ru asks you to") or string.find(crawl.messages(6), "Ru will take longer") then ru = true end end } ######## Non-ready() Function Section ######################## { function custom_rest() if hp_percent() == 100 and mp_percent() == 100 then if crawl.yesnoquit("Really wait turns while hp and mp are full?", true, 'n') == 1 then crawl.process_keys("5") end else crawl.process_keys("5") end end } { function c_answer_prompt(prompt) if prompt:find("vortices") or prompt:find("vortex") or prompt:find("friend") then return true end if prompt:find("That beam") and you.res_fire() == 0 and not you.status("death's door") then if crawl.yesno("REALLY cast on yourself without fire resistance?",false,'n') then return end end if prompt == "Really attack while wielding the +9 staff of Wucad Mu {channel, !a!d}?" then return false end end } ;{ ;function c_answer_prompt(prompt) ; if prompt:find("vortices") or prompt:find("vortex") or prompt:find("friend") ;then ; return true ; end ; if prompt:find("That beam") and you.res_fire() == 0 and not ;you.status("death's door") then ; return false ; end ;end } { local counter = you.turns() function DDoorCounter() if you.status("in death's door (expiring)") then crawl.mpr("Count "..you.turns() - counter.."......") end if not you.status("in death's door (expiring)") then counter = you.turns()+1 end end } ## Player's status ## more := force_more_message more += Careful! more += .*LOW HITPOINT WARNING more += Ouch! That really hurt! more += You stumble into a teleport trap! ## Holy weapon force more when undead or ds :if you.race() == "Vampire" or you.race() == "Mummy" or you.race() == "Ghoul" or you.race() == "Demonspawn" then more += (revenant|black sun).*into view more += wielding.*holy wrath more += holy wrath.*into view flash += wielding.*holy wrath flash += holy wrath.*into view :end force_spell_targeter = if you.turns() == 0 and you.base_skill("Fighting") == 0 then you.train_skill("Fighting", 2) you.set_training_target("Fighting", 1) end