diff --git a/Moose Development/Moose/Functional/Spawn.lua b/Moose Development/Moose/Functional/Spawn.lua index 6a99bdc11..38ab72b2f 100644 --- a/Moose Development/Moose/Functional/Spawn.lua +++ b/Moose Development/Moose/Functional/Spawn.lua @@ -1,4 +1,4 @@ ---- **Functional** -- Spawn dynamically new GROUPs in your missions. +--- **Core** -- SPAWN class dynamically spawns new groups of units in your missions. -- -- ![Banner Image](..\Presentations\SPAWN\SPAWN.JPG) -- @@ -55,8 +55,12 @@ --- # SPAWN class, extends @{Base#BASE} -- +-- -- ![Banner Image](..\Presentations\SPAWN\SPAWN.JPG) +-- +-- === +-- -- The SPAWN class allows to spawn dynamically new groups. --- Each SPAWN object needs to be have a related **template group** setup in the Mission Editor (ME), +-- Each SPAWN object needs to be have related **template groups** setup in the Mission Editor (ME), -- which is a normal group with the **Late Activation** flag set. -- This template group will never be activated in your mission. -- SPAWN uses that **template group** to reference to all the characteristics @@ -521,6 +525,43 @@ function SPAWN:InitRandomizeTemplate( SpawnTemplatePrefixTable ) return self end + +--- Randomize templates to be used as the unit representatives for the Spawned group. +-- This method becomes useful when you need to spawn groups with random templates of groups defined within the mission editor, +-- but they will all follow the same Template route and have the same prefix name. +-- In other words, this method randomizes between a defined set of groups the template to be used for each new spawn of a group. +-- @param #SPAWN self +-- @param Core.Set#SET_GROUP SpawnTemplateSet A SET_GROUP object set, that contains the groups that are possible unit representatives of the group to be spawned. +-- @return #SPAWN +-- @usage +-- -- NATO Tank Platoons invading Gori. +-- +-- -- Choose between different 'US Tank Platoon Template' configurations to be spawned for the +-- -- 'US Tank Platoon Left', 'US Tank Platoon Middle' and 'US Tank Platoon Right' SPAWN objects. +-- +-- -- Each new SPAWN will randomize the route, with a defined time interval of 200 seconds with 40% time variation (randomization) and +-- -- with a limit set of maximum 12 Units alive simulteneously and 150 Groups to be spawned during the whole mission. +-- +-- Spawn_US_PlatoonSet = SET_GROUP:New():FilterPrefixes( "US Tank Platoon Templates" ):FilterOnce() +-- +-- --- Now use the Spawn_US_PlatoonSet to define the templates using InitRandomizeTemplateSet. +-- Spawn_US_Platoon_Left = SPAWN:New( 'US Tank Platoon Left' ):InitLimit( 12, 150 ):Schedule( 200, 0.4 ):InitRandomizeTemplateSet( Spawn_US_PlatoonSet ):InitRandomizeRoute( 3, 3, 2000 ) +-- Spawn_US_Platoon_Middle = SPAWN:New( 'US Tank Platoon Middle' ):InitLimit( 12, 150 ):Schedule( 200, 0.4 ):InitRandomizeTemplateSet( Spawn_US_PlatoonSet ):InitRandomizeRoute( 3, 3, 2000 ) +-- Spawn_US_Platoon_Right = SPAWN:New( 'US Tank Platoon Right' ):InitLimit( 12, 150 ):Schedule( 200, 0.4 ):InitRandomizeTemplateSet( Spawn_US_PlatoonSet ):InitRandomizeRoute( 3, 3, 2000 ) +function SPAWN:InitRandomizeTemplateSet( SpawnTemplateSet ) + self:F( { self.SpawnTemplatePrefix } ) + + self.SpawnTemplatePrefixTable = SpawnTemplateSet:GetSetNames() + self.SpawnRandomizeTemplate = true + + for SpawnGroupID = 1, self.SpawnMaxGroups do + self:_RandomizeTemplate( SpawnGroupID ) + end + + return self +end + + --- When spawning a new group, make the grouping of the units according the InitGrouping setting. -- @param #SPAWN self -- @param #number Grouping Indicates the maximum amount of units in the group.