summaryrefslogtreecommitdiff
path: root/world/map/conf/magic-level2.sex
diff options
context:
space:
mode:
authormekolat <mekolat@gmail.com>2014-07-09 23:00:02 -0400
committermekolat <mekolat@gmail.com>2014-07-10 20:46:17 -0400
commitac8128e029378c5f66f52062262a83b919a17030 (patch)
tree5032fc91b0659c8d72707a44f6b0eb3a490920b6 /world/map/conf/magic-level2.sex
parenta3f589a47c5f32cfe42316608da367792cadda1f (diff)
downloadserverdata-ac8128e029378c5f66f52062262a83b919a17030.tar.gz
serverdata-ac8128e029378c5f66f52062262a83b919a17030.tar.bz2
serverdata-ac8128e029378c5f66f52062262a83b919a17030.tar.xz
serverdata-ac8128e029378c5f66f52062262a83b919a17030.zip
Split magic files
Diffstat (limited to 'world/map/conf/magic-level2.sex')
-rw-r--r--world/map/conf/magic-level2.sex1447
1 files changed, 1447 insertions, 0 deletions
diff --git a/world/map/conf/magic-level2.sex b/world/map/conf/magic-level2.sex
new file mode 100644
index 00000000..af805160
--- /dev/null
+++ b/world/map/conf/magic-level2.sex
@@ -0,0 +1,1447 @@
+"--------------------------------------------------------------------------------"
+"Level 1 spells"
+"--------------------------------------------------------------------------------"
+(SPELL () make-arrows "#kularzufrill" ()
+ (LET level 1)
+ (LET school TRANSMUTE)
+ (=>
+ (GUARD
+ (MANA 8)
+ (CASTTIME 5000)
+ (REQUIRE
+ (>
+ (skill caster MAGIC)
+ level))
+ (REQUIRE
+ (>
+ (skill caster school)
+ level))
+ (COMPONENTS "RawLog"))
+ (EFFECT
+ (CALL adjust_spellpower school)
+ (CALL default_effect)
+ (CALL create_item "Arrow"
+ (+
+ (+ 1
+ (/ spellpower 40))
+ (/
+ (random
+ (max 1
+ (- 800 spellpower)))
+ 80))
+ "WarpedLog"
+ 500)
+ (CALL gain_xp 1 11))))
+
+(SPELL () make-shirt "#patmuploo" ()
+ (LET level 1)
+ (LET school TRANSMUTE)
+ (=>
+ (GUARD
+ (MANA 25)
+ (CASTTIME 5000)
+ (REQUIRE
+ (>
+ (skill caster MAGIC)
+ level))
+ (REQUIRE
+ (>
+ (skill caster school)
+ level))
+ (COMPONENTS
+ (5 "CottonCloth")))
+ (EFFECT
+ (CALL adjust_spellpower school)
+ (CALL default_effect)
+ (CALL create_item "CottonShirt" 1 "CottonCloth" 425)
+ (CALL gain_xp 2 12))))
+
+(SPELL () make-tanktop "#patloree" ()
+ (LET level 1)
+ (LET school TRANSMUTE)
+ (=>
+ (GUARD
+ (MANA 25)
+ (CASTTIME 5000)
+ (REQUIRE
+ (>
+ (skill caster MAGIC)
+ level))
+ (REQUIRE
+ (>
+ (skill caster school)
+ level))
+ (COMPONENTS
+ (4 "CottonCloth")))
+ (EFFECT
+ (CALL adjust_spellpower school)
+ (CALL default_effect)
+ (CALL create_item "TankTop" 1 "CottonCloth" 350)
+ (CALL gain_xp 2 13))))
+
+(SPELL () make-short-tanktop "#patviloree" ()
+ (LET level 1)
+ (LET school TRANSMUTE)
+ (=>
+ (GUARD
+ (MANA 25)
+ (CASTTIME 5000)
+ (REQUIRE
+ (>
+ (skill caster MAGIC)
+ level))
+ (REQUIRE
+ (>
+ (skill caster school)
+ level))
+ (COMPONENTS
+ (3 "CottonCloth")))
+ (EFFECT
+ (CALL adjust_spellpower school)
+ (CALL default_effect)
+ (CALL create_item "ShortTankTop" 1 "CottonCloth" 250)
+ (CALL gain_xp 2 14))))
+
+(SPELL () make-iron-powder "#zukminbirf" ()
+ (LET level 1)
+ (LET school TRANSMUTE)
+ (=>
+ (GUARD
+ (MANA 8)
+ (CASTTIME 5000)
+ (REQUIRE
+ (>
+ (skill caster MAGIC)
+ level))
+ (REQUIRE
+ (>
+ (skill caster school)
+ level))
+ (COMPONENTS "IronOre"))
+ (EFFECT
+ (CALL adjust_spellpower school)
+ (CALL default_effect)
+ (CALL create_item "IronPowder"
+ (+
+ (+ 1
+ (/ spellpower 140))
+ (/
+ (random
+ (max 1
+ (- 900 spellpower)))
+ 220))
+ "IronOre"
+ 700)
+ (CALL gain_xp 3 15))))
+
+(SPELL () make-concentration-potion "#loshira" ()
+ (LET level 1)
+ (LET school TRANSMUTE)
+ (=>
+ (GUARD
+ (MANA 8)
+ (CASTTIME 5000)
+ (REQUIRE
+ (>
+ (skill caster MAGIC)
+ level))
+ (REQUIRE
+ (>
+ (skill caster school)
+ level))
+ (COMPONENTS "BottleOfWater"
+ (2 "CobaltHerb")
+ (2 "PinkPetal")))
+ (EFFECT
+ (CALL adjust_spellpower school)
+ (CALL default_effect)
+ (CALL create_item
+ (if_then_else
+ (<
+ (random
+ (+ 2000 experience))
+ experience)
+ "ConcentrationPotion"
+ "DarkConcentrationPotion")
+ 1
+ (if_then_else
+ (random 2)
+ "DilutedConcentrationPot"
+ "DarkConcentrationPotion")
+ 2000)
+ (IF success
+ (CALL set_var MAGIC_FLAGS 1 MFLAG_MADE_CONC_POTION_SHIFT 1))
+ (CALL gain_xp 4 16))))
+
+(SPELL () merge-concentration-potions "#skrimp" ()
+ (LET level 1)
+ (LET school TRANSMUTE)
+ (=>
+ (GUARD
+ (MANA 8)
+ (CASTTIME 5000)
+ (REQUIRE
+ (>
+ (skill caster MAGIC)
+ level))
+ (REQUIRE
+ (>
+ (skill caster school)
+ level))
+ (COMPONENTS "DarkConcentrationPotion" "DilutedConcentrationPot"))
+ (EFFECT
+ (CALL adjust_spellpower school)
+ (CALL default_effect)
+ (CALL create_item "ConcentrationPotion" 1 "DilutedConcentrationPot" 1000)
+ (message caster
+ (+ "success = " success))
+ (IF success
+ (CALL set_var MAGIC_FLAGS 1 MFLAG_MADE_CONC_POTION_SHIFT 1))
+ (CALL gain_xp 4 17))))
+
+(SPELL () lay-on-hands "#inma" (STRING target)
+ (LET level 1)
+ (LET school LIFE)
+ (=>
+ (GUARD
+ (MANA 10)
+ (CASTTIME 500)
+ (REQUIRE
+ (>
+ (hp caster)
+ (/
+ (max_hp caster)
+ 20)))
+ (REQUIRE
+ (>
+ (skill caster MAGIC)
+ level))
+ (REQUIRE
+ (>
+ (skill caster school)
+ level))
+ (REQUIRE
+ (if_then_else
+ (failed
+ (pc target))
+ 1
+ (&&
+ (&&
+ (&&
+ (!=
+ (pc target)
+ caster)
+ (<
+ (rdistance
+ (location caster)
+ (location
+ (pc target)))
+ (+ 2
+ (/
+ (+
+ (* 12
+ (sqrt spellpower))
+ spellpower)
+ 100))))
+ (not
+ (running_status_update
+ (pc target)
+ SC_HALT_REGENERATE)))
+ (not
+ (is_equipped
+ (pc target)
+ "MagicGMTopHat"))))))
+ (EFFECT
+ (CALL adjust_spellpower school)
+ (IF (not target)
+ (ABORT))
+ (IF (failed
+ (pc target))
+ (BLOCK
+ (IF (&&
+ (||
+ (== target "mouboo")
+ (== target "Mouboo"))
+ (<
+ (rdistance
+ (location caster)
+ (location
+ (npc "Mouboo")))
+ (+ 2
+ (/ spellpower 100))))
+ (BLOCK
+ (SET needed 1000)
+ (SCRIPT "{
+ set @spell, 1;
+ callfunc \"QuestMoubooHeal\";
+ }"))
+ (ABORT)))
+ (BLOCK
+ (SET target
+ (pc target))
+ (SET needed
+ (-
+ (max_hp target)
+ (hp target)))))
+ (SET pay_fraction
+ (max 80
+ (- 200
+ (+
+ (vit caster)
+ (/ spellpower 10))))) "Pay at least 40%"
+ (SET payment
+ (/
+ (* needed pay_fraction)
+ 200))
+ (SET available
+ (-
+ (hp caster)
+ (/
+ (max_hp caster)
+ 20)))
+ (IF (< payment available)
+ (SET power needed)
+ (BLOCK
+ (SET payment available)
+ (SET power
+ (/
+ (* available 200)
+ pay_fraction))))
+ (CALL gain_heal_xp power 1 1 3)
+ (CALL quickheal target power)
+ (SET t 5000) "with dark magic skill you pay 1/20 of max hp but the regenerate cooldown is cut in half"
+ (SET school DARK)
+ (SET h
+ (*
+ (/
+ (max_hp caster)
+ 20)
+ -1))
+ (IF (>
+ (skill caster school)
+ level)
+ (itemheal caster h 0))
+ (IF (>
+ (skill caster school)
+ level)
+ (SET t 10000))
+ (status_change caster SC_HALT_REGENERATE 0 0 0 0 t)
+ (CALL gain_xp
+ (min 4
+ (/ payment 100))
+ 18))))
+
+(SPELL () lightning-strike "#ingrav" ()
+ (LET level 1)
+ (LET school WAR)
+ (=>
+ (GUARD
+ (MANA 20)
+ (CASTTIME 1000)
+ (REQUIRE
+ (>
+ (skill caster MAGIC)
+ level))
+ (REQUIRE
+ (>
+ (skill caster school)
+ level))
+ (GUARD
+ (OR
+ (REQUIRE
+ (>
+ (skill caster school)
+ 3))
+ (COMPONENTS "IronPowder"))))
+ (EFFECT
+ (CALL adjust_spellpower school)
+ (SET damage spellpower)
+ (SET damage_bonus
+ (+ 1
+ (/ spellpower 2)))
+ (CALL install_attack_spell
+ (+ 1
+ (/ spellpower 90))
+ 3000
+ 8
+ 31)
+ (CALL gain_xp 2 19)
+ (ATTRIGGER
+ (CALL attack_check target)
+ (SET in_rain 0)
+ (SET area
+ (location caster))
+ (FOREACH SPELL s (rbox
+ (location caster)
+ (+ MAX_RAIN_SPELL_RADIUS 1)) (IF (==
+ (name_of s)
+ "rain")
+ (BLOCK
+ (IF (is_in
+ (location caster)
+ (. s area))
+ (BLOCK
+ (SET in_rain
+ (| in_rain 1))
+ (SET area
+ (+ area
+ (. s area)))))
+ (IF (is_in
+ (location target)
+ (. s area))
+ (SET in_rain
+ (| in_rain 2))))))
+ (IF (& in_rain 1)
+ (BLOCK "caster standing in the rain? This is going to be fun."
+ (SET used 0)
+ (FOREACH TARGET t area
+ (IF (>
+ (+
+ (random 200)
+ (luk caster))
+ 175)
+ (BLOCK
+ (SET used
+ (+ used 1))
+ (CALL elt_damage t
+ (/ damage 6)
+ (+ 1
+ (/ damage_bonus 3))
+ ELT_EARTH
+ ELT_WIND
+ (+ 17
+ (random 3))))))
+ (IF (||
+ (not used)
+ (<
+ (+
+ (random 200)
+ (luk caster))
+ 150))
+ (BLOCK
+ (sfx caster
+ (+ 17
+ (random 3))
+ 0)
+ (itemheal caster
+ (-
+ (- 0 damage)
+ (random damage_bonus))
+ 0))))
+ (CALL elt_damage target damage damage_bonus ELT_EARTH ELT_WIND
+ (+ 17
+ (random 3))))))))
+
+(SPELL (LOCAL) arrow-hail "#frillyar" ()
+ (LET level 1)
+ (LET school WAR)
+ (=>
+ (GUARD
+ (MANA 25)
+ (CASTTIME 5000)
+ (REQUIRE
+ (>
+ (skill caster MAGIC)
+ level))
+ (REQUIRE
+ (>
+ (skill caster school)
+ level))
+ (REQUIRE
+ (is_exterior
+ (location caster)))
+ (GUARD
+ (OR
+ (COMPONENTS
+ (20 "Arrow"))
+ (COMPONENTS
+ (20 "IronArrow"))))
+ (GUARD
+ (OR
+ (REQUIRE
+ (>
+ (skill caster school)
+ 3))
+ (COMPONENTS "SulphurPowder"))))
+ (EFFECT
+ (CALL adjust_spellpower school)
+ (CALL default_effect)
+ (CALL abort_on_area_shield
+ (location caster))
+ (SET range 7)
+ (SET area
+ (rbox
+ (awayfrom
+ (location caster)
+ (dir caster)
+ (+ 1 range))
+ range))
+ (FOREACH SPELL s (rbox
+ (awayfrom
+ (location caster)
+ (dir caster)
+ (+ 1 range))
+ (* range 2)) (IF (&&
+ (!= s self_invocation)
+ (==
+ (name_of s)
+ "arrow-hail"))
+ (BLOCK
+ (message caster "A nearby arrow hail spell absorbs your magic!")
+ (ABORT))))
+ (SET damage 125)
+ (SET damage_bonus
+ (/ spellpower 5))
+ (CALL gain_xp 2 20)
+ (FOR i 0
+ (/ spellpower 8)
+ (BLOCK
+ (FOR j 0 2
+ (BLOCK
+ (SET location
+ (random_location area))
+ (sfx location SFX_ARROW_HAIL 0)
+ (SET done 0)
+ (FOREACH TARGET target
+ (rbox location 0)
+ (BLOCK
+ (injure caster target
+ (+
+ (+ damage
+ (random damage_bonus))
+ (random damage_bonus))
+ 0)
+ (SET done 1)
+ (BREAK)))
+ (IF (&&
+ (==
+ (location caster)
+ location)
+ (not done))
+ (BLOCK
+ (itemheal caster
+ (- 0
+ (+
+ (+ damage
+ (random damage_bonus))
+ (random damage_bonus)))
+ 0)
+ (sfx caster SFX_HIT 0)))))
+ (WAIT
+ (+
+ (+ 250
+ (random 50))
+ (random 50))))))))
+
+(SPELL () magic-knuckles "#upmarmu" ()
+ (LET level 1)
+ (LET school WAR)
+ (=>
+ (GUARD
+ (MANA 20)
+ (CASTTIME 500)
+ (REQUIRE
+ (>
+ (skill caster MAGIC)
+ level))
+ (REQUIRE
+ (>
+ (skill caster school)
+ level))
+ (GUARD
+ (OR
+ (REQUIRE
+ (>
+ (skill caster school)
+ 3))
+ (COMPONENTS "Beer"))))
+ (EFFECT
+ (CALL adjust_spellpower WAR)
+ (SET str
+ (str caster))
+ (CALL install_melee_spell
+ (+ 10
+ (/ spellpower 10))
+ 1300
+ 34)
+ (ATTRIGGER
+ (CALL melee_damage target 30
+ (+ 5
+ (* str 2)))))))
+
+(SPELL (LOCAL) summon-snakes "#halhiss" ()
+ (LET level 1)
+ (LET school DARK)
+ (=>
+ (GUARD
+ (MANA 40)
+ (CASTTIME 15000)
+ (REQUIRE
+ (>
+ (skill caster MAGIC)
+ level))
+ (REQUIRE
+ (>
+ (skill caster school)
+ level))
+ (REQUIRE
+ (>
+ (script_int caster "OrumQuest")
+ 40))
+ (COMPONENTS "DarkCrystal" "SnakeEgg"))
+ (EFFECT
+ (CALL adjust_spellpower school)
+ (CALL default_effect)
+ (CALL gain_xp 3 31)
+ (CALL summon_dark_spell 1010
+ (+ 1
+ (/ spellpower 300))
+ (- 4000
+ (* spellpower 9))
+ (* spellpower 80)
+ 2))))
+
+(SPELL () toxic-dart "#phlex" ()
+ (LET level 1)
+ (LET school DARK)
+ (=>
+ (GUARD
+ (MANA 15)
+ (CASTTIME 500)
+ (REQUIRE
+ (>
+ (script_int caster "OrumQuest")
+ 37))
+ (REQUIRE
+ (>
+ (skill caster MAGIC)
+ level))
+ (GUARD
+ (OR
+ (REQUIRE
+ (>
+ (skill caster school)
+ 2))
+ (COMPONENTS
+ (2 "Root")))))
+ (EFFECT
+ (CALL adjust_spellpower school)
+ (CALL default_effect)
+ (SET damage
+ (* 5
+ (sqrt spellpower)))
+ (SET damage_bonus
+ (+ 5
+ (/
+ (level caster)
+ 3)))
+ (CALL install_attack_spell
+ (+ 3
+ (/ spellpower 75))
+ 1200
+ 4
+ 31)
+ (CALL gain_xp 3 35)
+ (ATTRIGGER
+ (CALL attack_check target)
+ (CALL elt_damage target damage damage_bonus ELT_NEUTRAL ELT_POISON 15)
+ (IF (&&
+ (is_pc target)
+ (!= caster target))
+ (status_change target SC_POISON
+ (+ 5
+ (max 15
+ (/ spellpower 15)))
+ 0
+ 0
+ 0
+ (+ 5000
+ (* spellpower 1200))))))))
+
+(SPELL (LOCAL) summon-wickedmushroom "#helorp" ()
+ (LET level 1)
+ (LET school DARK)
+ (=>
+ (GUARD
+ (MANA 35)
+ (CASTTIME 15000)
+ (REQUIRE
+ (>
+ (skill caster MAGIC)
+ level))
+ (REQUIRE
+ (>
+ (script_int caster "OrumQuest")
+ 36))
+ (REQUIRE
+ (>
+ (skill caster school)
+ level))
+ (COMPONENTS "SmallMushroom" "DarkCrystal"))
+ (EFFECT
+ (CALL adjust_spellpower school)
+ (CALL default_effect)
+ (CALL gain_xp 3 36)
+ (CALL summon_dark_spell 1106
+ (+ 1
+ (/ spellpower 250))
+ (- 4000
+ (* spellpower 9))
+ (* spellpower 80)
+ 2))))
+
+(SPELL () flying-backpack "#plugh" (PC target)
+ (LET level 1)
+ (LET school NATURE)
+ (=>
+ (GUARD
+ (MANA 12)
+ (CASTTIME 1000)
+ (REQUIRE
+ (>
+ (skill caster MAGIC)
+ level))
+ (REQUIRE
+ (>
+ (skill caster school)
+ level))
+ (GUARD
+ (OR
+ (REQUIRE
+ (>
+ (skill caster school)
+ 3))
+ (COMPONENTS "SilkCocoon")))
+ (REQUIRE
+ (<
+ (rdistance
+ (location target)
+ (location caster))
+ (+ 2
+ (/ spellpower 30)))))
+ (EFFECT
+ (CALL adjust_spellpower school)
+ (CALL default_effect)
+ (IF (!= caster target)
+ (sfx caster 2 0))
+ (status_change target SC_FLYING_BACKPACK 0 0 0 0
+ (+ 5000
+ (* spellpower 500)))
+ (message target "Your backpack is lifted by a mystical force; you no longer feel it pressing on your back.")
+ (CALL gain_xp 1 21)
+ (ATEND
+ (message target "Your backpack is no longer levitating.")
+ (sfx target 2 0)))))
+
+(SPELL () protect "#betsanc" (PC target)
+ (LET level 1)
+ (LET school NATURE)
+ (=>
+ (GUARD
+ (MANA 14)
+ (CASTTIME 1500)
+ (REQUIRE
+ (>
+ (skill caster MAGIC)
+ level))
+ (REQUIRE
+ (>
+ (skill caster school)
+ level))
+ (REQUIRE
+ (not
+ (is_equipped
+ (pc target)
+ "MagicGMTopHat")))
+ (GUARD
+ (OR
+ (REQUIRE
+ (>
+ (skill caster school)
+ 3))
+ (COMPONENTS "HardSpike")))
+ (REQUIRE
+ (<
+ (rdistance
+ (location target)
+ (location caster))
+ (+ 2
+ (/ spellpower 30)))))
+ (EFFECT
+ (CALL adjust_spellpower school)
+ (sfx target 11 0)
+ (IF (!= caster target)
+ (CALL default_effect))
+ (status_change target SC_PHYS_SHIELD
+ (+ 5
+ (max 15
+ (/ spellpower 20)))
+ 0
+ 0
+ 0
+ (+ 5000
+ (* spellpower 1000)))
+ (message target "You feel more protected.")
+ (CALL gain_xp 2 22)
+ (ATEND
+ (message target "You feel less protected.")
+ (sfx target 111 0)))))
+
+(SPELL () happy-curse "#joyplim" (PC target)
+ (LET level 1)
+ (LET school NATURE)
+ (=>
+ (GUARD
+ (MANA 13)
+ (CASTTIME 1000)
+ (REQUIRE
+ (>
+ (skill caster MAGIC)
+ level))
+ (REQUIRE
+ (>
+ (skill caster school)
+ level))
+ (GUARD
+ (OR
+ (REQUIRE
+ (>
+ (skill caster school)
+ 3))
+ (COMPONENTS "GingerBreadMan")))
+ (REQUIRE
+ (<
+ (rdistance
+ (location target)
+ (location caster))
+ (+ 1
+ (/ spellpower 100)))))
+ (EFFECT
+ (CALL adjust_spellpower school)
+ (CALL default_effect)
+ (IF (>
+ (skill caster DARK)
+ 1)
+ (FOR i 0
+ (/ spellpower 10)
+ (BLOCK
+ (emote target 5)
+ (WAIT 500)))
+ (FOR i 0
+ (/ spellpower 10)
+ (BLOCK
+ (emote target 3)
+ (WAIT 500))))
+ (CALL gain_xp 1 23))))
+
+(SPELL (LOCAL) rain "#kaflosh" ()
+ (LET level 1)
+ (LET school NATURE)
+ (=>
+ (GUARD
+ (MANA 17)
+ (CASTTIME 3000)
+ (REQUIRE
+ (>
+ (skill caster MAGIC)
+ level))
+ (REQUIRE
+ (>
+ (skill caster school)
+ level))
+ (REQUIRE
+ (is_exterior
+ (location caster)))
+ (GUARD
+ (OR
+ (REQUIRE
+ (>
+ (skill caster school)
+ 3))
+ (COMPONENTS "BottleOfWater"))))
+ (EFFECT
+ (CALL adjust_spellpower school)
+ (CALL default_effect)
+ (CALL abort_on_area_shield
+ (location caster))
+ (FOREACH SPELL s (rbox
+ (location caster)
+ (+ MAX_RAIN_SPELL_RADIUS 1)) (IF (&&
+ (!= s self_invocation)
+ (==
+ (name_of s)
+ "rain"))
+ (BLOCK
+ (message caster "A nearby raincloud absorbs your magic.")
+ (ABORT))))
+ (CALL gain_xp 1 24)
+ (SET range
+ (min MAX_RAIN_SPELL_RADIUS
+ (+ 3
+ (/
+ (min spellpower 200)
+ 30))))
+ (SET area
+ (rbox
+ (location caster)
+ range))
+ (IF (||
+ (is_in
+ (location
+ (npc "#DruidTree0#_M"))
+ area)
+ (is_in
+ (location
+ (npc "#DruidTree1#_M"))
+ area))
+ (SCRIPT "{
+ set @flag, 1;
+ callfunc \"QuestTreeTrigger\";
+ }"))
+ (IF (is_in
+ (location caster)
+ (@+
+ (@ "011-1.gat" 94 38)
+ 9
+ 7))
+ (SCRIPT "{
+ callfunc \"HalloweenQuestWaterPumpkins\";
+ }")) "Halloween quest"
+ (FOR i 0
+ (/ spellpower 3)
+ (BLOCK
+ (FOR j 0
+ (/
+ (min
+ (/ spellpower 2)
+ 200)
+ 100)
+ (BLOCK
+ (SET location
+ (random_location area))
+ (sfx location SFX_RAIN 0)
+ (FOREACH TARGET target
+ (rbox location 1)
+ (IF (==
+ (element target)
+ ELT_FIRE)
+ (injure caster target
+ (+ 2
+ (random
+ (+ 5
+ (/ spellpower 15))))
+ 0)))))
+ (WAIT
+ (+ 400
+ (random 100))))))))
+
+(PROCEDURE shear-drop (target target2 item prob)
+ (IF (||
+ (== target name)
+ (== target2 name))
+ (BLOCK
+ (IF (< score prob)
+ (drop_item_for place item 1 60000 caster 5000)))))
+
+(PROCEDURE shear-drop2 (target target2 item prob item2 prob2)
+ (IF (||
+ (== target name)
+ (== target2 name))
+ (BLOCK
+ (IF (< score prob)
+ (drop_item_for place item 1 60000 caster 5000)
+ (CALL shear-drop target target2 item2
+ (+ prob2 prob))))))
+
+(PROCEDURE shear-drop3 (target target2 item prob item2 prob2 item3 prob3)
+ (IF (||
+ (== target name)
+ (== target2 name))
+ (BLOCK
+ (IF (< score prob)
+ (drop_item_for place item 1 60000 caster 5000)
+ (CALL shear-drop2 target target2 item2
+ (+ prob2 prob)
+ item3
+ (+ prob3 prob))))))
+
+(SPELL () shear "#chipchip" ()
+ (LET level 1)
+ (LET school NATURE)
+ (=>
+ (GUARD
+ (MANA 23)
+ (CASTTIME 1000)
+ (REQUIRE
+ (>
+ (skill caster MAGIC)
+ level))
+ (REQUIRE
+ (>
+ (skill caster school)
+ level)))
+ (EFFECT
+ (CALL adjust_spellpower school)
+ (CALL default_effect)
+ (override_attack caster 1 2000 1 ATTACK_ICON_SHEARING 30 0)
+ (ATTRIGGER
+ (IF (not
+ (is_pc target))
+ (BLOCK
+ (SET score
+ (random
+ (- 1000
+ (random spellpower)))) "lower score -> more valuable item"
+ (SET name
+ (name_of target))
+ (SET place
+ (random_location
+ (rbox
+ (location target)
+ 1)))
+ (IF (running_status_update target SC_SHEARED)
+ (ABORT))
+ (status_change target SC_SHEARED 0 0 0 0 600000) "10 minutes"
+ (CALL shear-drop "Fluffy" "Fluffy" "WhiteFur" 300)
+ (CALL shear-drop "EasterFluffy" "Easter Fluffy" "WhiteFur" 300)
+ (CALL shear-drop "SpikyMushroom" "Spiky Mushroom" "HardSpike" 250)
+ (CALL shear-drop "Mouboo" "Mouboo" "CottonCloth" 175)
+ (CALL shear-drop "Cobalt" "CobaltPlant" "CobaltHerb" 700)
+ (CALL shear-drop "Alizarin" "AlizarinPlant" "AlizarinHerb" 700)
+ (CALL shear-drop "Gamboge" "GambogePlant" "GambogeHerb" 700)
+ (CALL shear-drop "Mauve" "MauvePlant" "MauveHerb" 700)
+ (CALL shear-drop "SilkWorm" "Silkworm" "SilkCocoon" 300)
+ (CALL shear-drop "Pinkie" "Pinkie" "PinkAntenna" 180)
+ (IF (&&
+ (||
+ (||
+ (== name "Fluffy")
+ (== name "Mouboo"))
+ (== name "Pinkie"))
+ (random 2))
+ (SCRIPT "{
+ set @value, 1;
+ callfunc \"QuestSagathaHappy\";
+ }"))))))))
+
+(SPELL () barrier "#asorm" (PC target)
+ (LET level 1)
+ (LET school ASTRAL)
+ (=>
+ (GUARD
+ (MANA 16)
+ (CASTTIME 1000)
+ (REQUIRE
+ (>
+ (skill caster MAGIC)
+ level))
+ (REQUIRE
+ (>
+ (skill caster school)
+ level))
+ (REQUIRE
+ (not
+ (is_equipped
+ (pc target)
+ "MagicGMTopHat")))
+ (GUARD
+ (OR
+ (REQUIRE
+ (>
+ (skill caster school)
+ 3))
+ (COMPONENTS "SmallMushroom")))
+ (REQUIRE
+ (<
+ (rdistance
+ (location target)
+ (location caster))
+ (+ 2
+ (/ spellpower 30)))))
+ (EFFECT
+ (CALL adjust_spellpower school)
+ (sfx target SFX_BARRIER 0)
+ (IF (!= caster target)
+ (CALL default_effect))
+ (status_change target SC_MBARRIER
+ (+ 20
+ (max 30
+ (/ spellpower 8)))
+ 0
+ 0
+ 0
+ (+ 2000
+ (* spellpower 200)))
+ (message target "You are surrounded by a magical barrier.")
+ (CALL gain_xp 3 25)
+ (ATEND
+ (message target "Your magical barrier dissipates.")
+ (sfx target SFX_UNBARRIER 0)))))
+
+(SPELL (LOCAL) summon-spiky-mushrooms "#kalrenk" ()
+ (LET level 1)
+ (LET school ASTRAL)
+ (=>
+ (GUARD
+ (MANA 33)
+ (CASTTIME 20000)
+ (REQUIRE
+ (>
+ (skill caster MAGIC)
+ level))
+ (REQUIRE
+ (>
+ (skill caster school)
+ level))
+ (COMPONENTS "HardSpike" "Root"))
+ (EFFECT
+ (CALL adjust_spellpower school)
+ (CALL default_effect)
+ (CALL gain_xp 1 26)
+ (CALL summon_spell 1019
+ (+ 1
+ (/ spellpower 120))
+ (- 5000
+ (* spellpower 9))
+ (* spellpower 400)
+ 2))))
+
+(SPELL (LOCAL) summon-fluffies "#kalakarenk" ()
+ (LET level 1)
+ (LET school ASTRAL)
+ (=>
+ (GUARD
+ (MANA 39)
+ (CASTTIME 20000)
+ (REQUIRE
+ (>
+ (skill caster MAGIC)
+ level))
+ (REQUIRE
+ (>
+ (skill caster school)
+ level))
+ (COMPONENTS "WhiteFur" "Root"))
+ (EFFECT
+ (CALL adjust_spellpower school)
+ (CALL default_effect)
+ (CALL gain_xp 1 27)
+ (CALL summon_spell 1020
+ (+
+ (+ 1
+ (/ spellpower 170))
+ (/ spellpower 430))
+ (- 5000
+ (* spellpower 8))
+ (* spellpower 350)
+ 2))))
+
+(SPELL (LOCAL) summon-mouboo "#kalboo" ()
+ (LET level 1)
+ (LET school ASTRAL)
+ (=>
+ (GUARD
+ (MANA 35)
+ (CASTTIME 20000)
+ (REQUIRE
+ (>
+ (skill caster MAGIC)
+ level))
+ (REQUIRE
+ (>
+ (skill caster school)
+ level))
+ (COMPONENTS "MoubooFigurine" "Root"))
+ (EFFECT
+ (CALL adjust_spellpower school)
+ (CALL default_effect)
+ (CALL gain_xp 2 37)
+ (CALL summon_spell 1028
+ (+ 1
+ (/ spellpower 270))
+ (- 4000
+ (* spellpower 9))
+ (* spellpower 100)
+ 2))))
+
+(SPELL (LOCAL) summon-pinkie "#kalgina" ()
+ (LET level 1)
+ (LET school ASTRAL)
+ (=>
+ (GUARD
+ (MANA 35)
+ (CASTTIME 20000)
+ (REQUIRE
+ (>
+ (skill caster MAGIC)
+ level))
+ (REQUIRE
+ (>
+ (skill caster school)
+ level))
+ (COMPONENTS "PinkAntenna" "Root"))
+ (EFFECT
+ (CALL adjust_spellpower school)
+ (CALL default_effect)
+ (CALL gain_xp 2 38)
+ (CALL summon_spell 1018
+ (+ 1
+ (/ spellpower 120))
+ (- 5000
+ (* spellpower 9))
+ (* spellpower 150)
+ 2))))
+
+(SPELL () detect-players "#inwilt" ()
+ (LET level 1)
+ (LET school MAGIC)
+ (=>
+ (GUARD
+ (MANA 7)
+ (CASTTIME 300)
+ (REQUIRE
+ (>
+ (skill caster MAGIC)
+ level))
+ (REQUIRE
+ (>
+ (skill caster school)
+ level)))
+ (EFFECT
+ (CALL adjust_spellpower school)
+ (CALL default_effect)
+ (SET message "")
+ (FOREACH PC target
+ (rbox
+ (location caster)
+ (/ spellpower 2))
+ (IF (&&
+ (&&
+ (!= target caster)
+ (not
+ (running_status_update
+ (pc target)
+ SC_HIDE)))
+ (not
+ (status_option target SO_GMINVISIBLE)))
+ (BLOCK
+ (IF (!= message "")
+ (SET message
+ (+ message ", ")))
+ (SET message
+ (+ message
+ (name_of target)))
+ (IF (> spellpower 99)
+ (SET message
+ (+
+ (+
+ (+ message "(")
+ (level target))
+ ")"))))))
+ (IF (== message "")
+ (message caster "You sense no-one else nearby.")
+ (message caster
+ (+ "You sense the following: " message))))))
+
+(SPELL () enchant-lifestone "#manpahil" ()
+ (LET level 1)
+ (LET school MAGIC)
+ (=>
+ (GUARD
+ (MANA 15)
+ (CASTTIME 4000)
+ (REQUIRE
+ (>
+ (skill caster MAGIC)
+ level))
+ (REQUIRE
+ (>
+ (skill caster school)
+ level))
+ (GUARD
+ (OR
+ (OR
+ (COMPONENTS "BugLeg")
+ (COMPONENTS "MaggotSlime"))
+ (COMPONENTS "MauveHerb" "AlizarinHerb" "CobaltHerb" "GambogeHerb"))))
+ (EFFECT
+ (CALL adjust_spellpower school)
+ (CALL default_effect)
+ (create_item caster "Lifestone" 1)
+ (CALL gain_xp 1 28))))
+
+(SPELL () sense-spouse "#inzuwilt" ()
+ (LET level 1)
+ (LET school MAGIC)
+ (=>
+ (GUARD
+ (MANA 7)
+ (CASTTIME 400)
+ (REQUIRE
+ (>
+ (skill caster MAGIC)
+ level))
+ (REQUIRE
+ (>
+ (skill caster school)
+ level))
+ (REQUIRE
+ (is_married caster))
+ (REQUIRE
+ (is_equipped caster "WeddingRing")))
+ (EFFECT
+ (CALL adjust_spellpower school)
+ (CALL default_effect)
+ (IF (||
+ (failed
+ (partner caster))
+ (not
+ (is_equipped
+ (partner caster)
+ "WeddingRing")))
+ (BLOCK
+ (message caster "You cannot sense your partner.")
+ (ABORT)))
+ (SET partner
+ (partner caster))
+ (SET name
+ (name_of partner))
+ (IF (||
+ (is_dead partner)
+ (!=
+ (map_nr
+ (location partner))
+ (map_nr
+ (location caster))))
+ (BLOCK
+ (message caster
+ (+
+ (+ "You cannot sense " name)
+ " nearby."))
+ (ABORT)))
+ (IF (&&
+ (>
+ (map_level
+ (location partner))
+ 2)
+ (<
+ (map_level
+ (location caster))
+ (map_level
+ (location partner))))
+ (BLOCK
+ (message caster
+ (+
+ (+ "You sense " name)
+ " somewhere below."))
+ (ABORT)))
+ (IF (&&
+ (>
+ (map_level
+ (location caster))
+ 2)
+ (<
+ (map_level
+ (location partner))
+ (map_level
+ (location caster))))
+ (BLOCK
+ (message caster
+ (+
+ (+ "You sense " name)
+ " somewhere above."))
+ (ABORT)))
+ (IF (!=
+ (map_level
+ (location caster))
+ (map_level
+ (location partner)))
+ (message caster
+ (+
+ (+ "You sense " name)
+ " somewhere in the vincinity."))
+ (BLOCK
+ (SET distance
+ (rdistance
+ (location caster)
+ (location partner)))
+ (SET dir
+ (dir_towards
+ (location caster)
+ (location partner)
+ 1))
+ (IF (< distance 3)
+ (message caster
+ (+
+ (+ "You sense " name)
+ " right next to you."))
+ (IF (< distance 30)
+ (message caster
+ (+
+ (+
+ (+
+ (+ "You sense " name)
+ " close by, towards the ")
+ dir)
+ "."))
+ (IF (< distance 200)
+ (message caster
+ (+
+ (+
+ (+
+ (+ "You sense " name)
+ " nearby, towards the ")
+ dir)
+ "."))
+ (message caster
+ (+
+ (+
+ (+
+ (+ "You sense " name)
+ " in the ")
+ dir)
+ "."))))))))))
+
+(SPELL () hide "#anwiltyp" (PC target)
+ (LET level 1)
+ (LET school ASTRAL)
+ (=>
+ (GUARD
+ (MANA 11)
+ (CASTTIME 1000)
+ (REQUIRE
+ (>
+ (skill caster MAGIC)
+ level))
+ (REQUIRE
+ (>
+ (skill caster school)
+ level))
+ (GUARD
+ (OR
+ (REQUIRE
+ (>
+ (skill caster school)
+ 3))
+ (COMPONENTS "CottonCloth")))
+ (REQUIRE
+ (<
+ (rdistance
+ (location target)
+ (location caster))
+ (+ 2
+ (/ spellpower 30)))))
+ (EFFECT
+ (CALL adjust_spellpower school)
+ (sfx target SFX_DEFAULT 0)
+ (IF (!= caster target)
+ (CALL default_effect))
+ (status_change target SC_HIDE 0 0 0 0
+ (+ 5000
+ (* spellpower 2500)))
+ (CALL gain_xp 2 29)
+ (message target "You are hidden!")
+ (IF (!= caster target)
+ (message caster "You hid someone!"))
+ (ATEND
+ (message target "You are no longer hidden.")))))