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