# 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.
#
##### Crawl Init file (Fixed Version) #####
#sound_on = false
#sound_pack += https://osp.nemelex.cards/build/latest.zip:["init.txt"]
##sound_pack += https://sound-packs.nemelex.cards/crawler/2018-03-27/DCSS.22.zip:["사운드 적용하는법.txt"]
# one_SDL_sound_channel = true
#sound_fade_time = 0.5
#sound_volume = 0.1
redirect_chat = true
disable_clear_chat = true
######## 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
rest_delay = -1
msg_webtiles_height = 11
######### Experimental ###########################
######## Autoexplore Interruption Messages ########################
stop := runrest_stop_message
######## 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
######## Function Section ########################
{
function ready()
Petrifying_Check()
OpenSkills()
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
}
{
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 oor") 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
}
######## Local Webtile(CWZ) Settings ########################
## 사운드 자동 켜기 (관전자 X) ##
#$ lab_sound_on = true
## 웹죽 세션 강제 유지 및 잠수 알림 (5분 이상 입력이 없어도 종료되지 않음) ##
#$ lab_maintain_session = false
##tile_realtime_anim = true
##tile_water_anim = true
explore_auto_rest = false
always_show_zot = true
## 싱잉소드, OTR, 냉장고 등의 플래쉬 무시
## 공 방패 무시
msc := message_colour
msc += mute:Fedhas appreciates your contribution to the ecosystem.
msc += mute:You radiate an aura of cold.
msc += mute:PANG!
msc += mute:GONNNNG!
msc += mute:SHROANNG!
msc += mute:BOUMMMMG!
msc += mute:BONNNG!
msc += mute:PTOANNNG!
msg += mute:PANG!
msg += mute:You howl as the wereblood boils in your veins!
#colors
tile_upstairs_col = green
tile_branchstairs_col = red
tile_door_col = #c27149
tile_wall_col = #544747
tile_explore_horizon_col = #919191
tile_floor_col = #0f0d0d
tile_item_col = #25231f
tile_feature_col = #d4be21
tile_plant_col = #3e5a2f
tile_water_col = #0b5d79
tile_deep_water_col = #1212b3
tile_trap_col = #d40027
tile_transporter_col = #ff5656
tile_transporter_landing_col = #59ff89
tile_lava_col = #5f0a0000
## 위험도 타일 색깔 표시
tile_show_threat_levels = trivial, easy, tough, nasty, unusual
runrest_ignore_message += the wereblood boils in your veins
runrest_ignore_message += A nearby plant withers and dies
runrest_ignore_message += Your fire (vortex|vortices).*something
runrest_ignore_message += something .* fire (vortex|vortices)
runrest_ignore_message += Your primal bloodlust is almost over
tile_font_crt_size = 14
tile_font_stat_size = 15
tile_font_msg_size = 14
tile_font_tip_size = 15
tile_font_lbl_size = 14
autopickup_exceptions ^= <(immolation|lignification|mutation|attraction|vulnerability|torment|scroll of poison|scrolls of poison)
autopickup_exceptions ^=