From 2ad111dd50838db4b556886d9b45ae294fdfa1d4 Mon Sep 17 00:00:00 2001 From: Applevangelist Date: Thu, 28 Mar 2024 08:44:54 +0100 Subject: [PATCH 1/6] #CTLD - allow availability of crates restriction to one zone --- Moose Development/Moose/Ops/CTLD.lua | 76 ++++++++++++++++++++++++---- 1 file changed, 66 insertions(+), 10 deletions(-) diff --git a/Moose Development/Moose/Ops/CTLD.lua b/Moose Development/Moose/Ops/CTLD.lua index e571e5cd0..af6a94cf7 100644 --- a/Moose Development/Moose/Ops/CTLD.lua +++ b/Moose Development/Moose/Ops/CTLD.lua @@ -24,7 +24,7 @@ -- @module Ops.CTLD -- @image OPS_CTLD.jpg --- Last Update February 2024 +-- Last Update March 2024 do @@ -45,6 +45,7 @@ do -- @field #number Stock Number of builds available, -1 for unlimited. -- @field #string Subcategory Sub-category name. -- @field #boolean DontShowInMenu Show this item in menu or not. +-- @field Core.Zone#ZONE Location Location (if set) where to get this cargo item. -- @extends Core.Base#BASE --- @@ -64,6 +65,7 @@ CTLD_CARGO = { Stock = nil, Mark = nil, DontShowInMenu = false, + Location = nil, } --- Define cargo types. @@ -100,8 +102,9 @@ CTLD_CARGO = { -- @param #number Stock Number of builds available, nil for unlimited -- @param #string Subcategory Name of subcategory, handy if using > 10 types to load. -- @param #boolean DontShowInMenu Show this item in menu or not (default: false == show it). + -- @param Core.Zone#ZONE Location (optional) Where the cargo is available (one location only). -- @return #CTLD_CARGO self - function CTLD_CARGO:New(ID, Name, Templates, Sorte, HasBeenMoved, LoadDirectly, CratesNeeded, Positionable, Dropped, PerCrateMass, Stock, Subcategory,DontShowInMenu) + function CTLD_CARGO:New(ID, Name, Templates, Sorte, HasBeenMoved, LoadDirectly, CratesNeeded, Positionable, Dropped, PerCrateMass, Stock, Subcategory, DontShowInMenu, Location) -- Inherit everything from BASE class. local self=BASE:Inherit(self, BASE:New()) -- #CTLD_CARGO self:T({ID, Name, Templates, Sorte, HasBeenMoved, LoadDirectly, CratesNeeded, Positionable, Dropped}) @@ -119,8 +122,19 @@ CTLD_CARGO = { self.Mark = nil self.Subcategory = Subcategory or "Other" self.DontShowInMenu = DontShowInMenu or false + if type(Location) == "string" then + Location = ZONE:New(Location) + end + self.Location = Location return self end + + --- Query Location. + -- @param #CTLD_CARGO self + -- @return Core.Zone#ZONE location or `nil` if not set + function CTLD_CARGO:GetLocation() + return self.Location + end --- Query ID. -- @param #CTLD_CARGO self @@ -660,6 +674,8 @@ do -- my_ctld:AddCratesCargo("Humvee",{"Humvee"},CTLD_CARGO.Enum.VEHICLE,2,2775) -- -- if you want to limit your stock, add a number (here: 10) as parameter after weight. No parameter / nil means unlimited stock. -- my_ctld:AddCratesCargo("Humvee",{"Humvee"},CTLD_CARGO.Enum.VEHICLE,2,2775,10) +-- -- additionally, you can limit **where** the stock is available (one location only!) - this one is available in a zone called "Vehicle Store". +-- my_ctld:AddCratesCargo("Humvee",{"Humvee"},CTLD_CARGO.Enum.VEHICLE,2,2775,10,nil,nil,"Vehicle Store") -- -- -- add infantry unit called "Forward Ops Base" using template "FOB", of type FOB, size 4, i.e. needs four crates to be build: -- my_ctld:AddCratesCargo("Forward Ops Base",{"FOB"},CTLD_CARGO.Enum.FOB,4) @@ -761,6 +777,9 @@ do -- ["Hercules"] = {type="Hercules", crates=true, troops=true, cratelimit = 7, trooplimit = 64, length = 25, cargoweightlimit = 19000}, -- ["UH-60L"] = {type="UH-60L", crates=true, troops=true, cratelimit = 2, trooplimit = 20, length = 16, cargoweightlimit = 3500}, -- ["AH-64D_BLK_II"] = {type="AH-64D_BLK_II", crates=false, troops=true, cratelimit = 0, trooplimit = 2, length = 17, cargoweightlimit = 200}, +-- ["MH-60R"] = {type="MH-60R", crates=true, troops=true, cratelimit = 2, trooplimit = 20, length = 16, cargoweightlimit = 3500}, -- 4t cargo, 20 (unsec) seats +-- ["SH-60B"] = {type="SH-60B", crates=true, troops=true, cratelimit = 2, trooplimit = 20, length = 16, cargoweightlimit = 3500}, -- 4t cargo, 20 (unsec) seats +-- ["Bronco-OV-10A"] = {type="Bronco-OV-10A", crates= false, troops=true, cratelimit = 0, trooplimit = 5, length = 13, cargoweightlimit = 1450}, -- -- ### 2.1.2 Activate and deactivate zones -- @@ -1227,13 +1246,14 @@ CTLD.UnitTypeCapabilities = { --Actually it's longer, but the center coord is off-center of the model. ["UH-60L"] = {type="UH-60L", crates=true, troops=true, cratelimit = 2, trooplimit = 20, length = 16, cargoweightlimit = 3500}, -- 4t cargo, 20 (unsec) seats ["MH-60R"] = {type="MH-60R", crates=true, troops=true, cratelimit = 2, trooplimit = 20, length = 16, cargoweightlimit = 3500}, -- 4t cargo, 20 (unsec) seats + ["SH-60B"] = {type="SH-60B", crates=true, troops=true, cratelimit = 2, trooplimit = 20, length = 16, cargoweightlimit = 3500}, -- 4t cargo, 20 (unsec) seats ["AH-64D_BLK_II"] = {type="AH-64D_BLK_II", crates=false, troops=true, cratelimit = 0, trooplimit = 2, length = 17, cargoweightlimit = 200}, -- 2 ppl **outside** the helo ["Bronco-OV-10A"] = {type="Bronco-OV-10A", crates= false, troops=true, cratelimit = 0, trooplimit = 5, length = 13, cargoweightlimit = 1450}, } --- CTLD class version. -- @field #string version -CTLD.version="1.0.48" +CTLD.version="1.0.49" --- Instantiate a new CTLD. -- @param #CTLD self @@ -2355,7 +2375,21 @@ function CTLD:_GetCrates(Group, Unit, Cargo, number, drop, pack) self:_SendMessage("You are not close enough to a logistics zone!", 10, false, Group) if not self.debug then return self end end - + + -- Check cargo location if available + local location = Cargo:GetLocation() + + if location then + local unitcoord = Unit:GetCoordinate() or Group:GetCoordinate() + if unitcoord then + if not location:IsCoordinateInZone(unitcoord) then + -- no we're not at the right spot + self:_SendMessage("The requested cargo is not available in this zone!", 10, false, Group) + if not self.debug then return self end + end + end + end + -- avoid crate spam local capabilities = self:_GetUnitCapabilities(Unit) -- #CTLD.UnitTypeCapabilities local canloadcratesno = capabilities.cratelimit @@ -3741,9 +3775,13 @@ function CTLD:_RefreshF10Menus() local entry = _entry -- #CTLD_CARGO local subcat = entry.Subcategory local noshow = entry.DontShowInMenu + local zone = entry.Location if not noshow then menucount = menucount + 1 local menutext = string.format("Crate %s (%dkg)",entry.Name,entry.PerCrateMass or 0) + if zone then + menutext = string.format("Crate %s (%dkg)[R]",entry.Name,entry.PerCrateMass or 0) + end menus[menucount] = MENU_GROUP_COMMAND:New(_group,menutext,subcatmenus[subcat],self._GetCrates, self, _group, _unit, entry) end end @@ -3751,9 +3789,13 @@ function CTLD:_RefreshF10Menus() local entry = _entry -- #CTLD_CARGO local subcat = entry.Subcategory local noshow = entry.DontShowInMenu + local zone = entry.Location if not noshow then menucount = menucount + 1 local menutext = string.format("Crate %s (%dkg)",entry.Name,entry.PerCrateMass or 0) + if zone then + menutext = string.format("Crate %s (%dkg)[R]",entry.Name,entry.PerCrateMass or 0) + end menus[menucount] = MENU_GROUP_COMMAND:New(_group,menutext,subcatmenus[subcat],self._GetCrates, self, _group, _unit, entry) end end @@ -3761,18 +3803,26 @@ function CTLD:_RefreshF10Menus() for _,_entry in pairs(self.Cargo_Crates) do local entry = _entry -- #CTLD_CARGO local noshow = entry.DontShowInMenu + local zone = entry.Location if not noshow then menucount = menucount + 1 local menutext = string.format("Crate %s (%dkg)",entry.Name,entry.PerCrateMass or 0) + if zone then + menutext = string.format("Crate %s (%dkg)[R]",entry.Name,entry.PerCrateMass or 0) + end menus[menucount] = MENU_GROUP_COMMAND:New(_group,menutext,cratesmenu,self._GetCrates, self, _group, _unit, entry) end end for _,_entry in pairs(self.Cargo_Statics) do local entry = _entry -- #CTLD_CARGO local noshow = entry.DontShowInMenu + local zone = entry.Location if not noshow then menucount = menucount + 1 local menutext = string.format("Crate %s (%dkg)",entry.Name,entry.PerCrateMass or 0) + if zone then + menutext = string.format("Crate %s (%dkg)[R]",entry.Name,entry.PerCrateMass or 0) + end menus[menucount] = MENU_GROUP_COMMAND:New(_group,menutext,cratesmenu,self._GetCrates, self, _group, _unit, entry) end end @@ -3853,7 +3903,9 @@ end -- @param #number PerCrateMass Mass in kg of each crate -- @param #number Stock Number of buildable groups in stock. Nil for unlimited. -- @param #string SubCategory Name of sub-category (optional). -function CTLD:AddCratesCargo(Name,Templates,Type,NoCrates,PerCrateMass,Stock,SubCategory) +-- @param #boolean DontShowInMenu (optional) If set to "true" this won't show up in the menu. +-- @param Core.Zone#ZONE Location (optional) If set, the cargo item is **only** available here. Can be a #ZONE object or the name of a zone as #string. +function CTLD:AddCratesCargo(Name,Templates,Type,NoCrates,PerCrateMass,Stock,SubCategory,DontShowInMenu,Location) self:T(self.lid .. " AddCratesCargo") if not self:_CheckTemplates(Templates) then self:E(self.lid .. "Crates Cargo for " .. Name .. " has missing template(s)!" ) @@ -3861,7 +3913,7 @@ function CTLD:AddCratesCargo(Name,Templates,Type,NoCrates,PerCrateMass,Stock,Sub end self.CargoCounter = self.CargoCounter + 1 -- Crates are not directly loadable - local cargo = CTLD_CARGO:New(self.CargoCounter,Name,Templates,Type,false,false,NoCrates,nil,nil,PerCrateMass,Stock,SubCategory) + local cargo = CTLD_CARGO:New(self.CargoCounter,Name,Templates,Type,false,false,NoCrates,nil,nil,PerCrateMass,Stock,SubCategory,DontShowInMenu,Location) table.insert(self.Cargo_Crates,cargo) return self end @@ -3872,13 +3924,15 @@ end -- @param #number Mass Mass in kg of each static in kg, e.g. 100. -- @param #number Stock Number of groups in stock. Nil for unlimited. -- @param #string SubCategory Name of sub-category (optional). -function CTLD:AddStaticsCargo(Name,Mass,Stock,SubCategory) +-- @param #boolean DontShowInMenu (optional) If set to "true" this won't show up in the menu. +-- @param Core.Zone#ZONE Location (optional) If set, the cargo item is **only** available here. Can be a #ZONE object or the name of a zone as #string. +function CTLD:AddStaticsCargo(Name,Mass,Stock,SubCategory,DontShowInMenu,Location) self:T(self.lid .. " AddStaticsCargo") self.CargoCounter = self.CargoCounter + 1 local type = CTLD_CARGO.Enum.STATIC local template = STATIC:FindByName(Name,true):GetTypeName() -- Crates are not directly loadable - local cargo = CTLD_CARGO:New(self.CargoCounter,Name,template,type,false,false,1,nil,nil,Mass,Stock,SubCategory) + local cargo = CTLD_CARGO:New(self.CargoCounter,Name,template,type,false,false,1,nil,nil,Mass,Stock,SubCategory,DontShowInMenu,Location) table.insert(self.Cargo_Statics,cargo) return self end @@ -3908,7 +3962,9 @@ end -- @param #number PerCrateMass Mass in kg of each crate -- @param #number Stock Number of groups in stock. Nil for unlimited. -- @param #string SubCategory Name of the sub-category (optional). -function CTLD:AddCratesRepair(Name,Template,Type,NoCrates, PerCrateMass,Stock,SubCategory) +-- @param #boolean DontShowInMenu (optional) If set to "true" this won't show up in the menu. +-- @param Core.Zone#ZONE Location (optional) If set, the cargo item is **only** available here. Can be a #ZONE object or the name of a zone as #string. +function CTLD:AddCratesRepair(Name,Template,Type,NoCrates, PerCrateMass,Stock,SubCategory,DontShowInMenu,Location) self:T(self.lid .. " AddCratesRepair") if not self:_CheckTemplates(Template) then self:E(self.lid .. "Repair Cargo for " .. Name .. " has a missing template!" ) @@ -3916,7 +3972,7 @@ function CTLD:AddCratesRepair(Name,Template,Type,NoCrates, PerCrateMass,Stock,Su end self.CargoCounter = self.CargoCounter + 1 -- Crates are not directly loadable - local cargo = CTLD_CARGO:New(self.CargoCounter,Name,Template,Type,false,false,NoCrates,nil,nil,PerCrateMass,Stock,SubCategory) + local cargo = CTLD_CARGO:New(self.CargoCounter,Name,Template,Type,false,false,NoCrates,nil,nil,PerCrateMass,Stock,SubCategory,DontShowInMenu,Location) table.insert(self.Cargo_Crates,cargo) return self end From 67b43e2c686a617bd0a129dde0c39cc2ffd11bef Mon Sep 17 00:00:00 2001 From: Applevangelist Date: Thu, 28 Mar 2024 11:12:23 +0100 Subject: [PATCH 2/6] #CTLD - Extract troops makes troops run towards the helo --- Moose Development/Moose/Ops/CTLD.lua | 51 +++++++++++++++++----------- 1 file changed, 31 insertions(+), 20 deletions(-) diff --git a/Moose Development/Moose/Ops/CTLD.lua b/Moose Development/Moose/Ops/CTLD.lua index af6a94cf7..3c4cbb563 100644 --- a/Moose Development/Moose/Ops/CTLD.lua +++ b/Moose Development/Moose/Ops/CTLD.lua @@ -1253,7 +1253,7 @@ CTLD.UnitTypeCapabilities = { --- CTLD class version. -- @field #string version -CTLD.version="1.0.49" +CTLD.version="1.0.50" --- Instantiate a new CTLD. -- @param #CTLD self @@ -2260,7 +2260,7 @@ end local secondarygroups = {} for i=1,#distancekeys do - local nearestGroup = nearestList[distancekeys[i]] + local nearestGroup = nearestList[distancekeys[i]] -- Wrapper.Group#GROUP -- find matching cargo type local groupType = string.match(nearestGroup:GetName(), "(.+)-(.+)$") local Cargotype = nil @@ -2296,20 +2296,31 @@ end self.CargoCounter = self.CargoCounter + 1 local loadcargotype = CTLD_CARGO:New(self.CargoCounter, Cargotype.Name, Cargotype.Templates, Cargotype.CargoType, true, true, Cargotype.CratesNeeded,nil,nil,Cargotype.PerCrateMass) self:T({cargotype=loadcargotype}) + local running = math.floor(nearestDistance / 4)+10 -- time run to helo plus boarding loaded.Troopsloaded = loaded.Troopsloaded + troopsize table.insert(loaded.Cargo,loadcargotype) self.Loaded_Cargo[unitname] = loaded - self:_SendMessage("Troops boarded!", 10, false, Group) + self:ScheduleOnce(running,self._SendMessage,self,"Troops boarded!", 10, false, Group) + self:_SendMessage("Troops boarding!", 10, false, Group) self:_UpdateUnitCargoMass(Unit) - self:__TroopsExtracted(1,Group, Unit, nearestGroup) - + self:__TroopsExtracted(running,Group, Unit, nearestGroup) + local coord = Unit:GetCoordinate() or Group:GetCoordinate() -- Core.Point#COORDINATE + local Point + if coord then + local heading = unit:GetHeading() or 0 + local Angle = math.floor((heading+160)%360) + Point = coord:Translate(8,Angle):GetVec2() + if Point then + nearestGroup:RouteToVec2(Point,4) + end + end -- clean up: if type(Cargotype.Templates) == "table" and Cargotype.Templates[2] then for _,_key in pairs (Cargotype.Templates) do table.insert(secondarygroups,_key) end end - nearestGroup:Destroy(false) + nearestGroup:Destroy(false,running) end end end @@ -2319,7 +2330,7 @@ end if _group and _group:IsAlive() then local groupname = string.match(_group:GetName(), "(.+)-(.+)$") if _name == groupname then - _group:Destroy(false) + _group:Destroy(false,15) end end end @@ -5437,19 +5448,19 @@ end return self end - --- (Internal) FSM Function onbeforeTroopsExtracted. - -- @param #CTLD self - -- @param #string From State. - -- @param #string Event Trigger. - -- @param #string To State. - -- @param Wrapper.Group#GROUP Group Group Object. - -- @param Wrapper.Unit#UNIT Unit Unit Object. - -- @param Wrapper.Group#GROUP Troops Troops #GROUP Object. - -- @return #CTLD self - function CTLD:onbeforeTroopsExtracted(From, Event, To, Group, Unit, Troops) - self:T({From, Event, To}) - return self - end + --- (Internal) FSM Function onbeforeTroopsExtracted. + -- @param #CTLD self + -- @param #string From State. + -- @param #string Event Trigger. + -- @param #string To State. + -- @param Wrapper.Group#GROUP Group Group Object. + -- @param Wrapper.Unit#UNIT Unit Unit Object. + -- @param Wrapper.Group#GROUP Troops Troops #GROUP Object. + -- @return #CTLD self + function CTLD:onbeforeTroopsExtracted(From, Event, To, Group, Unit, Troops) + self:T({From, Event, To}) + return self + end --- (Internal) FSM Function onbeforeTroopsDeployed. From dcc15afb8924ef1481bb368ee9595b9fa068a58a Mon Sep 17 00:00:00 2001 From: Applevangelist Date: Mon, 1 Apr 2024 12:59:14 +0200 Subject: [PATCH 3/6] xxx --- Moose Development/Moose/Core/Point.lua | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/Moose Development/Moose/Core/Point.lua b/Moose Development/Moose/Core/Point.lua index bfb623bca..6db800ac8 100644 --- a/Moose Development/Moose/Core/Point.lua +++ b/Moose Development/Moose/Core/Point.lua @@ -3148,17 +3148,18 @@ do -- COORDINATE -- @param #string Northing Meters northing - string in order to allow for leading zeros, e.g. "12340". Should be 5 digits. -- @return #COORDINATE self function COORDINATE:NewFromMGRS( UTMZone, MGRSDigraph, Easting, Northing ) - if string.len(Easting) < 5 then Easting = Easting..string.rep("0",5-string.len(Easting) )end - if string.len(Northing) < 5 then Northing = Northing..string.rep("0",5-string.len(Northing) )end + if string.len(Easting) < 5 then Easting = tostring(Easting..string.rep("0",5-string.len(Easting) )) end + if string.len(Northing) < 5 then Northing = tostring(Northing..string.rep("0",5-string.len(Northing) )) end local MGRS = { UTMZone = UTMZone, MGRSDigraph = MGRSDigraph, - Easting = Easting, - Northing = Northing, + Easting = tostring(Easting), + Northing = tostring(Northing), } local lat, lon = coord.MGRStoLL(MGRS) local point = coord.LLtoLO(lat, lon, 0) local coord = COORDINATE:NewFromVec2({x=point.x,y=point.z}) + return coord end --- Provides a coordinate string of the point, based on a coordinate format system: From 67d53034df3d409586a33c8819d11f4ad6bf5f34 Mon Sep 17 00:00:00 2001 From: Applevangelist Date: Mon, 1 Apr 2024 19:11:53 +0200 Subject: [PATCH 4/6] bugfix --- Moose Development/Moose/Ops/OpsGroup.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Moose Development/Moose/Ops/OpsGroup.lua b/Moose Development/Moose/Ops/OpsGroup.lua index 2298aba18..f5a76c9cd 100644 --- a/Moose Development/Moose/Ops/OpsGroup.lua +++ b/Moose Development/Moose/Ops/OpsGroup.lua @@ -597,7 +597,7 @@ function OPSGROUP:New(group) if units then local masterunit=units[1] --Wrapper.Unit#UNIT - if unit then + if masterunit then -- Get Descriptors. self.descriptors=masterunit:GetDesc() From 2eb4118d5647b8038929511dba6ecbcbdf7d8340 Mon Sep 17 00:00:00 2001 From: Applevangelist Date: Tue, 2 Apr 2024 10:47:58 +0200 Subject: [PATCH 5/6] xxx --- Moose Development/Moose/Core/Base.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Moose Development/Moose/Core/Base.lua b/Moose Development/Moose/Core/Base.lua index 6ab927288..d4851370c 100644 --- a/Moose Development/Moose/Core/Base.lua +++ b/Moose Development/Moose/Core/Base.lua @@ -1150,7 +1150,7 @@ end -- @return #string Text function BASE:_Serialize(Arguments) local text = UTILS.PrintTableToLog({Arguments}, 0, true) - text = string.gsub(text,"\n","") + text = string.gsub(text,"(\n+)","") text = string.gsub(text,"%(%(","%(") text = string.gsub(text,"%)%)","%)") text = string.gsub(text,"(%s+)","") From ba14330281c0223f5f38c79f241919ad2195d0f3 Mon Sep 17 00:00:00 2001 From: Applevangelist Date: Tue, 2 Apr 2024 13:22:54 +0200 Subject: [PATCH 6/6] Fix for counting alive target units only --- Moose Development/Moose/Tasking/Task_A2G.lua | 30 ++++++++++---------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/Moose Development/Moose/Tasking/Task_A2G.lua b/Moose Development/Moose/Tasking/Task_A2G.lua index 28c01fb15..84bdcf360 100644 --- a/Moose Development/Moose/Tasking/Task_A2G.lua +++ b/Moose Development/Moose/Tasking/Task_A2G.lua @@ -175,19 +175,19 @@ do -- TASK_A2G end - --- @param #TASK_A2G self + -- @param #TASK_A2G self -- @param Core.Set#SET_UNIT TargetSetUnit The set of targets. function TASK_A2G:SetTargetSetUnit( TargetSetUnit ) self.TargetSetUnit = TargetSetUnit end - --- @param #TASK_A2G self + -- @param #TASK_A2G self function TASK_A2G:GetPlannedMenuText() return self:GetStateString() .. " - " .. self:GetTaskName() .. " ( " .. self.TargetSetUnit:GetUnitTypesText() .. " )" end - --- @param #TASK_A2G self + -- @param #TASK_A2G self -- @param Core.Point#COORDINATE RendezVousCoordinate The Coordinate object referencing to the 2D point where the RendezVous point is located on the map. -- @param #number RendezVousRange The RendezVousRange that defines when the player is considered to have arrived at the RendezVous point. -- @param Wrapper.Unit#UNIT TaskUnit @@ -200,7 +200,7 @@ do -- TASK_A2G ActRouteRendezVous:SetRange( RendezVousRange ) end - --- @param #TASK_A2G self + -- @param #TASK_A2G self -- @param Wrapper.Unit#UNIT TaskUnit -- @return Core.Point#COORDINATE The Coordinate object referencing to the 2D point where the RendezVous point is located on the map. -- @return #number The RendezVousRange that defines when the player is considered to have arrived at the RendezVous point. @@ -212,7 +212,7 @@ do -- TASK_A2G return ActRouteRendezVous:GetCoordinate(), ActRouteRendezVous:GetRange() end - --- @param #TASK_A2G self + -- @param #TASK_A2G self -- @param Core.Zone#ZONE_BASE RendezVousZone The Zone object where the RendezVous is located on the map. -- @param Wrapper.Unit#UNIT TaskUnit function TASK_A2G:SetRendezVousZone( RendezVousZone, TaskUnit ) @@ -223,7 +223,7 @@ do -- TASK_A2G ActRouteRendezVous:SetZone( RendezVousZone ) end - --- @param #TASK_A2G self + -- @param #TASK_A2G self -- @param Wrapper.Unit#UNIT TaskUnit -- @return Core.Zone#ZONE_BASE The Zone object where the RendezVous is located on the map. function TASK_A2G:GetRendezVousZone( TaskUnit ) @@ -234,7 +234,7 @@ do -- TASK_A2G return ActRouteRendezVous:GetZone() end - --- @param #TASK_A2G self + -- @param #TASK_A2G self -- @param Core.Point#COORDINATE TargetCoordinate The Coordinate object where the Target is located on the map. -- @param Wrapper.Unit#UNIT TaskUnit function TASK_A2G:SetTargetCoordinate( TargetCoordinate, TaskUnit ) @@ -245,7 +245,7 @@ do -- TASK_A2G ActRouteTarget:SetCoordinate( TargetCoordinate ) end - --- @param #TASK_A2G self + -- @param #TASK_A2G self -- @param Wrapper.Unit#UNIT TaskUnit -- @return Core.Point#COORDINATE The Coordinate object where the Target is located on the map. function TASK_A2G:GetTargetCoordinate( TaskUnit ) @@ -256,7 +256,7 @@ do -- TASK_A2G return ActRouteTarget:GetCoordinate() end - --- @param #TASK_A2G self + -- @param #TASK_A2G self -- @param Core.Zone#ZONE_BASE TargetZone The Zone object where the Target is located on the map. -- @param Wrapper.Unit#UNIT TaskUnit function TASK_A2G:SetTargetZone( TargetZone, TaskUnit ) @@ -267,7 +267,7 @@ do -- TASK_A2G ActRouteTarget:SetZone( TargetZone ) end - --- @param #TASK_A2G self + -- @param #TASK_A2G self -- @param Wrapper.Unit#UNIT TaskUnit -- @return Core.Zone#ZONE_BASE The Zone object where the Target is located on the map. function TASK_A2G:GetTargetZone( TaskUnit ) @@ -280,7 +280,7 @@ do -- TASK_A2G function TASK_A2G:SetGoalTotal() - self.GoalTotal = self.TargetSetUnit:Count() + self.GoalTotal = self.TargetSetUnit:CountAlive() end function TASK_A2G:GetGoalTotal() @@ -304,14 +304,14 @@ do -- TASK_A2G function TASK_A2G:onafterGoal( TaskUnit, From, Event, To ) local TargetSetUnit = self.TargetSetUnit -- Core.Set#SET_UNIT - if TargetSetUnit:Count() == 0 then + if TargetSetUnit:CountAlive() == 0 then self:Success() end self:__Goal( -10 ) end - --- @param #TASK_A2G self + -- @param #TASK_A2G self function TASK_A2G:UpdateTaskInfo( DetectedItem ) if self:IsStatePlanned() or self:IsStateAssigned() then @@ -328,7 +328,7 @@ do -- TASK_A2G self.TaskInfo:AddThreat( ThreatText, ThreatLevel, 10, "MOD", true ) if self.Detection then - local DetectedItemsCount = self.TargetSetUnit:Count() + local DetectedItemsCount = self.TargetSetUnit:CountAlive() local ReportTypes = REPORT:New() local TargetTypes = {} for TargetUnitName, TargetUnit in pairs( self.TargetSetUnit:GetSet() ) do @@ -341,7 +341,7 @@ do -- TASK_A2G self.TaskInfo:AddTargetCount( DetectedItemsCount, 11, "O", true ) self.TaskInfo:AddTargets( DetectedItemsCount, ReportTypes:Text( ", " ), 20, "D", true ) else - local DetectedItemsCount = self.TargetSetUnit:Count() + local DetectedItemsCount = self.TargetSetUnit:CountAlive() local DetectedItemsTypes = self.TargetSetUnit:GetTypeNames() self.TaskInfo:AddTargetCount( DetectedItemsCount, 11, "O", true ) self.TaskInfo:AddTargets( DetectedItemsCount, DetectedItemsTypes, 20, "D", true )