From 7456489fb0e1c25481136f0fdbdd7302447ff298 Mon Sep 17 00:00:00 2001 From: Applevangelist Date: Fri, 28 Nov 2025 12:48:49 +0100 Subject: [PATCH] xx --- .../Moose/Functional/Scoring.lua | 25 ++++---- Moose Development/Moose/Ops/CTLD.lua | 62 ++++++++++++++++--- 2 files changed, 66 insertions(+), 21 deletions(-) diff --git a/Moose Development/Moose/Functional/Scoring.lua b/Moose Development/Moose/Functional/Scoring.lua index 6ddd370c4..a05747933 100644 --- a/Moose Development/Moose/Functional/Scoring.lua +++ b/Moose Development/Moose/Functional/Scoring.lua @@ -1153,7 +1153,7 @@ function SCORING:_EventOnHit( Event ) TargetType = "Scenery" TargetSceneryObject = TargetUNIT self:T("***** Target is Scenery and TargetUNIT is SCENERY object!") - UTILS.PrintTableToLog(TargetSceneryObject) + --UTILS.PrintTableToLog(TargetSceneryObject) end TargetUnitCoalition = _SCORINGCoalition[TargetCoalition] @@ -1374,17 +1374,18 @@ function SCORING:_EventOnHit( Event ) -- Player contains the score data from self.Players[WeaponPlayerName] local PlayerName = Event.IniPlayerName or "Ghost" local Player = self.Players[PlayerName] - - Player.Score = Player.Score + Score - Player.Score = Player.Score + self.ScoreIncrementOnHit - MESSAGE:NewType( self.DisplayMessagePrefix .. "hit in zone '" .. ScoreZone:GetName() .. "'." .. - "Player '" .. PlayerName .. "' receives an extra " .. Score .. " points! " .. "Total: " .. Player.Score - Player.Penalty, - MESSAGE.Type.Information ) - :ToAllIf( self:IfMessagesZone() and self:IfMessagesToAll() ) - :ToCoalitionIf( InitCoalition, self:IfMessagesZone() and self:IfMessagesToCoalition() ) - - self:ScoreCSV( PlayerName, "", "HIT_SCORE", 1, Score, InitUnitName, InitUnitCoalition, InitUnitCategory, InitUnitType, TargetUnitName, "", "Zone", TargetUnitType ) - end + if Player then + Player.Score = Player.Score + Score + Player.Score = Player.Score + self.ScoreIncrementOnHit + MESSAGE:NewType( self.DisplayMessagePrefix .. "hit in zone '" .. ScoreZone:GetName() .. "'." .. + "Player '" .. PlayerName .. "' receives an extra " .. Score .. " points! " .. "Total: " .. Player.Score - Player.Penalty, + MESSAGE.Type.Information ) + :ToAllIf( self:IfMessagesZone() and self:IfMessagesToAll() ) + :ToCoalitionIf( InitCoalition, self:IfMessagesZone() and self:IfMessagesToCoalition() ) + + self:ScoreCSV( PlayerName, "", "HIT_SCORE", 1, Score, InitUnitName, InitUnitCoalition, InitUnitCategory, InitUnitType, TargetUnitName, "", "Zone", TargetUnitType ) + end + end end end diff --git a/Moose Development/Moose/Ops/CTLD.lua b/Moose Development/Moose/Ops/CTLD.lua index 42e8d4e03..de13ea731 100644 --- a/Moose Development/Moose/Ops/CTLD.lua +++ b/Moose Development/Moose/Ops/CTLD.lua @@ -1423,7 +1423,7 @@ CTLD.FixedWingTypes = { --- CTLD class version. -- @field #string version -CTLD.version="1.3.39" +CTLD.version="1.3.40" --- Instantiate a new CTLD. -- @param #CTLD self @@ -2273,6 +2273,12 @@ function CTLD:_FindCratesCargoObject(Name) return cargo end end + for _,_cargo in pairs(self.Cargo_Statics)do + local cargo = _cargo -- #CTLD_CARGO + if cargo.Name == Name then + return cargo + end + end return nil end @@ -2840,14 +2846,16 @@ end -- @param #table stockSummary Optional pooled stock summary. -- @return #CTLD self function CTLD:_AddCrateQuantityMenus(Group, Unit, parentMenu, cargoObj, stockSummary) + self:T("_AddCrateQuantityMenus "..cargoObj.Name) local needed = cargoObj:GetCratesNeeded() or 1 local stockEntry = self:_GetCrateStockEntry(cargoObj, stockSummary) - local stock = nil + local stock = 0 if stockEntry and type(stockEntry.Stock) == "number" then stock = stockEntry.Stock else stock = cargoObj:GetStock() end + self:T("_AddCrateQuantityMenus "..cargoObj.Name.." Stock: "..tostring(stock)) local maxQuantity = self.maxCrateMenuQuantity or 1 local availableSets = nil if type(stock) == "number" and stock >= 0 then @@ -2861,6 +2869,7 @@ function CTLD:_AddCrateQuantityMenus(Group, Unit, parentMenu, cargoObj, stockSum end end maxQuantity = math.floor(maxQuantity) + self:T("_AddCrateQuantityMenus maxQuantity "..maxQuantity) if maxQuantity < 1 then return self end @@ -2896,6 +2905,7 @@ function CTLD:_AddCrateQuantityMenus(Group, Unit, parentMenu, cargoObj, stockSum maxQuantity = 1 end end + self:T("_AddCrateQuantityMenus maxQuantity "..maxQuantity.." allowLoad "..tostring(allowLoad)) local maxMassSets = nil if Unit then local maxload = self:_GetMaxLoadableMass(Unit) @@ -2911,10 +2921,14 @@ function CTLD:_AddCrateQuantityMenus(Group, Unit, parentMenu, cargoObj, stockSum end end end + self:T("_AddCrateQuantityMenus maxQuantity "..maxQuantity.." allowLoad "..tostring(allowLoad)) if maxQuantity < 1 then return self end + if maxQuantity == 1 then + self:T("_AddCrateQuantityMenus maxQuantity "..maxQuantity.." Menu for MaxQ=1 ".."parentMenu.MenuText = "..parentMenu.MenuText) + --parentMenu.MenuText MENU_GROUP_COMMAND:New(Group, "Get", parentMenu, self._GetCrateQuantity, self, Group, Unit, cargoObj, 1) local canLoad = (allowLoad and (not capacitySets or capacitySets >= 1) and (not maxMassSets or maxMassSets >= 1)) if canLoad then @@ -2928,10 +2942,14 @@ function CTLD:_AddCrateQuantityMenus(Group, Unit, parentMenu, cargoObj, stockSum end MENU_GROUP_COMMAND:New(Group, msg, parentMenu, self._SendMessage, self, msg, 10, false, Group) end + parentMenu:Refresh() return self end + for quantity = 1, maxQuantity do + self:T("_AddCrateQuantityMenus maxQuantity "..maxQuantity.." Menu for MaxQ>1") local label = tostring(quantity) + self:T("_AddCrateQuantityMenus Label "..label) local qMenu = MENU_GROUP:New(Group, label, parentMenu) MENU_GROUP_COMMAND:New(Group, "Get", qMenu, self._GetCrateQuantity, self, Group, Unit, cargoObj, quantity) local canLoad = (allowLoad and (not capacitySets or capacitySets >= quantity) and (not maxMassSets or maxMassSets >= quantity)) @@ -5105,7 +5123,12 @@ function CTLD:_RefreshF10Menus() return end local needed = cargoObj:GetCratesNeeded() or 1 - local txt = string.format("%d crate%s %s (%dkg)",needed,needed==1 and "" or "s",cargoObj.Name,cargoObj.PerCrateMass or 0) + local txt + if needed > 1 then + txt = string.format("%d crate%s %s (%dkg)",needed,needed==1 and "" or "s",cargoObj.Name,cargoObj.PerCrateMass or 0) + else + txt = string.format("%s (%dkg)",cargoObj.Name,cargoObj.PerCrateMass or 0) + end if cargoObj.Location then txt = txt.."[R]" end if self.showstockinmenuitems then local suffix = self:_FormatCrateStockSuffix(cargoObj,crateStockSummary) @@ -5116,7 +5139,7 @@ function CTLD:_RefreshF10Menus() self:_AddCrateQuantityMenus(_group,_unit,mSet,cargoObj,crateStockSummary) end - if self.usesubcats then + if self.usesubcats == true then local subcatmenus = {} for catName,_ in pairs(self.subcats) do subcatmenus[catName] = MENU_GROUP:New(_group,catName,cratesmenu) @@ -5144,7 +5167,12 @@ function CTLD:_RefreshF10Menus() for _, cargoObj in pairs(self.Cargo_Crates) do if not cargoObj.DontShowInMenu then local needed = cargoObj:GetCratesNeeded() or 1 - local txt = string.format("%d crate%s %s (%dkg)", needed, needed==1 and "" or "s", cargoObj.Name, cargoObj.PerCrateMass or 0) + local txt + if needed > 1 then + txt = string.format("%d crate%s %s (%dkg)",needed,needed==1 and "" or "s",cargoObj.Name,cargoObj.PerCrateMass or 0) + else + txt = string.format("%s (%dkg)",cargoObj.Name,cargoObj.PerCrateMass or 0) + end if cargoObj.Location then txt = txt.."[R]" end local stock = cargoObj:GetStock() if stock >= 0 and self.showstockinmenuitems then txt = txt.."["..stock.."]" end @@ -5154,7 +5182,12 @@ function CTLD:_RefreshF10Menus() for _, cargoObj in pairs(self.Cargo_Statics) do if not cargoObj.DontShowInMenu then local needed = cargoObj:GetCratesNeeded() or 1 - local txt = string.format("%d crate%s %s (%dkg)", needed, needed==1 and "" or "s", cargoObj.Name, cargoObj.PerCrateMass or 0) + local txt + if needed > 1 then + txt = string.format("%d crate%s %s (%dkg)",needed,needed==1 and "" or "s",cargoObj.Name,cargoObj.PerCrateMass or 0) + else + txt = string.format("%s (%dkg)",cargoObj.Name,cargoObj.PerCrateMass or 0) + end if cargoObj.Location then txt = txt.."[R]" end local stock = cargoObj:GetStock() if stock >= 0 and self.showstockinmenuitems then txt = txt.."["..stock.."]" end @@ -5165,7 +5198,12 @@ function CTLD:_RefreshF10Menus() for _, cargoObj in pairs(self.Cargo_Crates) do if not cargoObj.DontShowInMenu then local needed = cargoObj:GetCratesNeeded() or 1 - local txt = string.format("%d crate%s %s (%dkg)", needed, needed==1 and "" or "s", cargoObj.Name, cargoObj.PerCrateMass or 0) + local txt + if needed > 1 then + txt = string.format("%d crate%s %s (%dkg)",needed,needed==1 and "" or "s",cargoObj.Name,cargoObj.PerCrateMass or 0) + else + txt = string.format("%s (%dkg)",cargoObj.Name,cargoObj.PerCrateMass or 0) + end if cargoObj.Location then txt = txt.."[R]" end local stock = cargoObj:GetStock() if stock >= 0 and self.showstockinmenuitems then txt = txt.."["..stock.."]" end @@ -5175,7 +5213,12 @@ function CTLD:_RefreshF10Menus() for _, cargoObj in pairs(self.Cargo_Statics) do if not cargoObj.DontShowInMenu then local needed = cargoObj:GetCratesNeeded() or 1 - local txt = string.format("%d crate%s %s (%dkg)", needed, needed==1 and "" or "s", cargoObj.Name, cargoObj.PerCrateMass or 0) + local txt + if needed > 1 then + txt = string.format("%d crate%s %s (%dkg)",needed,needed==1 and "" or "s",cargoObj.Name,cargoObj.PerCrateMass or 0) + else + txt = string.format("%s (%dkg)",cargoObj.Name,cargoObj.PerCrateMass or 0) + end if cargoObj.Location then txt = txt.."[R]" end local stock = cargoObj:GetStock() if stock >= 0 and self.showstockinmenuitems then txt = txt.."["..stock.."]" end @@ -8655,10 +8698,11 @@ do -- TODO CTLD_HERCULES ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ -- This script will only work for the Herculus mod by Anubis, and only for **Air Dropping** cargo from the Hercules. +-- It *DOES NOT* work with the purchaseable Hercules module from ED. -- Use the standard Moose CTLD if you want to unload on the ground. -- Payloads carried by pylons 11, 12 and 13 need to be declared in the Herculus_Loadout.lua file -- Except for Ammo pallets, this script will spawn whatever payload gets launched from pylons 11, 12 and 13 --- Pylons 11, 12 and 13 are moveable within the Herculus cargobay area +-- Pylons 11, 12 and 13 are moveable within the Hercules cargobay area -- Ammo pallets can only be jettisoned from these pylons with no benefit to DCS world -- To benefit DCS world, Ammo pallets need to be off/on loaded using DCS arming and refueling window -- Cargo_Container_Enclosed = true: Cargo enclosed in container with parachute, need to be dropped from 100m (300ft) or more, except when parked on ground