mirror of
https://github.com/iTracerFacer/DCS_MissionDev.git
synced 2025-12-03 04:14:46 +00:00
754 lines
31 KiB
Lua
754 lines
31 KiB
Lua
--[[
|
|
Iron Hand by F99Th-TracerFacer
|
|
|
|
This is a DSMC Compatible Mission. Persitance will be enabled on servers with the
|
|
DSMC mod installed. No saving is done while players are on the server. All players must log off!
|
|
and the server shutdown before a new mission file is made.
|
|
|
|
Due to the way triggers don't work quiet right we have to come up with another way of
|
|
loading the ground units ONLY ONCE - and never again on subsequent mission loads. I've tried
|
|
various automated ways of doing this but in the end it has to be controlled manually by 1 of 2 ways.
|
|
|
|
1. I run the mission, save the scenery once, open newly created mission file in ME and remove setup script.
|
|
upload this to the server and this is what gets played on a daily basis. This causes several problems
|
|
but mostly with ground units who will lose their routes in the new mission. I don't like this.
|
|
|
|
OR (THE WAY WE WILL DO IT FOR NOW UNTIL I GET SMARTER)
|
|
|
|
2. We use some F10 menus to present 1 player (F99th-MISSION COMMANDER) with a special menu. Only F99th- players will be allowed into this slot.
|
|
|
|
This menu will have 2 options:
|
|
|
|
1. Warn the Players they should all log off. (shut down the server after this and a new
|
|
mission file will be created with time/date/weather reset) Do this on a populated server that
|
|
you want to shut down.
|
|
|
|
2. Populate the mission with initial objects. You must do this at least once on first mission run.
|
|
This should only be done once. Once you use this option the menu item is removed, however on
|
|
subsequent mission loads .002, .003, .004, etc - this menu item will still show up.
|
|
|
|
DO NOT USE IT IF IT'S NOT THE FIRST RUN OF THE MISSION. IT WILL POPULATE THE MAP AGAIN.
|
|
|
|
MENU WILL AUTOMATICALLY DISAPPEAR AFTER 5 MINS TO PREVENT IDIOCY.
|
|
|
|
** If you do this on accident, just load the previous mission file and don't be stupid twice. =] **
|
|
--]]
|
|
|
|
|
|
_SETTINGS:SetPlayerMenuOff()
|
|
HQ = GROUP:FindByName( "HQ", "Bravo HQ" )
|
|
CommandCenter = COMMANDCENTER:New( HQ, "Bravo" )
|
|
|
|
RedHQ = GROUP:FindByName( "RedHQ", "RedHQ" )
|
|
RedCC = COMMANDCENTER:New( HQ, "RedHQ" )
|
|
|
|
Scoring = SCORING:New( "Iron Hand" )
|
|
SoundRadioMsg = USERSOUND:New("l10n/DEFAULT/beeps-and-clicks.wav")
|
|
|
|
|
|
|
|
--Setup the RedA2A dispatcher, and initialize it.
|
|
CCCPBorderZone = ZONE_POLYGON:New( "RED BORDER", GROUP:FindByName( "RED BORDER" ) )
|
|
RedA2ADispatcher = AI_A2A_GCICAP:New( { "RED EWR" }, { "FIGHTER SWEEP RED" }, { "RED BORDER" }, 6 )
|
|
RedA2ADispatcher:SetDefaultLandingAtRunway()
|
|
RedA2ADispatcher:SetDefaultTakeoffFromParkingCold()
|
|
RedA2ADispatcher:SetBorderZone( CCCPBorderZone )
|
|
RedA2ADispatcher:SetTacticalDisplay(false)
|
|
RedA2ADispatcher:SetDefaultFuelThreshold( 0.35 )
|
|
RedA2ADispatcher:SetRefreshTimeInterval( 420 )
|
|
RedA2ADispatcher:SetDefaultOverhead(.75)
|
|
RedA2ADispatcher:SetDefaultCapLimit(6)
|
|
|
|
|
|
-- Spawn Some Trains
|
|
Spawn_TanksFromTrainGudauta = SPAWN:New("TANKSFROMTRAINTOGUDAUTA")
|
|
:InitLimit(6,6)
|
|
|
|
Spawn_Train_TOGUDAUTA = SPAWN:New("TRAINTOGUDAUTA")
|
|
:InitLimit(1,5)
|
|
:SpawnScheduled( 8000, .3 )
|
|
|
|
-- Spawned via mission trigger with :Spawn()
|
|
Spawn_Train_ArtyKobuleti = SPAWN:New("Train_ArtyKobuleti")
|
|
Spawn_ArtyKobuleti = SPAWN:New("ARTY-KOBULETI")
|
|
:InitLimit(7,7)
|
|
|
|
-- Spawn Batumi Speed Boat
|
|
Spawn_Batumi_Speedboat = SPAWN:New("RU-BATUMI-SPEEDBOAT")
|
|
:InitRandomizeRoute(1,103,1000)
|
|
:InitLimit(5,25)
|
|
|
|
|
|
--Spawn Moving Ground Units - Stop these from spawning if warehouse is blown up.
|
|
Spawn_Moving_1 = SPAWN:New("WAREHOUSE CONVOY-1")
|
|
:InitLimit(6, 50)
|
|
:SpawnScheduled( 2400, .3 )
|
|
|
|
|
|
--Spawn Moving Ground Units - Stop these from spawning if warehouse is blown up.
|
|
Spawn_Moving_2 = SPAWN:New("WAREHOUSE CONVOY-2")
|
|
:InitLimit(6, 50)
|
|
:SpawnScheduled( 2400, .3 )
|
|
|
|
--Spawn Moving Ground Units - Stop these from spawning if warehouse is blown up.
|
|
Spawn_Moving_3 = SPAWN:New("WAREHOUSE CONVOY-3")
|
|
:InitLimit(6, 50)
|
|
:SpawnScheduled( 2400, .3 )
|
|
|
|
|
|
--Spawn Moving Ground Units - Stop these from spawning if warehouse is blown up.
|
|
Spawn_Moving_4 = SPAWN:New("WAREHOUSE CONVOY-4")
|
|
:InitLimit(6, 50)
|
|
:SpawnScheduled( 2400, .3 )
|
|
|
|
--Spawn Moving Ground Units - Stop these from spawning if warehouse is blown up.
|
|
Spawn_Moving_5 = SPAWN:New("WAREHOUSE CONVOY-5")
|
|
:InitRandomizeRoute(0,14,2000)
|
|
:InitLimit(6, 50)
|
|
:SpawnScheduled( 2400, .3 )
|
|
|
|
--Spawn Moving Ground Units - Stop these from spawning if warehouse is blown up.
|
|
Spawn_Moving_6 = SPAWN:New("WAREHOUSE CONVOY-6")
|
|
:InitRandomizeRoute(0,17,2000)
|
|
:InitLimit(6, 50)
|
|
:SpawnScheduled( 2400, .3 )
|
|
|
|
--Spawn Moving Ground Units - Stop these from spawning if warehouse is blown up.
|
|
Spawn_Moving_7 = SPAWN:New("WAREHOUSE CONVOY-7")
|
|
:InitRandomizeRoute(0,14,2000)
|
|
:InitLimit(6, 50)
|
|
:SpawnScheduled( 2400, .3 )
|
|
|
|
|
|
--Spawn Moving Ground Units - Stop these from spawning if warehouse is blown up.
|
|
Spawn_Moving_8 = SPAWN:New("WAREHOUSE CONVOY-8")
|
|
:InitRandomizeRoute(0,14,2000)
|
|
:InitLimit(6, 50)
|
|
:SpawnScheduled( 2400, .3 )
|
|
|
|
--Spawn Moving Ground Units - Stop these from spawning if warehouse is blown up.
|
|
Spawn_Moving_CONVOY_SOCHI_1 = SPAWN:New("CONVOY-SOCHI-1")
|
|
:InitRandomizeRoute(0,14,2000)
|
|
:InitLimit(6, 50)
|
|
:SpawnScheduled( 5000, .3 )
|
|
|
|
Spawn_Moving_CONVOY_SOCHI_2 = SPAWN:New("CONVOY-SOCHI-2")
|
|
:InitRandomizeRoute(0,14,2000)
|
|
:InitLimit(6, 50)
|
|
:SpawnScheduled( 5000, .3 )
|
|
|
|
Spawn_Moving_CONVOY_SUKUMI_1 = SPAWN:New("CONVOY-SUKHUMI-1")
|
|
:InitRandomizeRoute(0,14,2000)
|
|
:InitLimit(6, 50)
|
|
:SpawnScheduled( 5000, .3 )
|
|
|
|
Spawn_Moving_CONVOY_SUKUMI_2 = SPAWN:New("CONVOY-SUKHUMI-2")
|
|
:InitRandomizeRoute(0,14,2000)
|
|
:InitLimit(6, 50)
|
|
:SpawnScheduled( 5000, .3 )
|
|
|
|
Spawn_Moving_CONVOY_GUDAUTA_1 = SPAWN:New("CONVOY-GUDAUTA-1")
|
|
:InitRandomizeRoute(0,14,2000)
|
|
:InitLimit(6, 50)
|
|
:SpawnScheduled( 5000, .3 )
|
|
|
|
Spawn_Moving_CONVOY_GUDAUTA_2 = SPAWN:New("CONVOY-GUDAUTA-2")
|
|
:InitRandomizeRoute(0,14,2000)
|
|
:InitLimit(6, 50)
|
|
:SpawnScheduled( 5000, .3 )
|
|
|
|
|
|
-- C130 PROTECTION MISSION STATUS MESSAGES- this mission starts when Sochi, Gudauta and Sukumi are taken by Blue.
|
|
local TankerPilotSupply = UNIT:FindByName("TANKER PILOT SUPPLY")
|
|
TankerPilotSupply:HandleEvent(EVENTS.Birth)
|
|
function TankerPilotSupply:OnEventBirth(EventData)
|
|
TankerPilotSupply:MessageToBlue("[ ESCORT MISSION ]\n\nTHIS IS CAPT. OBVIOUS, REQUESTING IMMEDIATE ESCORT FROM KRASNADOR TO SOCHI.\n\nCARGO ONBOARD: PILOTS FOR THE TANKERS LOCATED AT SOCHI!\n\n", 15)
|
|
SoundRadioMsg:ToCoalition(coalition.side.BLUE)
|
|
end
|
|
-- TankerPilotSupply:HandleEvent(EVENTS.EngineStartup)
|
|
-- function TankerPilotSupply:OnEventEngineStartup(EventData)
|
|
-- TankerPilotSupply:MessageToBlue("[ CAPT. OBVIOUS KRASNADOR C-130 ]\n\nEngines are running, we are taxing.\n\nETA: 30 mins.\nCargo: Tanker Pilots\nDestination: Sochi\n", 15)
|
|
-- SoundRadioMsg:ToCoalition(coalition.side.BLUE)
|
|
-- end
|
|
TankerPilotSupply:HandleEvent(EVENTS.Hit)
|
|
function TankerPilotSupply:OnEventHit(EventData)
|
|
TankerPilotSupply:MessageToBlue("[ CAPT. OBVIOUS C-130 INBOUND TO SOCHI]\n\nWe are taking fire!! Mayday Mayday!", 15)
|
|
SoundRadioMsg:ToCoalition(coalition.side.BLUE)
|
|
end
|
|
TankerPilotSupply:HandleEvent(EVENTS.Crash)
|
|
function TankerPilotSupply:OnEventCrash(EventData)
|
|
TankerPilotSupply:MessageToBlue("[ TANKER MISSION FAILURE ]\n\nThe C-130 that was carrying the pilots for our tankers has been shot down! No tankers will be available for the remainder of the mission!", 30)
|
|
SoundRadioMsg:ToCoalition(coalition.side.BLUE)
|
|
end
|
|
TankerPilotSupply:HandleEvent(EVENTS.Land)
|
|
function TankerPilotSupply:OnEventLand(EventData)
|
|
TankerPilotSupply:MessageToBlue("[ CAPT. OBVIOUS C130 @ SOCHI ]\n\nWe have landed. Tanker pilots have been delivered. Tankers will be starting up soon!", 15)
|
|
SoundRadioMsg:ToCoalition(coalition.side.BLUE)
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-----------Spawn AWACS------------------------------
|
|
Spawn_BlueEWR = SPAWN:New("BLUE EWR"):InitLimit( 1, 50 )
|
|
:InitRepeatOnEngineShutDown()
|
|
:InitCleanUp(120)
|
|
:SpawnScheduled(300,.3)
|
|
|
|
-----------Spawn AWACS CVN---------------------------
|
|
Spawn_BlueEWR = SPAWN:New("BLUE EWR MAGIC"):InitLimit( 1, 50 )
|
|
:InitRepeatOnEngineShutDown()
|
|
:InitCleanUp(120)
|
|
:SpawnScheduled(300,.3)
|
|
|
|
Spawn_RedEWR = SPAWN:New("RED EWR"):InitLimit( 1, 50 )
|
|
:InitRepeatOnEngineShutDown()
|
|
:InitCleanUp(120)
|
|
:SpawnScheduled(300,.4)
|
|
|
|
-- Spawn Tankers (after Sochi, Gudauta and Sukhumi are captured.
|
|
Spawn_Blue135 = SPAWN:New("Shell SHL 42 X 253am"):InitLimit( 1, 50 )
|
|
:InitRepeatOnEngineShutDown()
|
|
:InitCleanUp(120)
|
|
|
|
|
|
Spawn_Blue135MPRS = SPAWN:New("Texaco TEX 41 X 252am"):InitLimit( 1, 50 )
|
|
:InitRepeatOnEngineShutDown()
|
|
:InitCleanUp(120)
|
|
--:SpawnScheduled(300,.3) -- TURN ON WITH MISSION TRIGGER INSTEAD
|
|
|
|
Spawn_MaykopBombers = SPAWN:New("MAYKOP BOMBER")
|
|
:InitLimit(4, 50)
|
|
:InitCleanUp(120)
|
|
-- Spawn_MaykopBombers:SpawnScheduled(1200,.2) -- TURN ON IN ME WHEN MAYKOP IS TAKEN
|
|
|
|
|
|
-- Recovery Tanker
|
|
-- S-3B at USS Stennis spawning on deck.
|
|
local CVNRecoveryTanker=RECOVERYTANKER:New("CVN-71 Theodore Roosevelt", "Arco ARC 43 Y 253am")
|
|
|
|
-- Custom settings for radio frequency, TACAN, callsign and modex.
|
|
CVNRecoveryTanker:SetRadio(253)
|
|
CVNRecoveryTanker:SetTACAN(43, "ARC")
|
|
CVNRecoveryTanker:SetCallsign(CALLSIGN.Tanker.Arco, 3)
|
|
CVNRecoveryTanker:SetModex(0) -- "Triple nuts"
|
|
|
|
-- Start recovery tanker.
|
|
-- NOTE: If you spawn on deck, it seems prudent to delay the spawn a bit after the mission starts.
|
|
CVNRecoveryTanker:__Start(1)
|
|
|
|
|
|
-- Base Capture Events & Functions
|
|
-- Beslan
|
|
CaptureBeslan = AIRBASE:FindByName("Beslan")
|
|
CaptureBeslan:HandleEvent(EVENTS.BaseCaptured)
|
|
function CaptureBeslan:OnEventBaseCaptured(EventData)
|
|
local coa = CaptureBeslan:GetCoalition()
|
|
|
|
-- To a specific coalition.
|
|
if coa == 1 then -- red
|
|
--SoundRadioMsg:ToCoalition(coalition.side.RED)
|
|
local RadioMessage = MESSAGE:New("Failure! Beslan has been captured by NATO!",5,"[ MISSION PROGRESS ]", false):ToRed()
|
|
|
|
elseif coa == 2 then -- blue
|
|
--SoundRadioMsg:ToCoalition(coalition.side.BLUE)
|
|
local RadioMessage = MESSAGE:New("Beslan has been captured by NATO! You may now use the Aircraft at this Airbase. ",5,"[ MISSION PROGRESS ]", false):ToBlue()
|
|
|
|
trigger.action.setUserFlag("Beslan-1",0)
|
|
trigger.action.setUserFlag("Beslan-2",0)
|
|
trigger.action.setUserFlag("Beslan-3",0)
|
|
trigger.action.setUserFlag("Beslan-4",0)
|
|
trigger.action.setUserFlag("Beslan-5",0)
|
|
trigger.action.setUserFlag("Beslan-6",0)
|
|
trigger.action.setUserFlag("Beslan-7",0)
|
|
trigger.action.setUserFlag("Beslan-8",0)
|
|
|
|
trigger.action.setUserFlag("BESLAN-UH1-1",0)
|
|
trigger.action.setUserFlag("BESLAN-UH1-2",0)
|
|
trigger.action.setUserFlag("BESLAN-MI8-1",0)
|
|
trigger.action.setUserFlag("BESLAN-MI8-2",0)
|
|
trigger.action.setUserFlag("BESLAN-HIND-1",0)
|
|
trigger.action.setUserFlag("BESLAN-HIND-2",0)
|
|
trigger.action.setUserFlag("BESLAN-APACHE-1",0)
|
|
trigger.action.setUserFlag("BESLAN-APACHE-2",0)
|
|
trigger.action.setUserFlag("BESLAN-GAZ-1",0)
|
|
trigger.action.setUserFlag("BESLAN-GAZ-2",0)
|
|
trigger.action.setUserFlag("BESLAN-GAZ-3",0)
|
|
trigger.action.setUserFlag("BESLAN-GAZ-4",0)
|
|
trigger.action.setUserFlag("BESLAN-KA50-1",0)
|
|
trigger.action.setUserFlag("BESLAN-KA50-2",0)
|
|
|
|
-- Figure out how to add smoke effects?
|
|
end
|
|
end
|
|
|
|
-- Kolkhi
|
|
CaptureKolkhi = AIRBASE:FindByName("Senaki-Kolkhi")
|
|
CaptureKolkhi:HandleEvent(EVENTS.BaseCaptured)
|
|
function CaptureKolkhi:OnEventBaseCaptured(EventData)
|
|
local coa = CaptureKolkhi:GetCoalition()
|
|
if coa == 1 then -- red
|
|
local RadioMessage = MESSAGE:New("Failure! Kolkhi has been captured by NATO!",5,"[ MISSION PROGRESS ]", false):ToRed()
|
|
elseif coa == 2 then -- blue
|
|
local RadioMessage = MESSAGE:New("Congratulations! Kolkhi has been captured by NATO! You may now use the Aircraft at this Airbase.",5,"[ MISSION PROGRESS ]", false):ToBlue()
|
|
--Enable Blue
|
|
trigger.action.setUserFlag("KOLKHI-MI8-1",0)
|
|
trigger.action.setUserFlag("KOLKHI-MI8-2",0)
|
|
trigger.action.setUserFlag("KOLKHI-UH1-1",0)
|
|
trigger.action.setUserFlag("KOLKHI-UH1-2",0)
|
|
--Disable Red
|
|
trigger.action.setUserFlag("Kolkhi-1",100)
|
|
trigger.action.setUserFlag("Kolkhi-2",100)
|
|
trigger.action.setUserFlag("Kolkhi-3",100)
|
|
trigger.action.setUserFlag("Kolkhi-4",100)
|
|
trigger.action.setUserFlag("Kolkhi-5",100)
|
|
trigger.action.setUserFlag("Kolkhi-6",100)
|
|
end
|
|
end
|
|
|
|
-- Kobuleti
|
|
CaptureKobuleti = AIRBASE:FindByName("Kobuleti")
|
|
CaptureKobuleti:HandleEvent(EVENTS.BaseCaptured)
|
|
function CaptureKobuleti:OnEventBaseCaptured(EventData)
|
|
local coa = CaptureKobuleti:GetCoalition()
|
|
|
|
-- To a specific coalition.
|
|
if coa == 1 then -- red
|
|
--SoundRadioMsg:ToCoalition(coalition.side.RED)
|
|
local RadioMessage = MESSAGE:New("Failure! Kobuleti has been captured by NATO!",5,"[ MISSION PROGRESS ]", false):ToRed()
|
|
|
|
elseif coa == 2 then -- blue
|
|
--SoundRadioMsg:ToCoalition(coalition.side.BLUE)
|
|
local RadioMessage = MESSAGE:New("Congratulations! Kobuleti has been captured by NATO! You may now use the Aircraft at this Airbase.",5,"[ MISSION PROGRESS ]", false):ToBlue()
|
|
|
|
trigger.action.setUserFlag("KOBULETI-MI8-1",0)
|
|
trigger.action.setUserFlag("KOBULETI-MI8-2",0)
|
|
trigger.action.setUserFlag("KOBULETI-UH1-1",0)
|
|
trigger.action.setUserFlag("KOBULETI-UH1-2",0)
|
|
|
|
-- Figure out how to add smoke effects?
|
|
end
|
|
end
|
|
|
|
-- Sukhumi
|
|
CaptureSukhumi = AIRBASE:FindByName("Sukhumi-Babushara")
|
|
CaptureSukhumi:HandleEvent(EVENTS.BaseCaptured)
|
|
function CaptureSukhumi:OnEventBaseCaptured(EventData)
|
|
local coa = CaptureSukhumi:GetCoalition()
|
|
|
|
-- To a specific coalition.
|
|
if coa == 1 then -- red
|
|
--SoundRadioMsg:ToCoalition(coalition.side.RED)
|
|
local RadioMessage = MESSAGE:New("Failure! Sukhumi has been captured by NATO!",5,"[ MISSION PROGRESS ]", false):ToRed()
|
|
|
|
elseif coa == 2 then -- blue
|
|
--SoundRadioMsg:ToCoalition(coalition.side.BLUE)
|
|
local RadioMessage = MESSAGE:New("Sukhumi has been captured by NATO! You may now use the Aircraft at this Airbase.",5,"[ MISSION PROGRESS ]", false):ToBlue()
|
|
trigger.action.setUserFlag("Sukhumi-1",0)
|
|
trigger.action.setUserFlag("Sukhumi-2",0)
|
|
trigger.action.setUserFlag("Sukhumi-3",0)
|
|
trigger.action.setUserFlag("Sukhumi-4",0)
|
|
trigger.action.setUserFlag("Sukhumi-5",0)
|
|
trigger.action.setUserFlag("Sukhumi-6",0)
|
|
trigger.action.setUserFlag("Sukhumi-7",0)
|
|
trigger.action.setUserFlag("Sukhumi-8",0)
|
|
trigger.action.setUserFlag("Sukhumi-9",0)
|
|
trigger.action.setUserFlag("Sukhumi-10",0)
|
|
trigger.action.setUserFlag("Sukhumi-11",0)
|
|
|
|
trigger.action.setUserFlag("SUKHUMI-MI8-1",0)
|
|
trigger.action.setUserFlag("SUKHUMI-MI8-2",0)
|
|
|
|
trigger.action.setUserFlag("SUKHUMI-UH1-1",0)
|
|
trigger.action.setUserFlag("SUKHUMI-UH1-2",0)
|
|
|
|
-- Figure out how to add smoke effects?
|
|
end
|
|
end
|
|
|
|
-- Gudauta
|
|
CaptureGudauta = AIRBASE:FindByName("Gudauta")
|
|
CaptureGudauta:HandleEvent(EVENTS.BaseCaptured)
|
|
function CaptureGudauta:OnEventBaseCaptured(EventData)
|
|
local coa = CaptureGudauta:GetCoalition()
|
|
|
|
-- To a specific coalition.
|
|
if coa == 1 then -- red
|
|
--SoundRadioMsg:ToCoalition(coalition.side.RED)
|
|
local RadioMessage = MESSAGE:New("Failure! Gudauta has been captured by NATO!",5,"[ MISSION PROGRESS ]", false):ToRed()
|
|
|
|
elseif coa == 2 then -- blue
|
|
--SoundRadioMsg:ToCoalition(coalition.side.BLUE)
|
|
local RadioMessage = MESSAGE:New("Gudauta has been captured by NATO! You may now use the Aircraft at this Airbase.",5,"[ MISSION PROGRESS ]", false):ToBlue()
|
|
--Enable Blue
|
|
trigger.action.setUserFlag("GUDAUTA-MI8-1",0)
|
|
trigger.action.setUserFlag("GUDAUTA-MI8-2",0)
|
|
trigger.action.setUserFlag("GUDAUTA-UH1-1",0)
|
|
trigger.action.setUserFlag("GUDAUTA-UH1-2",0)
|
|
trigger.action.setUserFlag("GUDAUTA-MIRAGE-1",0)
|
|
trigger.action.setUserFlag("GUDAUTA-MIRAGE-2",0)
|
|
|
|
--Diable Red
|
|
trigger.action.setUserFlag("Gudauta-1",100)
|
|
trigger.action.setUserFlag("Gudauta-2",100)
|
|
trigger.action.setUserFlag("Gudauta-3",100)
|
|
trigger.action.setUserFlag("Gudauta-4",100)
|
|
end
|
|
end
|
|
|
|
-- Sochi
|
|
CaptureSochi = AIRBASE:FindByName("Sochi-Adler")
|
|
CaptureSochi:HandleEvent(EVENTS.BaseCaptured)
|
|
function CaptureSochi:OnEventBaseCaptured(EventData)
|
|
local coa = CaptureSochi:GetCoalition()
|
|
|
|
-- To a specific coalition.
|
|
if coa == 1 then -- red
|
|
--SoundRadioMsg:ToCoalition(coalition.side.RED)
|
|
local RadioMessage = MESSAGE:New("Failure! Sochi has been captured by NATO!",5,"[ MISSION PROGRESS ]", false):ToRed()
|
|
|
|
elseif coa == 2 then -- blue
|
|
--SoundRadioMsg:ToCoalition(coalition.side.BLUE)
|
|
local RadioMessage = MESSAGE:New("Sochi has been captured by NATO! You may now use the Aircraft at this Airbase.",5,"[ MISSION PROGRESS ]", false):ToBlue()
|
|
|
|
trigger.action.setUserFlag("Sochi-1",0)
|
|
trigger.action.setUserFlag("Sochi-2",0)
|
|
trigger.action.setUserFlag("Sochi-3",0)
|
|
trigger.action.setUserFlag("Sochi-4",0)
|
|
trigger.action.setUserFlag("Sochi-5",0)
|
|
trigger.action.setUserFlag("Sochi-6",0)
|
|
trigger.action.setUserFlag("Sochi-7",0)
|
|
trigger.action.setUserFlag("Sochi-8",0)
|
|
trigger.action.setUserFlag("Sochi-9",0)
|
|
trigger.action.setUserFlag("Sochi-10",0)
|
|
trigger.action.setUserFlag("Sochi-11",0)
|
|
|
|
trigger.action.setUserFlag("SOCHI-APACHE-1",0)
|
|
trigger.action.setUserFlag("SOCHI-APACHE-2",0)
|
|
trigger.action.setUserFlag("SOCHI-APACHE-3",0)
|
|
trigger.action.setUserFlag("SOCHI-APACHE-4",0)
|
|
|
|
trigger.action.setUserFlag("SOCHI-HIND-1",0)
|
|
trigger.action.setUserFlag("SOCHI-HIND-2",0)
|
|
trigger.action.setUserFlag("SOCHI-HIND-3",0)
|
|
trigger.action.setUserFlag("SOCHI-HIND-4",0)
|
|
|
|
trigger.action.setUserFlag("SOCHI-MI8-1",0)
|
|
trigger.action.setUserFlag("SOCHI-MI8-2",0)
|
|
|
|
trigger.action.setUserFlag("SOCHI-UH1-1",0)
|
|
trigger.action.setUserFlag("SOCHI-UH1-2",0)
|
|
|
|
trigger.action.setUserFlag("SOCHI-GAZ-1",0)
|
|
trigger.action.setUserFlag("SOCHI-GAZ-2",0)
|
|
trigger.action.setUserFlag("SOCHI-GAZ-3",0)
|
|
trigger.action.setUserFlag("SOCHI-GAZ-4",0)
|
|
|
|
|
|
trigger.action.setUserFlag("SOCHI-KA50-1",0)
|
|
trigger.action.setUserFlag("SOCHI-KA50-2",0)
|
|
trigger.action.setUserFlag("SOCHI-KA50-3",0)
|
|
trigger.action.setUserFlag("SOCHI-KA50-4",0)
|
|
|
|
-- Figure out how to add smoke effects?
|
|
end
|
|
end
|
|
|
|
|
|
|
|
|
|
-- Mozdok
|
|
CaptureMozdok = AIRBASE:FindByName("Mozdok")
|
|
CaptureMozdok:HandleEvent(EVENTS.BaseCaptured)
|
|
function CaptureMozdok:OnEventBaseCaptured(EventData)
|
|
local coa = CaptureMozdok:GetCoalition()
|
|
if coa == 1 then -- red
|
|
local RadioMessage = MESSAGE:New("Failure! Mozdok has been captured by NATO!",5,"[ MISSION PROGRESS ]", false):ToRed()
|
|
elseif coa == 2 then -- blue
|
|
local RadioMessage = MESSAGE:New("Mozdok has been captured by NATO!",5,"[ MISSION PROGRESS ]", false):ToBlue()
|
|
end
|
|
end
|
|
|
|
-- Nalchik
|
|
CaptureNalchik = AIRBASE:FindByName("Nalchik")
|
|
CaptureNalchik:HandleEvent(EVENTS.BaseCaptured)
|
|
function CaptureNalchik:OnEventBaseCaptured(EventData)
|
|
local coa = CaptureNalchik:GetCoalition()
|
|
if coa == 1 then -- red
|
|
local RadioMessage = MESSAGE:New("Failure! Nalchik has been captured by NATO!",5,"[ MISSION PROGRESS ]", false):ToRed()
|
|
elseif coa == 2 then -- blue
|
|
local RadioMessage = MESSAGE:New("Nalchik has been captured by NATO!",5,"[ MISSION PROGRESS ]", false):ToBlue()
|
|
end
|
|
end
|
|
|
|
-- Kobuleti
|
|
CaptureKobuleti = AIRBASE:FindByName("Kobuleti")
|
|
CaptureKobuleti:HandleEvent(EVENTS.BaseCaptured)
|
|
function CaptureKobuleti:OnEventBaseCaptured(EventData)
|
|
local coa = CaptureKobuleti:GetCoalition()
|
|
if coa == 1 then -- red
|
|
local RadioMessage = MESSAGE:New("Failure! Kobuleti has been captured by NATO!",5,"[ MISSION PROGRESS ]", false):ToRed()
|
|
elseif coa == 2 then -- blue
|
|
local RadioMessage = MESSAGE:New("Kobuleti has been captured by NATO!",5,"[ MISSION PROGRESS ]", false):ToBlue()
|
|
trigger.action.setUserFlag("KOBULETI-MI8-1",0)
|
|
trigger.action.setUserFlag("KOBULETI-MI8-2",0)
|
|
trigger.action.setUserFlag("KOBULETI-UH1-1",0)
|
|
trigger.action.setUserFlag("KOBULETI-UH1-2",0)
|
|
end
|
|
end
|
|
|
|
-- Maykop
|
|
CaptureMaykop = AIRBASE:FindByName("Maykop-Khanskaya")
|
|
CaptureMaykop:HandleEvent(EVENTS.BaseCaptured)
|
|
function CaptureMaykop:OnEventBaseCaptured(EventData)
|
|
local coa = CaptureMaykop:GetCoalition()
|
|
if coa == 1 then -- red
|
|
local RadioMessage = MESSAGE:New("Failure! Maykop has been captured by NATO!",5,"[ MISSION PROGRESS ]", false):ToRed()
|
|
elseif coa == 2 then -- blue
|
|
local RadioMessage = MESSAGE:New("Maykop has been captured by NATO!",5,"[ MISSION PROGRESS ]", false):ToBlue()
|
|
trigger.action.setUserFlag("Maykop-1",0)
|
|
trigger.action.setUserFlag("Maykop-2",0)
|
|
trigger.action.setUserFlag("Maykop-3",0)
|
|
trigger.action.setUserFlag("Maykop-4",0)
|
|
trigger.action.setUserFlag("Maykop-5",0)
|
|
trigger.action.setUserFlag("Maykop-6",0)
|
|
end
|
|
end
|
|
|
|
-- Kutaisi
|
|
CaptureKutaisi = AIRBASE:FindByName("Kutaisi")
|
|
CaptureKutaisi:HandleEvent(EVENTS.BaseCaptured)
|
|
function CaptureKutaisi:OnEventBaseCaptured(EventData)
|
|
local coa = CaptureKutaisi:GetCoalition()
|
|
if coa == 1 then -- red
|
|
local RadioMessage = MESSAGE:New("Failure! Kutaisi has been captured by NATO!",5,"[ MISSION PROGRESS ]", false):ToRed()
|
|
elseif coa == 2 then -- blue
|
|
local RadioMessage = MESSAGE:New("Kutaisi has been captured by NATO!",5,"[ MISSION PROGRESS ]", false):ToBlue()
|
|
trigger.action.setUserFlag("Kutaisi-1",0)
|
|
trigger.action.setUserFlag("Kutaisi-2",0)
|
|
trigger.action.setUserFlag("Kutaisi-3",0)
|
|
trigger.action.setUserFlag("Kutaisi-4",0)
|
|
trigger.action.setUserFlag("Kutaisi-5",0)
|
|
trigger.action.setUserFlag("Kutaisi-6",0)
|
|
trigger.action.setUserFlag("Kutaisi-7",0)
|
|
trigger.action.setUserFlag("Kutaisi-8",0)
|
|
trigger.action.setUserFlag("Kutaisi-9",0)
|
|
trigger.action.setUserFlag("Kutaisi-10",0)
|
|
trigger.action.setUserFlag("Kutaisi-11",0)
|
|
trigger.action.setUserFlag("Kutaisi-12",0)
|
|
end
|
|
end
|
|
|
|
|
|
-- Mineralnye Vody
|
|
CaptureVody = AIRBASE:FindByName("Mineralnye Vody")
|
|
CaptureVody:HandleEvent(EVENTS.BaseCaptured)
|
|
function CaptureVody:OnEventBaseCaptured(EventData)
|
|
local coa = CaptureVody:GetCoalition()
|
|
if coa == 1 then -- red
|
|
local RadioMessage = MESSAGE:New("Failure! Mineralnye Vody has been captured by NATO!",5,"[ MISSION PROGRESS ]", false):ToRed()
|
|
elseif coa == 2 then -- blue
|
|
local RadioMessage = MESSAGE:New("Mineralnye Vody has been captured by NATO!",5,"[ MISSION PROGRESS ]", false):ToBlue()
|
|
end
|
|
end
|
|
|
|
-- Batumi
|
|
CaptureBatumi = AIRBASE:FindByName("Batumi")
|
|
CaptureBatumi:HandleEvent(EVENTS.BaseCaptured)
|
|
function CaptureBatumi:OnEventBaseCaptured(EventData)
|
|
local coa = CaptureBatumi:GetCoalition()
|
|
|
|
-- To a specific coalition.
|
|
if coa == 1 then -- red
|
|
--SoundRadioMsg:ToCoalition(coalition.side.RED)
|
|
local RadioMessage = MESSAGE:New("Failure! Batumi has been captured by NATO!",5,"[ MISSION PROGRESS ]", false):ToRed()
|
|
|
|
elseif coa == 2 then -- blue
|
|
--SoundRadioMsg:ToCoalition(coalition.side.BLUE)
|
|
local RadioMessage = MESSAGE:New("Batumi has been captured by NATO!",5,"[ MISSION PROGRESS ]", false):ToBlue()
|
|
|
|
trigger.action.setUserFlag("Batumi-1",0)
|
|
trigger.action.setUserFlag("Batumi-2",0)
|
|
trigger.action.setUserFlag("Batumi-3",0)
|
|
trigger.action.setUserFlag("Batumi-4",0)
|
|
trigger.action.setUserFlag("Batumi-5",0)
|
|
trigger.action.setUserFlag("Batumi-6",0)
|
|
|
|
trigger.action.setUserFlag("BATUMI-APACHE-1",0)
|
|
trigger.action.setUserFlag("BATUMI-APACHE-2",0)
|
|
trigger.action.setUserFlag("BATUMI-APACHE-3",0)
|
|
trigger.action.setUserFlag("BATUMI-APACHE-4",0)
|
|
|
|
trigger.action.setUserFlag("BATUMI-HIND-1",0)
|
|
trigger.action.setUserFlag("BATUMI-HIND-2",0)
|
|
trigger.action.setUserFlag("BATUMI-HIND-3",0)
|
|
trigger.action.setUserFlag("BATUMI-HIND-4",0)
|
|
|
|
trigger.action.setUserFlag("BATUMI-UH1-1",0)
|
|
trigger.action.setUserFlag("BATUMI-UH1-2",0)
|
|
trigger.action.setUserFlag("BATUMI-UH1-3",0)
|
|
trigger.action.setUserFlag("BATUMI-UH1-4",0)
|
|
|
|
trigger.action.setUserFlag("BATUMI-GAZ-1",0)
|
|
trigger.action.setUserFlag("BATUMI-GAZ-2",0)
|
|
trigger.action.setUserFlag("BATUMI-GAZ-3",0)
|
|
trigger.action.setUserFlag("BATUMI-GAZ-4",0)
|
|
|
|
trigger.action.setUserFlag("BATUMI-MI8-1",0)
|
|
trigger.action.setUserFlag("BATUMI-MI8-2",0)
|
|
trigger.action.setUserFlag("BATUMI-MI8-3",0)
|
|
trigger.action.setUserFlag("BATUMI-MI8-4",0)
|
|
|
|
trigger.action.setUserFlag("BATUMI-KA50-1",0)
|
|
trigger.action.setUserFlag("BATUMI-KA50-2",0)
|
|
trigger.action.setUserFlag("BATUMI-KA50-3",0)
|
|
trigger.action.setUserFlag("BATUMI-KA50-4",0)
|
|
|
|
-- Figure out how to add smoke effects?
|
|
end
|
|
end
|
|
|
|
|
|
-- Clean = CLEANUP_AIRBASE:New( AIRBASE.Caucasus.Batumi )
|
|
-- Clean:SetCleanMissiles( false )
|
|
|
|
|
|
-- I don't know why this crap doesn't work. Well it works, but the onbrith or startup events keep happening
|
|
-- even though the plane is already alive. Update: happens when each new player logs in - all the events fire. =/ lame.
|
|
|
|
---- Messages for AWACS
|
|
-- Spawn_BlueEWR:HandleEvent(EVENTS.Birth)
|
|
-- function Spawn_BlueEWR:OnEventBirth(EventData)
|
|
-- local RadioMessage = MESSAGE:New("A new AWACS has spawned.",15,"[ AWACS STATUS ]", true):ToBlue()
|
|
-- SoundRadioMsg:ToCoalition(coalition.side.BLUE)
|
|
-- end
|
|
--
|
|
-- Spawn_BlueEWR:HandleEvent(EVENTS.EngineStartup)
|
|
-- function Spawn_BlueEWR:OnEventEngineStartup(EventData)
|
|
-- local RadioMessage = MESSAGE:New("AWACS Startup Complete.",15,"[ AWACS STATUS ]", true):ToBlue()
|
|
-- SoundRadioMsg:ToCoalition(coalition.side.BLUE)
|
|
-- end
|
|
--
|
|
-- Spawn_BlueEWR:HandleEvent(EVENTS.EngineShutdown)
|
|
-- function Spawn_BlueEWR:OnEventEngineShutdown(EventData)
|
|
-- local RadioMessage = MESSAGE:New("AWACS Shutdown. Swapping Pilots, restarting soon..",15,"[ AWACS STATUS ]", true):ToBlue()
|
|
-- SoundRadioMsg:ToCoalition(coalition.side.BLUE)
|
|
-- end
|
|
--
|
|
-- Spawn_BlueEWR:HandleEvent(EVENTS.Land)
|
|
-- function Spawn_BlueEWR:OnEventLand(EventData)
|
|
-- local RadioMessage = MESSAGE:New("AWACS has landed. Taxing to parking.",15,"[ AWACS STATUS ]", true):ToBlue()
|
|
-- SoundRadioMsg:ToCoalition(coalition.side.BLUE)
|
|
-- end
|
|
--
|
|
-- Spawn_BlueEWR:HandleEvent(EVENTS.Takeoff)
|
|
-- function Spawn_BlueEWR:OnEventTakeoff(EventData)
|
|
-- local RadioMessage = MESSAGE:New("AWACS has taken off, AWACS Services Online.",15,"[ AWACS STATUS ]", true):ToBlue()
|
|
-- SoundRadioMsg:ToCoalition(coalition.side.BLUE)
|
|
-- end
|
|
--
|
|
-- -- Messages for RED AWACS
|
|
-- Spawn_RedEWR:HandleEvent(EVENTS.Birth)
|
|
-- function Spawn_RedEWR:OnEventBirth(EventData)
|
|
-- local RadioMessage = MESSAGE:New("A new AWACS has spawned..",15,"[ AWACS STATUS ]", true):ToRed()
|
|
-- SoundRadioMsg:ToCoalition(coalition.side.RED)
|
|
-- end
|
|
---- Spawn_RedEWR:HandleEvent(EVENTS.EngineStartup)
|
|
---- function Spawn_RedEWR:OnEventEngineStartup(EventData)
|
|
---- local RadioMessage = MESSAGE:New("AWACS Startup Complete.",15,"[ AWACS STATUS ]", true):ToRed()
|
|
---- SoundRadioMsg:ToCoalition(coalition.side.RED)
|
|
---- end
|
|
-- Spawn_RedEWR:HandleEvent(EVENTS.EngineShutdown)
|
|
-- function Spawn_RedEWR:OnEventEngineShutdown(EventData)
|
|
-- local RadioMessage = MESSAGE:New("AWACS Shuting down..",15,"[ AWACS STATUS ]", true):ToRed()
|
|
-- SoundRadioMsg:ToCoalition(coalition.side.RED)
|
|
-- end
|
|
-- Spawn_RedEWR:HandleEvent(EVENTS.Land)
|
|
-- function Spawn_RedEWR:OnEventLand(EventData)
|
|
-- local RadioMessage = MESSAGE:New("AWACS has landed..",15,"[ AWACS STATUS ]", true):ToRed()
|
|
-- SoundRadioMsg:ToCoalition(coalition.side.RED)
|
|
-- end
|
|
-- Spawn_RedEWR:HandleEvent(EVENTS.Takeoff)
|
|
-- function Spawn_RedEWR:OnEventTakeoff(EventData)
|
|
-- local RadioMessage = MESSAGE:New("AWACS has taken off..",15,"[ AWACS STATUS ]", true):ToRed()
|
|
-- SoundRadioMsg:ToCoalition(coalition.side.RED)
|
|
-- end
|
|
--
|
|
---- Messages for Shell SHL 42 X 253
|
|
-- Spawn_Blue135:HandleEvent(EVENTS.Birth)
|
|
-- function Spawn_Blue135:OnEventBirth(EventData)
|
|
-- local RadioMessage = MESSAGE:New("Tanker Shell on 42x 253am has spawned..",15,"[ 135 TANKER STATUS ]", true):ToBlue()
|
|
-- SoundRadioMsg:ToCoalition(coalition.side.BLUE)
|
|
-- end
|
|
---- Spawn_Blue135:HandleEvent(EVENTS.EngineStartup)
|
|
---- function Spawn_Blue135:OnEventEngineStartup(EventData)
|
|
---- local RadioMessage = MESSAGE:New("Tanker Shell on 42x 253am has started up..",15,"[ 135 TANKER STATUS ]", true):ToBlue()
|
|
---- SoundRadioMsg:ToCoalition(coalition.side.BLUE)
|
|
---- end
|
|
-- Spawn_Blue135:HandleEvent(EVENTS.EngineShutdown)
|
|
-- function Spawn_Blue135:OnEventEngineShutdown(EventData)
|
|
-- local RadioMessage = MESSAGE:New("Tanker Shell on 42x 253am has shut down..",15,"[ 135 TANKER STATUS ]", true):ToBlue()
|
|
-- SoundRadioMsg:ToCoalition(coalition.side.BLUE)
|
|
-- end
|
|
-- Spawn_Blue135:HandleEvent(EVENTS.Land)
|
|
-- function Spawn_Blue135:OnEventLand(EventData)
|
|
-- local RadioMessage = MESSAGE:New("Tanker Shell on 42x 253am has Landed..",15,"[ 135 TANKER STATUS ]", true):ToBlue()
|
|
-- SoundRadioMsg:ToCoalition(coalition.side.BLUE)
|
|
-- end
|
|
-- Spawn_Blue135:HandleEvent(EVENTS.Takeoff)
|
|
-- function Spawn_Blue135:OnEventTakeoff(EventData)
|
|
-- local RadioMessage = MESSAGE:New("Tanker Shell on 42x 253am has taken off..",15,"[ 135 TANKER STATUS ]", true):ToBlue()
|
|
-- SoundRadioMsg:ToCoalition(coalition.side.BLUE)
|
|
-- end
|
|
--
|
|
-- -- Messages for Texaco TEX 41 X 252
|
|
-- Spawn_Blue135MPRS:HandleEvent(EVENTS.Birth)
|
|
-- function Spawn_Blue135MPRS:OnEventBirth(EventData)
|
|
-- local RadioMessage = MESSAGE:New("Tanker Texaco TEX 41x 252am has spawned..",15,"[ 135MPRS TANKER STATUS ]", true):ToBlue()
|
|
-- SoundRadioMsg:ToCoalition(coalition.side.BLUE)
|
|
-- end
|
|
---- Spawn_Blue135MPRS:HandleEvent(EVENTS.EngineStartup)
|
|
---- function Spawn_Blue135MPRS:OnEventEngineStartup(EventData)
|
|
---- local RadioMessage = MESSAGE:New("Tanker Texaco TEX 41x 252am has started up..",15,"[ 135MPRS TANKER STATUS ]", true):ToBlue()
|
|
---- SoundRadioMsg:ToCoalition(coalition.side.BLUE)
|
|
---- end
|
|
-- Spawn_Blue135MPRS:HandleEvent(EVENTS.EngineShutdown)
|
|
-- function Spawn_Blue135MPRS:OnEventEngineShutdown(EventData)
|
|
-- local RadioMessage = MESSAGE:New("Tanker Texaco TEX 41x 252am has shut down..",15,"[ 135MPRS TANKER STATUS ]", true):ToBlue()
|
|
-- SoundRadioMsg:ToCoalition(coalition.side.BLUE)
|
|
-- end
|
|
-- Spawn_Blue135MPRS:HandleEvent(EVENTS.Land)
|
|
-- function Spawn_Blue135MPRS:OnEventLand(EventData)
|
|
-- local RadioMessage = MESSAGE:New("Tanker Texaco TEX 41x 252am has Landed..",15,"[ 135MPRS TANKER STATUS ]", true):ToBlue()
|
|
-- SoundRadioMsg:ToCoalition(coalition.side.BLUE)
|
|
-- end
|
|
-- Spawn_Blue135MPRS:HandleEvent(EVENTS.Tkeoff)
|
|
-- function Spawn_Blue135MPRS:OnEventTakeoff(EventData)
|
|
-- local RadioMessage = MESSAGE:New("Tanker Texaco TEX 41x 252am has taken off..",15,"[ 135MPRS TANKER STATUS ]", true):ToBlue()
|
|
-- SoundRadioMsg:ToCoalition(coalition.side.BLUE)
|
|
-- end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|