Moderator
M
Moderator
07:32, 19th Jul 2011
Maker:
Approved.
Maker:
Approved.
Soul Blast

Events


Unit - A unit Begins channeling an ability

Conditions


(Ability being cast) Equal to Soul Blast

Actions


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



If - Conditions




SBHas[SBLastRecycled] Equal to True



Then - Actions




Set SBMax = (SBMax + 1)




Set SBIndex = SBMax



Else - Actions




Set SBIndex = SBLastRecycled




Set SBLastRecycled = SBRecycledList[SBLastRecycled]


Set SBCaster[SBIndex] = (Triggering unit)


Set SBCasterPoint[SBIndex] = (Position of SBCaster[SBIndex])


Set SBTargetPoint[SBIndex] = (Target point of ability being cast)


Set SBDistance[SBIndex] = 50.00


Set SBLevel[SBIndex] = (Level of Soul Blast for SBCaster[SBIndex])


Set SBMaxDistance[SBIndex] = (1000.00 + (250.00 x (Real((Level of Soul Blast for SBCaster[SBIndex])))))


Set SBAngle[SBIndex] = (Angle from SBCasterPoint[SBIndex] to SBTargetPoint[SBIndex])


Set SBTempPoint = (SBCasterPoint[SBIndex] offset by 50.00 towards SBAngle[SBIndex] degrees)


Set SBEffectDelayer[SBIndex] = 0


Custom script: set udg_SBDummyGroup[udg_SBIndex] = CreateGroup()


Unit - Create 1 Missile Body 1 for Neutral Passive at SBCasterPoint[SBIndex] facing SBAngle[SBIndex] degrees


Unit Group - Add (Last created unit) to SBDummyGroup[SBIndex]


Animation - Change (Last created unit)'s animation speed to 5.00% of its original speed


Unit - Create 1 Missile Body 2 for Neutral Passive at SBCasterPoint[SBIndex] facing SBAngle[SBIndex] degrees


Unit Group - Add (Last created unit) to SBDummyGroup[SBIndex]


Unit - Create 1 Missile Head for Neutral Passive at SBTempPoint facing SBAngle[SBIndex] degrees


Unit Group - Add (Last created unit) to SBDummyGroup[SBIndex]


Custom script: set udg_SBChannelGroup[udg_SBIndex] = CreateGroup()


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



Loop - Actions




Set SBScale[SBIndex] = (100.00 x (Real((Integer A))))




Unit - Create 1 Channel Effect for Neutral Passive at SBCasterPoint[SBIndex] facing SBAngle[SBIndex] degrees




Animation - Change (Picked unit)'s size to (SBScale[SBIndex]%, SBScale[SBIndex]%, SBScale[SBIndex]%) of its original size




Unit Group - Add (Last created unit) to SBChannelGroup[SBIndex]


Set SBHas[SBIndex] = True


Set SBCount = (SBCount + 1)


Set SBTimer[SBIndex] = 3.00


Custom script: call RemoveLocation (udg_SBTempPoint)


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



If - Conditions




(Soul Blast Loop <gen> is on) Equal to False



Then - Actions




Trigger - Turn on Soul Blast Loop <gen>



Else - Actions
Soul Blast Halt

Events


Unit - A unit Stops casting an ability


Unit - A unit Finishes casting an ability

Conditions


(Ability being cast) Equal to Soul Blast

Actions


For each (Integer A) from 0 to SBMax, do (Actions)



Loop - Actions




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





If - Conditions






SBCaster[(Integer A)] Equal to (Triggering unit)





Then - Actions






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







If - Conditions








SBTimer[(Integer A)] Greater than 0.00







Then - Actions








Unit Group - Pick every unit in SBDummyGroup[(Integer A)] and do (Unit - Kill (Picked unit))








Unit Group - Pick every unit in SBChannelGroup[(Integer A)] and do (Unit - Remove (Picked unit) from the game)








Custom script: call DestroyGroup (udg_SBChannelGroup[GetForLoopIndexA()])








Custom script: call DestroyGroup (udg_SBDummyGroup[GetForLoopIndexA()])








Set SBTimer[(Integer A)] = 0.00








Custom script: call RemoveLocation (udg_SBTargetPoint[GetForLoopIndexA()])








Custom script: call RemoveLocation (udg_SBCasterPoint[GetForLoopIndexA()])








Set SBHas[(Integer A)] = False








Set SBRecycledList[(Integer A)] = SBLastRecycled








Set SBLastRecycled = (Integer A)








Set SBCount = (SBCount - 1)








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









If - Conditions










SBCount Equal to 0









Then - Actions










Set SBRecycledList[(Integer A)] = 0










Set SBLastRecycled = 0










Set SBMax = 0










Trigger - Turn off Soul Blast Loop <gen>









Else - Actions







Else - Actions





Else - Actions
Soul Blast Loop

Events


Time - Every 0.03 seconds of game time

Conditions

Actions


For each (Integer SBInteger) from 0 to SBMax, do (Actions)



Loop - Actions




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





If - Conditions






SBHas[SBInteger] Equal to True





Then - Actions






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







If - Conditions








SBTimer[SBInteger] Greater than 0.00







Then - Actions








Set SBTimer[SBInteger] = (SBTimer[SBInteger] - 0.03)








Set SBScale[SBInteger] = (SBScale[SBInteger] - 10.00)








Set r = SBScale[SBInteger]








Set SBEffectDelayer[SBInteger] = (SBEffectDelayer[SBInteger] + 1)








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









If - Conditions










(SBEffectDelayer[SBInteger] mod 2) Equal to 0









Then - Actions










Unit - Create 1 Blast Effect for Neutral Passive at SBCasterPoint[SBInteger] facing Default building facing degrees










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









Else - Actions








Unit Group - Pick every unit in SBChannelGroup[SBInteger] and do (Actions)









Loop - Actions










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











If - Conditions












r Less than 110.00











Then - Actions












Set r = 200.00











Else - Actions












Set r = (r - 100.00)










Animation - Change (Picked unit)'s size to (r%, r%, r%) of its original size







Else - Actions








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









If - Conditions










(Number of units in SBChannelGroup[SBInteger]) Not equal to 0









Then - Actions










Unit Group - Pick every unit in SBChannelGroup[SBInteger] and do (Unit - Remove (Picked unit) from the game)









Else - Actions








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









If - Conditions










SBDistance[SBInteger] Less than SBMaxDistance[SBInteger]









Then - Actions










Set SBEffectDelayer[SBInteger] = (SBEffectDelayer[SBInteger] + 1)










Set SBDistance[SBInteger] = (SBDistance[SBInteger] + 40.00)










Set SBTempPoint = (SBCasterPoint[SBInteger] offset by SBDistance[SBInteger] towards SBAngle[SBInteger] degrees)










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











If - Conditions












(SBEffectDelayer[SBInteger] mod 2) Equal to 0











Then - Actions












Unit - Create 1 Wave Effect for Neutral Passive at SBTempPoint facing (Angle from SBCasterPoint[SBInteger] to SBTargetPoint[SBInteger]) degrees












Animation - Change (Last created unit)'s animation speed to 150.00% of its original speed












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











Else - Actions










Unit Group - Pick every unit in SBDummyGroup[SBInteger] and do (Actions)











Loop - Actions












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













If - Conditions














(Unit-type of (Picked unit)) Equal to Missile Head














((3.00 - SBTimer[SBInteger]) mod 0.06) Greater than or equal to 10.00













Then - Actions














Set SBTempPoint2 = (SBCasterPoint[SBInteger] offset by (SBDistance[SBInteger] + 40.00) towards SBAngle[SBInteger] degrees)














Unit - Move (Picked unit) instantly to SBTempPoint2














Custom script: call RemoveLocation (udg_SBTempPoint2)













Else - Actions














Unit - Move (Picked unit) instantly to SBTempPoint










Set SBTempGroup = (Units within 100.00 of SBTempPoint matching ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is Magic Immune) Equal to False) and ((((Matching unit) is alive) Equal to True) and (((Matching unit) belongs to an enemy of (Owner of SBCa










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











If - Conditions












(SBTempGroup is empty) Equal to True











Then - Actions











Else - Actions












Custom script: call RemoveLocation (udg_SBTargetPoint[udg_SBInteger])












Custom script: call RemoveLocation (udg_SBCasterPoint[udg_SBInteger])












Unit Group - Pick every unit in SBDummyGroup[SBInteger] and do (Unit - Kill (Picked unit))












Unit Group - Pick every unit in SBChannelGroup[SBInteger] and do (Unit - Remove (Picked unit) from the game)












Custom script: call DestroyGroup (udg_SBDummyGroup[udg_SBInteger])












Custom script: call DestroyGroup (udg_SBChannelGroup[udg_SBInteger])












Custom script: set bj_wantDestroyGroup = true












Unit Group - Pick every unit in (Units within 250.00 of SBTempPoint matching ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is Magic Immune) Equal to False) and ((((Matching unit) is alive) Equal to True) and (((Matching unit) belongs to an enemy of (Owner of SBCa and do (Actions)













Loop - Actions














Unit - Cause SBCaster[SBInteger] to damage (Picked unit), dealing (100.00 x (Real(SBLevel[SBInteger]))) damage of attack type Spells and damage type Magic












Unit - Create 1 Blast Effect for Neutral Passive at SBTempPoint facing Default building facing degrees












Animation - Change (Last created unit)'s animation speed to 50.00% of its original speed












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












Unit - Create 1 Blast Effect 2 for Neutral Passive at SBTempPoint facing Default building facing degrees












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












Set SBHas[SBInteger] = False












Set SBCount = (SBCount - 1)












Set SBRecycledList[SBInteger] = SBLastRecycled












Set SBLastRecycled = SBInteger












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













If - Conditions














SBCount Equal to 0













Then - Actions














Trigger - Turn off (This trigger)













Else - Actions










Custom script: call DestroyGroup (udg_SBTempGroup)










Custom script: call RemoveLocation (udg_SBTempPoint)









Else - Actions










Set SBHas[SBInteger] = False










Custom script: set bj_wantDestroyGroup = true










Unit Group - Pick every unit in SBDummyGroup[SBInteger] and do (Unit - Kill (Picked unit))










Unit Group - Pick every unit in SBChannelGroup[SBInteger] and do (Unit - Remove (Picked unit) from the game)










Custom script: call DestroyGroup (udg_SBDummyGroup[udg_SBInteger])










Custom script: call DestroyGroup (udg_SBChannelGroup[udg_SBInteger])










Custom script: call RemoveLocation (udg_SBTargetPoint[udg_SBInteger])










Custom script: call RemoveLocation (udg_SBCasterPoint[udg_SBInteger])










Set SBCount = (SBCount - 1)










Set SBRecycledList[SBInteger] = SBLastRecycled










Set SBLastRecycled = SBInteger










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











If - Conditions












SBCount Equal to 0











Then - Actions












Set SBRecycledList[SBInteger] = 0












Set SBLastRecycled = 0












Set SBMax = 0












Trigger - Turn off (This trigger)











Else - Actions





Else - Actions