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!
1.) The name (Depending on your imagination) may or may not be related to what the spell does
2.) This is a slightly altered version of the spell I submitted for the Zephyr Contest #10: What Lies on the Other Side
3.)I have no intention of changing the spell I submitted on the contest with this one
Now, what this spell does is:
At cast, the caster stomps the ground creating a circle of war-stomps around him. Then he prepares himself for battle by spinning really, really fast. Then if there are any enemy units in range from his position, he will charge towards that point, then strike the units with such force that they are lifted off the ground.
The triggers:
ZS Config
Events
Time - Elapsed game time is 0.00 seconds
Conditions
Actions
-------- CONFIGURE --------
-------- The ability: --------
Set ZS_Abil = Zephyr Strike
-------- Circle Start to Final Configurables --------
-------- How far from the unit's position the unit is launched to: --------
Set ZS_JumpIncrement[1] = 200.00
Set ZS_JumpIncrement[2] = 300.00
Set ZS_JumpIncrement[3] = 300.00
-------- How much the units arc: --------
Set ZS_JumpMaxZ[1] = 150.00
Set ZS_JumpMaxZ[2] = 200.00
Set ZS_JumpMaxZ[3] = 250.00
-------- The duration of the jump: --------
Set ZS_JumpDuration[1] = 1.50
Set ZS_JumpDuration[2] = 1.20
Set ZS_JumpDuration[3] = 1.00
-------- How much the units are affected by gravity: --------
Set ZS_JumpGravity[1] = 100.00
Set ZS_JumpGravity[2] = 90.00
Set ZS_JumpGravity[3] = 80.00
-------- End Jump Config --------
-------- END CONFIG --------
ZS Cast
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to ZS_Abil
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
ZS_MaxIndex Equal to 0
Then - Actions
-------- If no instance is running, we turn on the loop --------
Trigger - Turn on ZS Loop <gen>
Else - Actions
Set ZS_MaxIndex = (ZS_MaxIndex + 1)
Set ZS_Caster[ZS_MaxIndex] = (Triggering unit)
Set ZS_CasterLoc[ZS_MaxIndex] = (Position of ZS_Caster[ZS_MaxIndex])
Set ZS_TempPlayer[ZS_MaxIndex] = (Owner of ZS_Caster[ZS_MaxIndex])
Set ZS_Counter[ZS_MaxIndex] = 0
Set ZS_Level = (Level of ZS_Abil for ZS_Caster[ZS_MaxIndex])
ZS Loop
Events
Time - Every 0.03 seconds of game time
Conditions
Actions
For each (Integer ZS_CurrentIndex) from 1 to ZS_MaxIndex, do (Actions)
Loop - Actions
Set ZS_CasterLoc[ZS_CurrentIndex] = (Position of ZS_Caster[ZS_CurrentIndex])
-------- [START] Circle War Stomp [START] --------
For each (Integer ZS_CirclInt) from 1 to ZS_StartCircleNum[ZS_Level], do (Actions)
Loop - Actions
Set ZS_TempPoint = (ZS_CasterLoc[ZS_CurrentIndex] offset by ZS_StartCircleOffset[ZS_Level] towards ((Real(ZS_CirclInt)) x (360.00 / (Real(ZS_StartCircleNum[ZS_Level])))) degrees)
Special Effect - Create a special effect at ZS_TempPoint using ZS_StartSFX[ZS_Level]
Animation - Play ZS_Caster[ZS_CurrentIndex]'s attack 1 animation
Special Effect - Destroy (Last created special effect)
Set ZS_TempGroup1 = (Units within ZS_StartRange[ZS_Level] of ZS_CasterLoc[ZS_CurrentIndex] matching (((Matching unit) belongs to an enemy of ZS_TempPlayer[ZS_CurrentIndex]) Equal to True))
Unit Group - Pick every unit in ZS_TempGroup1 and do (Actions)
Loop - Actions
Set ZS_TempUnit = (Picked unit)
Unit - Cause ZS_Caster[ZS_CurrentIndex] to damage ZS_TempUnit, dealing ZS_StartCircleDamage[ZS_Level] damage of attack type Chaos and damage type Divine
For each (Integer ZS_LoopInt) from 1 to ZS_OmniLoop[ZS_Level], do (Actions)
Loop - Actions
Set ZS_TempGroup1 = (Units within ZS_OmniRange[ZS_Level] of ZS_CasterLoc[ZS_CurrentIndex] matching ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is alive) Equal to True) and ((((Matching unit) belongs to an enemy of ZS_TempPlayer[ZS_CurrentIndex]) Equ
Set ZS_TempUnit = (Random unit from ZS_TempGroup1)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
ZS_TempUnit Equal to No unit
Then - Actions
Else - Actions
Animation - Change ZS_Caster[ZS_CurrentIndex]'s vertex coloring to (100.00%, 100.00%, 100.00%) with 50.00% transparency
Animation - Change ZS_Caster[ZS_CurrentIndex]'s animation speed to 300.00% of its original speed
Unit Group - Pick every unit in ZS_TempGroup1 and do (Actions)
Loop - Actions
Set ZS_PickedUnit[ZS_LoopInt] = (Picked unit)
Set ZS_PickedUnitLoc[ZS_LoopInt] = (Position of ZS_PickedUnit[ZS_LoopInt])
-------- Start of Omnislashing --------
Set ZS_TempPoint2 = (ZS_PickedUnitLoc[ZS_LoopInt] offset by ((Real(ZS_LoopInt)) + ZS_JumpIncrement[ZS_Level]) towards (Angle from ZS_CasterLoc[ZS_CurrentIndex] to ZS_PickedUnitLoc[ZS_CurrentIndex]) degrees)
Custom script: if IsPointJumpable(GetLocationX(udg_ZS_TempPoint2), GetLocationY(udg_ZS_TempPoint2)) then
Animation - Play ZS_Caster[ZS_CurrentIndex]'s ZS_OmniAnim[ZS_Level] animation
Unit - Cause ZS_Caster[ZS_CurrentIndex] to damage ZS_PickedUnit[ZS_LoopInt], dealing ZS_OmniDamage[ZS_Level] damage of attack type ZS_OmniAttType[ZS_Level] and damage type ZS_OmniDmgType[ZS_Level]
Special Effect - Create a special effect attached to the chest of ZS_PickedUnit[ZS_LoopInt] using ZS_OmniSfx[ZS_Level]
-------- [START] Final Circle War Stomp [START] --------
For each (Integer ZS_CirclInt) from 1 to ZS_FinalCircleNum[ZS_Level], do (Actions)
Loop - Actions
Set ZS_TempPoint = (ZS_CasterLoc[ZS_CurrentIndex] offset by ZS_FinalCircleOffset[ZS_Level] towards ((Real(ZS_CirclInt)) x (360.00 / (Real(ZS_FinalCircleNum[ZS_Level])))) degrees)
Special Effect - Create a special effect at ZS_TempPoint using ZS_FinalSFX[ZS_Level]
Animation - Play ZS_Caster[ZS_CurrentIndex]'s attack 2 animation
Special Effect - Destroy (Last created special effect)
Set ZS_TempGroup1 = (Units within ZS_FinalRange[ZS_Level] of ZS_CasterLoc[ZS_CurrentIndex] matching (((Matching unit) belongs to an enemy of ZS_TempPlayer[ZS_CurrentIndex]) Equal to True))
Unit Group - Pick every unit in ZS_TempGroup1 and do (Actions)
Loop - Actions
Set ZS_TempUnit = (Picked unit)
Unit - Cause ZS_Caster[ZS_CurrentIndex] to damage ZS_TempUnit, dealing ZS_FinalCircleDamage[ZS_Level] damage of attack type Chaos and damage type Divine
-------- [END] Final Circle War Stomp [END] --------
Animation - Change ZS_Caster[ZS_CurrentIndex]'s animation speed to 100.00% of its original speed
Set ZS_Caster[ZS_CurrentIndex] = ZS_Caster[ZS_MaxIndex]
Set ZS_CasterLoc[ZS_CurrentIndex] = ZS_CasterLoc[ZS_MaxIndex]
Set ZS_Counter[ZS_CurrentIndex] = ZS_Counter[ZS_MaxIndex]
Set ZS_TempPlayer[ZS_CurrentIndex] = ZS_TempPlayer[ZS_MaxIndex]
Set ZS_MaxIndex = (ZS_MaxIndex - 1)
Set ZS_CurrentIndex = (ZS_CurrentIndex - 1)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
ZS_MaxIndex Equal to 0
Then - Actions
Trigger - Turn off (This trigger)
Else - Actions
-------- Instance Recycled --------
-------- End Loop --------
-------- End Cast --------
This spell uses Maker's Jump System, along with the sub-systems that system uses.
CREDITS:
Spell:
-Almia
-deathismyfriend
-Doomlord
-ruleoffireon99
-Maker
-anitarf and Vexorian
-Bribe
-Authors of GetUnitCollision and CTL
In-game, not really related to the spell:
-PeeKay (Icon)
Changelog
Version 1.2b
-Fixed the ZS_TempPoint and ZS_TempPoint2 leak
Version 1.2a
-Removed Almia's Knockback System (It was either his system or Maker's)
-Hopefully I have fixed the TempPoint1 and TempPoint2 leaks
-Removed the overwriting of ZS_CasterLoc[]
Version 1.1a
-Added Maker's Jump System. along with Table, CTL, GetUnitCollision, and IsTerrainWalkable
-Made the spell more configurable
-Optimized the spell a little bit
Version 1.0c
-Removed the one dummy object
-de-arrayed the TempPoint and TempGroup variables
-Removed the TempGroup2 variable
-Made the spell support 3 levels
-Removed the dummy's 800/600 vision
Version 1.0b
-Fixed the ZS_CasterLoc leak at the beginning of the omnislash loop
Version 1.0a
-Uploaded the Spell
Still to do:
-Add a proper wait to the Omnislash phase so that the caster will wait shortly before slashing another unit, to make it look more realistic.
-Fix the tooltip
Feedback is appreciated, and I really would like to hear your thoughts on this. Especially those comments that are related to the spell's triggering, and suggestions regarding it.
Give me credit for my work!
Do not distribute without my consent!
12th Dec 2015
IcemanBo: Too long as NeedsFix. Rejected.
Zephyr Strike v1.2b | Reviewed by Maker | 6th Jun 2013
NEEDS FIX
You leak ZS_CasterLoc because you set it in ZS Cast trigger
and overwrite it in the looping trigger...
12th Dec 2015
IcemanBo: Too long as NeedsFix. Rejected.
Zephyr Strike v1.2b | Reviewed by Maker | 6th Jun 2013
NEEDS FIX
You leak ZS_CasterLoc because you set it in ZS Cast trigger
and overwrite it in the looping trigger
There is an unneeded Custom script: call RemoveLocation(udg_ZS_TempPoint)
in the looping trigger, twice
There is an unneeded Custom script: call RemoveLocation(udg_ZS_TempPoint2)
in the looping trigger
You don't need TempPoint2 variable, use TempPoint instead
ZS_CasterLoc, ZS_PickedUnit, ZS_PickedUnitLoc do not need to be arrays
There is no need to set TempUnit = Picked unit when you damage units,
you only call Picked unit function once
It is useless to play the caster's animation multiple times in the loops,
only play it once
[tr]
Zephyr Strike v1.1a | Reviewed by Maker | 2nd Jun 2013
NEEDS FIX
Load the ability level from a variable in the looping trigger
You are leaking ZS_TempPoint in the looping trigger several times
You are overwriting ZS_CasterLoc data in the looping trigger
and therefore it leaks
This is not needed
Unit Group - Remove ZS_TempUnit from ZS_TempGroup1
[*]I don't think you should use both the jump system and the knocback system
[tr]
Zephyr Strike v1.0 | Reviewed by Maker | 28th May 2013
NEEDS FIX
Abilities must support more that one level
You are overwriting ZS_CasterLoc data in the looping trigger
and therefore it leaks
The jump system adds/removes Strom Crow ability,
what if the unit should have that ability
The jump system doesn't allow units to jump straight up
The jump system should alter flying height at rate of 0
The jump system uses a rudimentary tree desroying method
The learn tooltip is missing the hotkey
You could use a variable for the ability
The dummies do not need o give 800/600 vision
The action to play caster's attack 1 animation doesn't do anything
Channel should generally not be configured to disable other abilities
SetUnitPositionLoc gives the unit stop order. Basically the unit
is not casting the ability anymore. Maybe you could use a pathing check and
use SetUnitX/Y instead
You use array variables for temporary locatons and groups
in the looping trigger for no apparent reason
If you are doing actions regardless of he trigger going to
THEN or ELSE, then take the actions out of the if/then/else
That is now my plan, but before I go implementing it I have to re-edit most of the variables and re-add those variables which I removed the arrays from.
Also, making it into a multi level ability will take me a while, because I spent so much time making this a level 1 ability, till I found out the Spell section's standards.
1/ If an action is repeated in the Then and Else, takes it outside of the If.
2/ On a side note, a dummy isn't needed. You can go with special effects instead. Elaborate if the dummy serves another purpose.
3/ Stomp Circle part of the code lacks some configurability.
This is my first review so feel free to object if needed.
Tip of the day: Do you know that you only need 1 dummy with 0 cast point, animation/cast backswing and movement speed to cast a 0s cd, non-channeling spell continuously as if there are multiple dummies? Furthermore, you can use only 1 dummy for all spell instances (I am yet to test this but it should be possible in theory).
Oh then I shall use the dummy.mdx models I've been seeing lately on projectile systems.
And technically in this spell the effect dummies are the caster dummies.
@deathismyfriend sorry looks like I'll just need to stick to three levels for this one, because adding more will take more time than expected. I'll just do your suggestion for my other spell, AHL.
it may take more time to do it my way but it is a lot better. plus i wouldnt want to make this spell have 10 lvls lol that means a very long config trigger.
Thanks deathismyfriend, but I'll just stick to 3 levels for now.
UPDATE: I have updated the spell with Maker's Jump System, though there is still a problem with the code because the units that are lifted off the ground arrive at one single point in the map.
I also removed the dummies' 600/800 vision, though pretty soon I will remove the dummies themselves, but I just need to fix the jump. Also a new problem has arisen, now since the jump was imported the special effect dummies are no longer shown, so I'm fixing that too.
UPDATE 2: I have fixed all known bugs (i.e. bugs posted above) and I am now working on making the spell's configurables. Also, I am now making the spell switch from effect dummies to plain sfx. Also I have successfuly imported Maker's Jump System, thanks to him because he helped me also on that particular problem.
UPDATE 3: Version 1.1a is up and running, included therein are Maker's jump system, a multi-level spell, and most corrections after Maker's review.
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.