diff options
author | Bardur Arantsson <bardur@scientician.net> | 2012-03-04 15:53:46 +0100 |
---|---|---|
committer | Bardur Arantsson <bardur@scientician.net> | 2012-03-29 19:59:21 +0200 |
commit | a1ebb9363e31ad449377a5794f1bf93d84e25bc8 (patch) | |
tree | 3722b20555e47d8c20283b75bfc37b9eb7ba767f /lib/mods/theme/scpt/s_mandos.lua | |
parent | 6be64d33039bf2ece3f50b3162b2da7f74ce2e4a (diff) |
Import Theme repository into main repository
Diffstat (limited to 'lib/mods/theme/scpt/s_mandos.lua')
-rw-r--r-- | lib/mods/theme/scpt/s_mandos.lua | 186 |
1 files changed, 186 insertions, 0 deletions
diff --git a/lib/mods/theme/scpt/s_mandos.lua b/lib/mods/theme/scpt/s_mandos.lua new file mode 100644 index 00000000..cc7e346a --- /dev/null +++ b/lib/mods/theme/scpt/s_mandos.lua @@ -0,0 +1,186 @@ +-- Spells for the school of Mandos + +BOOK_MANDOS = 66 + +-- precognition timer for high-level spell [from T-Plus by Ingeborg S. Norden] + +add_loadsave("tim_precognition",0) + +function set_precognition(v) + local notice = FALSE + if (v < 0) then v = 0 end + if (v > 10000) then v = 10000 end + + -- Check if the state will change + if (v > 0) and (tim_precognition == 0) then + msg_print("You feel able to predict the future.") + notice = TRUE + elseif (v == 0) and (tim_precognition > 0) then + msg_print("You feel less able to predict the future.") + notice = TRUE + end + + -- set the new value + tim_precognition = v + + if (notice == TRUE) then + player.update = bor(player.update, PU_BONUS) + disturb(0,0) + end + return notice +end + +-- related hooks + +add_hooks{ + [HOOK_CALC_BONUS] = function() + if (tim_precognition > 0) then + --player.precognition = TRUE + apply_flags(0, 0, 0, TR4_PRECOGNITION, 0, 0, 0, 0, 0, 0, 0) + end + end, + + [HOOK_PROCESS_WORLD] = function() + if (tim_precognition > 0) then + set_precognition(tim_precognition - 1) + end + end, +} + +-- "Tears of Luthien" based on Holy Word from T-Plus +MANDOS_TEARS_LUTHIEN = add_spell +{ + ["name"] = "Tears of Luthien", + ["school"] = {SCHOOL_MANDOS}, + ["level"] = 5, + ["mana"] = 10, + ["mana_max"] = 100, + ["fail"] = 25, + ["piety"] = TRUE, + ["stat"] = A_WIS, + ["random"] = SKILL_SPIRITUALITY, + ["spell"] = function() + local level = get_level(MANDOS_TEARS_LUTHIEN, 30) + local obvious = hp_player(10 * level) + obvious = is_obvious (set_stun(0), obvious) + obvious = is_obvious (set_cut(0), obvious) + obvious = is_obvious (set_afraid(0), obvious) + return obvious + end, + ["info"] = function() + local level = get_level(MANDOS_TEARS_LUTHIEN, 30) + return "heals "..(10 * level) + end, + ["desc"] = { + "Calls upon the spirit of Luthien to ask Mandos for healing and succour." + } +} + +-- "Spirit of the Feanturi" based on Restore Mind from T-Plus +MANDOS_SPIRIT_FEANTURI = add_spell { + ["name"] = "Feanturi", + ["school"] = {SCHOOL_MANDOS}, + ["level"] = 10, + ["mana"] = 40, + ["mana_max"] = 200, + ["fail"] = 50, + -- Uses piety to cast + ["piety"] = TRUE, + ["stat"] = A_WIS, + ["random"] = SKILL_SPIRITUALITY, + ["spell"] = function() + local level = get_level(MANDOS_SPIRIT_FEANTURI, 50) + local obvious + obvious = set_afraid(0) + obvious = is_obvious(set_confused(0), obvious) + + if level >= 20 then + obvious = is_obvious(do_res_stat(A_WIS, TRUE), obvious) + obvious = is_obvious(do_res_stat(A_INT, TRUE), obvious) + end + + if level >= 30 then + obvious = is_obvious(set_image(0), obvious) + obvious = is_obvious(heal_insanity(player.msane * level / 100), obvious) + end + + return obvious + end, + + ["info"] = function() + local level = get_level(MANDOS_SPIRIT_FEANTURI, 50) + if level >= 20 then + return "heals "..level.."%" + else + return "" + end + end, + ["desc"] = { + "Channels the power of Mandos to cure fear and confusion.", + "At level 20 it restores lost INT and WIS", + "At level 30 it cures hallucinations and restores a percentage of lost sanity" + } +} + +-- "Tale of Doom" based on Foretell from T-Plus +MANDOS_TALE_DOOM = add_spell +{ + ["name"] = "Tale of Doom", + ["school"] = {SCHOOL_MANDOS}, + ["level"] = 25, + ["mana"] = 60, + ["mana_max"] = 300, + ["stat"] = A_WIS, + ["fail"] = 75, + -- Uses piety to cast + ["piety"] = TRUE, + ["stat"] = A_WIS, + ["random"] = SKILL_SPIRITUALITY, + ["spell"] = function() + return set_precognition(5 + get_level(MANDOS_TALE_DOOM,10)) + end, + ["info"] = function() + return "dur "..(5 + get_level(MANDOS_TALE_DOOM,10)) + end, + ["desc"] = { + "Allows you to predict the future for a short time." + } +} + +-- "Call to the Halls" based on Call Blessed Soul from T-Plus +MANDOS_CALL_HALLS= add_spell + +{ + ["name"] = "Call to the Halls", + ["school"] = {SCHOOL_MANDOS}, + ["level"] = 30, + ["mana"] = 80, + ["mana_max"] = 400, + ["fail"] = 95, + ["piety"] = TRUE, + ["stat"] = A_WIS, + ["random"] = SKILL_SPIRITUALITY, + ["spell"] = function() + local y, x, m_idx + local summons = + { + test_monster_name("Experienced spirit"), + test_monster_name("Wise spirit"), + } + y, x = find_position(player.py, player.px) + m_idx = place_monster_one(y, x, summons[rand_range(1, 2)], 0, FALSE, MSTATUS_FRIEND) + if m_idx ~= 0 then + monster_set_level(m_idx, 20 + get_level(MANDOS_CALL_HALLS, 70, 0)) + return TRUE + end + end, + + ["info"] = function() + return "level "..(get_level(MANDOS_CALL_HALLS, 70)) + end, + ["desc"] = { + "Summons a leveled spirit from the Halls of Mandos", + "to fight for you." + + } +}
\ No newline at end of file |