{
local need_skills_opened = true
function ready()
FormChange()
OpenSkills()
AnnounceDamage()
Slowed_Check()
DDoorWarning()
DDoorCounter()
NoticeGa()
NoticeBa()
NoticeIc()
XL_DEWz()
spell_init()
Petrifying_Check()
end
}
#tile_font_crt_family = Consolas
#tile_font_stat_family = Consolas
#tile_font_msg_family = Consolas
#tile_font_lbl_family = Consolas
tile_font_crt_family = D2Coding
tile_font_stat_family = D2Coding
tile_font_msg_family = D2Coding
tile_font_lbl_family = D2Coding
msg_min_height = 7
msg_max_height = 10
msg_webtiles_height = 10
tile_web_mouse_control = false
## 종족 타일 ##
#tile_show_player_species = true
## zot timer ##
always_show_zot = true
## 상태창에 골드 현황 표시 ##
#$ lab_gold_status = true
## 마우스 이동 방지 ##
#$ lab_disable_mouse_move = true
## 게임 시작시 음악 자동 활성화 ##
#$ lab_sound_on = true
## 세션유지 ##
#$ lab_maintain_session = true
## 악마 등급 표시 ##
tile_show_demon_tier = True
## 자동 매뉴얼 스킬 분배 ##
default_manual_training = true
tile_show_threat_levels = easy tough nasty
show_more = false
## 방을 이동해도 채팅을 지우지 않음 ##
#$ lab_disable_chat_clear = true
#####################################
# enum values :/
: ATT_FRIENDLY = 4
: ATT_NEUTRAL = 1
: ATT_HOSTILE = 0
: LOS = 7
: if you.race() == "Barachi" then
: LOS = 8
: end
#####################################
{
-- just a few outs for nondamaging things
-- proper threat assessment is a topic for a whole bot
function is_threatening(m)
if m then
if m:attitude() > ATT_NEUTRAL then
return false
end
if m:is_firewood() then
if not string.find(m:name(), "ballistomycete") then
return false
end
end
if m:name() == "butterfly" then
return false
end
return true
end
end
function check_los()
local safe_los = true
for i = -LOS,LOS do
for j = -LOS,LOS do
m = monster.get_monster_at(i,j)
-- if m then
if m and is_threatening(m) then -- comment this out and uncomment above if you want to fire on every monster to come into view; this will include things like plants
safe_los = false
end
end
end
return safe_los
end
function launch_auto_channel()
auto_channel = true
end
}
## 메뉴얼 효과 종료시 알림 ##
force_more_message += You have finished your manual
#force_more_message += Your transformation is almost over.
#tile_font_crt_family = Consolas
#tile_font_stat_family = Consolas
#tile_font_msg_family = Consolas
#tile_font_lbl_family = Consolas
tile_font_crt_family = D2Coding
tile_font_stat_family = D2Coding
tile_font_msg_family = D2Coding
tile_font_lbl_family = D2Coding
## zot timer ##
always_show_zot = true
## 상태창에 골드 현황 표시 ##
#$ lab_gold_status = true
## 마우스 이동 방지 ##
#$ lab_disable_mouse_move = true
## 게임 시작시 음악 자동 활성화 ##
#$ lab_sound_on = true
## 세션유지 ##
#$ lab_maintain_session = true
## 종족 표시 ##
#tile_show_player_species = true
## 악마 등급 표시 ##
tile_show_demon_tier = True
## 자동 매뉴얼 스킬 분배 ##
default_manual_training = true
tile_show_threat_levels = easy tough nasty
show_more = false
#$ lab_disable_chat_clear = true
#####################################
# enum values :/
: ATT_FRIENDLY = 4
: ATT_NEUTRAL = 1
: ATT_HOSTILE = 0
: LOS = 7
: if you.race() == "Barachi" then
: LOS = 8
: end
#####################################
{
-- just a few outs for nondamaging things
-- proper threat assessment is a topic for a whole bot
function is_threatening(m)
if m then
if m:attitude() > ATT_NEUTRAL then
return false
end
if m:is_firewood() then
if not string.find(m:name(), "ballistomycete") then
return false
end
end
if m:name() == "butterfly" then
return false
end
return true
end
end
function check_los()
local safe_los = true
for i = -LOS,LOS do
for j = -LOS,LOS do
m = monster.get_monster_at(i,j)
-- if m then
if m and is_threatening(m) then -- comment this out and uncomment above if you want to fire on every monster to come into view; this will include things like plants
safe_los = false
end
end
end
return safe_los
end
function launch_auto_channel()
auto_channel = true
end
}
## 메뉴얼 효과 종료시 알림 ##
force_more_message += You have finished your manual
fail_severity_to_confirm = 0
## 메시지 색상 변경 ##
message_colour ^= lightgreen:.*(you hit|as you read|it was|You throw|You impale|You perforate|fails to defend itself|You spit|You stick|You start|You catch|You open|You close|You slash|You enter|Moving in|You skewer|You fail|You miscast)
message_colour ^= cyan:.*(You add)
message_colour ^= magenta:.*(miss)
message_colour ^= yellow:.*(Training target|You now have)
message_colour ^= brown:.*(hits you|sting you)
message_colour ^= lightblue:.*(hp|done|You need to enable|You see|Things that are here)
message_colour ^= lightred:.*(You are too injured)
message_colour ^= cyan:.*(wielding)
## 체력 75% 시, 자동 전투 중지 ##
autofight_stop = 75
###### Damage calc ##############################################
#include += HDamage.rc
{
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
if hp_difference > (max_hp * 0.20) then
crawl.mpr("MASSIVE DAMAGE!!")
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("You regained " .. health_inturn .. " hp, and now have " .. current_hp .. "/" .. max_hp .. " hp.")
elseif current_hp <= (max_hp * 0.50) then
crawl.mpr("You regained " .. health_inturn .. " hp, and now have " .. current_hp .. "/" .. max_hp .. " hp.")
elseif current_hp <= (max_hp * 0.70) then
crawl.mpr("You regained " .. health_inturn .. " hp, and now have " .. current_hp .. "/" .. max_hp .. " hp.")
elseif current_hp <= (max_hp * 0.90) then
crawl.mpr("You regained " .. health_inturn .. " hp, and now have " .. current_hp .. "/" .. max_hp .. " hp.")
else
crawl.mpr("You regained " .. health_inturn .. " hp, and now have " .. current_hp .. "/" .. max_hp .. " hp.")
end
end
if (current_hp == max_hp) then
crawl.mpr("Health restored: " .. current_hp .. "")
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("You regained " .. mp_inturn .. " mp, and now have " .. current_mp .. "/" .. max_mp .. " mp.")
elseif current_mp < (max_mp * 0.50) then
crawl.mpr("You regained " .. mp_inturn .. " mp, and now have " .. current_mp .. "/" .. max_mp .. " mp.")
else
crawl.mpr("You regained " .. mp_inturn .. " mp, and now have " .. current_mp .. "/" .. max_mp .. " mp.")
end
end
if (current_mp == max_mp) then
crawl.mpr("MP restored: " .. current_mp .. "")
end
end
--On losing magic
if current_mp < previous_mp then
if current_mp <= (max_mp / 5) then
crawl.mpr("You now have " .. current_mp .. "/" ..max_mp .." mp.")
elseif current_mp <= (max_mp / 2) then
crawl.mpr("You now have " .. current_mp .. "/" ..max_mp .." mp.")
else
crawl.mpr("You now have " .. current_mp .. "/" ..max_mp .." mp.")
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
}
## hp, mp, stat 색상 변경 ##
hp_colour = 100:green, 99:lightgrey, 75:yellow, 50:lightred, 25:red
mp_colour = 100:green, 99:lightgrey, 75:yellow, 50:lightred, 25:red
stat_colour = 3:red, 7:lightred
## Functions ##
{
local need_skills_opened = true
function OpenSkills()
if you.turns() == 0 and need_skills_opened then
need_skills_opened = false
crawl.sendkeys("m")
end
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
}
{
function spell_init()
local spell_list = {}
for _, spell_name in ipairs(you.spells()) do
spell_list[spell_name] = true
end
return spell_list
end
spells_known = spell_init()
}
{
function control(c)
return string.char(string.byte(c) - string.byte('a') + 1)
end
function magic(command)
crawl.process_keys(command)
end
}
--this function is module, so don't change its name
#{
#function choose_stat_gain()
# if DECj then
# return "i"
# else
# return
# end
#end
#}
{
local speed = true
function Slowed_Check()
if speed and string.find(crawl.messages(8), "yourself slow down") and you.status("in death's door (expiring)") then
crawl.yesno("Warning: You are slowed while DDoor running out! (Y or N to confirm.)", false, false, true, true)
speed = false
end
if not speed and not you.status("in death's door (expiring)") then
speed = true
end
end
}
{
local door = true
function DDoorWarning()
if you.status("in 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 in 5-10 turns...... ")
door = false
end
if not you.status("in death's door (expiring)") then
door = true
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 gaunt = true
function NoticeGa()
if string.find(crawl.messages(4), "gauntlet on this level") and gaunt then
gaunt = false
crawl.yesno("Hurry, A gateway to the gauntlet has been detected! (Y or N to confirm.)", false,
false, true, true)
end
end
}
{
local bail = true
function NoticeBa()
if string.find(crawl.messages(4), "bailey on this level") and bail then
bail = false
crawl.yesno("Hurry, A gateway to a bailey has been detected! (Y or N to confirm.)", false,
false, true, true)
end
end
}
{
local cave = true
function NoticeIc()
if string.find(crawl.messages(4), "cave on this level") and cave then
cave = false
crawl.yesno("Hurry, A gateway to an ice cave has been detected! (Y or N to confirm.)", false,
false, true, true)
end
end
}
{
--Never use autopickup_exceptions without ^ or +. otherwise, rest of autopickup settings will be nullified.
local PhaseA = true
local PhaseB = true
local PhaseC = true
local PhaseD = true
local PhaseE = true
function XL_DEWz()
if you.xl() >= 9 and PhaseA then
crawl.setopt("rest_wait_percent = 80")
crawl.setopt("autopickup_exceptions ^= >poisoned")
crawl.setopt("autopickup_exceptions ^= = 14 and PhaseB then
crawl.setopt("autopickup_exceptions ^= >potion.*might")
crawl.setopt("autopickup_exceptions ^= >potion.*berserk rage")
crawl.setopt("autopickup_exceptions ^= >wand.*random effects")
crawl.setopt("autopickup_exceptions ^= >wand.*polymorph")
crawl.setopt("autopickup_exceptions ^= >curare")
crawl.setopt("autopickup_exceptions ^= >throwing net")
PhaseB = false
end
if you.num_runes() >= 2 and PhaseC then
crawl.setopt("autopickup_exceptions ^= >wand.*flame")
crawl.setopt("autopickup_exceptions ^= >wand.*charming")
crawl.setopt("autopickup_exceptions ^= >phantom mirror")
crawl.setopt("autopickup_exceptions ^= >box of beasts")
PhaseC = false
end
if ((spells.memorised("Death's Door") and spells.fail("Death's Door") <= 15) or you.skill("fighting") >= 18) and PhaseD then
crawl.setopt("rest_wait_percent = 50")
crawl.setopt("autopickup_exceptions ^= >wand.*mindburst")
crawl.setopt("autopickup_exceptions ^= >scroll.*fear")
crawl.setopt("autopickup_exceptions ^= >scroll.*summoning")
crawl.setopt("autopickup_exceptions ^= scroll.*(torment|vulnerability)
ae += <(Roxanne|horn of Geryon|.*Wucad Mu)
ae ^= <(immolation|lignification|mutation|atrraction)
ae ^= staff of (fire|cold|air|earth|conj|pois|death)
ae += >amulet of (faith|regen|reflect|the acrobat|guardian|magic)
ae += >chessboard
ae += <(boomerang|javelin|throwing net|dart)
ae += ring of protection from (magic|fire|cold)
ae += >ring of (fire|ice|pois|positive|resist corr|see|will)
ae += >ring of (mag|flight|steal|wiz|int|str|dex|slay|prot|eva)
: end
: if you.race() == "Ogre" or you.race() == "Troll" then
ae += 18 and check1 then
crawl.setopt("autopickup_exceptions += >staff of (fire|cold|air|earth|conj|pois|death)")
check1 = false
end
if you.xl() > 18 and check2 then
crawl.setopt("autopickup_exceptions += >amulet of (faith|regen|reflect|the acrobat|guardian|magic)")
check2 = false
end
if you.xl() > 18 and you.race() ~= "Octopode" and check3 then
crawl.setopt("autopickup_exceptions += >ring of (slaying|protect)")
crawl.setopt("autopickup_exceptions += >ring of (will)")
crawl.setopt("autopickup_exceptions += >ring of (evasion|int|str|dex)")
crawl.setopt("autopickup_exceptions += >ring of (magical)")
crawl.setopt("autopickup_exceptions += >ring of (protection from fire|protection from cold)")
crawl.setopt("autopickup_exceptions += >ring of (fire|ice)")
crawl.setopt("autopickup_exceptions += >ring of (positive)")
crawl.setopt("autopickup_exceptions += >ring of (stealth|wiz)")
crawl.setopt("autopickup_exceptions += >ring of (flight|poison|resist corr|see)")
check3 = false
end
end
}
{
function c_answer_prompt(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
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:find("Really attack while wielding") then
return true
end
if prompt == "Really attack near your battlesphere?" then
return true
end
end
}
{
add_autopickup_func(function(it, name)
local class = it.class(true)
local armour_slots = {cloak="Cloak", helmet="Helmet", gloves="Gloves", boots="Boots", body="Armour", shield="Shield"}
if (class == "armour") then
if it.is_useless then return false end
sub_type = it.subtype()
equipped_item = items.equipped_at(armour_slots[sub_type])
if (sub_type == "cloak") or (sub_type == "helmet") or (sub_type == "gloves") or (sub_type == "boots") then
if not equipped_item then
return true
else
return it.artefact or it.branded or it.ego
end
end
if (sub_type == "body") then
return false
end
if (sub_type == "shield") then
if equipped_item then
return it.artefact or it.branded or it.ego
end
end
end
end)
}
{
local oldXL = 0
function FormChange()
if you.xl() ~= oldXL then
oldXL = you.xl()
else
return
end
if you.race() == "Draconian" then
crawl.setopt("tile_player_tile = playermons")
end
if you.race() == "Minotaur" then
if you.xl() < 12 then
crawl.setopt("tile_player_tile = tile:mons_minotaur")
else
crawl.setopt("tile_player_tile = tile:mons_asterion")
end
end
if you.race() == "Demigod" then
if you.xl() < 12 then
crawl.setopt("tile_player_tile = tile:mons_demigod")
else
crawl.setopt("tile_player_tile = tile:mons_frederick")
end
end
if you.race() == "Formicid" then
if you.xl() < 12 then
crawl.setopt("tile_player_tile = tile:mons_formicid")
else
crawl.setopt("tile_player_tile = tile:mons_entropy_weaver")
end
end
if you.race() == "Deep Dwarf" then
if you.xl() < 12 then
if you.base_skill("Fighting") > you.base_skill("SpellCasting") then
crawl.setopt("tile_player_tile = tile:mons_dwarf")
else
crawl.setopt("tile_player_tile = tile:mons_deep_dwarf")
end
else
if you.base_skill("Fighting") > you.base_skill("SpellCasting") then
crawl.setopt("tile_player_tile = tile:mons_wiglaf")
else
crawl.setopt("tile_player_tile = tile:mons_jorgrun")
end
end
end
if you.race() == "Human" or you.race() == "halfling" then
if you.god() == "Lugonu" then
crawl.setopt("tile_player_tile = tile:mons_louise")
elseif you.god() == "Xom" or you.god() == "Nemelex Xobeh" then
crawl.setopt("tile_player_tile = tile:mons_killer_klown")
elseif you.god() == "Okawaru" then
crawl.setopt("tile_player_tile = tile:mons_donald")
elseif you.god() == "Trog" then
crawl.setopt("tile_player_tile = tile:mons_rupert")
elseif you.god() == "Yredelemnul" then
crawl.setopt("tile_player_tile = tile:mons_death_knight")
elseif you.god() == "Makhleb" then
crawl.setopt("tile_player_tile = tile:mons_hell_knight")
elseif you.god() == "Zin" then
crawl.setopt("tile_player_tile = tile:mons_mennas")
elseif you.best_skill() == "Necromancy" then
crawl.setopt("tile_player_tile = tile:mons_josephine")
elseif you.best_skill() == "Summonings" then
crawl.setopt("tile_player_tile = tile:mons_kirke")
elseif you.best_skill() == "Fire magic" then
crawl.setopt("tile_player_tile = tile:mons_margery")
elseif you.best_skill() == "Air magic" then
crawl.setopt("tile_player_tile = tile:mons_nikola")
elseif you.best_skill() == "Polearms" then
crawl.setopt("tile_player_tile = tile:mons_edmund")
elseif you.best_skill() == "Maces & Flails" then
crawl.setopt("tile_player_tile = tile:mons_edmund")
elseif you.best_skill() == "Long blades" then
crawl.setopt("tile_player_tile = tile:mons_erica")
elseif you.best_skill() == "Slings" then
crawl.setopt("tile_player_tile = tile:mons_joseph")
elseif you.best_skill() == "Hexes" then
crawl.setopt("tile_player_tile = tile:mons_psyche")
elseif you.best_skill() == "Fighting" then
crawl.setopt("tile_player_tile = tile:mons_terence")
elseif you.best_skill() == "Spellcasting" then
crawl.setopt("tile_player_tile = tile:mons_wizard")
elseif you.best_skill() == "Stealth" then
crawl.setopt("tile_player_tile = tile:mons_maurice")
else
crawl.setopt("tile_player_tile = tile:mons_human")
end
end
if you.race() == "Felid" then
if you.xl() < 3 then
crawl.setopt("tile_player_tile = tile:felid_2")
elseif you.xl() < 6 then
crawl.setopt("tile_player_tile = tile:felid_1")
elseif you.xl() < 9 then
crawl.setopt("tile_player_tile = tile:felid_3")
elseif you.xl() < 12 then
crawl.setopt("tile_player_tile = tile:felid_6")
elseif you.xl() < 15 then
crawl.setopt("tile_player_tile = tile:felid_5")
elseif you.xl() < 18 then
crawl.setopt("tile_player_tile = tile:felid_8")
elseif you.xl() < 21 then
crawl.setopt("tile_player_tile = tile:felid_7")
elseif you.xl() < 24 then
crawl.setopt("tile_player_tile = tile:felid_4")
else
crawl.setopt("tile_player_tile = tile:mons_natasha")
end
end
if you.race() == "Demonspawn" then
if you.xl() == 2 and
you.get_base_mutation_level("antennae", true, false, false) >= 1 then
else
if you.get_base_mutation_level("magic link", true, false, false) >= 1 then
crawl.setopt("tile_player_tile = tile:mons_blood_saint")
elseif you.get_base_mutation_level("black mark", true, false, false) >= 1 then
crawl.setopt("tile_player_tile = tile:mons_black_sun")
elseif you.get_base_mutation_level("powered by death", true, false, false) >= 1 then
crawl.setopt("tile_player_tile = tile:mons_warmonger")
elseif you.get_base_mutation_level("demonic guardian", true, false, false) >= 1 then
crawl.setopt("tile_player_tile = tile:mons_corrupter")
elseif you.get_base_mutation_level("ignite blood", true, false, false) >= 1 then
crawl.setopt("tile_player_tile = tile:mons_infernal_demonspawn")
elseif you.get_base_mutation_level("passive freeze", true, false, false) >= 1 then
crawl.setopt("tile_player_tile = tile:mons_gelid_demonspawn")
elseif you.get_base_mutation_level("spiny", true, false, false) >= 1 then
crawl.setopt("tile_player_tile = tile:mons_torturous_demonspawn")
elseif you.get_base_mutation_level("nightstalker", true, false, false) >= 1 then
crawl.setopt("tile_player_tile = tile:mons_monstrous_demonspawn")
else
crawl.setopt("tile_player_tile = tile:mons_demonspawn")
end
end
end
if you.race() == "Deep Elf" then
if you.xl() < 12 then
if you.base_skill("Bows") >= 14 then
crawl.setopt("tile_player_tile = tile:mons_deep_elf_archer")
elseif you.base_skill("Short Blades") >= 10 then
crawl.setopt("tile_player_tile = tile:mons_deep_elf_knight")
elseif you.base_skill("Long Blades") >= 10 then
crawl.setopt("tile_player_tile = tile:mons_deep_elf_knight")
else
crawl.setopt("tile_player_tile = tile:MONS_ELF")
end
else
if you.base_skill("Bows") >= 18 then
crawl.setopt("tile_player_tile = tile:mons_deep_elf_master_archer")
elseif you.base_skill("Short Blades") >= 14 then
crawl.setopt("tile_player_tile = tile:mons_deep_elf_blademaster")
elseif you.base_skill("Long Blades") >= 14 then
crawl.setopt("tile_player_tile = tile:mons_deep_elf_blademaster")
elseif you.base_skill("Summonings") > you.base_skill("Fire Magic") then
crawl.setopt("tile_player_tile = tile:mons_deep_elf_demonologist")
elseif you.base_skill("Necromancy") > you.base_skill("Fire Magic") then
crawl.setopt("tile_player_tile = tile:mons_deep_elf_death_mage")
elseif you.base_skill("Air Magic") > you.base_skill("Fire Magic") then
crawl.setopt("tile_player_tile = tile:mons_deep_elf_elementalist")
elseif you.base_skill("Earth Magic") > you.base_skill("Fire Magic") then
crawl.setopt("tile_player_tile = tile:mons_deep_elf_annihilator")
elseif you.base_skill("Ice Magic") > you.base_skill("Fire Magic") then
crawl.setopt("tile_player_tile = tile:mons_deep_elf_high_priest")
else
crawl.setopt("tile_player_tile = tile:mons_deep_elf_sorcerer")
end
end
end
if you.race() == "Gargoyle" then
if you.xl() < 9 then
crawl.setopt("tile_player_tile = tile:mons_gargoyle")
elseif you.xl() < 18 then
crawl.setopt("tile_player_tile = tile:mons_molten_gargoyle")
else
crawl.setopt("tile_player_tile = tile:mons_war_gargoyle")
end
end
if you.race() == "Centaur" then
if you.xl() < 9 then
crawl.setopt("tile_player_tile = tile:mons_centaur")
elseif you.xl() < 18 then
crawl.setopt("tile_player_tile = tile:mons_centaur_warrior")
else
crawl.setopt("tile_player_tile = tile:mons_nessos")
end
end
if you.race() == "Octopode" then
if you.xl() < 9 then
crawl.setopt("tile_player_tile = tile:mons_octopode")
elseif you.xl() < 18 then
crawl.setopt("tile_player_tile = tile:mons_tentacled_monstrosity")
else
crawl.setopt("tile_player_tile = tile:mons_cigotuvis_monster")
end
end
if you.race() == "Kobold" then
if you.xl() < 6 then
crawl.setopt("tile_player_tile = tile:mons_kobold")
elseif you.xl() < 12 then
crawl.setopt("tile_player_tile = tile:MONS_KOBOLD_BRIGAND")
elseif you.xl() < 18 then
if you.base_skill("Summonings") >= 10 then
crawl.setopt("tile_player_tile = tile:mons_kobold_demonologist")
else
crawl.setopt("tile_player_tile = tile:mons_pikel")
end
else
crawl.setopt("tile_player_tile = tile:mons_sonja")
end
end
if you.race() == "Ghoul" then
if you.xl() < 6 then
crawl.setopt("tile_player_tile = tile:mons_necrophage")
elseif you.xl() < 12 then
crawl.setopt("tile_player_tile = tile:mons_bog_body")
elseif you.xl() < 18 then
crawl.setopt("tile_player_tile = tile:mons_ghoul")
else
crawl.setopt("tile_player_tile = tile:mons_jiangshi")
end
end
if you.race() == "Barachi" then
if you.xl() < 6 then
crawl.setopt("tile_player_tile = tile:mons_bullfrog")
elseif you.xl() < 12 then
crawl.setopt("tile_player_tile = tile:mons_blink_frog")
elseif you.xl() < 18 then
crawl.setopt("tile_player_tile = tile:mons_prince_ribbit")
elseif you.xl() < 21 then
crawl.setopt("tile_player_tile = tile:mons_cane_toad")
else
crawl.setopt("tile_player_tile = tile:mons_goliath_frog")
end
end
if you.race() == "Tengu" then
if you.xl() < 5 then
crawl.setopt("tile_player_tile = tile:mons_tengu")
elseif you.xl() < 12 then
if you.base_skill("Fighting") > you.base_skill("SpellCasting") then
crawl.setopt("tile_player_tile = tile:mons_tengu_warrior")
else
crawl.setopt("tile_player_tile = tile:mons_tengu_conjurer")
end
elseif you.xl() < 18 then
crawl.setopt("tile_player_tile = tile:mons_tengu_reaver")
else
crawl.setopt("tile_player_tile = tile:mons_sojobo")
end
end
if you.race() == "Gnoll" then
if you.god() == "Xom" then
crawl.setopt("tile_player_tile = tile:mons_crazy_yiuf")
elseif you.xl() < 6 then
crawl.setopt("tile_player_tile = tile:mons_gnoll")
elseif you.xl() < 12 then
if you.base_skill("Fighting") > you.base_skill("SpellCasting") then
crawl.setopt("tile_player_tile = tile:mons_gnoll_sergeant")
else
crawl.setopt("tile_player_tile = tile:mons_gnoll_shaman")
end
elseif you.xl() < 18 then
crawl.setopt("tile_player_tile = tile:mons_grum")
else
crawl.setopt("tile_player_tile = tile:mons_crazy_yiuf")
end
end
if you.race() == "Vampire" then
if you.xl() < 6 then
crawl.setopt("tile_player_tile = tile:mons_vampire")
elseif you.xl() < 18 then
if you.base_skill("Fighting") > you.base_skill("SpellCasting") then
crawl.setopt("tile_player_tile = tile:mons_vampire_knight")
else
crawl.setopt("tile_player_tile = tile:mons_vampire_mage")
end
else
crawl.setopt("tile_player_tile = tile:mons_jory")
end
end
if you.race() == "Merfolk" then
if you.xl() < 6 then
crawl.setopt("tile_player_tile = tile:mons_merfolk")
elseif you.xl() < 12 then
crawl.setopt("tile_player_tile = tile:mons_merfolk_impaler")
elseif you.xl() < 18 then
if you.base_skill("Fighting") > you.base_skill("SpellCasting") then
crawl.setopt("tile_player_tile = tile:mons_merfolk_javelineer")
else
crawl.setopt("tile_player_tile = tile:mons_merfolk_aquamancer")
end
else
crawl.setopt("tile_player_tile = tile:mons_ilsuiw")
end
end
if you.race() == "Spriggan" then
if you.xl() < 6 then
crawl.setopt("tile_player_tile = tile:mons_spriggan")
elseif you.xl() < 12 then
if you.base_skill("Fighting") > you.base_skill("SpellCasting") then
crawl.setopt("tile_player_tile = tile:mons_spriggan_defender")
else
crawl.setopt("tile_player_tile = tile:mons_spriggan_druid")
end
elseif you.xl() < 18 then
if you.flying() == true then
crawl.setopt("tile_player_tile = tile:mons_spriggan_rider")
elseif you.base_skill("Fighting") > you.base_skill("SpellCasting") then
crawl.setopt("tile_player_tile = tile:mons_spriggan_berserker")
else
crawl.setopt("tile_player_tile = tile:mons_spriggan_air_mage")
end
else
if you.base_skill("Fighting") > you.base_skill("SpellCasting") then
crawl.setopt("tile_player_tile = tile:mons_agnes")
else
crawl.setopt("tile_player_tile = tile:mons_the_enchantress")
end
end
end
if you.race() == "Hill Orc" then
if you.xl() < 6 then
crawl.setopt("tile_player_tile = tile:mons_orc")
elseif you.xl() < 12 then
if you.base_skill("Fighting") > you.base_skill("SpellCasting") then
crawl.setopt("tile_player_tile = tile:mons_orc_warrior")
else
crawl.setopt("tile_player_tile = tile:mons_orc_wizard")
end
elseif you.xl() < 18 then
if you.god() == "Beogh" then
crawl.setopt("tile_player_tile = tile:mons_orc_priest")
elseif you.base_skill("Fighting") > you.base_skill("SpellCasting") then
crawl.setopt("tile_player_tile = tile:mons_urug")
else
crawl.setopt("tile_player_tile = tile:mons_blork_the_orc")
end
elseif you.xl() < 21 then
if you.god() == "Beogh" then
crawl.setopt("tile_player_tile = tile:mons_orc_high_priest")
elseif you.base_skill("Fighting") > you.base_skill("SpellCasting") then
crawl.setopt("tile_player_tile = tile:mons_orc_knight")
else
crawl.setopt("tile_player_tile = tile:mons_orc_sorcerer")
end
else
if you.god() == "Beogh" then
crawl.setopt("tile_player_tile = tile:mons_saint_roka")
elseif you.base_skill("Fighting") > you.base_skill("SpellCasting") then
crawl.setopt("tile_player_tile = tile:mons_orc_warlord")
else
crawl.setopt("tile_player_tile = tile:mons_nergalle")
end
end
end
if you.race() == "Troll" then
if you.xl() < 6 then
crawl.setopt("tile_player_tile = tile:mons_purgy")
elseif you.xl() < 10 then
crawl.setopt("tile_player_tile = tile:mons_troll")
elseif you.xl() < 14 then
crawl.setopt("tile_player_tile = tile:mons_snorg")
elseif you.xl() < 18 then
crawl.setopt("tile_player_tile = tile:mons_deep_troll")
elseif you.xl() < 21 then
if you.base_skill("Earth Magic") >= 9 then
crawl.setopt("tile_player_tile = tile:mons_deep_troll_earth_mage")
else
crawl.setopt("tile_player_tile = tile:mons_deep_troll_shaman")
end
else
crawl.setopt("tile_player_tile = tile:mons_iron_troll")
end
end
if you.race() == "Ogre" then
if you.xl() < 9 then
crawl.setopt("tile_player_tile = tile:mons_ogre")
elseif you.xl() < 18 then
if you.base_skill("SpellCasting") >= 10 then
crawl.setopt("tile_player_tile = tile:mons_ogre_mage")
else
crawl.setopt("tile_player_tile = tile:mons_two_headed_ogre")
end
else
if you.base_skill("SpellCasting") >= 10 then
crawl.setopt("tile_player_tile = tile:mons_erolcha")
else
crawl.setopt("tile_player_tile = tile:MONS_IRONBOUND_THUNDERHULK")
end
end
end
if you.race() == "Naga" then
if you.xl() < 6 then
crawl.setopt("tile_player_tile = tile:mons_naga")
elseif you.xl() < 10 then
if you.base_skill("Fighting") > you.base_skill("SpellCasting") then
crawl.setopt("tile_player_tile = tile:mons_naga_warrior")
else
crawl.setopt("tile_player_tile = tile:mons_naga_ritualist")
end
elseif you.xl() < 14 then
if you.base_skill("Fighting") > you.base_skill("SpellCasting") then
crawl.setopt("tile_player_tile = tile:mons_naga_sharpshooter")
else
crawl.setopt("tile_player_tile = tile:mons_naga_mage")
end
elseif you.xl() < 18 then
if you.base_skill("Fighting") > you.base_skill("SpellCasting") then
crawl.setopt("tile_player_tile = tile:mons_vashnia")
else
crawl.setopt("tile_player_tile = tile:mons_nagaraja")
end
else
crawl.setopt("tile_player_tile = tile:mons_lamia")
end
end
if you.race() == "Mummy" then
if you.xl() < 6 then
crawl.setopt("tile_player_tile = tile:mons_mummy")
elseif you.xl() < 13 then
crawl.setopt("tile_player_tile = tile:mons_guardian_mummy")
elseif you.xl() < 18 then
crawl.setopt("tile_player_tile = tile:mons_mummy_priest")
elseif you.xl() < 21 then
crawl.setopt("tile_player_tile = tile:mons_royal_mummy")
else
crawl.setopt("tile_player_tile = tile:mons_menkaure")
end
end
if you.race() == "Vine Stalker" then
if you.xl() < 3 then
crawl.setopt("tile_player_tile = tile:MONS_BUSH")
elseif you.xl() < 6 then
crawl.setopt("tile_player_tile = tile:MONS_BUSH_BURNING")
elseif you.xl() < 12 then
if you.base_skill("Fighting") > you.base_skill("SpellCasting") then
crawl.setopt("tile_player_tile = tile:mons_dryad")
else
crawl.setopt("tile_player_tile = tile:mons_oklob_sapling")
end
elseif you.xl() < 18 then
if you.base_skill("Fighting") > you.base_skill("SpellCasting") then
crawl.setopt("tile_player_tile = tile:MONS_VINE_STALKER")
else
crawl.setopt("tile_player_tile = tile:mons_oklob_plant")
end
else
if you.base_skill("Fighting") > you.base_skill("SpellCasting") then
crawl.setopt("tile_player_tile = tile:mons_treant")
else
crawl.setopt("tile_player_tile = tile:mons_thorn_hunter")
end
end
end
end
}