1. Are you planning to upload your awesome spell or system to Hive? Please review the rules here.
    Dismiss Notice
  2. Updated Resource Submission Rules: All model & skin resource submissions must now include an in-game screenshot. This is to help speed up the moderation process and to show how the model and/or texture looks like from the in-game camera.
    Dismiss Notice
  3. DID YOU KNOW - That you can unlock new rank icons by posting on the forums or winning contests? Click here to customize your rank or read our User Rank Policy to see a list of ranks that you can unlock. Have you won a contest and still havn't received your rank award? Then please contact the administration.
    Dismiss Notice
  4. We have recently started the 16th edition of the Mini Mapping Contest. The theme is mini RPG. Do check it out and have fun.
    Dismiss Notice
  5. Dismiss Notice
  6. The Highway to Hell has been laid open. Come along and participate in the 5th Special Effect 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

Arcane Judgement V1.01.w3x
Variables
Arcane Judgement
Information
Arcane Judgement Configuration
Arcane Judgement Activation
Arcane Judgement Loop
Arcane Judgement 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
AJ_Angle real No
AJ_AOEAccount real No
AJ_AoeBase real No
AJ_AoePerLevel real No
AJ_Caster unit No
AJ_ChargeDamageBase real No
AJ_ChargeDamagePerLevel real No
AJ_ChargeDistance real No
AJ_ChargesCount integer No
AJ_ChargeSFX string No
AJ_ChargesPerTargetBase integer No
AJ_ChargesPerTargetPerLevel integer No
AJ_ChargeSpinSpeed real No
AJ_ConditionConfig boolean Yes
AJ_Core unit Yes
AJ_CurrentAngle real Yes
AJ_DetonationAOE real No
AJ_DetonationDamage real Yes
AJ_DetonationDamageBase real No
AJ_DetonationDamagePerLevel real No
AJ_DetonationSFX string No
AJ_DummyType unitcode No
AJ_EffectDeathDuration real No
AJ_EffectScalingCharges real No
AJ_EffectScalingDetonation real No
AJ_EffectScalingSpawn real No
AJ_EffectScalingSpheres real No
AJ_EffectZCharges real No
AJ_EffectZDetonation real No
AJ_EffectZSpawn real No
AJ_EffectZSpheres real No
AJ_Index integer No
AJ_MaxIndex integer No
AJ_OriginalCaster unit Yes
AJ_OwningPlayer player Yes
AJ_SecondaryIndex integer No
AJ_SpawnSFX string No
AJ_SpecialEffect effect Yes
AJ_Spell abilcode No
AJ_SphereDurationBase real No
AJ_SphereDurationBasePerLevel real No
AJ_SphereSFX string No
AJ_SphereSpeed real No
AJ_StageID integer Yes
AJ_Target unit Yes
AJ_TargetMaxBase integer No
AJ_TargetMaxPerLevel integer No
AJ_Targets group No
AJ_TempGroup group No
AJ_TempInteger integer No
AJ_TempInteger2 integer No
AJ_TempInteger3 integer No
AJ_TempPlayer player No
AJ_TempPoint location No
AJ_TempPoint2 location No
AJ_TempReal real No
AJ_TempUnit unit No
AJ_TempUnit2 unit No
AJ_TempX real No
AJ_TempY real No
AJ_UnitIndex unit Yes
Creator: Tank-Commander
Credits: None
Requested by: None
Purpose: Tipping a battle in your favour by dealing bonus damage to large groups of enemies

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.

=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
Object data - Spell - Arcane Judgement
Object data - Unit - Arcane Judgement Dummy
Trigger data - Variable - TempX
Trigger data - Variable - TempY
Trigger data - Variable - TempZ
Trigger data - Folder - Arcane Judgement

=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
Arcane Judgement Configuration
  Events
    Map initialization
  Conditions
  Actions
    -------- -------- --------
    -------- Condition Configuration --------
    -------- Unit is a ground unit --------
    Set VariableSet AJ_ConditionConfig[0] = True
    -------- Unit is a structure --------
    Set VariableSet AJ_ConditionConfig[1] = False
    -------- Unit is magic immune --------
    Set VariableSet AJ_ConditionConfig[2] = False
    -------- Unit belongs to an enemy player --------
    Set VariableSet AJ_ConditionConfig[3] = True
    -------- Unit is alive --------
    Set VariableSet AJ_ConditionConfig[4] = True
    -------- Determines the area that will be effected by the spell --------
    Set VariableSet AJ_DetonationAOE = 90.00
    Set VariableSet AJ_AOEAccount = 50.00
    Set VariableSet AJ_AoeBase = 350.00
    Set VariableSet AJ_AoePerLevel = 100.00
    -------- Determines the number of charges based on number of targets --------
    Set VariableSet AJ_ChargesPerTargetBase = 5
    Set VariableSet AJ_ChargesPerTargetPerLevel = 1
    -------- Determines the target controls --------
    Set VariableSet AJ_TargetMaxBase = 6
    Set VariableSet AJ_TargetMaxPerLevel = 2
    -------- Determines the damage done by the blast --------
    Set VariableSet AJ_DetonationDamageBase = 25.00
    Set VariableSet AJ_DetonationDamagePerLevel = 25.00
    Set VariableSet AJ_ChargeDamageBase = 10.00
    Set VariableSet AJ_ChargeDamagePerLevel = 5.00
    -------- Determines the movement speed of the sphere --------
    Set VariableSet AJ_SphereSpeed = 6.00
    -------- Determines how fast the Charges Spin around --------
    Set VariableSet AJ_ChargeSpinSpeed = 5.00
    -------- Determines how far the Charges are from the Sphere --------
    Set VariableSet AJ_ChargeDistance = 50.00
    -------- Determines how long the Sphere will last chasing its target --------
    Set VariableSet AJ_SphereDurationBase = 5.00
    Set VariableSet AJ_SphereDurationBasePerLevel = 1.00
    -------- Determines how long the dummies will remain after their usefulness has ended --------
    Set VariableSet AJ_EffectDeathDuration = 1.20
    -------- Determines the scaling of the Sphere and its SFX --------
    Set VariableSet AJ_EffectScalingSpheres = 100.00
    Set VariableSet AJ_EffectScalingSpawn = 100.00
    Set VariableSet AJ_EffectScalingDetonation = 125.00
    Set VariableSet AJ_EffectScalingCharges = 30.00
    -------- Determines the Height given to the effects --------
    Set VariableSet AJ_EffectZSpheres = 100.00
    Set VariableSet AJ_EffectZCharges = 150.00
    Set VariableSet AJ_EffectZSpawn = 0.00
    Set VariableSet AJ_EffectZDetonation = 0.00
    -------- Determines the unit model used as the Sphere --------
    Set VariableSet AJ_SphereSFX = units\nightelf\Wisp\Wisp.mdl
    -------- Determines the model used for the revolving charges --------
    Set VariableSet AJ_ChargeSFX = units\nightelf\Wisp\Wisp.mdl
    -------- Determines the unit model used as the casting effect --------
    Set VariableSet AJ_SpawnSFX = Abilities\Spells\NightElf\Taunt\TauntCaster.mdl
    -------- Determines the SFX used upon detonation --------
    Set VariableSet AJ_DetonationSFX = Objects\Spawnmodels\NightElf\NEDeathSmall\NEDeathSmall.mdl
    -------- Determines the spell used to act as the activation spell --------
    Set VariableSet AJ_Spell = Arcane Judgement
    -------- Determines the Dummy used to attach all the effects to --------
    Set VariableSet AJ_DummyType = Arcane Judgement Dummy
Arcane Judgement Activation
  Events
    Unit - A unit Starts the effect of an ability
  Conditions
    (Ability being cast) Equal to AJ_Spell
  Actions
    Set VariableSet AJ_Caster = (Triggering unit)
    Set VariableSet AJ_TempPoint = (Position of AJ_Caster)
    Set VariableSet AJ_TempInteger2 = (Level of AJ_Spell for AJ_Caster)
    Set VariableSet AJ_TempReal = (Real(AJ_TempInteger2))
    Set VariableSet AJ_TempPlayer = (Owner of AJ_Caster)
    Unit - Create 1.AJ_DummyType for Neutral Passive at AJ_TempPoint facing Default building facing degrees
    Set VariableSet AJ_TempUnit = (Last created unit)
    Special Effect - Create a special effect attached to the origin (attachpoint) of AJ_TempUnit using AJ_SpawnSFX
    Animation - Change AJ_TempUnit's size to (AJ_EffectScalingSpawn%, 0.00%, 0.00%) of its original size
    Animation - Change AJ_TempUnit flying height to AJ_EffectZSpawn at 0.00
    Special Effect - Destroy (Last created special effect)
    Unit - Add a AJ_EffectDeathDuration second Generic expiration timer to AJ_TempUnit
    Set VariableSet AJ_TempGroup = (Units within (AJ_AoeBase + (AJ_AoePerLevel x AJ_TempReal)) of AJ_TempPoint.)
    Unit Group - Pick every unit in AJ_TempGroup and do (Actions)
      Loop - Actions
        Set VariableSet AJ_TempUnit = (Picked unit)
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
          If - Conditions
            (AJ_TempUnit is A ground unit) Equal to AJ_ConditionConfig[0]
            (AJ_TempUnit is A structure) Equal to AJ_ConditionConfig[1]
            (AJ_TempUnit is Magic Immune) Equal to AJ_ConditionConfig[2]
            (AJ_TempUnit belongs to an enemy of AJ_TempPlayer.) Equal to AJ_ConditionConfig[3]
            (AJ_TempUnit is alive) Equal to AJ_ConditionConfig[4]
          Then - Actions
            Unit Group - Add AJ_TempUnit to AJ_Targets
          Else - Actions
    Set VariableSet AJ_TempInteger = (Number of units in AJ_Targets)
    Set VariableSet AJ_ChargesCount = (AJ_TempInteger / (AJ_ChargesPerTargetBase - (AJ_ChargesPerTargetPerLevel x AJ_TempInteger2)))
    Set VariableSet AJ_TempInteger3 = (AJ_TargetMaxBase + (AJ_TargetMaxPerLevel x AJ_TempInteger))
    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
      If - Conditions
        AJ_TempInteger Greater than AJ_TempInteger3
      Then - Actions
        Set VariableSet AJ_TempInteger = AJ_TempInteger3
      Else - Actions
    Custom script: call DestroyGroup(udg_AJ_TempGroup)
    For each (Integer AJ_Index) from 1 to AJ_TempInteger, do (Actions)
      Loop - Actions
        Unit - Create 1.AJ_DummyType for Neutral Passive at AJ_TempPoint facing Default building facing degrees
        Set VariableSet AJ_TempUnit = (Last created unit)
        Set VariableSet AJ_MaxIndex = (AJ_MaxIndex + 1)
        Special Effect - Create a special effect attached to the origin (attachpoint) of AJ_TempUnit using AJ_SphereSFX
        Set VariableSet AJ_SpecialEffect[AJ_MaxIndex] = (Last created special effect)
        Animation - Change AJ_TempUnit's size to (AJ_EffectScalingSpheres%, 0.00%, 0.00%) of its original size
        Animation - Change AJ_TempUnit flying height to AJ_EffectZSpheres at 0.00
        Unit - Add a (AJ_SphereDurationBase + (AJ_SphereDurationBasePerLevel x AJ_TempReal)) second Generic expiration timer to AJ_TempUnit
        Set VariableSet AJ_TempUnit2 = (Random unit from AJ_Targets)
        Set VariableSet AJ_Target[AJ_MaxIndex] = AJ_TempUnit2
        Set VariableSet AJ_OriginalCaster[AJ_MaxIndex] = AJ_Caster
        Set VariableSet AJ_OwningPlayer[AJ_MaxIndex] = AJ_TempPlayer
        Set VariableSet AJ_Core[AJ_MaxIndex] = AJ_TempUnit
        Set VariableSet AJ_DetonationDamage[AJ_MaxIndex] = ((AJ_DetonationDamageBase + (AJ_DetonationDamagePerLevel x AJ_TempReal)) + ((Real(AJ_ChargesCount)) x (AJ_ChargeDamageBase + (AJ_ChargeDamagePerLevel x AJ_TempReal))))
        Set VariableSet AJ_CurrentAngle[AJ_MaxIndex] = AJ_Angle
        Set VariableSet AJ_UnitIndex[AJ_MaxIndex] = AJ_TempUnit
        Set VariableSet AJ_StageID[AJ_MaxIndex] = 1
        Set VariableSet AJ_Angle = 0.00
        Unit Group - Remove AJ_TempUnit2 from AJ_Targets.
        -------- --------
        -------- --------
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
          If - Conditions
            AJ_MaxIndex Equal to 1
          Then - Actions
            Trigger - Turn on Arcane_Judgement_Loop <gen>
          Else - Actions
        For each (Integer AJ_SecondaryIndex) from 1 to AJ_ChargesCount, do (Actions)
          Loop - Actions
            Set VariableSet AJ_Angle = (AJ_Angle + (360.00 / (Real(AJ_ChargesCount))))
            Set VariableSet AJ_TempPoint2 = (AJ_TempPoint offset by AJ_ChargeDistance towards AJ_Angle degrees.)
            Set VariableSet AJ_MaxIndex = (AJ_MaxIndex + 1)
            Unit - Create 1.AJ_DummyType for Neutral Passive at AJ_TempPoint facing Default building facing degrees
            Set VariableSet AJ_TempUnit2 = (Last created unit)
            Special Effect - Create a special effect attached to the origin (attachpoint) of AJ_TempUnit2 using AJ_ChargeSFX
            Set VariableSet AJ_SpecialEffect[AJ_MaxIndex] = (Last created special effect)
            Animation - Change AJ_TempUnit2's size to (AJ_EffectScalingCharges%, 0.00%, 0.00%) of its original size
            Animation - Change AJ_TempUnit2 flying height to AJ_EffectZCharges at 0.00
            Set VariableSet AJ_Core[AJ_MaxIndex] = AJ_TempUnit
            Set VariableSet AJ_StageID[AJ_MaxIndex] = 2
            Set VariableSet AJ_CurrentAngle[AJ_MaxIndex] = AJ_Angle
            Set VariableSet AJ_UnitIndex[AJ_MaxIndex] = AJ_TempUnit2
            -------- --------
            Set VariableSet AJ_Target[AJ_MaxIndex] = AJ_TempUnit2
            Set VariableSet AJ_OriginalCaster[AJ_MaxIndex] = AJ_Caster
            Set VariableSet AJ_OwningPlayer[AJ_MaxIndex] = AJ_TempPlayer
            Set VariableSet AJ_DetonationDamage[AJ_MaxIndex] = 0.00
            -------- --------
            Custom script: call RemoveLocation (udg_AJ_TempPoint2)
    Custom script: call RemoveLocation (udg_AJ_TempPoint)
    Unit Group - Remove all units from AJ_Targets.
Arcane Judgement Loop
  Events
    Time - Every 0.03 seconds of game time
  Conditions
  Actions
    For each (Integer AJ_Index) from 1 to AJ_MaxIndex, do (Actions)
      Loop - Actions
        Set VariableSet AJ_Angle = 0.00
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
          If - Conditions
            AJ_StageID[AJ_Index] Equal to 1
          Then - Actions
            Custom script: set udg_AJ_TempX = GetUnitX(udg_AJ_UnitIndex[udg_AJ_Index])
            Custom script: set udg_AJ_TempY = GetUnitY(udg_AJ_UnitIndex[udg_AJ_Index])
            Custom script: set udg_AJ_Angle = Atan2(GetUnitY(udg_AJ_Target[udg_AJ_Index]) - udg_AJ_TempY, GetUnitX(udg_AJ_Target[udg_AJ_Index]) - udg_AJ_TempX)
            Custom script: call SetUnitX(udg_AJ_UnitIndex[udg_AJ_Index], udg_AJ_TempX + udg_AJ_SphereSpeed * Cos(udg_AJ_Angle))
            Custom script: call SetUnitY(udg_AJ_UnitIndex[udg_AJ_Index], udg_AJ_TempY + udg_AJ_SphereSpeed * Sin(udg_AJ_Angle))
            Set VariableSet AJ_TempPoint = (Position of AJ_UnitIndex[AJ_Index])
            Set VariableSet AJ_TempPoint2 = (Position of AJ_Target[AJ_Index])
            Set VariableSet AJ_TempReal = (Distance between AJ_TempPoint and AJ_TempPoint2)
            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              If - Conditions
                Or - Any (Conditions) are true
                  Conditions
                    AJ_TempReal Less than or equal to (AJ_DetonationAOE - AJ_AOEAccount)
                    (AJ_Target[AJ_Index] is dead) Equal to True
              Then - Actions
                Unit - Kill AJ_UnitIndex[AJ_Index]
              Else - Actions
            Custom script: call RemoveLocation(udg_AJ_TempPoint2)
            Set VariableSet AJ_TempUnit = AJ_UnitIndex[AJ_Index]
            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              If - Conditions
                (AJ_TempUnit is dead) Equal to True
              Then - Actions
                Set VariableSet AJ_TempGroup = (Units within AJ_DetonationAOE of AJ_TempPoint.)
                Unit Group - Pick every unit in AJ_TempGroup and do (Actions)
                  Loop - Actions
                    Set VariableSet AJ_TempUnit2 = (Picked unit)
                    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                      If - Conditions
                        (AJ_TempUnit2 is A ground unit) Equal to AJ_ConditionConfig[0]
                        (AJ_TempUnit2 is A structure) Equal to AJ_ConditionConfig[1]
                        (AJ_TempUnit2 is Magic Immune) Equal to AJ_ConditionConfig[2]
                        (AJ_TempUnit2 belongs to an enemy of AJ_TempPlayer.) Equal to AJ_ConditionConfig[3]
                        (AJ_TempUnit2 is alive) Equal to AJ_ConditionConfig[4]
                      Then - Actions
                        Unit - Cause AJ_OriginalCaster[AJ_Index] to damage AJ_TempUnit2, dealing AJ_DetonationDamage[AJ_Index] damage of attack type Spells and damage type Normal
                      Else - Actions
                Custom script: call DestroyGroup(udg_AJ_TempGroup)
                For each (Integer AJ_SecondaryIndex) from 1 to AJ_MaxIndex, do (Actions)
                  Loop - Actions
                    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                      If - Conditions
                        AJ_Core[AJ_SecondaryIndex] Equal to AJ_TempUnit
                        AJ_UnitIndex[AJ_SecondaryIndex] Not equal to AJ_TempUnit
                      Then - Actions
                        Set VariableSet AJ_TempUnit2 = AJ_UnitIndex[AJ_SecondaryIndex]
                        Special Effect - Destroy AJ_SpecialEffect[AJ_SecondaryIndex]
                        Set VariableSet AJ_Target[AJ_SecondaryIndex] = AJ_Target[AJ_MaxIndex]
                        Set VariableSet AJ_OriginalCaster[AJ_SecondaryIndex] = AJ_OriginalCaster[AJ_MaxIndex]
                        Set VariableSet AJ_OwningPlayer[AJ_SecondaryIndex] = AJ_OwningPlayer[AJ_MaxIndex]
                        Set VariableSet AJ_Core[AJ_SecondaryIndex] = AJ_Core[AJ_MaxIndex]
                        Set VariableSet AJ_SpecialEffect[AJ_SecondaryIndex] = AJ_SpecialEffect[AJ_MaxIndex]
                        Set VariableSet AJ_DetonationDamage[AJ_SecondaryIndex] = AJ_DetonationDamage[AJ_MaxIndex]
                        Set VariableSet AJ_CurrentAngle[AJ_SecondaryIndex] = AJ_CurrentAngle[AJ_MaxIndex]
                        Set VariableSet AJ_UnitIndex[AJ_SecondaryIndex] = AJ_UnitIndex[AJ_MaxIndex]
                        Set VariableSet AJ_StageID[AJ_SecondaryIndex] = AJ_StageID[AJ_MaxIndex]
                        Set VariableSet AJ_MaxIndex = (AJ_MaxIndex - 1)
                        Set VariableSet AJ_SecondaryIndex = (AJ_SecondaryIndex - 1)
                        Unit - Remove AJ_TempUnit2 from the game
                      Else - Actions
                Special Effect - Destroy AJ_SpecialEffect[AJ_Index]
                Set VariableSet AJ_Target[AJ_Index] = AJ_Target[AJ_MaxIndex]
                Set VariableSet AJ_OriginalCaster[AJ_Index] = AJ_OriginalCaster[AJ_MaxIndex]
                Set VariableSet AJ_OwningPlayer[AJ_Index] = AJ_OwningPlayer[AJ_MaxIndex]
                Set VariableSet AJ_Core[AJ_Index] = AJ_Core[AJ_MaxIndex]
                Set VariableSet AJ_SpecialEffect[AJ_Index] = AJ_SpecialEffect[AJ_MaxIndex]
                Set VariableSet AJ_DetonationDamage[AJ_Index] = AJ_DetonationDamage[AJ_MaxIndex]
                Set VariableSet AJ_CurrentAngle[AJ_Index] = AJ_CurrentAngle[AJ_MaxIndex]
                Set VariableSet AJ_UnitIndex[AJ_Index] = AJ_UnitIndex[AJ_MaxIndex]
                Set VariableSet AJ_StageID[AJ_Index] = AJ_StageID[AJ_MaxIndex]
                Set VariableSet AJ_MaxIndex = (AJ_MaxIndex - 1)
                Set VariableSet AJ_Index = (AJ_Index - 1)
                Unit - Remove AJ_TempUnit from the game
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                  If - Conditions
                    AJ_MaxIndex Equal to 0
                  Then - Actions
                    Trigger - Turn off Arcane_Judgement_Loop <gen>
                  Else - Actions
                Unit - Create 1.AJ_DummyType for Neutral Passive at AJ_TempPoint facing Default building facing degrees
                Set VariableSet AJ_TempUnit2 = (Last created unit)
                Special Effect - Create a special effect attached to the origin (attachpoint) of AJ_TempUnit2 using AJ_DetonationSFX
                Animation - Change AJ_TempUnit2's size to (AJ_EffectScalingDetonation%, 0.00%, 0.00%) of its original size
                Animation - Change AJ_TempUnit2 flying height to AJ_EffectZDetonation at 0.00
                Special Effect - Destroy (Last created special effect)
                Unit - Add a AJ_EffectDeathDuration second Generic expiration timer to AJ_TempUnit2
              Else - Actions
            Custom script: call RemoveLocation(udg_AJ_TempPoint)
          Else - Actions
            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              If - Conditions
                AJ_StageID[AJ_Index] Equal to 2
              Then - Actions
                Custom script: set udg_AJ_TempX = GetUnitX(udg_AJ_Core[udg_AJ_Index])
                Custom script: set udg_AJ_TempY = GetUnitY(udg_AJ_Core[udg_AJ_Index])
                Set VariableSet AJ_CurrentAngle[AJ_Index] = (AJ_CurrentAngle[AJ_Index] + AJ_ChargeSpinSpeed)
                Custom script: set udg_AJ_Angle = udg_AJ_CurrentAngle[udg_AJ_Index] * bj_DEGTORAD
                Custom script: call SetUnitX(udg_AJ_UnitIndex[udg_AJ_Index], udg_AJ_TempX + udg_AJ_ChargeDistance * Cos(udg_AJ_Angle))
                Custom script: call SetUnitY(udg_AJ_UnitIndex[udg_AJ_Index], udg_AJ_TempY + udg_AJ_ChargeDistance * Sin(udg_AJ_Angle))
              Else - Actions
Arcane Judgement Dummy Removal
  Events
    Unit - A unit Dies
  Conditions
  Actions
    Set VariableSet AJ_TempUnit = (Triggering unit)
    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
      If - Conditions
        (Unit-type of AJ_TempUnit) Equal to AJ_DummyType
      Then - Actions
        Unit - Remove AJ_TempUnit from the game
      Else - Actions
Startup
  Events
    Map initialization
  Conditions
  Actions
    Visibility - Disable fog of war
    Visibility - Disable black mask