- Joined
- Jan 23, 2020
- Messages
- 86
In my TD I have waves. They consist of Normal, 2X spawn, Special (1 additional "mini-boss" unit within a normal wave with aura), Boss, Bonus.
Certain waves do no spawn (Bonus) / inconsistently spawn (Special). What am I doing wrong? Is there an optimal way to do this?
Below are the triggers associated with my spawning system, let me know if you need to see more triggers:
Setting unit array:
Level setup:
Spawning:
Round end/restart:
Thanks!
Certain waves do no spawn (Bonus) / inconsistently spawn (Special). What am I doing wrong? Is there an optimal way to do this?
Below are the triggers associated with my spawning system, let me know if you need to see more triggers:
Setting unit array:
-
Setup Monster Types
-
Events
-
Map initialization
-
-
Conditions
-
Actions
-
Set VariableSet monstertype_Normal[1] = Murloc Hunter
-
Set VariableSet monstertype_Normal[2] = Crab lvl 2
-
Set VariableSet monstertype_Normal[3] = Voodoo Priest lvl 3
-
Set VariableSet monstertype_Normal[4] = Sand Wyrm lvl 4
-
Set VariableSet monstertype_Boss[5] = Temple Ghoul lvl 5
-
Set VariableSet monstertype_Normal[6] = Voodoo Wraith lvl 6
-
Set VariableSet monstertype_Normal[7] = Battle Alien lvl 7
-
Set VariableSet monstertype_Double[8] = Deathly Crawler lvl 8
-
Set VariableSet monstertype_Normal[9] = Wanderer lvl 9
-
Set VariableSet monstertype_Normal[10] = Goblin Robot Prototype lvl 10
-
Set VariableSet monstertype_Normal[11] = Tribal Battle Beast lvl 11
-
Set VariableSet monstertype_Normal[12] = Dark Monk lvl 12
-
Set VariableSet monstertype_Double[13] = Night Emerger lvl 13
-
Set VariableSet monstertype_Normal[14] = Brute Ogre lvl 14
-
Set VariableSet monstertype_Boss[15] = Death Minister lvl 15
-
Set VariableSet monstertype_Normal[16] = Helicopter lvl 16
-
Set VariableSet monstertype_Normal[17] = Artillary Machine lvl 17
-
Set VariableSet monstertype_Normal[18] = Chieftain lvl 18
-
Set VariableSet monstertype_Special[18] = Chieftain lvl 18 special
-
Set VariableSet monstertype_Normal[19] = Huntress lvl 19
-
Set VariableSet monstertype_Normal[20] = Evil Spirit lvl 20
-
Set VariableSet monstertype_Normal[21] = Pain Maiden lvl 21
-
Set VariableSet monstertype_Normal[22] = Rock Giant lvl 22
-
Set VariableSet monstertype_Normal[23] = Ocean Demon lvl 23
-
Set VariableSet monstertype_Double[24] = Spider Deamon lvl 24
-
Set VariableSet monstertype_Boss[25] = Blood Reaver lvl 25
-
Set VariableSet monstertype_Normal[26] = Gryphon Ryder lvl 26
-
Set VariableSet monstertype_Normal[27] = White Beast lvl 27
-
Set VariableSet monstertype_Special[27] = White Beast lvl 27 special
-
Set VariableSet monstertype_Normal[28] = Water Elemental lvl 28
-
Set VariableSet monstertype_Normal[29] = Armored Ravager lvl 29
-
Set VariableSet monstertype_Bonus[30] = Golden Coin - BONUS lvl 30
-
Set VariableSet monstertype_Normal[31] = Masked Ripper lvl 31
-
Set VariableSet monstertype_Special[31] = Masked Ripper lvl 31 special
-
Set VariableSet monstertype_Normal[32] = Undead Wizard lvl 32
-
Set VariableSet monstertype_Normal[33] = Toxic Manifestation lvl 33
-
Set VariableSet monstertype_Special[33] = Toxic Manifestation lvl 33 special
-
Set VariableSet monstertype_Normal[34] = Shadow Reaper lvl 34
-
Set VariableSet monstertype_Boss[35] = Minotaur Warrior lvl 35
-
Set VariableSet monstertype_Normal[36] = Wyvren lvl 36
-
Set VariableSet monstertype_Normal[37] = Troll Batrider lvl 37
-
Set VariableSet monstertype_Normal[38] = Wind Rider lvl 38
-
Set VariableSet monstertype_Normal[39] = Spirit Wraith lvl 39
-
Set VariableSet monstertype_Normal[40] = Nether Dragon lvl 40
-
Set VariableSet monstertype_Normal[41] = Centaur Drudge lvl 41
-
Set VariableSet monstertype_Double[42] = Infernal lvl 42
-
Set VariableSet monstertype_Normal[43] = Ice Giant lvl 43
-
Set VariableSet monstertype_Normal[44] = Mammoth lvl 44
-
Set VariableSet monstertype_Boss[45] = Horseman lvl 45
-
Set VariableSet monstertype_Normal[46] = Spider lvl 46
-
Set VariableSet monstertype_Normal[47] = Infernal Juggernaught lvl 47
-
Set VariableSet monstertype_Normal[48] = Harpy lvl 48
-
Set VariableSet monstertype_Bonus[49] = Golden Coin - BONUS lvl 49
-
Set VariableSet monstertype_Normal[50] = Ocean Deamon lvl 50
-
Set VariableSet monstertype_Boss[51] = Troll Beserker lvl 51
-
Set VariableSet monstertype_Boss[52] = War Commander lvl 52
-
Set VariableSet monstertype_Boss[53] = Far Seer lvl 53
-
Set VariableSet monstertype_Boss[54] = Pit Lord lvl 54
-
Set VariableSet monstertype_Boss[55] = Blood Mage lvl 55
-
Set VariableSet monstertype_Boss[56] = Leader of the Marauders lvl 56
-
Set VariableSet monstertype_Boss[57] = Death Pheonix lvl Final
-
-
Level setup:
-
Levels Player RED1
-
Events
-
Time - WaveTimer[1] expires
-
-
Conditions
-
Actions
-
Set VariableSet Level_Number[1] = (Level_Number[1] + 1)
-
Player - Add (5 x Level_Number[1]) to Player 1 (Red).Current gold
-
Game - Display to Player Group - Player 1 (Red) for 15.00 seconds the text: (Round bonus: |cffffff00 + ((String((5 x Level_Number[1]))) + Gold|r))
-
Multiboard - Set the text for (Last created multiboard) item in column 3, row List to (String(Level_Number[(Player number of Player 1 (Red))]))
-
Sound - Play QuestNew <gen>
-
Game - Display to Player Group - Player 1 (Red) for 8.00 seconds the text: LevelText[Level_Number[1]]
-
Wait 1.00 seconds
-
Set VariableSet RoundOver[1] = False
-
-
Spawning:
-
Spawning
-
Events
-
Time - Every 1.50 seconds of game time
-
-
Conditions
-
Actions
-
Player Group - Pick every player in HumanPlayers and do (Actions)
-
Loop - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
And - All (Conditions) are true
-
Conditions
-
RoundOver[(Player number of (Picked player))] Equal to False
-
Players_Active[(Player number of (Picked player))] Equal to True
-
-
-
-
Then - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
And - All (Conditions) are true
-
Conditions
-
Level_Number[(Player number of (Picked player))] Not equal to 5
-
Level_Number[(Player number of (Picked player))] Not equal to 8
-
Level_Number[(Player number of (Picked player))] Not equal to 13
-
Level_Number[(Player number of (Picked player))] Not equal to 15
-
Level_Number[(Player number of (Picked player))] Not equal to 24
-
Level_Number[(Player number of (Picked player))] Not equal to 25
-
Level_Number[(Player number of (Picked player))] Not equal to 30
-
Level_Number[(Player number of (Picked player))] Not equal to 35
-
Level_Number[(Player number of (Picked player))] Not equal to 42
-
Level_Number[(Player number of (Picked player))] Not equal to 45
-
Level_Number[(Player number of (Picked player))] Not equal to 49
-
Level_Number[(Player number of (Picked player))] Not equal to 51
-
Level_Number[(Player number of (Picked player))] Not equal to 52
-
Level_Number[(Player number of (Picked player))] Not equal to 53
-
Level_Number[(Player number of (Picked player))] Not equal to 54
-
Level_Number[(Player number of (Picked player))] Not equal to 55
-
Level_Number[(Player number of (Picked player))] Not equal to 56
-
-
-
-
Then - Actions
-
-------- SPECIAL --------
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
And - All (Conditions) are true
-
Conditions
-
SpawnCounter[(Player number of (Picked player))] Equal to 0
-
Or - Any (Conditions) are true
-
Conditions
-
Level_Number[(Player number of (Picked player))] Equal to 18
-
Level_Number[(Player number of (Picked player))] Equal to 27
-
Level_Number[(Player number of (Picked player))] Equal to 31
-
Level_Number[(Player number of (Picked player))] Equal to 33
-
-
-
-
-
-
Then - Actions
-
Set VariableSet TempPoint = (Center of spawn_areas[(Player number of (Picked player))])
-
Unit - Create 1 monstertype_Special[Level_Number[(Player number of (Picked player))]] for Player 12 (Brown) at TempPoint facing (Center of (Playable map area))
-
Unit Group - Add (Last created unit) to TotalCreeps[(Player number of (Picked player))]
-
Custom script: call RemoveLocation(udg_TempPoint)
-
Special Effect - Create a special effect attached to the overhead of (Last created unit) using Abilities\Spells\Human\MassTeleport\MassTeleportCaster.mdl
-
Special Effect - Destroy (Last created special effect)
-
-
Else - Actions
-
-
-------- BONUS --------
-
Set VariableSet SpawnCounter[(Player number of (Picked player))] = (SpawnCounter[(Player number of (Picked player))] + 1)
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
And - All (Conditions) are true
-
Conditions
-
SpawnCounter[(Player number of (Picked player))] Greater than 5
-
Or - Any (Conditions) are true
-
Conditions
-
Level_Number[(Player number of (Picked player))] Equal to 30
-
Level_Number[(Player number of (Picked player))] Equal to 49
-
-
-
-
-
-
Then - Actions
-
Set VariableSet SpawnCounter[(Player number of (Picked player))] = 0
-
Set VariableSet RoundOver[(Player number of (Picked player))] = True
-
-
Else - Actions
-
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
Then - Actions
-
Set VariableSet TempPoint = (Center of spawn_areas[(Player number of (Picked player))])
-
Unit - Create 1 monstertype_Bonus[Level_Number[(Player number of (Picked player))]] for Player 12 (Brown) at TempPoint facing (Center of (Playable map area))
-
Unit Group - Add (Last created unit) to TotalCreeps[(Player number of (Picked player))]
-
Custom script: call RemoveLocation(udg_TempPoint)
-
Special Effect - Create a special effect attached to the overhead of (Last created unit) using Abilities\Spells\Human\MassTeleport\MassTeleportCaster.mdl
-
Special Effect - Destroy (Last created special effect)
-
-
Else - Actions
-
-
-------- X2 SPAWN --------
-
Set VariableSet SpawnCounter[(Player number of (Picked player))] = (SpawnCounter[(Player number of (Picked player))] + 1)
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
And - All (Conditions) are true
-
Conditions
-
SpawnCounter[(Player number of (Picked player))] Greater than 10
-
Or - Any (Conditions) are true
-
Conditions
-
Level_Number[(Player number of (Picked player))] Equal to 8
-
Level_Number[(Player number of (Picked player))] Equal to 13
-
Level_Number[(Player number of (Picked player))] Equal to 24
-
Level_Number[(Player number of (Picked player))] Equal to 42
-
-
-
-
-
-
Then - Actions
-
Set VariableSet SpawnCounter[(Player number of (Picked player))] = 0
-
Set VariableSet RoundOver[(Player number of (Picked player))] = True
-
-
Else - Actions
-
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
Then - Actions
-
Set VariableSet TempPoint = (Center of spawn_areas[(Player number of (Picked player))])
-
Unit - Create 2 monstertype_Double[Level_Number[(Player number of (Picked player))]] for Player 12 (Brown) at TempPoint facing (Center of (Playable map area))
-
Unit Group - Add (Last created unit) to TotalCreeps[(Player number of (Picked player))]
-
Custom script: call RemoveLocation(udg_TempPoint)
-
Special Effect - Create a special effect attached to the overhead of (Last created unit) using Abilities\Spells\Human\MassTeleport\MassTeleportCaster.mdl
-
Special Effect - Destroy (Last created special effect)
-
-
Else - Actions
-
-
-------- NORMAL --------
-
Set VariableSet SpawnCounter[(Player number of (Picked player))] = (SpawnCounter[(Player number of (Picked player))] + 1)
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
SpawnCounter[(Player number of (Picked player))] Greater than 20
-
-
Then - Actions
-
Set VariableSet SpawnCounter[(Player number of (Picked player))] = 0
-
Set VariableSet RoundOver[(Player number of (Picked player))] = True
-
-
Else - Actions
-
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
Then - Actions
-
Set VariableSet TempPoint = (Center of spawn_areas[(Player number of (Picked player))])
-
Unit - Create 1 monstertype_Normal[Level_Number[(Player number of (Picked player))]] for Player 12 (Brown) at TempPoint facing (Center of (Playable map area))
-
Unit Group - Add (Last created unit) to TotalCreeps[(Player number of (Picked player))]
-
Custom script: call RemoveLocation(udg_TempPoint)
-
Special Effect - Create a special effect attached to the overhead of (Last created unit) using Abilities\Spells\Human\MassTeleport\MassTeleportCaster.mdl
-
Special Effect - Destroy (Last created special effect)
-
-
Else - Actions
-
-
-
Else - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
Then - Actions
-
-------- BOSS --------
-
Set VariableSet SpawnCounter[(Player number of (Picked player))] = (SpawnCounter[(Player number of (Picked player))] + 1)
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
Then - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
SpawnCounter[(Player number of (Picked player))] Equal to 1
-
-
Then - Actions
-
Set VariableSet SpawnCounter[(Player number of (Picked player))] = 0
-
Set VariableSet RoundOver[(Player number of (Picked player))] = True
-
-
Else - Actions
-
-
-
Else - Actions
-
-
Set VariableSet TempPoint = (Center of spawn_areas[(Player number of (Picked player))])
-
Unit - Create 1 monstertype_Boss[Level_Number[(Player number of (Picked player))]] for Player 12 (Brown) at TempPoint facing (Center of (Playable map area))
-
Unit Group - Add (Last created unit) to TotalCreeps[(Player number of (Picked player))]
-
Custom script: call RemoveLocation(udg_TempPoint)
-
Special Effect - Create a special effect attached to the overhead of (Last created unit) using Abilities\Spells\Human\MassTeleport\MassTeleportCaster.mdl
-
Special Effect - Destroy (Last created special effect)
-
-
Else - Actions
-
-
-
-
-
Else - Actions
-
-
-
-
-
Round end/restart:
-
UnitDies
-
Events
-
Unit - A unit Dies
-
-
Conditions
-
(Owner of (Triggering unit)) Equal to Player 12 (Brown)
-
-
Actions
-
Player Group - Pick every player in HumanPlayers and do (Actions)
-
Loop - Actions
-
Unit Group - Remove (Triggering unit) from TotalCreeps[(Player number of (Picked player))].
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
(Number of units in TotalCreeps[(Player number of (Picked player))]) Equal to 0
-
RoundOver[(Player number of (Picked player))] Equal to True
-
-
Then - Actions
-
Countdown Timer - Start WaveTimer[(Player number of (Picked player))] as a One-shot timer that will expire in 6.00 seconds
-
-
Else - Actions
-
-
-
-
-
Thanks!
Last edited: