mirror of
https://github.com/iTracerFacer/DCS_MissionDev.git
synced 2025-12-03 04:14:46 +00:00
added a new config flag plus a user-facing message, then implemented a strict “inside pickup zone” check before allowing Load Troops.
This commit is contained in:
parent
6eee20b84b
commit
d7409d44fd
@ -121,6 +121,7 @@ CTLD.Messages = {
|
|||||||
troops_unloaded_coalition = "{player} deployed {count} troops.",
|
troops_unloaded_coalition = "{player} deployed {count} troops.",
|
||||||
no_troops = "No troops onboard.",
|
no_troops = "No troops onboard.",
|
||||||
troops_deploy_failed = "Deploy failed: {reason}.",
|
troops_deploy_failed = "Deploy failed: {reason}.",
|
||||||
|
troop_pickup_zone_required = "Move inside a Supply Zone to load troops. Nearest zone is {zone_dist} {zone_dist_u} away.",
|
||||||
|
|
||||||
-- Coach & nav
|
-- Coach & nav
|
||||||
vectors_to_crate = "Nearest crate {id}: bearing {brg}°, range {rng} {rng_u}.",
|
vectors_to_crate = "Nearest crate {id}: bearing {brg}°, range {rng} {rng_u}.",
|
||||||
@ -163,6 +164,7 @@ CTLD.Config = {
|
|||||||
BuildCooldownSeconds = 60, -- seconds of cooldown after a successful build per group
|
BuildCooldownSeconds = 60, -- seconds of cooldown after a successful build per group
|
||||||
PickupZoneSmokeColor = trigger.smokeColor.Green, -- default smoke color when spawning crates at pickup zones
|
PickupZoneSmokeColor = trigger.smokeColor.Green, -- default smoke color when spawning crates at pickup zones
|
||||||
RequirePickupZoneForCrateRequest = true, -- enforce that crate requests must be near a Supply (Pickup) Zone
|
RequirePickupZoneForCrateRequest = true, -- enforce that crate requests must be near a Supply (Pickup) Zone
|
||||||
|
RequirePickupZoneForTroopLoad = true, -- if true, troops can only be loaded while inside a Supply (Pickup) Zone
|
||||||
PickupZoneMaxDistance = 10000, -- meters; nearest pickup zone must be within this distance to allow a request
|
PickupZoneMaxDistance = 10000, -- meters; nearest pickup zone must be within this distance to allow a request
|
||||||
-- Crate spawn placement within pickup zones
|
-- Crate spawn placement within pickup zones
|
||||||
PickupZoneSpawnRandomize = true, -- if true, spawn crates at a random point within the pickup zone (avoids stacking)
|
PickupZoneSpawnRandomize = true, -- if true, spawn crates at a random point within the pickup zone (avoids stacking)
|
||||||
@ -1611,6 +1613,29 @@ function CTLD:LoadTroops(group, opts)
|
|||||||
local unit = group:GetUnit(1)
|
local unit = group:GetUnit(1)
|
||||||
if not unit or not unit:IsAlive() then return end
|
if not unit or not unit:IsAlive() then return end
|
||||||
|
|
||||||
|
-- Enforce pickup zone requirement for troop loading (inside zone)
|
||||||
|
if self.Config.RequirePickupZoneForTroopLoad then
|
||||||
|
local hasPickupZones = (self.PickupZones and #self.PickupZones > 0) or (self.Config.Zones and self.Config.Zones.PickupZones and #self.Config.Zones.PickupZones > 0)
|
||||||
|
if not hasPickupZones then
|
||||||
|
_eventSend(self, group, nil, 'no_pickup_zones', {})
|
||||||
|
return
|
||||||
|
end
|
||||||
|
local zone, dist = _nearestZonePoint(unit, self.Config.Zones.PickupZones)
|
||||||
|
local inside = false
|
||||||
|
if zone then
|
||||||
|
local rZone = self:_getZoneRadius(zone) or 0
|
||||||
|
if dist and rZone and dist <= rZone then inside = true end
|
||||||
|
end
|
||||||
|
if not inside then
|
||||||
|
local isMetric = _getPlayerIsMetric(unit)
|
||||||
|
local rZone = (zone and (self:_getZoneRadius(zone) or 0)) or 0
|
||||||
|
local delta = math.max(0, (dist or 0) - rZone)
|
||||||
|
local v, u = _fmtRange(delta, isMetric)
|
||||||
|
_eventSend(self, group, nil, 'troop_pickup_zone_required', { zone_dist = v, zone_dist_u = u })
|
||||||
|
return
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
local capacity = 6 -- simple default; can be adjusted per type later
|
local capacity = 6 -- simple default; can be adjusted per type later
|
||||||
CTLD._troopsLoaded[gname] = {
|
CTLD._troopsLoaded[gname] = {
|
||||||
count = capacity,
|
count = capacity,
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user