- Joined
- Oct 16, 2011
- Messages
- 308
Can someone check this if there's a leak. Also, I know there's a lot of improvement to this, so if someone can improve or make it shorter please do so 
Edit: as KILLCIDE says,
Edit: as KILLCIDE says,
Post the triggers please. Not everyone has the World Editor on them.
-
Shockwave
-

Events
-


Unit - A unit Starts the effect of an ability
-
-

Conditions
-


(Ability being cast) Equal to Shockwave (Trigger)
-
-

Actions
-


Set SW_Max = (SW_Max + 1)
-


Set SW_Caster[SW_Max] = (Triggering unit)
-


Set SW_WaveEffect[SW_Max] = Abilities\Spells\Orc\Shockwave\ShockwaveMissile.mdl
-


Set SW_WaveEffectL[SW_Max] = Abilities\Spells\Other\Incinerate\FireLordDeathExplode.mdl
-


Set SW_AllowFXLoop[SW_Max] = True
-


Set SW_PointCaster[SW_Max] = (Position of (Triggering unit))
-


Set SW_PointTarget[SW_Max] = (Target point of ability being cast)
-


Set SW_Lvl[SW_Max] = (Level of (Ability being cast) for (Triggering unit))
-


Set SW_Damage[1] = 10.00
-


Set SW_Damage[2] = 20.00
-


Set SW_Damage[3] = 30.00
-


Set SW_DamageFinal[1] = 200.00
-


Set SW_DamageFinal[2] = 300.00
-


Set SW_DamageFinal[3] = 400.00
-


Set SW_AreaInitial[1] = 125.00
-


Set SW_AreaInitial[2] = 125.00
-


Set SW_AreaInitial[3] = 125.00
-


Set SW_AreaFinal[1] = 125.00
-


Set SW_AreaFinal[2] = 125.00
-


Set SW_AreaFinal[3] = 125.00
-


Set SW_Speed[1] = 1050.00
-


Set SW_Speed[2] = 1050.00
-


Set SW_Speed[3] = 1050.00
-


Set SW_Distance[1] = 400.00
-


Set SW_Distance[2] = 1000.00
-


Set SW_Distance[3] = 1800.00
-


Unit - Create 1 Dummy for (Owner of SW_Caster[SW_Max]) at SW_PointCaster[SW_Max] facing SW_PointTarget[SW_Max]
-


Set SW_Dummy[SW_Max] = (Last created unit)
-


Unit - Turn collision for SW_Dummy[SW_Max] Off
-


Animation - Change SW_Dummy[SW_Max]'s vertex coloring to (100.00%, 100.00%, 100.00%) with 100.00% transparency
-


Set SW_AreaGrowth[SW_Max] = ((SW_AreaFinal[SW_Lvl[SW_Max]] - SW_AreaInitial[SW_Lvl[SW_Max]]) / ((1.00 / 0.03) x (SW_Distance[SW_Lvl[SW_Max]] / SW_Speed[SW_Lvl[SW_Max]])))
-


Set SW_AreaCurrent[SW_Max] = SW_AreaInitial[SW_Lvl[SW_Max]]
-


Special Effect - Create a special effect attached to the origin of SW_Dummy[SW_Max] using SW_WaveEffect[SW_Max]
-


Custom script: set udg_SW_GroupDone[udg_SW_Max] = CreateGroup()
-


Set SW_DistanceX[SW_Max] = SW_Distance[SW_Lvl[SW_Max]]
-


Set SW_SpeedX[SW_Max] = SW_Speed[SW_Lvl[SW_Max]]
-


Set SW_DamageX[SW_Max] = SW_Damage[SW_Lvl[SW_Max]]
-


Set SW_DamageFinalX[SW_Max] = SW_DamageFinal[SW_Lvl[SW_Max]]
-


If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-



If - Conditions
-




SW_Max Equal to 1
-
-



Then - Actions
-




Trigger - Turn on Shockwave Loop <gen>
-
-



Else - Actions
-
-
-
-
Carrion Swarm
-

Events
-


Unit - A unit Starts the effect of an ability
-
-

Conditions
-


(Ability being cast) Equal to Carrion Swarm (Trigger)
-
-

Actions
-


Set SW_Max = (SW_Max + 1)
-


Set SW_Caster[SW_Max] = (Triggering unit)
-


Set SW_WaveEffect[SW_Max] = Abilities\Spells\Undead\CarrionSwarm\CarrionSwarmMissile.mdl
-


Set SW_WaveEffectL[SW_Max] = Abilities\Spells\Undead\DarkRitual\DarkRitualTarget.mdl
-


Set SW_AllowFXLoop[SW_Max] = True
-


Set SW_PointCaster[SW_Max] = (Position of (Triggering unit))
-


Set SW_PointTarget[SW_Max] = (Target point of ability being cast)
-


Set SW_Lvl[SW_Max] = (Level of (Ability being cast) for (Triggering unit))
-


Set SW_Damage[1] = 100.00
-


Set SW_Damage[2] = 200.00
-


Set SW_Damage[3] = 300.00
-


Set SW_DamageFinal[1] = 0.00
-


Set SW_DamageFinal[2] = 0.00
-


Set SW_DamageFinal[3] = 0.00
-


Set SW_AreaInitial[1] = 100.00
-


Set SW_AreaInitial[2] = 100.00
-


Set SW_AreaInitial[3] = 100.00
-


Set SW_AreaFinal[1] = 100.00
-


Set SW_AreaFinal[2] = 300.00
-


Set SW_AreaFinal[3] = 500.00
-


Set SW_Speed[1] = 1100.00
-


Set SW_Speed[2] = 1100.00
-


Set SW_Speed[3] = 1100.00
-


Set SW_Distance[1] = 800.00
-


Set SW_Distance[2] = 800.00
-


Set SW_Distance[3] = 800.00
-


Unit - Create 1 Dummy for (Owner of SW_Caster[SW_Max]) at SW_PointCaster[SW_Max] facing SW_PointTarget[SW_Max]
-


Set SW_Dummy[SW_Max] = (Last created unit)
-


Unit - Turn collision for SW_Dummy[SW_Max] Off
-


Animation - Change SW_Dummy[SW_Max]'s vertex coloring to (100.00%, 100.00%, 100.00%) with 100.00% transparency
-


Set SW_AreaGrowth[SW_Max] = ((SW_AreaFinal[SW_Lvl[SW_Max]] - SW_AreaInitial[SW_Lvl[SW_Max]]) / ((1.00 / 0.03) x (SW_Distance[SW_Lvl[SW_Max]] / SW_Speed[SW_Lvl[SW_Max]])))
-


Set SW_AreaCurrent[SW_Max] = SW_AreaInitial[SW_Lvl[SW_Max]]
-


Special Effect - Create a special effect attached to the origin of SW_Dummy[SW_Max] using SW_WaveEffect[SW_Max]
-


Custom script: set udg_SW_GroupDone[udg_SW_Max] = CreateGroup()
-


Set SW_DistanceX[SW_Max] = SW_Distance[SW_Lvl[SW_Max]]
-


Set SW_SpeedX[SW_Max] = SW_Speed[SW_Lvl[SW_Max]]
-


Set SW_DamageX[SW_Max] = SW_Damage[SW_Lvl[SW_Max]]
-


Set SW_DamageFinalX[SW_Max] = SW_DamageFinal[SW_Lvl[SW_Max]]
-


If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-



If - Conditions
-




SW_Max Equal to 1
-
-



Then - Actions
-




Trigger - Turn on Shockwave Loop <gen>
-
-



Else - Actions
-
-
-
-
Shockwave Loop
-

Events
-


Time - Every 0.03 seconds of game time
-
-

Conditions
-

Actions
-


For each (Integer SW_Loop) from 1 to SW_Max, do (Actions)
-



Loop - Actions
-




Set SW_DistanceX[SW_Loop] = (SW_DistanceX[SW_Loop] - (SW_SpeedX[SW_Loop] / (1.00 / 0.03)))
-




Set SW_Angle[SW_Loop] = (Facing of SW_Dummy[SW_Loop])
-




Set SW_NextPoint[SW_Loop] = (Position of SW_Dummy[SW_Loop])
-




Set SW_NextPointMove[SW_Loop] = (SW_NextPoint[SW_Loop] offset by (SW_SpeedX[SW_Loop] / (1.00 / 0.03)) towards SW_Angle[SW_Loop] degrees)
-




Set SW_AreaCurrent[SW_Loop] = (SW_AreaCurrent[SW_Loop] + SW_AreaGrowth[SW_Loop])
-




Set SW_Group[SW_Loop] = (Units within SW_AreaCurrent[SW_Loop] of SW_NextPointMove[SW_Loop] matching ((((Matching unit) belongs to an enemy of (Owner of SW_Caster[SW_Loop])) Equal to True) and ((((Matching unit) is alive) Equal to True) and (((Matching unit) is in SW_GroupDone[SW_Loo
-




If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-





If - Conditions
-






SW_AllowFXLoop[SW_Loop] Equal to True
-
-





Then - Actions
-






Special Effect - Create a special effect at SW_NextPoint[SW_Loop] using SW_WaveEffectL[SW_Loop]
-






Special Effect - Destroy (Last created special effect)
-
-





Else - Actions
-
-




Unit - Move SW_Dummy[SW_Loop] instantly to SW_NextPointMove[SW_Loop], facing SW_Angle[SW_Loop] degrees
-




Unit Group - Pick every unit in SW_Group[SW_Loop] and do (Actions)
-





Loop - Actions
-






Unit - Cause SW_Caster[SW_Loop] to damage (Picked unit), dealing SW_DamageX[SW_Loop] damage of attack type Spells and damage type Universal
-






Unit Group - Add (Picked unit) to SW_GroupDone[SW_Loop]
-
-
-




If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-





If - Conditions
-






SW_DistanceX[SW_Loop] Less than or equal to 0.00
-
-





Then - Actions
-






Set SW_GroupFinal = (Units within SW_AreaCurrent[SW_Loop] of SW_NextPointMove[SW_Loop] matching ((((Matching unit) belongs to an enemy of (Owner of SW_Caster[SW_Loop])) Equal to True) and (((Matching unit) is alive) Equal to True)))
-






Unit Group - Pick every unit in SW_GroupFinal and do (Actions)
-







Loop - Actions
-








Unit - Cause SW_Caster[SW_Loop] to damage (Picked unit), dealing SW_DamageFinalX[SW_Loop] damage of attack type Spells and damage type Universal
-
-
-






-------- Only remove existing groups. --------
-






Custom script: call DestroyGroup( udg_SW_GroupFinal )
-






Set SW_GroupDone[SW_Loop] = SW_GroupDone[SW_Max]
-






Unit Group - Remove all units of SW_GroupDone[SW_Max] from SW_GroupDone[SW_Max]
-






Set SW_Caster[SW_Loop] = SW_Caster[SW_Max]
-






Set SW_Caster[SW_Max] = No unit
-






Unit - Kill SW_Dummy[SW_Loop]
-






Set SW_Dummy[SW_Loop] = SW_Dummy[SW_Max]
-






Set SW_Dummy[SW_Max] = No unit
-






-------- Must move all members of an object during object move operation. --------
-






Set SW_DistanceX[SW_Loop] = SW_DistanceX[SW_Max]
-






Set SW_SpeedX[SW_Loop] = SW_SpeedX[SW_Max]
-






Set SW_DamageX[SW_Loop] = SW_DamageX[SW_Max]
-






Set SW_DamageFinalX[SW_Loop] = SW_DamageFinalX[SW_Max]
-






Set SW_AreaCurrent[SW_Loop] = SW_AreaCurrent[SW_Max]
-






Set SW_Lvl[SW_Loop] = SW_Lvl[SW_Max]
-






Set SW_Max = (SW_Max - 1)
-






Set SW_Loop = (SW_Loop - 1)
-
-





Else - Actions
-
-




Custom script: call RemoveLocation(udg_SW_NextPoint[udg_SW_Loop])
-




Custom script: call RemoveLocation(udg_SW_NextPointMove[udg_SW_Loop])
-




Custom script: call DestroyGroup( udg_SW_Group[udg_SW_Loop] )
-




If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-





If - Conditions
-






SW_Max Equal to 0
-
-





Then - Actions
-






Trigger - Turn off (This trigger)
-
-





Else - Actions
-
-
-
-
-
-
Shockwave Recover
-

Events
-


Unit - A unit Dies
-
-

Conditions
-


(Unit-type of (Triggering unit)) Equal to Dummy
-
-

Actions
-


Unit - Remove (Triggering unit) from the game
-
-
Attachments
Last edited:






