1. Are you planning to upload your awesome spell or system to Hive? Please review the rules here.
    Dismiss Notice
  2. Updated Resource Submission Rules: All model & skin resource submissions must now include an in-game screenshot. This is to help speed up the moderation process and to show how the model and/or texture looks like from the in-game camera.
    Dismiss Notice
  3. DID YOU KNOW - That you can unlock new rank icons by posting on the forums or winning contests? Click here to customize your rank or read our User Rank Policy to see a list of ranks that you can unlock. Have you won a contest and still havn't received your rank award? Then please contact the administration.
    Dismiss Notice
  4. The poll for Hive's 12th Concept Art Contest is up! Go cast your vote for your favourite genie!
    Dismiss Notice
  5. Travel to distant realms and encounter scenes unknown to the common folk. The Greatest of Adventures is upon us with the 8th Cinematic Contest. Join in on a fun ride.
    Dismiss Notice
  6. The 18th Icon Contest is ON! Choose any ingame unit and give him/her Hero abilities. Good luck to all.
    Dismiss Notice
  7. Contestants are to create a scene set in the Stone Age. Come and see what you can come up with. We wish you the best of luck!
    Dismiss Notice
  8. Colour outside the lines! Techtree Contest #13 is a go. The contest is optionally paired.
    Dismiss Notice
  9. Greetings cerebrates, our Swarm needs new spawners that will have numerous children. Join the HIVE's 31st Modeling Contest - Spawners and Spawned! The contest is optionally paired.
    Dismiss Notice
  10. 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

UHPS 2.0.0.4 (vJass).w3x
Variables
Ultimate Hero Pick System
SystemCode
This Map Only
Temp Trigger
Enter map-specific custom script code below. This text will be included in the map script after variables are declared and before any trigger code.

		
Name Type Is Array Initial Value
TxtColor string Yes
UHPSButton unit Yes
UHPSCamera camerasetup No
UHPSCameraTimer timer Yes
UHPSHeroModel destructable Yes
UHPSHeroType integer Yes
UHPSMaxHero integer No 6
UHPSPickedHero integer Yes
UHPSSFX1 string Yes
UHPSSFX2 string Yes
UHPSSound1 sound Yes
UHPSSound2 sound Yes
UHPSSpawnX real Yes
UHPSSpawnY real Yes
UHPSStatsString string Yes
UHPSStatsX real Yes
UHPSStatsY real Yes
UHPSTxtTag texttag Yes
UHPSUnitGroup group No
UHPSystemBoolean boolean Yes
//TESH.scrollpos=0
//TESH.alwaysfold=0
/************************************************************************
*         Ultimate Hero Pick System
*           version: 2.0.0.4 vJass
*
* Created by: -Kobas-
* Credits: ap0calypse (custom interface models)
*          maghteridon96 (code optimization)
*          Maker (code optimization)
*          PurgeandFire111 (http://www.hiveworkshop.com/forums/jass-resources-412/system-track-205760/)
************************************************************************/


library UltimateHeroPickSystem initializer Init
   
    globals
    /* ---------- core system globals ---------- */
        private hashtable          HASH               = InitHashtable()
        private trigger            TRIG_CLICK_HERO    = CreateTrigger()
        private trigger            TRIG_CLICK_OK      = CreateTrigger()
        private trigger            TRIG_CLICK_RND     = CreateTrigger()
        private trigger            TRIG_RUN_SYSTEM    = CreateTrigger()
        private timer              CAMERA_TIMER       = CreateTimer()
        private camerasetup        CAMERA             = null
       
        /* Special Effect string shown when we click on hero icon */
        private string             SFX_CLICK          = "Abilities\\Spells\\Human\\HolyBolt\\HolyBoltSpecialArt.mdl"
        /* Special Effect string shown when we create hero unit */
        private string             SFX_PICK           = "Abilities\\Spells\\Other\\Awaken\\Awaken.mdl"
        /* If set to TRUE it will allow players to pick more than 1 hero */
        private boolean            ALLOW_MULTI_PICK   = false
        /* Number of heroes we can pick in case ALLOW_MULTI_PICK = false */
        private integer            ALLOWED_HERO_NUMBER = 1
        /* Show selection to Enemies */
        private boolean            SHOW_MSG_E          = true
        /* Show selection to Allies */
        private boolean            SHOW_MSG_A          = true
        /* Msg shown when picked */
        private string             P_PICK             = " has choosen "
        /* Msg shown when randomed */
        private string             P_RND              = " has randomed "
       
        private integer      array HEROES_CREATED
        private boolean      array SYSTEM_ENABLED
        private real         array HERO_SPAWN_X
        private real         array HERO_SPAWN_Y
        private integer      array HERO_SELECTED
        private string       array COLOR
       
    /* ---------- end core system globals ---------- */
       
    /* ---------- hero ---------- */
        private integer array      HERO_ID
        private integer            HERO_COUNTER   = 0
           
        private destructable array HERO_MODEL
    /* ---------- end hero ---------- */
       
    /* ---------- stats ---------- */
        private integer      array STATS_ID
        private integer            STATS_COUNTER  = 0
           
        private texttag      array TT_NAME
        private real         array TT_NAME_X
        private real         array TT_NAME_Y
           
        private texttag      array TT_VALUE
        private real         array TT_VALUE_X
        private real         array TT_VALUE_Y
       
        private constant integer STAT_HERONAME      = 1
        private constant integer STAT_HEROCLASS     = 2
        private constant integer STAT_ATTRIBUTES    = 3
        private constant integer STAT_AGILITY       = 4
        private constant integer STAT_INTELLIGENCE  = 5
        private constant integer STAT_STRENGTH      = 6
        private constant integer STAT_STATS         = 7
        private constant integer STAT_ATTACKSPEED   = 8
        private constant integer STAT_ATTACKRANGE   = 9
        private constant integer STAT_ATTACKDAMAGE  = 10
        private constant integer STAT_ARMOR         = 11
        private constant integer STAT_MOVEMENTSPEED = 12
        private constant integer STAT_DESCRIPTION   = 13
    /* ---------- end stats ---------- */
    endglobals
   
    private function GetRealSize takes real size returns real
        return size * 0.023 / 10
    endfunction
   
    function ShowDest takes nothing returns nothing
        call ShowDestructable(GetEnumDestructable(), true)
    endfunction
   
    function HideDest takes nothing returns nothing
        call ShowDestructable(GetEnumDestructable(), false)
    endfunction

    private function ShowSystem takes player p, boolean flag returns nothing
        local integer i = 0
        if GetLocalPlayer() == p then
            if flag then
                call EnumDestructablesInRect(gg_rct_SystemRegion, null, function ShowDest)
                loop
                    exitwhen i > STATS_COUNTER
                    call SetTextTagVisibility(TT_NAME[STATS_ID[i]], true)
                    call SetTextTagVisibility(TT_VALUE[STATS_ID[i]], true)
                    call SetTextTagText(TT_VALUE[STATS_ID[i]], " ", 25.00)
                    set i = i + 1
                endloop
                set i = 0
                loop
                    exitwhen i > HERO_COUNTER
                    call ShowDestructable(HERO_MODEL[HERO_ID[i]], false)
                    set i = i + 1
                endloop
            else
                call EnumDestructablesInRect(gg_rct_SystemRegion, null, function HideDest)
                loop
                    exitwhen i > STATS_COUNTER
                    call SetTextTagVisibility(TT_NAME[STATS_ID[i]], false)
                    call SetTextTagVisibility(TT_VALUE[STATS_ID[i]], false)
                    set i = i + 1
                endloop
            endif
        endif
    endfunction
   
    private function SelectHero takes nothing returns nothing
        local integer fake_id = GetHandleId(GetTriggeringTrackable())
        local integer id = LoadInteger(HASH, fake_id, 0)
        local integer i = 0
        local integer counter = 0
        local real x = LoadReal(HASH, fake_id, 1)
        local real y = LoadReal(HASH, fake_id, 2)
        local string s = ""
       
        loop
            exitwhen counter >12
            if SYSTEM_ENABLED[counter] then
                if GetLocalPlayer() == Player(counter) then
                    set HERO_SELECTED[counter] = id
                    set s = SFX_CLICK
   
                    loop
                        exitwhen i > HERO_COUNTER
                        call ShowDestructable(HERO_MODEL[HERO_ID[i]], false)
                        set i = i + 1
                    endloop
                    call ShowDestructable(HERO_MODEL[id], true)
                   
                    set i = 0
                    loop
                        exitwhen i > STATS_COUNTER
                        call SetTextTagVisibility(TT_VALUE[STATS_ID[i]], true)
                        call SetTextTagText(TT_VALUE[STATS_ID[i]], LoadStr(HASH, id, STATS_ID[i]), GetRealSize(10))
                        set i = i + 1
                    endloop
                endif
                call DestroyEffect(AddSpecialEffect(s,x,y))
            endif
            set counter = counter + 1
        endloop
    endfunction
   
    private function RegisterTrack takes player p, integer id, real x, real y, trigger trig returns nothing
        local trackable tr
        local integer hid
        local string s
        if GetLocalPlayer() == p then
            set s = "war3mapImported\\128x128Track.mdx"
        else
            set s = ""
        endif
        set tr = CreateTrackable(s, x, y, 0.00)
        set hid = GetHandleId(tr)
       
        call SaveInteger(     HASH, hid, 0, id)
        call SaveReal(        HASH, hid, 1, x )
        call SaveReal(        HASH, hid, 2, y )
        call SavePlayerHandle(HASH, hid, 3, p )
       
        call TriggerRegisterTrackableHitEvent(trig, tr)
        set tr = null
    endfunction
   
    private function RegisterHeroStat takes integer hid, integer sid, string value returns nothing
        call SaveStr(HASH, hid, sid, value)
    endfunction
   
    private function RegisterHeroUnit takes integer hid, integer uid returns nothing
        call SaveInteger(HASH, hid, -666, uid)
    endfunction
   
    private function RegisterHero takes integer id, real x, real y, destructable model, integer uid returns nothing
        local integer i = 0
       
        debug if HERO_MODEL[id] != null then
            debug call BJDebugMsg("UltimateHeroPickSystem_RegisterHero [id is already used!]")
            debug return
        debug endif
       
        set HERO_ID[HERO_COUNTER] = id
        set HERO_COUNTER = HERO_COUNTER + 1
       
        set HERO_MODEL[id] = model
       
        loop
            exitwhen i>12
            call RegisterTrack(Player(i), id, x, y, TRIG_CLICK_HERO)
            set i = i + 1
        endloop
        call RegisterHeroUnit(id, uid)
       
        call ShowDestructable(model, false)
    endfunction
   
    private function RegisterStat takes integer id, string name, real x1, real y1, real size1, string value, real x2, real y2, real size2 returns nothing
        debug if TT_NAME[id] != null or TT_VALUE[id] != null then
            debug call BJDebugMsg("UltimateHeroPickSystem_RegisterStat [id is already used!]")
            debug return
        debug endif
       
        set STATS_ID[STATS_COUNTER] = id
        set STATS_COUNTER = STATS_COUNTER + 1

        if name != "" then
            set TT_NAME[id] = CreateTextTag()
            set TT_NAME_X[id] = x1
            set TT_NAME_Y[id] = y1
            call SetTextTagPos(TT_NAME[id], x1, y1, 25.00)
            call SetTextTagText(TT_NAME[id], name, GetRealSize(size1))
            call SetTextTagVisibility(TT_NAME[id], false)
        endif
         
        if value != "" then
            set TT_VALUE[id] = CreateTextTag()
            set TT_VALUE_X[id] = x2
            set TT_VALUE_Y[id] = y2
            call SetTextTagPos(TT_VALUE[id], x2, y2, 25.00)
            call SetTextTagText(TT_VALUE[id], value, GetRealSize(size2))
            call SetTextTagVisibility(TT_VALUE[id], false)
        endif
    endfunction
   
    private function PanCamera takes nothing returns nothing
        local integer i = 0
        loop
            exitwhen i > 12
            if SYSTEM_ENABLED[i] then
               
                if GetLocalPlayer() == Player(i) then
                    call CameraSetupApply(CAMERA, true, true)
                endif
               
            endif
            set i = i + 1
        endloop
    endfunction
   
    private function RunSystem takes nothing returns nothing
        local integer id = GetPlayerId(GetTriggerPlayer())
        if HEROES_CREATED[id] >= ALLOWED_HERO_NUMBER then
            if ALLOW_MULTI_PICK then
                set SYSTEM_ENABLED[id] = true
                call ShowSystem(GetTriggerPlayer(), true)
                call TimerStart(CAMERA_TIMER, 0.03, true, function PanCamera)
            endif
        else
            set SYSTEM_ENABLED[id] = true
            call ShowSystem(GetTriggerPlayer(), true)
            call TimerStart(CAMERA_TIMER, 0.03, true, function PanCamera)
        endif
    endfunction
   
    private function CreateHero takes string hs, player p, integer id returns nothing
        local integer pid = GetPlayerId(p)
        local integer i = 0
        local real x = HERO_SPAWN_X[pid]
        local real y = HERO_SPAWN_Y[pid]
        local string s = ""
        local unit u = null
       
        if HERO_SELECTED[pid] == 0 then
            return
        endif
       
        if HEROES_CREATED[pid] < ALLOWED_HERO_NUMBER then
            set u = CreateUnit(p, LoadInteger(HASH, id, -666), x, y, 0.00)
            set HEROES_CREATED[pid] = HEROES_CREATED[pid] + 1
        endif

        if GetLocalPlayer() == p then
            call ResetToGameCamera(0.00)
            call PanCameraToTimed(x, y, 0.00)
            set s = SFX_PICK
            call SelectUnit(u, true)
        endif
       
        call DestroyEffect(AddSpecialEffect(s,x,y))
        set HERO_SELECTED[pid] = 0
        set SYSTEM_ENABLED[pid] = false

        loop
            exitwhen i > 12
               
            if IsPlayerEnemy(p, Player(i)) and SHOW_MSG_E  then
                call DisplayTimedTextToPlayer(Player(i), 0,0, 5, COLOR[i] + GetPlayerName(p) + "|r" + hs + GetUnitName(u))
            endif
           
            if IsPlayerAlly(p, Player(i)) and SHOW_MSG_A then
                call DisplayTimedTextToPlayer(Player(i), 0,0, 5, COLOR[i] + GetPlayerName(p) + "|r" + hs + GetUnitName(u))
            endif
               
            set i = i + 1
        endloop
       
        call ShowSystem(p, false)
        set u = null
    endfunction
   
    private function HitOk takes nothing returns nothing
        call CreateHero(P_PICK, LoadPlayerHandle(HASH, GetHandleId(GetTriggeringTrackable()), 3), HERO_SELECTED[GetPlayerId(LoadPlayerHandle(HASH, GetHandleId(GetTriggeringTrackable()), 3))])
    endfunction
   
    private function HitRandom takes nothing returns nothing
        call CreateHero(P_RND, LoadPlayerHandle(HASH, GetHandleId(GetTriggeringTrackable()), 3), HERO_ID[GetRandomInt(0, HERO_COUNTER)])
    endfunction
   
    private function Init takes nothing returns nothing
        local integer i = 0
        loop
            exitwhen i > 12
            call TriggerRegisterPlayerEvent(TRIG_RUN_SYSTEM, Player(i), EVENT_PLAYER_END_CINEMATIC)
           
            call ShowSystem(Player(i), false)
            set HERO_SPAWN_X[i] = -1408.00 //X Coordinate, it's value is shown in WE bottom left corner
            set HERO_SPAWN_Y[i] = -1728.00 //Y Coordinate, it's value is shown in WE bottom left corner
           
            call RegisterTrack(Player(i), 666, -2048.00,  1536.00, TRIG_CLICK_OK)
            call RegisterTrack(Player(i), 999, -2560.00,  1536.00, TRIG_CLICK_RND)
           
            set i = i + 1
        endloop
        call TriggerAddAction(TRIG_RUN_SYSTEM, function RunSystem)
        call TriggerAddAction(TRIG_CLICK_HERO, function SelectHero)
        call TriggerAddAction(TRIG_CLICK_RND , function HitRandom)
        call TriggerAddAction(TRIG_CLICK_OK  , function HitOk)
       
        /* system camera */
        set CAMERA = gg_cam_CAMERA    
       
        /* register color codes */
        set COLOR[ 0] = "|c00FF0000" // Red Color Code
        set COLOR[ 1] = "|c000042FF" // Blue Color Code
        set COLOR[ 2] = "|c001CE6B9" // Teal Color Code
        set COLOR[ 3] = "|c00540081" // Purple Color Code
        set COLOR[ 4] = "|c00FFFC01" // Yellow Color Code
        set COLOR[ 5] = "|c00FEBA0E" // Orange Color Code
        set COLOR[ 6] = "|c0020C000" // Green Color Code
        set COLOR[ 7] = "|c00E55BB0" // Pink Color Code
        set COLOR[ 8] = "|c00959697" // Gray Color Code
        set COLOR[ 9] = "|c00FFFFBB" // Light Blue Color Code
        set COLOR[10] = "|c00FF00FF" // Dark Green Color Code
        set COLOR[11] = "|c004E2A04" // Brown Color Code
       
        /* register stats: id     name                n_x      n_y       n_s      value       v_x      v_y      v_s   */
        call RegisterStat( STAT_HERONAME      , "Hero Name:"       , -2592.00, 2368.00,  12.00, "/"        ,  -2304.00, 2368.00, 15.00)
        call RegisterStat( STAT_HEROCLASS     , "Hero Class:"      , -2592.00, 2304.00,  12.00, "/"        ,  -2304.00, 2304.00, 15.00)
       
        call RegisterStat( STAT_ATTRIBUTES    , "Attributes:"      , -2624.00, 2240.00,  12.00, ""         ,      0.00,    0.00,  0.00)
        call RegisterStat( STAT_AGILITY       , "- Agility"        , -2560.00, 2176.00,  10.00, "/"        ,  -2304.00, 2176.00, 10.00)
        call RegisterStat( STAT_INTELLIGENCE  , "- Intelligence"   , -2560.00, 2112.00,  10.00, "/"        ,  -2304.00, 2112.00, 10.00)
        call RegisterStat( STAT_STRENGTH      , "- Strength"       , -2560.00, 2048.00,  10.00, "/"        ,  -2304.00, 2048.00, 10.00)
       
        call RegisterStat( STAT_STATS         , "Stats:"           , -2624.00, 1984.00,  12.00, ""         ,      0.00,    0.00,  0.00)
        call RegisterStat( STAT_ATTACKSPEED   , "- Attack Speed"   , -2560.00, 1920.00,  10.00, "/"        ,  -2304.00, 1920.00, 10.00)
        call RegisterStat( STAT_ATTACKRANGE   , "- Attack Range"   , -2560.00, 1856.00,  10.00, "/"        ,  -2304.00, 1856.00, 10.00)
        call RegisterStat( STAT_ATTACKDAMAGE  , "- Attack Damage"  , -2560.00, 1792.00,  10.00, "/"        ,  -2304.00, 1792.00, 10.00)
        call RegisterStat( STAT_ARMOR         , "- Armor"          , -2560.00, 1728.00,  10.00, "/"        ,  -2304.00, 1728.00, 10.00)
        call RegisterStat( STAT_MOVEMENTSPEED , "- Movement Speed" , -2560.00, 1664.00,  10.00, "/"        ,  -2304.00, 1664.00, 10.00)
       
        call RegisterStat( STAT_DESCRIPTION   , "Description:"     , -1792.00, 1888.00,  12.00, "/"        ,  -1792.00, 1536.00, 10.00)
       
        /* register heroes: id   icon_x    icon_y      model        unit_raw_code  */
        call RegisterHero(  1, -3200.00 , 2432.00, gg_dest_B00D_1022, 'Hamg') // Archmage
        call RegisterHero(  2, -3072.00 , 2432.00, gg_dest_B00J_1299, 'Hblm') // Blood Mage
        call RegisterHero(  3, -2944.00 , 2432.00, gg_dest_B00C_1301, 'Hmkg') // Mountain King
        call RegisterHero(  4, -2816.00 , 2432.00, gg_dest_B00R_1302, 'Hpal') // Paladin
        call RegisterHero(  5, -3200.00 , 2304.00, gg_dest_B00U_1303, 'Obla') // Blademaster
        call RegisterHero(  6, -3072.00 , 2304.00, gg_dest_B00K_1304, 'Ofar') // Far Seer
        call RegisterHero(  7, -2944.00 , 2304.00, gg_dest_B009_1305, 'Oshd') // Shadow Hunter
        call RegisterHero(  8, -2816.00 , 2304.00, gg_dest_B00Q_1307, 'Oshd') // Tauren Chieftain
        call RegisterHero(  9, -3200.00 , 2176.00, gg_dest_B00T_1308, 'Ucrl') // Crypt Lord
        call RegisterHero( 10, -3072.00 , 2176.00, gg_dest_B00S_1309, 'Udea') // Death Knight
        call RegisterHero( 11, -2944.00 , 2176.00, gg_dest_B00P_1310, 'Udre') // Dreadlord
        call RegisterHero( 12, -2816.00 , 2176.00, gg_dest_B00G_1306, 'Ulic') // Lich
        call RegisterHero( 13, -3200.00 , 2048.00, gg_dest_B01H_1314, 'Edem') // Demon Hunter
        call RegisterHero( 14, -3072.00 , 2048.00, gg_dest_B01Y_1313, 'Ekee') // Keeper of the Grove
        call RegisterHero( 15, -2944.00 , 2048.00, gg_dest_B01Z_1312, 'Emoo') // Pristress of the Moon
        call RegisterHero( 16, -2816.00 , 2048.00, gg_dest_B020_1311, 'Ewar') // Warden
       
        /* register hero stat: hero_id, stat_id, stat_value */
        call RegisterHeroStat( 1, STAT_HERONAME      , "|cffc3dbffTenn Flamecaster")
        call RegisterHeroStat( 1, STAT_HEROCLASS     , "|cffc3dbffArchmage")
        call RegisterHeroStat( 1, STAT_AGILITY       , "|cffc3dbff17 + 1.00")
        call RegisterHeroStat( 1, STAT_INTELLIGENCE  , "|cffffcc0019 + 3.20|r")
        call RegisterHeroStat( 1, STAT_STRENGTH      , "|cffc3dbff14 + 1.80")
        call RegisterHeroStat( 1, STAT_ATTACKSPEED   , "|cffc3dbff2.13")
        call RegisterHeroStat( 1, STAT_ATTACKRANGE   , "|cffc3dbff600.00")
        call RegisterHeroStat( 1, STAT_ATTACKDAMAGE  , "|cffc3dbff21 - 27 |cffffcc00(Hero)")
        call RegisterHeroStat( 1, STAT_ARMOR         , "|cffc3dbff3 |cffffcc00(Hero)")
        call RegisterHeroStat( 1, STAT_MOVEMENTSPEED , "|cffc3dbff320.00")
        call RegisterHeroStat( 1, STAT_DESCRIPTION   , "|cffc3dbffMystical Hero, adept at ranged assaults. Can learn Blizzard, Summon Water Elemental, Brilliance Aura and Mass Teleport. |n|n|cffffcc00Attacks land and air units.|r")
       
        call RegisterHeroStat( 2, STAT_HERONAME      , "|cffc3dbffEldin Sunstrider")
        call RegisterHeroStat( 2, STAT_HEROCLASS     , "|cffc3dbffBlood Mage")
        call RegisterHeroStat( 2, STAT_AGILITY       , "|cffc3dbff14 + 1.00")
        call RegisterHeroStat( 2, STAT_INTELLIGENCE  , "|cffffcc0019 + 3.00|r")
        call RegisterHeroStat( 2, STAT_STRENGTH      , "|cffc3dbff18 + 2.00")
        call RegisterHeroStat( 2, STAT_ATTACKSPEED   , "|cffc3dbff2.13")
        call RegisterHeroStat( 2, STAT_ATTACKRANGE   , "|cffc3dbff600.00")
        call RegisterHeroStat( 2, STAT_ATTACKDAMAGE  , "|cffc3dbff21 - 27 |cffffcc00(Hero)")
        call RegisterHeroStat( 2, STAT_ARMOR         , "|cffc3dbff3 |cffffcc00(Hero)")
        call RegisterHeroStat( 2, STAT_MOVEMENTSPEED , "|cffc3dbff300.00")
        call RegisterHeroStat( 2, STAT_DESCRIPTION   , "|cffc3dbffMystical 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")
       
        call RegisterHeroStat( 3, STAT_HERONAME      , "|cffc3dbffBor Stonebreaker")
        call RegisterHeroStat( 3, STAT_HEROCLASS     , "|cffc3dbffMountain King")
        call RegisterHeroStat( 3, STAT_AGILITY       , "|cffc3dbff11 + 1.50")
        call RegisterHeroStat( 3, STAT_INTELLIGENCE  , "|cffc3dbff15 + 1.50|r")
        call RegisterHeroStat( 3, STAT_STRENGTH      , "|cffffcc0024 + 3.00")
        call RegisterHeroStat( 3, STAT_ATTACKSPEED   , "|cffc3dbff2.13")
        call RegisterHeroStat( 3, STAT_ATTACKRANGE   , "|cffc3dbff128.00 |cffffcc00(melee)")
        call RegisterHeroStat( 3, STAT_ATTACKDAMAGE  , "|cffc3dbff21 - 27 |cffffcc00(Hero)")
        call RegisterHeroStat( 3, STAT_ARMOR         , "|cffc3dbff3 |cffffcc00(Hero)")
        call RegisterHeroStat( 3, STAT_MOVEMENTSPEED , "|cffc3dbff270.00")
        call RegisterHeroStat( 3, STAT_DESCRIPTION   , "|cffc3dbffWarrior Hero, adept at offensive combat and disrupting enemy troops. Can learn Storm Bolt, Thunder Clap, Bash and Avatar. |n|n|cffffcc00Attacks land units.|r")
       
        call RegisterHeroStat( 4, STAT_HERONAME      , "|cffc3dbffGranis Darkhammer")
        call RegisterHeroStat( 4, STAT_HEROCLASS     , "|cffc3dbffPaladin")
        call RegisterHeroStat( 4, STAT_AGILITY       , "|cffc3dbff13 + 1.50")
        call RegisterHeroStat( 4, STAT_INTELLIGENCE  , "|cffc3dbff17 + 1.80|r")
        call RegisterHeroStat( 4, STAT_STRENGTH      , "|cffffcc0022 + 2.70")
        call RegisterHeroStat( 4, STAT_ATTACKSPEED   , "|cffc3dbff2.13")
        call RegisterHeroStat( 4, STAT_ATTACKRANGE   , "|cffc3dbff128.00 |cffffcc00(melee)")
        call RegisterHeroStat( 4, STAT_ATTACKDAMAGE  , "|cffc3dbff21 - 27 |cffffcc00(Hero)")
        call RegisterHeroStat( 4, STAT_ARMOR         , "|cffc3dbff3 |cffffcc00(Hero)")
        call RegisterHeroStat( 4, STAT_MOVEMENTSPEED , "|cffc3dbff270.00")
        call RegisterHeroStat( 4, STAT_DESCRIPTION   , "|cffc3dbffWarrior 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")
       
        call RegisterHeroStat( 5, STAT_HERONAME      , "|cffc3dbffTojara")
        call RegisterHeroStat( 5, STAT_HEROCLASS     , "|cffc3dbffBlademaster")
        call RegisterHeroStat( 5, STAT_AGILITY       , "|cffc3dbff23 + 1.75")
        call RegisterHeroStat( 5, STAT_INTELLIGENCE  , "|cffffcc0016 + 2.25|r")
        call RegisterHeroStat( 5, STAT_STRENGTH      , "|cffc3dbff18 + 2.00")
        call RegisterHeroStat( 5, STAT_ATTACKSPEED   , "|cffc3dbff2.13")
        call RegisterHeroStat( 5, STAT_ATTACKRANGE   , "|cffc3dbff128.00 |cffffcc00(melee)")
        call RegisterHeroStat( 5, STAT_ATTACKDAMAGE  , "|cffc3dbff21 - 27 |cffffcc00(Hero)")
        call RegisterHeroStat( 5, STAT_ARMOR         , "|cffc3dbff3 |cffffcc00(Hero)")
        call RegisterHeroStat( 5, STAT_MOVEMENTSPEED , "|cffc3dbff320.00")
        call RegisterHeroStat( 5, STAT_DESCRIPTION   , "|cffc3dbffCunning Hero, adept at quickly killing individual units and creating confusion among enemies. Can learn Mirror Image, Wind Walk, Critical Strike and Bladestorm. |n|n|cffffcc00Attacks land units.|r")
       
        call RegisterHeroStat( 6, STAT_HERONAME      , "|cffc3dbffGar'dal Grimsight")
        call RegisterHeroStat( 6, STAT_HEROCLASS     , "|cffc3dbffFar Seer")
        call RegisterHeroStat( 6, STAT_AGILITY       , "|cffc3dbff18 + 1.00")
        call RegisterHeroStat( 6, STAT_INTELLIGENCE  , "|cffffcc0019 + 3.00|r")
        call RegisterHeroStat( 6, STAT_STRENGTH      , "|cffc3dbff15 + 2.00")
        call RegisterHeroStat( 6, STAT_ATTACKSPEED   , "|cffc3dbff2.13")
        call RegisterHeroStat( 6, STAT_ATTACKRANGE   , "|cffc3dbff600.00")
        call RegisterHeroStat( 6, STAT_ATTACKDAMAGE  , "|cffc3dbff21 - 27 |cffffcc00(Hero)")
        call RegisterHeroStat( 6, STAT_ARMOR         , "|cffc3dbff3 |cffffcc00(Hero)")
        call RegisterHeroStat( 6, STAT_MOVEMENTSPEED , "|cffc3dbff320.00")
        call RegisterHeroStat( 6, STAT_DESCRIPTION   , "|cffc3dbffMystical Hero, effective at ranged attacks and scouting. Can learn Chain Lightning, Far Sight, Feral Spirit and Earthquake. |n|n|cffffcc00Attacks land and air units.|r")
       
        call RegisterHeroStat( 7, STAT_HERONAME      , "|cffc3dbffZul'kis")
        call RegisterHeroStat( 7, STAT_HEROCLASS     , "|cffc3dbffShadow Hunter")
        call RegisterHeroStat( 7, STAT_AGILITY       , "|cffffcc0017 + 1.00")
        call RegisterHeroStat( 7, STAT_INTELLIGENCE  , "|cffc3dbff19 + 3.20|r")
        call RegisterHeroStat( 7, STAT_STRENGTH      , "|cffc3dbff14 + 1.80")
        call RegisterHeroStat( 7, STAT_ATTACKSPEED   , "|cffc3dbff2.13")
        call RegisterHeroStat( 7, STAT_ATTACKRANGE   , "|cffc3dbff600.00")
        call RegisterHeroStat( 7, STAT_ATTACKDAMAGE  , "|cffc3dbff21 - 27 |cffffcc00(Hero)")
        call RegisterHeroStat( 7, STAT_ARMOR         , "|cffc3dbff3 |cffffcc00(Hero)")
        call RegisterHeroStat( 7, STAT_MOVEMENTSPEED , "|cffc3dbff320.00")
        call RegisterHeroStat( 7, STAT_DESCRIPTION   , "|cffc3dbffCunning Hero, adept at healing magics and voodoo curses. Can learn Healing Wave, Hex, Serpent Ward and Big Bad Voodoo. |n|n|cffffcc00Attacks land and air units.|r")
       
        call RegisterHeroStat( 8, STAT_HERONAME      , "|cffc3dbffMarn Thunderhorn")
        call RegisterHeroStat( 8, STAT_HEROCLASS     , "|cffc3dbffTauren Chieftain")
        call RegisterHeroStat( 8, STAT_AGILITY       , "|cffc3dbff17 + 1.00")
        call RegisterHeroStat( 8, STAT_INTELLIGENCE  , "|cffc3dbff19 + 3.20|r")
        call RegisterHeroStat( 8, STAT_STRENGTH      , "|cffffcc0014 + 1.80")
        call RegisterHeroStat( 8, STAT_ATTACKSPEED   , "|cffc3dbff2.13")
        call RegisterHeroStat( 8, STAT_ATTACKRANGE   , "|cffc3dbff128.00 |cffffcc00(melee)")
        call RegisterHeroStat( 8, STAT_ATTACKDAMAGE  , "|cffc3dbff21 - 27 |cffffcc00(Hero)")
        call RegisterHeroStat( 8, STAT_ARMOR         , "|cffc3dbff3 |cffffcc00(Hero)")
        call RegisterHeroStat( 8, STAT_MOVEMENTSPEED , "|cffc3dbff320.00")
        call RegisterHeroStat( 8, STAT_DESCRIPTION   , "|cffc3dbffWarrior Hero, exceptional at absorbing damage and melee combat. Can learn Shockwave, War Stomp, Endurance Aura and Reincarnation. |n|n|cffffcc00Attacks land units.|r")
       
        call RegisterHeroStat( 9, STAT_HERONAME      , "|cffc3dbffThebis-Ra")
        call RegisterHeroStat( 9, STAT_HEROCLASS     , "|cffc3dbffCrypt Lord")
        call RegisterHeroStat( 9, STAT_AGILITY       , "|cffffcc0017 + 1.00")
        call RegisterHeroStat( 9, STAT_INTELLIGENCE  , "|cffc3dbff19 + 3.20|r")
        call RegisterHeroStat( 9, STAT_STRENGTH      , "|cffc3dbff14 + 1.80")
        call RegisterHeroStat( 9, STAT_ATTACKSPEED   , "|cffc3dbff2.13")
        call RegisterHeroStat( 9, STAT_ATTACKRANGE   , "|cffc3dbff128.00 |cffffcc00(melee)")
        call RegisterHeroStat( 9, STAT_ATTACKDAMAGE  , "|cffc3dbff21 - 27 |cffffcc00(Hero)")
        call RegisterHeroStat( 9, STAT_ARMOR         , "|cffc3dbff3 |cffffcc00(Hero)")
        call RegisterHeroStat( 9, STAT_MOVEMENTSPEED , "|cffc3dbff320.00")
        call RegisterHeroStat( 9, STAT_DESCRIPTION   , "|cffc3dbffWarrior Hero, adept at summoning insect minions and crushing enemies. Can learn Impale, Spiked Carapace, Carrion Beetles and Locust Swarm. |n|n|cffffcc00Attacks land units.|r")
       
        call RegisterHeroStat(10, STAT_HERONAME      , "|cffc3dbffLord Nightsorrow")
        call RegisterHeroStat(10, STAT_HEROCLASS     , "|cffc3dbffDeath Knight")
        call RegisterHeroStat(10, STAT_AGILITY       , "|cffc3dbff17 + 1.00")
        call RegisterHeroStat(10, STAT_INTELLIGENCE  , "|cffc3dbff19 + 3.20|r")
        call RegisterHeroStat(10, STAT_STRENGTH      , "|cffffcc0014 + 1.80")
        call RegisterHeroStat(10, STAT_ATTACKSPEED   , "|cffc3dbff2.13")
        call RegisterHeroStat(10, STAT_ATTACKRANGE   , "|cffc3dbff128.00 |cffffcc00(melee)")
        call RegisterHeroStat(10, STAT_ATTACKDAMAGE  , "|cffc3dbff21 - 27 |cffffcc00(Hero)")
        call RegisterHeroStat(10, STAT_ARMOR         , "|cffc3dbff3 |cffffcc00(Hero)")
        call RegisterHeroStat(10, STAT_MOVEMENTSPEED , "|cffc3dbff320.00")
        call RegisterHeroStat(10, STAT_DESCRIPTION   , "|cffc3dbffWarrior Hero, evil counterpart to the Human Paladin. Can learn Death Coil, Death Pact, Unholy Aura, and Animate Dead. |n|n|cffffcc00Attacks land units.|r")
       
        call RegisterHeroStat(11, STAT_HERONAME      , "|cffc3dbffTerrordar")
        call RegisterHeroStat(11, STAT_HEROCLASS     , "|cffc3dbffDreadlord")
        call RegisterHeroStat(11, STAT_AGILITY       , "|cffc3dbff17 + 1.00")
        call RegisterHeroStat(11, STAT_INTELLIGENCE  , "|cffc3dbff19 + 3.20|r")
        call RegisterHeroStat(11, STAT_STRENGTH      , "|cffffcc0014 + 1.80")
        call RegisterHeroStat(11, STAT_ATTACKSPEED   , "|cffc3dbff2.13")
        call RegisterHeroStat(11, STAT_ATTACKRANGE   , "|cffc3dbff128.00 |cffffcc00(melee)")
        call RegisterHeroStat(11, STAT_ATTACKDAMAGE  , "|cffc3dbff21 - 27 |cffffcc00(Hero)")
        call RegisterHeroStat(11, STAT_ARMOR         , "|cffc3dbff3 |cffffcc00(Hero)")
        call RegisterHeroStat(11, STAT_MOVEMENTSPEED , "|cffc3dbff320.00")
        call RegisterHeroStat(11, STAT_DESCRIPTION   , "|cffc3dbffCunning Hero, adept at controlling combat. Can learn Carrion Swarm, Sleep, Vampiric Aura, and Inferno. |n|n|cffffcc00Attacks land units.|r")
       
        call RegisterHeroStat(12, STAT_HERONAME      , "|cffc3dbffOrdin Frostbane")
        call RegisterHeroStat(12, STAT_HEROCLASS     , "|cffc3dbffLich")
        call RegisterHeroStat(12, STAT_AGILITY       , "|cffc3dbff17 + 1.00")
        call RegisterHeroStat(12, STAT_INTELLIGENCE  , "|cffffcc0019 + 3.20|r")
        call RegisterHeroStat(12, STAT_STRENGTH      , "|cffc3dbff14 + 1.80")
        call RegisterHeroStat(12, STAT_ATTACKSPEED   , "|cffc3dbff2.13")
        call RegisterHeroStat(12, STAT_ATTACKRANGE   , "|cffc3dbff600.00")
        call RegisterHeroStat(12, STAT_ATTACKDAMAGE  , "|cffc3dbff21 - 27 |cffffcc00(Hero)")
        call RegisterHeroStat(12, STAT_ARMOR         , "|cffc3dbff3 |cffffcc00(Hero)")
        call RegisterHeroStat(12, STAT_MOVEMENTSPEED , "|cffc3dbff320.00")
        call RegisterHeroStat(12, STAT_DESCRIPTION   , "|cffc3dbffMystical Hero, particularly adept at cold magic. Can learn Frost Armor, Frost Nova, Dark Ritual and Death And Decay. |n|n|cffffcc00Attacks land and air units.|r")
       
        call RegisterHeroStat(13, STAT_HERONAME      , "|cffc3dbffShadowsong")
        call RegisterHeroStat(13, STAT_HEROCLASS     , "|cffc3dbffDemon Hunter")
        call RegisterHeroStat(13, STAT_AGILITY       , "|cffffcc0017 + 1.00")
        call RegisterHeroStat(13, STAT_INTELLIGENCE  , "|cffc3dbff19 + 3.20|r")
        call RegisterHeroStat(13, STAT_STRENGTH      , "|cffc3dbff14 + 1.80")
        call RegisterHeroStat(13, STAT_ATTACKSPEED   , "|cffc3dbff2.13")
        call RegisterHeroStat(13, STAT_ATTACKRANGE   , "|cffc3dbff128.00 |cffffcc00(melee)")
        call RegisterHeroStat(13, STAT_ATTACKDAMAGE  , "|cffc3dbff21 - 27 |cffffcc00(Hero)")
        call RegisterHeroStat(13, STAT_ARMOR         , "|cffc3dbff3 |cffffcc00(Hero)")
        call RegisterHeroStat(13, STAT_MOVEMENTSPEED , "|cffc3dbff320.00")
        call RegisterHeroStat(13, STAT_DESCRIPTION   , "|cffc3dbffCunning Hero, adept at maneuvering through battles. Can learn Immolation, Evasion, Mana Burn, and Metamorphosis. |n|n|cffffcc00Attacks land units.|r")
       
        call RegisterHeroStat(14, STAT_HERONAME      , "|cffc3dbffLarodar")
        call RegisterHeroStat(14, STAT_HEROCLASS     , "|cffc3dbffKeeper of the Grove")
        call RegisterHeroStat(14, STAT_AGILITY       , "|cffc3dbff17 + 1.00")
        call RegisterHeroStat(14, STAT_INTELLIGENCE  , "|cffffcc0019 + 3.20|r")
        call RegisterHeroStat(14, STAT_STRENGTH      , "|cffc3dbff14 + 1.80")
        call RegisterHeroStat(14, STAT_ATTACKSPEED   , "|cffc3dbff2.13")
        call RegisterHeroStat(14, STAT_ATTACKRANGE   , "|cffc3dbff600.00")
        call RegisterHeroStat(14, STAT_ATTACKDAMAGE  , "|cffc3dbff21 - 27 |cffffcc00(Hero)")
        call RegisterHeroStat(14, STAT_ARMOR         , "|cffc3dbff3 |cffffcc00(Hero)")
        call RegisterHeroStat(14, STAT_MOVEMENTSPEED , "|cffc3dbff320.00")
        call RegisterHeroStat(14, STAT_DESCRIPTION   , "|cffc3dbffMystical Hero, adept at using nature spells. Can learn Entangling Roots, Force of Nature, Thorns Aura, and Tranquility. |n|n|cffffcc00Attacks land and air units.|r")
       
        call RegisterHeroStat(15, STAT_HERONAME      , "|cffc3dbffKathris Starsong")
        call RegisterHeroStat(15, STAT_HEROCLASS     , "|cffc3dbffPristress of the Moon")
        call RegisterHeroStat(15, STAT_AGILITY       , "|cffffcc0017 + 1.00")
        call RegisterHeroStat(15, STAT_INTELLIGENCE  , "|cffc3dbff19 + 3.20|r")
        call RegisterHeroStat(15, STAT_STRENGTH      , "|cffc3dbff14 + 1.80")
        call RegisterHeroStat(15, STAT_ATTACKSPEED   , "|cffc3dbff2.13")
        call RegisterHeroStat(15, STAT_ATTACKRANGE   , "|cffc3dbff600.00")
        call RegisterHeroStat(15, STAT_ATTACKDAMAGE  , "|cffc3dbff21 - 27 |cffffcc00(Hero)")
        call RegisterHeroStat(15, STAT_ARMOR         , "|cffc3dbff3 |cffffcc00(Hero)")
        call RegisterHeroStat(15, STAT_MOVEMENTSPEED , "|cffc3dbff320.00")
        call RegisterHeroStat(15, STAT_DESCRIPTION   , "|cffc3dbffWarrior Hero, adept at enhancing ranged attacks and slaying enemies from afar. Can learn Scout, Searing Arrows, Trueshot Aura, and Starfall. |n|n|cffffcc00Attacks land and air units.|r")
       
        call RegisterHeroStat(16, STAT_HERONAME      , "|cffc3dbffAlsa Iron-cell")
        call RegisterHeroStat(16, STAT_HEROCLASS     , "|cffc3dbffWarden")
        call RegisterHeroStat(16, STAT_AGILITY       , "|cffffcc0017 + 1.00")
        call RegisterHeroStat(16, STAT_INTELLIGENCE  , "|cffc3dbff19 + 3.20|r")
        call RegisterHeroStat(16, STAT_STRENGTH      , "|cffc3dbff14 + 1.80")
        call RegisterHeroStat(16, STAT_ATTACKSPEED   , "|cffc3dbff2.13")
        call RegisterHeroStat(16, STAT_ATTACKRANGE   , "|cffc3dbff128.00 |cffffcc00(melee)")
        call RegisterHeroStat(16, STAT_ATTACKDAMAGE  , "|cffc3dbff21 - 27 |cffffcc00(Hero)")
        call RegisterHeroStat(16, STAT_ARMOR         , "|cffc3dbff3 |cffffcc00(Hero)")
        call RegisterHeroStat(16, STAT_MOVEMENTSPEED , "|cffc3dbff320.00")
        call RegisterHeroStat(16, STAT_DESCRIPTION   , "|cffc3dbffCunning Hero, adept at entering and escaping combat. Can learn Blink, Fan of Knives, Shadow Strike and Vengeance. |n|n|cffffcc00Attacks land units.|r")
    endfunction
endlibrary
Temp Trigger
  Events
    Time - Elapsed game time is 0.00 seconds
  Conditions
  Actions
    For each (Integer A) from 1 to 5, do (Actions)
      Loop - Actions
        Visibility - Create an initially Enabled visibility modifier for (Player((Integer A))) emitting Visibility across (Playable map area)
        Visibility - Enable (Last created visibility modifier)
    Multiboard - Create a multiboard with 1 columns and 11 rows, titled Hi there random map maker.
    Multiboard - Set the display style for (Last created multiboard) item in column 0, row 0 to Show text and Hide icons
    Multiboard - Set the width for (Last created multiboard) item in column 1, row 0 to 25.00% of the total screen width
    Multiboard - Set the text for (Last created multiboard) item in column 1, row 1 to Ultimate Hero Pick System
    Multiboard - Set the text for (Last created multiboard) item in column 1, row 2 to Version 2.0.0.4
    Multiboard - Set the text for (Last created multiboard) item in column 1, row 3 to
    Multiboard - Set the text for (Last created multiboard) item in column 1, row 4 to Requirements: wc3 1.24+ version
    Multiboard - Set the text for (Last created multiboard) item in column 1, row 5 to Works in: Jass New Gen
    Multiboard - Set the text for (Last created multiboard) item in column 1, row 6 to Code: vJass
    Multiboard - Set the text for (Last created multiboard) item in column 1, row 7 to
    Multiboard - Set the text for (Last created multiboard) item in column 1, row 8 to www.hiveworkshop.com
    Multiboard - Set the text for (Last created multiboard) item in column 1, row 9 to Created by -Kobas-
    Multiboard - Set the text for (Last created multiboard) item in column 1, row 10 to
    Multiboard - Set the text for (Last created multiboard) item in column 1, row 11 to Have Fun
    Multiboard - Show (Last created multiboard)
    Multiboard - Maximize (Last created multiboard)
    Custom script: call DestroyTrigger (GetTriggeringTrigger())