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.
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 > 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 > 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