- Joined
- May 16, 2020
- Messages
- 660
Hi, I'm pretty sure that this trigger leaks a point variable (as it's being overwritten over and over), but I'm not sure how to fix it.
Can anyone please a) confirm this leaks and b) suggest how to fix it please?
Can anyone please a) confirm this leaks and b) suggest how to fix it please?
-
Water Jet
-
Events
-
Unit - A unit Starts the effect of an ability
-
-
Conditions
-
(Ability being cast) Equal to Water Jet
-
-
Actions
-
Set VariableSet WaterJet_Index = (WaterJet_Index + 1)
-
Set VariableSet WaterJet_Caster[WaterJet_Index] = (Triggering unit)
-
Set VariableSet WaterJet_Target[WaterJet_Index] = (Target unit of ability being cast)
-
Set VariableSet WaterJet_Level[WaterJet_Index] = (Level of Water Jet for WaterJet_Caster[WaterJet_Index])
-
Set VariableSet WaterJet_Point[WaterJet_Index] = (Position of WaterJet_Caster[WaterJet_Index])
-
-------- --------
-
Special Effect - Create a special effect at WaterJet_Point[WaterJet_Index] using Abilities\Weapons\WaterElementalMissile\WaterElementalMissile.mdl
-
Set VariableSet WaterJet_SFX[WaterJet_Index] = (Last created special effect)
-
Special Effect - Set Height of WaterJet_SFX[WaterJet_Index] to: ((Position - Z of WaterJet_SFX[WaterJet_Index].) + 60.00)
-
-------- --------
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
WaterJet_Index Equal to 1
-
-
Then - Actions
-
Countdown Timer - Start WaterJet_Timer as a Repeating timer that will expire in 0.03 seconds
-
Trigger - Turn on Water Jet Loop <gen>
-
-
Else - Actions
-
-
-
-
Water Jet Loop
-
Events
-
Time - WaterJet_Timer expires
-
-
Conditions
-
Actions
-
For each (Integer WaterJet_Integer) from 1 to WaterJet_Index, do (Actions)
-
Loop - Actions
-
Set VariableSet WaterJet_PointOld = WaterJet_Point[WaterJet_Integer]
-
Set VariableSet WaterJet_PointTarget = (Position of WaterJet_Target[WaterJet_Integer])
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
(Distance between WaterJet_PointOld and WaterJet_PointTarget) Greater than 65.00
-
-
Then - Actions
-
-------- MOVE MISSILE --------
-
Set VariableSet WaterJet_Point[WaterJet_Integer] = (WaterJet_PointOld offset by 60.00 towards (Angle from WaterJet_PointOld to WaterJet_PointTarget) degrees.)
-
Custom script: set udg_WaterJet_Z = GetLocationZ(udg_WaterJet_Point[udg_WaterJet_Integer])
-
Special Effect - Set Position of WaterJet_SFX[WaterJet_Integer] to x: (X of WaterJet_Point[WaterJet_Integer]), y: (Y of WaterJet_Point[WaterJet_Integer]), z: (WaterJet_Z + 60.00)
-
-
Else - Actions
-
-------- HIT --------
-
Special Effect - Destroy WaterJet_SFX[WaterJet_Integer]
-
-------- --------
-
Set VariableSet WaterJet_CV = (Custom value of WaterJet_Caster[WaterJet_Integer])
-
Set VariableSet WaterJet_TargetIllusion[WaterJet_CV] = WaterJet_Target[WaterJet_Integer]
-
-------- --------
-
Set VariableSet Illusion_Caster = WaterJet_Caster[WaterJet_Integer]
-
Set VariableSet Illusion_Player = (Owner of Illusion_Caster)
-
Set VariableSet Illusion_DamageDealt = 0.25
-
Set VariableSet Illusion_DamageTaken = 4.00
-
Set VariableSet Illusion_Duration = (2.00 x (Real(WaterJet_Level[WaterJet_Integer])))
-
Set VariableSet Illusion_AppearCustomized = True
-
Set VariableSet Illusion_AppearPoint = (Position of WaterJet_Target[WaterJet_Integer])
-
Set VariableSet Illusion_AppearFacing = (Angle from Illusion_AppearPoint to WaterJet_PointTarget)
-
Set VariableSet Illusion_Custom = WaterJet
-
Trigger - Run IllusionCreate <gen> (checking conditions)
-
Trigger - Turn on Water Jet Order <gen>
-
-------- --------
-
Unit - Cause WaterJet_Caster[WaterJet_Integer] to damage WaterJet_Target[WaterJet_Integer], dealing (50.00 + (50.00 x (Real(WaterJet_Level[WaterJet_Integer])))) damage of attack type Spells and damage type Magic
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
(WaterJet_Target[WaterJet_Integer] is alive) Equal to True
-
-
Then - Actions
-
Unit - Create 1 Dummy (Fly/Speed 0) for Neutral Passive at WaterJet_PointOld facing Default building facing degrees
-
Set VariableSet WaterJet_Dummy = (Last created unit)
-
Unit - Add Water Jet (Dummy) to WaterJet_Dummy
-
Ability - Set Ability: (Unit: WaterJet_Dummy's Ability with Ability Code: Water Jet (Dummy))'s Real Level Field: Movement Speed Reduction (%) ('Cri1') of Level: 0 to (0.10 x (Real(WaterJet_Level[WaterJet_Integer])))
-
Unit - Order WaterJet_Dummy to Undead Necromancer - Cripple WaterJet_Target[WaterJet_Integer]
-
Unit - Add a 0.50 second Generic expiration timer to WaterJet_Dummy
-
-
Else - Actions
-
-
-------- --------
-
Custom script: call RemoveLocation(udg_WaterJet_Point[udg_WaterJet_Integer])
-
-------- --------
-
Set VariableSet WaterJet_Caster[WaterJet_Integer] = WaterJet_Caster[WaterJet_Index]
-
Set VariableSet WaterJet_Target[WaterJet_Integer] = WaterJet_Target[WaterJet_Index]
-
Set VariableSet WaterJet_Level[WaterJet_Integer] = WaterJet_Level[WaterJet_Index]
-
Set VariableSet WaterJet_Point[WaterJet_Integer] = WaterJet_Point[WaterJet_Index]
-
Set VariableSet WaterJet_SFX[WaterJet_Integer] = WaterJet_SFX[WaterJet_Index]
-
-------- --------
-
Set VariableSet WaterJet_Index = (WaterJet_Index - 1)
-
Set VariableSet WaterJet_Integer = (WaterJet_Integer - 1)
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
WaterJet_Index Equal to 0
-
-
Then - Actions
-
Countdown Timer - Pause WaterJet_Timer
-
Trigger - Turn off (This trigger)
-
-
Else - Actions
-
-
-
-
Custom script: call RemoveLocation(udg_WaterJet_PointOld)
-
Custom script: call RemoveLocation(udg_WaterJet_PointTarget)
-
-
-
-
Last edited: