summaryrefslogtreecommitdiff
path: root/lib/mods/theme/scpt/s_aule.lua
diff options
context:
space:
mode:
Diffstat (limited to 'lib/mods/theme/scpt/s_aule.lua')
-rw-r--r--lib/mods/theme/scpt/s_aule.lua222
1 files changed, 222 insertions, 0 deletions
diff --git a/lib/mods/theme/scpt/s_aule.lua b/lib/mods/theme/scpt/s_aule.lua
new file mode 100644
index 00000000..d3ca4733
--- /dev/null
+++ b/lib/mods/theme/scpt/s_aule.lua
@@ -0,0 +1,222 @@
+-- Spells for Aule school
+
+BOOK_AULE = 63
+
+AULE_FIREBRAND = add_spell
+{
+ ["name"] = "Firebrand",
+ ["school"] = {SCHOOL_AULE},
+ ["level"] = 1,
+ ["mana"] = 10,
+ ["mana_max"] = 100,
+ ["fail"] = 20,
+ ["piety"] = TRUE,
+ ["stat"] = A_WIS,
+ ["random"] = SKILL_SPIRITUALITY,
+ ["spell"] = function()
+ local type, rad
+ local level = get_level(AULE_FIREBRAND)
+ type = GF_FIRE
+
+ if (get_level(AULE_FIREBRAND) > 30) then
+ type = GF_HOLY_FIRE
+ end
+
+ rad = 0
+ if (level >= 15) then
+ rad = 1
+ end
+ return set_project(level + randint(20),
+ type, 4 + level, rad,
+ bor(PROJECT_STOP, PROJECT_KILL))
+ end,
+ ["info"] = function()
+ local level = get_level(AULE_FIREBRAND)
+ return "dur "..(level).."+d20 dam "..(4 + level).."/blow"
+ end,
+ ["desc"] = {
+ "Imbues your melee weapon with fire to deal more damage",
+ "At level 15 it spreads over a 1 radius zone around your target",
+ "At level 30 it deals holy fire damage"
+ }
+}
+
+AULE_ENCHANT_WEAPON = add_spell
+{
+ ["name"] = "Enchant Weapon",
+ ["school"] = {SCHOOL_AULE},
+ ["level"] = 10,
+ ["mana"] = 100,
+ ["mana_max"] = 200,
+ ["fail"] = 20,
+ ["piety"] = TRUE,
+ ["stat"] = A_WIS,
+ ["random"] = SKILL_SPIRITUALITY,
+ ["spell"] = function()
+ local level = get_level(AULE_ENCHANT_WEAPON)
+ local num_h, num_d, num_p
+
+ local ret, item, obj
+
+ num_h = 1 + randint(level/12)
+ num_d = 0
+ num_p = 0
+ if (level >= 5) then
+ num_d = 1 + randint(level/12)
+ end
+ if (level >= 45) then
+ num_p = 1
+ end
+ --return enchant_spell(num_h, num_d, 0, num_p)
+
+ ret, item = get_item("Which object do you want to enchant?",
+ "You have no objects to enchant.",
+ bor(USE_INVEN),
+ function (obj)
+ if obj.name1 > 0 then return FALSE end
+ if (obj.tval == TV_MSTAFF) then
+ return TRUE
+ elseif (obj.tval == TV_BOW) then
+ return TRUE
+ elseif (obj.tval == TV_HAFTED) then
+ return TRUE
+ elseif (obj.tval == TV_POLEARM) then
+ return TRUE
+ elseif (obj.tval == TV_SWORD) then
+ return TRUE
+ elseif (obj.tval == TV_AXE) then
+ return TRUE
+ end
+ return FALSE
+ end
+ )
+ if ret == FALSE then return FALSE end
+
+ obj = get_object(item)
+
+ obj.to_h = obj.to_h + num_h
+ obj.to_d = obj.to_d + num_h
+ obj.pval = obj.pval + num_p
+
+ return TRUE
+
+ end,
+ ["info"] = function()
+ return "tries "..(1 + get_level(AULE_ENCHANT_WEAPON)/12)
+ end,
+ ["desc"] = {
+ "Tries to enchant a weapon to-hit",
+ "At level 5 it also enchants to-dam",
+ "At level 45 it enhances the special powers of magical weapons",
+ "The might of the enchantment increases with the level"
+ }
+}
+
+AULE_ENCHANT_ARMOUR = add_spell {
+ ["name"] = "Enchant Armour",
+ ["school"] = {SCHOOL_AULE},
+ ["level"] = 15,
+ ["mana"] = 100,
+ ["mana_max"] = 200,
+ ["fail"] = 20,
+ ["piety"] = TRUE,
+ ["stat"] = A_WIS,
+ ["random"] = SKILL_SPIRITUALITY,
+ ["spell"] = function()
+ local level = get_level(AULE_ENCHANT_ARMOUR)
+ local num_h, num_d, num_a, num_p
+ local ret, item, obj
+
+ num_a = 1 + randint(level/10)
+ num_h = 0
+ num_d = 0
+ num_p = 0
+ if (level >= 20) then
+ num_h = 1
+ num_d = 1
+ end
+ if (level >= 40) then
+ num_p = 1
+ end
+ --return enchant_spell(num_h, num_d, num_a, num_p)
+
+ ret, item = get_item("Which object do you want to enchant?",
+ "You have no objects to enchant.",
+ bor(USE_INVEN),
+ function (obj)
+ if obj.name1 > 0 then return FALSE end
+ if (obj.tval == TV_BOOTS) then
+ return TRUE
+ elseif (obj.tval == TV_GLOVES) then
+ return TRUE
+ elseif (obj.tval == TV_HELM) then
+ return TRUE
+ elseif (obj.tval == TV_CROWN) then
+ return TRUE
+ elseif (obj.tval == TV_SHIELD) then
+ return TRUE
+ elseif (obj.tval == TV_CLOAK) then
+ return TRUE
+ elseif (obj.tval == TV_SOFT_ARMOR) then
+ return TRUE
+ elseif (obj.tval == TV_HARD_ARMOR) then
+ return TRUE
+ elseif (obj.tval == TV_DRAG_ARMOR) then
+ return TRUE
+ end
+ return FALSE
+ end
+ )
+ if ret == FALSE then return FALSE end
+
+ obj = get_object(item)
+
+ obj.to_h = obj.to_h + num_h
+ obj.to_d = obj.to_d + num_h
+ obj.pval = obj.pval + num_p
+ obj.to_a = obj.to_a + num_h
+
+ return TRUE
+
+ end,
+ ["info"] = function()
+ return "tries "..(1 + get_level(AULE_ENCHANT_ARMOUR)/10)
+ end,
+ ["desc"] = {
+ "Tries to enchant a piece of armour",
+ "At level 20 it also enchants to-hit and to-dam",
+ "At level 40 it enhances the special powers of magical armour",
+ "The might of the enchantment increases with the level"
+ }
+}
+
+AULE_CHILD = add_spell
+{
+ ["name"] = "Child of Aule",
+ ["school"] = {SCHOOL_AULE},
+ ["level"] = 20,
+ ["mana"] = 200,
+ ["mana_max"] = 500,
+ ["fail"] = 40,
+ ["piety"] = TRUE,
+ ["stat"] = A_WIS,
+ ["random"] = SKILL_SPIRITUALITY,
+ ["spell"] = function()
+ local y, x, m_idx
+
+ y, x = find_position(player.py, player.px)
+ m_idx = place_monster_one(y, x, test_monster_name("Dwarven warrior"), 0, FALSE, MSTATUS_FRIEND)
+
+ if m_idx ~= 0 then
+ monster_set_level(m_idx, 20 + get_level(AULE_CHILD, 70, 0))
+ return TRUE
+ end
+ end,
+ ["info"] = function()
+ return "level "..(20 + get_level(AULE_CHILD, 70))
+ end,
+ ["desc"] = {
+ "Summons a levelled Dwarven warrior to help you battle the forces",
+ "of Morgoth"
+ }
+} \ No newline at end of file