# 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

show_more = false
default_manual_training = true
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
force_more_message += ((giant|floating|shining) eye|eye of draining).*into view

force_more_message += (moth of wrath|ghost moth|torpor snail).*into view

force_more_message += (guardian serpent|draconian shifter|convoker).*into view

force_more_message += (flayed ghost|royal mummy|mummy priest|fiend|tzitzimitl).*into view

force_more_message += (tormentor|curse toe|curse skull).*into view

force_more_message += (hellion|hell sentinel|deep elf sorcerer).*into view

force_more_message += (deep elf high priest|scorcher).*into view

force_more_message += (ancient lich|orb of fire|executioner|juggernaut|shrike).*into view

force_more_message += (wretched star|lurking horror).*into view

force_more_message += (neqoxec|cacodemon|doom hound).*into view

force_more_message += 27-headed.* comes? into view

force_more_message += (radroach|entropy weaver|meliai).*into view

force_more_message += (salamander tyrant|ironbound frostheart).*into view
force_more_message += changes into.*((giant|floating|shining) eye|eye of draining)

force_more_message += changes into.*(moth of wrath|ghost moth|torpor snail)

force_more_message += changes into.*(guardian serpent|draconian shifter|convoker)

force_more_message += changes into.*(flayed ghost|royal mummy|mummy priest|fiend|tzitzimitl)

force_more_message += changes into.*(tormentor|curse toe|curse skull)

force_more_message += changes into.*(hellion|hell sentinel|deep elf sorcerer)

force_more_message += changes into.*(deep elf high priest|scorcher)

force_more_message += changes into.*(ancient lich|orb of fire|executioner|juggernaut|shrike)

force_more_message += changes into.*(wretched star|lurking horror)

force_more_message += changes into.*(neqoxec|cacodemon|doom hound)

force_more_message += changes into.*(radroach|entropy weaver|meliai)

force_more_message += changes into.*(salamander tyrant|ironbound frostheart)

force_more_message += changes into.*(walking crystal tome|walking divine tome|walking earthen tome|walking frostbound tome)
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
tile_show_threat_levels = tough nasty
view_delay = 200
autopickup_exceptions ^= >(atropa|dispersal)
autopickup_exceptions += <throwing net

autopickup_exceptions += <curare

force_more_message += (walking crystal tome|walking divine tome|walking earthen tome|walking frostbound tome).*into view

# Recommended settings
sound_on = true
sound_pack += https://osp.nemelex.cards/build/latest.zip:["init.txt"]
one_SDL_sound_channel = true
sound_fade_time = 0.5
sound_volume = 0.2


{
  function ready()
    AnnounceDamage()
  end
}


# Damage Calc

{



  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("<green>이제 [" .. current_hp .. "/" .. max_hp .. "]의 체력을 가지게 되었습니다.</green>")



        else



          crawl.mpr("<yellow>이제 [" .. current_hp .. "/" .. max_hp .. "]의 체력을 가지게 되었습니다.</yellow>")



        end



      else



        --On losing health



        if (current_hp < previous_hp) then



          if current_hp <= (max_hp * 0.30) then



            crawl.mpr("<red>" .. hp_difference .. "의 피해를 받았습니다.</red><lightred> 현재 남은 체력은 [" .. current_hp .. "/" .. max_hp .. "] 입니다.</lightred>")



          elseif current_hp <= (max_hp * 0.50) then



            crawl.mpr("<red>" .. hp_difference .. "의 피해를 받았습니다. 현재 남은 체력은 [" .. current_hp .. "/" .. max_hp .. "] 입니다.</red>")



          elseif current_hp <= (max_hp *  0.70) then



            crawl.mpr("<red>" .. hp_difference .. "의 피해를 받았습니다.</red><yellow> 현재 남은 체력은 [" .. current_hp .. "/" .. max_hp .. "] 입니다.</yellow>")



          elseif current_hp <= (max_hp * 0.90) then



            crawl.mpr("<red>" .. hp_difference .. "의 피해를 받았습니다.</red><lightgrey> 현재 남은 체력은 [" .. current_hp .. "/" .. max_hp .. "] 입니다.</lightgrey>")



          else



            crawl.mpr("<red>" .. hp_difference .. "의 피해를 받았습니다.</red><green> 현재 남은 체력은 [" .. current_hp .. "/" .. max_hp .. "] 입니다.</green>")



          end



          if hp_difference > (max_hp * 0.20) then



            crawl.mpr("<lightred>악! 이건 정말로 아프다!</lightred>")



          end



        end







        --On gaining more than 1 health



        if (current_hp > previous_hp) then



          --Removes the negative sign



          local health_inturn = (0 - hp_difference)



          if (health_inturn > 1) and not (current_hp == max_hp) then



            if current_hp <= (max_hp * 0.30) then



              crawl.mpr("<green>" .. health_inturn .. "의 체력을 얻었습니다.</green><lightred> 현재 체력은 [" .. current_hp .. "/" .. max_hp .. "] 입니다.</lightred>")



            elseif current_hp <= (max_hp * 0.50) then



              crawl.mpr("<green>" .. health_inturn .. "의 체력을 얻었습니다.</green><red> 현재 체력은 [" .. current_hp .. "/" .. max_hp .. "] 입니다.</red>")



            elseif current_hp <= (max_hp *  0.70) then



              crawl.mpr("<green>" .. health_inturn .. "의 체력을 얻었습니다.</green><yellow> 현재 체력은 [" .. current_hp .. "/" .. max_hp .. "] 입니다.</yellow>")



            elseif current_hp <= (max_hp * 0.90) then



              crawl.mpr("<green>" .. health_inturn .. "의 체력을 얻었습니다.</green><lightgrey> 현재 체력은 [" .. current_hp .. "/" .. max_hp .. "] 입니다.</lightgrey>")



            else



              crawl.mpr("<green>" .. health_inturn .. "의 체력을 얻었습니다. 현재 체력은 [" .. current_hp .. "/" .. max_hp .. "] 입니다.</green>")



            end



          end



          if (current_hp == max_hp) then



            crawl.mpr("<green>체력이 전부 회복되었습니다. (" .. current_hp .. ")</green>")



          end



        end







        --On gaining more than 1 magic



        if (current_mp > previous_mp) then



          --Removes the negative sign



          local mp_inturn = (0 - mp_difference)



          if (mp_inturn > 1) and not (current_mp == max_mp) then



            if current_mp < (max_mp * 0.25) then



              crawl.mpr("<lightcyan>" .. mp_inturn .. "의 마력를 얻었습니다.</lightcyan><red> 현재 마력은 [" .. current_mp .. "/" .. max_mp .. "] 입니다.</red>")



            elseif current_mp < (max_mp * 0.50) then



              crawl.mpr("<lightcyan>" .. mp_inturn .. "의 마력을 얻었습니다.</lightcyan><yellow> 현재 마력은 [" .. current_mp .. "/" .. max_mp .. "] 입니다.</yellow>")



            else



              crawl.mpr("<lightcyan>" .. mp_inturn .. "의 마력을 얻었습니다.</lightcyan><green> 현재 마력은 [" .. current_mp .. "/" .. max_mp .. "] 입니다.</green>")



            end



          end



          if (current_mp == max_mp) then



            crawl.mpr("<lightcyan>마력이 전부 회복되었습니다. (" .. current_mp .. ")</lightcyan>")



          end



        end







        --On losing magic



        if current_mp < previous_mp then



          if current_mp <= (max_mp / 5) then



            crawl.mpr("<lightcyan>현재 남은 마력은 </lightcyan><red>[" .. current_mp .. "/" ..max_mp .."] 입니다.</red>")



          elseif current_mp <= (max_mp / 2) then



            crawl.mpr("<lightcyan>현재 남은 마력은 </lightcyan><yellow>[" .. current_mp .. "/" ..max_mp .."] 입니다.</yellow>")



          else



            crawl.mpr("<lightcyan>현재 남은 마력은 </lightcyan><green>[" .. current_mp .. "/" ..max_mp .."] 입니다.</green>")



          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



}