diff options
Diffstat (limited to 'lib/scpt/s_mind.lua')
-rw-r--r-- | lib/scpt/s_mind.lua | 132 |
1 files changed, 132 insertions, 0 deletions
diff --git a/lib/scpt/s_mind.lua b/lib/scpt/s_mind.lua new file mode 100644 index 00000000..d1b25e9e --- /dev/null +++ b/lib/scpt/s_mind.lua @@ -0,0 +1,132 @@ +-- handle the mind school + +CHARM = add_spell +{ + ["name"] = "Charm", + ["school"] = {SCHOOL_MIND}, + ["level"] = 1, + ["mana"] = 1, + ["mana_max"] = 20, + ["fail"] = 10, + ["stick"] = + { + ["charge"] = { 7, 5 }, + [TV_WAND] = + { + ["rarity"] = 35, + ["base_level"] = { 1, 15 }, + ["max_level"] = { 20, 40 }, + }, + }, + ["spell"] = function() + if get_level(CHARM, 50) >= 35 then + return project_los(GF_CHARM, 10 + get_level(CHARM, 150)) + elseif get_level(CHARM, 50) >= 15 then + local ret, dir = get_aim_dir() + if ret == FALSE then return end + return fire_ball(GF_CHARM, dir, 10 + get_level(CHARM, 150), 3) + else + local ret, dir = get_aim_dir() + if ret == FALSE then return end + return fire_bolt(GF_CHARM, dir, 10 + get_level(CHARM, 150)) + end + end, + ["info"] = function() + return "power "..(10 + get_level(CHARM, 150)) + end, + ["desc"] = { + "Tries to manipulate the mind of a monster to make it friendly", + "At level 15 it turns into a ball", + "At level 35 it affects all monsters in sight" + } +} + +CONFUSE = add_spell +{ + ["name"] = "Confuse", + ["school"] = {SCHOOL_MIND}, + ["level"] = 5, + ["mana"] = 5, + ["mana_max"] = 30, + ["fail"] = 20, + ["stick"] = + { + ["charge"] = { 3, 4 }, + [TV_WAND] = + { + ["rarity"] = 45, + ["base_level"] = { 1, 5 }, + ["max_level"] = { 20, 40 }, + }, + }, + ["spell"] = function() + if get_level(CONFUSE, 50) >= 35 then + return project_los(GF_OLD_CONF, 10 + get_level(CONFUSE, 150)) + elseif get_level(CONFUSE, 50) >= 15 then + local ret, dir = get_aim_dir() + if ret == FALSE then return end + return fire_ball(GF_OLD_CONF, dir, 10 + get_level(CONFUSE, 150), 3) + else + local ret, dir = get_aim_dir() + if ret == FALSE then return end + return fire_bolt(GF_OLD_CONF, dir, 10 + get_level(CONFUSE, 150)) + end + end, + ["info"] = function() + return "power "..(10 + get_level(CONFUSE, 150)) + end, + ["desc"] = { + "Tries to manipulate the mind of a monster to confuse it", + "At level 15 it turns into a ball", + "At level 35 it affects all monsters in sight" + } +} + +ARMOROFFEAR = add_spell +{ + ["name"] = "Armor of Fear", + ["school"] = SCHOOL_MIND, + ["level"] = 10, + ["mana"] = 10, + ["mana_max"] = 50, + ["fail"] = 35, + ["inertia"] = { 2, 20 }, + ["spell"] = function() + return set_shield(randint(10) + 10 + get_level(ARMOROFFEAR, 100), 10, SHIELD_FEAR, 1 + get_level(ARMOROFFEAR, 7), 5 + get_level(ARMOROFFEAR, 20)) + end, + ["info"] = function() + return "dur "..(10 + get_level(ARMOROFFEAR, 100)).." power "..(1 + get_level(ARMOROFFEAR, 7)).."d"..(5 + get_level(ARMOROFFEAR, 20)) + end, + ["desc"] = { + "Creates a shield of pure fear around you. Any monster attempting to hit you", + "must save or flee", + } +} + +STUN = add_spell +{ + ["name"] = "Stun", + ["school"] = {SCHOOL_MIND}, + ["level"] = 15, + ["mana"] = 10, + ["mana_max"] = 90, + ["fail"] = 45, + ["spell"] = function() + if get_level(STUN, 50) >= 20 then + local ret, dir = get_aim_dir() + if ret == FALSE then return end + return fire_ball(GF_STUN, dir, 10 + get_level(STUN, 150), 3) + else + local ret, dir = get_aim_dir() + if ret == FALSE then return end + return fire_bolt(GF_STUN, dir, 10 + get_level(STUN, 150)) + end + end, + ["info"] = function() + return "power "..(10 + get_level(STUN, 150)) + end, + ["desc"] = { + "Tries to manipulate the mind of a monster to stun it", + "At level 20 it turns into a ball", + } +} |