Merge remote-tracking branch 'origin/develop' into develop

This commit is contained in:
Applevangelist 2023-09-21 09:01:49 +02:00
commit d2450ff776
3 changed files with 33 additions and 5 deletions

View File

@ -5498,8 +5498,13 @@ function WAREHOUSE:onafterAssetDead(From, Event, To, asset, request)
--- ---
-- Remove dead group from cargo group set. -- Remove dead group from cargo group set.
request.cargogroupset:Remove(groupname, NoTriggerEvent) if request.cargogroupset then
self:T(self.lid..string.format("Removed selfpropelled cargo %s: ncargo=%d.", groupname, request.cargogroupset:Count())) -- cargogroupset was nil for user case. Difficult to reproduce so we add a nil check.
request.cargogroupset:Remove(groupname, NoTriggerEvent)
self:T(self.lid..string.format("Removed selfpropelled cargo %s: ncargo=%d.", groupname, request.cargogroupset:Count()))
else
self:E(self.lid..string.format("ERROR: cargogroupset is nil for request ID=%s!", tostring(request.uid)))
end
else else

View File

@ -45,9 +45,14 @@ LEGION = {
cohorts = {}, cohorts = {},
} }
--- Random score that is added to the asset score in the selection process.
-- @field #number RandomAssetScore
LEGION.RandomAssetScore=1
--- LEGION class version. --- LEGION class version.
-- @field #string version -- @field #string version
LEGION.version="0.4.0" LEGION.version="0.5.0"
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-- ToDo list -- ToDo list
@ -3229,7 +3234,25 @@ function LEGION._OptimizeAssetSelection(assets, MissionType, TargetVec2, Include
-- Calculate the mission score of all assets. -- Calculate the mission score of all assets.
for _,_asset in pairs(assets) do for _,_asset in pairs(assets) do
local asset=_asset --Functional.Warehouse#WAREHOUSE.Assetitem local asset=_asset --Functional.Warehouse#WAREHOUSE.Assetitem
-- Calculate the asset score.
asset.score=LEGION.CalculateAssetMissionScore(asset, MissionType, TargetVec2, IncludePayload) asset.score=LEGION.CalculateAssetMissionScore(asset, MissionType, TargetVec2, IncludePayload)
if IncludePayload then
-- Max random asset score.
local RandomScoreMax=asset.legion and asset.legion.RandomAssetScore or LEGION.RandomAssetScore
-- Random score.
local RandomScore=math.random(0, RandomScoreMax)
-- Debug info.
--env.info(string.format("Asset %s: randomscore=%d, max=%d", asset.spawngroupname, RandomScore, RandomScoreMax))
-- Add a bit of randomness.
asset.score=asset.score+RandomScore
end
end end
--- Sort assets wrt to their mission score. Higher is better. --- Sort assets wrt to their mission score. Higher is better.
@ -3246,7 +3269,7 @@ function LEGION._OptimizeAssetSelection(assets, MissionType, TargetVec2, Include
local text=string.format("Optimized %d assets for %s mission/transport (payload=%s):", #assets, MissionType, tostring(IncludePayload)) local text=string.format("Optimized %d assets for %s mission/transport (payload=%s):", #assets, MissionType, tostring(IncludePayload))
for i,Asset in pairs(assets) do for i,Asset in pairs(assets) do
local asset=Asset --Functional.Warehouse#WAREHOUSE.Assetitem local asset=Asset --Functional.Warehouse#WAREHOUSE.Assetitem
text=text..string.format("\n%s %s: score=%d", asset.squadname, asset.spawngroupname, asset.score or -1) text=text..string.format("\n%d. %s [%s]: score=%d", i, asset.spawngroupname, asset.squadname, asset.score or -1)
asset.score=nil asset.score=nil
end end
env.info(text) env.info(text)

View File

@ -8123,7 +8123,7 @@ function OPSGROUP:_CheckCargoTransport()
for _,_cargo in pairs(self.cargoTZC.Cargos) do for _,_cargo in pairs(self.cargoTZC.Cargos) do
local cargo=_cargo --Ops.OpsGroup#OPSGROUP.CargoGroup local cargo=_cargo --Ops.OpsGroup#OPSGROUP.CargoGroup
if cargo.type==OPSTRANSPORT.CargoType.OPSTRANPORT then if cargo.type==OPSTRANSPORT.CargoType.OPSGROUP then
-- Check if anyone is still boarding. -- Check if anyone is still boarding.
if cargo.opsgroup and cargo.opsgroup:IsBoarding(self.groupname) then if cargo.opsgroup and cargo.opsgroup:IsBoarding(self.groupname) then