- Joined
- Oct 24, 2012
- Messages
- 6,545
hello this is a unit spawn trigger for my td. if there is anything i can do to inprove it plz tell me thx
JASS:
scope UnitSpawnAll initializer Unit_Spawn_all_Lvls
globals
trigger trg_UnitSpawnsAll
boolean array Unit_Spawns_Player
integer array EnemiesAlive_Counter_Player
boolean array Boss_Add_Mana_Boolean_Player
integer array Boss_Bonus_Counter
integer array Damage_Boss_Round_Count_Player
group array Unit_Spawns_Group_Player // group for detecting units used in moving from region to region and in P1 kills and P1 spawn
private integer array handleID
private integer array LoopIntPlayer
private real array spawnx
private real array spawny
private integer array Unit_Runner_Spawn
private integer array Battlegrounds_Spawn
private constant real bx = GetRectCenterX(gg_rct_P11_Battleground_Spawn)
private constant real by = GetRectCenterY(gg_rct_P11_Battleground_Spawn)
endglobals
private function BattlegroundSpawns takes integer ub, integer bs, integer p returns nothing
local integer Loop = 1
local unit u
local integer T
loop
exitwhen Loop > bs
set u = CreateUnit(Player(11), ub, bx, by, 0)
call GroupAddUnit(Battlegrounds_Group_Player[11], u)
call SetHeroLevel( u, Round_Player, false ) // Round_Player[i]
set T = GetHeroInt( u, true )
if T >= 2000 then
call UnitAddAbility( u, 'ACev' )
call SetUnitAbilityLevel( u, 'ACev', 99 )
elseif T >= 20 then
call UnitAddAbility( u, 'ACev' )
call SetUnitAbilityLevel( u, 'ACev', ( T / 20 ) )
endif
set Loop = Loop + 1
endloop
set u = null
endfunction
private function whichTimer takes timer t returns integer
local integer i = 0
local integer h = GetHandleId( t)
set t = null
loop
exitwhen i > 3
if handleID[i] == h then
return i
endif
set i = i + 1
endloop
return 11
endfunction
private function UnitSpawns takes nothing returns nothing
local multiboarditem mbi
local integer us
local integer ub
local integer bs
local integer p
local timer t
local unit u
set t = GetExpiredTimer()
set p = whichTimer( t)
set LoopIntPlayer = LoopIntPlayer + 1
if ( Round_Player < 31) then
set us = Unit_Runner_Spawn[Round_Player]
set ub = Battlegrounds_Spawn[Round_Player]
set bs = 1
else
set us = Unit_Runner_Spawn[31]
set ub = Battlegrounds_Spawn[30]
set bs = 2
endif
set u = CreateUnit( Player(11), us, spawnx, spawny, 0)
call GroupAddUnit(Unit_Spawns_Group_Player, u)
call SetHeroLevel( u, ( Round_Player - 30 ), false )
set EnemiesAlive_Player = EnemiesAlive_Player + 1 //multiboard variable enemies alive
set mbi = MultiboardGetItem( gamescoresMultiboard, 5, (p+1) )
call MultiboardSetItemValue( mbi, playerColors + I2S(EnemiesAlive_Player) + color )
call MultiboardReleaseItem( mbi)
call BattlegroundSpawns( ub, bs, p)
call text( I2S(LoopIntPlayer), p)
if LoopIntPlayer > Number_Of_Unit_Spawns_Player then
set LoopIntPlayer = 1
call PauseTimer( t)
call DestroyTimer( t)
endif
set mbi = null
set t = null
endfunction
private function Actions takes nothing returns nothing
local multiboarditem mbi
local integer p = GetPlayerId( GetTriggerPlayer())
set Unit_Spawns_Player = false
set Damage_Boss_Round_Count_Player = Damage_Boss_Round_Count_Player + 1
set EnemiesAlive_Counter_Player = Number_Of_Unit_Spawns_Player[0]//#of unit spawns is a selected number of spawns in the game
set Boss_Bonus_Counter = Boss_Bonus_Counter + 1//used for giving players mana to summon a boss
set Round_Player = Round_Player + 1
set mbi = MultiboardGetItem( gamescoresMultiboard, 1, (p+1) )
call MultiboardSetItemValue( mbi, playerColors + I2S(Round_Player) + color )
call MultiboardReleaseItem( mbi)
if Boss_Bonus_Counter == 5 then
set Boss_Add_Mana_Boolean_Player = true
set Boss_Bonus_Counter = 0
endif
set mbi = null
endfunction
private function timersetup takes nothing returns nothing
local timer t
local integer p = GetPlayerId( GetTriggerPlayer())
local integer i
call Actions()
set t = CreateTimer()
set i = GetHandleId( t)
set handleID = i
call TimerStart( t, Spawn_Speed_Player, true, function UnitSpawns)
set t = null
endfunction
private function Runners takes nothing returns nothing
local integer Loop = 0
loop
exitwhen Loop > 1
set Battlegrounds_Group_Player[Loop] = CreateGroup()
set Unit_Spawns_Group_Player[Loop] = CreateGroup()
set Unit_Bosses_Group_Player[Loop] = CreateGroup()
set Loop = Loop + 1
endloop
set Battlegrounds_Group_Player[11] = CreateGroup()
//the enemy runners for all players
set Unit_Runner_Spawn[1] = 'h00C'
set Unit_Runner_Spawn[2] = 'h01Y'
set Unit_Runner_Spawn[3] = 'h01Z'
set Unit_Runner_Spawn[4] = 'h020'
set Unit_Runner_Spawn[5] = 'h021'
set Unit_Runner_Spawn[6] = 'h022'
set Unit_Runner_Spawn[7] = 'h023'
set Unit_Runner_Spawn[8] = 'h024'
set Unit_Runner_Spawn[9] = 'h025'
set Unit_Runner_Spawn[10] = 'h026'
set Unit_Runner_Spawn[11] = 'h027'
set Unit_Runner_Spawn[12] = 'h028'
set Unit_Runner_Spawn[13] = 'h029'
set Unit_Runner_Spawn[14] = 'h02A'
set Unit_Runner_Spawn[15] = 'h02B'
set Unit_Runner_Spawn[16] = 'h02C'
set Unit_Runner_Spawn[17] = 'h02D'
set Unit_Runner_Spawn[18] = 'h02E'
set Unit_Runner_Spawn[19] = 'h02F'
set Unit_Runner_Spawn[20] = 'h02G'
set Unit_Runner_Spawn[21] = 'h02H'
set Unit_Runner_Spawn[22] = 'h02I'
set Unit_Runner_Spawn[23] = 'h02J'
set Unit_Runner_Spawn[24] = 'h02K'
set Unit_Runner_Spawn[25] = 'h02L'
set Unit_Runner_Spawn[26] = 'h02M'
set Unit_Runner_Spawn[27] = 'h02N'
set Unit_Runner_Spawn[28] = 'h02O'
set Unit_Runner_Spawn[29] = 'h02P'
set Unit_Runner_Spawn[30] = 'h02Q'
set Unit_Runner_Spawn[31] = 'U00A'
// battleground unit spawns
set Battlegrounds_Spawn[1] = 'E008'
set Battlegrounds_Spawn[2] = 'E009'
set Battlegrounds_Spawn[3] = 'E00B'
set Battlegrounds_Spawn[4] = 'H05M'
set Battlegrounds_Spawn[5] = 'N019'
set Battlegrounds_Spawn[6] = 'N01H'
set Battlegrounds_Spawn[7] = 'O003'
set Battlegrounds_Spawn[8] = 'O004'
set Battlegrounds_Spawn[9] = 'N017'
set Battlegrounds_Spawn[10] = 'N018'
set Battlegrounds_Spawn[11] = 'H05P'
set Battlegrounds_Spawn[12] = 'N016'
set Battlegrounds_Spawn[13] = 'O005'
set Battlegrounds_Spawn[14] = 'N01J'
set Battlegrounds_Spawn[15] = 'N01I'
set Battlegrounds_Spawn[16] = 'O002'
set Battlegrounds_Spawn[17] = 'U00M'
set Battlegrounds_Spawn[18] = 'U00L'
set Battlegrounds_Spawn[19] = 'U00O'
set Battlegrounds_Spawn[20] = 'U00N'
set Battlegrounds_Spawn[21] = 'N01A'
set Battlegrounds_Spawn[22] = 'H05Q'
set Battlegrounds_Spawn[23] = 'H05N'
set Battlegrounds_Spawn[24] = 'E00A'
set Battlegrounds_Spawn[25] = 'N01B'
set Battlegrounds_Spawn[26] = 'N01C'
set Battlegrounds_Spawn[27] = 'N01G'
set Battlegrounds_Spawn[28] = 'N01D'
set Battlegrounds_Spawn[29] = 'N01E'
set Battlegrounds_Spawn[30] = 'N01F'
endfunction
private function startup takes nothing returns nothing
call Runners()
set spawnx[0] = GetRectCenterX(gg_rct_red_start)
set spawny[0] = GetRectCenterY(gg_rct_red_start)
set spawnx[1] = GetRectCenterX(gg_rct_blue_start)
set spawny[1] = GetRectCenterY(gg_rct_blue_start)
set LoopIntPlayer[0] = 1
set LoopIntPlayer[1] = 1
set LoopIntPlayer[2] = 1
set LoopIntPlayer[3] = 1
call TriggerClearActions( trg_UnitSpawnsAll)
call TriggerAddAction( trg_UnitSpawnsAll, function timersetup)
endfunction
private function conditions takes nothing returns boolean
return Unit_Spawns_Player[GetPlayerId(GetTriggerPlayer())] == true
endfunction
//===========================================================================
function Unit_Spawn_all_Lvls takes nothing returns nothing
set trg_UnitSpawnsAll = CreateTrigger()
call startup()
call TriggerAddCondition( trg_UnitSpawnsAll, Condition( function conditions ) )
call TriggerRegisterPlayerEvent( trg_UnitSpawnsAll, Player(0), EVENT_PLAYER_END_CINEMATIC)
call TriggerRegisterPlayerEvent( trg_UnitSpawnsAll, Player(1), EVENT_PLAYER_END_CINEMATIC)
call TriggerRegisterPlayerEvent( trg_UnitSpawnsAll, Player(2), EVENT_PLAYER_END_CINEMATIC)
call TriggerRegisterPlayerEvent( trg_UnitSpawnsAll, Player(3), EVENT_PLAYER_END_CINEMATIC)
endfunction
endscope
Last edited: