From 04befd1b61d0cc195c1092e3dced088587638467 Mon Sep 17 00:00:00 2001 From: Applevangelist Date: Mon, 6 Apr 2026 19:55:58 +0200 Subject: [PATCH] xx --- Moose Development/Moose/Functional/RedGCI.lua | 4 +- .../Moose/Functional/RedGCI2v2.lua | 6 +-- .../Moose/Functional/RedGCIDispatcher.lua | 47 +++++++++++++++++-- 3 files changed, 48 insertions(+), 9 deletions(-) diff --git a/Moose Development/Moose/Functional/RedGCI.lua b/Moose Development/Moose/Functional/RedGCI.lua index ebb182b76..b6ca06dbb 100644 --- a/Moose Development/Moose/Functional/RedGCI.lua +++ b/Moose Development/Moose/Functional/RedGCI.lua @@ -1307,7 +1307,8 @@ function REDGCI:_SetupF10Menu() self:Reset() self:_Log("GCI Reset via F10 menu") end) - + + --[[ missionCommands.addCommandForCoalition(self.Coalition, "Toggle AI Mode", root, function() self.IsAIPlane = not self.IsAIPlane @@ -1316,6 +1317,7 @@ function REDGCI:_SetupF10Menu() self.Coalition, "[GCI] AI mode " .. status, 3) self:_Log("AI mode: " .. status) end) + --]] end --- diff --git a/Moose Development/Moose/Functional/RedGCI2v2.lua b/Moose Development/Moose/Functional/RedGCI2v2.lua index 8b249a500..59d7ef5c1 100644 --- a/Moose Development/Moose/Functional/RedGCI2v2.lua +++ b/Moose Development/Moose/Functional/RedGCI2v2.lua @@ -798,17 +798,17 @@ function REDGCI2v2:onafterStart(From, Event, To) -- Create and start the two REDGCI sub-instances. -- They manage their own FSM ticks; we drive formation/tactic logic here. - self._gci1 = self:_MakeGCI(self.Fighter1Group, self._assignment[1], self.Callsign1) -- #REDGCI + self._gci1 = self:_MakeGCI(self.Fighter1Group, self._assignment[1], self.Callsign1) -- Functional.RedGCI#RedGCI local FreqOffset = self.FreqOffset or 0.5 --if self.IsAIPlane == true then FreqOffset = 0.5 end self._gci2 = self:_MakeGCI(self.Fighter2Group, self._assignment[2], self.Callsign2, FreqOffset) if self.PilotOneCallsign then - self._gci1:SetPilotSRS(self.PilotOneCallsign, self.PilotOneSRSCulture, self.PilotOneSRSVoice, self.PilotOneSRSSpeaker) + self._gci1:SetPilotSRS(self.Callsign1, self.PilotOneSRSCulture, self.PilotOneSRSVoice, self.PilotOneSRSSpeaker)-- Functional.RedGCI#RedGCI end if self.PilotTwoCallsign then - self._gci2:SetPilotSRS(self.PilotTwoCallsign, self.PilotTwoSRSCulture, self.PilotTwoSRSVoice, self.PilotTwoSRSSpeaker) + self._gci2:SetPilotSRS(self.Callsign2, self.PilotTwoSRSCulture, self.PilotTwoSRSVoice, self.PilotTwoSRSSpeaker) end self._gci1:Start() diff --git a/Moose Development/Moose/Functional/RedGCIDispatcher.lua b/Moose Development/Moose/Functional/RedGCIDispatcher.lua index 40f7dff29..1f12b8d00 100644 --- a/Moose Development/Moose/Functional/RedGCIDispatcher.lua +++ b/Moose Development/Moose/Functional/RedGCIDispatcher.lua @@ -360,7 +360,7 @@ function REDGCIDISPATCHER:SetLocale(Locale) return self end ---- Configure Dispatcher SRS. +--- Configure Dispatcher SRS - Radio voice for radar callouts and assignment instructions. -- @param #REDGCIDISPATCHER self -- @param #string Path (Optional) Defaults to "C:\\Program Files\\DCS-SimpleRadio-Standalone\\ExternalAudio" -- @param #number Frequency Single Frequency, e.g. 124 @@ -418,14 +418,14 @@ function REDGCIDISPATCHER:SetRadioChannelList(RadioTable) return self end ---- Configure GCI SRS (the one that guides the pilots). +--- Configure GCI SRS (the one that guides the pilots during the engagement). -- @param #REDGCIDISPATCHER self --- @param #number Frequency Single Frequency, e.g. 125 +-- @param #number StartFrequency Single Frequency, e.g. 125 - this is the start frequency for channel 1 of the radio channel list. -- @param #string Voice The SRS Voice to be used. -- @return #REDGCIDISPATCHER self function REDGCIDISPATCHER:SetSRSGCIDetails(StartFrequency,Voice) self:I({F=StartFrequency,V=Voice}) - self.SRSGCIFrequency = StartFrequency or 124 + self.SRSGCIFrequency = StartFrequency or 125 self.SRSGCIVoice = Voice or self.SRSVoice or MSRS.Voices.Google.Wavenet.de_DE_Wavenet_B return self end @@ -438,6 +438,42 @@ function REDGCIDISPATCHER:SetSRSProvider(Provider) return self end +--- Configure the pilot one voice for radio acknowledgements. +-- The pilot uses the same frequency/modulation as the GCI controller but +-- a distinct voice so the two can be told apart on the radio. +-- Set PilotCallsign to nil (default) to disable pilot ACKs entirely. +-- @param #REDGCIDISPATCHER self +-- @param #string PilotCallsign Pilot's callsign (e.g. "Сокол-1"), or nil to disable ACKs. +-- @param #string Culture BCP-47 culture string (default same as GCI) +-- @param #string Voice MSRS voice constant (default ru_RU_Standard_B) +-- @param #number Speaker (Optional) MSRS Speaker for Hound/Piper Voices, e.g. 11 for "318 (11)" +-- @return #REDGCIDISPATCHER self +function REDGCIDISPATCHER:SetPilotOneSRS(PilotCallsign, Culture, Voice, Speaker) + self.PilotOneCallsign = PilotCallsign + self.PilotOneSRSCulture = Culture or self.SRSCulture + self.PilotOneSRSVoice = Voice or MSRS.Voices.Google.Standard.ru_RU_Standard_B + self.PilotOneSRSSpeaker = Speaker + return self +end + +--- Configure the pilot two voice for radio acknowledgements. +-- The pilot uses the same frequency/modulation as the GCI controller but +-- a distinct voice so the two can be told apart on the radio. +-- Set PilotCallsign to nil (default) to disable pilot ACKs entirely. +-- @param #REDGCIDISPATCHER self +-- @param #string PilotCallsign Pilot's callsign (e.g. "Сокол-1"), or nil to disable ACKs. +-- @param #string Culture BCP-47 culture string (default same as GCI) +-- @param #string Voice MSRS voice constant (default ru_RU_Standard_B) +-- @param #number Speaker (Optional) MSRS Speaker for Hound/Piper Voices, e.g. 11 for "318 (11)" +-- @return #REDGCIDISPATCHER self +function REDGCIDISPATCHER:SetPilotTwoSRS(PilotCallsign, Culture, Voice, Speaker) + self.PilotTwoCallsign = PilotCallsign + self.PilotTwoSRSCulture = Culture or self.SRSCulture + self.PilotTwoSRSVoice = Voice or MSRS.Voices.Google.Standard.ru_RU_Standard_B + self.PilotTwoSRSSpeaker = Speaker + return self +end + --- Set altitude offset for intercept geometry. -- @param #REDGCIDISPATCHER self -- @param #number Meters Default -700 (shoot up) @@ -669,6 +705,7 @@ function REDGCIDISPATCHER:_SpawnAI(Zone) local spawner = SPAWN:NewWithAlias(self.TemplateName, alias) spawner:InitCallSignRed(cs) + spawner:InitModex(cs) spawner:OnSpawnGroup(function(grp) self:I(self.lid .. "Gespawnt: " .. grp:GetName() .. @@ -829,7 +866,7 @@ function REDGCIDISPATCHER:_RefreshHumanPool() local in_zone = false if self.ZoneSet then self.ZoneSet:ForEachZone(function(zone) - if grp:IsPartlyOrFullyInZone(zone) then + if grp:IsPartlyOrCompletelyInZone(zone) then in_zone = true self._pool[name].zone = zone end