Arctic Blast Config

Events


Time - Elapsed game time is 0.00 seconds

Conditions

Actions


-------- The ID of Main Abillity, in this case: "Arctic Blast" --------


Set ArcticBlast = Arctic Blast


-------- The ID of Arctic Blast's Slow --------


Set ArcticBlastSlow = Arctic Blast Slow


-------- The Effect upon being damaged by Arctic Blast --------


Set ArcticBlastDamageEffect = Abilities\Spells\Undead\FrostNova\FrostNovaTarget.mdl


-------- The Effect Attachment --------


Set ArcticBlastDamageAttach = origin


-------- Arctic Blast's Attack Type --------


Set ArcticBlastAttackType = Spells


-------- Arctic Blast's Damage Type --------


Set ArcticBlastDamageType = Universal


-------- The ID of Visual Dummy, which means "spreading out effect" --------


Set ArcticBlastVisualDummy = Arctic Blast Dummy


-------- The Amount of "Visual Dummy" will be created upon casting Arctic Blast --------


Set ArcticBlastEffectAmount[1] = 9


Set ArcticBlastEffectAmount[2] = 18


Set ArcticBlastEffectAmount[3] = 27


Set ArcticBlastEffectAmount[4] = 36


-------- The ID of Caster Dummy --------


Set ArcticBlastDummy = Dummy


-------- Arctic Blast's Damage --------


Set ArcticBlastDamage[1] = 100.00


Set ArcticBlastDamage[2] = 200.00


Set ArcticBlastDamage[3] = 300.00


Set ArcticBlastDamage[4] = 400.00


-------- Arctic Blast's Speed --------


Set ArcticBlastSpeed[1] = 400.00


Set ArcticBlastSpeed[2] = 450.00


Set ArcticBlastSpeed[3] = 500.00


Set ArcticBlastSpeed[4] = 550.00


-------- Arctic Blast's Maximum AoE --------


Set ArcticBlastMaxAoE[1] = 600.00


Set ArcticBlastMaxAoE[2] = 700.00


Set ArcticBlastMaxAoE[3] = 800.00


Set ArcticBlastMaxAoE[4] = 900.00


-------- Arctic Blast Damage Radius --------


Set ArcticBlastDamageRadius[1] = 100.00


Set ArcticBlastDamageRadius[2] = 125.00


Set ArcticBlastDamageRadius[3] = 150.00


Set ArcticBlastDamageRadius[4] = 175.00
Arctic Blast

Events


Unit - A unit Starts the effect of an ability

Conditions


(Ability being cast) Equal to ArcticBlast

Actions


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



If - Conditions




ArcticBlastIndex Equal to 0



Then - Actions




Trigger - Turn on Arctic Blast Expand <gen>



Else - Actions


Set ArcticBlastIndex = (ArcticBlastIndex + 1)


Custom script: if udg_ArcticBlastDamagedGroup[udg_ArcticBlastIndex] == null then


Custom script: set udg_ArcticBlastDamagedGroup[udg_ArcticBlastIndex] = CreateGroup()


Custom script: endif


Custom script: if udg_ArcticBlastDummyGroup[udg_ArcticBlastIndex] == null then


Custom script: set udg_ArcticBlastDummyGroup[udg_ArcticBlastIndex] = CreateGroup()


Custom script: endif


Set ArcticBlastCaster[ArcticBlastIndex] = (Triggering unit)


Set ArcticBlastLevel[ArcticBlastIndex] = (Level of ArcticBlast for ArcticBlastCaster[ArcticBlastIndex])


Set ArcticBlastEffectAmount[ArcticBlastIndex] = ArcticBlastEffectAmount[ArcticBlastLevel[ArcticBlastIndex]]


Set ArcticBlastMaxAoE[ArcticBlastIndex] = ArcticBlastMaxAoE[ArcticBlastLevel[ArcticBlastIndex]]


Set ArcticBlastDamage[ArcticBlastIndex] = ArcticBlastDamage[ArcticBlastLevel[ArcticBlastIndex]]


Set ArcticBlastSpeed[ArcticBlastIndex] = ArcticBlastSpeed[ArcticBlastLevel[ArcticBlastIndex]]


Set ArcticBlastDamageRadius[ArcticBlastIndex] = ArcticBlastDamageRadius[ArcticBlastLevel[ArcticBlastIndex]]


Set ArcticBlastSpreadOutSpeed[ArcticBlastIndex] = (ArcticBlastSpeed[ArcticBlastLevel[ArcticBlastIndex]] x 0.03)


Set ArcticBlastTriggerPlayer[ArcticBlastIndex] = (Owner of ArcticBlastCaster[ArcticBlastIndex])


Set ArcticBlastDistance[ArcticBlastIndex] = 0.00


Set ArcticBlastPoint = (Position of ArcticBlastCaster[ArcticBlastIndex])


Set ArcticBlastReal = 0.00


Unit - Create 1 ArcticBlastDummy for ArcticBlastTriggerPlayer[ArcticBlastIndex] at ArcticBlastPoint facing ArcticBlastReal degrees


Set ArcticBlastDummySlowUnit[ArcticBlastIndex] = (Last created unit)


Unit - Add ArcticBlastSlow to ArcticBlastDummySlowUnit[ArcticBlastIndex]


Unit - Set level of ArcticBlastSlow for ArcticBlastDummySlowUnit[ArcticBlastIndex] to ArcticBlastLevel[ArcticBlastIndex]


For each (Integer ArcticBlastInteger) from 1 to ArcticBlastEffectAmount[ArcticBlastIndex], do (Actions)



Loop - Actions




Set ArcticBlastReal = (ArcticBlastReal + (360.00 / (Real(ArcticBlastEffectAmount[ArcticBlastIndex]))))




Set ArcticBlastOffset = (ArcticBlastPoint offset by ArcticBlastDistance[ArcticBlastIndex] towards ArcticBlastReal degrees)




Unit - Create 1 ArcticBlastVisualDummy for ArcticBlastTriggerPlayer[ArcticBlastIndex] at ArcticBlastOffset facing ArcticBlastReal degrees




Unit Group - Add (Last created unit) to ArcticBlastDummyGroup[ArcticBlastIndex]




Custom script: call RemoveLocation(udg_ArcticBlastOffset)


Custom script: call RemoveLocation(udg_ArcticBlastPoint)
Arctic Blast Expand

Events


Time - Every 0.03 seconds of game time

Conditions

Actions


For each (Integer ArcticBlastLoopIndex) from 1 to ArcticBlastIndex, do (Actions)



Loop - Actions




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





If - Conditions






ArcticBlastDistance[ArcticBlastLoopIndex] Greater than or equal to ArcticBlastMaxDistance[ArcticBlastLoopIndex]





Then - Actions






Unit Group - Pick every unit in ArcticBlastDummyGroup[ArcticBlastLoopIndex] and do (Actions)







Loop - Actions








Unit - Kill (Picked unit)






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






-------- Removing Leaks --------






Unit - Remove ArcticBlastDummySlowUnit[ArcticBlastLoopIndex] from the game






Custom script: call DestroyGroup(udg_ArcticBlastDummyGroup[udg_ArcticBlastLoopIndex])






Custom script: call DestroyGroup(udg_ArcticBlastDamagedGroup[udg_ArcticBlastLoopIndex])






Set ArcticBlastCaster[ArcticBlastLoopIndex] = ArcticBlastCaster[ArcticBlastIndex]






Set ArcticBlastTriggerPlayer[ArcticBlastLoopIndex] = ArcticBlastTriggerPlayer[ArcticBlastIndex]






Set ArcticBlastLevel[ArcticBlastLoopIndex] = ArcticBlastLevel[ArcticBlastIndex]






Set ArcticBlastDummySlowUnit[ArcticBlastLoopIndex] = ArcticBlastDummySlowUnit[ArcticBlastIndex]






Set ArcticBlastDistance[ArcticBlastLoopIndex] = ArcticBlastDistance[ArcticBlastIndex]






Set ArcticBlastMaxDistance[ArcticBlastLoopIndex] = ArcticBlastMaxDistance[ArcticBlastIndex]






Set ArcticBlastDamage[ArcticBlastLoopIndex] = ArcticBlastDamage[ArcticBlastIndex]






Set ArcticBlastSpeed[ArcticBlastLoopIndex] = ArcticBlastSpeed[ArcticBlastIndex]






Set ArcticBlastRadius[ArcticBlastLoopIndex] = ArcticBlastRadius[ArcticBlastIndex]






Set ArcticBlastEffectAmount[ArcticBlastLoopIndex] = ArcticBlastEffectAmount[ArcticBlastIndex]






Set ArcticBlastSpreadOutSpeed[ArcticBlastLoopIndex] = ArcticBlastSpreadOutSpeed[ArcticBlastIndex]






Set ArcticBlastDummyGroup[ArcticBlastLoopIndex] = ArcticBlastDummyGroup[ArcticBlastIndex]






Set ArcticBlastDamagedGroup[ArcticBlastLoopIndex] = ArcticBlastDamagedGroup[ArcticBlastIndex]






Custom script: set udg_ArcticBlastDummyGroup[udg_ArcticBlastIndex] = null






Custom script: set udg_ArcticBlastDamagedGroup[udg_ArcticBlastIndex] = null






Set ArcticBlastLoopIndex = (ArcticBlastLoopIndex - 1)






Set ArcticBlastIndex = (ArcticBlastIndex - 1)






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







If - Conditions








ArcticBlastIndex Equal to 0







Then - Actions








Trigger - Turn off (This trigger)







Else - Actions





Else - Actions






Set ArcticBlastDistance[ArcticBlastLoopIndex] = (ArcticBlastDistance[ArcticBlastLoopIndex] + ArcticBlastSpreadOutSpeed[ArcticBlastLoopIndex])






Set ArcticBlastPoint = (Position of ArcticBlastCaster[ArcticBlastLoopIndex])






Unit Group - Pick every unit in ArcticBlastDummyGroup[ArcticBlastLoopIndex] and do (Actions)







Loop - Actions








Set ArcticBlastVisualDummyUnit = (Picked unit)








Set ArcticBlastReal = (Facing of ArcticBlastVisualDummyUnit)








Set ArcticBlastOffset = (ArcticBlastPoint offset by ArcticBlastDistance[ArcticBlastLoopIndex] towards ArcticBlastReal degrees)








Unit - Move ArcticBlastVisualDummyUnit instantly to ArcticBlastOffset








Set ArcticBlastGroup = (Units within ArcticBlastRadius[ArcticBlastLoopIndex] of ArcticBlastOffset)








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









Loop - Actions










Set ArcticBlastDamagedUnit = (Picked unit)










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











If - Conditions












(ArcticBlastDamagedUnit is A structure) Equal to False












(ArcticBlastDamagedUnit is Magic Immune) Equal to False












(ArcticBlastDamagedUnit is alive) Equal to True












(ArcticBlastDamagedUnit belongs to an enemy of ArcticBlastTriggerPlayer[ArcticBlastLoopIndex]) Equal to True












(ArcticBlastDamagedUnit is in ArcticBlastDamagedGroup[ArcticBlastLoopIndex]) Equal to False











Then - Actions












-------- Since the picked is only damaged for 1 time in a loop, so its added to a unit group --------












-------- Damaging and Slow --------












Unit Group - Add ArcticBlastDamagedUnit to ArcticBlastDamagedGroup[ArcticBlastLoopIndex]












Unit - Cause ArcticBlastCaster[ArcticBlastLoopIndex] to damage ArcticBlastDamagedUnit, dealing ArcticBlastDamage[ArcticBlastLoopIndex] damage of attack type ArcticBlastAttackType and damage type ArcticBlastDamageType












Unit - Order ArcticBlastDummySlowUnit[ArcticBlastLoopIndex] to Human Sorceress - Slow ArcticBlastDamagedUnit












Special Effect - Create a special effect attached to the origin of ArcticBlastDamagedUnit using ArcticBlastDamageEffect












Special Effect - Destroy (Last created special effect)











Else - Actions








Custom script: call DestroyGroup(udg_ArcticBlastGroup)








Custom script: call RemoveLocation(udg_ArcticBlastOffset)






Custom script: call RemoveLocation(udg_ArcticBlastPoint)