[Spell] Spawn System Check

Level 11
Joined
Dec 16, 2017
Messages
418
Hi guys, i took a spawn system that is older on here and adjusted it to my needs ([System] Spawn System)

I use this system to spawn creeps from the main enemy player that attack every city after a certain time, and they drop rewards if players succesfully kill the creeps, if creeps however kill the "Captain" which is in the location they are sent to "Attack-Move", the game will end after about 30 seconds.

Now i am not sure about the second location in i make in CA_Start, shall i delete it or not?

In the template there are only 5 waves, but in my map there will be 18 levels(9 towns-each with 2 wave, one easy, one strong), also, what about the unit group, does it cause leak at some point? Or shall i delete it only after the last wave finished and not after each wave?

I want also to ask, how should i manage the items spawn when there are 0 units left in the wave, i somehow want to add the items in the init, and spawn them in the CA_Die when units are 0, but there will be more items droppable, let's say between 5-20 per wave (including tomes/gold/lumber/items).

I also want to add a custom text to appear when there are about 20 seconds for the city to be attacked, i tried to do the countdown left time = 20 > show text, but it didn't work that way.

I would like to make each city randomly get attacked, let's say they are divided from 1-9 (easy wave) and 10-18 (hard wave), how can i store them so first 9 waves are randomly waves but only easy creeps, and last 9 waves are randomly waves but only hard creeps? So the spawn take's randomly a number from 1 to 9, but then removes it from the next wave calculation.

I posted triggers and i also uploaded the system in case someone will need it(for first ver,credits to: Hashjie).

Later edit: Now i've seen it's posted in "World Editor Help Zone", can someone move it please into the "Triggers & Scripts" ? Thanks!

  • CA Init
    • Events
      • Map initialization
    • Conditions
    • Actions
      • -------- Testing purpose... --------
      • Visibility - Disable fog of war
      • Visibility - Disable black mask
      • -------- Define the wave level --------
      • Set VariableSet CA_LevelIndex = 1
      • -------- Define the last level of all spawns --------
      • Set VariableSet CA_MaxWavesLevel = 5
      • -------- Define the area's --------
      • Set VariableSet CA_SpawnArea[1] = Rect 000 <gen>
      • Set VariableSet CA_SpawnArea[2] = Rect 001 <gen>
      • Set VariableSet CA_SpawnArea[3] = Rect 002 <gen>
      • Set VariableSet CA_SpawnArea[4] = Rect 003 <gen>
      • -------- Define the attack area --------
      • Set VariableSet CA_AttackArea[1] = Region 004 <gen>
      • Set VariableSet CA_AttackArea[2] = Region 005 <gen>
      • Set VariableSet CA_AttackArea[3] = Region 006 <gen>
      • Set VariableSet CA_AttackArea[4] = Region 007 <gen>
      • -------- Define the type of the units --------
      • Set VariableSet CA_UnitType[1] = Dark Ranger
      • Set VariableSet CA_UnitType[2] = Firelord
      • Set VariableSet CA_UnitType[3] = Mountain King
      • Set VariableSet CA_UnitType[4] = Paladin
      • Set VariableSet CA_UnitType[5] = Blademaster
      • -------- Define the level of the units --------
      • Set VariableSet CA_UnitLevel[1] = 4
      • Set VariableSet CA_UnitLevel[2] = 3
      • Set VariableSet CA_UnitLevel[3] = 6
      • Set VariableSet CA_UnitLevel[4] = 5
      • Set VariableSet CA_UnitLevel[5] = 7
      • -------- Define which area the units should spawn --------
      • Set VariableSet CA_UnitSpawnLoc[1] = 1
      • Set VariableSet CA_UnitSpawnLoc[2] = 1
      • Set VariableSet CA_UnitSpawnLoc[3] = 2
      • Set VariableSet CA_UnitSpawnLoc[4] = 4
      • Set VariableSet CA_UnitSpawnLoc[5] = 3
      • -------- Define how many units should spawn --------
      • Set VariableSet CA_UnitLimit[1] = 5
      • Set VariableSet CA_UnitLimit[2] = 6
      • Set VariableSet CA_UnitLimit[3] = 7
      • Set VariableSet CA_UnitLimit[4] = 8
      • Set VariableSet CA_UnitLimit[5] = 9
      • -------- Define how long it takes untill the next spawn starts --------
      • Set VariableSet CA_UnitSpawnDelay[1] = 20.00
      • Set VariableSet CA_UnitSpawnDelay[2] = 23.00
      • Set VariableSet CA_UnitSpawnDelay[3] = 18.00
      • Set VariableSet CA_UnitSpawnDelay[4] = 16.00
      • Set VariableSet CA_UnitSpawnDelay[5] = 25.00
      • -------- Define the cooldown between units spawning --------
      • Set VariableSet CA_UnitSpawnCooldown[1] = 0.01
      • Set VariableSet CA_UnitSpawnCooldown[2] = 0.15
      • Set VariableSet CA_UnitSpawnCooldown[3] = 0.20
      • Set VariableSet CA_UnitSpawnCooldown[4] = 0.25
      • Set VariableSet CA_UnitSpawnCooldown[5] = 0.30
      • -------- Texts before wave --------
      • Set VariableSet CA_TextBefore[1] = Your city is about to be attacked in |cffff00ff20|r seconds!
      • Set VariableSet CA_TextBefore[2] = Your city is about to be attacked in |cffff00ff15|r seconds!
      • Set VariableSet CA_TextBefore[3] = Your city is about to be attacked in |cffff00ff11|r seconds!
      • Set VariableSet CA_TextBefore[4] = Your city is about to be attacked in |cffff00ff12|r seconds!
      • Set VariableSet CA_TextBefore[5] = Your city is about to be attacked in |cffff00ff21|r seconds!
      • -------- Run the start spawn trigger --------
      • Trigger - Run CA Start <gen> (checking conditions)
  • CA Start
    • Events
    • Conditions
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • CA_UnitLimit[CA_LevelIndex] Greater than 0
        • Then - Actions
          • Set VariableSet CA_TempLoc = (Center of CA_SpawnArea[CA_UnitSpawnLoc[CA_LevelIndex]])
          • Special Effect - Create a special effect at CA_TempLoc using doodads\cinematic\ShimmeringPortal\ShimmeringPortal.mdl
          • Set VariableSet CA_PortalSFX = (Last created special effect)
          • Set VariableSet CA_TempLoc2 = (Center of CA_AttackArea[CA_UnitSpawnLoc[CA_LevelIndex]])
          • Unit - Create 1 CA_UnitType[CA_LevelIndex] for Player 12 (Brown) at CA_TempLoc facing Default building facing degrees
          • Set VariableSet CA_Unit = (Last created unit)
          • Special Effect - Create a special effect attached to the origin of CA_Unit using Abilities\Spells\NightElf\Blink\BlinkTarget.mdl
          • Special Effect - Destroy (Last created special effect)
          • Unit Group - Add CA_Unit to CA_UnitGroup
          • Set VariableSet CA_UnitGroupSize = (CA_UnitGroupSize + 1)
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (CA_Unit is A Hero) Equal to True
            • Then - Actions
              • Hero - Set CA_Unit Hero-level to CA_UnitLevel[CA_LevelIndex], Hide level-up graphics
            • Else - Actions
          • Custom script: call RemoveLocation(udg_CA_TempLoc)
          • Unit Group - Order CA_UnitGroup to Attack-Move To CA_TempLoc2
          • Set VariableSet CA_UnitLimit[CA_LevelIndex] = (CA_UnitLimit[CA_LevelIndex] - 1)
          • Countdown Timer - Start CA_CooldownTimer as a One-shot timer that will expire in CA_UnitSpawnCooldown[CA_LevelIndex] seconds
        • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • CA_LevelIndex Less than CA_MaxWavesLevel
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Number of units in CA_UnitGroup) Equal to 0
                • Then - Actions
                  • Countdown Timer - Start CA_SpawnTimer as a One-shot timer that will expire in CA_UnitSpawnDelay[CA_LevelIndex] seconds
                  • Countdown Timer - Create a timer window for CA_SpawnTimer with title Next spawn in:
                  • Set VariableSet CA_SpawnTimerWindow = (Last created timer window)
                  • Countdown Timer - Show CA_SpawnTimerWindow
                  • Set VariableSet CA_LevelIndex = (CA_LevelIndex + 1)
                • Else - Actions
            • Else - Actions
              • Game - Display to (All players) the text: Congratulations, yo...
  • CA Cooldown
    • Events
      • Time - CA_CooldownTimer expires
    • Conditions
    • Actions
      • Special Effect - Destroy CA_PortalSFX
      • Countdown Timer - Pause CA_CooldownTimer
      • Trigger - Run CA Start <gen> (checking conditions)
  • CA Delay
    • Events
      • Time - CA_SpawnTimer expires
    • Conditions
    • Actions
      • Game - Display to (All players) the text: Next wave starts!
      • Countdown Timer - Pause CA_SpawnTimer
      • Countdown Timer - Destroy CA_SpawnTimerWindow
      • Trigger - Run CA Start <gen> (checking conditions)
  • CA Die
    • Events
      • Unit - A unit Dies
    • Conditions
      • ((Triggering unit) is in CA_UnitGroup.) Equal to True
    • Actions
      • Unit Group - Remove (Triggering unit) from CA_UnitGroup.
      • Set VariableSet CA_UnitGroupSize = (CA_UnitGroupSize - 1)
      • Game - Display to (All players) the text: (CA_UnitGroupSize = + (String(CA_UnitGroupSize)))
      • Game - Display to (All players) the text: (CA_UnitGroup = + (String((Number of units in CA_UnitGroup))))
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Number of units in CA_UnitGroup) Equal to 0
          • CA_UnitGroupSize Equal to 0
        • Then - Actions
          • Trigger - Run CA Start <gen> (checking conditions)
          • Game - Display to (All players) the text: Waves done!
          • Set VariableSet CA_SpawnItemArea = (Position of (Triggering unit))
          • Item - Create Tome of Experience at CA_SpawnItemArea
          • Custom script: call RemoveLocation(udg_CA_SpawnItemArea)
        • Else - Actions
 

Attachments

  • SpawnSystem.w3x
    21.8 KB · Views: 4
Last edited:
Top