- Joined
- Aug 2, 2010
- Messages
- 14
So I have created this spell that is supposed to hit an enemy and when it does, split into three projectiles (that's why it is called splitfire). Right now when I try to fix some memory leaks, the triggers stops working and I don't know why.
Thanks Space Ship, it works now but it still starts to lag when there are loads of projectiles on the map. I can't find any more leaks.
-
Melee Initialization
-

Events
-


Map initialization
-
-

Conditions
-

Actions
-


Hashtable - Create a hashtable
-


Set SplitLightning = (Last created hashtable)
-


Visibility - Disable fog of war
-


Visibility - Disable black mask
-
-
-
Init
-

Events
-


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

Conditions
-


(Ability being cast) Equal to Carrion Swarm
-
-

Actions
-


Set Caster = (Casting unit)
-


Set HeroPos = (Position of Caster)
-


Set TargetPos = (Target point of ability being cast)
-


Set MoveDist = 9.00
-


Set Angle = (Angle from HeroPos to TargetPos)
-


Set TimeLeft = 8.00
-


Unit - Create 1 Ghoul for (Owner of Caster) at HeroPos facing Angle degrees
-


Set Projectile = (Last created unit)
-


Set SplitLightningHandle = (Last created unit)
-


Hashtable - Save MoveDist as 3 of (Key SplitLightningHandle) in SplitLightning
-


Hashtable - Save Angle as 4 of (Key SplitLightningHandle) in SplitLightning
-


Hashtable - Save TimeLeft as 5 of (Key SplitLightningHandle) in SplitLightning
-


Unit Group - Add Projectile to Projectiles
-


Custom script: call RemoveLocation(udg_HeroPos)
-


Custom script: call RemoveLocation(udg_TargetPos)
-


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



If - Conditions
-




(Loop <gen> is on) Equal to False
-
-



Then - Actions
-




Trigger - Turn on Loop <gen>
-
-



Else - Actions
-
-
-
-
Loop
-

Events
-


Time - Every 0.03 seconds of game time
-
-

Conditions
-

Actions
-


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



Loop - Actions
-




Set MoveDist = (Load 3 of (Key (Picked unit)) from SplitLightning)
-




Set Angle = (Load 4 of (Key (Picked unit)) from SplitLightning)
-




Set TimeLeft = (Load 5 of (Key (Picked unit)) from SplitLightning)
-




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





If - Conditions
-






TimeLeft Greater than or equal to 0.03
-
-





Then - Actions
-






Set ProjectilePos = (Position of (Picked unit))
-






Set ProjectileMovePos = (ProjectilePos offset by MoveDist towards Angle degrees)
-






Unit - Move (Picked unit) instantly to ProjectileMovePos
-






Hashtable - Save (TimeLeft - 0.03) as 5 of (Key (Picked unit)) in SplitLightning
-






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







If - Conditions
-








TimeLeft Less than or equal to 7.40
-
-







Then - Actions
-








Set Targets = (Units within 60.00 of ProjectilePos matching ((((Matching unit) belongs to an enemy of (Owner of Projectile)) Equal to True) and (((Matching unit) is alive) Equal to True)))
-








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









If - Conditions
-










(Number of units in Targets) Greater than or equal to 1
-
-









Then - Actions
-










Set Angle = (Angle - 80.00)
-










Unit - Cause Projectile to damage (Random unit from Targets), dealing 100.00 damage of attack type Spells and damage type Normal
-










Custom script: call DestroyGroup(udg_Targets)
-










For each (Integer A) from 1 to 6, do (Actions)
-











Loop - Actions
-












Unit - Create 1 Ghoul for (Owner of (Picked unit)) at ProjectilePos facing Default building facing degrees
-












Set Projectile = (Last created unit)
-












Set SplitLightningHandle = (Last created unit)
-












Set Angle = (Angle + 20.00)
-












Set TimeLeft = 8.00
-












Set MoveDist = 8.00
-












Hashtable - Save MoveDist as 3 of (Key SplitLightningHandle) in SplitLightning
-












Hashtable - Save Angle as 4 of (Key SplitLightningHandle) in SplitLightning
-












Hashtable - Save TimeLeft as 5 of (Key SplitLightningHandle) in SplitLightning
-












Unit Group - Add Projectile to Projectiles
-
-
-










Hashtable - Clear all child hashtables of child (Key (Picked unit)) in SplitLightning
-










Unit Group - Remove (Picked unit) from Projectiles
-










Unit - Remove (Picked unit) from the game
-
-









Else - Actions
-










Custom script: call DestroyGroup(udg_Targets)
-
-
-
-







Else - Actions
-
-






Custom script: call RemoveLocation(udg_ProjectileMovePos)
-






Custom script: call RemoveLocation(udg_ProjectilePos)
-
-





Else - Actions
-






Custom script: call RemoveLocation(udg_ProjectilePos)
-






Custom script: call RemoveLocation(udg_ProjectileMovePos)
-






Hashtable - Clear all child hashtables of child (Key (Picked unit)) in SplitLightning
-






Unit Group - Remove (Picked unit) from Projectiles
-






Unit - Remove (Picked unit) from the game
-






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







If - Conditions
-








(Number of units in Projectiles) Equal to 0
-
-







Then - Actions
-








Trigger - Turn off Loop <gen>
-
-







Else - Actions
-
-
-
-
-
-
-
Attachments
Last edited:




