• 🏆 Texturing Contest #33 is OPEN! Contestants must re-texture a SD unit model found in-game (Warcraft 3 Classic), recreating the unit into a peaceful NPC version. 🔗Click here to enter!
  • It's time for the first HD Modeling Contest of 2024. Join the theme discussion for Hive's HD Modeling Contest #6! Click here to post your idea!

Ultimate GUI Hero Pick System 2.3

Ultimate GUI Hero Pick System
2.3
Created by -Kobas-
Link to JASS version
-------------------------------------------------------------------------
Please if you find any errors or bugs report them to me so I can fix them

Features:
- Easy to understand/edit/import/use.
- Can be mixed with multiboard together.
- Small file size.
- Unique idea, perfect way to show people something new.
- Now MPI as well.


What is different in my system?
You can edit interface and play with it to make it look like anything you want really easily.
How to add more buttons, for example hero icons
You will need to create new destructible doodads just like I did for buttons, edit texture and scaling value :)
Remember to trigger dummy unit as well.
Why so long triggers and so many variables?
Well this system isn't created for 1 player, you can remove all interfaces except undead (example) and just edit variables easily (using another array integer) to make it usable for all players.
You can copy part of triggers as well, they will work perfectly fine alone cuz they use different variable.
Can we add more options to system?
Of course, especially if you are working on Single Player maps, you will find system funny once when you remove 90% of triggers created for other players and interfaces :)
Why GUI, use script instead, trackables and such things?
I won't answer to such question, and I will try to ignore such comments -.-


  • UGHPS Setup
    • Events
      • Map initialization
    • Conditions
    • Actions
      • -------- Player Colors --------
      • Set TextColor[1] = |c00FF0000
      • Set TextColor[2] = |c000042FF
      • Set TextColor[3] = |c001CE6B9
      • Set TextColor[4] = |c00540081
      • Set TextColor[5] = |c00FFFC01
      • Set TextColor[6] = |c00FEBA0E
      • Set TextColor[7] = |c0020C000
      • Set TextColor[8] = |c00E55BB0
      • Set TextColor[9] = |c00959697
      • Set TextColor[11] = |c00FFFFBB
      • Set TextColor[12] = |c00FF00FF
      • -------- Player Interface Regions --------
      • Set UGHPS_InterfaceRegion[1] = Player Interface 1 <gen>
      • Set UGHPS_InterfaceRegion[2] = Player Interface 2 <gen>
      • -------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --------
      • -------- Red Player --------
      • -------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --------
      • -------- Player multipli value, should be ranged from 100 to 800. Everything above 800 will ruin trigger cuz max array limit will be reached. --------
      • -------- I use 100 cuz 100 - 20 for each hero = 40 more room between. --------
      • Set Integer_i = 100
      • -------- Integer that calculate things, it's easier for me to work like this, if you need different value you can just change 1 variable instead all. --------
      • Set Integer_k = 1
      • -------- Interface Camera --------
      • Set UGHPS_Camera[1] = Interface 1 <gen>
      • -------- Damage --------
      • Set UGHPS_HeroStats[(Integer_i + (Integer_k + 1))] = (Center of Damage 1 <gen>)
      • -------- Range --------
      • Set UGHPS_HeroStats[(Integer_i + (Integer_k + 2))] = (Center of Range 1 <gen>)
      • -------- Armor --------
      • Set UGHPS_HeroStats[(Integer_i + (Integer_k + 3))] = (Center of Armor 1 <gen>)
      • -------- AoE --------
      • Set UGHPS_HeroStats[(Integer_i + (Integer_k + 4))] = (Center of AoE 1 <gen>)
      • -------- Support --------
      • Set UGHPS_HeroStats[(Integer_i + (Integer_k + 5))] = (Center of Support 1 <gen>)
      • -------- Regeneration --------
      • Set UGHPS_HeroStats[(Integer_i + (Integer_k + 6))] = (Center of Regeneration 1 <gen>)
      • -------- Hero Name --------
      • Set UGHPS_HeroStats[(Integer_i + (Integer_k + 7))] = (Center of Hero Name 1 <gen>)
      • -------- Hero Class --------
      • Set UGHPS_HeroStats[(Integer_i + (Integer_k + 8))] = (Center of Hero 1 <gen>)
      • -------- Hero Introduction --------
      • Set UGHPS_HeroStats[(Integer_i + (Integer_k + 9))] = (Center of Intro 1 <gen>)
      • -------- Stats - Attributes --------
      • Set UGHPS_HeroStats[(Integer_i + (Integer_k + 10))] = (Center of A 1 <gen>)
      • -------- Hero Spawn Location --------
      • Set UGHPS_HeroStats[(Integer_i + (Integer_k + 11))] = (Center of Spawn Location 1 <gen>)
      • -------- OK button --------
      • Set UGHPS_Button_OK = Click 0022 <gen>
      • -------- Random Button --------
      • Set UGHPS_Button_Random = Click 0002 <gen>
      • -------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --------
      • -------- Blue Player --------
      • -------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --------
      • -------- Player multipli value, should be ranged from 100 to 800. Everything above 800 will ruin trigger cuz max array limit will be reached. --------
      • -------- I use 100 cuz 100 - 20 for each hero = 40 more room between. --------
      • Set Integer_i = 200
      • -------- Integer that calculate things, it's easier for me to work like this, if you need different value you can just change 1 variable instead all. --------
      • Set Integer_k = 1
      • -------- Interface Camera --------
      • Set UGHPS_Camera[2] = Interface 2 <gen>
      • -------- Damage --------
      • Set UGHPS_HeroStats[(Integer_i + (Integer_k + 1))] = (Center of Damage 2 <gen>)
      • -------- Range --------
      • Set UGHPS_HeroStats[(Integer_i + (Integer_k + 2))] = (Center of Range 2 <gen>)
      • -------- Armor --------
      • Set UGHPS_HeroStats[(Integer_i + (Integer_k + 3))] = (Center of Armor 2 <gen>)
      • -------- AoE --------
      • Set UGHPS_HeroStats[(Integer_i + (Integer_k + 4))] = (Center of AoE 2 <gen>)
      • -------- Support --------
      • Set UGHPS_HeroStats[(Integer_i + (Integer_k + 5))] = (Center of Support 2 <gen>)
      • -------- Regeneration --------
      • Set UGHPS_HeroStats[(Integer_i + (Integer_k + 6))] = (Center of Regeneration 2 <gen>)
      • -------- Hero Name --------
      • Set UGHPS_HeroStats[(Integer_i + (Integer_k + 7))] = (Center of Hero Name 2 <gen>)
      • -------- Hero Class --------
      • Set UGHPS_HeroStats[(Integer_i + (Integer_k + 8))] = (Center of Hero 2 <gen>)
      • -------- Hero Introduction --------
      • Set UGHPS_HeroStats[(Integer_i + (Integer_k + 9))] = (Center of Intro 2 <gen>)
      • -------- Stats - Attributes --------
      • Set UGHPS_HeroStats[(Integer_i + (Integer_k + 10))] = (Center of A 2 <gen>)
      • -------- Hero Spawn Location --------
      • Set UGHPS_HeroStats[(Integer_i + (Integer_k + 11))] = (Center of Spawn Location 2 <gen>)
      • -------- OK button --------
      • Set UGHPS_Button_OK = Click 0007 <gen>
      • -------- Random Button --------
      • Set UGHPS_Button_Random = Click 0006 <gen>
      • -------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --------
      • -------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --------
      • -------- MPI settings --------
      • -------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --------
      • -------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --------
      • For each (Integer A) from 1 to 2, do (Actions)
        • Loop - Actions
          • -------- Disable camera variable for all players --------
          • Set UGHPS_CameraCheck[(Player number of (Player((Integer A))))] = False
          • -------- Add player select unit event to trigger below. --------
          • Trigger - Add to UGHPS Buttons <gen> the event (Player - (Player((Integer A))) Selects a unit)
          • -------- Add player skips cinematic or write xxx to right trigger. --------
          • Trigger - Add to UGHPS Progress <gen> the event (Player - (Player((Integer A))) skips a cinematic sequence)
          • Trigger - Add to UGHPS Progress <gen> the event (Player - (Player((Integer A))) types a chat message containing xxx as An exact match)
          • Trigger - Add to UGHPS Camera x <gen> the event (Time - UGHPS_CameraTimer[(Integer A)] expires)
      • -------- Let's make clickable units transparent (unvisible) --------
      • Custom script: set bj_wantDestroyGroup = true
      • Unit Group - Pick every unit in (Units in (Playable map area) matching (((Unit-type of (Matching unit)) Equal to Click) or ((Unit-type of (Matching unit)) Equal to Settings))) and do (Animation - Change (Picked unit)'s vertex coloring to (100.00%, 100.00%, 100.00%) with 100.00% transparency)
      • -------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --------
      • -------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --------
      • -------- HEROES --------
      • -------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --------
      • -------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --------
      • -------- Hero destructible model --------
      • -------- RED --------
      • Set UGHPS_HeroModel[((Integer_i x 1) + 20)] = Hero H (Paladin) 0124 <gen>
      • Set UGHPS_HeroModel[((Integer_i x 1) + 40)] = Hero H (Blood Mage) 0247 <gen>
      • Set UGHPS_HeroModel[((Integer_i x 1) + 60)] = Hero H (Ranger) 0154 <gen>
      • -------- BLUE --------
      • Set UGHPS_HeroModel[((Integer_i x 2) + 20)] = Hero H (Paladin) 0141 <gen>
      • Set UGHPS_HeroModel[((Integer_i x 2) + 40)] = Hero H (Blood Mage) 0157 <gen>
      • Set UGHPS_HeroModel[((Integer_i x 2) + 60)] = Hero H (Ranger) 0178 <gen>
      • Set Integer_i = 100
      • For each (Integer A) from 1 to 2, do (Actions)
        • Loop - Actions
          • -------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --------
          • -------- Paladin --------
          • -------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --------
          • Set Integer_k = 20
          • -------- Hero unit type --------
          • Set UGHPS_HERO_H[((Integer_i x (Integer A)) + Integer_k)] = Paladin
          • -------- Hero destructible model --------
          • Destructible - Hide UGHPS_HeroModel[((Integer_i x (Integer A)) + Integer_k)]
          • -------- Damage --------
          • Set UGHPS_StringAttributes[((Integer_i x (Integer A)) + (Integer_k + 1))] = |cFF00FF00IIIIIII|r|cFFFF0000III|r
          • -------- Range --------
          • Set UGHPS_StringAttributes[((Integer_i x (Integer A)) + (Integer_k + 2))] = |cFF00FF00II|r|cFFFF0000IIIIIIII|r
          • -------- Armor --------
          • Set UGHPS_StringAttributes[((Integer_i x (Integer A)) + (Integer_k + 3))] = |cFF00FF00IIII|r|cFFFF0000IIIIII|r
          • -------- AoE --------
          • Set UGHPS_StringAttributes[((Integer_i x (Integer A)) + (Integer_k + 4))] = |cFF00FF00I|r|cFFFF0000IIIIIIIII|r
          • -------- Support --------
          • Set UGHPS_StringAttributes[((Integer_i x (Integer A)) + (Integer_k + 5))] = |cFF00FF00IIIII|r|cFFFF0000IIIII|r
          • -------- Regeneration --------
          • Set UGHPS_StringAttributes[((Integer_i x (Integer A)) + (Integer_k + 6))] = |cFFFF0000IIIIIIIIII|r
          • -------- Hero Name --------
          • Set UGHPS_StringAttributes[((Integer_i x (Integer A)) + (Integer_k + 7))] = Aurrius the Pure
          • -------- Hero Class --------
          • Set UGHPS_StringAttributes[((Integer_i x (Integer A)) + (Integer_k + 8))] = |cffffcc00Palladin
          • -------- Hero Introduction --------
          • Set UGHPS_StringAttributes[((Integer_i x (Integer A)) + (Integer_k + 9))] = Warrior Hero, exceptional at defense and augmenting nearby friendly troops. Can learn Holy Light, Divine Shield, Devotion Aura and Resurrection. |n|n|cffffcc00Attacks land units.|r
          • -------- Stats - Attributes --------
          • Set UGHPS_StringAttributes[((Integer_i x (Integer A)) + (Integer_k + 10))] = (|cffffcc0022 + 2.7|r) (17 + 1.8) (13 + 1.5)
          • -------- Sound - Hero Selected --------
          • Set UGHPS_Sound[((Integer_i x (Integer A)) + Integer_k)] = HeroSelectedPaladin <gen>
          • -------- Sound - Hero Picked --------
          • Set UGHPS_Sound[((Integer_i x (Integer A)) + (Integer_k + 1))] = HeroPickedPaladin <gen>
          • -------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --------
          • -------- Blood Mage --------
          • -------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --------
          • Set Integer_k = 40
          • -------- Hero unit type --------
          • Set UGHPS_HERO_H[((Integer_i x (Integer A)) + Integer_k)] = Blood Mage
          • -------- Hero destructible model --------
          • Destructible - Hide UGHPS_HeroModel[((Integer_i x (Integer A)) + Integer_k)]
          • -------- Damage --------
          • Set UGHPS_StringAttributes[((Integer_i x (Integer A)) + (Integer_k + 1))] = |cFF00FF00IIIIIII|r|cFFFF0000III|r
          • -------- Range --------
          • Set UGHPS_StringAttributes[((Integer_i x (Integer A)) + (Integer_k + 2))] = |cFF00FF00IIIII|r|cFFFF0000IIIII|r
          • -------- Armor --------
          • Set UGHPS_StringAttributes[((Integer_i x (Integer A)) + (Integer_k + 3))] = |cFF00FF00IIIIIIII|r|cFFFF0000II|r
          • -------- AoE --------
          • Set UGHPS_StringAttributes[((Integer_i x (Integer A)) + (Integer_k + 4))] = |cFFFF0000IIIIIIIIII|r
          • -------- Support --------
          • Set UGHPS_StringAttributes[((Integer_i x (Integer A)) + (Integer_k + 5))] = |cFFFF0000IIIIIIIIII|r
          • -------- Regeneration --------
          • Set UGHPS_StringAttributes[((Integer_i x (Integer A)) + (Integer_k + 6))] = |cFF00FF00II|r|cFFFF0000IIIIIIII|r
          • -------- Hero Name --------
          • Set UGHPS_StringAttributes[((Integer_i x (Integer A)) + (Integer_k + 7))] = Kelen the Destroyer
          • -------- Hero Class --------
          • Set UGHPS_StringAttributes[((Integer_i x (Integer A)) + (Integer_k + 8))] = |cffffcc00Blood Mage
          • -------- Hero Introduction --------
          • Set UGHPS_StringAttributes[((Integer_i x (Integer A)) + (Integer_k + 9))] = Mystical Hero, adept at controlling magic and ranged assaults. Can learn Flame Strike, Banish, Siphon Mana and Phoenix. |n|n|cffffcc00Attacks land and air units.|r
          • -------- Stats - Attributes --------
          • Set UGHPS_StringAttributes[((Integer_i x (Integer A)) + (Integer_k + 10))] = (18 + 2.0) (14 + 1.0) (|cffffcc0019 + 3.0|r)
          • -------- Sound - Hero Selected --------
          • Set UGHPS_Sound[((Integer_i x (Integer A)) + Integer_k)] = HeroSelectedBloodElf <gen>
          • -------- Sound - Hero Picked --------
          • Set UGHPS_Sound[((Integer_i x (Integer A)) + (Integer_k + 1))] = HeroPickedBloodElf <gen>
          • -------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --------
          • -------- Ranger --------
          • -------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --------
          • Set Integer_k = 60
          • -------- Hero unit type --------
          • Set UGHPS_HERO_H[((Integer_i x (Integer A)) + Integer_k)] = Sylvanas Windrunner
          • -------- Hero destructible model --------
          • Destructible - Hide UGHPS_HeroModel[((Integer_i x (Integer A)) + Integer_k)]
          • -------- Damage --------
          • Set UGHPS_StringAttributes[((Integer_i x (Integer A)) + (Integer_k + 1))] = |cFF00FF00IIII|r|cFFFF0000IIIIII|r
          • -------- Range --------
          • Set UGHPS_StringAttributes[((Integer_i x (Integer A)) + (Integer_k + 2))] = |cFF00FF00IIIII|r|cFFFF0000IIIII|r
          • -------- Armor --------
          • Set UGHPS_StringAttributes[((Integer_i x (Integer A)) + (Integer_k + 3))] = |cFF00FF00IIIIIIII|r|cFFFF0000II|r
          • -------- AoE --------
          • Set UGHPS_StringAttributes[((Integer_i x (Integer A)) + (Integer_k + 4))] = |cFF00FF00IIIII|r|cFFFF0000IIIII|r
          • -------- Support --------
          • Set UGHPS_StringAttributes[((Integer_i x (Integer A)) + (Integer_k + 5))] = |cFFFF0000IIIIIIIIII|r
          • -------- Regeneration --------
          • Set UGHPS_StringAttributes[((Integer_i x (Integer A)) + (Integer_k + 6))] = |cFF00FF00II|r|cFFFF0000IIIIIIII|r
          • -------- Hero Name --------
          • Set UGHPS_StringAttributes[((Integer_i x (Integer A)) + (Integer_k + 7))] = Sylvanas Windrunner
          • -------- Hero Class --------
          • Set UGHPS_StringAttributes[((Integer_i x (Integer A)) + (Integer_k + 8))] = |cffffcc00Ranger
          • -------- Hero Introduction --------
          • Set UGHPS_StringAttributes[((Integer_i x (Integer A)) + (Integer_k + 9))] = Warrior Hero, adept at enhancing ranged attacks and slaying enemies from afar. Can learn Scout, Cold Arrows, Trueshot Aura, and Starfall. |n|n|cffffcc00Attacks land and air units.|r
          • -------- Stats - Attributes --------
          • Set UGHPS_StringAttributes[((Integer_i x (Integer A)) + (Integer_k + 10))] = (18 + 1.9 ) (|cffffcc0019 + 1.5|r) (15 + 2.6)
          • -------- Sound - Hero Selected --------
          • Set UGHPS_Sound[((Integer_i x (Integer A)) + Integer_k)] = HeroSelectedRanger <gen>
          • -------- Sound - Hero Picked --------
          • Set UGHPS_Sound[((Integer_i x (Integer A)) + (Integer_k + 1))] = HeroPickedRanger <gen>
  • UGHPS Camera
    • Events
      • Time - Every 0.10 seconds of game time
    • Conditions
    • Actions
      • -------- Each 0.1 sec we create timer that will set camera above system for right player if he use system. --------
      • For each (Integer Integer_c) from 1 to 2, do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • UGHPS_CameraCheck[Integer_c] Equal to True
            • Then - Actions
              • Countdown Timer - Start UGHPS_CameraTimer[Integer_c] as a One-shot timer that will expire in 0.00 seconds
            • Else - Actions
  • UGHPS Camera x
    • Events
    • Conditions
    • Actions
      • -------- It's camera system, just copy it, nothing important really --------
      • For each (Integer Integer_c) from 1 to 2, do (Actions)
        • Loop - Actions
          • Custom script: if GetExpiredTimer() == udg_UGHPS_CameraTimer[udg_Integer_c] then
          • Camera - Apply UGHPS_Camera[(Player number of (Player(Integer_c)))] for (Player(Integer_c)) over 0.10 seconds
          • Skip remaining actions
          • Custom script: endif
  • Interface Human
    • Events
      • Unit - A unit Sells a unit
    • Conditions
      • (Unit-type of (Sold unit)) Equal to Human Interface
    • Actions
      • Destructible - Pick every destructible in UGHPS_InterfaceRegion[(Player number of (Owner of (Sold unit)))] and do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • Or - Any (Conditions) are true
                • Conditions
                  • (Destructible-type of (Picked destructible)) Equal to Border NE (D)
                  • (Destructible-type of (Picked destructible)) Equal to Border Orc (D)
                  • (Destructible-type of (Picked destructible)) Equal to Border UD (D)
            • Then - Actions
              • Set point_p = (Position of (Picked destructible))
              • Destructible - Create a Border H (D) at point_p facing 0.00 with scale 1.00 and variation 0
              • Custom script: call RemoveLocation ( udg_point_p)
              • Destructible - Remove (Picked destructible)
            • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • Or - Any (Conditions) are true
                    • Conditions
                      • (Destructible-type of (Picked destructible)) Equal to Border NE (DL)
                      • (Destructible-type of (Picked destructible)) Equal to Border Orc (DL)
                      • (Destructible-type of (Picked destructible)) Equal to Border UD (DL)
                • Then - Actions
                  • Set point_p = (Position of (Picked destructible))
                  • Destructible - Create a Border H (DL) at point_p facing 0.00 with scale 1.00 and variation 0
                  • Custom script: call RemoveLocation ( udg_point_p)
                  • Destructible - Remove (Picked destructible)
                • Else - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • Or - Any (Conditions) are true
                        • Conditions
                          • (Destructible-type of (Picked destructible)) Equal to Border NE (DR)
                          • (Destructible-type of (Picked destructible)) Equal to Border Orc (DR)
                          • (Destructible-type of (Picked destructible)) Equal to Border UD (DR)
                    • Then - Actions
                      • Set point_p = (Position of (Picked destructible))
                      • Destructible - Create a Border H (DR) at point_p facing 0.00 with scale 1.00 and variation 0
                      • Custom script: call RemoveLocation ( udg_point_p)
                      • Destructible - Remove (Picked destructible)
                    • Else - Actions
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • Or - Any (Conditions) are true
                            • Conditions
                              • (Destructible-type of (Picked destructible)) Equal to Border NE (L)
                              • (Destructible-type of (Picked destructible)) Equal to Border Orc (L)
                              • (Destructible-type of (Picked destructible)) Equal to Border UD (L)
                        • Then - Actions
                          • Set point_p = (Position of (Picked destructible))
                          • Destructible - Create a Border H (L) at point_p facing 0.00 with scale 1.00 and variation 0
                          • Custom script: call RemoveLocation ( udg_point_p)
                          • Destructible - Remove (Picked destructible)
                        • Else - Actions
                          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            • If - Conditions
                              • Or - Any (Conditions) are true
                                • Conditions
                                  • (Destructible-type of (Picked destructible)) Equal to Border NE (R)
                                  • (Destructible-type of (Picked destructible)) Equal to Border Orc (R)
                                  • (Destructible-type of (Picked destructible)) Equal to Border UD (R)
                            • Then - Actions
                              • Set point_p = (Position of (Picked destructible))
                              • Destructible - Create a Border H (R) at point_p facing 0.00 with scale 1.00 and variation 0
                              • Custom script: call RemoveLocation ( udg_point_p)
                              • Destructible - Remove (Picked destructible)
                            • Else - Actions
                              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                • If - Conditions
                                  • Or - Any (Conditions) are true
                                    • Conditions
                                      • (Destructible-type of (Picked destructible)) Equal to Border NE (U)
                                      • (Destructible-type of (Picked destructible)) Equal to Border Orc (U)
                                      • (Destructible-type of (Picked destructible)) Equal to Border UD (U)
                                • Then - Actions
                                  • Set point_p = (Position of (Picked destructible))
                                  • Destructible - Create a Border H (U) at point_p facing 0.00 with scale 1.00 and variation 0
                                  • Custom script: call RemoveLocation ( udg_point_p)
                                  • Destructible - Remove (Picked destructible)
                                • Else - Actions
                                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                    • If - Conditions
                                      • Or - Any (Conditions) are true
                                        • Conditions
                                          • (Destructible-type of (Picked destructible)) Equal to Border NE (UL)
                                          • (Destructible-type of (Picked destructible)) Equal to Border Orc (UL)
                                          • (Destructible-type of (Picked destructible)) Equal to Border UD (UL)
                                    • Then - Actions
                                      • Set point_p = (Position of (Picked destructible))
                                      • Destructible - Create a Border H (UL) at point_p facing 0.00 with scale 1.00 and variation 0
                                      • Custom script: call RemoveLocation ( udg_point_p)
                                      • Destructible - Remove (Picked destructible)
                                    • Else - Actions
                                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                        • If - Conditions
                                          • Or - Any (Conditions) are true
                                            • Conditions
                                              • (Destructible-type of (Picked destructible)) Equal to Border NE (UR)
                                              • (Destructible-type of (Picked destructible)) Equal to Border Orc (UR)
                                              • (Destructible-type of (Picked destructible)) Equal to Border UD (UR)
                                        • Then - Actions
                                          • Set point_p = (Position of (Picked destructible))
                                          • Destructible - Create a Border H (UR) at point_p facing 0.00 with scale 1.00 and variation 0
                                          • Custom script: call RemoveLocation ( udg_point_p)
                                          • Destructible - Remove (Picked destructible)
                                        • Else - Actions
  • Interface Orc
    • Events
      • Unit - A unit Sells a unit
    • Conditions
      • (Unit-type of (Sold unit)) Equal to Orc Interface
    • Actions
      • Destructible - Pick every destructible in UGHPS_InterfaceRegion[(Player number of (Owner of (Sold unit)))] and do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • Or - Any (Conditions) are true
                • Conditions
                  • (Destructible-type of (Picked destructible)) Equal to Border H (D)
                  • (Destructible-type of (Picked destructible)) Equal to Border NE (D)
                  • (Destructible-type of (Picked destructible)) Equal to Border UD (D)
            • Then - Actions
              • Set point_p = (Position of (Picked destructible))
              • Destructible - Create a Border Orc (D) at point_p facing 0.00 with scale 1.00 and variation 0
              • Custom script: call RemoveLocation ( udg_point_p)
              • Destructible - Remove (Picked destructible)
            • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • Or - Any (Conditions) are true
                    • Conditions
                      • (Destructible-type of (Picked destructible)) Equal to Border H (DL)
                      • (Destructible-type of (Picked destructible)) Equal to Border NE (DL)
                      • (Destructible-type of (Picked destructible)) Equal to Border UD (DL)
                • Then - Actions
                  • Set point_p = (Position of (Picked destructible))
                  • Destructible - Create a Border Orc (DL) at point_p facing 0.00 with scale 1.00 and variation 0
                  • Custom script: call RemoveLocation ( udg_point_p)
                  • Destructible - Remove (Picked destructible)
                • Else - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • Or - Any (Conditions) are true
                        • Conditions
                          • (Destructible-type of (Picked destructible)) Equal to Border H (DR)
                          • (Destructible-type of (Picked destructible)) Equal to Border NE (DR)
                          • (Destructible-type of (Picked destructible)) Equal to Border UD (DR)
                    • Then - Actions
                      • Set point_p = (Position of (Picked destructible))
                      • Destructible - Create a Border Orc (DR) at point_p facing 0.00 with scale 1.00 and variation 0
                      • Custom script: call RemoveLocation ( udg_point_p)
                      • Destructible - Remove (Picked destructible)
                    • Else - Actions
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • Or - Any (Conditions) are true
                            • Conditions
                              • (Destructible-type of (Picked destructible)) Equal to Border H (L)
                              • (Destructible-type of (Picked destructible)) Equal to Border NE (L)
                              • (Destructible-type of (Picked destructible)) Equal to Border UD (L)
                        • Then - Actions
                          • Set point_p = (Position of (Picked destructible))
                          • Destructible - Create a Border Orc (L) at point_p facing 0.00 with scale 1.00 and variation 0
                          • Custom script: call RemoveLocation ( udg_point_p)
                          • Destructible - Remove (Picked destructible)
                        • Else - Actions
                          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            • If - Conditions
                              • Or - Any (Conditions) are true
                                • Conditions
                                  • (Destructible-type of (Picked destructible)) Equal to Border H (R)
                                  • (Destructible-type of (Picked destructible)) Equal to Border NE (R)
                                  • (Destructible-type of (Picked destructible)) Equal to Border UD (R)
                            • Then - Actions
                              • Set point_p = (Position of (Picked destructible))
                              • Destructible - Create a Border Orc (R) at point_p facing 0.00 with scale 1.00 and variation 0
                              • Custom script: call RemoveLocation ( udg_point_p)
                              • Destructible - Remove (Picked destructible)
                            • Else - Actions
                              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                • If - Conditions
                                  • Or - Any (Conditions) are true
                                    • Conditions
                                      • (Destructible-type of (Picked destructible)) Equal to Border H (U)
                                      • (Destructible-type of (Picked destructible)) Equal to Border NE (U)
                                      • (Destructible-type of (Picked destructible)) Equal to Border UD (U)
                                • Then - Actions
                                  • Set point_p = (Position of (Picked destructible))
                                  • Destructible - Create a Border Orc (U) at point_p facing 0.00 with scale 1.00 and variation 0
                                  • Custom script: call RemoveLocation ( udg_point_p)
                                  • Destructible - Remove (Picked destructible)
                                • Else - Actions
                                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                    • If - Conditions
                                      • Or - Any (Conditions) are true
                                        • Conditions
                                          • (Destructible-type of (Picked destructible)) Equal to Border H (UL)
                                          • (Destructible-type of (Picked destructible)) Equal to Border NE (UL)
                                          • (Destructible-type of (Picked destructible)) Equal to Border UD (UL)
                                    • Then - Actions
                                      • Set point_p = (Position of (Picked destructible))
                                      • Destructible - Create a Border Orc (UL) at point_p facing 0.00 with scale 1.00 and variation 0
                                      • Custom script: call RemoveLocation ( udg_point_p)
                                      • Destructible - Remove (Picked destructible)
                                    • Else - Actions
                                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                        • If - Conditions
                                          • Or - Any (Conditions) are true
                                            • Conditions
                                              • (Destructible-type of (Picked destructible)) Equal to Border H (UR)
                                              • (Destructible-type of (Picked destructible)) Equal to Border NE (UR)
                                              • (Destructible-type of (Picked destructible)) Equal to Border UD (UR)
                                        • Then - Actions
                                          • Set point_p = (Position of (Picked destructible))
                                          • Destructible - Create a Border Orc (UR) at point_p facing 0.00 with scale 1.00 and variation 0
                                          • Custom script: call RemoveLocation ( udg_point_p)
                                          • Destructible - Remove (Picked destructible)
                                        • Else - Actions
  • Interface Night Elf
    • Events
      • Unit - A unit Sells a unit
    • Conditions
      • (Unit-type of (Sold unit)) Equal to Night Elf Interface
    • Actions
      • Destructible - Pick every destructible in UGHPS_InterfaceRegion[(Player number of (Owner of (Sold unit)))] and do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • Or - Any (Conditions) are true
                • Conditions
                  • (Destructible-type of (Picked destructible)) Equal to Border H (D)
                  • (Destructible-type of (Picked destructible)) Equal to Border Orc (D)
                  • (Destructible-type of (Picked destructible)) Equal to Border UD (D)
            • Then - Actions
              • Set point_p = (Position of (Picked destructible))
              • Destructible - Create a Border NE (D) at point_p facing 0.00 with scale 1.00 and variation 0
              • Custom script: call RemoveLocation ( udg_point_p)
              • Destructible - Remove (Picked destructible)
            • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • Or - Any (Conditions) are true
                    • Conditions
                      • (Destructible-type of (Picked destructible)) Equal to Border H (DL)
                      • (Destructible-type of (Picked destructible)) Equal to Border Orc (DL)
                      • (Destructible-type of (Picked destructible)) Equal to Border UD (DL)
                • Then - Actions
                  • Set point_p = (Position of (Picked destructible))
                  • Destructible - Create a Border NE (DL) at point_p facing 0.00 with scale 1.00 and variation 0
                  • Custom script: call RemoveLocation ( udg_point_p)
                  • Destructible - Remove (Picked destructible)
                • Else - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • Or - Any (Conditions) are true
                        • Conditions
                          • (Destructible-type of (Picked destructible)) Equal to Border H (DR)
                          • (Destructible-type of (Picked destructible)) Equal to Border Orc (DR)
                          • (Destructible-type of (Picked destructible)) Equal to Border UD (DR)
                    • Then - Actions
                      • Set point_p = (Position of (Picked destructible))
                      • Destructible - Create a Border NE (DR) at point_p facing 0.00 with scale 1.00 and variation 0
                      • Custom script: call RemoveLocation ( udg_point_p)
                      • Destructible - Remove (Picked destructible)
                    • Else - Actions
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • Or - Any (Conditions) are true
                            • Conditions
                              • (Destructible-type of (Picked destructible)) Equal to Border H (L)
                              • (Destructible-type of (Picked destructible)) Equal to Border Orc (L)
                              • (Destructible-type of (Picked destructible)) Equal to Border UD (L)
                        • Then - Actions
                          • Set point_p = (Position of (Picked destructible))
                          • Destructible - Create a Border NE (L) at point_p facing 0.00 with scale 1.00 and variation 0
                          • Custom script: call RemoveLocation ( udg_point_p)
                          • Destructible - Remove (Picked destructible)
                        • Else - Actions
                          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            • If - Conditions
                              • Or - Any (Conditions) are true
                                • Conditions
                                  • (Destructible-type of (Picked destructible)) Equal to Border H (R)
                                  • (Destructible-type of (Picked destructible)) Equal to Border Orc (R)
                                  • (Destructible-type of (Picked destructible)) Equal to Border UD (R)
                            • Then - Actions
                              • Set point_p = (Position of (Picked destructible))
                              • Destructible - Create a Border NE (R) at point_p facing 0.00 with scale 1.00 and variation 0
                              • Custom script: call RemoveLocation ( udg_point_p)
                              • Destructible - Remove (Picked destructible)
                            • Else - Actions
                              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                • If - Conditions
                                  • Or - Any (Conditions) are true
                                    • Conditions
                                      • (Destructible-type of (Picked destructible)) Equal to Border H (U)
                                      • (Destructible-type of (Picked destructible)) Equal to Border Orc (U)
                                      • (Destructible-type of (Picked destructible)) Equal to Border UD (U)
                                • Then - Actions
                                  • Set point_p = (Position of (Picked destructible))
                                  • Destructible - Create a Border NE (U) at point_p facing 0.00 with scale 1.00 and variation 0
                                  • Custom script: call RemoveLocation ( udg_point_p)
                                  • Destructible - Remove (Picked destructible)
                                • Else - Actions
                                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                    • If - Conditions
                                      • Or - Any (Conditions) are true
                                        • Conditions
                                          • (Destructible-type of (Picked destructible)) Equal to Border H (UL)
                                          • (Destructible-type of (Picked destructible)) Equal to Border Orc (UL)
                                          • (Destructible-type of (Picked destructible)) Equal to Border UD (UL)
                                    • Then - Actions
                                      • Set point_p = (Position of (Picked destructible))
                                      • Destructible - Create a Border NE (UL) at point_p facing 0.00 with scale 1.00 and variation 0
                                      • Custom script: call RemoveLocation ( udg_point_p)
                                      • Destructible - Remove (Picked destructible)
                                    • Else - Actions
                                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                        • If - Conditions
                                          • Or - Any (Conditions) are true
                                            • Conditions
                                              • (Destructible-type of (Picked destructible)) Equal to Border H (UR)
                                              • (Destructible-type of (Picked destructible)) Equal to Border Orc (UR)
                                              • (Destructible-type of (Picked destructible)) Equal to Border UD (UR)
                                        • Then - Actions
                                          • Set point_p = (Position of (Picked destructible))
                                          • Destructible - Create a Border NE (UR) at point_p facing 0.00 with scale 1.00 and variation 0
                                          • Custom script: call RemoveLocation ( udg_point_p)
                                          • Destructible - Remove (Picked destructible)
                                        • Else - Actions
  • Interface Undead
    • Events
      • Unit - A unit Sells a unit
    • Conditions
      • (Unit-type of (Sold unit)) Equal to Undead Interface
    • Actions
      • Destructible - Pick every destructible in UGHPS_InterfaceRegion[(Player number of (Owner of (Sold unit)))] and do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • Or - Any (Conditions) are true
                • Conditions
                  • (Destructible-type of (Picked destructible)) Equal to Border H (D)
                  • (Destructible-type of (Picked destructible)) Equal to Border Orc (D)
                  • (Destructible-type of (Picked destructible)) Equal to Border NE (D)
            • Then - Actions
              • Set point_p = (Position of (Picked destructible))
              • Destructible - Create a Border UD (D) at point_p facing 0.00 with scale 1.00 and variation 0
              • Custom script: call RemoveLocation ( udg_point_p)
              • Destructible - Remove (Picked destructible)
            • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • Or - Any (Conditions) are true
                    • Conditions
                      • (Destructible-type of (Picked destructible)) Equal to Border H (DL)
                      • (Destructible-type of (Picked destructible)) Equal to Border Orc (DL)
                      • (Destructible-type of (Picked destructible)) Equal to Border NE (DL)
                • Then - Actions
                  • Set point_p = (Position of (Picked destructible))
                  • Destructible - Create a Border UD (DL) at point_p facing 0.00 with scale 1.00 and variation 0
                  • Custom script: call RemoveLocation ( udg_point_p)
                  • Destructible - Remove (Picked destructible)
                • Else - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • Or - Any (Conditions) are true
                        • Conditions
                          • (Destructible-type of (Picked destructible)) Equal to Border H (DR)
                          • (Destructible-type of (Picked destructible)) Equal to Border Orc (DR)
                          • (Destructible-type of (Picked destructible)) Equal to Border NE (DR)
                    • Then - Actions
                      • Set point_p = (Position of (Picked destructible))
                      • Destructible - Create a Border UD (DR) at point_p facing 0.00 with scale 1.00 and variation 0
                      • Custom script: call RemoveLocation ( udg_point_p)
                      • Destructible - Remove (Picked destructible)
                    • Else - Actions
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • Or - Any (Conditions) are true
                            • Conditions
                              • (Destructible-type of (Picked destructible)) Equal to Border H (L)
                              • (Destructible-type of (Picked destructible)) Equal to Border Orc (L)
                              • (Destructible-type of (Picked destructible)) Equal to Border NE (L)
                        • Then - Actions
                          • Set point_p = (Position of (Picked destructible))
                          • Destructible - Create a Border UD (L) at point_p facing 0.00 with scale 1.00 and variation 0
                          • Custom script: call RemoveLocation ( udg_point_p)
                          • Destructible - Remove (Picked destructible)
                        • Else - Actions
                          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            • If - Conditions
                              • Or - Any (Conditions) are true
                                • Conditions
                                  • (Destructible-type of (Picked destructible)) Equal to Border H (R)
                                  • (Destructible-type of (Picked destructible)) Equal to Border Orc (R)
                                  • (Destructible-type of (Picked destructible)) Equal to Border NE (R)
                            • Then - Actions
                              • Set point_p = (Position of (Picked destructible))
                              • Destructible - Create a Border UD (R) at point_p facing 0.00 with scale 1.00 and variation 0
                              • Custom script: call RemoveLocation ( udg_point_p)
                              • Destructible - Remove (Picked destructible)
                            • Else - Actions
                              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                • If - Conditions
                                  • Or - Any (Conditions) are true
                                    • Conditions
                                      • (Destructible-type of (Picked destructible)) Equal to Border H (U)
                                      • (Destructible-type of (Picked destructible)) Equal to Border Orc (U)
                                      • (Destructible-type of (Picked destructible)) Equal to Border NE (U)
                                • Then - Actions
                                  • Set point_p = (Position of (Picked destructible))
                                  • Destructible - Create a Border UD (U) at point_p facing 0.00 with scale 1.00 and variation 0
                                  • Custom script: call RemoveLocation ( udg_point_p)
                                  • Destructible - Remove (Picked destructible)
                                • Else - Actions
                                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                    • If - Conditions
                                      • Or - Any (Conditions) are true
                                        • Conditions
                                          • (Destructible-type of (Picked destructible)) Equal to Border H (UL)
                                          • (Destructible-type of (Picked destructible)) Equal to Border Orc (UL)
                                          • (Destructible-type of (Picked destructible)) Equal to Border NE (UL)
                                    • Then - Actions
                                      • Set point_p = (Position of (Picked destructible))
                                      • Destructible - Create a Border UD (UL) at point_p facing 0.00 with scale 1.00 and variation 0
                                      • Custom script: call RemoveLocation ( udg_point_p)
                                      • Destructible - Remove (Picked destructible)
                                    • Else - Actions
                                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                        • If - Conditions
                                          • Or - Any (Conditions) are true
                                            • Conditions
                                              • (Destructible-type of (Picked destructible)) Equal to Border H (UR)
                                              • (Destructible-type of (Picked destructible)) Equal to Border Orc (UR)
                                              • (Destructible-type of (Picked destructible)) Equal to Border NE (UR)
                                        • Then - Actions
                                          • Set point_p = (Position of (Picked destructible))
                                          • Destructible - Create a Border UD (UR) at point_p facing 0.00 with scale 1.00 and variation 0
                                          • Custom script: call RemoveLocation ( udg_point_p)
                                          • Destructible - Remove (Picked destructible)
                                        • Else - Actions
  • UGHPS Progress
    • Events
    • Conditions
    • Actions
      • Set UGHPS_CameraCheck[(Player number of (Triggering player))] = True
      • Camera - Apply UGHPS_Camera[(Player number of (Triggering player))] for (Triggering player) over 0.00 seconds
      • Trigger - Turn on UGHPS Camera <gen>
  • UGHPS Buttons
    • Events
    • Conditions
      • (Unit-type of (Triggering unit)) Equal to Click
    • Actions
      • -------- Turn off trigger to fix small bug when player click fast on icon and create few heroes at same time. --------
      • Trigger - Turn off (This trigger)
      • -------- Remove selected unit from player selection. --------
      • Selection - Clear selection for (Triggering player)
      • -------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --------
      • -------- Button Selection --------
      • -------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --------
      • -------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --------
      • -------- Paladin --------
      • -------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • Or - Any (Conditions) are true
            • Conditions
              • (Triggering unit) Equal to Click 0001 <gen>
              • (Triggering unit) Equal to Click 0008 <gen>
        • Then - Actions
          • -------- Hero number --------
          • -------- WARRNING: 20 is integer_k value from setup trigger, we used 20 as multiple there (20 for 1st hero, 40 for 2nd 60 for 3rd) --------
          • Set Integer_k = 20
          • -------- integer_h is variable that define hero, unneeded really but it makes trigger action below more eye kindly. --------
          • Set Integer_h = ((Integer_i x (Player number of (Triggering player))) + Integer_k)
          • -------- Location variable that use position of created unit, used for cleaning leaks :) --------
          • Set point_p = (Position of (Triggering unit))
          • -------- We create effect on hero icon (variable point_p) --------
          • Special Effect - Create a special effect at point_p using Abilities\Spells\Human\HolyBolt\HolyBoltSpecialArt.mdl
          • -------- We destroy same effect to clean leak. --------
          • Special Effect - Destroy (Last created special effect)
          • -------- We destroy point_p to clean leaks. --------
          • Custom script: call RemoveLocation ( udg_point_p)
          • For each (Integer A) from 1 to 3, do (Actions)
            • Loop - Actions
              • -------- WARRNING: 20 is integer_k value from setup trigger, we used 20 as multiple there (20 for 1st hero, 40 for 2nd 60 for 3rd) --------
              • -------- We hide all hero destructibles shown to player --------
              • Destructible - Hide UGHPS_HeroModel[(((Player number of (Triggering player)) x Integer_i) + (20 x (Integer A)))]
          • -------- Now only show right one :) --------
          • Destructible - Show UGHPS_HeroModel[(((Player number of (Triggering player)) x Integer_i) + Integer_k)]
          • -------- Play sound when player click on hero icon --------
          • Sound - Play UGHPS_Sound[((Integer_i x (Player number of (Triggering player))) + Integer_k)] at 100.00% volume, attached to (Triggering unit)
          • -------- Let's remove all text, create new one and store it to variables once again. --------
          • For each (Integer A) from 1 to 11, do (Actions)
            • Loop - Actions
              • Floating Text - Destroy UGHPS_FT[(Integer A)]
              • Floating Text - Create floating text that reads UGHPS_StringAttributes[(((Player number of (Triggering player)) x Integer_i) + (Integer_k + (Integer A)))] at UGHPS_HeroStats[(((Player number of (Triggering player)) x Integer_i) + ((Integer A) + 1))] with Z offset 0.00, using font size 8.00, color (100.00%, 100.00%, 100.00%), and 0.00% transparency
              • Set UGHPS_FT[(Integer A)] = (Last created floating text)
          • Wait 0.00 seconds
          • Trigger - Turn on (This trigger)
          • Skip remaining actions
        • Else - Actions
      • -------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --------
      • -------- Blood Mage --------
      • -------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • Or - Any (Conditions) are true
            • Conditions
              • (Triggering unit) Equal to Click 0005 <gen>
              • (Triggering unit) Equal to Click 0009 <gen>
        • Then - Actions
          • -------- Hero number --------
          • -------- WARRNING: 40 is integer_k value from setup trigger, we used 20 as multiple there (20 for 1st hero, 40 for 2nd 60 for 3rd) --------
          • Set Integer_k = 40
          • -------- integer_h is variable that define hero, unneeded really but it makes trigger action below more eye kindly. --------
          • Set Integer_h = ((Integer_i x (Player number of (Triggering player))) + Integer_k)
          • -------- Location variable that use position of created unit, used for cleaning leaks :) --------
          • Set point_p = (Position of (Triggering unit))
          • -------- We create effect on hero icon (variable point_p) --------
          • Special Effect - Create a special effect at point_p using Abilities\Spells\Human\HolyBolt\HolyBoltSpecialArt.mdl
          • -------- We destroy same effect to clean leak. --------
          • Special Effect - Destroy (Last created special effect)
          • -------- We destroy point_p to clean leaks. --------
          • Custom script: call RemoveLocation ( udg_point_p)
          • For each (Integer A) from 1 to 3, do (Actions)
            • Loop - Actions
              • -------- WARRNING: 20 is integer_k value from setup trigger, we used 20 as multiple there (20 for 1st hero, 40 for 2nd 60 for 3rd) --------
              • -------- We hide all hero destructibles shown to player --------
              • Destructible - Hide UGHPS_HeroModel[(((Player number of (Triggering player)) x Integer_i) + (20 x (Integer A)))]
          • -------- Now only show right one :) --------
          • Destructible - Show UGHPS_HeroModel[(((Player number of (Triggering player)) x Integer_i) + Integer_k)]
          • -------- Play sound when player click on hero icon --------
          • Sound - Play UGHPS_Sound[((Integer_i x (Player number of (Triggering player))) + Integer_k)] at 100.00% volume, attached to (Triggering unit)
          • -------- Let's remove all text, create new one and store it to variables once again. --------
          • For each (Integer A) from 1 to 11, do (Actions)
            • Loop - Actions
              • Floating Text - Destroy UGHPS_FT[(Integer A)]
              • Floating Text - Create floating text that reads UGHPS_StringAttributes[(((Player number of (Triggering player)) x Integer_i) + (Integer_k + (Integer A)))] at UGHPS_HeroStats[(((Player number of (Triggering player)) x Integer_i) + ((Integer A) + 1))] with Z offset 0.00, using font size 8.00, color (100.00%, 100.00%, 100.00%), and 0.00% transparency
              • Set UGHPS_FT[(Integer A)] = (Last created floating text)
          • Wait 0.00 seconds
          • Trigger - Turn on (This trigger)
          • Skip remaining actions
        • Else - Actions
      • -------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --------
      • -------- Ranger --------
      • -------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • Or - Any (Conditions) are true
            • Conditions
              • (Triggering unit) Equal to Click 0003 <gen>
              • (Triggering unit) Equal to Click 0010 <gen>
        • Then - Actions
          • -------- Hero number --------
          • -------- WARRNING: 60 is integer_k value from setup trigger, we used 20 as multiple there (20 for 1st hero, 40 for 2nd 60 for 3rd) --------
          • Set Integer_k = 60
          • -------- integer_h is variable that define hero, unneeded really but it makes trigger action below more eye kindly. --------
          • Set Integer_h = ((Integer_i x (Player number of (Triggering player))) + Integer_k)
          • -------- Location variable that use position of created unit, used for cleaning leaks :) --------
          • Set point_p = (Position of (Triggering unit))
          • -------- We create effect on hero icon (variable point_p) --------
          • Special Effect - Create a special effect at point_p using Abilities\Spells\Human\HolyBolt\HolyBoltSpecialArt.mdl
          • -------- We destroy same effect to clean leak. --------
          • Special Effect - Destroy (Last created special effect)
          • -------- We destroy point_p to clean leaks. --------
          • Custom script: call RemoveLocation ( udg_point_p)
          • For each (Integer A) from 1 to 3, do (Actions)
            • Loop - Actions
              • -------- WARRNING: 20 is integer_k value from setup trigger, we used 20 as multiple there (20 for 1st hero, 40 for 2nd 60 for 3rd) --------
              • -------- We hide all hero destructibles shown to player --------
              • Destructible - Hide UGHPS_HeroModel[(((Player number of (Triggering player)) x Integer_i) + (20 x (Integer A)))]
          • -------- Now only show right one :) --------
          • Destructible - Show UGHPS_HeroModel[(((Player number of (Triggering player)) x Integer_i) + Integer_k)]
          • -------- Play sound when player click on hero icon --------
          • Sound - Play UGHPS_Sound[((Integer_i x (Player number of (Triggering player))) + Integer_k)] at 100.00% volume, attached to (Triggering unit)
          • -------- Let's remove all text, create new one and store it to variables once again. --------
          • For each (Integer A) from 1 to 11, do (Actions)
            • Loop - Actions
              • Floating Text - Destroy UGHPS_FT[(Integer A)]
              • Floating Text - Create floating text that reads UGHPS_StringAttributes[(((Player number of (Triggering player)) x Integer_i) + (Integer_k + (Integer A)))] at UGHPS_HeroStats[(((Player number of (Triggering player)) x Integer_i) + ((Integer A) + 1))] with Z offset 0.00, using font size 8.00, color (100.00%, 100.00%, 100.00%), and 0.00% transparency
              • Set UGHPS_FT[(Integer A)] = (Last created floating text)
          • Wait 0.00 seconds
          • Trigger - Turn on (This trigger)
          • Skip remaining actions
        • Else - Actions
      • -------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --------
      • -------- OK Button --------
      • -------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • And - All (Conditions) are true
            • Conditions
              • Or - Any (Conditions) are true
                • Conditions
                  • (Triggering unit) Equal to Click 0022 <gen>
                  • (Triggering unit) Equal to Click 0007 <gen>
              • Integer_h Not equal to 0
        • Then - Actions
          • Set UGHPS_CameraCheck[(Player number of (Triggering player))] = False
          • Unit - Create 1 UGHPS_HERO_H[Integer_h] for (Triggering player) at UGHPS_HeroStats[(((Player number of (Triggering player)) x Integer_i) + 12)] facing Default building facing degrees
          • -------- Let's display message to enemy players --------
          • Set UGHPS_TempForce = (All enemies of (Triggering player))
          • Quest - Display to UGHPS_TempForce the Hint message: (TextColor[(Player number of (Triggering player))] + ((Name of (Triggering player)) + (|r has picked + (Name of (Last created unit)))))
          • Custom script: call DestroyForce (udg_UGHPS_TempForce)
          • -------- Play sound when player select hero --------
          • Sound - Play UGHPS_Sound[((Integer_i x (Player number of (Triggering player))) + (Integer_k + 1))] at 100.00% volume, attached to (Last created unit)
          • -------- Location variable that use position of created unit, used for cleaning leaks :) --------
          • Set point_p = (Position of (Last created unit))
          • Camera - Pan camera for (Triggering player) to point_p over 0.00 seconds
          • Wait 0.00 seconds
          • -------- We create effect on hero spawn location (variable point_p) --------
          • Special Effect - Create a special effect at point_p using Abilities\Spells\Human\Resurrect\ResurrectTarget.mdl
          • -------- We destroy same effect to clean leak. --------
          • Special Effect - Destroy (Last created special effect)
          • Camera - Reset camera for (Triggering player) to standard game-view over 0.00 seconds
          • -------- We destroy point_p to clean leaks. --------
          • Custom script: call RemoveLocation ( udg_point_p)
          • Wait 0.00 seconds
          • Trigger - Turn on (This trigger)
          • Skip remaining actions
        • Else - Actions
      • -------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --------
      • -------- Random Button --------
      • -------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • Or - Any (Conditions) are true
            • Conditions
              • (Triggering unit) Equal to Click 0002 <gen>
              • (Triggering unit) Equal to Click 0006 <gen>
        • Then - Actions
          • Set UGHPS_CameraCheck[(Player number of (Triggering player))] = False
          • Set Integer_h = ((Integer_i x (Player number of (Triggering player))) + (20 x (Random integer number between 1 and 3)))
          • Unit - Create 1 UGHPS_HERO_H[Integer_h] for (Triggering player) at UGHPS_HeroStats[(((Player number of (Triggering player)) x Integer_i) + 12)] facing Default building facing degrees
          • -------- Let's display message to enemy players --------
          • Set UGHPS_TempForce = (All enemies of (Triggering player))
          • Quest - Display to UGHPS_TempForce the Hint message: (TextColor[(Player number of (Triggering player))] + ((Name of (Triggering player)) + (|r has randomed + (Name of (Last created unit)))))
          • Custom script: call DestroyForce (udg_UGHPS_TempForce)
          • -------- Play sound when player select hero --------
          • Sound - Play UGHPS_Sound[Integer_h] at 100.00% volume, attached to (Last created unit)
          • -------- Location variable that use position of created unit, used for cleaning leaks :) --------
          • Set point_p = (Position of (Last created unit))
          • Camera - Pan camera for (Triggering player) to point_p over 0.00 seconds
          • Wait 0.00 seconds
          • -------- We create effect on hero spawn location (variable point_p) --------
          • Special Effect - Create a special effect at point_p using Abilities\Spells\Human\Resurrect\ResurrectTarget.mdl
          • -------- We destroy same effect to clean leak. --------
          • Special Effect - Destroy (Last created special effect)
          • Camera - Reset camera for (Triggering player) to standard game-view over 0.00 seconds
          • -------- We destroy point_p to clean leaks. --------
          • Custom script: call RemoveLocation ( udg_point_p)
          • Wait 0.00 seconds
          • Trigger - Turn on (This trigger)
          • Skip remaining actions
        • Else - Actions

Please if you find any errors or bugs report them to me so I can fix them
Change Log

Version 1.0
- Uploaded Spell
Version 1.1
- Added blockade to stop players from creating 2 or more heroes with fast clicking (Thanks to Maker)
- Fixed leak trigger action
- Optimized main trigger a little
- Added more documentation and description (Loading Screen as well)
Version 1.2
- Optimized triggers to max
- New interface design
- Easier to understand/edit/import/use
- Smaller size
Version 1.2b
- Optimized camera triggers (Maker)
Version 2.0 Ultimate
- First MPI version
- New hero stats display
- Removed Spells (for now)
Version 2.1 Ultimate
- Fixed/Optimized triggers
- More comments
Version 2.2 Ultimate
- Added colored text and messages displayed to enemy players when you pick or random your hero
- Added sound when you select or pick hero
- Added Settings button where you can pick 1 between 4 different interfaces
- New system look (Resized models, edited text etc etc)
Version 2.3 Ultimate
Fixed/Improved:
- When pressing ESC, the camera pans to the hero selection screen. Make the camera apply instantly. You can also use fade out, apply cam, fade in.
- One can get two heroes if the OK button is clicked rapidly.
- If one clicks OK before a hero is selected, the camera will pan to the center of the map. This situation is not handled with triggers.
- UGHPS camera timers are not initialized automatically for other indexes than 0 and 1. That means it won't work for player 2. You need to create the other timers yourself.
- You should add the events of UGHPS Camera x trigger in the setup trigger.
- UGHPS Buttons does the checks for the rest of the unit types even if it has found a match already. Use skip remaining actions or put the if/then/elses inside each other.
- P2 hero models aren't initially hidden.
- UGHPS Setup has two events, only use Map Initialization.
- Add importing instructions into the map.

Keywords:
Advanced, GUI, Hero, Pick, System, -Kobas-, Interface, Triggers
Contents

Advanced GUI Hero Pick System (Map)

Reviews
Approved. Great system. Improvements: -The units sold triggers should be turned off when there are no players in the screen -Set the number of players into a variable at map initiliazation, use the variable in UGHPS Camera triggers -Perhaps...
Level 13
Joined
Jun 9, 2009
Messages
1,129
First it looks epic at pictures, i'd like to see it in DotA, seconds it looks a bit complicated and that makes me like it even more :)
second what is that at upper right point, it's cutted and it's on both pictures
UI looks epic and it fits to multiboard :) but sadly you didn't do anything of it? are you ?
 
Do this system works in multiplayer?
looks awsome... ;)
You need to copy whole system interface few times (1 for each player).
Triggers are MUI so just add unit for right icons into right conditions.
Also you will need to edit camera and progress trigger.

I will do it myself in few days so you can wait as well.
 
Level 5
Joined
Aug 8, 2008
Messages
113
The text works but the tavern switching doesn't(solved ) also the text shows scourge Tavern and Sentinel at same time (for kob)

  • Button
    • Events
    • Conditions
      • (Unit-type of (Triggering unit)) Equal to Button (Unit)
    • Actions
      • Selection - Clear selection for (Triggering player)
      • Trigger - Turn off (This trigger)
      • Floating Text - Destroy (Last created floating text)
      • For each (Integer z) from Scourge_Min to Sentinel_Max, do (Actions)
        • Loop - Actions
          • Destructible - Hide Tavern_icon[z]
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • Taverns_Type Equal to True
        • Then - Actions
          • For each (Integer z) from Scourge_Min to Scourge_Max, do (Actions)
            • Loop - Actions
              • Destructible - Show Tavern_icon[z]
          • Set Taverns_Type = False
          • Trigger - Turn on (This trigger)
        • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • Taverns_Type Equal to False
            • Then - Actions
              • For each (Integer z) from Sentinel_Min to Sentinel_Max, do (Actions)
                • Loop - Actions
                  • Destructible - Show Tavern_icon[z]
              • Set Taverns_Type = True
              • Trigger - Turn on (This trigger)
            • Else - Actions
  • Initialization
    • Events
      • Map initialization
    • Conditions
    • Actions
      • Set pn_10 = (((Player number of (Triggering player)) x 13) + 0)
      • Set Scourge_Min = (pn_10 + 1)
      • Set Scourge_Max = (pn_10 + 6)
      • Set Sentinel_Min = (pn_10 + 7)
      • Set Sentinel_Max = (pn_10 + 12)
      • Set Tavern_icon[(pn_10 + 1)] = Tavern B1 0108 <gen>
      • Set Tavern_icon[(pn_10 + 2)] = Tavern B2 0109 <gen>
      • Set Tavern_icon[(pn_10 + 3)] = Tavern B3 0110 <gen>
      • Set Tavern_icon[(pn_10 + 4)] = Tavern B4 0111 <gen>
      • Set Tavern_icon[(pn_10 + 5)] = Tavern B5 0112 <gen>
      • Set Tavern_icon[(pn_10 + 6)] = Tavern B6 0113 <gen>
      • Visibility - Create an initially Enabled visibility modifier for Player 1 (Red) emitting Visibility across Region 000 <gen>
      • Set Tavern_icon[(pn_10 + 7)] = Tavern A1 0055 <gen>
      • Set Tavern_icon[(pn_10 + 8)] = Tavern A2 0103 <gen>
      • Set Tavern_icon[(pn_10 + 9)] = Tavern A3 0104 <gen>
      • Set Tavern_icon[(pn_10 + 10)] = Tavern A4 0105 <gen>
      • Set Tavern_icon[(pn_10 + 11)] = Tavern A5 0106 <gen>
      • Set Tavern_icon[(pn_10 + 12)] = Tavern A6 0107 <gen>
      • For each (Integer z) from Scourge_Min to Sentinel_Max, do (Actions)
        • Loop - Actions
          • Destructible - Hide Tavern_icon[(pn_10 + z)]
      • For each (Integer z) from 1 to 13, do (Actions)
        • Loop - Actions
          • Set mui[z] = 1
          • Trigger - Add to Activate <gen> the event (Player - (Player(z)) skips a cinematic sequence)
          • Trigger - Add to Button <gen> the event (Player - (Player(z)) Selects a unit)
 
Last edited:
Level 5
Joined
Aug 8, 2008
Messages
113
hold on let me see.

OK I was trying to figure out why they moved away I readded the old buttons so alls you have to do is look at the interface(outside of the map) and test the map to see the issue I was having press -nss during the game to activate the interface. new map is attached to post.
 

Attachments

  • testmap.w3x
    186 KB · Views: 65
Level 5
Joined
Aug 8, 2008
Messages
113
i keep running into problems so would you mind coding my test map.... if you want me to upload all the destructibles i will
 
Level 5
Joined
Aug 8, 2008
Messages
113
basically it doesn't alternate between sentinel and scourge taverns anymore and the one button is disabled for some reason and the one button that i fixed to test out if it would disable doesn't disable.
 

Attachments

  • testmap.w3x
    186.1 KB · Views: 48
Here you go, I edited it a little, as you can see I just gave you base idea what to do, when player click on tavern it will change value of integer variable named "A".
First tavern change it to 1, 2nd into 2 etc etc.
All hero icons that are located on same location use same button.
When player click on button if then else function check value of integer variable "A".
If value equal to 1 hero located on 1st place from tavern 1 will be showed (just like on test map).

You can go on now edit variable values, add more buttons hero models and icons.

But I suggest you to wait until I create fully working up to 12 player supported version. (You can always try yourself as well :))
 

Attachments

  • AGHPS 1.2.w3x
    114.2 KB · Views: 42
Level 37
Joined
Mar 6, 2006
Messages
9,240
You could do this with the camera, so when a player tries to adjust it, it ignores the commands. Since now it jerks a bit:

Create another cam, position it to the same spot as the interface cam. Make distance between very small, but not 0.


  • AGHPS Camera
    • Events
      • Time - Every 0.10 seconds of game time
    • Conditions
    • Actions
      • For each (Integer i) from 1 to 5, do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • AGHPS_B_SystemCheck[i] Equal to True
            • Then - Actions
              • Countdown Timer - Start timer[i] as a One-shot timer that will expire in 0.00 seconds
            • Else - Actions
  • Untitled Trigger 002
    • Events
      • Time - timer[1] expires
    • Conditions
    • Actions
      • For each (Integer i) from 1 to 5, do (Actions)
        • Loop - Actions
          • Custom script: if GetExpiredTimer() == udg_timer[udg_i] then
          • Camera - Apply Cam2 <gen> for (Player(i)) over 10.00 seconds
          • Skip remaining actions
          • Custom script: endif
And do this in the process trigger:
  • Camera - Apply AGHPS_CO for (Triggering player) over 0.00 seconds


http://www.hiveworkshop.com/forums/pastebin.php?id=e63ho1
 
Level 4
Joined
Apr 24, 2009
Messages
115
It will come later after I finish my exams.
Still this one works perfectly fine for 1 player.

Ok, I will play around with this one and try to get it to work with mui, I need to practice my trigger skills anyway. Any simple advice getting it to work?
 
Level 15
Joined
Jul 9, 2008
Messages
1,552
deffently a nice system cant wait for the muilti player version

only thing i dislike is that the floating text is blury and that the skills is in the same location as the heros u can select what happends when u got a shit load of heros that cover like the whole thing or half of (or down past the first skill info). but this can all be fixxed with customization and looking at the triggers it all seems streat forward and easy to customize.

4.5/5
 
Level 9
Joined
Mar 31, 2011
Messages
496
what triggers do you use to show an hero icon on the ground? can't find some on tutorials.
 
Level 9
Joined
Mar 31, 2011
Messages
496
oh...
just a question,

the button appears but the ziggurat button making the hero icon blocked.

how to make that appear? and hide ziggurat?
 
Last edited:
Level 15
Joined
Oct 18, 2008
Messages
1,588
I remade the triggers for my map to be MPI feel free to use

Pasetebin -here it is, u can use if u want. I removed the skills becuase in my map they doesn't fit (30-50 skills per hero... well ofc they doesn't fit :D) Made new types of bars... if some1 uses it in his map pls Write my lovely little name in the credits thanks! :D

BTW named it 2.0 because with full multiplayer support it could be called a brand new version :D And I recoded the entire button trigger because the original script wasn't automatical enough... Now it just takes the new buttons and heroes, you don't have to copy the entire button selection part :) Checked in multiplayer and for Illidian's sake it didn't desync :D Oh and I made the position of the texts tobe relative to each other, so you only have to position hero name... Advanced users can change easily and it'll make ppl with less knowledge to import it at ease (it was very hard to import it into a different map with different position :D It took me like 2 hours to set the coordinates precisely xD)
 
Last edited:
Top