Follow along with the video below to see how to install our site as a web app on your home screen.
Note: This feature may not be available in some browsers.
No it didn't solve the problemThere was a 0 length global anim that I removed, not sure if that was the problem but the model looks fine when tested so I guess it was that?
View attachment 549493
Spirit Lance Config

Events


Map initialization

Conditions

Actions


-------- Spirit Lance Ability --------


Set VariableSet SpiritLance_Ability = Spirit Bolt


-------- Spirit Lance Cripple Ability --------


Set VariableSet SpiritLance_AbilityCripple = Spirit Bolt Cripple


-------- Spirit Lance Dummy --------


Set VariableSet SpiritLance_DummyType = Dummy (Vexorian, Anitarf, Infrane)


-------- Spirit Lance Missile Effect --------


Set VariableSet SpiritLance_MissileSFX = war3mapImported\WolfHeadProjectile109.mdx


-------- Spirit Lance Missile Speed --------


Set VariableSet SpiritLance_MissileSpeed = 800.00


-------- Spirit Lance Missile Height --------


Set VariableSet SpiritLance_MissileHeight = 50.00


-------- Missile Collision Range (Do not set too low or too high, make sure it is slightly above actual missile speed) --------


Set VariableSet SpiritLance_MissileCollide = 75.00


-------- Spirit Lance Damage --------


Set VariableSet SpiritLance_Damage[1] = 100.00


Set VariableSet SpiritLance_Damage[2] = 150.00


Set VariableSet SpiritLance_Damage[3] = 200.00


Set VariableSet SpiritLance_Damage[4] = 250.00


-------- Spirit Lance Damage Type --------


Set VariableSet SpiritLance_DamageDT = Normal


-------- Spirit Lance Attack Type --------


Set VariableSet SpiritLance_DamageAT = Spells


-------- Spirit Lance Movement Speed Cripple (1.00 = 100%) --------


Set VariableSet SpiritLance_MSCripple[1] = 0.10


Set VariableSet SpiritLance_MSCripple[2] = 0.20


Set VariableSet SpiritLance_MSCripple[3] = 0.30


Set VariableSet SpiritLance_MSCripple[4] = 0.40


-------- Spirit Lance Attack Speed Cripple (1.00 = 100%) --------


Set VariableSet SpiritLance_ASCripple[1] = 0.10


Set VariableSet SpiritLance_ASCripple[2] = 0.20


Set VariableSet SpiritLance_ASCripple[3] = 0.30


Set VariableSet SpiritLance_ASCripple[4] = 0.40


-------- Spirit Lance Slow Duration --------


Set VariableSet SpiritLance_CrippleDur[1] = 3.25


Set VariableSet SpiritLance_CrippleDur[2] = 3.25


Set VariableSet SpiritLance_CrippleDur[3] = 3.25


Set VariableSet SpiritLance_CrippleDur[4] = 3.25


-------- Spirit Lance Illusion Damage Dealt (1.00 = 100%) --------


Set VariableSet SpiritLance_IlluDamageDealt[1] = 0.25


Set VariableSet SpiritLance_IlluDamageDealt[2] = 0.25


Set VariableSet SpiritLance_IlluDamageDealt[3] = 0.25


Set VariableSet SpiritLance_IlluDamageDealt[4] = 0.25


-------- Spirit Lance Illusion Damage Taken (1.00 = 100%) --------


Set VariableSet SpiritLance_IlluDamageTaken[1] = 4.00


Set VariableSet SpiritLance_IlluDamageTaken[2] = 4.00


Set VariableSet SpiritLance_IlluDamageTaken[3] = 4.00


Set VariableSet SpiritLance_IlluDamageTaken[4] = 4.00


-------- Spirit Lance Illusion Duration --------


Set VariableSet SpiritLance_IlluDur[1] = 2.00


Set VariableSet SpiritLance_IlluDur[2] = 4.00


Set VariableSet SpiritLance_IlluDur[3] = 6.00


Set VariableSet SpiritLance_IlluDur[4] = 8.00


-------- Spirit Lance Illusion Args --------


Set VariableSet SpiritLance_Args = SpiritLance


-------- Spirit Lance Loop Check (in seconds, recommended between 0.03 to 0.10) --------


Set VariableSet SpiritLance_Loop = 0.03


-------- END CONFIG --------


-------- Actual Speed --------


Set VariableSet SpiritLance_MissileSpeed = (SpiritLance_MissileSpeed x SpiritLance_Loop)


-------- Triggers --------


Trigger - Add to Spirit Lance Loop <gen> the event (Time - Every SpiritLance_Loop seconds of game time)
Spirit Lance Cast

Events


Unit - A unit Starts the effect of an ability

Conditions


(Ability being cast) Equal to SpiritLance_Ability

Actions


Set VariableSet SpiritLance_MaxIndex = (SpiritLance_MaxIndex + 1)


Set VariableSet SpiritLance_Source[SpiritLance_MaxIndex] = (Triggering unit)


Set VariableSet SpiritLance_Target[SpiritLance_MaxIndex] = (Target unit of ability being cast)


Set VariableSet SpiritLance_Level[SpiritLance_MaxIndex] = (Level of SpiritLance_Ability for SpiritLance_Source[SpiritLance_MaxIndex])


Set VariableSet SpiritLance_MissilePoint[SpiritLance_MaxIndex] = (Position of SpiritLance_Source[SpiritLance_MaxIndex])


Special Effect - Create a special effect at SpiritLance_MissilePoint[SpiritLance_MaxIndex] using SpiritLance_MissileSFX


Special Effect - Set Position - Z of (Last created special effect) to SpiritLance_MissileHeight


Set VariableSet SpiritLance_MissileEffect[SpiritLance_MaxIndex] = (Last created special effect)


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



If - Conditions




SpiritLance_MaxIndex Equal to 1



Then - Actions




Trigger - Turn on Spirit Lance Loop <gen>



Else - Actions
Spirit Lance Loop

Events

Conditions

Actions


For each (Integer SpiritLance_Index) from 1 to SpiritLance_MaxIndex, do (Actions)



Loop - Actions




Set VariableSet SpiritLance_MissilePointOld = SpiritLance_MissilePoint[SpiritLance_Index]




Set VariableSet SpiritLance_MissilePointTarget = (Position of SpiritLance_Target[SpiritLance_Index])




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





If - Conditions






(Distance between SpiritLance_MissilePointOld and SpiritLance_MissilePointTarget) Greater than SpiritLance_MissileCollide





Then - Actions






-------- Move --------






Set VariableSet SpiritLance_MissilePoint[SpiritLance_Index] = (SpiritLance_MissilePoint[SpiritLance_Index] offset by SpiritLance_MissileSpeed towards (Angle from SpiritLance_MissilePointOld to SpiritLance_MissilePointTarget) degrees.)






Special Effect - Set Position of SpiritLance_MissileEffect[SpiritLance_Index] to SpiritLance_MissilePoint[SpiritLance_Index]






Special Effect - Set Position - Z of SpiritLance_MissileEffect[SpiritLance_Index] to SpiritLance_MissileHeight





Else - Actions






-------- Collision --------






Special Effect - Destroy SpiritLance_MissileEffect[SpiritLance_Index]






-------- Cripple --------






Unit - Cause SpiritLance_Source[SpiritLance_Index] to damage SpiritLance_Target[SpiritLance_Index], dealing SpiritLance_Damage[SpiritLance_Level[SpiritLance_Index]] damage of attack type SpiritLance_DamageAT and damage type SpiritLance_DamageDT






Unit - Create 1 SpiritLance_DummyType for Neutral Passive at SpiritLance_MissilePointOld facing Default building facing degrees






Unit - Add SpiritLance_AbilityCripple to (Last created unit)






Ability - Set Ability: (Unit: (Last created unit)'s Ability with Ability Code: SpiritLance_AbilityCripple)'s Real Level Field: Movement Speed Reduction (%) ('Cri1') of Level: 0 to SpiritLance_MSCripple[SpiritLance_Level[SpiritLance_Index]]






Ability - Set Ability: (Unit: (Last created unit)'s Ability with Ability Code: SpiritLance_AbilityCripple)'s Real Level Field: Attack Speed Reduction (%) ('Cri2') of Level: 0 to SpiritLance_ASCripple[SpiritLance_Level[SpiritLance_Index]]






Ability - Set Ability: (Unit: (Last created unit)'s Ability with Ability Code: SpiritLance_AbilityCripple)'s Real Level Field: Duration - Normal ('adur') of Level: 0 to SpiritLance_CrippleDur[SpiritLance_Level[SpiritLance_Index]]






Ability - Set Ability: (Unit: (Last created unit)'s Ability with Ability Code: SpiritLance_AbilityCripple)'s Real Level Field: Duration - Hero ('ahdu') of Level: 0 to SpiritLance_CrippleDur[SpiritLance_Level[SpiritLance_Index]]






Unit - Increase level of SpiritLance_AbilityCripple for (Last created unit)






Unit - Decrease level of SpiritLance_AbilityCripple for (Last created unit)






Unit - Order (Last created unit) to Undead Necromancer - Cripple SpiritLance_Target[SpiritLance_Index]






Unit - Add a 1.00 second Generic expiration timer to (Last created unit)






-------- Illusion --------






Set VariableSet SpiritLance_CVIndex = (Custom value of SpiritLance_Source[SpiritLance_Index])






Set VariableSet SpiritLance_TargetIllusion[SpiritLance_CVIndex] = SpiritLance_Target[SpiritLance_Index]






Set VariableSet Illusion_Unit = SpiritLance_Source[SpiritLance_Index]






Set VariableSet Illusion_Player = (Owner of Illusion_Unit)






Set VariableSet Illusion_DamageDealt = SpiritLance_IlluDamageDealt[SpiritLance_Level[SpiritLance_Index]]






Set VariableSet Illusion_DamageTaken = SpiritLance_IlluDamageTaken[SpiritLance_Level[SpiritLance_Index]]






Set VariableSet Illusion_Duration = SpiritLance_IlluDur[SpiritLance_Level[SpiritLance_Index]]






Set VariableSet Illusion_AppearCustomized = True






Set VariableSet Illusion_AppearPoint = (Position of SpiritLance_Target[SpiritLance_Index])






Set VariableSet Illusion_AppearFacing = (Angle from Illusion_AppearPoint to SpiritLance_MissilePointTarget)






Set VariableSet Illusion_Args = SpiritLance_Args






Trigger - Run Illusion_CreateTrigger (checking conditions)






-------- De-Index --------






Set VariableSet SpiritLance_MissilePoint[SpiritLance_Index] = SpiritLance_MissilePoint[SpiritLance_MaxIndex]






Set VariableSet SpiritLance_MissileEffect[SpiritLance_Index] = SpiritLance_MissileEffect[SpiritLance_MaxIndex]






Set VariableSet SpiritLance_Level[SpiritLance_Index] = SpiritLance_Level[SpiritLance_MaxIndex]






Set VariableSet SpiritLance_Source[SpiritLance_Index] = SpiritLance_Source[SpiritLance_MaxIndex]






Set VariableSet SpiritLance_Target[SpiritLance_Index] = SpiritLance_Target[SpiritLance_MaxIndex]






Set VariableSet SpiritLance_MaxIndex = (SpiritLance_MaxIndex - 1)






Set VariableSet SpiritLance_Index = (SpiritLance_Index - 1)






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







If - Conditions








SpiritLance_MaxIndex Equal to 0







Then - Actions








Trigger - Turn off (This trigger)







Else - Actions




Custom script: call RemoveLocation(udg_SpiritLance_MissilePointOld)




Custom script: call RemoveLocation(udg_SpiritLance_MissilePointTarget)
Spirit Lance Focus

Events


Game - Illusion_Event becomes Equal to 1.00

Conditions


Illusion_Args Equal to SpiritLance_Args

Actions


Set VariableSet SpiritLance_CVIndex = (Custom value of Illusion_Unit)


Unit - Order Illusion_UnitIllusion to Attack SpiritLance_TargetIllusion[SpiritLance_CVIndex]
