1. Are you planning to upload your awesome spell or system to Hive? Please review the rules here.
    Dismiss Notice
  2. The heavens smile on the old faithful. The 16th Techtree Contest has begun.
    Dismiss Notice
  3. The die is cast - the 6th Melee Mapping Contest results have been announced. Onward to the Hive Cup!
    Dismiss Notice
  4. The glory of the 20th Icon Contest is yours for the taking!
    Dismiss Notice
  5. Shoot to thrill, play to kill. Sate your hunger with the 33rd Modeling Contest!
    Dismiss Notice
  6. Do you hear boss music? It's the 17th Mini Mapping Contest!
    Dismiss Notice
  7. Check out the Staff job openings thread.
    Dismiss Notice
Dismiss Notice
60,000 passwords have been reset on July 8, 2019. If you cannot login, read this.

Trigger Viewer

Helios Collision V1.00.w3x
Variables
Helios Collision
Information
Helios Collision Configuration
Helios Collision Activation
Helios Collision Loop
Helios Collision Dummy Removal
This Map
Startup
Enter map-specific custom script code below. This text will be included in the map script after variables are declared and before any trigger code.

		
Name Type Is Array Initial Value
HC_Angle real No
HC_Aoe real Yes
HC_AoeBase real No
HC_AoePerLevel real No
HC_BlastCap real No
HC_BlastDistance real Yes
HC_BlastDistanceBase real No
HC_BlastDistanceMultiplyer real No
HC_BlastSpeed real No
HC_BurnSFX string No
HC_Caster unit No
HC_ConditionConfig boolean Yes
HC_Core unit Yes
HC_CurrentAngle real Yes
HC_CurrentBlastDistance real Yes
HC_CurrentHeight real Yes
HC_CurrentMagnetism real No
HC_CurrentSunDistance real Yes
HC_Distance real Yes
HC_DummyExpirationTimers real No
HC_DummyType unitcode No
HC_EffectScalingBlast real No
HC_EffectScalingOrbs real No
HC_EffectScalingSun real No
HC_EffectScalingWind real No
HC_EffectZBlast real No
HC_EffectZOrbs real No
HC_EffectZSun real No
HC_EffectZWind real No
HC_ExplosionAOE real No
HC_ExplosionDamage real Yes
HC_ExplosionDamageBase real No
HC_ExplosionDamagePerLevel real No
HC_ExplosionSFX string No
HC_FireOrbSFX string No
HC_FireOrbSpinSpeed real No
HC_HeightMultiplyer real No
HC_Index integer No
HC_MagnetismCap real No
HC_MagnetismDistanceMultiplyer real No
HC_MagnetismStrength real Yes
HC_MagnetismStrengthBase real No
HC_MagnetismStrengthPerLevel real No
HC_MaxHeight real Yes
HC_MaxIndex integer No
HC_OrbCountBase integer No
HC_OrbCountPerLevel integer No
HC_OrbDistance real No
HC_OriginalCaster unit Yes
HC_OwningPlayer player Yes
HC_SecondaryIndex integer No
HC_SpecialEffect effect Yes
HC_Spell abilcode No
HC_StageID integer Yes
HC_SunSFX string No
HC_SunSpeed real No
HC_Targets group No
HC_TempGroup group No
HC_TempInteger integer No
HC_TempInteger2 integer No
HC_TempPoint location No
HC_TempPoint2 location No
HC_TempReal real No
HC_TempUnit unit No
HC_TempUnit2 unit No
HC_TempX real No
HC_TempY real No
HC_TempZ real No
HC_UnitIndex unit Yes
HC_WindCountBase integer No
HC_WindCountPerLevel integer No
HC_WindDistance real No
HC_WindSFX string No
HC_WindSpinSpeed real No
Creator: Tank-Commander
Credits: None
Requested by: None
Purpose: Crowd control and prettiness

Credits must be given to Tank-Commander if you use this.
Modification is allowed but only for private use - do not re-release a modified version of this spell.

Additional credits must be given to "WILL THE ALMIGHTY" for the sun model

=Preparing for import=
Go to:
File
Preferances
General
Check the box labelled 'Automatically create unknown variables while pasting trigger data'

This will mean you will not have to create all the variables and save you a large amount of time.

=Speeding up import of object data-
Go to:
Window
make sure the 'brush list' is unchecked.
If there is a tick symbol next to the word, then it is checked - click on it to uncheck it.

=Main importing=
In order of importing:
Import data - Model - Dummy.mdx
Import data - Model - Sun.mdx
Object data - Spell - Helios Collision
Object data - Unit - Helios Collision Dummy
Trigger data - Variable - TempX
Trigger data - Variable - TempY
Trigger data - Variable - TempZ
Trigger data - Folder - Helios Collision

=Modification=
All Modifications should be done in the Configuration Trigger, each configuration is explained.

If anything is unclear to you on how to modify it, or even if you're unsure about the function of a particular configurable, feel free to send a PM to me, and I shall get back to you at my earliest convience
Helios Collision Configuration
  Events
    Map initialization
  Conditions
  Actions
    -------- -------- --------
    -------- Condition Configuration --------
    -------- Unit is a ground unit --------
    Set VariableSet HC_ConditionConfig[0] = True
    -------- Unit is a structure --------
    Set VariableSet HC_ConditionConfig[1] = False
    -------- Unit is magic immune --------
    Set VariableSet HC_ConditionConfig[2] = False
    -------- Unit belongs to an enemy player --------
    Set VariableSet HC_ConditionConfig[3] = True
    -------- Unit is alive --------
    Set VariableSet HC_ConditionConfig[4] = True
    -------- Determines the area that will be effected by Magnetism --------
    Set VariableSet HC_ExplosionAOE = 200.00
    Set VariableSet HC_AoeBase = 250.00
    Set VariableSet HC_AoePerLevel = 100.00
    -------- Determines the strength of the magnetism --------
    Set VariableSet HC_MagnetismStrengthBase = 300.00
    Set VariableSet HC_MagnetismStrengthPerLevel = 200.00
    Set VariableSet HC_MagnetismDistanceMultiplyer = 0.80
    Set VariableSet HC_MagnetismCap = 20.00
    -------- Determines the damage done by the blast --------
    Set VariableSet HC_ExplosionDamageBase = 200.00
    Set VariableSet HC_ExplosionDamagePerLevel = 25.00
    -------- Determines the strength of the blast --------
    Set VariableSet HC_BlastDistanceBase = 900.00
    Set VariableSet HC_BlastDistanceMultiplyer = 0.05
    Set VariableSet HC_HeightMultiplyer = 0.80
    Set VariableSet HC_BlastSpeed = 12.00
    Set VariableSet HC_BlastCap = 550.00
    -------- Determines the speed of the Sun travelling --------
    Set VariableSet HC_SunSpeed = 3.00
    -------- Determines the amount of Orbs surround the Sun --------
    Set VariableSet HC_OrbCountBase = 3
    Set VariableSet HC_OrbCountPerLevel = 0
    -------- Determines the amount of Wind that surrounds the Sun --------
    Set VariableSet HC_WindCountBase = 5
    Set VariableSet HC_WindCountPerLevel = 2
    -------- Determines how fast the Orbs Spin around --------
    Set VariableSet HC_FireOrbSpinSpeed = 3.00
    -------- Determines how fast the Wind Spins around --------
    Set VariableSet HC_WindSpinSpeed = 6.00
    -------- Determines how far the orbs are from the sun --------
    Set VariableSet HC_OrbDistance = 150.00
    -------- Determines how far the wind is from the sun --------
    Set VariableSet HC_WindDistance = 200.00
    -------- Determines how long the dummies will remain after their usefulness has ended --------
    Set VariableSet HC_DummyExpirationTimers = 2.00
    -------- Determines the scaling of the Sun and its SFX --------
    Set VariableSet HC_EffectScalingOrbs = 100.00
    Set VariableSet HC_EffectScalingWind = 100.00
    Set VariableSet HC_EffectScalingSun = 100.00
    Set VariableSet HC_EffectScalingBlast = 100.00
    -------- Determines the Height given to the sun and its effects --------
    Set VariableSet HC_EffectZOrbs = 100.00
    Set VariableSet HC_EffectZSun = 0.00
    Set VariableSet HC_EffectZWind = 0.00
    Set VariableSet HC_EffectZBlast = 0.00
    -------- Determines the unit model used as the Sun --------
    Set VariableSet HC_SunSFX = war3mapImported\Sun.mdx
    -------- Determines the model used for the revolving fire orbs --------
    Set VariableSet HC_FireOrbSFX = Abilities\Weapons\PhoenixMissile\Phoenix_Missile.mdl
    -------- Determines the unit model used for the burning of the targets --------
    Set VariableSet HC_BurnSFX = Abilities\Weapons\PhoenixMissile\Phoenix_Missile.mdl
    -------- Determines the unit model used as the rotatingwind --------
    Set VariableSet HC_WindSFX = Abilities\Spells\Other\Tornado\Tornado_Target.mdl
    -------- Determines the SFX used upon explosion --------
    Set VariableSet HC_ExplosionSFX = Objects\Spawnmodels\Other\NeutralBuildingExplosion\NeutralBuildingExplosion.mdl
    -------- Determines the spell used to act as the activation spell --------
    Set VariableSet HC_Spell = Helios Collision
    -------- Determines the Dummy used to attach all the effects to --------
    Set VariableSet HC_DummyType = Helios Collision Dummy
Helios Collision Activation
  Events
    Unit - A unit Starts the effect of an ability
  Conditions
    (Ability being cast) Equal to HC_Spell
  Actions
    Set VariableSet HC_Caster = (Triggering unit)
    Set VariableSet HC_TempPoint = (Position of HC_Caster)
    Set VariableSet HC_TempPoint2 = (Target point of ability being cast)
    Set VariableSet HC_Angle = (Angle from HC_TempPoint to HC_TempPoint2)
    Unit - Create 1.HC_DummyType for Neutral Passive at HC_TempPoint facing Default building facing degrees
    Set VariableSet HC_TempUnit = (Last created unit)
    Special Effect - Create a special effect attached to the origin (attachpoint) of HC_TempUnit using HC_SunSFX
    Animation - Change HC_TempUnit's size to (HC_EffectScalingSun%, 0.00%, 0.00%) of its original size
    Animation - Change HC_TempUnit flying height to HC_EffectZSun at 0.00
    Set VariableSet HC_MaxIndex = (HC_MaxIndex + 1)
    Set VariableSet HC_OriginalCaster[HC_MaxIndex] = HC_Caster
    Set VariableSet HC_OwningPlayer[HC_MaxIndex] = (Owner of HC_Caster)
    Set VariableSet HC_TempInteger = (Level of HC_Spell for HC_Caster)
    Set VariableSet HC_TempReal = (Real(HC_TempInteger))
    Set VariableSet HC_SpecialEffect[HC_MaxIndex] = (Last created special effect)
    Set VariableSet HC_Core[HC_MaxIndex] = HC_TempUnit
    Set VariableSet HC_Aoe[HC_MaxIndex] = (HC_AoeBase + (HC_AoePerLevel x HC_TempReal))
    Set VariableSet HC_ExplosionDamage[HC_MaxIndex] = (HC_ExplosionDamageBase + (HC_ExplosionDamagePerLevel x HC_TempReal))
    Set VariableSet HC_MagnetismStrength[HC_MaxIndex] = (HC_MagnetismStrengthBase + (HC_MagnetismStrengthPerLevel x HC_TempReal))
    Set VariableSet HC_Distance[HC_MaxIndex] = (Distance between HC_TempPoint and HC_TempPoint2)
    Set VariableSet HC_Core[HC_MaxIndex] = HC_TempUnit
    Set VariableSet HC_CurrentAngle[HC_MaxIndex] = HC_Angle
    Set VariableSet HC_CurrentSunDistance[HC_MaxIndex] = 0.00
    Set VariableSet HC_UnitIndex[HC_MaxIndex] = HC_TempUnit
    Set VariableSet HC_StageID[HC_MaxIndex] = 1
    Set VariableSet HC_Angle = 0.00
    -------- --------
    Set VariableSet HC_BlastDistance[HC_MaxIndex] = 0.00
    Set VariableSet HC_CurrentBlastDistance[HC_MaxIndex] = 0.00
    Set VariableSet HC_MaxHeight[HC_MaxIndex] = 0.00
    Set VariableSet HC_CurrentHeight[HC_MaxIndex] = 0.00
    -------- --------
    Custom script: call RemoveLocation (udg_HC_TempPoint2)
    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
      If - Conditions
        HC_MaxIndex Equal to 1
      Then - Actions
        Trigger - Turn on Helios_Collision_Loop <gen>
      Else - Actions
    Set VariableSet HC_TempInteger2 = (HC_OrbCountBase + (HC_OrbCountPerLevel x HC_TempInteger))
    -------- Fire Orb Creation --------
    For each (Integer HC_Index) from 1 to HC_TempInteger2, do (Actions)
      Loop - Actions
        Set VariableSet HC_Angle = (HC_Angle + (360.00 / (Real(HC_TempInteger2))))
        Set VariableSet HC_TempPoint2 = (HC_TempPoint offset by HC_OrbDistance towards HC_Angle degrees.)
        Unit - Create 1.HC_DummyType for Neutral Passive at HC_TempPoint2 facing Default building facing degrees
        Set VariableSet HC_TempUnit2 = (Last created unit)
        Special Effect - Create a special effect attached to the origin (attachpoint) of HC_TempUnit2 using HC_FireOrbSFX
        Animation - Change HC_TempUnit2's size to (HC_EffectScalingOrbs%, 0.00%, 0.00%) of its original size
        Animation - Change HC_TempUnit2 flying height to HC_EffectScalingOrbs at 0.00
        Custom script: call RemoveLocation (udg_HC_TempPoint2)
        Set VariableSet HC_MaxIndex = (HC_MaxIndex + 1)
        Set VariableSet HC_SpecialEffect[HC_MaxIndex] = (Last created special effect)
        Set VariableSet HC_CurrentAngle[HC_MaxIndex] = HC_Angle
        Set VariableSet HC_StageID[HC_MaxIndex] = 2
        Set VariableSet HC_Core[HC_MaxIndex] = HC_TempUnit
        Set VariableSet HC_UnitIndex[HC_MaxIndex] = HC_TempUnit2
        -------- --------
        Set VariableSet HC_Aoe[HC_MaxIndex] = 0.00
        Set VariableSet HC_OriginalCaster[HC_MaxIndex] = HC_Caster
        Set VariableSet HC_OwningPlayer[HC_MaxIndex] = (Owner of HC_Caster)
        Set VariableSet HC_MaxHeight[HC_MaxIndex] = 0.00
        Set VariableSet HC_BlastDistance[HC_MaxIndex] = 0.00
        Set VariableSet HC_CurrentBlastDistance[HC_MaxIndex] = 0.00
        Set VariableSet HC_CurrentHeight[HC_MaxIndex] = 0.00
        Set VariableSet HC_CurrentSunDistance[HC_MaxIndex] = 0.00
        Set VariableSet HC_ExplosionDamage[HC_MaxIndex] = 0.00
        Set VariableSet HC_MagnetismStrength[HC_MaxIndex] = 0.00
    Set VariableSet HC_TempInteger2 = (HC_WindCountBase + (HC_WindCountPerLevel x HC_TempInteger))
    -------- Wind Effect Creation --------
    For each (Integer HC_Index) from 1 to HC_TempInteger2, do (Actions)
      Loop - Actions
        Set VariableSet HC_Angle = (HC_Angle + (360.00 / (Real(HC_TempInteger2))))
        Set VariableSet HC_TempPoint2 = (HC_TempPoint offset by HC_OrbDistance towards HC_Angle degrees.)
        Unit - Create 1.HC_DummyType for Neutral Passive at HC_TempPoint2 facing Default building facing degrees
        Set VariableSet HC_TempUnit2 = (Last created unit)
        Special Effect - Create a special effect attached to the origin (attachpoint) of HC_TempUnit2 using HC_WindSFX
        Animation - Change HC_TempUnit2's size to (HC_EffectScalingOrbs%, 0.00%, 0.00%) of its original size
        Animation - Change HC_TempUnit2 flying height to HC_EffectZWind at 0.00
        Custom script: call RemoveLocation (udg_HC_TempPoint2)
        Set VariableSet HC_MaxIndex = (HC_MaxIndex + 1)
        Set VariableSet HC_SpecialEffect[HC_MaxIndex] = (Last created special effect)
        Set VariableSet HC_CurrentAngle[HC_MaxIndex] = HC_Angle
        Set VariableSet HC_StageID[HC_MaxIndex] = 3
        Set VariableSet HC_Core[HC_MaxIndex] = HC_TempUnit
        Set VariableSet HC_UnitIndex[HC_MaxIndex] = HC_TempUnit2
        -------- --------
        Set VariableSet HC_Aoe[HC_MaxIndex] = 0.00
        Set VariableSet HC_OriginalCaster[HC_MaxIndex] = HC_Caster
        Set VariableSet HC_OwningPlayer[HC_MaxIndex] = (Owner of HC_Caster)
        Set VariableSet HC_BlastDistance[HC_MaxIndex] = 0.00
        Set VariableSet HC_CurrentBlastDistance[HC_MaxIndex] = 0.00
        Set VariableSet HC_CurrentHeight[HC_MaxIndex] = 0.00
        Set VariableSet HC_CurrentSunDistance[HC_MaxIndex] = 0.00
        Set VariableSet HC_ExplosionDamage[HC_MaxIndex] = 0.00
        Set VariableSet HC_MagnetismStrength[HC_MaxIndex] = 0.00
    Custom script: call RemoveLocation (udg_HC_TempPoint)
Helios Collision Loop
  Events
    Time - Every 0.03 seconds of game time
  Conditions
  Actions
    For each (Integer HC_Index) from 1 to HC_MaxIndex, do (Actions)
      Loop - Actions
        Set VariableSet HC_Angle = 0.00
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
          If - Conditions
            (Unit-type of HC_UnitIndex[HC_Index]) Equal to HC_DummyType
          Then - Actions
            -------- Control over Sun --------
            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              If - Conditions
                HC_StageID[HC_Index] Equal to 1
              Then - Actions
                Custom script: set udg_HC_TempX = GetUnitX(udg_HC_UnitIndex[udg_HC_Index])
                Custom script: set udg_HC_TempY = GetUnitY(udg_HC_UnitIndex[udg_HC_Index])
                Custom script: set udg_HC_Angle = udg_HC_CurrentAngle[udg_HC_Index] * bj_DEGTORAD
                Custom script: call SetUnitX(udg_HC_UnitIndex[udg_HC_Index], udg_HC_TempX + udg_HC_SunSpeed * Cos(udg_HC_Angle))
                Custom script: call SetUnitY(udg_HC_UnitIndex[udg_HC_Index], udg_HC_TempY + udg_HC_SunSpeed* Sin(udg_HC_Angle))
                -------- Magnetism Control --------
                Set VariableSet HC_TempPoint = (Position of HC_UnitIndex[HC_Index])
                Set VariableSet HC_TempGroup = (Units within HC_Aoe[HC_Index] of HC_TempPoint.)
                Unit Group - Pick every unit in HC_TempGroup and do (Actions)
                  Loop - Actions
                    Set VariableSet HC_TempUnit = (Picked unit)
                    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                      If - Conditions
                        (HC_TempUnit is A ground unit) Equal to HC_ConditionConfig[0]
                        (HC_TempUnit is A structure) Equal to HC_ConditionConfig[1]
                        (HC_TempUnit is Magic Immune) Equal to HC_ConditionConfig[2]
                        (HC_TempUnit belongs to an enemy of HC_OwningPlayer[HC_Index].) Equal to HC_ConditionConfig[3]
                        (HC_TempUnit is alive) Equal to HC_ConditionConfig[4]
                        (HC_TempUnit is paused) Equal to False
                      Then - Actions
                        Set VariableSet HC_TempPoint2 = (Position of HC_TempUnit)
                        Custom script: set udg_HC_TempX = GetUnitX(udg_HC_TempUnit)
                        Custom script: set udg_HC_TempY = GetUnitY(udg_HC_TempUnit)
                        Custom script: set udg_HC_Angle = Atan2(GetUnitY(udg_HC_UnitIndex[udg_HC_Index]) - GetUnitY(udg_HC_TempUnit), GetUnitX(udg_HC_UnitIndex[udg_HC_Index]) - GetUnitX(udg_HC_TempUnit))
                        Set VariableSet HC_CurrentMagnetism = (HC_MagnetismStrength[HC_Index] / ((Distance between HC_TempPoint and HC_TempPoint2) x HC_MagnetismDistanceMultiplyer))
                        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                          If - Conditions
                            HC_CurrentMagnetism Greater than HC_MagnetismCap
                          Then - Actions
                            Set VariableSet HC_CurrentMagnetism = HC_MagnetismCap
                          Else - Actions
                        Custom script: call SetUnitX(udg_HC_TempUnit, udg_HC_TempX + udg_HC_CurrentMagnetism * Cos(udg_HC_Angle))
                        Custom script: call SetUnitY(udg_HC_TempUnit, udg_HC_TempY + udg_HC_CurrentMagnetism * Sin(udg_HC_Angle))
                        Custom script: call RemoveLocation (udg_HC_TempPoint2)
                      Else - Actions
                Custom script: call DestroyGroup(udg_HC_TempGroup)
                Set VariableSet HC_CurrentSunDistance[HC_Index] = (HC_CurrentSunDistance[HC_Index] + HC_SunSpeed)
                -------- Explosion Control --------
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                  If - Conditions
                    HC_CurrentSunDistance[HC_Index] Greater than or equal to HC_Distance[HC_Index]
                  Then - Actions
                    Set VariableSet HC_TempGroup = (Units within HC_ExplosionAOE of HC_TempPoint.)
                    -------- Effected Units --------
                    Unit Group - Pick every unit in HC_TempGroup and do (Actions)
                      Loop - Actions
                        Set VariableSet HC_TempUnit = (Picked unit)
                        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                          If - Conditions
                            (HC_TempUnit is A ground unit) Equal to HC_ConditionConfig[0]
                            (HC_TempUnit is A structure) Equal to HC_ConditionConfig[1]
                            (HC_TempUnit is Magic Immune) Equal to HC_ConditionConfig[2]
                            (HC_TempUnit belongs to an enemy of HC_OwningPlayer[HC_Index].) Equal to HC_ConditionConfig[3]
                            (HC_TempUnit is alive) Equal to HC_ConditionConfig[4]
                            (HC_TempUnit is paused) Equal to False
                          Then - Actions
                            Set VariableSet HC_TempPoint2 = (Position of HC_TempUnit)
                            Unit - Cause HC_OriginalCaster[HC_Index] to damage HC_TempUnit, dealing HC_ExplosionDamage[HC_Index] damage of attack type Spells and damage type Normal
                            Set VariableSet HC_MaxIndex = (HC_MaxIndex + 1)
                            Special Effect - Create a special effect attached to the origin (attachpoint) of HC_TempUnit using HC_BurnSFX
                            Set VariableSet HC_SpecialEffect[HC_MaxIndex] = (Last created special effect)
                            Set VariableSet HC_CurrentAngle[HC_MaxIndex] = (Angle from HC_TempPoint to HC_TempPoint2)
                            Set VariableSet HC_CurrentBlastDistance[HC_MaxIndex] = 0.00
                            Set VariableSet HC_BlastDistance[HC_MaxIndex] = (HC_BlastDistanceBase / ((Distance between HC_TempPoint and HC_TempPoint2) x HC_BlastDistanceMultiplyer))
                            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                              If - Conditions
                                HC_BlastDistance[HC_MaxIndex] Greater than HC_BlastCap
                              Then - Actions
                                Set VariableSet HC_BlastDistance[HC_MaxIndex] = HC_BlastCap
                              Else - Actions
                            Set VariableSet HC_MaxHeight[HC_MaxIndex] = (HC_BlastDistance[HC_MaxIndex] x HC_HeightMultiplyer)
                            Set VariableSet HC_CurrentHeight[HC_MaxIndex] = (Current flying height of HC_TempUnit)
                            Set VariableSet HC_StageID[HC_MaxIndex] = 4
                            Set VariableSet HC_UnitIndex[HC_MaxIndex] = HC_TempUnit
                            -------- --------
                            Set VariableSet HC_Aoe[HC_MaxIndex] = 0.00
                            Set VariableSet HC_OriginalCaster[HC_MaxIndex] = HC_TempUnit
                            Set VariableSet HC_OwningPlayer[HC_MaxIndex] = (Owner of HC_TempUnit)
                            Set VariableSet HC_CurrentSunDistance[HC_MaxIndex] = 0.00
                            Set VariableSet HC_Core[HC_MaxIndex] = HC_TempUnit
                            Set VariableSet HC_ExplosionDamage[HC_MaxIndex] = 0.00
                            Set VariableSet HC_MagnetismStrength[HC_MaxIndex] = 0.00
                            Unit - Add Storm Crow Form to HC_TempUnit
                            Unit - Remove Storm Crow Form from HC_TempUnit
                            Unit - Pause HC_TempUnit
                            Custom script: call RemoveLocation (udg_HC_TempPoint2)
                          Else - Actions
                    Custom script: call DestroyGroup(udg_HC_TempGroup)
                    -------- Cleanup --------
                    For each (Integer HC_SecondaryIndex) from 1 to HC_MaxIndex, do (Actions)
                      Loop - Actions
                        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                          If - Conditions
                            HC_Core[HC_SecondaryIndex] Equal to HC_UnitIndex[HC_Index]
                            HC_UnitIndex[HC_SecondaryIndex] Not equal to HC_UnitIndex[HC_Index]
                          Then - Actions
                            Set VariableSet HC_TempUnit = HC_UnitIndex[HC_SecondaryIndex]
                            Set VariableSet HC_TempPoint2 = (Position of HC_TempUnit)
                            Special Effect - Destroy HC_SpecialEffect[HC_SecondaryIndex]
                            Unit - Create 1.HC_DummyType for Neutral Passive at HC_TempPoint2 facing Default building facing degrees
                            Set VariableSet HC_TempUnit2 = (Last created unit)
                            Special Effect - Create a special effect attached to the origin (attachpoint) of HC_TempUnit2 using HC_ExplosionSFX
                            Animation - Change HC_TempUnit2's size to (HC_EffectScalingBlast%, 0.00%, 0.00%) of its original size
                            Animation - Change HC_TempUnit2 flying height to HC_EffectZBlast at 0.00
                            Special Effect - Destroy (Last created special effect)
                            Unit - Add a HC_DummyExpirationTimers second Generic expiration timer to HC_TempUnit2
                            Set VariableSet HC_StageID[HC_SecondaryIndex] = HC_StageID[HC_MaxIndex]
                            Set VariableSet HC_Aoe[HC_SecondaryIndex] = HC_Aoe[HC_MaxIndex]
                            Set VariableSet HC_OriginalCaster[HC_SecondaryIndex] = HC_OriginalCaster[HC_MaxIndex]
                            Set VariableSet HC_BlastDistance[HC_SecondaryIndex] = HC_BlastDistance[HC_MaxIndex]
                            Set VariableSet HC_CurrentAngle[HC_SecondaryIndex] = HC_CurrentAngle[HC_MaxIndex]
                            Set VariableSet HC_CurrentBlastDistance[HC_SecondaryIndex] = HC_CurrentBlastDistance[HC_MaxIndex]
                            Set VariableSet HC_OwningPlayer[HC_SecondaryIndex] = HC_OwningPlayer[HC_MaxIndex]
                            Set VariableSet HC_MaxHeight[HC_SecondaryIndex] = HC_MaxHeight[HC_MaxIndex]
                            Set VariableSet HC_SpecialEffect[HC_SecondaryIndex] = HC_SpecialEffect[HC_MaxIndex]
                            Set VariableSet HC_CurrentHeight[HC_SecondaryIndex] = HC_CurrentHeight[HC_MaxIndex]
                            Set VariableSet HC_CurrentSunDistance[HC_SecondaryIndex] = HC_CurrentSunDistance[HC_MaxIndex]
                            Set VariableSet HC_ExplosionDamage[HC_SecondaryIndex] = HC_ExplosionDamage[HC_MaxIndex]
                            Set VariableSet HC_Core[HC_SecondaryIndex] = HC_Core[HC_MaxIndex]
                            Set VariableSet HC_UnitIndex[HC_SecondaryIndex] = HC_UnitIndex[HC_MaxIndex]
                            Set VariableSet HC_MagnetismStrength[HC_SecondaryIndex] = HC_MagnetismStrength[HC_MaxIndex]
                            Set VariableSet HC_MaxIndex = (HC_MaxIndex - 1)
                            Set VariableSet HC_SecondaryIndex = (HC_SecondaryIndex - 1)
                            Unit - Remove HC_TempUnit from the game
                            Custom script: call RemoveLocation(udg_HC_TempPoint2)
                          Else - Actions
                    Unit - Create 1.HC_DummyType for Neutral Passive at HC_TempPoint facing Default building facing degrees
                    Set VariableSet HC_TempUnit = (Last created unit)
                    Special Effect - Destroy HC_SpecialEffect[HC_Index]
                    Special Effect - Create a special effect attached to the origin (attachpoint) of HC_TempUnit using HC_ExplosionSFX
                    Animation - Change HC_TempUnit's size to (HC_EffectScalingBlast%, 0.00%, 0.00%) of its original size
                    Animation - Change HC_TempUnit flying height to HC_EffectZBlast at 0.00
                    Special Effect - Destroy (Last created special effect)
                    Unit - Add a HC_DummyExpirationTimers second Generic expiration timer to HC_TempUnit
                    Set VariableSet HC_TempUnit = HC_UnitIndex[HC_Index]
                    Set VariableSet HC_StageID[HC_Index] = HC_StageID[HC_MaxIndex]
                    Set VariableSet HC_Aoe[HC_Index] = HC_Aoe[HC_MaxIndex]
                    Set VariableSet HC_OriginalCaster[HC_Index] = HC_OriginalCaster[HC_MaxIndex]
                    Set VariableSet HC_BlastDistance[HC_Index] = HC_BlastDistance[HC_MaxIndex]
                    Set VariableSet HC_CurrentAngle[HC_Index] = HC_CurrentAngle[HC_MaxIndex]
                    Set VariableSet HC_OwningPlayer[HC_Index] = HC_OwningPlayer[HC_MaxIndex]
                    Set VariableSet HC_MaxHeight[HC_Index] = HC_MaxHeight[HC_MaxIndex]
                    Set VariableSet HC_CurrentBlastDistance[HC_Index] = HC_CurrentBlastDistance[HC_MaxIndex]
                    Set VariableSet HC_CurrentHeight[HC_Index] = HC_CurrentHeight[HC_MaxIndex]
                    Set VariableSet HC_SpecialEffect[HC_Index] = HC_SpecialEffect[HC_MaxIndex]
                    Set VariableSet HC_CurrentSunDistance[HC_Index] = HC_CurrentSunDistance[HC_MaxIndex]
                    Set VariableSet HC_Core[HC_Index] = HC_Core[HC_MaxIndex]
                    Set VariableSet HC_UnitIndex[HC_Index] = HC_UnitIndex[HC_MaxIndex]
                    Set VariableSet HC_ExplosionDamage[HC_Index] = HC_ExplosionDamage[HC_MaxIndex]
                    Set VariableSet HC_MagnetismStrength[HC_Index] = HC_MagnetismStrength[HC_MaxIndex]
                    Set VariableSet HC_MaxIndex = (HC_MaxIndex - 1)
                    Set VariableSet HC_Index = (HC_Index - 1)
                    Unit - Remove HC_TempUnit from the game
                    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                      If - Conditions
                        HC_MaxIndex Equal to 0
                      Then - Actions
                        Trigger - Turn off (This trigger)
                      Else - Actions
                  Else - Actions
                Custom script: call RemoveLocation (udg_HC_TempPoint)
              Else - Actions
            -------- Fire balls Spin Control --------
            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              If - Conditions
                HC_StageID[HC_Index] Equal to 2
              Then - Actions
                Custom script: set udg_HC_TempX = GetUnitX(udg_HC_Core[udg_HC_Index])
                Custom script: set udg_HC_TempY = GetUnitY(udg_HC_Core[udg_HC_Index])
                Set VariableSet HC_CurrentAngle[HC_Index] = (HC_CurrentAngle[HC_Index] + HC_FireOrbSpinSpeed)
                Custom script: set udg_HC_Angle = udg_HC_CurrentAngle[udg_HC_Index] * bj_DEGTORAD
                Custom script: call SetUnitX(udg_HC_UnitIndex[udg_HC_Index], udg_HC_TempX + udg_HC_OrbDistance * Cos(udg_HC_Angle))
                Custom script: call SetUnitY(udg_HC_UnitIndex[udg_HC_Index], udg_HC_TempY + udg_HC_OrbDistance * Sin(udg_HC_Angle))
                Set VariableSet HC_TempPoint = (Position of HC_Core[HC_Index])
                Unit - Make HC_UnitIndex[HC_Index] face HC_TempPoint over 0 seconds
                Custom script: call RemoveLocation(udg_HC_TempPoint)
              Else - Actions
            -------- Wind Spin Control --------
            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              If - Conditions
                HC_StageID[HC_Index] Equal to 3
              Then - Actions
                Custom script: set udg_HC_TempX = GetUnitX(udg_HC_Core[udg_HC_Index])
                Custom script: set udg_HC_TempY = GetUnitY(udg_HC_Core[udg_HC_Index])
                Set VariableSet HC_CurrentAngle[HC_Index] = (HC_CurrentAngle[HC_Index] + HC_WindSpinSpeed)
                Custom script: set udg_HC_Angle = udg_HC_CurrentAngle[udg_HC_Index] * bj_DEGTORAD
                Custom script: call SetUnitX(udg_HC_UnitIndex[udg_HC_Index], udg_HC_TempX + udg_HC_WindDistance * Cos(udg_HC_Angle))
                Custom script: call SetUnitY(udg_HC_UnitIndex[udg_HC_Index], udg_HC_TempY + udg_HC_WindDistance * Sin(udg_HC_Angle))
              Else - Actions
          Else - Actions
            -------- Control of Knockbacked units --------
            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              If - Conditions
                HC_StageID[HC_Index] Equal to 4
              Then - Actions
                Custom script: set udg_HC_TempX = GetUnitX(udg_HC_UnitIndex[udg_HC_Index])
                Custom script: set udg_HC_TempY = GetUnitY(udg_HC_UnitIndex[udg_HC_Index])
                Custom script: set udg_HC_Angle = udg_HC_CurrentAngle[udg_HC_Index] * bj_DEGTORAD
                Custom script: call SetUnitX(udg_HC_UnitIndex[udg_HC_Index], udg_HC_TempX + udg_HC_BlastSpeed * Cos(udg_HC_Angle))
                Custom script: call SetUnitY(udg_HC_UnitIndex[udg_HC_Index], udg_HC_TempY + udg_HC_BlastSpeed* Sin(udg_HC_Angle))
                Set VariableSet HC_CurrentBlastDistance[HC_Index] = (HC_CurrentBlastDistance[HC_Index] + HC_BlastSpeed)
                Set VariableSet HC_CurrentHeight[HC_Index] = (((4.00 x HC_MaxHeight[HC_Index]) / HC_BlastDistance[HC_Index]) x ((HC_CurrentBlastDistance[HC_Index] / HC_BlastDistance[HC_Index]) x (HC_BlastDistance[HC_Index] - HC_CurrentBlastDistance[HC_Index])))
                Animation - Change HC_UnitIndex[HC_Index] flying height to HC_CurrentHeight[HC_Index] at 0.00
                -------- Unit Release --------
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                  If - Conditions
                    HC_CurrentHeight[HC_Index] Less than 0.00
                  Then - Actions
                    Special Effect - Destroy HC_SpecialEffect[HC_Index]
                    Unit - Unpause HC_UnitIndex[HC_Index]
                    Set VariableSet HC_StageID[HC_Index] = HC_StageID[HC_MaxIndex]
                    Set VariableSet HC_Aoe[HC_Index] = HC_Aoe[HC_MaxIndex]
                    Set VariableSet HC_OriginalCaster[HC_Index] = HC_OriginalCaster[HC_MaxIndex]
                    Set VariableSet HC_OwningPlayer[HC_Index] = HC_OwningPlayer[HC_MaxIndex]
                    Set VariableSet HC_BlastDistance[HC_Index] = HC_BlastDistance[HC_MaxIndex]
                    Set VariableSet HC_CurrentAngle[HC_Index] = HC_CurrentAngle[HC_MaxIndex]
                    Set VariableSet HC_CurrentBlastDistance[HC_Index] = HC_CurrentBlastDistance[HC_MaxIndex]
                    Set VariableSet HC_SpecialEffect[HC_Index] = HC_SpecialEffect[HC_MaxIndex]
                    Set VariableSet HC_CurrentHeight[HC_Index] = HC_CurrentHeight[HC_MaxIndex]
                    Set VariableSet HC_MaxHeight[HC_Index] = HC_MaxHeight[HC_MaxIndex]
                    Set VariableSet HC_CurrentSunDistance[HC_Index] = HC_CurrentSunDistance[HC_MaxIndex]
                    Set VariableSet HC_Core[HC_Index] = HC_Core[HC_MaxIndex]
                    Set VariableSet HC_UnitIndex[HC_Index] = HC_UnitIndex[HC_MaxIndex]
                    Set VariableSet HC_ExplosionDamage[HC_Index] = HC_ExplosionDamage[HC_MaxIndex]
                    Set VariableSet HC_MagnetismStrength[HC_Index] = HC_MagnetismStrength[HC_MaxIndex]
                    Set VariableSet HC_MaxIndex = (HC_MaxIndex - 1)
                    Set VariableSet HC_Index = (HC_Index - 1)
                    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                      If - Conditions
                        HC_MaxIndex Equal to 0
                      Then - Actions
                        Trigger - Turn off (This trigger)
                      Else - Actions
                  Else - Actions
              Else - Actions
Helios Collision Dummy Removal
  Events
    Unit - A unit Dies
  Conditions
  Actions
    Set VariableSet HC_TempUnit = (Triggering unit)
    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
      If - Conditions
        (Unit-type of HC_TempUnit) Equal to HC_DummyType
      Then - Actions
        Unit - Remove HC_TempUnit from the game
      Else - Actions
Startup
  Events
    Map initialization
  Conditions
  Actions
    Visibility - Disable fog of war
    Visibility - Disable black mask