diff --git a/Script/The Universal Mission/AmbientRadio.lua b/Script/The Universal Mission/AmbientRadio.lua index 6128053..e8f7922 100644 --- a/Script/The Universal Mission/AmbientRadio.lua +++ b/Script/The Universal Mission/AmbientRadio.lua @@ -123,6 +123,7 @@ do if Object.getCategory(event.initiator) ~= Object.Category.UNIT then return end -- Initiator isn't an unit if event.initiator:getCoalition() ~= TUM.settings.getPlayerCoalition() then return end -- Initiator isn't a friendly if event.initiator:getPlayerName() then return end -- No "ejecting!" message for players, so it won't cut the "mission failed" music which is played at the same time + if TUM.wingmen.getUnitWingmanNumber(event.initiator) then return end -- Wingmen have their own "I'm going down!" messages doAmbientChatter("pilotEjecting", nil, event.initiator:getCallsign(), 1) end diff --git a/Script/The Universal Mission/Wingmen.lua b/Script/The Universal Mission/Wingmen.lua index 8b7b889..d1ca81d 100644 --- a/Script/The Universal Mission/Wingmen.lua +++ b/Script/The Universal Mission/Wingmen.lua @@ -90,6 +90,7 @@ do -- Reinitialize list of known contacts and contact report interval TUM.wingmenContacts.clearKnownContacts() + TUM.wingmenTasking.resetTaskingParameters() TUM.log("Spawned AI wingmen") @@ -159,13 +160,31 @@ do if TUM.settings.getValue(TUM.settings.id.MULTIPLAYER) then return end -- No wingmen in multiplayer if not event.initiator then return end if Object.getCategory(event.initiator) ~= Object.Category.UNIT then return end - if not event.initiator:getPlayerName() then return end - if event.id == world.event.S_EVENT_TAKEOFF then -- Create wingmen on player takeoff + if event.id == world.event.S_EVENT_UNIT_LOST then + local unitWingmenNumber = TUM.wingmen.getUnitWingmanNumber(event.initiator) + if unitWingmenNumber then + TUM.radio.playForAll("pilotWingmanDown", { DCSEx.string.toStringNumber(unitWingmenNumber, true) }, event.initiator:getCallsign(), false) + return + end + elseif event.id == world.event.S_EVENT_TAKEOFF then -- Create wingmen on player takeoff + if not event.initiator:getPlayerName() then return end if TUM.mission.getStatus() == TUM.mission.status.NONE then return end -- Mission not in progress, no wingman needed TUM.wingmen.create() elseif event.id == world.event.S_EVENT_LAND then -- Remove wingmen on player landing + if not event.initiator:getPlayerName() then return end TUM.wingmen.removeAll() end end + + function TUM.wingmen.getUnitWingmanNumber(unit) + if not unit then return nil end + + local unitID = DCSEx.dcs.getObjectIDAsNumber(unit) + for i,id in ipairs(wingmenUnitID) do + if unitID == id then return i + 1 end + end + + return nil + end end