# 사운드 자동 켜기
#$ lab_sound_on = true

# 타일 사이즈 변경
tile_use_small_layout = true
tile_map_pixels = 32
tile_cell_pixels = 64

# 폰트 사이즈 변경
tile_font_crt_size = 23
tile_font_stat_size = 23
tile_font_msg_size = 23
tile_font_tip_size = 23
tile_font_lbl_size = 23

# 폰트 변경
#tile_font_crt_family = Open Sans
#tile_font_stat_family = Open Sans
#tile_font_msg_family = Open Sans
#tile_font_tip_family = Open Sans
#tile_font_lbl_family = Open Sans
# Consolas, DejaVu Sans Mono, Arial, Open Sans

# vi방식 이동키 비활성화
include = no_vi_command_keys.txt

# 스킬 경험치 메뉴얼 설정
default_manual_training = true

# 플레이어 타일을 해당 종족으로 변경 (Default : false)
tile_show_player_species = false

# 메세지가 너무 많이 떴을 때 강제로 more 띄우지 않게 함 (Default : true)
show_more = false

# 자동탐사 딜레이 (Default : -1)
travel_delay = 15

# 휴식 딜레이
rest_delay = -1

# 탐험 딜레이
explore_delay = -1

# 이펙트 딜레이 (Default 500)
view_delay = 100

#왜곡무기 장비한 몬스터, 춤추는 왜곡무기 출현 시 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


# HP / MP 알림

{
  local need_skills_opened = true
  local previous_hp = 0
  local previous_mp = 0
  local previous_form = ''
  local was_berserk_last_turn = false
  function announce_damage_ko()
    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

    --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('Now you have [' .. current_hp .. '/' .. max_hp .. '] HP')
        else
          crawl.mpr('Now you have [' .. current_hp .. '/' .. max_hp .. '] HP')
        end
      else

        --체력 잃을때
        if (current_hp < previous_hp) then
          if current_hp <= (max_hp * 0.30) then
            crawl.mpr('<lightred>You take ' .. hp_difference .. ' HP,</lightred> <red>and have [' .. current_hp .. '/' .. max_hp .. '] HP</red>')
          elseif current_hp <= (max_hp * 0.50) then
            crawl.mpr('<yellow>You take ' .. hp_difference .. ' HP,</yellow> <lightred>and have [' .. current_hp .. '/' .. max_hp .. '] HP</lightred>')
          elseif current_hp <= (max_hp *  0.70) then
            crawl.mpr('<brown>You take ' .. hp_difference .. ' HP,</brown> <green>and have [' .. current_hp .. '/' .. max_hp .. '] HP</green>')
          elseif current_hp <= (max_hp * 0.90) then
            crawl.mpr('<darkgrey>You take ' .. hp_difference .. ' HP,</darkgrey> <green>and have [' .. current_hp .. '/' .. max_hp .. '] HP</green>')
          else
            crawl.mpr('<darkgrey>You take ' .. hp_difference .. ' HP,</darkgrey> <lightgreen>and have [' .. current_hp .. '/' .. max_hp .. '] HP</lightgreen>')
          end
          if hp_difference > (max_hp * 0.20) then
            crawl.mpr('<lightred>!!!!! HP Warning !!!!!</lightred>')
          end
        end

        --체력 얻을때
        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('<darkgrey>You gain ' .. health_inturn .. ' hp,</darkgrey> <red>and have [' .. current_hp .. '/' .. max_hp .. '] hp.</red>')
            elseif current_hp <= (max_hp * 0.50) then
              crawl.mpr('<yellow>You gain ' .. health_inturn .. ' HP,</yellow> <lightred>and have [' .. current_hp .. '/' .. max_hp .. '] hp.</lightred>')
            elseif current_hp <= (max_hp *  0.70) then
              crawl.mpr('<lightgreen>You gain ' .. health_inturn .. ' HP,</lightgreen> <green>and have [' .. current_hp .. '/' .. max_hp .. '] HP</green>')
            elseif current_hp <= (max_hp * 0.90) then
              crawl.mpr('<white>You gain ' .. health_inturn .. ' HP</white>, <lightgreen>and have [' .. current_hp .. '/' .. max_hp ..'] HP</lightgreen>')
            else
              crawl.mpr('<lightgreen>You gain ' .. health_inturn .. ' HP, and have [' .. current_hp .. '/' .. max_hp .. '] HP</lightgreen>')
            end
          end
          if (current_hp == max_hp) then
            crawl.mpr('<lightmagenta> HP Full. (' .. current_hp .. ')</lightmagenta>')
          end
        end

        --마력 얻을때
        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('<darkgrey>You gain ' .. mp_inturn .. ' MP,</darkgrey> <brown>and have [' .. current_mp .. '/' .. max_mp .. '] MP</brown>')
            elseif current_mp < (max_mp * 0.50) then
              crawl.mpr('<lightblue>You gain ' .. mp_inturn .. ' MP,</lightblue> <blue>and have [' .. current_mp .. '/' .. max_mp .. '] MP</blue>')
            else
              crawl.mpr('<lightblue>You gain ' .. mp_inturn .. ' MP,</lightblue> <lightcyan>and have [' .. current_mp .. '/' .. max_mp .. '] MP</lightcyan>')
            end
          end
          if (current_mp == max_mp) then
            crawl.mpr('<lightcyan>MP Full (' .. current_mp .. ')</lightcyan>')
          end
        end

        --마력 잃을때
        if current_mp < previous_mp then
          if current_mp <= (max_mp * 0.25) then
            crawl.mpr('<darkgrey>You lose ' .. mp_difference .. 'MP,</darkgrey> <white>and have [' .. current_mp .. '/' ..max_mp ..'] MP</white>')
          elseif current_mp <= (max_mp * 0.50) then
            crawl.mpr('<blue>You lose ' .. mp_difference .. 'MP,</blue> <lightblue>and have [' .. current_mp .. '/' ..max_mp ..'] MP</lightblue>')
          else
            crawl.mpr('<darkgrey>You lose ' .. mp_difference .. 'MP,</darkgrey> <lightcyan>and have [' .. current_mp .. '/' ..max_mp ..'] MP</lightcyan>')
          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
function ready()

  -- Enable AnnounceDamage.
  announce_damage_ko()
  if you.turns() == 0 and need_skills_opened then
    need_skills_opened = false
    crawl.sendkeys("m")
  end
end
}

[템퍼몽키 명령어]
// ==UserScript==
// @name         Webtiles Extend Module Loader
// @description  Load the WEM from other Webtiles sites as well.
// @version      1.0
// @author       ASCIIPhilia
// @match        https://crawl.kelbi.org/*
// @match        http://crawl.akrasiac.org:8080/*
// @match        https://crawl.akrasiac.org:8443/*
// @match        https://underhound.eu:8080/*
// @match        https://cbro.berotato.org:8443/*
// @match        http://lazy-life.ddo.jp:8080/*
// @match        https://crawl.xtahua.com/*
// @match        https://crawl.project357.org/*
// @match        http://joy1999.codns.com:8081/*
// @namespace https://greasyfork.org/users/663409
// @downloadURL https://update.greasyfork.org/scripts/482991/Webtiles%20Extend%20Module%20Loader.user.js
// @updateURL https://update.greasyfork.org/scripts/482991/Webtiles%20Extend%20Module%20Loader.meta.js
// ==/UserScript==
(function () {
    'use strict';
    function waitFor(checkFunction, checkDelay = 100) {
        return new Promise(resolve => {
            let i = setInterval(_ => {
                try {
                    let check = checkFunction();
                    check ? clearInterval(i) || resolve(check) : void 0
                } catch (e) {}
            }, checkDelay);
        });
    }

    !async function () {
        await waitFor(_ => unsafeWindow.$, 100);
        $.getScript("https://dcssem.abstr.net/webtiles_module/release/1.0/script.js");
    }();
sound_on = true
sound_pack += https://osp.nemelex.cards/build/latest.zip:["init.txt"]
one_SDL_sound_channel = true
sound_fade_time = 0.5
})();