Moderator
M
Moderator
|
SEARSTART

Events


Unit - A unit Starts the effect of an ability

Conditions


(Ability being cast) Equal to B_SEAR_ABILITY

Actions


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



If - Conditions




B_SEAR_INDEX_LISTENER Equal to 0



Then - Actions




Trigger - Turn on SEARLOOP <gen>



Else - Actions


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



If - Conditions




B_SEAR_RECYCLE_SIZE Greater than 0



Then - Actions




Set B_SEAR_RECYCLE_SIZE = (B_SEAR_RECYCLE_SIZE - 1)




Set B_SEAR_CURRENT_INDEX = B_SEAR_RECYCLE_CONTAINER[B_SEAR_RECYCLE_SIZE]



Else - Actions




Set B_SEAR_CURRENT_INDEX = B_SEAR_INDEX_SIZE




Set B_SEAR_INDEX_SIZE = (B_SEAR_INDEX_SIZE + 1)


-------- IMPORTANT VARIABLES --------


Set B_SEAR_TRIGGER_UNIT[B_SEAR_CURRENT_INDEX] = (Triggering unit)


Set B_SEAR_TEMPLOC1 = (Position of B_SEAR_TRIGGER_UNIT[B_SEAR_CURRENT_INDEX])


Set B_SEAR_TEMPLOC2 = (Target point of ability being cast)


Set B_SEAR_ANGLE[B_SEAR_CURRENT_INDEX] = (Angle from B_SEAR_TEMPLOC1 to B_SEAR_TEMPLOC2)


Unit - Create 1 B_SEAR_MISSILE_TYPE for (Owner of B_SEAR_TRIGGER_UNIT[B_SEAR_CURRENT_INDEX]) at B_SEAR_TEMPLOC1 facing B_SEAR_ANGLE[B_SEAR_CURRENT_INDEX] degrees


Set B_SEAR_PROJECTILE[B_SEAR_CURRENT_INDEX] = (Last created unit)


Set B_SEAR_HIT_A_UNIT[B_SEAR_CURRENT_INDEX] = False


Set B_SEAR_LEVEL_OF_ABILITY[B_SEAR_CURRENT_INDEX] = (Level of B_SEAR_ABILITY for B_SEAR_TRIGGER_UNIT[B_SEAR_CURRENT_INDEX])


Set B_SEAR_AOE[B_SEAR_CURRENT_INDEX] = B_SEAR_CONFIG_BASE_AOE[B_SEAR_LEVEL_OF_ABILITY[B_SEAR_CURRENT_INDEX]]


Set B_SEAR_RANGE[B_SEAR_CURRENT_INDEX] = 0.00


Set B_SEAR_SPEED[B_SEAR_CURRENT_INDEX] = B_SEAR_CONFIG_BASE_SPEED[B_SEAR_LEVEL_OF_ABILITY[B_SEAR_CURRENT_INDEX]]


Set B_SEAR_DAMAGE[B_SEAR_CURRENT_INDEX] = B_SEAR_CONFIG_BASE_DAMAGE[B_SEAR_LEVEL_OF_ABILITY[B_SEAR_CURRENT_INDEX]]


Set B_SEAR_DAMAGE[B_SEAR_CURRENT_INDEX] = (B_SEAR_DAMAGE[B_SEAR_CURRENT_INDEX] + ((Real((Intelligence of B_SEAR_TRIGGER_UNIT[B_SEAR_CURRENT_INDEX] (Include bonuses)))) x 0.65))


Custom script: call RemoveLocation(udg_B_SEAR_TEMPLOC1)


Custom script: call RemoveLocation(udg_B_SEAR_TEMPLOC2)


-------- IMPORTANT SYSTEM PART START --------


Set B_SEAR_INDEX_CONTAINER[B_SEAR_INDEX_LISTENER] = B_SEAR_CURRENT_INDEX


Set B_SEAR_INDEX_LISTENER = (B_SEAR_INDEX_LISTENER + 1)
SEARLOOP

Events


Time - Every 0.03 seconds of game time

Conditions

Actions


-------- Dynamic Loop --------


For each (Integer B_SEAR_EXAMPLE_LOOP) from 0 to (B_SEAR_INDEX_LISTENER - 1), do (Actions)



Loop - Actions




-------- Set the current index --------




Set B_SEAR_CURRENT_INDEX = B_SEAR_INDEX_CONTAINER[B_SEAR_EXAMPLE_LOOP]




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





If - Conditions






B_SEAR_HIT_A_UNIT[B_SEAR_CURRENT_INDEX] Equal to False





Then - Actions






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







If - Conditions








B_SEAR_RANGE[B_SEAR_CURRENT_INDEX] Less than B_SEAR_CONFIG_BASE_RANGE[B_SEAR_LEVEL_OF_ABILITY[B_SEAR_CURRENT_INDEX]]







Then - Actions








Set B_SEAR_RANGE[B_SEAR_CURRENT_INDEX] = (B_SEAR_RANGE[B_SEAR_CURRENT_INDEX] + (0.03 x B_SEAR_SPEED[B_SEAR_CURRENT_INDEX]))








Set B_SEAR_TEMPLOC1 = (Position of B_SEAR_PROJECTILE[B_SEAR_CURRENT_INDEX])








Set B_SEAR_TEMPLOC2 = (B_SEAR_TEMPLOC1 offset by (0.03 x B_SEAR_SPEED[B_SEAR_CURRENT_INDEX]) towards B_SEAR_ANGLE[B_SEAR_CURRENT_INDEX] degrees)








Unit - Move B_SEAR_PROJECTILE[B_SEAR_CURRENT_INDEX] instantly to B_SEAR_TEMPLOC2








Set B_SEAR_PICKED_UNITS = (Units within B_SEAR_AOE[B_SEAR_CURRENT_INDEX] of B_SEAR_TEMPLOC1 matching ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is A flying unit) Equal to False) and ((((Matching unit) is alive) Equal to True) and ((((Matching unit) is Ma








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









If - Conditions










(B_SEAR_PICKED_UNITS is empty) Equal to False









Then - Actions










Unit - Kill B_SEAR_PROJECTILE[B_SEAR_CURRENT_INDEX]










Set B_SEAR_PICKED_UNIT = (Random unit from B_SEAR_PICKED_UNITS)










Special Effect - Create a special effect attached to the chest of B_SEAR_PICKED_UNIT using B_SEAR_SPFX










Special Effect - Destroy (Last created special effect)










Special Effect - Create a special effect attached to the chest of B_SEAR_PICKED_UNIT using B_SEAR_SPFX










Special Effect - Destroy (Last created special effect)










Special Effect - Create a special effect attached to the chest of B_SEAR_PICKED_UNIT using B_SEAR_SPFX










Special Effect - Destroy (Last created special effect)










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











If - Conditions












(B_SEAR_PICKED_UNIT has buff B_BLAZE_CONFIG_BUFF) Equal to True











Then - Actions












Unit - Create 1 DUMMY CASTER for (Owner of B_SEAR_TRIGGER_UNIT[B_SEAR_CURRENT_INDEX]) at (Position of B_SEAR_PICKED_UNIT) facing Default building facing degrees












Unit - Add Sear Stun to (Last created unit)












Unit - Order (Last created unit) to Human Mountain King - Storm Bolt B_SEAR_PICKED_UNIT












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











Else - Actions










Unit - Create 1 DUMMY CASTER for (Owner of B_SEAR_TRIGGER_UNIT[B_SEAR_CURRENT_INDEX]) at (Position of B_SEAR_PICKED_UNIT) facing Default building facing degrees










Unit - Add Blaze (Dummy) to (Last created unit)










Unit - Order (Last created unit) to Undead Banshee - Curse B_SEAR_PICKED_UNIT










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










Unit - Cause B_SEAR_TRIGGER_UNIT[B_SEAR_CURRENT_INDEX] to damage B_SEAR_PICKED_UNIT, dealing B_SEAR_DAMAGE[B_SEAR_CURRENT_INDEX] damage of attack type Hero and damage type Magic










Set B_SEAR_PICKED_UNIT = No unit










Set B_SEAR_HIT_A_UNIT[B_SEAR_CURRENT_INDEX] = True









Else - Actions








Custom script: call DestroyGroup(udg_B_SEAR_PICKED_UNITS)








Custom script: call RemoveLocation(udg_B_SEAR_TEMPLOC1)








Custom script: call RemoveLocation(udg_B_SEAR_TEMPLOC2)







Else - Actions








Set B_SEAR_HIT_A_UNIT[B_SEAR_CURRENT_INDEX] = True





Else - Actions






Unit - Kill B_SEAR_PROJECTILE[B_SEAR_CURRENT_INDEX]






Set B_SEAR_TRIGGER_UNIT[B_SEAR_CURRENT_INDEX] = No unit






Set B_SEAR_PROJECTILE[B_SEAR_CURRENT_INDEX] = No unit






-------- IMPORTANT SYSTEM PART START --------






-------- Decrease the normal index container size --------






Set B_SEAR_INDEX_LISTENER = (B_SEAR_INDEX_LISTENER - 1)






-------- Exchange the data from the last index to the current index --------






Set B_SEAR_INDEX_CONTAINER[B_SEAR_EXAMPLE_LOOP] = B_SEAR_INDEX_CONTAINER[B_SEAR_INDEX_LISTENER]






-------- Add an index to the Recycle Container --------






Set B_SEAR_RECYCLE_CONTAINER[B_SEAR_RECYCLE_SIZE] = B_SEAR_CURRENT_INDEX






-------- Recycle Container Index Size gets increased --------






Set B_SEAR_RECYCLE_SIZE = (B_SEAR_RECYCLE_SIZE + 1)






-------- Reset Loop --------






Set B_SEAR_EXAMPLE_LOOP = (B_SEAR_EXAMPLE_LOOP - 1)






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







If - Conditions








B_SEAR_INDEX_LISTENER Equal to 0







Then - Actions








Trigger - Turn off SEARLOOP <gen>








Skip remaining actions







Else - Actions






-------- IMPORTANT SYSTEM PART END --------
POFSTART

Events


Unit - A unit Starts the effect of an ability

Conditions


(Ability being cast) Equal to B_POF_ABILITY

Actions


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



If - Conditions




B_POF_INDEX_LISTENER Equal to 0



Then - Actions




Trigger - Turn on POFLOOP <gen>



Else - Actions


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



If - Conditions




B_POF_RECYCLE_SIZE Greater than 0



Then - Actions




Set B_POF_RECYCLE_SIZE = (B_POF_RECYCLE_SIZE - 1)




Set B_POF_CURRENT_INDEX = B_POF_RECYCLE_CONTAINER[B_POF_RECYCLE_SIZE]



Else - Actions




Set B_POF_CURRENT_INDEX = B_POF_INDEX_SIZE




Set B_POF_INDEX_SIZE = (B_POF_INDEX_SIZE + 1)


-------- IMPORTANT VARIABLES --------


Set B_POF_TRIGGER_UNIT[B_POF_CURRENT_INDEX] = (Triggering unit)


Set B_POF_TARGET_POINT[B_POF_CURRENT_INDEX] = (Target point of ability being cast)


Unit - Create 1 POF DUMMY for (Owner of B_POF_TRIGGER_UNIT[B_POF_CURRENT_INDEX]) at B_POF_TARGET_POINT[B_POF_CURRENT_INDEX] facing Default building facing degrees


Set B_POF_DUMMY_UNIT[B_POF_CURRENT_INDEX] = (Last created unit)


Set B_POF_LVL_OFABILITY = (Level of B_POF_ABILITY for B_POF_TRIGGER_UNIT[B_POF_CURRENT_INDEX])


Set B_POF_DAMAGE[B_POF_CURRENT_INDEX] = B_POF_CONFIG_DAMAGE[B_POF_LVL_OFABILITY]


Set B_POF_DAMAGE[B_POF_CURRENT_INDEX] = (B_POF_DAMAGE[B_POF_CURRENT_INDEX] + (0.60 x (Real((Intelligence of B_POF_TRIGGER_UNIT[B_POF_CURRENT_INDEX] (Include bonuses))))))


Set B_POF_DAMAGE_FACTOR[B_POF_CURRENT_INDEX] = B_POF_CONFIG_DAMAGE_FACTOR[B_POF_LVL_OFABILITY]


Set B_POF_BONUS_DAMAGE[B_POF_CURRENT_INDEX] = (B_POF_DAMAGE[B_POF_CURRENT_INDEX] + (B_POF_CONFIG_DAMAGE_FACTOR[B_POF_LVL_OFABILITY] x B_POF_DAMAGE[B_POF_CURRENT_INDEX]))


Set B_POF_DELAY[B_POF_CURRENT_INDEX] = B_POF_CONFIG_DELAY[B_POF_LVL_OFABILITY]


Set B_POF_AOE[B_POF_CURRENT_INDEX] = B_POF_CONFIG_AOE[B_POF_LVL_OFABILITY]


-------- IMPORTANT SYSTEM PART START --------


Set B_POF_INDEX_CONTAINER[B_POF_INDEX_LISTENER] = B_POF_CURRENT_INDEX


Set B_POF_INDEX_LISTENER = (B_POF_INDEX_LISTENER + 1)
POFLOOP

Events


Time - Every 0.03 seconds of game time

Conditions

Actions


-------- Dynamic Loop --------


For each (Integer B_POF_EXAMPLE_LOOP) from 0 to (B_POF_INDEX_LISTENER - 1), do (Actions)



Loop - Actions




-------- Set the current index --------




Set B_POF_CURRENT_INDEX = B_POF_INDEX_CONTAINER[B_POF_EXAMPLE_LOOP]




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





If - Conditions






B_POF_DELAY[B_POF_CURRENT_INDEX] Greater than 0.00





Then - Actions






Set B_POF_DELAY[B_POF_CURRENT_INDEX] = (B_POF_DELAY[B_POF_CURRENT_INDEX] - 0.03)





Else - Actions






Unit - Create 1 CONFLAGRATION DUMMY for (Owner of B_POF_TRIGGER_UNIT[B_POF_CURRENT_INDEX]) at B_POF_TARGET_POINT[B_POF_CURRENT_INDEX] facing Default building facing degrees






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






Special Effect - Create a special effect at B_POF_TARGET_POINT[B_POF_CURRENT_INDEX] using B_POF_SPFX






Special Effect - Destroy (Last created special effect)






Set B_POF_PICKED_UNITS = (Units within B_POF_AOE[B_POF_CURRENT_INDEX] of B_POF_TARGET_POINT[B_POF_CURRENT_INDEX] 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 (((






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







Loop - Actions








Set B_POF_PICKED_UNIT = (Picked unit)








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









If - Conditions










(B_POF_PICKED_UNIT has buff B_BLAZE_CONFIG_BUFF) Equal to True









Then - Actions










Unit - Cause B_POF_TRIGGER_UNIT[B_POF_CURRENT_INDEX] to damage B_POF_PICKED_UNIT, dealing B_POF_BONUS_DAMAGE[B_POF_CURRENT_INDEX] damage of attack type Hero and damage type Magic









Else - Actions










Unit - Cause B_POF_TRIGGER_UNIT[B_POF_CURRENT_INDEX] to damage B_POF_PICKED_UNIT, dealing B_POF_DAMAGE[B_POF_CURRENT_INDEX] damage of attack type Hero and damage type Magic








Unit - Create 1 DUMMY CASTER for (Owner of B_POF_TRIGGER_UNIT[B_POF_CURRENT_INDEX]) at (Position of B_POF_PICKED_UNIT) facing Default building facing degrees








Unit - Add Blaze (Dummy) to (Last created unit)








Unit - Order (Last created unit) to Undead Banshee - Curse B_POF_PICKED_UNIT








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








Set B_POF_PICKED_UNIT = No unit






Unit - Kill B_POF_DUMMY_UNIT[B_POF_CURRENT_INDEX]






Set B_POF_TRIGGER_UNIT[B_POF_CURRENT_INDEX] = No unit






Set B_POF_DUMMY_UNIT[B_POF_CURRENT_INDEX] = No unit






Custom script: call DestroyGroup(udg_B_POF_PICKED_UNITS)






Custom script: call RemoveLocation(udg_B_POF_TARGET_POINT[udg_B_POF_CURRENT_INDEX])






-------- IMPORTANT SYSTEM PART START --------






-------- Decrease the normal index container size --------






Set B_POF_INDEX_LISTENER = (B_POF_INDEX_LISTENER - 1)






-------- Exchange the data from the last index to the current index --------






Set B_POF_INDEX_CONTAINER[B_POF_EXAMPLE_LOOP] = B_POF_INDEX_CONTAINER[B_POF_INDEX_LISTENER]






-------- Add an index to the Recycle Container --------






Set B_POF_RECYCLE_CONTAINER[B_POF_RECYCLE_SIZE] = B_POF_CURRENT_INDEX






-------- Recycle Container Index Size gets increased --------






Set B_POF_RECYCLE_SIZE = (B_POF_RECYCLE_SIZE + 1)






-------- Reset Loop --------






Set B_POF_EXAMPLE_LOOP = (B_POF_EXAMPLE_LOOP - 1)






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







If - Conditions








B_POF_INDEX_LISTENER Equal to 0







Then - Actions








Trigger - Turn off POFLOOP <gen>








Skip remaining actions







Else - Actions






-------- IMPORTANT SYSTEM PART END --------
CONFLAGRATIONSTART

Events


Unit - A unit Starts the effect of an ability

Conditions


(Ability being cast) Equal to B_CON_ABILITY

Actions


Set B_CON_TRIGGER_UNIT = (Triggering unit)


Set B_CON_TARGET_UNIT = (Target unit of ability being cast)


Set B_CON_LVL_OF_ABILITY = (Level of B_CON_ABILITY for B_CON_TRIGGER_UNIT)


Set B_CON_DAMAGE = B_CON_CONFIG_DAMAGE[B_CON_LVL_OF_ABILITY]


Set B_CON_DAMAGE = (B_CON_DAMAGE + (0.55 x (Real((Intelligence of B_CON_TRIGGER_UNIT (Include bonuses))))))


Special Effect - Create a special effect attached to the origin of B_CON_TARGET_UNIT using B_CON_SPFX1


Special Effect - Destroy (Last created special effect)


Special Effect - Create a special effect attached to the origin of B_CON_TARGET_UNIT using B_CON_SPFX2


Special Effect - Destroy (Last created special effect)


Set B_CON_TARGET_LOC = (Position of B_CON_TARGET_UNIT)


Unit - Create 1 CONFLAGRATION DUMMY for (Owner of B_CON_TRIGGER_UNIT) at B_CON_TARGET_LOC facing Default building facing degrees


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


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



If - Conditions




(B_CON_TARGET_UNIT has buff B_BLAZE_CONFIG_BUFF) Equal to True



Then - Actions




Set B_CON_PICKED_UNITS = (Units within B_CON_CONFIG_AOE[B_CON_LVL_OF_ABILITY] of B_CON_TARGET_LOC 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)




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





Loop - Actions






Set B_CON_PICKED_UNIT = (Picked unit)






Unit - Cause B_CON_TRIGGER_UNIT to damage B_CON_PICKED_UNIT, dealing B_CON_DAMAGE damage of attack type Hero and damage type Magic






Special Effect - Create a special effect attached to the chest of B_CON_PICKED_UNIT using Abilities\Weapons\FireBallMissile\FireBallMissile.mdl






Special Effect - Destroy (Last created special effect)






Set B_CON_PICKED_UNIT = No unit




Custom script: call DestroyGroup(udg_B_CON_PICKED_UNITS)



Else - Actions


Unit - Create 1 DUMMY CASTER for (Owner of B_CON_TRIGGER_UNIT) at (Position of B_CON_TARGET_UNIT) facing Default building facing degrees


Unit - Add Blaze (Dummy) to (Last created unit)


Unit - Order (Last created unit) to Undead Banshee - Curse B_CON_TARGET_UNIT


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


Unit - Cause B_CON_TRIGGER_UNIT to damage B_CON_TARGET_UNIT, dealing B_CON_DAMAGE damage of attack type Hero and damage type Magic


Set B_CON_TRIGGER_UNIT = No unit


Set B_CON_TARGET_UNIT = No unit


Set B_CON_LVL_OF_ABILITY = 0


Set B_CON_DAMAGE = 0.00


Set B_CON_DAMAGE = 0.00


Custom script: call RemoveLocation(udg_B_CON_TARGET_LOC)
PYROCLASMSTART

Events


Unit - A unit Starts the effect of an ability

Conditions


(Ability being cast) Equal to B_PYR_ABILITY

Actions


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



If - Conditions




B_PYR_INDEX_LISTENER Equal to 0



Then - Actions




Trigger - Turn on PYROCLASMLOOP <gen>



Else - Actions


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



If - Conditions




B_PYR_RECYCLE_SIZE Greater than 0



Then - Actions




Set B_PYR_RECYCLE_SIZE = (B_PYR_RECYCLE_SIZE - 1)




Set B_PYR_CURRENT_INDEX = B_PYR_RECYCLE_CONTAINER[B_PYR_RECYCLE_SIZE]



Else - Actions




Set B_PYR_CURRENT_INDEX = B_PYR_INDEX_SIZE




Set B_PYR_INDEX_SIZE = (B_PYR_INDEX_SIZE + 1)


-------- IMPORTANT VARIABLES --------


Set B_PYR_G_TRIGGER_UNIT[B_PYR_CURRENT_INDEX] = (Triggering unit)


Set B_PYR_G_TARGET_UNIT[B_PYR_CURRENT_INDEX] = (Target unit of ability being cast)


Set B_PYR_LVLOFABILITY = (Level of B_PYR_ABILITY for B_PYR_G_TRIGGER_UNIT[B_PYR_CURRENT_INDEX])


Set B_PYR_G_AOE[B_PYR_CURRENT_INDEX] = B_PYR_CONFIG_AOE[B_PYR_LVLOFABILITY]


Set B_PYR_G_BOUNCES[B_PYR_CURRENT_INDEX] = B_PYR_CONFIG_BOUNCES[B_PYR_LVLOFABILITY]


Set B_PYR_G_DAMAGE[B_PYR_CURRENT_INDEX] = B_PYR_CONFIG_DAMAGE[B_PYR_LVLOFABILITY]


Set B_PYR_G_DAMAGE[B_PYR_CURRENT_INDEX] = (B_PYR_G_DAMAGE[B_PYR_CURRENT_INDEX] + (0.55 x (Real((Intelligence of B_PYR_G_TRIGGER_UNIT[B_PYR_CURRENT_INDEX] (Include bonuses))))))


Set B_PYR_G_SPEED[B_PYR_CURRENT_INDEX] = B_PYR_CONFIG_SPEED[B_PYR_LVLOFABILITY]


Set B_PYR_G_TEMPLOC1 = (Position of B_PYR_G_TRIGGER_UNIT[B_PYR_CURRENT_INDEX])


Set B_PYR_G_TEMPLOC2 = (Position of B_PYR_G_TARGET_UNIT[B_PYR_CURRENT_INDEX])


Set B_PYR_G_TEMP_ANGLE = (Angle from B_PYR_G_TEMPLOC1 to B_PYR_G_TEMPLOC2)


Unit - Create 1 B_PYR_CONFIG_UNIT_TYPE for (Owner of B_PYR_G_TRIGGER_UNIT[B_PYR_CURRENT_INDEX]) at B_PYR_G_TEMPLOC1 facing B_PYR_G_TEMP_ANGLE degrees


Set B_PYR_G_PROJECTILE[B_PYR_CURRENT_INDEX] = (Last created unit)


Custom script: call RemoveLocation(udg_B_PYR_G_TEMPLOC1)


Custom script: call RemoveLocation(udg_B_PYR_G_TEMPLOC2)


-------- IMPORTANT SYSTEM PART START --------


Set B_PYR_INDEX_CONTAINER[B_PYR_INDEX_LISTENER] = B_PYR_CURRENT_INDEX


Set B_PYR_INDEX_LISTENER = (B_PYR_INDEX_LISTENER + 1)
PYROCLASMLOOP

Events


Time - Every 0.03 seconds of game time

Conditions

Actions


-------- Dynamic Loop --------


For each (Integer B_PYR_EXAMPLE_LOOP) from 0 to (B_PYR_INDEX_LISTENER - 1), do (Actions)



Loop - Actions




-------- Set the current index --------




Set B_PYR_CURRENT_INDEX = B_PYR_INDEX_CONTAINER[B_PYR_EXAMPLE_LOOP]




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





If - Conditions






B_PYR_G_BOUNCES[B_PYR_CURRENT_INDEX] Greater than 0





Then - Actions






Set B_PYR_G_TEMPLOC1 = (Position of B_PYR_G_PROJECTILE[B_PYR_CURRENT_INDEX])






Set B_PYR_G_TEMPLOC2 = (Position of B_PYR_G_TARGET_UNIT[B_PYR_CURRENT_INDEX])






Set B_PYR_CONFIG_CURRENT_DISTANCE = (Distance between B_PYR_G_TEMPLOC1 and B_PYR_G_TEMPLOC2)






Set B_PYR_G_TEMP_ANGLE = (Angle from B_PYR_G_TEMPLOC1 to B_PYR_G_TEMPLOC2)






Custom script: call RemoveLocation(udg_B_PYR_G_TEMPLOC1)






Custom script: call RemoveLocation(udg_B_PYR_G_TEMPLOC2)






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







If - Conditions








B_PYR_CONFIG_CURRENT_DISTANCE Greater than B_PYR_CONFIG_MIN_DISTANCE







Then - Actions








Set B_PYR_G_TEMPLOC1 = (Position of B_PYR_G_PROJECTILE[B_PYR_CURRENT_INDEX])








Set B_PYR_G_TEMPLOC2 = (B_PYR_G_TEMPLOC1 offset by (0.03 x B_PYR_G_SPEED[B_PYR_CURRENT_INDEX]) towards B_PYR_G_TEMP_ANGLE degrees)








Unit - Move B_PYR_G_PROJECTILE[B_PYR_CURRENT_INDEX] instantly to B_PYR_G_TEMPLOC2, facing B_PYR_G_TEMP_ANGLE degrees








Custom script: call RemoveLocation(udg_B_PYR_G_TEMPLOC1)








Custom script: call RemoveLocation(udg_B_PYR_G_TEMPLOC2)







Else - Actions








Unit - Cause B_PYR_G_TRIGGER_UNIT[B_PYR_CURRENT_INDEX] to damage B_PYR_G_TARGET_UNIT[B_PYR_CURRENT_INDEX], dealing B_PYR_G_DAMAGE[B_PYR_CURRENT_INDEX] damage of attack type Hero and damage type Magic








Special Effect - Create a special effect attached to the origin of B_PYR_G_TARGET_UNIT[B_PYR_CURRENT_INDEX] using B_PYR_SPFX








Special Effect - Destroy (Last created special effect)








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









If - Conditions










(B_PYR_G_TARGET_UNIT[B_PYR_CURRENT_INDEX] has buff B_BLAZE_CONFIG_BUFF) Equal to True









Then - Actions










Set B_PYR_G_TEMPLOC1 = (Position of B_PYR_G_PROJECTILE[B_PYR_CURRENT_INDEX])










Unit - Create 1 DUMMY CASTER for (Owner of B_PYR_G_TRIGGER_UNIT[B_PYR_CURRENT_INDEX]) at B_PYR_G_TEMPLOC1 facing Default building facing degrees










Unit - Add Blaze (Dummy) to (Last created unit)










Unit - Order (Last created unit) to Undead Banshee - Curse B_PYR_G_TARGET_UNIT[B_PYR_CURRENT_INDEX]










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










Set B_PYR_G_PICKED_UNITS = (Units within B_PYR_G_AOE[B_PYR_CURRENT_INDEX] of B_PYR_G_TEMPLOC1 matching ((((Matching unit) is A Hero) Equal to True) and ((((Matching unit) is Magic Immune) Equal to False) and ((((Matching unit) is alive) Equal to True) and ((((Matching unit) belongs to










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











If - Conditions












(B_PYR_G_PICKED_UNITS is empty) Equal to False











Then - Actions












Set B_PYR_G_TARGET_UNIT[B_PYR_CURRENT_INDEX] = (Random unit from B_PYR_G_PICKED_UNITS)












Set B_PYR_G_TEMPLOC2 = (Position of B_PYR_G_TARGET_UNIT[B_PYR_CURRENT_INDEX])












Set B_PYR_G_TEMP_ANGLE = (Angle from B_PYR_G_TEMPLOC1 to B_PYR_G_TEMPLOC2)












Unit - Kill B_PYR_G_PROJECTILE[B_PYR_CURRENT_INDEX]












Unit - Create 1 B_PYR_CONFIG_UNIT_TYPE for (Owner of B_PYR_G_TRIGGER_UNIT[B_PYR_CURRENT_INDEX]) at B_PYR_G_TEMPLOC1 facing B_PYR_G_TEMP_ANGLE degrees












Set B_PYR_G_PROJECTILE[B_PYR_CURRENT_INDEX] = (Last created unit)












Custom script: call RemoveLocation(udg_B_PYR_G_TEMPLOC2)












Custom script: call DestroyGroup(udg_B_PYR_G_PICKED_UNITS)












Custom script: call RemoveLocation(udg_B_PYR_G_TEMPLOC1)












Set B_PYR_G_BOUNCES[B_PYR_CURRENT_INDEX] = (B_PYR_G_BOUNCES[B_PYR_CURRENT_INDEX] - 1)











Else - Actions












Set B_PYR_G_TEMPLOC1 = (Position of B_PYR_G_PROJECTILE[B_PYR_CURRENT_INDEX])












Unit - Create 1 DUMMY CASTER for (Owner of B_PYR_G_TRIGGER_UNIT[B_PYR_CURRENT_INDEX]) at B_PYR_G_TEMPLOC1 facing Default building facing degrees












Unit - Add Blaze (Dummy) to (Last created unit)












Unit - Order (Last created unit) to Undead Banshee - Curse B_PYR_G_TARGET_UNIT[B_PYR_CURRENT_INDEX]












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












Set B_PYR_G_PICKED_UNITS = (Units within B_PYR_G_AOE[B_PYR_CURRENT_INDEX] of B_PYR_G_TEMPLOC1 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) belon












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













If - Conditions














(B_PYR_G_PICKED_UNITS is empty) Equal to False













Then - Actions














Set B_PYR_G_TARGET_UNIT[B_PYR_CURRENT_INDEX] = (Random unit from B_PYR_G_PICKED_UNITS)














Set B_PYR_G_TEMPLOC2 = (Position of B_PYR_G_TARGET_UNIT[B_PYR_CURRENT_INDEX])














Set B_PYR_G_TEMP_ANGLE = (Angle from B_PYR_G_TEMPLOC1 to B_PYR_G_TEMPLOC2)














Unit - Kill B_PYR_G_PROJECTILE[B_PYR_CURRENT_INDEX]














Unit - Create 1 B_PYR_CONFIG_UNIT_TYPE for (Owner of B_PYR_G_TRIGGER_UNIT[B_PYR_CURRENT_INDEX]) at B_PYR_G_TEMPLOC1 facing B_PYR_G_TEMP_ANGLE degrees














Set B_PYR_G_PROJECTILE[B_PYR_CURRENT_INDEX] = (Last created unit)














Custom script: call RemoveLocation(udg_B_PYR_G_TEMPLOC2)














Custom script: call DestroyGroup(udg_B_PYR_G_PICKED_UNITS)














Custom script: call RemoveLocation(udg_B_PYR_G_TEMPLOC1)














Set B_PYR_G_BOUNCES[B_PYR_CURRENT_INDEX] = (B_PYR_G_BOUNCES[B_PYR_CURRENT_INDEX] - 1)













Else - Actions














Set B_PYR_G_BOUNCES[B_PYR_CURRENT_INDEX] = 0









Else - Actions










Set B_PYR_G_TEMPLOC1 = (Position of B_PYR_G_PROJECTILE[B_PYR_CURRENT_INDEX])










Unit - Create 1 DUMMY CASTER for (Owner of B_PYR_G_TRIGGER_UNIT[B_PYR_CURRENT_INDEX]) at B_PYR_G_TEMPLOC1 facing Default building facing degrees










Unit - Add Blaze (Dummy) to (Last created unit)










Unit - Order (Last created unit) to Undead Banshee - Curse B_PYR_G_TARGET_UNIT[B_PYR_CURRENT_INDEX]










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










Set B_PYR_G_PICKED_UNITS = (Units within B_PYR_G_AOE[B_PYR_CURRENT_INDEX] of B_PYR_G_TEMPLOC1 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) belon










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











If - Conditions












(B_PYR_G_PICKED_UNITS is empty) Equal to False











Then - Actions












Set B_PYR_G_TARGET_UNIT[B_PYR_CURRENT_INDEX] = (Random unit from B_PYR_G_PICKED_UNITS)












Set B_PYR_G_TEMPLOC2 = (Position of B_PYR_G_TARGET_UNIT[B_PYR_CURRENT_INDEX])












Set B_PYR_G_TEMP_ANGLE = (Angle from B_PYR_G_TEMPLOC1 to B_PYR_G_TEMPLOC2)












Unit - Kill B_PYR_G_PROJECTILE[B_PYR_CURRENT_INDEX]












Unit - Create 1 B_PYR_CONFIG_UNIT_TYPE for (Owner of B_PYR_G_TRIGGER_UNIT[B_PYR_CURRENT_INDEX]) at B_PYR_G_TEMPLOC1 facing B_PYR_G_TEMP_ANGLE degrees












Set B_PYR_G_PROJECTILE[B_PYR_CURRENT_INDEX] = (Last created unit)












Custom script: call RemoveLocation(udg_B_PYR_G_TEMPLOC2)












Custom script: call DestroyGroup(udg_B_PYR_G_PICKED_UNITS)












Custom script: call RemoveLocation(udg_B_PYR_G_TEMPLOC1)












Set B_PYR_G_BOUNCES[B_PYR_CURRENT_INDEX] = (B_PYR_G_BOUNCES[B_PYR_CURRENT_INDEX] - 1)











Else - Actions












Set B_PYR_G_BOUNCES[B_PYR_CURRENT_INDEX] = 0





Else - Actions






Unit - Kill B_PYR_G_PROJECTILE[B_PYR_CURRENT_INDEX]






Set B_PYR_G_TRIGGER_UNIT[B_PYR_CURRENT_INDEX] = No unit






Set B_PYR_G_TARGET_UNIT[B_PYR_CURRENT_INDEX] = No unit






Set B_PYR_G_PROJECTILE[B_PYR_CURRENT_INDEX] = No unit






-------- IMPORTANT SYSTEM PART START --------






-------- Decrease the normal index container size --------






Set B_PYR_INDEX_LISTENER = (B_PYR_INDEX_LISTENER - 1)






-------- Exchange the data from the last index to the current index --------






Set B_PYR_INDEX_CONTAINER[B_PYR_EXAMPLE_LOOP] = B_PYR_INDEX_CONTAINER[B_PYR_INDEX_LISTENER]






-------- Add an index to the Recycle Container --------






Set B_PYR_RECYCLE_CONTAINER[B_PYR_RECYCLE_SIZE] = B_PYR_CURRENT_INDEX






-------- Recycle Container Index Size gets increased --------






Set B_PYR_RECYCLE_SIZE = (B_PYR_RECYCLE_SIZE + 1)






-------- Reset Loop --------






Set B_PYR_EXAMPLE_LOOP = (B_PYR_EXAMPLE_LOOP - 1)






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







If - Conditions








B_PYR_INDEX_LISTENER Equal to 0







Then - Actions








Trigger - Turn off PYROCLASMLOOP <gen>








Skip remaining actions







Else - Actions






-------- IMPORTANT SYSTEM PART END --------