Added wingmen specific "i'm down!" message

This commit is contained in:
Ambroise Garel 2025-07-27 19:19:11 +02:00
parent 53cedb83b8
commit 776241fced
2 changed files with 22 additions and 2 deletions

View File

@ -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

View File

@ -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