Snippet Random Heroes

Exide

I am amazingly focused right now!
Reaction score
448
I made a tiny trigger for spawning random heroes for all players.
Comes with a test map. Instructions on how to implement can be read in a trigger comment within the map.
Hopefully it will help someone.
Hopefully there isn't already a map/tutorial like this.

EDIT: Triggers, of course, my bad.

Code:
Setup Variables
    Events
        Map initialization
    Conditions
    Actions
        For each (Integer B) from 1 to 4, do (Actions)
            Loop - Actions
                Set SpawnPoint[(Integer B)] = ((Player((Integer B))) start location)
        Set RandomHero[1] = Paladin
        Set RandomHero[2] = Archmage
        Set RandomHero[3] = Mountain King
        Set RandomHero[4] = Blood Mage
        Set RandomHero[5] = Blademaster
        Set RandomHero[6] = Far Seer
        Set RandomHero[7] = Tauren Chieftain
        Set RandomHero[8] = Shadow Hunter

Code:
Force Random
    Events
        Player - Player 1 (Red) types a chat message containing -ar as An exact match
    Conditions
    Actions
        Set tempgroup = (Units in (Playable map area) matching ((Owner of (Matching unit)) Not equal to Neutral Passive))
        Unit Group - Pick every unit in tempgroup and do (Actions)
            Loop - Actions
                Unit - Remove (Picked unit) from the game
        Custom script:   call DestroyGroup(udg_tempgroup)
        For each (Integer A) from 1 to 4, do (Actions)
            Loop - Actions
                Set PlayerHasHero[(Integer A)] = False
                Set RandomCheck[(Integer A)] = False
        Trigger - Run Spawning Heroes <gen> (ignoring conditions)

JASS:

function SpawnHero_func takes nothing returns nothing
    local integer randomnumber
    local integer nr = 1
    
    loop
        exitwhen nr &gt; 4
        if (udg_PlayerHasHero[nr] == false) then
            
            set randomnumber = GetRandomInt(1, 8)
            
            if (udg_RandomCheck[randomnumber] == false) then
                call CreateUnitAtLoc( Player(nr-1), udg_RandomHero[randomnumber], udg_SpawnPoint[nr], 270.00 )
                set udg_RandomCheck[randomnumber] = true
                set udg_PlayerHasHero[nr] =  true
            else
                call SpawnHero_func()
            endif
            
        endif
        set nr = nr + 1
    endloop
endfunction

function Trig_Spawning_Heroes_Actions takes nothing returns nothing
    local integer randomnr
    local integer loopnr = 1
    
    loop
        exitwhen loopnr &gt; 4
        if (udg_PlayerHasHero[loopnr] == false) then
            
            set randomnr = GetRandomInt(1, 8)
            
            if (udg_RandomCheck[randomnr] == false) then
                call CreateUnitAtLoc( Player(loopnr-1), udg_RandomHero[randomnr], udg_SpawnPoint[loopnr], 270.00 )
                set udg_RandomCheck[randomnr] = true
                set udg_PlayerHasHero[loopnr] =  true
            else
                call SpawnHero_func()
            endif
            
        endif
        set loopnr = loopnr + 1
    endloop
endfunction

//===========================================================================
function InitTrig_Spawning_Heroes takes nothing returns nothing
    set gg_trg_Spawning_Heroes = CreateTrigger(  )
    call TriggerAddAction( gg_trg_Spawning_Heroes, function Trig_Spawning_Heroes_Actions )
endfunction
 

Attachments

  • [Snippet] Different Random Heroes.w3x
    24.1 KB · Views: 250

Exide

I am amazingly focused right now!
Reaction score
448
Edited.
 

AceHart

Your Friendly Neighborhood Admin
Reaction score
1,495
Hm...

Set HeroCount = 8 (number of units in that array)
Pick every player in (All players) and do (or whatever players this should work for)
- Set TempInteger = Random integer between 1 and HeroCount
- Unit - Create 1 RandomHero[TempInteger] for (Picked player) at SpawnPoint[Player number of (Picked player)] facing Default
- Set RandomHero[TempInteger] = RandomHero[HeroCount]
- Set HeroCount = HeroCount - 1
 

KnightRanger

New Member
Reaction score
1
ok well i tried ur trigger and all it did was remove the persons starting building.
Is there away i can add in my current trigger give player a random hero? I add unit sells a unit to see if it would by pass but all it did was not read ar.

Trigger:
  • AR
    • Events
      • Unit - A unit Sells a unit
      • Player - Player 10 (Light Blue) types a chat message containing AR as An exact match
    • Conditions
      • (Unit-type of (Sold unit)) Equal to Random Hero
    • Actions
      • Player Group - Pick every player in (All players) and do (Actions)
        • Loop - Actions
          • Unit - Create 1 RANDOM_HERO_ARRAY[(Random integer number between 1 and NUM_HEROES)] for (Owner of (Sold unit)) at ((Owner of (Sold unit)) start location) facing Default building facing degrees
          • Hero - Create Pendant of Energy and give it to (Last created unit)
          • Hero - Create Scroll of Town Portal and give it to (Last created unit)
      • Game - Display to (All players) for 5.00 seconds the text: All Random mode ena...
      • Player - Add -1750 to Player 1 (Red) Current gold
      • Player - Add -1750 to Player 2 (Blue) Current gold
      • Player - Add -1750 to Player 3 (Teal) Current gold
      • Player - Add -1750 to Player 4 (Purple) Current gold
      • Player - Add -1750 to Player 5 (Yellow) Current gold
      • Player - Add -1750 to Player 6 (Orange) Current gold
      • Player - Add -1750 to Player 7 (Green) Current gold
      • Player - Add -1750 to Player 8 (Pink) Current gold
      • Player - Add -1750 to Player 9 (Gray) Current gold
      • Player - Add -1750 to Player 10 (Light Blue) Current gold
      • Player - Add -1750 to Player 11 (Dark Green) Current gold
      • Player - Add -1750 to Player 12 (Brown) Current gold
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Members online

      No members online now.

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top