- Joined
- Dec 25, 2018
- Messages
- 110
I am using projectile skillshot system I found on this forum but I am having a problem when theres multiple projectiles at once.
Example:
-Spell 1 has speed of 50
-Spell 2 has speed of 10
If spell 1 is still in air and spell 2 is casted, then spell 2 gains speed values of spell 1.
Triggers:
Issue is propably with SS_Move, but even with
set udg_SS_Move[udg_SS_iC] = PolarProjectionBJ(udg_SS_mLoc[udg_SS_iC], 50.00, udg_SS_Angle[udg_SS_iC])
call SetUnitPositionLoc( udg_SS_Missle[udg_SS_iC], udg_SS_Move[udg_SS_iC] )
bug still occured.
Example:
-Spell 1 has speed of 50
-Spell 2 has speed of 10
If spell 1 is still in air and spell 2 is casted, then spell 2 gains speed values of spell 1.
Triggers:
-
INIT
-

Events
-


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

Conditions
-


(Ability being cast) Equal to ability
-
-

Actions
-


Set SS_iM = (SS_iM + 1)
-


Set SS_Caster[SS_iM] = (Triggering unit)
-


Set SS_Player[SS_iM] = (Owner of SS_Caster[SS_iM])
-


Set SS_aLevel[SS_iM] = (Level of SS_AbilityDamage for SS_Caster[SS_iM])
-


Set SS_MissleSpeed[SS_iM] = 50.00
-


Set SS_cLoc[SS_iM] = (Position of SS_Caster[SS_iM])
-


Set SS_tLoc[SS_iM] = (Target point of ability being cast)
-


Set SS_Angle[SS_iM] = (Angle from SS_cLoc[SS_iM] to SS_tLoc[SS_iM])
-


Set SS_rLoc[SS_iM] = (SS_cLoc[SS_iM] offset by 1900.00 towards SS_Angle[SS_iM] degrees)
-


Unit - Create 1 SS_Dummy for SS_Player[SS_iM] at SS_cLoc[SS_iM] facing SS_Angle[SS_iM] degrees
-


Unit - Set Max HP of (Last created unit) to ((Intelligence of SS_Caster[SS_iM] (Include bonuses)) x 3)
-


Set SS_Missle[SS_iM] = (Last created unit)
-


Animation - Change SS_Missle[SS_iM]'s size to (SS_MissleSize%, SS_MissleSize%, SS_MissleSize%) of its original size
-


Special Effect - Create a special effect attached to the chest of SS_Missle[SS_iM] using Abilities\Weapons\NecromancerMissile\NecromancerMissile.mdl
-


Set SS_SFX[SS_iM] = (Last created special effect)
-


Set SS_mLoc[SS_iM] = (Position of SS_Missle[SS_iM])
-


Set SS_Distance[SS_iM] = (Distance between SS_mLoc[SS_iM] and SS_rLoc[SS_iM])
-


Animation - Change SS_Missle[SS_iM] flying height to SS_MissleHeight at 0.00
-


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



If - Conditions
-




SS_iM Equal to 1
-
-



Then - Actions
-




Trigger - Turn on Curse Loop <gen>
-
-



Else - Actions
-
-
-
-
LOOP
-

Events
-


Time - Every 0.03 seconds of game time
-
-

Conditions
-

Actions
-


For each (Integer SS_iC) from 1 to SS_iM, do (Actions)
-



Loop - Actions
-




Set SS_Move = (SS_mLoc[SS_iC] offset by SS_MissleSpeed[SS_iM] towards SS_Angle[SS_iC] degrees)
-




Unit - Move SS_Missle[SS_iC] instantly to SS_Move
-




Custom script: call RemoveLocation (udg_SS_mLoc[udg_SS_iC])
-




Set SS_mLoc[SS_iC] = (Position of SS_Missle[SS_iC])
-




Set SS_Distance[SS_iC] = (Distance between SS_mLoc[SS_iC] and SS_rLoc[SS_iC])
-




Custom script: set bj_wantDestroyGroup = true
-




Unit Group - Pick every unit in (Units within SS_MissleAoE of SS_mLoc[SS_iC]) and do (Actions)
-





Loop - Actions
-






Set SS_eUnit = (Picked unit)
-






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







If - Conditions
-








(SS_eUnit belongs to an enemy of SS_Player[SS_iC]) Equal to True
-








(SS_eUnit is alive) Equal to True
-








(SS_eUnit is Magic Immune) Equal to False
-








(SS_eUnit is A structure) Equal to False
-
-







Then - Actions
-








Unit Group - Add SS_eUnit to SS_Group
-
-







Else - Actions
-
-
-
-




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





If - Conditions
-






Or - Any (Conditions) are true
-







Conditions
-








SS_Distance[SS_iC] Less than or equal to SS_MissleAoE
-








(SS_Group is empty) Equal to False
-
-
-
-





Then - Actions
-






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







If - Conditions
-








(SS_Group is empty) Equal to True
-
-







Then - Actions
-








Special Effect - Create a special effect at SS_mLoc[SS_iC] using Abilities\Weapons\BansheeMissile\BansheeMissile.mdl
-








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







Else - Actions
-








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









Loop - Actions
-










Set SS_eUnit = (Picked unit)
-










Special Effect - Create a special effect attached to the SS_MissleHit_AP of SS_eUnit using Abilities\Weapons\BansheeMissile\BansheeMissile.mdl
-










Special Effect - Destroy (Last created special effect)
-










Unit - Cause SS_Missle[SS_iM] to damage SS_eUnit, dealing (Max life of SS_Missle[SS_iM]) damage of attack type Normal and damage type Normal
-










Unit Group - Remove SS_eUnit from SS_Group
-
-
-
-
-






Custom script: call RemoveLocation (udg_SS_rLoc[udg_SS_iC])
-






Custom script: call RemoveLocation (udg_SS_tLoc[udg_SS_iC])
-






Custom script: call RemoveLocation (udg_SS_cLoc[udg_SS_iC])
-






Custom script: call RemoveLocation (udg_SS_mLoc[udg_SS_iC])
-






Special Effect - Destroy SS_SFX[SS_iC]
-






Unit - Remove SS_Missle[SS_iC] from the game
-






Set SS_Caster[SS_iC] = SS_Caster[SS_iM]
-






Set SS_Player[SS_iC] = SS_Player[SS_iM]
-






Set SS_aLevel[SS_iC] = SS_aLevel[SS_iM]
-






Set SS_cLoc[SS_iC] = SS_cLoc[SS_iM]
-






Set SS_tLoc[SS_iC] = SS_tLoc[SS_iM]
-






Set SS_Angle[SS_iC] = SS_Angle[SS_iM]
-






Set SS_rLoc[SS_iC] = SS_rLoc[SS_iM]
-






Set SS_Missle[SS_iC] = SS_Missle[SS_iM]
-






Set SS_SFX[SS_iC] = SS_SFX[SS_iM]
-






Set SS_mLoc[SS_iC] = SS_mLoc[SS_iM]
-






Set SS_Distance[SS_iC] = SS_Distance[SS_iM]
-






Set SS_iM = (SS_iM - 1)
-






Set SS_iC = (SS_iC - 1)
-






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







If - Conditions
-








SS_iM Equal to 0
-
-







Then - Actions
-








Trigger - Turn off (This trigger)
-
-







Else - Actions
-
-
-





Else - Actions
-
-
-
-
-
Issue is propably with SS_Move, but even with
set udg_SS_Move[udg_SS_iC] = PolarProjectionBJ(udg_SS_mLoc[udg_SS_iC], 50.00, udg_SS_Angle[udg_SS_iC])
call SetUnitPositionLoc( udg_SS_Missle[udg_SS_iC], udg_SS_Move[udg_SS_iC] )
bug still occured.
Last edited:


