diff options
Diffstat (limited to 'lib/scpt/s_water.lua')
-rw-r--r-- | lib/scpt/s_water.lua | 154 |
1 files changed, 154 insertions, 0 deletions
diff --git a/lib/scpt/s_water.lua b/lib/scpt/s_water.lua new file mode 100644 index 00000000..88305201 --- /dev/null +++ b/lib/scpt/s_water.lua @@ -0,0 +1,154 @@ +-- handle the water school + +TIDALWAVE = add_spell +{ + ["name"] = "Tidal Wave", + ["school"] = {SCHOOL_WATER}, + ["level"] = 16, + ["mana"] = 16, + ["mana_max"] = 40, + ["fail"] = 65, + ["stick"] = + { + ["charge"] = { 6, 5 }, + [TV_WAND] = + { + ["rarity"] = 54, + ["base_level"] = { 1, 10 }, + ["max_level"] = { 20, 50 }, + }, + }, + ["inertia"] = { 4, 100 }, + ["spell"] = function() + fire_wave(GF_WAVE, 0, 40 + get_level(TIDALWAVE, 200), 0, 6 + get_level(TIDALWAVE, 10), EFF_WAVE) + return TRUE + end, + ["info"] = function() + return "dam "..(40 + get_level(TIDALWAVE, 200)).." rad "..(6 + get_level(TIDALWAVE, 10)) + end, + ["desc"] = { + "Summons a monstrous tidal wave that will expand and crush the", + "monsters under its mighty waves." + } +} + +ICESTORM = add_spell +{ + ["name"] = "Ice Storm", + ["school"] = {SCHOOL_WATER}, + ["level"] = 22, + ["mana"] = 30, + ["mana_max"] = 60, + ["fail"] = 80, + ["stick"] = + { + ["charge"] = { 3, 7 }, + [TV_WAND] = + { + ["rarity"] = 65, + ["base_level"] = { 1, 5 }, + ["max_level"] = { 25, 45 }, + }, + }, + ["inertia"] = { 3, 40 }, + ["spell"] = function() + local type + + if get_level(ICESTORM, 50) >= 10 then type = GF_ICE + else type = GF_COLD end + fire_wave(type, 0, 80 + get_level(ICESTORM, 200), 1 + get_level(ICESTORM, 3, 0), 20 + get_level(ICESTORM, 70), EFF_STORM) + return TRUE + end, + ["info"] = function() + return "dam "..(80 + get_level(ICESTORM, 200)).." rad "..(1 + get_level(ICESTORM, 3, 0)).." dur "..(20 + get_level(ICESTORM, 70)) + end, + ["desc"] = { + "Engulfs you in a storm of roaring cold that strikes your foes.", + "At level 10 it turns into shards of ice." + } +} + +ENTPOTION = add_spell +{ + ["name"] = "Ent's Potion", + ["school"] = {SCHOOL_WATER}, + ["level"] = 6, + ["mana"] = 7, + ["mana_max"] = 15, + ["fail"] = 35, + ["inertia"] = { 1, 30 }, + ["spell"] = function() + set_food(PY_FOOD_MAX - 1) + msg_print("The Ent's Potion fills your stomach.") + if get_level(ENTPOTION, 50) >= 5 then + set_afraid(0) + end + if get_level(ENTPOTION, 50) >= 12 then + set_hero(player.hero + randint(25) + 25 + get_level(ENTPOTION, 40)) + end + return TRUE + end, + ["info"] = function() + if get_level(ENTPOTION, 50) >= 12 then + return "dur "..(25 + get_level(ENTPOTION, 40)).."+d25" + else + return "" + end + end, + ["desc"] = { + "Fills up your stomach.", + "At level 5 it boldens your heart.", + "At level 12 it make you heroic." + } +} + +VAPOR = add_spell +{ + ["name"] = "Vapor", + ["school"] = {SCHOOL_WATER}, + ["level"] = 2, + ["mana"] = 2, + ["mana_max"] = 12, + ["fail"] = 20, + ["inertia"] = { 1, 30 }, + ["spell"] = function() + fire_cloud(GF_WATER, 0, 3 + get_level(VAPOR, 20), 3 + get_level(VAPOR, 9, 0), 5) + return TRUE + end, + ["info"] = function() + return "dam "..(3 + get_level(VAPOR, 20)).." rad "..(3 + get_level(VAPOR, 9, 0)).." dur 5" + end, + ["desc"] = { + "Fills the air with toxic moisture to eradicate annoying critters." + } +} + +function get_geyser_damage() + return get_level(GEYSER, 10), 3 + get_level(GEYSER, 35) +end + +GEYSER = add_spell +{ + ["name"] = "Geyser", + ["school"] = SCHOOL_WATER, + ["level"] = 1, + ["mana"] = 1, + ["mana_max"] = 35, + ["fail"] = 5, + ["spell"] = function() + local ret, dir + ret, dir = get_aim_dir() + if ret == FALSE then return end + return fire_bolt_or_beam(2 * get_level(GEYSER, 85), GF_WATER, dir, damroll(get_geyser_damage())) + end, + ["info"] = function() + local n, d + n, d = get_geyser_damage() + return "dam "..n.."d"..d + end, + ["desc"] = + { + "Shoots a geyser of water from your fingertips.", + "Sometimes it can blast through its first target." + }, +} |