diff options
Diffstat (limited to 'lib/scpt/s_tempo.lua')
-rw-r--r-- | lib/scpt/s_tempo.lua | 162 |
1 files changed, 162 insertions, 0 deletions
diff --git a/lib/scpt/s_tempo.lua b/lib/scpt/s_tempo.lua new file mode 100644 index 00000000..d3d2fbb5 --- /dev/null +++ b/lib/scpt/s_tempo.lua @@ -0,0 +1,162 @@ +-- Handles thhe temporal school + + +MAGELOCK = add_spell +{ + ["name"] = "Magelock", + ["school"] = {SCHOOL_TEMPORAL}, + ["level"] = 1, + ["mana"] = 1, + ["mana_max"] = 35, + ["fail"] = 10, + ["stick"] = + { + ["charge"] = { 7, 5 }, + [TV_WAND] = + { + ["rarity"] = 30, + ["base_level"] = { 1, 5 }, + ["max_level"] = { 15, 45 }, + }, + }, + ["spell"] = function() + if get_level(MAGELOCK, 50) >= 30 then + local ret, x, y, c_ptr + + if get_level(MAGELOCK, 50) >= 40 then + ret, x, y = tgt_pt() + if ret == FALSE then return end + if cave_is(cave(y, x), FF1_FLOOR) == FALSE or cave_is(cave(y, x), FF1_PERMANENT) == TRUE or los(player.py, player.px, y, x) == FALSE then + msg_print("You cannot place it there.") + return TRUE + end + else + y = player.py + x = player.px + end + cave_set_feat(y, x, 3) + return TRUE + else + ret, dir = get_aim_dir() + if ret == FALSE then return end + return wizard_lock(dir) + end + end, + ["info"] = function() + return "" + end, + ["desc"] = { + "Magically locks a door", + "At level 30 it creates a glyph of warding", + "At level 40 the glyph can be placed anywhere in the field of vision" + } +} + +SLOWMONSTER = add_spell +{ + ["name"] = "Slow Monster", + ["school"] = {SCHOOL_TEMPORAL}, + ["level"] = 10, + ["mana"] = 10, + ["mana_max"] = 15, + ["fail"] = 35, + ["stick"] = + { + ["charge"] = { 5, 5 }, + [TV_WAND] = + { + ["rarity"] = 23, + ["base_level"] = { 1, 15 }, + ["max_level"] = { 20, 50 }, + }, + }, + ["spell"] = function() + local ret, dir + + ret, dir = get_aim_dir() + if ret == FALSE then return end + if get_level(SLOWMONSTER, 50) >= 20 then + return fire_ball(GF_OLD_SLOW, dir, 40 + get_level(SLOWMONSTER, 160), 1) + else + return fire_bolt(GF_OLD_SLOW, dir, 40 + get_level(SLOWMONSTER, 160)) + end + end, + ["info"] = function() + if get_level(SLOWMONSTER, 50) >= 20 then + return "power "..(40 + get_level(SLOWMONSTER, 160)).." rad 1" + else + return "power "..(40 + get_level(SLOWMONSTER, 160)) + end + end, + ["desc"] = { + "Magically slows down the passing of time around a monster", + "At level 20 it affects a zone" + } +} + +ESSENCESPEED = add_spell +{ + ["name"] = "Essence of Speed", + ["school"] = {SCHOOL_TEMPORAL}, + ["level"] = 15, + ["mana"] = 20, + ["mana_max"] = 40, + ["fail"] = 50, + ["stick"] = + { + ["charge"] = { 3, 3 }, + [TV_WAND] = + { + ["rarity"] = 80, + ["base_level"] = { 1, 1 }, + ["max_level"] = { 10, 39 }, + }, + }, + ["inertia"] = { 5, 20 }, + ["spell"] = function() + if player.fast == 0 then return set_fast(10 + randint(10) + get_level(ESSENCESPEED, 50), 5 + get_level(ESSENCESPEED, 20)) end + end, + ["info"] = function() + return "dur "..(10 + get_level(ESSENCESPEED, 50)).."+d10 speed "..(5 + get_level(ESSENCESPEED, 20)) + end, + ["desc"] = { + "Magically decreases the passing of time around you, making you move faster with", + "respect to the rest of the universe." + } +} + +BANISHMENT = add_spell +{ + ["name"] = "Banishment", + ["school"] = {SCHOOL_TEMPORAL, SCHOOL_CONVEYANCE}, + ["level"] = 30, + ["mana"] = 30, + ["mana_max"] = 40, + ["fail"] = 95, + ["stick"] = + { + ["charge"] = { 1, 3 }, + [TV_WAND] = + { + ["rarity"] = 98, + ["base_level"] = { 1, 15 }, + ["max_level"] = { 10, 36 }, + }, + }, + ["inertia"] = { 5, 50 }, + ["spell"] = function() + local obvious + obvious = project_los(GF_AWAY_ALL, 40 + get_level(BANISHMENT, 160)) + if get_level(BANISHMENT, 50) >= 15 then + obvious = is_obvious(project_los(GF_STASIS, 20 + get_level(BANISHMENT, 120)), obvious) + end + return obvious + end, + ["info"] = function() + return "power "..(40 + get_level(BANISHMENT, 160)) + end, + ["desc"] = { + "Disrupts the space/time continuum in your area and teleports all monsters away.", + "At level 15 it may also lock them in a time bubble for a while." + } +} |