Split mission.lua into mission.lua, reinforcements.lua and supportpowers.lua. Fixes #4204
This commit is contained in:
@@ -172,3 +172,5 @@ LuaScripts:
|
|||||||
mods/ra/lua/team.lua
|
mods/ra/lua/team.lua
|
||||||
mods/ra/lua/media.lua
|
mods/ra/lua/media.lua
|
||||||
mods/ra/lua/mission.lua
|
mods/ra/lua/mission.lua
|
||||||
|
mods/ra/lua/reinforcements.lua
|
||||||
|
mods/ra/lua/supportpowers.lua
|
||||||
|
|||||||
@@ -152,3 +152,5 @@ LuaScripts:
|
|||||||
mods/ra/lua/team.lua
|
mods/ra/lua/team.lua
|
||||||
mods/ra/lua/media.lua
|
mods/ra/lua/media.lua
|
||||||
mods/ra/lua/mission.lua
|
mods/ra/lua/mission.lua
|
||||||
|
mods/ra/lua/reinforcements.lua
|
||||||
|
mods/ra/lua/supportpowers.lua
|
||||||
|
|||||||
@@ -1,87 +1,5 @@
|
|||||||
Mission = { }
|
Mission = { }
|
||||||
|
|
||||||
Mission.PerformHelicopterInsertion = function(owner, helicopterName, passengerNames, enterPosition, unloadPosition, exitPosition)
|
|
||||||
local facing = { Map.GetFacing(WPos.op_Subtraction(unloadPosition, enterPosition), 0), "Int32" }
|
|
||||||
local altitude = { Actor.TraitInfo(helicopterName, "AircraftInfo").CruiseAltitude, "Int32" }
|
|
||||||
local heli = Actor.Create(helicopterName, { Owner = owner, CenterPosition = enterPosition, Facing = facing, Altitude = altitude })
|
|
||||||
local cargo = Actor.Trait(heli, "Cargo")
|
|
||||||
local passengers = { }
|
|
||||||
for i, passengerName in ipairs(passengerNames) do
|
|
||||||
local passenger = Actor.Create(passengerName, { AddToWorld = false, Owner = owner })
|
|
||||||
cargo:Load(heli, passenger)
|
|
||||||
passengers[i] = passenger
|
|
||||||
end
|
|
||||||
Actor.HeliFly(heli, unloadPosition)
|
|
||||||
Actor.Turn(heli, 0)
|
|
||||||
Actor.HeliLand(heli, true)
|
|
||||||
Actor.UnloadCargo(heli, true)
|
|
||||||
Actor.Wait(heli, 125)
|
|
||||||
Actor.HeliFly(heli, exitPosition)
|
|
||||||
Actor.RemoveSelf(heli)
|
|
||||||
return heli, passengers
|
|
||||||
end
|
|
||||||
|
|
||||||
Mission.PerformHelicopterExtraction = function(owner, helicopterName, passengers, enterPosition, loadPosition, exitPosition)
|
|
||||||
local facing = { Map.GetFacing(WPos.op_Subtraction(loadPosition, enterPosition), 0), "Int32" }
|
|
||||||
local altitude = { Actor.TraitInfo(helicopterName, "AircraftInfo").CruiseAltitude, "Int32" }
|
|
||||||
local heli = Actor.Create(helicopterName, { Owner = owner, CenterPosition = enterPosition, Facing = facing, Altitude = altitude })
|
|
||||||
local cargo = Actor.Trait(heli, "Cargo")
|
|
||||||
Actor.HeliFly(heli, loadPosition)
|
|
||||||
Actor.Turn(heli, 0)
|
|
||||||
Actor.HeliLand(heli, true)
|
|
||||||
Actor.WaitFor(heli, function()
|
|
||||||
for i, passenger in ipairs(passengers) do
|
|
||||||
if not cargo.Passengers:Contains(passenger) then
|
|
||||||
return false
|
|
||||||
end
|
|
||||||
end
|
|
||||||
return true
|
|
||||||
end)
|
|
||||||
Actor.Wait(heli, 125)
|
|
||||||
Actor.HeliFly(heli, exitPosition)
|
|
||||||
Actor.RemoveSelf(heli)
|
|
||||||
return heli
|
|
||||||
end
|
|
||||||
|
|
||||||
Mission.Reinforce = function(owner, reinforcementNames, enterLocation, rallyPointLocation, interval, onCreateFunc)
|
|
||||||
local facing = { Map.GetFacing(CPos.op_Subtraction(rallyPointLocation, enterLocation), 0), "Int32" }
|
|
||||||
local ret = { }
|
|
||||||
for i = 1, #reinforcementNames do
|
|
||||||
local reinforcement = Actor.Create(reinforcementNames[i], { AddToWorld = false, Owner = owner, Location = enterLocation, Facing = facing })
|
|
||||||
table.insert(ret, reinforcement)
|
|
||||||
OpenRA.RunAfterDelay((i - 1) * interval, function()
|
|
||||||
World:Add(reinforcement)
|
|
||||||
Actor.MoveNear(reinforcement, rallyPointLocation, 2)
|
|
||||||
if onCreateFunc ~= nil then
|
|
||||||
onCreateFunc(reinforcement)
|
|
||||||
end
|
|
||||||
end)
|
|
||||||
end
|
|
||||||
return ret
|
|
||||||
end
|
|
||||||
|
|
||||||
Mission.Parabomb = function(owner, planeName, enterLocation, bombLocation)
|
|
||||||
local facing = { Map.GetFacing(CPos.op_Subtraction(bombLocation, enterLocation), 0), "Int32" }
|
|
||||||
local altitude = { Actor.TraitInfo(planeName, "AircraftInfo").CruiseAltitude, "Int32" }
|
|
||||||
local plane = Actor.Create(planeName, { Location = enterLocation, Owner = owner, Facing = facing, Altitude = altitude })
|
|
||||||
Actor.Trait(plane, "AttackBomber"):SetTarget(bombLocation.CenterPosition)
|
|
||||||
Actor.Fly(plane, bombLocation.CenterPosition)
|
|
||||||
Actor.FlyOffMap(plane)
|
|
||||||
Actor.RemoveSelf(plane)
|
|
||||||
end
|
|
||||||
|
|
||||||
Mission.Paradrop = function(owner, planeName, passengerNames, enterLocation, dropLocation)
|
|
||||||
local facing = { Map.GetFacing(CPos.op_Subtraction(dropLocation, enterLocation), 0), "Int32" }
|
|
||||||
local altitude = { Actor.TraitInfo(planeName, "AircraftInfo").CruiseAltitude, "Int32" }
|
|
||||||
local plane = Actor.Create(planeName, { Location = enterLocation, Owner = owner, Facing = facing, Altitude = altitude })
|
|
||||||
Actor.FlyAttackCell(plane, dropLocation)
|
|
||||||
Actor.Trait(plane, "ParaDrop"):SetLZ(dropLocation)
|
|
||||||
local cargo = Actor.Trait(plane, "Cargo")
|
|
||||||
for i, passengerName in ipairs(passengerNames) do
|
|
||||||
cargo:Load(plane, Actor.Create(passengerName, { AddToWorld = false, Owner = owner }))
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
Mission.MissionOver = function(winners, losers, setWinStates)
|
Mission.MissionOver = function(winners, losers, setWinStates)
|
||||||
World:SetLocalPauseState(true)
|
World:SetLocalPauseState(true)
|
||||||
World:set_PauseStateLocked(true)
|
World:set_PauseStateLocked(true)
|
||||||
|
|||||||
61
mods/ra/lua/reinforcements.lua
Normal file
61
mods/ra/lua/reinforcements.lua
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
Reinforcements = { }
|
||||||
|
|
||||||
|
Reinforcements.PerformHelicopterInsertion = function(owner, helicopterName, passengerNames, enterPosition, unloadPosition, exitPosition)
|
||||||
|
local facing = { Map.GetFacing(WPos.op_Subtraction(unloadPosition, enterPosition), 0), "Int32" }
|
||||||
|
local altitude = { Actor.TraitInfo(helicopterName, "AircraftInfo").CruiseAltitude, "Int32" }
|
||||||
|
local heli = Actor.Create(helicopterName, { Owner = owner, CenterPosition = enterPosition, Facing = facing, Altitude = altitude })
|
||||||
|
local cargo = Actor.Trait(heli, "Cargo")
|
||||||
|
local passengers = { }
|
||||||
|
for i, passengerName in ipairs(passengerNames) do
|
||||||
|
local passenger = Actor.Create(passengerName, { AddToWorld = false, Owner = owner })
|
||||||
|
cargo:Load(heli, passenger)
|
||||||
|
passengers[i] = passenger
|
||||||
|
end
|
||||||
|
Actor.HeliFly(heli, unloadPosition)
|
||||||
|
Actor.Turn(heli, 0)
|
||||||
|
Actor.HeliLand(heli, true)
|
||||||
|
Actor.UnloadCargo(heli, true)
|
||||||
|
Actor.Wait(heli, 125)
|
||||||
|
Actor.HeliFly(heli, exitPosition)
|
||||||
|
Actor.RemoveSelf(heli)
|
||||||
|
return heli, passengers
|
||||||
|
end
|
||||||
|
|
||||||
|
Reinforcements.PerformHelicopterExtraction = function(owner, helicopterName, passengers, enterPosition, loadPosition, exitPosition)
|
||||||
|
local facing = { Map.GetFacing(WPos.op_Subtraction(loadPosition, enterPosition), 0), "Int32" }
|
||||||
|
local altitude = { Actor.TraitInfo(helicopterName, "AircraftInfo").CruiseAltitude, "Int32" }
|
||||||
|
local heli = Actor.Create(helicopterName, { Owner = owner, CenterPosition = enterPosition, Facing = facing, Altitude = altitude })
|
||||||
|
local cargo = Actor.Trait(heli, "Cargo")
|
||||||
|
Actor.HeliFly(heli, loadPosition)
|
||||||
|
Actor.Turn(heli, 0)
|
||||||
|
Actor.HeliLand(heli, true)
|
||||||
|
Actor.WaitFor(heli, function()
|
||||||
|
for i, passenger in ipairs(passengers) do
|
||||||
|
if not cargo.Passengers:Contains(passenger) then
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return true
|
||||||
|
end)
|
||||||
|
Actor.Wait(heli, 125)
|
||||||
|
Actor.HeliFly(heli, exitPosition)
|
||||||
|
Actor.RemoveSelf(heli)
|
||||||
|
return heli
|
||||||
|
end
|
||||||
|
|
||||||
|
Reinforcements.Reinforce = function(owner, reinforcementNames, enterLocation, rallyPointLocation, interval, onCreateFunc)
|
||||||
|
local facing = { Map.GetFacing(CPos.op_Subtraction(rallyPointLocation, enterLocation), 0), "Int32" }
|
||||||
|
local ret = { }
|
||||||
|
for i = 1, #reinforcementNames do
|
||||||
|
local reinforcement = Actor.Create(reinforcementNames[i], { AddToWorld = false, Owner = owner, Location = enterLocation, Facing = facing })
|
||||||
|
table.insert(ret, reinforcement)
|
||||||
|
OpenRA.RunAfterDelay((i - 1) * interval, function()
|
||||||
|
World:Add(reinforcement)
|
||||||
|
Actor.MoveNear(reinforcement, rallyPointLocation, 2)
|
||||||
|
if onCreateFunc ~= nil then
|
||||||
|
onCreateFunc(reinforcement)
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
return ret
|
||||||
|
end
|
||||||
23
mods/ra/lua/supportpowers.lua
Normal file
23
mods/ra/lua/supportpowers.lua
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
SupportPowers = { }
|
||||||
|
|
||||||
|
SupportPowers.Parabomb = function(owner, planeName, enterLocation, bombLocation)
|
||||||
|
local facing = { Map.GetFacing(CPos.op_Subtraction(bombLocation, enterLocation), 0), "Int32" }
|
||||||
|
local altitude = { Actor.TraitInfo(planeName, "AircraftInfo").CruiseAltitude, "Int32" }
|
||||||
|
local plane = Actor.Create(planeName, { Location = enterLocation, Owner = owner, Facing = facing, Altitude = altitude })
|
||||||
|
Actor.Trait(plane, "AttackBomber"):SetTarget(bombLocation.CenterPosition)
|
||||||
|
Actor.Fly(plane, bombLocation.CenterPosition)
|
||||||
|
Actor.FlyOffMap(plane)
|
||||||
|
Actor.RemoveSelf(plane)
|
||||||
|
end
|
||||||
|
|
||||||
|
SupportPowers.Paradrop = function(owner, planeName, passengerNames, enterLocation, dropLocation)
|
||||||
|
local facing = { Map.GetFacing(CPos.op_Subtraction(dropLocation, enterLocation), 0), "Int32" }
|
||||||
|
local altitude = { Actor.TraitInfo(planeName, "AircraftInfo").CruiseAltitude, "Int32" }
|
||||||
|
local plane = Actor.Create(planeName, { Location = enterLocation, Owner = owner, Facing = facing, Altitude = altitude })
|
||||||
|
Actor.FlyAttackCell(plane, dropLocation)
|
||||||
|
Actor.Trait(plane, "ParaDrop"):SetLZ(dropLocation)
|
||||||
|
local cargo = Actor.Trait(plane, "Cargo")
|
||||||
|
for i, passengerName in ipairs(passengerNames) do
|
||||||
|
cargo:Load(plane, Actor.Create(passengerName, { AddToWorld = false, Owner = owner }))
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -13,7 +13,7 @@ CivilianWait = 150
|
|||||||
BaseAlertDelay = 300
|
BaseAlertDelay = 300
|
||||||
|
|
||||||
SendInsertionHelicopter = function()
|
SendInsertionHelicopter = function()
|
||||||
local heli, passengers = Mission.PerformHelicopterInsertion(player, InsertionHelicopterType, { TanyaType },
|
local heli, passengers = Reinforcements.PerformHelicopterInsertion(player, InsertionHelicopterType, { TanyaType },
|
||||||
InsertionEntry.CenterPosition, InsertionLZ.CenterPosition, InsertionEntry.CenterPosition)
|
InsertionEntry.CenterPosition, InsertionLZ.CenterPosition, InsertionEntry.CenterPosition)
|
||||||
tanya = passengers[1]
|
tanya = passengers[1]
|
||||||
Actor.OnKilled(tanya, TanyaKilled)
|
Actor.OnKilled(tanya, TanyaKilled)
|
||||||
@@ -21,7 +21,7 @@ end
|
|||||||
|
|
||||||
SendJeeps = function()
|
SendJeeps = function()
|
||||||
Media.PlaySpeechNotification("ReinforcementsArrived")
|
Media.PlaySpeechNotification("ReinforcementsArrived")
|
||||||
Mission.Reinforce(player, JeepReinforcements, InsertionEntry.Location, InsertionLZ.Location, JeepInterval)
|
Reinforcements.Reinforce(player, JeepReinforcements, InsertionEntry.Location, InsertionLZ.Location, JeepInterval)
|
||||||
end
|
end
|
||||||
|
|
||||||
RunInitialActivities = function()
|
RunInitialActivities = function()
|
||||||
@@ -59,7 +59,7 @@ LabGuardsKilled = function()
|
|||||||
end
|
end
|
||||||
|
|
||||||
SendExtractionHelicopter = function()
|
SendExtractionHelicopter = function()
|
||||||
local heli = Mission.PerformHelicopterExtraction(player, ExtractionHelicopterType, { einstein },
|
local heli = Reinforcements.PerformHelicopterExtraction(player, ExtractionHelicopterType, { einstein },
|
||||||
SouthReinforcementsPoint.CenterPosition, ExtractionLZ.CenterPosition, ExtractionExitPoint.CenterPosition)
|
SouthReinforcementsPoint.CenterPosition, ExtractionLZ.CenterPosition, ExtractionExitPoint.CenterPosition)
|
||||||
Actor.OnKilled(heli, HelicopterDestroyed)
|
Actor.OnKilled(heli, HelicopterDestroyed)
|
||||||
Actor.OnRemovedFromWorld(heli, HelicopterExtractionCompleted)
|
Actor.OnRemovedFromWorld(heli, HelicopterExtractionCompleted)
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
Reinforcements = { "e1", "e1", "e1", "jeep" }
|
JeepReinforcements = { "e1", "e1", "e1", "jeep" }
|
||||||
ReinforcementsInterval = 15
|
JeepReinforcementsInterval = 15
|
||||||
TruckNames = { "truk", "truk", "truk" }
|
TruckNames = { "truk", "truk", "truk" }
|
||||||
TruckInterval = 25
|
TruckInterval = 25
|
||||||
TruckDelay = 75
|
TruckDelay = 75
|
||||||
@@ -15,7 +15,7 @@ end
|
|||||||
|
|
||||||
SendJeepReinforcements = function()
|
SendJeepReinforcements = function()
|
||||||
Media.PlaySpeechNotification("ReinforcementsArrived")
|
Media.PlaySpeechNotification("ReinforcementsArrived")
|
||||||
Mission.Reinforce(player, Reinforcements, ReinforcementsEntryPoint.Location, ReinforcementsRallyPoint.Location, ReinforcementsInterval)
|
Reinforcements.Reinforce(player, JeepReinforcements, ReinforcementsEntryPoint.Location, ReinforcementsRallyPoint.Location, JeepReinforcementsInterval)
|
||||||
end
|
end
|
||||||
|
|
||||||
RunInitialActivities = function()
|
RunInitialActivities = function()
|
||||||
@@ -49,7 +49,7 @@ end
|
|||||||
SendTrucks = function()
|
SendTrucks = function()
|
||||||
Media.PlaySpeechNotification("ConvoyApproaching")
|
Media.PlaySpeechNotification("ConvoyApproaching")
|
||||||
OpenRA.RunAfterDelay(TruckDelay, function()
|
OpenRA.RunAfterDelay(TruckDelay, function()
|
||||||
local trucks = Mission.Reinforce(france, TruckNames, TruckEntryPoint.Location, TruckRallyPoint.Location, TruckInterval,
|
local trucks = Reinforcements.Reinforce(france, TruckNames, TruckEntryPoint.Location, TruckRallyPoint.Location, TruckInterval,
|
||||||
function(truck)
|
function(truck)
|
||||||
Actor.Move(truck, TruckExitPoint.Location)
|
Actor.Move(truck, TruckExitPoint.Location)
|
||||||
Actor.RemoveSelf(truck)
|
Actor.RemoveSelf(truck)
|
||||||
|
|||||||
@@ -172,3 +172,5 @@ LuaScripts:
|
|||||||
mods/ra/lua/team.lua
|
mods/ra/lua/team.lua
|
||||||
mods/ra/lua/media.lua
|
mods/ra/lua/media.lua
|
||||||
mods/ra/lua/mission.lua
|
mods/ra/lua/mission.lua
|
||||||
|
mods/ra/lua/reinforcements.lua
|
||||||
|
mods/ra/lua/supportpowers.lua
|
||||||
|
|||||||
@@ -193,3 +193,5 @@ LuaScripts:
|
|||||||
mods/ra/lua/team.lua
|
mods/ra/lua/team.lua
|
||||||
mods/ra/lua/media.lua
|
mods/ra/lua/media.lua
|
||||||
mods/ra/lua/mission.lua
|
mods/ra/lua/mission.lua
|
||||||
|
mods/ra/lua/reinforcements.lua
|
||||||
|
mods/ra/lua/supportpowers.lua
|
||||||
|
|||||||
Reference in New Issue
Block a user