CTLD Fix for saved crate reload duplicating crates on load

This commit is contained in:
Applevangelist 2024-08-29 10:21:24 +02:00
parent 120a66819c
commit 6fb5222358

View File

@ -1331,7 +1331,7 @@ CTLD.UnitTypeCapabilities = {
--- CTLD class version. --- CTLD class version.
-- @field #string version -- @field #string version
CTLD.version="1.1.16" CTLD.version="1.1.17"
--- Instantiate a new CTLD. --- Instantiate a new CTLD.
-- @param #CTLD self -- @param #CTLD self
@ -2760,8 +2760,9 @@ end
-- @param Core.Zone#ZONE Zone Zone to spawn in. -- @param Core.Zone#ZONE Zone Zone to spawn in.
-- @param #CTLD_CARGO Cargo The cargo type to spawn. -- @param #CTLD_CARGO Cargo The cargo type to spawn.
-- @param #boolean RandomCoord Randomize coordinate. -- @param #boolean RandomCoord Randomize coordinate.
-- @param #boolean FromLoad Create only **one** crate per cargo type, as we are re-creating dropped crates that CTLD has saved prior.
-- @return #CTLD self -- @return #CTLD self
function CTLD:InjectStatics(Zone, Cargo, RandomCoord) function CTLD:InjectStatics(Zone, Cargo, RandomCoord, FromLoad)
self:T(self.lid .. " InjectStatics") self:T(self.lid .. " InjectStatics")
local cratecoord = Zone:GetCoordinate() local cratecoord = Zone:GetCoordinate()
if RandomCoord then if RandomCoord then
@ -2779,6 +2780,7 @@ function CTLD:InjectStatics(Zone, Cargo, RandomCoord)
local cgotype = cargotype:GetType() local cgotype = cargotype:GetType()
local cgomass = cargotype:GetMass() local cgomass = cargotype:GetMass()
local cratenumber = cargotype:GetCratesNeeded() or 1 local cratenumber = cargotype:GetCratesNeeded() or 1
if FromLoad == true then cratenumber=1 end
for i=1,cratenumber do for i=1,cratenumber do
local cratealias = string.format("%s-%s-%d", cratename, cratetemplate, math.random(1,100000)) local cratealias = string.format("%s-%s-%d", cratename, cratetemplate, math.random(1,100000))
local isstatic = false local isstatic = false
@ -2822,7 +2824,7 @@ end
function CTLD:InjectStaticFromTemplate(Zone, Template, Mass) function CTLD:InjectStaticFromTemplate(Zone, Template, Mass)
self:T(self.lid .. " InjectStaticFromTemplate") self:T(self.lid .. " InjectStaticFromTemplate")
local cargotype = self:GetStaticsCargoFromTemplate(Template,Mass) -- #CTLD_CARGO local cargotype = self:GetStaticsCargoFromTemplate(Template,Mass) -- #CTLD_CARGO
self:InjectStatics(Zone,cargotype,true) self:InjectStatics(Zone,cargotype,true,true)
return self return self
end end
@ -6326,7 +6328,7 @@ end
injectstatic:SetStaticResourceMap(map) injectstatic:SetStaticResourceMap(map)
end end
if injectstatic then if injectstatic then
self:InjectStatics(dropzone,injectstatic) self:InjectStatics(dropzone,injectstatic,false,true)
end end
end end
end end
@ -6654,7 +6656,7 @@ function CTLD_HERCULES:Cargo_SpawnStatic(Cargo_Drop_initiator,Cargo_Drop_Positio
local Zone = ZONE_RADIUS:New("Cargo Static " .. math.random(1,10000),position,100) local Zone = ZONE_RADIUS:New("Cargo Static " .. math.random(1,10000),position,100)
if not dead then if not dead then
local injectstatic = CTLD_CARGO:New(nil,"Cargo Static Group "..math.random(1,10000),"iso_container",CTLD_CARGO.Enum.STATIC,true,false,1,nil,true,4500,1) local injectstatic = CTLD_CARGO:New(nil,"Cargo Static Group "..math.random(1,10000),"iso_container",CTLD_CARGO.Enum.STATIC,true,false,1,nil,true,4500,1)
self.CTLD:InjectStatics(Zone,injectstatic,true) self.CTLD:InjectStatics(Zone,injectstatic,true,true)
end end
return self return self
end end