1. Are you planning to upload your awesome spell or system to Hive? Please review the rules here.
    Dismiss Notice
  2. Head to the 33rd Modeling Contest Poll and drink to your heart's desire.
    Dismiss Notice
  3. Choose your means of doom in the 17th Mini Mapping Contest Poll.
    Dismiss Notice
  4. A slave to two rhythms, the 22nd Terraining Contest is here.
    Dismiss Notice
  5. The heavens smile on the old faithful. The 16th Techtree Contest has begun.
    Dismiss Notice
  6. The die is cast - the 6th Melee Mapping Contest results have been announced. Onward to the Hive Cup!
    Dismiss Notice
  7. The glory of the 20th Icon Contest is yours for the taking!
    Dismiss Notice
  8. 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

Archimonde Spellpack v1.0.0 - Public Release.w3x
Variables
Map
Initialization
Test Dialogs
Test Mode Select
Test Race Select
Revive
Refresh
AI Learn
AI Cast
AI Quest
Lives Count
Reinforcements Start
Human Reinforcements
Orc Reinforcements
Night Elf Reinforcements
Undead Reinforcements
Archimonde Decay
Conditions
Systems
Alloc
Buff
Bitwise
Table
SpellEvent
SpellCloner
LinkedList
UnitDex
DummyRecycler
ZLibrary
TerrainPathability
Knockback3D
CameraShake
MotionSensor
RapidSound
DispelLibrary
LineSegmentEnumeration
Doomfire Spirit
Doomfire Spirit Configuration
Doomfire Spirit
Allure Of Flames
Acquire Allure Of Flames
Allure Of Flames Configuration
Allure Of Flames
Death Brand
Death Brand Configuration
Death Brand
Desecration
Desecration Configuration
Desecration
Chaos Meteors
Chaos Meteors Configuration
Chaos Meteors
Wrought Chaos
Wrought Chaos Configuration
Wrought Chaos
Modified Abilities
Wicked Desecration
Doomfire Judgement
Master Of Flames
Infernal Meteors

		
Name Type Is Array Initial Value
Test_AI_Engager unit No
Test_AI_Hero unit No
Test_AI_Player player No
Test_Altar_Type unitcode Yes
Test_Barracks_Type unitcode Yes
Test_Blacksmith_Type unitcode Yes
Test_Breaker_Type unitcode Yes
Test_Castle_Type unitcode Yes
Test_Dialog dialog No
Test_Dialog_Race dialog No
Test_DialogButton button Yes
Test_Farm_Type unitcode Yes
Test_Flying_Type unitcode Yes
Test_Footman_Type unitcode Yes
Test_Gryphon_Type unitcode Yes
Test_Guard_Type unitcode Yes
Test_Hero unit No
Test_Hero_Condition unit No
Test_Hero_Life real No
Test_Hero_Location location No
Test_Hero_Type unitcode Yes
Test_Keep_Type unitcode Yes
Test_Knight_Type unitcode Yes
Test_Lives integer No
Test_Location location No
Test_Lumber_Type unitcode Yes
Test_Modified_Flag boolean Yes
Test_Mortar_Type unitcode Yes
Test_Peasant_Type unitcode Yes
Test_Priest_Type unitcode Yes
Test_Quest_Flag boolean No
Test_Quest_Player player No
Test_Race_Facing real No
Test_Race_Hero unit No
Test_Race_Integer integer No
Test_Race_Picked unit No
Test_Race_Type unitcode No
Test_Region rect Yes
Test_Reinforcements_Timer timer No
Test_Reinforcements_Window timerdialog No
Test_Rifleman_Type unitcode Yes
Test_Sanctum_Type unitcode Yes
Test_Scout_Type unitcode Yes
Test_Siege_Type unitcode Yes
Test_Sorceress_Type unitcode Yes
Test_Spire_Radius real No
Test_SpiritSpire_Count integer No
Test_SpiritSpire_Group group No
Test_Town_Type unitcode Yes
Test_Vault_Type unitcode Yes
Test_Workshop_Type unitcode Yes
Initialization
  Events
    Map initialization
  Conditions
  Actions
    -------- ------------------------------------------------------------------------------------------------- --------
    -------- Camera Improvements --------
    Cinematic - Fade out over 0.00 seconds using texture Black Mask and color (0.00%, 0.00%, 0.00%) with 0.00% transparency
    Camera - Change camera smoothing factor to 1.50
    Camera - Set Player 1 (Red)'s camera Distance to target to 2000.00 over 0.00 seconds
    -------- ------------------------------------------------------------------------------------------------- --------
    -------- Game Environment --------
    Game - Set the time of day to 15.00
    -------- ------------------------------------------------------------------------------------------------- --------
Test Dialogs
  Events
    Time - Elapsed game time is 0.00 seconds
  Conditions
  Actions
    -------- - --------
    Dialog - Clear Test_Dialog
    Dialog - Change the title of Test_Dialog to SELECT TEST MODE
    -------- - --------
    Dialog - Create a dialog button for Test_Dialog labelled Normal
    Set VariableSet Test_DialogButton[1] = (Last created dialog Button)
    Dialog - Create a dialog button for Test_Dialog labelled Quest
    Set VariableSet Test_DialogButton[2] = (Last created dialog Button)
    -------- - --------
    Dialog - Show Test_Dialog for Player 1 (Red)
    -------- - --------
    Dialog - Clear Test_Dialog_Race
    Dialog - Change the title of Test_Dialog_Race to SELECT TEST RACE
    -------- - --------
    Dialog - Create a dialog button for Test_Dialog_Race labelled Humans
    Set VariableSet Test_DialogButton[3] = (Last created dialog Button)
    Dialog - Create a dialog button for Test_Dialog_Race labelled Orcs
    Set VariableSet Test_DialogButton[4] = (Last created dialog Button)
    Dialog - Create a dialog button for Test_Dialog_Race labelled Night Elves
    Set VariableSet Test_DialogButton[5] = (Last created dialog Button)
    Dialog - Create a dialog button for Test_Dialog_Race labelled Undead
    Set VariableSet Test_DialogButton[6] = (Last created dialog Button)
    -------- - --------
    Set VariableSet Test_Footman_Type[4] = Grunt
    Set VariableSet Test_Footman_Type[5] = Huntress
    Set VariableSet Test_Footman_Type[6] = Ghoul
    Set VariableSet Test_Rifleman_Type[4] = Troll Headhunter
    Set VariableSet Test_Rifleman_Type[5] = Archer
    Set VariableSet Test_Rifleman_Type[6] = Crypt Fiend
    Set VariableSet Test_Knight_Type[4] = Raider
    Set VariableSet Test_Knight_Type[5] = Druid of the Claw (Bear Form)
    Set VariableSet Test_Knight_Type[6] = Abomination
    Set VariableSet Test_Mortar_Type[4] = Demolisher
    Set VariableSet Test_Mortar_Type[5] = Glaive Thrower
    Set VariableSet Test_Mortar_Type[6] = Meat Wagon
    Set VariableSet Test_Flying_Type[4] = Troll Batrider
    Set VariableSet Test_Flying_Type[5] = Hippogryph
    Set VariableSet Test_Flying_Type[6] = Gargoyle
    Set VariableSet Test_Gryphon_Type[4] = Wind Rider
    Set VariableSet Test_Gryphon_Type[5] = Chimaera
    Set VariableSet Test_Gryphon_Type[6] = Frost Wyrm
    Set VariableSet Test_Priest_Type[4] = Shaman
    Set VariableSet Test_Priest_Type[5] = Druid of the Talon (Night Elf Form)
    Set VariableSet Test_Priest_Type[6] = Necromancer
    Set VariableSet Test_Sorceress_Type[4] = Troll Witch Doctor
    Set VariableSet Test_Sorceress_Type[5] = Druid of the Claw (Night Elf Form)
    Set VariableSet Test_Sorceress_Type[6] = Banshee
    Set VariableSet Test_Siege_Type[4] = Tauren
    Set VariableSet Test_Siege_Type[5] = Mountain Giant
    Set VariableSet Test_Siege_Type[6] = Obsidian Statue
    Set VariableSet Test_Breaker_Type[4] = Spirit Walker (Ethereal)
    Set VariableSet Test_Breaker_Type[5] = Dryad
    Set VariableSet Test_Breaker_Type[6] = Destroyer
    Set VariableSet Test_Peasant_Type[4] = Peon
    Set VariableSet Test_Peasant_Type[5] = Wisp
    Set VariableSet Test_Peasant_Type[6] = Acolyte
    Set VariableSet Test_Hero_Type[4] = Far Seer
    Set VariableSet Test_Hero_Type[5] = Priestess of the Moon
    Set VariableSet Test_Hero_Type[6] = Death Knight (Evil)
    Set VariableSet Test_Town_Type[4] = Great Hall
    Set VariableSet Test_Town_Type[5] = Tree of Life
    Set VariableSet Test_Town_Type[6] = Necropolis
    Set VariableSet Test_Keep_Type[4] = Stronghold
    Set VariableSet Test_Keep_Type[5] = Tree of Ages
    Set VariableSet Test_Keep_Type[6] = Halls of the Dead
    Set VariableSet Test_Castle_Type[4] = Fortress
    Set VariableSet Test_Castle_Type[5] = Tree of Eternity
    Set VariableSet Test_Castle_Type[6] = Black Citadel
    Set VariableSet Test_Farm_Type[4] = Orc Burrow
    Set VariableSet Test_Farm_Type[5] = Moon Well
    Set VariableSet Test_Farm_Type[6] = Ziggurat
    Set VariableSet Test_Altar_Type[4] = Altar of Storms
    Set VariableSet Test_Altar_Type[5] = Altar of Elders
    Set VariableSet Test_Altar_Type[6] = Altar of Darkness
    Set VariableSet Test_Barracks_Type[4] = Barracks
    Set VariableSet Test_Barracks_Type[5] = Ancient of War
    Set VariableSet Test_Barracks_Type[6] = Crypt
    Set VariableSet Test_Lumber_Type[4] = War Mill
    Set VariableSet Test_Lumber_Type[5] = Hunter's Hall
    Set VariableSet Test_Lumber_Type[6] = Graveyard
    Set VariableSet Test_Blacksmith_Type[4] = War Mill
    Set VariableSet Test_Blacksmith_Type[5] = Hunter's Hall
    Set VariableSet Test_Blacksmith_Type[6] = Graveyard
    Set VariableSet Test_Workshop_Type[4] = Beastiary
    Set VariableSet Test_Workshop_Type[5] = Ancient of Lore
    Set VariableSet Test_Workshop_Type[6] = Slaughterhouse
    Set VariableSet Test_Sanctum_Type[4] = Spirit Lodge
    Set VariableSet Test_Sanctum_Type[5] = Ancient of Wind
    Set VariableSet Test_Sanctum_Type[6] = Temple of the Damned
    Set VariableSet Test_Scout_Type[4] = Pig Farm
    Set VariableSet Test_Scout_Type[5] = Night Elf House
    Set VariableSet Test_Scout_Type[6] = Infected Granary
    Set VariableSet Test_Guard_Type[4] = Watch Tower
    Set VariableSet Test_Guard_Type[5] = Ancient Protector
    Set VariableSet Test_Guard_Type[6] = Spirit Tower
    Set VariableSet Test_Vault_Type[4] = Voodoo Lounge
    Set VariableSet Test_Vault_Type[5] = Ancient of Wonders
    Set VariableSet Test_Vault_Type[6] = Tomb of Relics
    -------- - --------
    Set VariableSet Test_Race_Hero = Archmage 0175 <gen>
    -------- - --------
Test Mode Select
  Events
    Dialog - A dialog button is clicked for Test_Dialog
  Conditions
  Actions
    -------- - --------
    Selection - Clear selection for Player 1 (Red).
    Set VariableSet Test_Location = (Center of Test_Center <gen>)
    -------- - --------
    -------- NORMAL --------
    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
      If - Conditions
        (Clicked dialog button) Equal to Test_DialogButton[1]
      Then - Actions
        Set VariableSet Test_Quest_Flag = False
        Trigger - Turn on Refresh <gen>
        Visibility - Disable fog of war
        Visibility - Disable black mask
        Game - Display to (All players) for 15.00 seconds the text: Use the '|cffffcc00Esc|rape Key'for leveling and refreshingof your health and mana.
        Unit - Create 1.Defiler for Player 1 (Red) at Test_Location facing 270.00 degrees
        Set VariableSet Test_Hero = (Last created unit)
        Dialog - Show Test_Dialog_Race for Player 1 (Red)
      Else - Actions
    -------- QUEST --------
    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
      If - Conditions
        (Clicked dialog button) Equal to Test_DialogButton[2]
      Then - Actions
        Set VariableSet Test_Quest_Flag = True
        Game - Display to (All players) for 15.00 seconds the text: - |cffffcc00MAIN QUEST|r -Defeat Archimonde the Defiler.
        Unit - Create 1.Defiler for Player 2 (Blue) at Test_Location facing 270.00 degrees
        Set VariableSet Test_Hero = (Last created unit)
        Dialog - Show Test_Dialog_Race for Player 1 (Red)
        Player - Set name of Player 2 (Blue) to The Burning Legion
        Hero - Learn skill for Test_Hero: Chaos Meteors
        Trigger - Turn on Conditions <gen>
        Trigger - Turn on AI_Cast <gen>
        Trigger - Turn on AI_Quest <gen>
        Hero - Set Test_Hero Hero-level to 10, Hide level-up graphics
        Trigger - Add to Conditions <gen> the event (Test_Hero Dies)
      Else - Actions
    -------- - --------
    Custom script: call RemoveLocation(udg_Test_Location)
    -------- - --------
Test Race Select
  Events
    Dialog - A dialog button is clicked for Test_Dialog_Race
  Conditions
  Actions
    -------- - --------
    Selection - Clear selection for Player 1 (Red).
    -------- - --------
    For each (Integer Test_Race_Integer) from 3 to 6, do (Actions)
      Loop - Actions
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
          If - Conditions
            (Clicked dialog button) Equal to Test_DialogButton[Test_Race_Integer]
          Then - Actions
            -------- - --------
            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              If - Conditions
                Test_Quest_Flag Equal to False
              Then - Actions
                Set VariableSet Test_Quest_Player = Player 2 (Blue)
              Else - Actions
                Set VariableSet Test_Quest_Player = Player 1 (Red)
            -------- - --------
            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              If - Conditions
                Or - Any (Conditions) are true
                  Conditions
                    (Clicked dialog button) Equal to Test_DialogButton[4]
                    (Clicked dialog button) Equal to Test_DialogButton[5]
                    (Clicked dialog button) Equal to Test_DialogButton[6]
              Then - Actions
                -------- - --------
                Custom script: set bj_wantDestroyGroup = true
                -------- - --------
                Unit Group - Pick every unit in (Units in (Playable map area)) and do (Actions)
                  Loop - Actions
                    Set VariableSet Test_Race_Picked = (Picked unit)
                    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                      If - Conditions
                        Test_Race_Picked Not equal to Test_Hero
                      Then - Actions
                        Set VariableSet Test_Location = (Position of Test_Race_Picked)
                        Custom script: set udg_Test_Race_Facing = GetUnitFacing(udg_Test_Race_Picked)
                        Set VariableSet Test_Race_Type = (Unit-type of Test_Race_Picked)
                        -------- - --------
                        Custom script: call RemoveUnit(udg_Test_Race_Picked)
                        -------- - --------
                        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                          If - Conditions
                            Test_Race_Type Equal to Footman
                          Then - Actions
                            Unit - Create 1.Test_Footman_Type[Test_Race_Integer] for Test_Quest_Player at Test_Location facing Test_Race_Facing degrees
                          Else - Actions
                        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                          If - Conditions
                            Test_Race_Type Equal to Rifleman
                          Then - Actions
                            Unit - Create 1.Test_Rifleman_Type[Test_Race_Integer] for Test_Quest_Player at Test_Location facing Test_Race_Facing degrees
                          Else - Actions
                        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                          If - Conditions
                            Test_Race_Type Equal to Knight
                          Then - Actions
                            Unit - Create 1.Test_Knight_Type[Test_Race_Integer] for Test_Quest_Player at Test_Location facing Test_Race_Facing degrees
                          Else - Actions
                        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                          If - Conditions
                            Test_Race_Type Equal to Mortar Team
                          Then - Actions
                            Unit - Create 1.Test_Mortar_Type[Test_Race_Integer] for Test_Quest_Player at Test_Location facing Test_Race_Facing degrees
                          Else - Actions
                        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                          If - Conditions
                            Test_Race_Type Equal to Flying Machine
                          Then - Actions
                            Unit - Create 1.Test_Flying_Type[Test_Race_Integer] for Test_Quest_Player at Test_Location facing Test_Race_Facing degrees
                          Else - Actions
                        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                          If - Conditions
                            Test_Race_Type Equal to Gryphon Rider
                          Then - Actions
                            Unit - Create 1.Test_Gryphon_Type[Test_Race_Integer] for Test_Quest_Player at Test_Location facing Test_Race_Facing degrees
                          Else - Actions
                        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                          If - Conditions
                            Test_Race_Type Equal to Priest
                          Then - Actions
                            Unit - Create 1.Test_Priest_Type[Test_Race_Integer] for Test_Quest_Player at Test_Location facing Test_Race_Facing degrees
                          Else - Actions
                        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                          If - Conditions
                            Test_Race_Type Equal to Sorceress
                          Then - Actions
                            Unit - Create 1.Test_Sorceress_Type[Test_Race_Integer] for Test_Quest_Player at Test_Location facing Test_Race_Facing degrees
                          Else - Actions
                        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                          If - Conditions
                            Test_Race_Type Equal to Siege Engine
                          Then - Actions
                            Unit - Create 1.Test_Siege_Type[Test_Race_Integer] for Test_Quest_Player at Test_Location facing Test_Race_Facing degrees
                          Else - Actions
                        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                          If - Conditions
                            Test_Race_Type Equal to Spell Breaker
                          Then - Actions
                            Unit - Create 1.Test_Breaker_Type[Test_Race_Integer] for Test_Quest_Player at Test_Location facing Test_Race_Facing degrees
                          Else - Actions
                        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                          If - Conditions
                            Test_Race_Type Equal to Peasant
                          Then - Actions
                            Unit - Create 1.Test_Peasant_Type[Test_Race_Integer] for Test_Quest_Player at Test_Location facing Test_Race_Facing degrees
                          Else - Actions
                        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                          If - Conditions
                            Test_Race_Type Equal to Archmage
                          Then - Actions
                            Unit - Create 1.Test_Hero_Type[Test_Race_Integer] for Test_Quest_Player at Test_Location facing Test_Race_Facing degrees
                            Set VariableSet Test_Race_Hero = (Last created unit)
                          Else - Actions
                        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                          If - Conditions
                            Test_Race_Type Equal to Town Hall
                          Then - Actions
                            Unit - Create 1.Test_Town_Type[Test_Race_Integer] for Test_Quest_Player at Test_Location facing Test_Race_Facing degrees
                          Else - Actions
                        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                          If - Conditions
                            Test_Race_Type Equal to Keep
                          Then - Actions
                            Unit - Create 1.Test_Keep_Type[Test_Race_Integer] for Test_Quest_Player at Test_Location facing Test_Race_Facing degrees
                          Else - Actions
                        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                          If - Conditions
                            Test_Race_Type Equal to Castle
                          Then - Actions
                            Unit - Create 1.Test_Castle_Type[Test_Race_Integer] for Test_Quest_Player at Test_Location facing Test_Race_Facing degrees
                          Else - Actions
                        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                          If - Conditions
                            Test_Race_Type Equal to Farm
                          Then - Actions
                            Unit - Create 1.Test_Farm_Type[Test_Race_Integer] for Test_Quest_Player at Test_Location facing Test_Race_Facing degrees
                          Else - Actions
                        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                          If - Conditions
                            Test_Race_Type Equal to Altar of Kings
                          Then - Actions
                            Unit - Create 1.Test_Altar_Type[Test_Race_Integer] for Test_Quest_Player at Test_Location facing Test_Race_Facing degrees
                          Else - Actions
                        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                          If - Conditions
                            Test_Race_Type Equal to Barracks
                          Then - Actions
                            Unit - Create 1.Test_Barracks_Type[Test_Race_Integer] for Test_Quest_Player at Test_Location facing Test_Race_Facing degrees
                          Else - Actions
                        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                          If - Conditions
                            Test_Race_Type Equal to Lumber Mill
                          Then - Actions
                            Unit - Create 1.Test_Lumber_Type[Test_Race_Integer] for Test_Quest_Player at Test_Location facing Test_Race_Facing degrees
                          Else - Actions
                        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                          If - Conditions
                            Test_Race_Type Equal to Blacksmith
                          Then - Actions
                            Unit - Create 1.Test_Blacksmith_Type[Test_Race_Integer] for Test_Quest_Player at Test_Location facing Test_Race_Facing degrees
                          Else - Actions
                        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                          If - Conditions
                            Test_Race_Type Equal to Workshop
                          Then - Actions
                            Unit - Create 1.Test_Workshop_Type[Test_Race_Integer] for Test_Quest_Player at Test_Location facing Test_Race_Facing degrees
                          Else - Actions
                        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                          If - Conditions
                            Test_Race_Type Equal to Arcane Sanctum
                          Then - Actions
                            Unit - Create 1.Test_Sanctum_Type[Test_Race_Integer] for Test_Quest_Player at Test_Location facing Test_Race_Facing degrees
                          Else - Actions
                        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                          If - Conditions
                            Test_Race_Type Equal to Scout Tower
                          Then - Actions
                            Unit - Create 1.Test_Scout_Type[Test_Race_Integer] for Test_Quest_Player at Test_Location facing Test_Race_Facing degrees
                          Else - Actions
                        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                          If - Conditions
                            Test_Race_Type Equal to Guard Tower
                          Then - Actions
                            Unit - Create 1.Test_Guard_Type[Test_Race_Integer] for Test_Quest_Player at Test_Location facing Test_Race_Facing degrees
                          Else - Actions
                        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                          If - Conditions
                            Test_Race_Type Equal to Arcane Vault
                          Then - Actions
                            Unit - Create 1.Test_Vault_Type[Test_Race_Integer] for Test_Quest_Player at Test_Location facing Test_Race_Facing degrees
                          Else - Actions
                        Custom script: call RemoveLocation(udg_Test_Location)
                      Else - Actions
              Else - Actions
                -------- - --------
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                  If - Conditions
                    Test_Quest_Flag Equal to True
                    (Clicked dialog button) Equal to Test_DialogButton[3]
                  Then - Actions
                    -------- - --------
                    Custom script: set bj_wantDestroyGroup = true
                    -------- - --------
                    Unit Group - Pick every unit in (Units in (Playable map area)) and do (Actions)
                      Loop - Actions
                        Set VariableSet Test_Race_Picked = (Picked unit)
                        -------- - --------
                        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                          If - Conditions
                            Test_Race_Picked Not equal to Test_Hero
                          Then - Actions
                            Unit - Change ownership of Test_Race_Picked to Test_Quest_Player and Change color
                          Else - Actions
                        -------- - --------
                  Else - Actions
            -------- - --------
            Cinematic - Fade in over 5.00 seconds using texture Black Mask and color (0.00%, 0.00%, 0.00%) with 0.00% transparency
            -------- - --------
            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              If - Conditions
                Test_Quest_Flag Equal to False
              Then - Actions
                Trigger - Turn on Revive <gen>
              Else - Actions
                Player - Limit training of Heroes to 0 for Test_Quest_Player
                -------- - --------
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                  If - Conditions
                    (Unit-type of Test_Race_Hero) Equal to Archmage
                  Then - Actions
                    Cinematic - Send transmission to (All players) from Test_Race_Hero named (Proper name of Test_Race_Hero): Play No sound and display The burning legion is here!We must hold them out... before it's too late.. Modify duration: Set to 5.00 seconds and Wait
                  Else - Actions
                    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                      If - Conditions
                        (Unit-type of Test_Race_Hero) Equal to Far Seer
                      Then - Actions
                        Cinematic - Send transmission to (All players) from Test_Race_Hero named (Proper name of Test_Race_Hero): Play No sound and display I sense this powerful demon nearby...Victory or death, the strength is ours. For the Horde!. Modify duration: Set to 5.00 seconds and Wait
                      Else - Actions
                        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                          If - Conditions
                            (Unit-type of Test_Race_Hero) Equal to Priestess of the Moon
                          Then - Actions
                            Cinematic - Send transmission to (All players) from Test_Race_Hero named (Proper name of Test_Race_Hero): Play No sound and display Be prepared my sisters,Don't let the burning legion take our land!Let elune shine upon us.... Modify duration: Set to 5.00 seconds and Wait
                          Else - Actions
                            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                              If - Conditions
                                (Unit-type of Test_Race_Hero) Equal to Death Knight (Evil)
                              Then - Actions
                                Cinematic - Send transmission to (All players) from Test_Race_Hero named (Proper name of Test_Race_Hero): Play No sound and display What brings you here?The Scourge is mine, demon. Step aside.. Modify duration: Set to 5.00 seconds and Wait
                              Else - Actions
                -------- - --------
                Trigger - Turn on Reinforcements_Start <gen>
                Countdown Timer - Start Test_Reinforcements_Timer as a One-shot timer that will expire in 300.00 seconds
                Countdown Timer - Create a timer window for Test_Reinforcements_Timer with title Reinforcements In
                Set VariableSet Test_Reinforcements_Window = (Last created timer window)
                Countdown Timer - Show Test_Reinforcements_Window
                -------- - --------
                Set VariableSet Test_Region[1] = Test_Reinforcements_Top <gen>
                Set VariableSet Test_Region[2] = Test_Reinforcements_Bot <gen>
                Set VariableSet Test_Region[3] = Test_Reinforcements_Left <gen>
                Set VariableSet Test_Region[4] = Test_Reinforcements_Right <gen>
                Set VariableSet Test_Region[5] = Test_Playable <gen>
                -------- - --------
                Trigger - Add to Conditions <gen> the event (Test_Race_Hero Dies)
                Trigger - Add to Lives_Count <gen> the event (A unit owned by Test_Quest_Player.Dies)
                Player - Set Test_Quest_Player.Current gold to 10000
                Player - Set Test_Quest_Player.Current lumber to 10000
                Trigger - Turn on Lives_Count <gen>
          Else - Actions
    -------- - --------
Revive
  Events
    Unit - A unit owned by Player 1 (Red).Dies
    Unit - A unit owned by Player 2 (Blue).Dies
    Unit - A unit owned by Neutral Hostile.Dies
  Conditions
    ((Triggering unit) is Summoned) Equal to False
    (Unit-type of (Triggering unit)) Not equal to Dummy (General Purpose)
    (Unit-type of (Triggering unit)) Not equal to Doomfire Spirit ( Doomfire Spirit )
    (Unit-type of (Triggering unit)) Not equal to Corrupted Spire ( Desecration )
    (Unit-type of (Triggering unit)) Not equal to Infernal
    (Unit-type of (Triggering unit)) Not equal to Fel Spawn (Level 1)
    (Unit-type of (Triggering unit)) Not equal to Fel Spawn (Level 2)
    (Unit-type of (Triggering unit)) Not equal to Fel Spawn (Level 3)
  Actions
    -------- - --------
    Custom script: local unit U = GetTriggerUnit( )
    Custom script: local real X = GetUnitX(U)
    Custom script: local real Y = GetUnitY(U)
    Custom script: local real Z = GetUnitFacing(U)
    Custom script: local player P = GetTriggerPlayer( )
    Custom script: local integer ID = GetUnitTypeId(U)
    Custom script: local integer I = GetHeroLevel(U)
    Custom script: local real T = 15.
    -------- - --------
    Custom script: call TriggerSleepAction(T)
    Custom script: if IsUnitType(U, UNIT_TYPE_HERO) then
    Custom script: call ReviveHero(U, X, Y, true)
    Custom script: else
    Custom script: call CreateUnit(P, ID, X, Y, Z)
    Custom script: endif
    Custom script: call SelectUnitAddForPlayer(U, P)
    Custom script: call SetHeroLevel(U, I, true)
    -------- - --------
    Custom script: set U=null
    Custom script: set P=null
    -------- - --------
Refresh
  Events
    Player - Player 1 (Red) skips a cinematic sequence
  Conditions
  Actions
    -------- - --------
    Unit - Set life of Test_Hero to 100.00%
    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
      If - Conditions
        (Hero level of Test_Hero) Less than 100
      Then - Actions
        Hero - Set Test_Hero Hero-level to ((Hero level of Test_Hero) + 1), Show level-up graphics
      Else - Actions
    Unit - Set mana of Test_Hero to 100.00%
    -------- - --------
AI Learn
  Events
    Unit - A unit Gains a level
  Conditions
  Actions
    -------- - --------
    Custom script: set udg_Test_AI_Hero = GetTriggerUnit( )
    Custom script: set udg_Test_AI_Player = GetTriggerPlayer( )
    -------- - --------
    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
      If - Conditions
        (Test_AI_Player controller) Equal to Computer
        (Hero level of Test_AI_Hero) Less than or equal to 10
        (Unit-type of Test_AI_Hero) Not equal to Defiler
      Then - Actions
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
          If - Conditions
            (Unit-type of Test_AI_Hero) Equal to Archmage
          Then - Actions
            Hero - Learn skill for Test_AI_Hero: Blizzard
            Hero - Learn skill for Test_AI_Hero: Summon Water Elemental
            Hero - Learn skill for Test_AI_Hero: Brilliance Aura
            Hero - Learn skill for Test_AI_Hero: Mass Teleport
          Else - Actions
            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              If - Conditions
                (Unit-type of Test_AI_Hero) Equal to Far Seer
              Then - Actions
                Hero - Learn skill for Test_AI_Hero: Chain Lightning
                Hero - Learn skill for Test_AI_Hero: Feral Spirit
                Hero - Learn skill for Test_AI_Hero: Far Sight
                Hero - Learn skill for Test_AI_Hero: Earthquake
              Else - Actions
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                  If - Conditions
                    (Unit-type of Test_AI_Hero) Equal to Priestess of the Moon
                  Then - Actions
                    Hero - Learn skill for Test_AI_Hero: Scout
                    Hero - Learn skill for Test_AI_Hero: Searing Arrows
                    Hero - Learn skill for Test_AI_Hero: Trueshot Aura
                    Hero - Learn skill for Test_AI_Hero: Starfall
                  Else - Actions
                    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                      If - Conditions
                        (Unit-type of Test_AI_Hero) Equal to Death Knight (Evil)
                      Then - Actions
                        Hero - Learn skill for Test_AI_Hero: Death Coil
                        Hero - Learn skill for Test_AI_Hero: Death Pact
                        Hero - Learn skill for Test_AI_Hero: Unholy Aura
                        Hero - Learn skill for Test_AI_Hero: Animate Dead
                      Else - Actions
      Else - Actions
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
          If - Conditions
            (Unit-type of Test_AI_Hero) Equal to Defiler
          Then - Actions
            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              If - Conditions
                (Test_AI_Player controller) Equal to Computer
                (Hero level of Test_AI_Hero) Less than 20
              Then - Actions
                Hero - Learn skill for Test_AI_Hero: Doomfire Spirit
                Hero - Learn skill for Test_AI_Hero: Desecration
                Hero - Learn skill for Test_AI_Hero: Death Brand
                Hero - Learn skill for Test_AI_Hero: Wrought Chaos
                Hero - Learn skill for Test_AI_Hero: Chaos Meteors
              Else - Actions
            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              If - Conditions
                Test_Modified_Flag[1] Equal to False
                (Hero level of Test_AI_Hero) Greater than or equal to 20
              Then - Actions
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                  If - Conditions
                    (Level of Wicked Desecration for Test_AI_Hero) Equal to 0
                  Then - Actions
                    Player - Disable Desecration for (Owner of Test_AI_Hero)
                    Unit - Add Wicked Desecration to Test_AI_Hero
                    Game - Display to (All players) for 15.00 seconds the text: Granted a supreme ability: |cffbfff80Wicked Desecration|r!
                    Cinematic - Send transmission to (All players) from Test_AI_Hero named (Proper name of Test_AI_Hero): Play No sound and display Rise, Legion, and desecrate this world to ashes!. Modify duration: Set to 5.00 seconds and Don't wait
                    Set VariableSet Test_Modified_Flag[1] = True
                  Else - Actions
              Else - Actions
            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              If - Conditions
                Test_Modified_Flag[2] Equal to False
                (Hero level of Test_AI_Hero) Greater than or equal to 30
              Then - Actions
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                  If - Conditions
                    (Level of Doomfire Judgement for Test_AI_Hero) Equal to 0
                  Then - Actions
                    Player - Disable Doomfire Spirit for (Owner of Test_AI_Hero)
                    Unit - Add Doomfire Judgement to Test_AI_Hero
                    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                      If - Conditions
                        (Level of Allure Of Flames for Test_AI_Hero) Greater than 0
                      Then - Actions
                        Unit - Set level of Allure Of Flames for Test_AI_Hero to 3
                      Else - Actions
                        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                          If - Conditions
                            (Level of Allure Of Flames for Test_AI_Hero) Equal to 0
                          Then - Actions
                            Unit - Add Allure Of Flames to Test_AI_Hero
                            Unit - Set level of Allure Of Flames for Test_AI_Hero to 3
                          Else - Actions
                    Game - Display to (All players) for 15.00 seconds the text: Granted a supreme ability: |cffbfff80Doomfire Judgement|r!
                    Cinematic - Send transmission to (All players) from Test_AI_Hero named (Proper name of Test_AI_Hero): Play No sound and display These spirits already scorched thousands of lands before.... Modify duration: Set to 5.00 seconds and Don't wait
                    Set VariableSet Test_Modified_Flag[2] = True
                  Else - Actions
              Else - Actions
            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              If - Conditions
                Test_Modified_Flag[3] Equal to False
                (Hero level of Test_AI_Hero) Greater than or equal to 40
              Then - Actions
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                  If - Conditions
                    (Level of Master Of Flames for Test_AI_Hero) Equal to 0
                  Then - Actions
                    Player - Disable Allure Of Flames for (Owner of Test_AI_Hero)
                    Unit - Add Master Of Flames to Test_AI_Hero
                    Game - Display to (All players) for 15.00 seconds the text: Granted a supreme ability: |cffbfff80Master Of Flames|r!
                    Cinematic - Send transmission to (All players) from Test_AI_Hero named (Proper name of Test_AI_Hero): Play No sound and display You couldn't even extinguished the flames I've been pouring down on this wretched world! You have no match to the burning legion!. Modify duration: Set to 5.00 seconds and Don't wait
                    Set VariableSet Test_Modified_Flag[3] = True
                  Else - Actions
              Else - Actions
            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              If - Conditions
                Test_Modified_Flag[4] Equal to False
                (Hero level of Test_AI_Hero) Greater than or equal to 50
              Then - Actions
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                  If - Conditions
                    (Level of Infernal Meteors for Test_AI_Hero) Equal to 0
                  Then - Actions
                    Player - Disable Chaos Meteors for (Owner of Test_AI_Hero)
                    Unit - Add Infernal Meteors to Test_AI_Hero
                    Game - Display to (All players) for 15.00 seconds the text: Granted a supreme ability: |cffbfff80Infernal Meteors|r!
                    Cinematic - Send transmission to (All players) from Test_AI_Hero named (Proper name of Test_AI_Hero): Play No sound and display Your troublesome race will not stop us.. Modify duration: Set to 5.00 seconds and Don't wait
                    Set VariableSet Test_Modified_Flag[4] = True
                  Else - Actions
              Else - Actions
          Else - Actions
    -------- - --------
AI Cast
  Events
    Unit - A unit Is attacked
  Conditions
    Or - Any (Conditions) are true
      Conditions
        (Unit-type of (Triggering unit)) Equal to Defiler
        (Unit-type of (Attacking unit)) Equal to Defiler
  Actions
    -------- - --------
    Custom script: set udg_Test_AI_Hero = GetTriggerUnit( )
    Set VariableSet Test_AI_Engager = (Attacking unit)
    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
      If - Conditions
        (Unit-type of Test_AI_Hero) Equal to Defiler
        (Current order of Test_AI_Hero) Not equal to (Order(fingerofdeath))
      Then - Actions
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
          If - Conditions
            (Random integer number between 1 and 10) Less than 5
          Then - Actions
            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              If - Conditions
                (Random integer number between 1 and 10) Less than 5
              Then - Actions
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                  If - Conditions
                    (Random integer number between 1 and 10) Less than 5
                  Then - Actions
                    Unit - Order Test_AI_Hero to Night Elf Warden - Shadow Strike.Test_AI_Engager
                  Else - Actions
                    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                      If - Conditions
                        (Random integer number between 1 and 10) Less than 5
                      Then - Actions
                        Unit - Order Test_AI_Hero to Special Archimonde - Finger Of Death.Test_AI_Engager
                      Else - Actions
                        Set VariableSet Test_Location = (Position of Test_AI_Engager)
                        Set VariableSet Test_SpiritSpire_Count = 0
                        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                          If - Conditions
                            (Level of Wicked Desecration for Test_AI_Hero) Greater than 0
                          Then - Actions
                            Set VariableSet Test_Spire_Radius = 1000.00
                          Else - Actions
                            Set VariableSet Test_Spire_Radius = 500.00
                        Set VariableSet Test_SpiritSpire_Group = (Units within Test_Spire_Radius of Test_Location matching ((Unit-type of (Matching unit)) Equal to Corrupted Spire ( Desecration )).)
                        Unit Group - Pick every unit in Test_SpiritSpire_Group and do (Actions)
                          Loop - Actions
                            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                              If - Conditions
                                ((Picked unit) is dead) Equal to False
                              Then - Actions
                                Set VariableSet Test_SpiritSpire_Count = (Test_SpiritSpire_Count + 1)
                              Else - Actions
                        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                          If - Conditions
                            Test_SpiritSpire_Count Greater than 0
                          Then - Actions
                            Unit - Order Test_AI_Hero to Special Archimonde - Finger Of Death.(Random unit from Test_SpiritSpire_Group)
                          Else - Actions
                            Unit - Order Test_AI_Hero to Special Archimonde - Finger Of Death.Test_AI_Engager
                        Custom script: call DestroyGroup(udg_Test_SpiritSpire_Group)
                        Custom script: call RemoveLocation(udg_Test_Location)
              Else - Actions
                Set VariableSet Test_Location = (Position of Test_AI_Engager)
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                  If - Conditions
                    (Random integer number between 1 and 10) Less than 5
                  Then - Actions
                    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                      If - Conditions
                        (Random integer number between 1 and 10) Less than 5
                      Then - Actions
                        Unit - Order Test_AI_Hero to Human Blood Mage - Flame Strike.Test_Location
                      Else - Actions
                        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                          If - Conditions
                            (Random integer number between 1 and 10) Less than 5
                          Then - Actions
                            Unit - Order Test_AI_Hero to Special Archimonde - Dark Portal.Test_Location
                          Else - Actions
                            Unit - Order Test_AI_Hero to Special Warlock - Inferno.Test_Location
                  Else - Actions
                    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                      If - Conditions
                        (Random integer number between 1 and 10) Less than 5
                      Then - Actions
                        Set VariableSet Test_SpiritSpire_Count = 0
                        Set VariableSet Test_SpiritSpire_Group = (Units owned by (Owner of Test_AI_Hero) of type Doomfire Spirit ( Doomfire Spirit ))
                        Unit Group - Pick every unit in Test_SpiritSpire_Group and do (Actions)
                          Loop - Actions
                            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                              If - Conditions
                                ((Picked unit) is dead) Equal to False
                              Then - Actions
                                Set VariableSet Test_SpiritSpire_Count = (Test_SpiritSpire_Count + 1)
                              Else - Actions
                        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                          If - Conditions
                            Test_SpiritSpire_Count Greater than 0
                          Then - Actions
                            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                              If - Conditions
                                (Random integer number between 1 and 10) Less than 5
                              Then - Actions
                                Unit - Order Test_AI_Hero to Human Archmage - Blizzard.Test_Location
                              Else - Actions
                                Unit - Order Test_AI_Hero to Special Archimonde - Finger Of Death.(Random unit from Test_SpiritSpire_Group)
                          Else - Actions
                            Unit - Order Test_AI_Hero to Special Archimonde - Dark Portal.Test_Location
                        Custom script: call DestroyGroup(udg_Test_SpiritSpire_Group)
                        Custom script: call RemoveLocation(udg_Test_Location)
                      Else - Actions
                        Set VariableSet Test_SpiritSpire_Count = 0
                        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                          If - Conditions
                            (Level of Wicked Desecration for Test_AI_Hero) Greater than 0
                          Then - Actions
                            Set VariableSet Test_Spire_Radius = 1000.00
                          Else - Actions
                            Set VariableSet Test_Spire_Radius = 500.00
                        Set VariableSet Test_SpiritSpire_Group = (Units within Test_Spire_Radius of Test_Location matching ((Unit-type of (Matching unit)) Equal to Corrupted Spire ( Desecration )).)
                        Unit Group - Pick every unit in Test_SpiritSpire_Group and do (Actions)
                          Loop - Actions
                            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                              If - Conditions
                                ((Picked unit) is dead) Equal to False
                              Then - Actions
                                Set VariableSet Test_SpiritSpire_Count = (Test_SpiritSpire_Count + 1)
                              Else - Actions
                        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                          If - Conditions
                            Test_SpiritSpire_Count Greater than 0
                          Then - Actions
                            Unit - Order Test_AI_Hero to Special Archimonde - Finger Of Death.(Random unit from Test_SpiritSpire_Group)
                          Else - Actions
                            Unit - Order Test_AI_Hero to Special Warlock - Inferno.Test_Location
                        Custom script: call DestroyGroup(udg_Test_SpiritSpire_Group)
                Custom script: call RemoveLocation(udg_Test_Location)
          Else - Actions
            Unit - Order Test_AI_Hero to Night Elf Warden - Shadow Strike.Test_AI_Hero
      Else - Actions
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
          If - Conditions
            (Unit-type of Test_AI_Engager) Equal to Defiler
            (Current order of Test_AI_Engager) Not equal to (Order(fingerofdeath))
          Then - Actions
            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              If - Conditions
                (Random integer number between 1 and 10) Less than 5
              Then - Actions
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                  If - Conditions
                    (Random integer number between 1 and 10) Less than 5
                  Then - Actions
                    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                      If - Conditions
                        (Random integer number between 1 and 10) Less than 5
                      Then - Actions
                        Unit - Order Test_AI_Engager to Night Elf Warden - Shadow Strike.Test_AI_Hero
                      Else - Actions
                        Unit - Order Test_AI_Engager to Special Archimonde - Finger Of Death.Test_AI_Hero
                  Else - Actions
                    Set VariableSet Test_Location = (Position of Test_AI_Hero)
                    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                      If - Conditions
                        (Random integer number between 1 and 10) Less than 5
                      Then - Actions
                        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                          If - Conditions
                            (Random integer number between 1 and 10) Less than 5
                          Then - Actions
                            Unit - Order Test_AI_Engager to Human Blood Mage - Flame Strike.Test_Location
                          Else - Actions
                            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                              If - Conditions
                                (Random integer number between 1 and 10) Less than 5
                              Then - Actions
                                Unit - Order Test_AI_Engager to Special Archimonde - Dark Portal.Test_Location
                              Else - Actions
                                Unit - Order Test_AI_Engager to Special Warlock - Inferno.Test_Location
                      Else - Actions
                        Set VariableSet Test_SpiritSpire_Count = 0
                        Set VariableSet Test_SpiritSpire_Group = (Units owned by (Owner of Test_AI_Engager) of type Doomfire Spirit ( Doomfire Spirit ))
                        Unit Group - Pick every unit in Test_SpiritSpire_Group and do (Actions)
                          Loop - Actions
                            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                              If - Conditions
                                ((Picked unit) is dead) Equal to False
                              Then - Actions
                                Set VariableSet Test_SpiritSpire_Count = (Test_SpiritSpire_Count + 1)
                              Else - Actions
                        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                          If - Conditions
                            Test_SpiritSpire_Count Greater than 0
                          Then - Actions
                            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                              If - Conditions
                                (Random integer number between 1 and 10) Less than 5
                              Then - Actions
                                Unit - Order Test_AI_Engager to Human Archmage - Blizzard.Test_Location
                              Else - Actions
                                Unit - Order Test_AI_Engager to Special Archimonde - Finger Of Death.(Random unit from Test_SpiritSpire_Group)
                          Else - Actions
                            Unit - Order Test_AI_Engager to Special Archimonde - Dark Portal.Test_Location
                        Custom script: call DestroyGroup(udg_Test_SpiritSpire_Group)
                    Custom script: call RemoveLocation(udg_Test_Location)
              Else - Actions
                Unit - Order Test_AI_Engager to Night Elf Warden - Shadow Strike.Test_AI_Hero
          Else - Actions
    -------- - --------
AI Quest
  Events
    Time - Every 15.00 seconds of game time
  Conditions
  Actions
    -------- - --------
    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
      If - Conditions
        (Random integer number between 1 and 10) Less than 5
      Then - Actions
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
          If - Conditions
            (Test_Race_Hero is dead) Equal to False
          Then - Actions
            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              If - Conditions
                (Random integer number between 1 and 10) Less than 5
              Then - Actions
                Unit - Order Test_Hero to Attack.Test_Race_Hero
              Else - Actions
                Unit - Order Test_Hero to Night Elf Warden - Shadow Strike.Test_Race_Hero
          Else - Actions
            Set VariableSet Test_Location = (Random point in Test_Region[5])
            Unit - Order Test_Hero to Attack-Move To.Test_Location
            Custom script: call RemoveLocation(udg_Test_Location)
      Else - Actions
        Set VariableSet Test_Location = (Random point in Test_Region[5])
        Unit - Order Test_Hero to Attack-Move To.Test_Location
        Custom script: call RemoveLocation(udg_Test_Location)
    -------- - --------
Lives Count
  Events
  Conditions
    ((Triggering unit) is Summoned) Equal to False
  Actions
    -------- - --------
    Set VariableSet Test_Lives = (Test_Lives + 1)
    -------- - --------
Reinforcements Start
  Events
    Time - Test_Reinforcements_Timer expires
  Conditions
  Actions
    -------- - --------
    Countdown Timer - Destroy Test_Reinforcements_Window
    -------- - --------
    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
      If - Conditions
        (Unit-type of Test_Race_Hero) Equal to Archmage
      Then - Actions
        Trigger - Turn on Human_Reinforcements <gen>
        Cinematic - Send transmission to (All players) from Test_Race_Hero named (Proper name of Test_Race_Hero): Play No sound and display Finally, the reinforcements will be here at any moment.We cannot let the world fall into darkness. We must hold strong!For the Alliance!. Modify duration: Set to 5.00 seconds and Wait
      Else - Actions
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
          If - Conditions
            (Unit-type of Test_Race_Hero) Equal to Far Seer
          Then - Actions
            Trigger - Turn on Orc_Reinforcements <gen>
            Cinematic - Send transmission to (All players) from Test_Race_Hero named (Proper name of Test_Race_Hero): Play No sound and display The reinforcements are here, Lok'tar Ogar!We're a slave no longer!Show this demon what we're truly capable of.... Modify duration: Set to 5.00 seconds and Wait
          Else - Actions
            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              If - Conditions
                (Unit-type of Test_Race_Hero) Equal to Priestess of the Moon
              Then - Actions
                Trigger - Turn on Night_Elf_Reinforcements <gen>
                Cinematic - Send transmission to (All players) from Test_Race_Hero named (Proper name of Test_Race_Hero): Play No sound and display Elune answered my prayers...We've got Archimonde cornered! Do not despair!He should regret facing the Night Elves.. Modify duration: Set to 5.00 seconds and Wait
              Else - Actions
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                  If - Conditions
                    (Unit-type of Test_Race_Hero) Equal to Death Knight (Evil)
                  Then - Actions
                    Trigger - Turn on Undead_Reinforcements <gen>
                    Cinematic - Send transmission to (All players) from Test_Race_Hero named (Proper name of Test_Race_Hero): Play No sound and display Let my army send you back to where you belong.... Modify duration: Set to 5.00 seconds and Wait
                  Else - Actions
    -------- - --------
    Trigger - Turn on Archimonde_Decay <gen>
    -------- - --------
Human Reinforcements
  Events
    Time - Every 10.00 seconds of game time
  Conditions
    (Test_Quest_Player Food used) Less than 250
  Actions
    -------- - --------
    Set VariableSet Test_Hero_Location = (Position of Test_Hero)
    For each (Integer Test_Race_Integer) from 1 to (Random integer number between 5 and 10), do (Actions)
      Loop - Actions
        Set VariableSet Test_Location = (Random point in Test_Region[(Random integer number between 1 and 4)])
        Unit - Create 1.Footman for Test_Quest_Player at Test_Location facing 90.00 degrees
        Custom script: call RemoveLocation(udg_Test_Location)
        Unit - Order (Last created unit) to Attack-Move To.Test_Hero_Location
    For each (Integer Test_Race_Integer) from 1 to (Random integer number between 3 and 5), do (Actions)
      Loop - Actions
        Set VariableSet Test_Location = (Random point in Test_Region[(Random integer number between 1 and 4)])
        Unit - Create 1.Knight for Test_Quest_Player at Test_Location facing 90.00 degrees
        Custom script: call RemoveLocation(udg_Test_Location)
        Unit - Order (Last created unit) to Attack-Move To.Test_Hero_Location
    For each (Integer Test_Race_Integer) from 1 to (Random integer number between 2 and 4), do (Actions)
      Loop - Actions
        Set VariableSet Test_Location = (Random point in Test_Region[(Random integer number between 1 and 4)])
        Unit - Create 1.Rifleman for Test_Quest_Player at Test_Location facing 90.00 degrees
        Custom script: call RemoveLocation(udg_Test_Location)
        Unit - Order (Last created unit) to Attack-Move To.Test_Hero_Location
    For each (Integer Test_Race_Integer) from 1 to (Random integer number between 2 and 3), do (Actions)
      Loop - Actions
        Set VariableSet Test_Location = (Random point in Test_Region[(Random integer number between 1 and 4)])
        Unit - Create 1.Gryphon Rider for Test_Quest_Player at Test_Location facing 90.00 degrees
        Custom script: call RemoveLocation(udg_Test_Location)
        Unit - Order (Last created unit) to Attack-Move To.Test_Hero_Location
    For each (Integer Test_Race_Integer) from 1 to (Random integer number between 1 and 2), do (Actions)
      Loop - Actions
        Set VariableSet Test_Location = (Random point in Test_Region[(Random integer number between 1 and 4)])
        Unit - Create 1.Priest for Test_Quest_Player at Test_Location facing 90.00 degrees
        Unit - Order (Last created unit) to Attack-Move To.Test_Hero_Location
        Unit - Create 1.Sorceress for Test_Quest_Player at Test_Location facing 90.00 degrees
        Custom script: call RemoveLocation(udg_Test_Location)
        Unit - Order (Last created unit) to Attack-Move To.Test_Hero_Location
    For each (Integer Test_Race_Integer) from 1 to (Random integer number between 1 and 2), do (Actions)
      Loop - Actions
        Set VariableSet Test_Location = (Random point in Test_Region[(Random integer number between 1 and 4)])
        Unit - Create 1.Mortar Team for Test_Quest_Player at Test_Location facing 90.00 degrees
        Custom script: call RemoveLocation(udg_Test_Location)
        Unit - Order (Last created unit) to Attack-Move To.Test_Hero_Location
    Custom script: call RemoveLocation(udg_Test_Hero_Location)
    -------- - --------
Orc Reinforcements
  Events
    Time - Every 10.00 seconds of game time
  Conditions
    (Test_Quest_Player Food used) Less than 250
  Actions
    -------- - --------
    Set VariableSet Test_Hero_Location = (Position of Test_Hero)
    For each (Integer Test_Race_Integer) from 1 to (Random integer number between 5 and 10), do (Actions)
      Loop - Actions
        Set VariableSet Test_Location = (Random point in Test_Region[(Random integer number between 1 and 4)])
        Unit - Create 1.Grunt for Test_Quest_Player at Test_Location facing 90.00 degrees
        Custom script: call RemoveLocation(udg_Test_Location)
        Unit - Order (Last created unit) to Attack-Move To.Test_Hero_Location
    For each (Integer Test_Race_Integer) from 1 to (Random integer number between 3 and 5), do (Actions)
      Loop - Actions
        Set VariableSet Test_Location = (Random point in Test_Region[(Random integer number between 1 and 4)])
        Unit - Create 1.Raider for Test_Quest_Player at Test_Location facing 90.00 degrees
        Custom script: call RemoveLocation(udg_Test_Location)
        Unit - Order (Last created unit) to Attack-Move To.Test_Hero_Location
    For each (Integer Test_Race_Integer) from 1 to (Random integer number between 2 and 4), do (Actions)
      Loop - Actions
        Set VariableSet Test_Location = (Random point in Test_Region[(Random integer number between 1 and 4)])
        Unit - Create 1.Troll Headhunter for Test_Quest_Player at Test_Location facing 90.00 degrees
        Custom script: call RemoveLocation(udg_Test_Location)
        Unit - Order (Last created unit) to Attack-Move To.Test_Hero_Location
    For each (Integer Test_Race_Integer) from 1 to (Random integer number between 1 and 2), do (Actions)
      Loop - Actions
        Set VariableSet Test_Location = (Random point in Test_Region[(Random integer number between 1 and 4)])
        Unit - Create 1.Wind Rider for Test_Quest_Player at Test_Location facing 90.00 degrees
        Unit - Order (Last created unit) to Attack-Move To.Test_Hero_Location
        Unit - Create 1.Troll Batrider for Test_Quest_Player at Test_Location facing 90.00 degrees
        Custom script: call RemoveLocation(udg_Test_Location)
        Unit - Order (Last created unit) to Attack-Move To.Test_Hero_Location
    For each (Integer Test_Race_Integer) from 1 to (Random integer number between 1 and 2), do (Actions)
      Loop - Actions
        Set VariableSet Test_Location = (Random point in Test_Region[(Random integer number between 1 and 4)])
        Unit - Create 1.Shaman for Test_Quest_Player at Test_Location facing 90.00 degrees
        Unit - Order (Last created unit) to Attack-Move To.Test_Hero_Location
        Unit - Create 1.Troll Witch Doctor for Test_Quest_Player at Test_Location facing 90.00 degrees
        Custom script: call RemoveLocation(udg_Test_Location)
        Unit - Order (Last created unit) to Attack-Move To.Test_Hero_Location
    For each (Integer Test_Race_Integer) from 1 to (Random integer number between 1 and 2), do (Actions)
      Loop - Actions
        Set VariableSet Test_Location = (Random point in Test_Region[(Random integer number between 1 and 4)])
        Unit - Create 1.Demolisher for Test_Quest_Player at Test_Location facing 90.00 degrees
        Custom script: call RemoveLocation(udg_Test_Location)
        Unit - Order (Last created unit) to Attack-Move To.Test_Hero_Location
    For each (Integer Test_Race_Integer) from 1 to (Random integer number between 1 and 2), do (Actions)
      Loop - Actions
        Set VariableSet Test_Location = (Random point in Test_Region[(Random integer number between 1 and 4)])
        Unit - Create 1.Tauren for Test_Quest_Player at Test_Location facing 90.00 degrees
        Custom script: call RemoveLocation(udg_Test_Location)
        Unit - Order (Last created unit) to Attack-Move To.Test_Hero_Location
    Custom script: call RemoveLocation(udg_Test_Hero_Location)
    -------- - --------
Night Elf Reinforcements
  Events
    Time - Every 10.00 seconds of game time
  Conditions
    (Test_Quest_Player Food used) Less than 250
  Actions
    -------- - --------
    Set VariableSet Test_Hero_Location = (Position of Test_Hero)
    For each (Integer Test_Race_Integer) from 1 to (Random integer number between 4 and 8), do (Actions)
      Loop - Actions
        Set VariableSet Test_Location = (Random point in Test_Region[(Random integer number between 1 and 4)])
        Unit - Create 1.Huntress for Test_Quest_Player at Test_Location facing 90.00 degrees
        Custom script: call RemoveLocation(udg_Test_Location)
        Unit - Order (Last created unit) to Attack-Move To.Test_Hero_Location
    For each (Integer Test_Race_Integer) from 1 to (Random integer number between 2 and 4), do (Actions)
      Loop - Actions
        Set VariableSet Test_Location = (Random point in Test_Region[(Random integer number between 1 and 4)])
        Unit - Create 1.Druid of the Claw (Bear Form) for Test_Quest_Player at Test_Location facing 90.00 degrees
        Custom script: call RemoveLocation(udg_Test_Location)
        Unit - Order (Last created unit) to Attack-Move To.Test_Hero_Location
    For each (Integer Test_Race_Integer) from 1 to (Random integer number between 1 and 2), do (Actions)
      Loop - Actions
        Set VariableSet Test_Location = (Random point in Test_Region[(Random integer number between 1 and 4)])
        Unit - Create 1.Treant for Test_Quest_Player at Test_Location facing 90.00 degrees
        Custom script: call RemoveLocation(udg_Test_Location)
        Unit - Order (Last created unit) to Attack-Move To.Test_Hero_Location
    For each (Integer Test_Race_Integer) from 1 to (Random integer number between 3 and 6), do (Actions)
      Loop - Actions
        Set VariableSet Test_Location = (Random point in Test_Region[(Random integer number between 1 and 4)])
        Unit - Create 1.Archer for Test_Quest_Player at Test_Location facing 90.00 degrees
        Custom script: call RemoveLocation(udg_Test_Location)
        Unit - Order (Last created unit) to Attack-Move To.Test_Hero_Location
    For each (Integer Test_Race_Integer) from 1 to (Random integer number between 1 and 2), do (Actions)
      Loop - Actions
        Set VariableSet Test_Location = (Random point in Test_Region[(Random integer number between 1 and 4)])
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
          If - Conditions
            (Random integer number between 1 and 10) Less than 5
          Then - Actions
            Unit - Create 1.Chimaera for Test_Quest_Player at Test_Location facing 90.00 degrees
            Unit - Order (Last created unit) to Attack-Move To.Test_Hero_Location
          Else - Actions
        Unit - Create 1.Hippogryph Rider for Test_Quest_Player at Test_Location facing 90.00 degrees
        Custom script: call RemoveLocation(udg_Test_Location)
        Unit - Order (Last created unit) to Attack-Move To.Test_Hero_Location
    For each (Integer Test_Race_Integer) from 1 to (Random integer number between 1 and 2), do (Actions)
      Loop - Actions
        Set VariableSet Test_Location = (Random point in Test_Region[(Random integer number between 1 and 4)])
        Unit - Create 1.Druid of the Talon (Night Elf Form) for Test_Quest_Player at Test_Location facing 90.00 degrees
        Unit - Order (Last created unit) to Attack-Move To.Test_Hero_Location
        Unit - Create 1.Dryad for Test_Quest_Player at Test_Location facing 90.00 degrees
        Custom script: call RemoveLocation(udg_Test_Location)
        Unit - Order (Last created unit) to Attack-Move To.Test_Hero_Location
    For each (Integer Test_Race_Integer) from 1 to (Random integer number between 1 and 2), do (Actions)
      Loop - Actions
        Set VariableSet Test_Location = (Random point in Test_Region[(Random integer number between 1 and 4)])
        Unit - Create 1.Glaive Thrower for Test_Quest_Player at Test_Location facing 90.00 degrees
        Custom script: call RemoveLocation(udg_Test_Location)
        Unit - Order (Last created unit) to Attack-Move To.Test_Hero_Location
    For each (Integer Test_Race_Integer) from 1 to (Random integer number between 1 and 2), do (Actions)
      Loop - Actions
        Set VariableSet Test_Location = (Random point in Test_Region[(Random integer number between 1 and 4)])
        Unit - Create 1.Mountain Giant for Test_Quest_Player at Test_Location facing 90.00 degrees
        Custom script: call RemoveLocation(udg_Test_Location)
        Unit - Order (Last created unit) to Attack-Move To.Test_Hero_Location
    Custom script: call RemoveLocation(udg_Test_Hero_Location)
    -------- - --------
Undead Reinforcements
  Events
    Time - Every 10.00 seconds of game time
  Conditions
    (Test_Quest_Player Food used) Less than 250
  Actions
    -------- - --------
    Set VariableSet Test_Hero_Location = (Position of Test_Hero)
    For each (Integer Test_Race_Integer) from 1 to (Random integer number between 6 and 8), do (Actions)
      Loop - Actions
        Set VariableSet Test_Location = (Random point in Test_Region[(Random integer number between 1 and 4)])
        Unit - Create 1.Ghoul for Test_Quest_Player at Test_Location facing 90.00 degrees
        Unit - Order (Last created unit) to Attack-Move To.Test_Hero_Location
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
          If - Conditions
            (Random integer number between 1 and 10) Less than 5
          Then - Actions
            Unit - Create 1.Zombie for Test_Quest_Player at Test_Location facing 90.00 degrees
            Unit - Order (Last created unit) to Attack-Move To.Test_Hero_Location
          Else - Actions
        Custom script: call RemoveLocation(udg_Test_Location)
    For each (Integer Test_Race_Integer) from 1 to (Random integer number between 3 and 5), do (Actions)
      Loop - Actions
        Set VariableSet Test_Location = (Random point in Test_Region[(Random integer number between 1 and 4)])
        Unit - Create 1.Abomination for Test_Quest_Player at Test_Location facing 90.00 degrees
        Custom script: call RemoveLocation(udg_Test_Location)
        Unit - Order (Last created unit) to Attack-Move To.Test_Hero_Location
    For each (Integer Test_Race_Integer) from 1 to (Random integer number between 2 and 4), do (Actions)
      Loop - Actions
        Set VariableSet Test_Location = (Random point in Test_Region[(Random integer number between 1 and 4)])
        Unit - Create 1.Crypt Fiend for Test_Quest_Player at Test_Location facing 90.00 degrees
        Custom script: call RemoveLocation(udg_Test_Location)
        Unit - Order (Last created unit) to Attack-Move To.Test_Hero_Location
    For each (Integer Test_Race_Integer) from 1 to (Random integer number between 1 and 2), do (Actions)
      Loop - Actions
        Set VariableSet Test_Location = (Random point in Test_Region[(Random integer number between 1 and 4)])
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
          If - Conditions
            (Random integer number between 1 and 10) Less than 5
          Then - Actions
            Unit - Create 1.Frost Wyrm for Test_Quest_Player at Test_Location facing 90.00 degrees
            Unit - Order (Last created unit) to Attack-Move To.Test_Hero_Location
          Else - Actions
        Unit - Create 1.Gargoyle for Test_Quest_Player at Test_Location facing 90.00 degrees
        Custom script: call RemoveLocation(udg_Test_Location)
        Unit - Order (Last created unit) to Attack-Move To.Test_Hero_Location
    For each (Integer Test_Race_Integer) from 1 to (Random integer number between 1 and 2), do (Actions)
      Loop - Actions
        Set VariableSet Test_Location = (Random point in Test_Region[(Random integer number between 1 and 4)])
        Unit - Create 1.Necromancer for Test_Quest_Player at Test_Location facing 90.00 degrees
        Unit - Order (Last created unit) to Attack-Move To.Test_Hero_Location
        Unit - Create 1.Banshee for Test_Quest_Player at Test_Location facing 90.00 degrees
        Custom script: call RemoveLocation(udg_Test_Location)
        Unit - Order (Last created unit) to Attack-Move To.Test_Hero_Location
    For each (Integer Test_Race_Integer) from 1 to (Random integer number between 1 and 2), do (Actions)
      Loop - Actions
        Set VariableSet Test_Location = (Random point in Test_Region[(Random integer number between 1 and 4)])
        Unit - Create 1.Meat Wagon for Test_Quest_Player at Test_Location facing 90.00 degrees
        Custom script: call RemoveLocation(udg_Test_Location)
        Unit - Order (Last created unit) to Attack-Move To.Test_Hero_Location
    For each (Integer Test_Race_Integer) from 1 to (Random integer number between 1 and 2), do (Actions)
      Loop - Actions
        Set VariableSet Test_Location = (Random point in Test_Region[(Random integer number between 1 and 4)])
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
          If - Conditions
            (Random integer number between 1 and 10) Less than 5
          Then - Actions
            Unit - Create 1.Destroyer for Test_Quest_Player at Test_Location facing 90.00 degrees
            Unit - Order (Last created unit) to Attack-Move To.Test_Hero_Location
          Else - Actions
            Unit - Create 1.Obsidian Statue for Test_Quest_Player at Test_Location facing 90.00 degrees
            Unit - Order (Last created unit) to Attack-Move To.Test_Hero_Location
        Custom script: call RemoveLocation(udg_Test_Location)
    Custom script: call RemoveLocation(udg_Test_Hero_Location)
    -------- - --------
Archimonde Decay
  Events
    Time - Every 2.50 seconds of game time
  Conditions
  Actions
    -------- - --------
    Set VariableSet Test_Hero_Life = (Percentage life of Test_Hero)
    -------- - --------
    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
      If - Conditions
        (Hero level of Test_Hero) Less than 25
      Then - Actions
        Unit - Set life of Test_Hero to (Test_Hero_Life - 1.25)%
      Else - Actions
        -------- - --------
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
          If - Conditions
            (Hero level of Test_Hero) Less than 50
          Then - Actions
            Unit - Set life of Test_Hero to (Test_Hero_Life - 2.50)%
          Else - Actions
            Unit - Set life of Test_Hero to (Test_Hero_Life - 5.00)%
    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
      If - Conditions
        Test_Hero_Life Less than 50.00
        (Current order of Test_Hero) Not equal to (Order(fingerofdeath))
      Then - Actions
        Unit - Order Test_Hero to Night Elf Warden - Shadow Strike.Test_Hero
      Else - Actions
    -------- - --------
Conditions
  Events
  Conditions
  Actions
    -------- - --------
    Custom script: set udg_Test_Hero_Condition = GetTriggerUnit( )
    -------- - --------
    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
      If - Conditions
        Test_Hero_Condition Equal to Test_Hero
      Then - Actions
        -------- - --------
        Cinematic - Fade out over 10.00 seconds using texture Black Mask and color (0%, 0%, 0%) with 0% transparency
        -------- - --------
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
          If - Conditions
            (Unit-type of Test_Race_Hero) Equal to Archmage
          Then - Actions
            Cinematic - Send transmission to (All players) from Test_Race_Hero named (Proper name of Test_Race_Hero): Play No sound and display Archimonde is down!Sacrifices will always be remembered.Although, there are many deaths and casualties...My people are now safe.. Modify duration: Set to 10.00 seconds and Wait
          Else - Actions
            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              If - Conditions
                (Unit-type of Test_Race_Hero) Equal to Far Seer
              Then - Actions
                Cinematic - Send transmission to (All players) from Test_Race_Hero named (Proper name of Test_Race_Hero): Play No sound and display Take that, you wretched demon!This world belongs to my people. I only want peace of my kind.Whatever it takes.... Modify duration: Set to 10.00 seconds and Wait
              Else - Actions
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                  If - Conditions
                    (Unit-type of Test_Race_Hero) Equal to Priestess of the Moon
                  Then - Actions
                    Cinematic - Send transmission to (All players) from Test_Race_Hero named (Proper name of Test_Race_Hero): Play No sound and display You will not prevail, Archimonde.This world will never be consumed by the likes of you.. Modify duration: Set to 10.00 seconds and Wait
                  Else - Actions
                    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                      If - Conditions
                        (Unit-type of Test_Race_Hero) Equal to Death Knight (Evil)
                      Then - Actions
                        Cinematic - Send transmission to (All players) from Test_Race_Hero named (Proper name of Test_Race_Hero): Play No sound and display No one can rule the Scourge, except me.. Modify duration: Set to 10.00 seconds and Wait
                      Else - Actions
        Game - Display to (All players) the text: (There are |cffffcc00 + ((String(Test_Lives)) + |r units sacrificed their lives to save this world on your command.))
        -------- - --------
        Game - Victory Test_Quest_Player (Show dialogs, Skip scores)
      Else - Actions
        Cinematic - Fade out over 10.00 seconds using texture Black Mask and color (0%, 0%, 0%) with 0% transparency
        Cinematic - Send transmission to (All players) from Test_Hero named (Proper name of Test_Hero): Play No sound and display You mortals are so weak.I've always had the fun to slaughter your kind.Are there none left to stand against the Legion?. Modify duration: Set to 7.50 seconds and Don't wait
        Wait 10.00 game-time seconds
        Game - Defeat Test_Quest_Player with the message: Quest Failed
library Alloc // Credits to MyPad for the algorithm
    module Alloc
        private static integer array stack
        static method allocate takes nothing returns thistype
            local thistype node = stack[0]
            if stack[node] == 0 then
                set node = node + 1
                set stack[0] = node
            else
                set stack[0] = stack[node]
                set stack[node] = 0
            endif
            return node
        endmethod
        method deallocate takes nothing returns nothing
            set stack[this] = stack[0]
            set stack[0] = this
        endmethod
    endmodule
endlibrary
library Buff /*
                           Buff v1.30
                            by Flux

            Handles all interactions of self-defined buffs.

            Features:
                - Can dispel positive/negative/both/all buffs.
                - Supports 3 types of buff stacking.
                - Buffs with duration.
                - Pick all Buffs of a unit easily.


        */
requires /*
           (nothing)

        */
optional TimerUtils /*
        */
optional RegisterPlayerUnitEvent /*


    ******************
         CREDITS
    ******************

        muzzel          - For BuffHandler which this resource is heavily based upon.
        Vexorian        - For the optional TimerUtils.
        Magtheridon96   - For the optional RegisterPlayerUnitEvent.

    */


    globals
        //-----------------------------//
        //--------- BUFF TYPES --------//
        //-----------------------------//
        constant integer BUFF_NONE = 0
        constant integer BUFF_POSITIVE = 1
        constant integer BUFF_NEGATIVE = 2

        //-----------------------------//
        //------ BUFF STACK TYPES -----//
        //-----------------------------//
        //Applying the same buff only refreshes the duration
        //If the buff is reapplied but from a different source, the Buff unit source gets replaced.
        constant integer BUFF_STACK_NONE = 0

        //Each buff from different source stacks.
        //Re-applying the same buff from the same source only refreshes the duration
        constant integer BUFF_STACK_PARTIAL = 1

        //Each buff applied fully stacks.
        constant integer BUFF_STACK_FULL = 2

        //Determines the automatic Buff rawcode based on the Ability rawcode
        //If BUFF_OFFSET = 0x01000000, then Ability rawcode of 'AXXX' will have Buff rawcode of 'BXXX'
        //If BUFF_OFFSET = 0x20000000, then Ability rawcode of 'AXXX' will have Buff rawcode of 'aXXX'
        private constant integer BUFF_OFFSET = 0x01000000

        //Automatically Preloads all Buff abilities defined in "method rawcode"
        //but will generate a lot of scripts in the process
        private constant boolean PRELOAD_BUFFS = true

        //Automatically initialize a Buff type.
        //If false, initialize it using <MyBuff>.initialize()
        private constant boolean AUTO_INITIALIZE = true
    endglobals


    struct Buff
        //Buff properties
        readonly boolean exist
        readonly unit target
        readonly unit source
        readonly integer rawcode
        readonly integer buffId
        readonly integer stackType
        readonly integer dispelType
       
        //For duration
        private timer t
       
        //Buff Enumeration
        private thistype bnext
        private thistype bprev
        //Events
        private static thistype callback
        private static trigger array onApply
        private static trigger array onRemove
     
        method operator name takes nothing returns string
            return GetObjectName(this.rawcode)
        endmethod
       
        private static hashtable hash = InitHashtable()
       
        //===============================================================
        //======================== BUFF CORE ============================
        //===============================================================    
        static method get takes unit source, unit target, integer typeid returns thistype
            local integer id = GetHandleId(target)
            local thistype this
            local thistype head
            if HaveSavedInteger(thistype.hash, id, 0) then
                set head = LoadInteger(thistype.hash, id, 0)
                set this = head
                loop
                    if this.getType() == typeid and (source == null or source == this.source) then
                        return this
                    endif
                    exitwhen this == head.bprev
                    set this = this.bnext
                endloop
            endif
            return 0
        endmethod
       
        static method has takes unit source, unit target, integer typeid returns boolean
            return thistype.get(source, target, typeid) > 0
        endmethod
       
        method remove takes nothing returns nothing
            local boolean remove = false
            local integer id
            local thistype head
            local integer count
         
            if this.exist then
                set id = GetHandleId(this.target)
               
                set thistype.callback = this
                call TriggerEvaluate(thistype.onRemove[this.getType()])
             
                if this.t != null then
                    static if LIBRARY_TimerUtils then
                        call ReleaseTimer(this.t)
                    else
                        call RemoveSavedInteger(thistype.hash, GetHandleId(this.t), 0)
                        call DestroyTimer(this.t)
                    endif
                    set this.t = null
                endif
             
                if this.stackType == BUFF_STACK_FULL or this.stackType == BUFF_STACK_PARTIAL then
                    //Update Buff count
                    set count = LoadInteger(thistype.hash, this.getType(), id) - 1
                    call SaveInteger(thistype.hash, this.getType(), id, count)
                   
                    if count == 0 then
                        set remove = true
                    endif
                 
                elseif this.stackType == BUFF_STACK_NONE then
                    set remove = true
                endif
             
                if remove then
                    call UnitRemoveAbility(this.target, this.rawcode)
                    call UnitRemoveAbility(this.target, this.buffId)
                endif
             
                //Remove from the BuffList
                set head = LoadInteger(thistype.hash, id, 0)
                if this == head and this.bnext == head then //If this is the only Buff of the unit
                    call RemoveSavedInteger(thistype.hash, id, 0)
                else
                    //If this is the head of the BuffList
                    if this == head then
                        //Change this unit's BuffList head
                        call SaveInteger(thistype.hash, id, 0, this.bnext)
                    endif
                    set this.bnext.bprev = this.bprev
                    set this.bprev.bnext = this.bnext
                endif
             
                set this.exist = false
                set this.target = null
                set this.source = null
                call this.destroy()
            debug else
                debug call DisplayTextToPlayer(GetLocalPlayer(), 0, 0, "[Buff]: Attempted to remove non-existing Buff instance.")
            endif
        endmethod
     
        private static method expires takes nothing returns nothing
            static if LIBRARY_TimerUtils then
                local thistype this = GetTimerData(GetExpiredTimer())
                call ReleaseTimer(GetExpiredTimer())
            else
                local integer id = GetHandleId(GetExpiredTimer())
                local thistype this = LoadInteger(thistype.hash, id, 0)
                call RemoveSavedInteger(thistype.hash, id, 0)
                call DestroyTimer(GetExpiredTimer())
            endif
            if this.t != null then
                set this.t = null
                call this.remove()
            endif
        endmethod
     
        method operator duration takes nothing returns real
            if this.t != null then
                return TimerGetRemaining(this.t)
            endif
            return 0.0
        endmethod
     
        method operator duration= takes real time returns nothing
            if this.t == null then
                static if LIBRARY_TimerUtils then
                    set this.t = NewTimerEx(this)
                else
                    set this.t = CreateTimer()
                    call SaveInteger(thistype.hash, GetHandleId(this.t), 0, this)
                endif
            endif
            call TimerStart(this.t, time, false, function thistype.expires)
        endmethod
   
        method check takes unit source, unit target returns thistype
            local boolean apply = false
            local integer id = GetHandleId(target)
            local thistype head
            local thistype temp
            static if not LIBRARY_TimerUtils then
                local timer t
            endif
         
            if this.stackType == BUFF_STACK_FULL then
                //Count how many buffs are stored in a certain unit
                call SaveInteger(thistype.hash, this.getType(), id, LoadInteger(thistype.hash, this.getType(), id) + 1)              
                set apply = true
             
            elseif this.stackType == BUFF_STACK_PARTIAL then
                 //Check if a similar buff type with the same target and source exist
                set temp = thistype.get(source, target, this.getType())
                if temp == 0 then   //None is found
                    set apply = true
                    //Count how many buffs of this type are stored in this certain unit
                    call SaveInteger(thistype.hash, this.getType(), id, LoadInteger(thistype.hash, this.getType(), id) + 1)
                else               //Buff is found, use the previous Buff as the newly applied Buff
                    call this.destroy()
                    set this = temp
                endif

            elseif this.stackType == BUFF_STACK_NONE then
                //Check if a similar buff type with the same target exist
                set temp = thistype.get(null, target, this.getType())
                if temp == 0 then   //None is found
                    set apply = true
                else                //Buff is found, use the previous Buff as the newly applied Buff
                    call this.destroy()
                    set this = temp
                endif
            endif
         
            set this.source = source
            set this.target = target
            set this.exist = true
            set this.buffId = this.rawcode + BUFF_OFFSET
         
            if apply then
             
                if GetUnitAbilityLevel(target, this.rawcode) == 0 then
                    call UnitAddAbility(target, this.rawcode)
                    call UnitMakeAbilityPermanent(target, true, this.rawcode)
                endif
             
                //Add the Buff to a BuffList of this unit
                    //If BuffList already exist
                if HaveSavedInteger(thistype.hash, id, 0) then
                    set head = LoadInteger(thistype.hash, id, 0)
                    set this.bnext = head
                    set this.bprev = head.bprev
                    set this.bnext.bprev = this
                    set this.bprev.bnext = this
                else
                    //Set this as the unit's BuffList head
                    call SaveInteger(thistype.hash, id, 0, this)
                    set this.bnext = this
                    set this.bprev = this
                endif
               
                set thistype.callback = this
                call TriggerEvaluate(thistype.onApply[this.getType()])
            endif
         
            static if LIBRARY_BuffEvent then
                static if LIBRARY_TimerUtils then
                    call TimerStart(NewTimerEx(this), 0.0, false, function BuffEvent.pickAll)
                else
                    set t = CreateTimer()
                    call SaveInteger(thistype.hash, GetHandleId(t), 0, this)
                    call TimerStart(t, 0.0, false, function BuffEvent.pickAll)
                endif
            endif
            return this
        endmethod
     
        //===============================================================
        //======================== BUFF ENUM ============================
        //===============================================================
        readonly static thistype buffHead
        readonly static thistype picked
     
        static method pickBuffs takes unit u returns nothing
            local integer id = GetHandleId(u)
            if HaveSavedInteger(thistype.hash, id, 0) then
                set thistype.buffHead = LoadInteger(thistype.hash, id, 0)
            else
                set thistype.buffHead = 0
            endif
        endmethod
     
     
        //===============================================================
        //======================= BUFF DISPEL ===========================
        //===============================================================
        static method dispel takes unit u, integer dispelType returns nothing
            local integer id = GetHandleId(u)
            local thistype head
            local thistype this
            if HaveSavedInteger(thistype.hash, id, 0) then
                set head = LoadInteger(thistype.hash, id, 0)
                set this = head.bnext
                loop
                    if this.dispelType == dispelType then
                        call this.remove()
                    endif
                    exitwhen this == head
                    set this = this.bnext
                endloop
            endif
        endmethod

     
        static method dispelBoth takes unit u returns nothing
            local integer id = GetHandleId(u)
            local thistype head
            local thistype this
            if HaveSavedInteger(thistype.hash, id, 0) then
                set head = LoadInteger(thistype.hash, id, 0)
                set this = head.bnext
                loop
                    if this.dispelType == BUFF_POSITIVE or this.dispelType == BUFF_NEGATIVE then
                        call this.remove()
                    endif
                    exitwhen this == head
                    set this = this.bnext
                endloop
            endif
        endmethod
     
        static method dispelAll takes unit u returns nothing
            local integer id = GetHandleId(u)
            local thistype head
            local thistype this
            if HaveSavedInteger(thistype.hash, id, 0) then
                set head = LoadInteger(thistype.hash, id, 0)
                set this = head.bnext
                loop
                    call this.remove()
                    exitwhen this == head
                    set this = this.bnext
                endloop
            endif
        endmethod
     
        private static method onDeath takes nothing returns nothing
            call thistype.dispelAll(GetTriggerUnit())
        endmethod
     
        implement optional BuffInit

        private static method onInit takes nothing returns nothing
            static if LIBRARY_RegisterPlayerUnitEvent then
                call RegisterPlayerUnitEvent(EVENT_PLAYER_UNIT_DEATH, function thistype.onDeath)
            else
                local trigger core = CreateTrigger()
                local code death = function thistype.onDeath
                call TriggerRegisterAnyUnitEventBJ(core, EVENT_PLAYER_UNIT_DEATH)
                call TriggerAddCondition(core, Condition(death))
            endif
        endmethod
     
    endstruct

    static if PRELOAD_BUFFS then
        module BuffInit
            readonly static unit preloader
         
            private static method onInit takes nothing returns nothing
                set thistype.preloader = CreateUnit(Player(14), 'ushd', GetRectMaxX(bj_mapInitialPlayableArea), GetRectMaxY(bj_mapInitialPlayableArea), 0)
                call UnitApplyTimedLife(thistype.preloader, 'BTLF', 1.0)
            endmethod
        endmodule
    endif

    module BuffApply
       
        static method add takes unit source, unit target returns thistype
            local thistype this = thistype.create()  
            //Write into readonly attributes
            set s__Buff_rawcode[this] = thistype.RAWCODE
            set s__Buff_stackType[this] = thistype.STACK_TYPE
            set s__Buff_dispelType[this] = thistype.DISPEL_TYPE
            set this = this.check(source, target)
            return this
        endmethod
       
        private static method onApplyInit takes nothing returns boolean
            call thistype(s__Buff_callback).onApply()
            return false
        endmethod
       
        private static method onRemoveInit takes nothing returns boolean
            call thistype(s__Buff_callback).onRemove()
            return false
        endmethod
       
        static method initialize takes nothing returns nothing
            static if thistype.onApply.exists then
                set s__Buff_onApply[thistype.typeid] = CreateTrigger()
                call TriggerAddCondition(s__Buff_onApply[thistype.typeid], function thistype.onApplyInit)
            endif
            static if thistype.onRemove.exists then
                set s__Buff_onRemove[thistype.typeid] = CreateTrigger()
                call TriggerAddCondition(s__Buff_onRemove[thistype.typeid], function thistype.onRemoveInit)
            endif
        endmethod
     
        static if PRELOAD_BUFFS then
            private static method onInit takes nothing returns nothing
                local thistype this = thistype.create()  
                call UnitAddAbility(Buff.preloader, thistype.RAWCODE)
                call UnitRemoveAbility(Buff.preloader, thistype.RAWCODE)
                call this.destroy()
                static if AUTO_INITIALIZE then
                    call thistype.initialize()
                endif
            endmethod
        elseif AUTO_INITIALIZE then
            private static method onInit takes nothing returns nothing
                call thistype.initialize()
            endmethod
        endif
    endmodule

    module BuffListStart
        if Buff.buffHead > 0 then
            set s__Buff_picked = s__Buff_buffHead
            loop
    endmodule

    module BuffListEnd
                exitwhen Buff.picked == s__Buff_bprev[s__Buff_buffHead]
                set s__Buff_picked = s__Buff_bnext[s__Buff_picked]
            endloop
        endif
    endmodule

endlibrary
/*****************************************************************************
*
*    Bitwise v1.0.0.1.0
*       by Nestharus, Magtheridon & Bannar
*
*    Provides convenient way to perform bitwise operations.
*
******************************************************************************
*
*    struct lbyte:
*
*       static constant method operator [] takes integer val returns integer
*
*
*    struct rbyte:
*
*       static constant method operator [] takes integer val returns integer
*
*
*    struct sbyte:
*
*        static constant method AND takes integer sub1, integer sub2 returns integer
*
*        static constant method OR takes integer sub1, integer sub2 returns integer
*
*        static constant method XOR takes integer sub1, integer sub2 returns integer
*
******************************************************************************
*
*    struct Bitwise:
*
*       1 byte - 8 bits
*
*          static constant method NOT takes integer byte returns integer
*
*          static constant method AND takes integer byte1, integer byte2 returns integer
*
*          static constant method OR takes integer byte1, integer byte2 returns integer
*
*          static constant method XOR takes integer byte1, integer byte2 returns integer
*
*
*       Bit shifts
*
*          static method shiftl takes integer byte, integer shift returns integer
*
*          static method shiftr takes integer byte, integer shift returns integer
*
*          static method rotl takes integer byte, integer shift returns integer
*
*          static method rotr takes integer byte, integer shift returns integer
*
*
*       4 bytes - 32 bits
*
*          static constant method NOT32 takes integer int returns integer
*
*          static method AND32 takes integer int1, integer int2 returns integer
*
*          static method OR32 takes integer int1, integer int2 returns integer
*
*          static method XOR32 takes integer int1, integer int2 returns integer
*
******************************************************************************/

library Bitwise

    globals
        private integer array leftByte
        private integer array rightByte
        private integer array andData
        private integer array orData
        private integer array xorData
        private integer array powShift
    endglobals

    globals
        private integer b1
        private integer b2
    endglobals

    private module lbyteInit
        private static method onInit takes nothing returns nothing
            local integer i16 = 0x0
            local integer i256 = 0x0
            local integer i
            loop
                exitwhen i256 >= 0x100
                set i = 0
                loop
                    exitwhen i >= 0x10
                    set leftByte[i256] = i16
                    set i256 = i256 + 1
                    set i = i + 1
                endloop
                set i16 = i16 + 1
            endloop
        endmethod
    endmodule

    struct lbyte extends array
        static constant method operator [] takes integer val returns integer
            return leftByte[val]
        endmethod
   
        implement lbyteInit
    endstruct

    private module rbyteInit
        private static method onInit takes nothing returns nothing
            local integer i256 = 0x0
            local integer i16
            loop
                exitwhen i256 >= 0x100
                set i16 = 0
                loop
                    exitwhen i16 >= 0x10
                    set rightByte[i256] = i16
                    set i256 = i256 + 1
                    set i16 = i16 + 1
                endloop
            endloop
        endmethod
    endmodule

    struct rbyte extends array
        static constant method operator [] takes integer val returns integer
            return rightByte[val]
        endmethod
   
        implement rbyteInit
    endstruct

    struct sbyte extends array
        static constant method AND takes integer sub1, integer sub2 returns integer
            return andData[sub1 * 0x10 + sub2]
        endmethod

        static constant method OR takes integer sub1, integer sub2 returns integer
            return orData[sub1 * 0x10 + sub2]
        endmethod

        static constant method XOR takes integer sub1, integer sub2 returns integer
            return xorData[sub1 * 0x10 + sub2]
        endmethod
    endstruct

    private keyword BitwiseInit

    struct Bitwise extends array
        static constant method NOT takes integer byte returns integer
            return 0xff - byte
        endmethod

        static constant method AND takes integer byte1, integer byte2 returns integer
            return sbyte.AND(lbyte[byte1], lbyte[byte2]) * 0x10 + sbyte.AND(rbyte[byte1], rbyte[byte2])
        endmethod

        static constant method OR takes integer byte1, integer byte2 returns integer
            return sbyte.OR(lbyte[byte1], lbyte[byte2]) * 0x10 + sbyte.OR(rbyte[byte1], rbyte[byte2])
        endmethod

        static constant method XOR takes integer byte1, integer byte2 returns integer
            return sbyte.XOR(lbyte[byte1], lbyte[byte2])*0x10 + sbyte.XOR(rbyte[byte1], rbyte[byte2])
        endmethod

        static method shiftl takes integer byte, integer shift returns integer
            return byte * powShift[shift]
        endmethod

        static method shiftr takes integer byte, integer shift returns integer
            return byte / powShift[shift]
        endmethod

        static method rotl takes integer byte, integer shift returns integer
            return OR( shiftl(byte, shift), shiftr(byte, 4*8 - shift) )
        endmethod

        static method rotr takes integer byte, integer shift returns integer
            return OR( shiftr(byte, shift), shiftl(byte, 4*8 - shift) )
        endmethod

        static constant method NOT32 takes integer int returns integer
            return -int - 1
        endmethod

        static method AND32 takes integer int1, integer int2 returns integer
            if (0 > int1) then
                set int1 = -2147483648 + int1
                set b1 = 1
            else
                set b1 = 0
            endif
            if (0 > int2) then
                set int2 = -2147483648 + int2
                set b2 = 1
            else
                set b2 = 0
            endif
           
            return AND(b1*128 + int1/0x1000000, b2*128 + int2/0x1000000)*0x1000000 + /*
                */
AND((int1 - int1/0x1000000*0x1000000)/0x10000, (int2 - int2/0x1000000*0x1000000)/0x10000) * 0x10000 + /*
                */
AND((int1 - int1/0x10000*0x10000)/0x100, (int2 - int2/0x10000*0x10000)/0x100) * 0x100 + /*
                */
AND(int1 - int1/0x100*0x100, int2 - int2/0x100*0x100)
        endmethod

        static method OR32 takes integer int1, integer int2 returns integer
            if (0 > int1) then
                set int1 = -2147483648 + int1
                set b1 = 1
            else
                set b1 = 0
            endif
            if (0 > int2) then
                set int2 = -2147483648 + int2
                set b2 = 1
            else
                set b2 = 0
            endif
           
            return OR(b1*128 + int1/0x1000000, b2*128 + int2/0x1000000)*0x1000000 + /*
                */
OR((int1 - int1/0x1000000*0x1000000)/0x10000, (int2 - int2/0x1000000*0x1000000)/0x10000) * 0x10000 + /*
                */
OR((int1 - int1/0x10000*0x10000)/0x100, (int2 - int2/0x10000*0x10000)/0x100) * 0x100 + /*
                */
OR(int1 - int1/0x100*0x100, int2 - int2/0x100*0x100)
        endmethod

        static method XOR32 takes integer int1, integer int2 returns integer
            if (0 > int1) then
                set int1 = -2147483648 + int1
                set b1 = 1
            else
                set b1 = 0
            endif
            if (0 > int2) then
                set int2 = -2147483648 + int2
                set b2 = 1
            else
                set b2 = 0
            endif
           
            return XOR(b1*128 + int1/0x1000000, b2*128 + int2/0x1000000)*0x1000000 + /*
                */
XOR((int1 - int1/0x1000000*0x1000000)/0x10000, (int2 - int2/0x1000000*0x1000000)/0x10000) * 0x10000 + /*
                */
XOR((int1 - int1/0x10000*0x10000)/0x100, (int2 - int2/0x10000*0x10000)/0x100) * 0x100 + /*
                */
XOR(int1 - int1/0x100*0x100, int2 - int2/0x100*0x100)
        endmethod

        implement BitwiseInit
    endstruct

// Trust me, you don't want to scroll down there
    private module BitwiseInit
        private static method initShiftData takes nothing returns nothing
            local integer bit = 0
            loop
                exitwhen bit > 0x20
                set powShift[bit] = R2I(Pow(2, bit))
                set bit = bit + 1
            endloop
        endmethod

        private static method initANDData takes nothing returns nothing
            set andData[0x00] = 0x0
            set andData[0x01] = 0x0
            set andData[0x02] = 0x0
            set andData[0x03] = 0x0
            set andData[0x04] = 0x0
            set andData[0x05] = 0x0
            set andData[0x06] = 0x0
            set andData[0x07] = 0x0
            set andData[0x08] = 0x0
            set andData[0x09] = 0x0
            set andData[0x0a] = 0x0
            set andData[0x0b] = 0x0
            set andData[0x0c] = 0x0
            set andData[0x0d] = 0x0
            set andData[0x0e] = 0x0
            set andData[0x0f] = 0x0
            set andData[0x10] = 0x0
            set andData[0x11] = 0x1
            set andData[0x12] = 0x0
            set andData[0x13] = 0x1
            set andData[0x14] = 0x0
            set andData[0x15] = 0x1
            set andData[0x16] = 0x0
            set andData[0x17] = 0x1
            set andData[0x18] = 0x0
            set andData[0x19] = 0x1
            set andData[0x1a] = 0x0
            set andData[0x1b] = 0x1
            set andData[0x1c] = 0x0
            set andData[0x1d] = 0x1
            set andData[0x1e] = 0x0
            set andData[0x1f] = 0x1
            set andData[0x20] = 0x0
            set andData[0x21] = 0x0
            set andData[0x22] = 0x2
            set andData[0x23] = 0x2
            set andData[0x24] = 0x0
            set andData[0x25] = 0x0
            set andData[0x26] = 0x2
            set andData[0x27] = 0x2
            set andData[0x28] = 0x0
            set andData[0x29] = 0x0
            set andData[0x2a] = 0x2
            set andData[0x2b] = 0x2
            set andData[0x2c] = 0x0
            set andData[0x2d] = 0x0
            set andData[0x2e] = 0x2
            set andData[0x2f] = 0x2
            set andData[0x30] = 0x0
            set andData[0x31] = 0x1
            set andData[0x32] = 0x2
            set andData[0x33] = 0x3
            set andData[0x34] = 0x0
            set andData[0x35] = 0x1
            set andData[0x36] = 0x2
            set andData[0x37] = 0x3
            set andData[0x38] = 0x0
            set andData[0x39] = 0x1
            set andData[0x3a] = 0x2
            set andData[0x3b] = 0x3
            set andData[0x3c] = 0x0
            set andData[0x3d] = 0x1
            set andData[0x3e] = 0x2
            set andData[0x3f] = 0x3
            set andData[0x40] = 0x0
            set andData[0x41] = 0x0
            set andData[0x42] = 0x0
            set andData[0x43] = 0x0
            set andData[0x44] = 0x4
            set andData[0x45] = 0x4
            set andData[0x46] = 0x4
            set andData[0x47] = 0x4
            set andData[0x48] = 0x0
            set andData[0x49] = 0x0
            set andData[0x4a] = 0x0
            set andData[0x4b] = 0x0
            set andData[0x4c] = 0x4
            set andData[0x4d] = 0x4
            set andData[0x4e] = 0x4
            set andData[0x4f] = 0x4
            set andData[0x50] = 0x0
            set andData[0x51] = 0x1
            set andData[0x52] = 0x0
            set andData[0x53] = 0x1
            set andData[0x54] = 0x4
            set andData[0x55] = 0x5
            set andData[0x56] = 0x4
            set andData[0x57] = 0x5
            set andData[0x58] = 0x0
            set andData[0x59] = 0x1
            set andData[0x5a] = 0x0
            set andData[0x5b] = 0x1
            set andData[0x5c] = 0x4
            set andData[0x5d] = 0x5
            set andData[0x5e] = 0x4
            set andData[0x5f] = 0x5
            set andData[0x60] = 0x0
            set andData[0x61] = 0x0
            set andData[0x62] = 0x2
            set andData[0x63] = 0x2
            set andData[0x64] = 0x4
            set andData[0x65] = 0x4
            set andData[0x66] = 0x6
            set andData[0x67] = 0x6
            set andData[0x68] = 0x0
            set andData[0x69] = 0x0
            set andData[0x6a] = 0x2
            set andData[0x6b] = 0x2
            set andData[0x6c] = 0x4
            set andData[0x6d] = 0x4
            set andData[0x6e] = 0x6
            set andData[0x6f] = 0x6
            set andData[0x70] = 0x0
            set andData[0x71] = 0x1
            set andData[0x72] = 0x2
            set andData[0x73] = 0x3
            set andData[0x74] = 0x4