Listen to a special audio message from Bill Roper to the Hive Workshop community (Bill is a former Vice President of Blizzard Entertainment, Producer, Designer, Musician, Voice Actor) 🔗Click here to hear his message!
This is part of a series of spells I will be making, they are mostly basic GUI, thing is I know some people have trouble coming up with ideas for spells so I decided to pick a theme and make a little spellpack related to that theme, this is my first spellpack ever so don't expect anything crazy. Hopefully I will do some rad stuff in the future, it is all about practice!
Elune's Wrath
The priestess calls upon The Elune's owls to aid her in battle, first hit deals minor damage and then everytime an owl hits the target it will deal more damage plus the hero's raw agility.
Level 1 - 45 initial, 80 per wave and 3 owls.
Level 2 - 85 initial, 160 per wave and 6 owls.
Level 3 - 125 initial, 240 per wave and 9 owls.
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Elune's Wrath
Actions
-------- Index starts --------
-------- turning the loop trigger on --------
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
IndexSize Equal to 0
Then - Actions
Trigger - Turn on EWLoop <gen>
Else - Actions
-------- Increase the index size --------
Set IndexSize = (IndexSize + 1)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
IndexSize Greater than IndexMaxSize
Then - Actions
Set Index[IndexSize] = IndexSize
Set IndexMaxSize = IndexSize
Else - Actions
-------- index ends --------
Set CurrentIndex = Index[IndexSize]
-------- This first variable sets the location of the targeted unit. --------
Set EWTargetPoint1[CurrentIndex] = (Position of (Target unit of ability being cast))
-------- Now we set the targeted unit. --------
Set EWTargeted[CurrentIndex] = (Target unit of ability being cast)
-------- The unit that is casting the spell. --------
Set EWCaster[CurrentIndex] = (Triggering unit)
-------- This is just eye candy. --------
-------- The special effect that the targeted unit is going to have. --------
Special Effect - Create a special effect attached to the overhead of EWTargeted[CurrentIndex] using Abilities\Spells\NightElf\Starfall\StarfallCaster.mdl
Set EWSFXTarget[CurrentIndex] = (Last created special effect)
-------- More eye candy. --------
-------- The special effect that the caster is going to have. --------
Special Effect - Create a special effect attached to the overhead of EWCaster[CurrentIndex] using units\nightelf\OwlSCOUT\OwlSCOUT.mdl
Set EWSFXCaster[CurrentIndex] = (Last created special effect)
-------- And now we start setting up he waves and damage on the spell. --------
-------- This is the wave count formula, it divides the hero's agiliy for 10 and then uses the product of that division as the wave amount. --------
Set EWWaves[CurrentIndex] = (3 x (Level of (Ability being cast) for (Triggering unit)))
-------- This is the raw damage that each wave is going to deal. --------
Set EWDmgPerWave[CurrentIndex] = ((80 x (Level of (Ability being cast) for EWCaster[CurrentIndex])) + (Agility of EWCaster[CurrentIndex] (Include bonuses)))
Events
Time - Every 0.20 seconds of game time
Conditions
Actions
For each (Integer IndexLoop) from 1 to IndexSize, do (Actions)
Loop - Actions
Set CurrentIndex = Index[IndexLoop]
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Real(EWWaves[CurrentIndex])) Greater than 0.00
Then - Actions
Set EWTargetPoint1[CurrentIndex] = (Position of EWTargeted[CurrentIndex])
Set EWTargeted[CurrentIndex] = EWTargeted[CurrentIndex]
Set EWCaster[CurrentIndex] = EWCaster[CurrentIndex]
-------- Every 0.20 seconds a new wave is going to come down, this variable allows the trigger to know that a wave just went off. --------
-------- that way the spell actually stops, if you remove this variable the spell will go on forever. --------
Set EWWaves[CurrentIndex] = (EWWaves[CurrentIndex] - 1)
Set EWRandomLoc[CurrentIndex] = (EWTargetPoint1[CurrentIndex] offset by 400.00 towards (Random angle) degrees)
-------- We create the dummy a few inches away from the targeted unit. make sure you set this to elune's wrath unit --------
Unit - Create 1 Elune's Wrath for (Owner of EWCaster[CurrentIndex]) at EWRandomLoc[CurrentIndex] facing EWTargetPoint1[CurrentIndex]
-------- More eye candy --------
-------- This is the SFX that is going to appear when the unit is created, like a spawning effect. --------
Special Effect - Create a special effect attached to the chest of (Last created unit) using Abilities\Weapons\DemonHunterMissile\DemonHunterMissile.mdl
Special Effect - Destroy (Last created special effect)
-------- And more eye candy --------
-------- This SFX is the one that will follow the unit until it hits it target. --------
Special Effect - Create a special effect attached to the origin of (Last created unit) using Abilities\Weapons\DragonHawkMissile\DragonHawkMissile.mdl
Special Effect - Destroy (Last created special effect)
-------- Lowering the flying height of the spawned unit. --------
Animation - Change (Last created unit) flying height to 100.00 at 900.00
-------- Ordering the unit to move towards the targetd unit. --------
Unit - Order (Last created unit) to Move To EWTargetPoint1[CurrentIndex]
-------- Adding a expiration timer to the spawned unit, that way the unit is actually removed and it does not stay in-game forever. --------
Unit - Make (Last created unit) Explode on death
Unit - Add a 0.80 second Generic expiration timer to (Last created unit)
Unit - Make (Last created unit) Explode on death
-------- This is the ending part of the spell --------
-------- Eye candy! --------
-------- This is the explosion that the unit is going to make when it strikes the targeted unit. --------
Special Effect - Create a special effect attached to the origin of (Last created unit) using Abilities\Spells\NightElf\Blink\BlinkCaster.mdl
Special Effect - Destroy (Last created special effect)
-------- And finally, we damage the unit. --------
Unit - Cause EWCaster[CurrentIndex] to damage EWTargeted[CurrentIndex], dealing (Real(EWDmgPerWave[CurrentIndex])) damage of attack type Spells and damage type Universal
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
EWWaves[CurrentIndex] Equal to 0
Then - Actions
-------- Destroying the caster's SFX and the targeted units SFX. --------
Special Effect - Destroy EWSFXTarget[CurrentIndex]
Special Effect - Destroy EWSFXCaster[CurrentIndex]
-------- Turn the trigger again off if the index_size is below 0... --------
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
IndexSize Equal to 0
Then - Actions
Trigger - Turn off (This trigger)
Skip remaining actions
Else - Actions
Elune's Savior
The Priestess calls down a giant owl to deal massive damage on a targeted location were she also casts small enchanting magic overtime until the owl hits. Each wave of magic deals initial damage and then burns enemies for 5 seconds.
Level 1 - 15 wave damage, 300 damage on impact and 50% mov/attack speed reduction.
Level 2 - 25 wave damage, 500 damage on impact and 100% mov/attack speed reduction.
Level 3 - 35 wave damage, 700 damage on impact and 150% mov/attack speed reduction.
FOEExecute
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Elune's Savior
Actions
-------- Making sure your servant is special, the only one. --------
Set FOEAmount = (FOEAmount + 1)
-------- The maximum amount of servants allowed in-game at the same time. --------
Set FOEAmountMax = 696969
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
FOEAmount Greater than FOEAmountMax
Then - Actions
Set FOEAmount = 1
Else - Actions
-------- The unit variables --------
Set FOECaster[FOEAmount] = (Casting unit)
Set FOETargetedArea = (Target point of ability being cast)
-------- Creating the unit, make sure u change this to the elune's savior unit --------
Unit - Create 1 Elune's Savior for (Owner of FOECaster[FOEAmount]) at (FOETargetedArea offset by 900.00 towards (Random angle) degrees) facing FOETargetedArea
Set FOEUnit[FOEAmount] = (Last created unit)
Animation - Change (Last created unit) flying height to 100.00 at 200.00
Animation - Change (Last created unit)'s size to (200.00%, 200.00%, 200.00%) of its original size
Unit - Order (Last created unit) to Move To FOETargetedArea
Unit - Add a 3.60 second Generic expiration timer to (Last created unit)
Elune's Servant
Fires elune's servant that when it hits it deals 100 damage + agility of the hero multiplied by the level of the ability, it also slows movement and attack speed of units that hits.
Level 1 - Agility x 1 and 50% mov and attack speed.
Level 2 - Agility x 2.and 50% mov and attack speed
Level 3 - Agility x 3 and 50% mov and attack speed.
ESExecute
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Elune's Servant
Actions
-------- Making sure your servant is special, the only one. --------
Set ESCounts = (ESCounts + 1)
-------- The maximum amount of servants allowed in-game at the same time. --------
Set ESCountMax = 696969
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
ESCounts Greater than ESCountMax
Then - Actions
Set ESCounts = 1
Else - Actions
-------- The unit variables --------
Set ESCaster[ESCounts] = (Casting unit)
-------- The damage multiplier --------
Set ESDamage[ESCounts] = (100 + ((Agility of ESCaster[ESCounts] (Include bonuses)) x (Level of Elune's Servant for ESCaster[ESCounts])))
Set ESTargetedArea = (Target point of ability being cast)
Set ESAngle = (Angle from ESCastersLocation to ESTargetedArea)
Set ESCastersLocation = (Position of ESCaster[ESCounts])
-------- The duration of the servant, how long it will be on the air. --------
Set ESDuration[ESCounts] = (4 + (Level of Elune's Servant for ESCaster[ESCounts]))
-------- Creating the unit, make sure u change this to the deadly precision unit --------
Unit - Create 1 Elune's Servant for (Owner of ESCaster[ESCounts]) at ESCastersLocation facing (Facing of ESCaster[ESCounts]) degrees
Unit - Add a 3.00 second Generic expiration timer to (Last created unit)
Unit Group - Add (Last created unit) to ESStartGroup
Unit - Set the custom value of (Last created unit) to ESCounts
Unit Group - Pick every unit in ESStartGroup and do (Actions)
Loop - Actions
Set ESValue = (Custom value of (Picked unit))
Set ESDummy = (Position of (Picked unit))
-------- On this next action you can change the speed, i recomend you leave it as it is, because it might get sloppy --------
Set ESMov = (ESDummy offset by 20.00 towards (Facing of ESCaster[ESCounts]) degrees)
Unit - Move (Picked unit) instantly to ESMov, facing (Facing of ESCaster[ESCounts]) degrees
Set ESGroup = (Units within 150.00 of ESMov matching ((((Matching unit) is A structure) Not equal to True) and ((((Matching unit) is alive) Equal to True) and (((Matching unit) belongs to an enemy of (Owner of ESCaster[ESValue])) Equal to True))))
Unit Group - Pick every unit in ESGroup and do (Actions)
Loop - Actions
-------- The SFX when it hits --------
Special Effect - Create a special effect at (Position of (Picked unit)) using Abilities\Spells\NightElf\Blink\BlinkCaster.mdl
Special Effect - Destroy (Last created special effect)
Unit - Cause ESCaster[ESCounts] to damage (Picked unit), dealing (Real(ESDamage[ESCounts])) damage of attack type Pierce and damage type Normal
-------- Down here set up the dummy to cast the slow --------
Set ESTargetLoc[ESCounts] = (Position of (Picked unit))
-------- set the dummy unit here --------
Unit - Create 1 Dummy for (Owner of ESCaster[ESCounts]) at ESTargetLoc[ESCounts] facing Default building facing degrees
-------- set DS Clap here --------
Unit - Add DS Clap (DUMMY) to (Last created unit)
Unit - Add a (Real(ESDuration[ESCounts])) second Generic expiration timer to (Last created unit)
Unit - Order (Last created unit) to Human Mountain King - Thunder Clap
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
(Number of units in ESGroup) Greater than 0
Then - Actions
Special Effect - Create a special effect at (Position of (Picked unit)) using Abilities\Spells\Undead\ReplenishMana\ReplenishManaCaster.mdl
Unit - Kill (Picked unit)
Unit Group - Remove (Picked unit) from ESStartGroup
12th Dec 2015
IcemanBo: Too long as NeedsFix. Rejected.
Elune's Spellpack v1.01b | Reviewed by Maker | 28th May 2013
NEEDS FIX
Use dynamic indexing for Elune's Servant and Elune's Savior
ES Loop has location leaks, so does...
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
IndexSize Equal to 0
Then - Actions
Trigger - Turn on EWLoop <gen>
Else - Actions
-------- Increase the index size --------
Set IndexSize = (IndexSize + 1)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
IndexSize Greater than IndexMaxSize
Then - Actions
Set Index[IndexSize] = IndexSize
Set IndexMaxSize = IndexSize
Else - Actions
-------- index ends --------
Set CurrentIndex = Index[IndexSize]
-------- This first variable sets the location of the targeted unit. --------
Set EWTargetPoint1[CurrentIndex] = (Position of (Target unit of ability being cast))
-------- Now we set the targeted unit. --------
Set EWTargeted[CurrentIndex] = (Target unit of ability being cast)
-------- The unit that is casting the spell. --------
Set EWCaster[CurrentIndex] = (Triggering unit)
-------- This is just eye candy. --------
-------- The special effect that the targeted unit is going to have. --------
Special Effect - Create a special effect attached to the overhead of EWTargeted[CurrentIndex] using Abilities\Spells\NightElf\Starfall\StarfallCaster.mdl
Set EWSFXTarget[CurrentIndex] = (Last created special effect)
-------- More eye candy. --------
-------- The special effect that the caster is going to have. --------
Special Effect - Create a special effect attached to the overhead of EWCaster[CurrentIndex] using units\nightelf\OwlSCOUT\OwlSCOUT.mdl
Set EWSFXCaster[CurrentIndex] = (Last created special effect)
-------- Now we pause the unit to cause a like-stun moment. --------
Unit - Pause EWTargeted[CurrentIndex]
-------- And now we start setting up he waves and damage on the spell. --------
-------- This is the wave count formula, it divides the hero's agiliy for 10 and then uses the product of that division as the wave amount. --------
Set EWWaves[CurrentIndex] = (3 x (Level of (Ability being cast) for (Triggering unit)))
-------- This is the raw damage that each wave is going to deal. --------
Set EWDmgPerWave[CurrentIndex] = ((80 x (Level of (Ability being cast) for EWCaster[CurrentIndex])) + (Agility of EWCaster[CurrentIndex] (Include bonuses)))
DSLoop
Events
Time - Every 0.04 seconds of game time
Conditions
Actions
Unit Group - Pick every unit in DSStartGroup and do (Actions)
Loop - Actions
Set DSValue = (Custom value of (Picked unit))
Set DSDummy = (Position of (Picked unit))
-------- On this next action you can change the speed, i recomend you leave it as it is, because it might get sloppy --------
Set DSMov = (DSDummy offset by 75.00 towards (Facing of DSCaster[DSCounts]) degrees)
Unit - Move (Picked unit) instantly to DSMov
Set DSGroup = (Units within 150.00 of DSMov matching ((((Matching unit) is A structure) Not equal to True) and ((((Matching unit) is alive) Equal to True) and (((Matching unit) belongs to an enemy of (Owner of DSCaster[DSValue])) Equal to True))))
Unit Group - Pick every unit in DSGroup and do (Actions)
Loop - Actions
-------- The SFX when it hits --------
Special Effect - Create a special effect at (Position of (Picked unit)) using Objects\Spawnmodels\Undead\ImpaleTargetDust\ImpaleTargetDust.mdl
Special Effect - Destroy (Last created special effect)
Unit - Cause DSCaster[DSCounts] to damage (Picked unit), dealing (Real(DSDamage[DSCounts])) damage of attack type Pierce and damage type Normal
-------- Down here set up the dummy to cast the slow --------
Unit - Create 1 Dummy for (Owner of DSCaster[DSCounts]) at (Position of (Picked unit)) facing Default building facing degrees
Unit - Add DS Clap to (Last created unit)
Unit - Order (Last created unit) to Human Mountain King - Thunder Clap
Unit - Add a 3.00 second Generic expiration timer to (Last created unit)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
(Number of units in DSGroup) Greater than 0
Then - Actions
Unit - Kill (Picked unit)
Unit Group - Remove (Picked unit) from DSStartGroup
Else - Actions
-------- Cleaning some leaks --------
Custom script: call RemoveLocation (udg_DSDummy)
Custom script: call RemoveLocation (udg_DSMov)
Custom script: call DestroyGroup (udg_DSGroup)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Number of units in DSStartGroup) Equal to 0
Then - Actions
Trigger - Turn off (This trigger)
Else - Actions
DSExecute
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Deadly Precision
Actions
-------- Making sure your arrow is special, the only one. --------
Set DSCounts = (DSCounts + 1)
-------- The maximum amount of arrows allowed in-game at the same time. --------
Set DSCountMax = 8191
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
DSCounts Greater than DSCountMax
Then - Actions
Set DSCounts = 1
Else - Actions
-------- The unit variables --------
Set DSCaster[DSCounts] = (Casting unit)
Set DSDamage[DSCounts] = (100 + ((Agility of DSCaster[DSCounts] (Include bonuses)) x (Level of Deadly Precision for DSCaster[DSCounts])))
Set DSTargetedArea = (Target point of ability being cast)
Set DSAngle = (Angle from DSCastersLocation to DSTargetedArea)
Set DSCastersLocation = (Position of DSCaster[DSCounts])
-------- Creating the unit, make sure u change this to the deadly precision unit --------
Unit - Create 1 Deadly Precision for (Owner of DSCaster[DSCounts]) at DSCastersLocation facing (Facing of DSCaster[DSCounts]) degrees
Unit - Add a 3.00 second Generic expiration timer to (Last created unit)
Unit Group - Add (Last created unit) to DSStartGroup
Unit - Set the custom value of (Last created unit) to DSCounts
Unit Group - Pick every unit in DSStartGroup and do (Actions)
Loop - Actions
Set DSValue = (Custom value of (Picked unit))
Set DSDummy = (Position of (Picked unit))
-------- On this next action you can change the speed, i recomend you leave it as it is, because it might get sloppy --------
Set DSMov = (DSDummy offset by 75.00 towards (Facing of DSCaster[DSCounts]) degrees)
Unit - Move (Picked unit) instantly to DSMov
Set DSGroup = (Units within 150.00 of DSMov matching ((((Matching unit) is A structure) Not equal to True) and ((((Matching unit) is alive) Equal to True) and (((Matching unit) belongs to an enemy of (Owner of DSCaster[DSValue])) Equal to True))))
Unit Group - Pick every unit in DSGroup and do (Actions)
Loop - Actions
-------- The SFX when it hits --------
Special Effect - Create a special effect at (Position of (Picked unit)) using Objects\Spawnmodels\Undead\ImpaleTargetDust\ImpaleTargetDust.mdl
Special Effect - Destroy (Last created special effect)
Unit - Cause DSCaster[DSCounts] to damage (Picked unit), dealing (Real(DSDamage[DSCounts])) damage of attack type Pierce and damage type Normal
-------- Down here set up the dummy to cast the slow --------
Unit - Create 1 Dummy for (Owner of DSCaster[DSCounts]) at (Position of (Picked unit)) facing Default building facing degrees
Unit - Add DS Clap to (Last created unit)
Unit - Order (Last created unit) to Human Mountain King - Thunder Clap
Unit - Add a 3.00 second Generic expiration timer to (Last created unit)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
(Number of units in DSGroup) Greater than 0
Then - Actions
Unit - Kill (Picked unit)
Unit Group - Remove (Picked unit) from DSStartGroup
Else - Actions
-------- Cleaning some leaks --------
Custom script: call RemoveLocation (udg_DSDummy)
Custom script: call RemoveLocation (udg_DSMov)
Custom script: call DestroyGroup (udg_DSGroup)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Its been updated, removed a bunh of leaks and stuff that was basicly useless, also added another spell and changed the deadly precision spell completely to a different one since there are a lot of arrow spells like that in the hive already.
If you notice somethin' please let me know, again this is my first spellpack so it might be a little sloppy :B!
One more thing, i can't figure out how to post them triggers without spending 3 hours looking at triggers then editing the post and so on, it is too hard and I am really low on time, might do it in the future weeks, sorry! If anybody has a way to post them faster please let me know! A screenshot perhaps?
This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
By continuing to use this site, you are consenting to our use of cookies.