- Joined
- Jul 22, 2015
- Messages
- 3,484
Hey everyone! I'm trying to create a spawn system that supports multiple unit types in a wave and makes it so that the next wave doesn't spawn until all units in the previous wave have been killed. I'm having a hard time figuring out the latter and would love some insight! This isn't finished yet, so things may seem a bit off. Just ask me anything if something seems a bit off!
EDIT: I forgot to add that I also want these spawns to be endless ! I don't want to have to keep editing every single wave after another. I just want it so that X unit type spawns after XX amount of seconds, then Y unit type spawns ALONG with X unit type after YY amount of seconds. I also need them to spawn in intervals that I set in a variable (EX - Spawns 1 unit every 1 second.)
-
Spawn System 1
-

Events
-


Time - Elapsed game time is 2.00 seconds
-
-

Conditions
-

Actions
-


-------- -------------- --------
-


-------- -------------- --------
-


-------- OWNER --------
-


Set SpawnSystem_Owner = Player 1 (Red)
-


-------- ------------------- --------
-


-------- ------------------- --------
-


-------- UNIT TYPE --------
-


Set SpawnSystem_UnitType = Pig
-


-------- --------------------------------- --------
-


-------- --------------------------------- --------
-


-------- UNIT SPAWN LIMIT --------
-


Set SpawnSystem_UnitTypeLimit = 3
-


-------- -------------------------------- --------
-


-------- -------------------------------- --------
-


-------- SPAWN INTERVAL --------
-


Set SpawnSystem_SpawnInterval = 1.00
-


-------- --------------------------------------------------------- --------
-


-------- --------------------------------------------------------- --------
-


-------- SPAWN AMOUNT PER INTERVAL --------
-


Set SpawnSystem_Amount = 1
-


-------- -------------------------------- --------
-


-------- -------------------------------- --------
-


-------- SPAWN LOCATION --------
-


Set SpawnSystem_Location = (Center of Spawn 1 <gen>)
-


-------- --------------------- --------
-


-------- --------------------- --------
-


-------- SPAWN SFX --------
-


Set SpawnSystem_SFX = <Empty String>
-


-------- ------------------------------- --------
-


-------- ------------------------------- --------
-


Trigger - Run Spawn System Filter <gen> (checking conditions)
-


-------- ------------------------------------------- --------
-


-------- ------------------------------------------- --------
-


-------- Changing Variable EX --------
-


Wait 10.00 seconds
-


Set SpawnSystem_TempUTL[1] = 5
-
-
-
Spawn System 2
-

Events
-

Time - Elapsed game time is 5.00 seconds
-

Conditions
-

Actions
-


-------- -------------- --------
-


-------- -------------- --------
-


-------- OWNER --------
-


Set SpawnSystem_Owner = Player 2 (Blue)
-


-------- ------------------- --------
-


-------- ------------------- --------
-


-------- UNIT TYPE --------
-


Set SpawnSystem_UnitType = Chicken
-


-------- --------------------------------- --------
-


-------- --------------------------------- --------
-


-------- UNIT SPAWN LIMIT --------
-


Set SpawnSystem_UnitTypeLimit = 10
-


-------- -------------------------------- --------
-


-------- -------------------------------- --------
-


-------- SPAWN INTERVAL --------
-


Set SpawnSystem_SpawnInterval = 1.00
-


-------- --------------------------------------------------------- --------
-


-------- --------------------------------------------------------- --------
-


-------- SPAWN AMOUNT PER INTERVAL --------
-


Set SpawnSystem_Amount = 1
-


-------- -------------------------------- --------
-


-------- -------------------------------- --------
-


-------- SPAWN LOCATION --------
-


Set SpawnSystem_Location = (Center of Spawn 1 <gen>)
-


-------- --------------------- --------
-


-------- --------------------- --------
-


-------- SPAWN SFX --------
-


Set SpawnSystem_SFX = <Empty String>
-


-------- ------------------------------- --------
-


-------- ------------------------------- --------
-


Trigger - Run Spawn System Filter <gen> (checking conditions)
-
-
-
Spawn System Filter
-

Events
-

Conditions
-

Actions
-


If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-



If - Conditions
-




SpawnSystem_Counter Equal to 0
-
-



Then - Actions
-




Trigger - Turn on Spawn System Loop <gen>
-
-



Else - Actions
-
-


Set SpawnSystem_Counter = (SpawnSystem_Counter + 1)
-


If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-



If - Conditions
-




SpawnSystem_Counter Greater than SpawnSystem_IndexMax
-
-



Then - Actions
-




Set SpawnSystem_Index[SpawnSystem_Counter] = SpawnSystem_Counter
-




Set SpawnSystem_IndexMax = SpawnSystem_Counter
-
-



Else - Actions
-
-


Set SpawnSystem_LoopInt = SpawnSystem_Index[SpawnSystem_Counter]
-


Set SpawnSystem_TempOwner[SpawnSystem_LoopInt] = SpawnSystem_Owner
-


Set SpawnSystem_TempUT[SpawnSystem_LoopInt] = SpawnSystem_UnitType
-


Set SpawnSystem_TempUTL[SpawnSystem_LoopInt] = SpawnSystem_UnitTypeLimit
-


Set SpawnSystem_TempSI[SpawnSystem_LoopInt] = SpawnSystem_SpawnInterval
-


Set SpawnSystem_TempAmount[SpawnSystem_LoopInt] = SpawnSystem_Amount
-


Set SpawnSystem_TempLocation[SpawnSystem_LoopInt] = SpawnSystem_Location
-


Set SpawnSystem_TempSFX[SpawnSystem_LoopInt] = SpawnSystem_SFX
-
-
-
Spawn System Loop
-

Events
-


Time - Every 0.03 seconds of game time
-
-

Conditions
-

Actions
-


For each (Integer SpawnSystemLoop[1]) from 1 to SpawnSystem_Counter, do (Actions)
-



Loop - Actions
-




Set SpawnSystem_LoopInt = SpawnSystem_Index[SpawnSystemLoop[1]]
-




If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-





If - Conditions
-






SpawnSystem_TimeLoop[SpawnSystem_LoopInt] Greater than or equal to SpawnSystem_TempSI[SpawnSystem_LoopInt]
-
-





Then - Actions
-






Set SpawnSystem_TimeLoop[SpawnSystem_LoopInt] = 0.00
-






For each (Integer SpawnSystemLoop[2]) from 1 to SpawnSystem_TempAmount[SpawnSystem_LoopInt], do (Actions)
-







Loop - Actions
-








Set SpawnSystem_Group[SpawnSystem_LoopInt] = (Units in (Playable map area) matching (((Unit-type of (Matching unit)) Equal to SpawnSystem_TempUT[SpawnSystem_LoopInt]) and (((Owner of (Matching unit)) Equal to SpawnSystem_TempOwner[SpawnSystem_LoopInt]) and (((Matching unit) is alive) Equal to True))))
-








If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-









If - Conditions
-










(Number of units in SpawnSystem_Group[SpawnSystem_LoopInt]) Less than SpawnSystem_TempUTL[SpawnSystem_LoopInt]
-
-









Then - Actions
-










Unit - Create 1 SpawnSystem_TempUT[SpawnSystem_LoopInt] for SpawnSystem_TempOwner[SpawnSystem_LoopInt] at SpawnSystem_TempLocation[SpawnSystem_LoopInt] facing Default building facing degrees
-










If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-











If - Conditions
-












SpawnSystem_TempSFX[SpawnSystem_LoopInt] Not equal to <Empty String>
-
-











Then - Actions
-












Special Effect - Create a special effect at SpawnSystem_TempLocation[SpawnSystem_LoopInt] using SpawnSystem_TempSFX[SpawnSystem_LoopInt]
-












Special Effect - Destroy (Last created special effect)
-
-











Else - Actions
-
-
-









Else - Actions
-
-
-
-
-





Else - Actions
-






Set SpawnSystem_TimeLoop[SpawnSystem_LoopInt] = (SpawnSystem_TimeLoop[SpawnSystem_LoopInt] + 0.03)
-
-
-
-
-
-
Last edited:











