Merge pull request #4899 from obrakmann/gdi04a
Add port of scg04ea mission
This commit is contained in:
150
mods/cnc/maps/gdi04a/gdi04a.lua
Normal file
150
mods/cnc/maps/gdi04a/gdi04a.lua
Normal file
@@ -0,0 +1,150 @@
|
|||||||
|
Nod1Template = { {HandOfNod, {"e1", "e1", "e1", "e3", "e3"}} }
|
||||||
|
Auto1Template = { {HandOfNod, {"e1", "e1", "e3"}} }
|
||||||
|
|
||||||
|
if OpenRA.GetDifficulty() == "Easy" then
|
||||||
|
KillsUntilReinforcements = 8
|
||||||
|
HeliDelay = {83, 137, 211}
|
||||||
|
else
|
||||||
|
KillsUntilReinforcements = 16
|
||||||
|
HeliDelay = {57, 89, 123}
|
||||||
|
end
|
||||||
|
|
||||||
|
GDIReinforcements = {"e2", "e2", "e2", "e2"}
|
||||||
|
GDIReinforcementsWaypoints = {GDIReinforcementsEntry, GDIReinforcementsWP1}
|
||||||
|
|
||||||
|
NodHelis = {
|
||||||
|
{Utils.Seconds(HeliDelay[1]), {NodHeliEntry, NodHeliLZ1}, {"e1", "e3", "e3"}},
|
||||||
|
{Utils.Seconds(HeliDelay[2]), {NodHeliEntry, NodHeliLZ2}, {"e1", "e1", "e1", "e1", "e1"}},
|
||||||
|
{Utils.Seconds(HeliDelay[3]), {NodHeliEntry, NodHeliLZ3}, {"e1", "e1", "e3"}}
|
||||||
|
}
|
||||||
|
|
||||||
|
SendHeli = function(heli, func)
|
||||||
|
Reinforcements.ReinforceWithCargo(nod, "tran", heli[2], heli[3], func)
|
||||||
|
OpenRA.RunAfterDelay(heli[1], function() SendHeli(heli, func) end)
|
||||||
|
end
|
||||||
|
|
||||||
|
HeliAction = function(heliActor, team)
|
||||||
|
Actor.AfterMove(heliActor)
|
||||||
|
Actor.UnloadCargo(heliActor, true)
|
||||||
|
Actor.Wait(heliActor, Utils.Seconds(2))
|
||||||
|
Actor.ScriptedMove(heliActor, NodHeliEntry)
|
||||||
|
Actor.RemoveSelf(heliActor)
|
||||||
|
|
||||||
|
Team.Do(team, function(actor)
|
||||||
|
Actor.Hunt(actor)
|
||||||
|
Actor.OnIdle(actor, Actor.Hunt)
|
||||||
|
Actor.OnKilled(actor, KillCounter)
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
|
SendGDIReinforcements = function()
|
||||||
|
Reinforcements.ReinforceWithCargo(player, "apc", GDIReinforcementsWaypoints, GDIReinforcements, function(apc, team)
|
||||||
|
Team.Add(team, apc)
|
||||||
|
Actor.OnKilled(apc, SendGDIReinforcements)
|
||||||
|
Team.Do(team, function(unit) Actor.SetStance(unit, "Defend") end)
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
|
BuildNod1 = function()
|
||||||
|
Production.BuildTeamFromTemplate(nod, Nod1Template, function(team)
|
||||||
|
Team.Do(team, function(actor)
|
||||||
|
if not Actor.IsDead(actor) then
|
||||||
|
if OpenRA.GetDifficulty() == "Normal" then
|
||||||
|
Actor.OnIdle(actor, Actor.Hunt)
|
||||||
|
else
|
||||||
|
Actor.Scatter(actor)
|
||||||
|
end
|
||||||
|
Actor.OnKilled(actor, KillCounter)
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
Team.AddEventHandler(team.OnAllKilled, BuildNod1)
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
|
BuildAuto1 = function()
|
||||||
|
Production.BuildTeamFromTemplate(nod, Auto1Template, function(team)
|
||||||
|
Team.Do(team, function(actor)
|
||||||
|
if not Actor.IsDead(actor) then
|
||||||
|
Actor.OnIdle(actor, Actor.Hunt)
|
||||||
|
Actor.OnKilled(actor, KillCounter)
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
|
kills = 0
|
||||||
|
KillCounter = function() kills = kills + 1 end
|
||||||
|
|
||||||
|
Auto1Triggered = false
|
||||||
|
GDIHeliTriggered = false
|
||||||
|
ReinforcementsSent = false
|
||||||
|
Tick = function()
|
||||||
|
if not ReinforcementsSent and kills >= KillsUntilReinforcements then
|
||||||
|
ReinforcementsSent = true
|
||||||
|
SendGDIReinforcements()
|
||||||
|
end
|
||||||
|
|
||||||
|
if Mission.RequiredUnitsAreDestroyed(player) then
|
||||||
|
OpenRA.RunAfterDelay(Utils.Seconds(1), MissionFailed)
|
||||||
|
end
|
||||||
|
|
||||||
|
if not Auto1Triggered then
|
||||||
|
-- FIXME: replace with cell trigger when available
|
||||||
|
local units = Map.FindUnitsInCircle(player, Auto1Trigger, 2)
|
||||||
|
if #units > 0 then
|
||||||
|
Auto1Triggered = true
|
||||||
|
BuildAuto1()
|
||||||
|
end
|
||||||
|
elseif not GDIHeliTriggered then
|
||||||
|
-- FIXME: replace with cell trigger when available
|
||||||
|
local units = Map.FindUnitsInCircle(player, GDIHeliLZ, 2)
|
||||||
|
if #units > 0 then
|
||||||
|
GDIHeliTriggered = true
|
||||||
|
Reinforcements.ReinforceWithCargo(player, "tran", {GDIHeliEntry, GDIHeliLZ}, nil, Actor.AfterMove)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
SetupWorld = function()
|
||||||
|
OpenRA.GiveCash(nod, 10000)
|
||||||
|
Production.EventHandlers.Setup(nod)
|
||||||
|
|
||||||
|
Utils.Do(Mission.GetGroundAttackersOf(nod), function(unit)
|
||||||
|
Actor.OnKilled(unit, KillCounter)
|
||||||
|
end)
|
||||||
|
|
||||||
|
Utils.Do(Mission.GetGroundAttackersOf(player), function(unit)
|
||||||
|
Actor.SetStance(unit, "Defend")
|
||||||
|
end)
|
||||||
|
|
||||||
|
Actor.Hunt(Hunter1)
|
||||||
|
Actor.Hunt(Hunter2)
|
||||||
|
|
||||||
|
Actor.OnRemovedFromWorld(crate, MissionAccomplished)
|
||||||
|
end
|
||||||
|
|
||||||
|
WorldLoaded = function()
|
||||||
|
Media.PlayMovieFullscreen("bkground.vqa", function() Media.PlayMovieFullscreen("gdi4b.vqa", function() Media.PlayMovieFullscreen("nitejump.vqa") end) end)
|
||||||
|
|
||||||
|
player = OpenRA.GetPlayer("GDI")
|
||||||
|
nod = OpenRA.GetPlayer("Nod")
|
||||||
|
|
||||||
|
SetupWorld()
|
||||||
|
|
||||||
|
OpenRA.RunAfterDelay(1, BuildNod1)
|
||||||
|
Utils.Do(NodHelis, function(heli)
|
||||||
|
OpenRA.RunAfterDelay(heli[1], function() SendHeli(heli, HeliAction) end)
|
||||||
|
end)
|
||||||
|
|
||||||
|
OpenRA.SetViewportCenterPosition(Actor56.CenterPosition)
|
||||||
|
end
|
||||||
|
|
||||||
|
MissionAccomplished = function()
|
||||||
|
Mission.MissionOver({ player }, nil, false)
|
||||||
|
Media.PlayMovieFullscreen("burdet1.vqa")
|
||||||
|
end
|
||||||
|
|
||||||
|
MissionFailed = function()
|
||||||
|
Mission.MissionOver(nil, { player }, false)
|
||||||
|
Media.PlayMovieFullscreen("gameover.vqa")
|
||||||
|
end
|
||||||
BIN
mods/cnc/maps/gdi04a/map.bin
Normal file
BIN
mods/cnc/maps/gdi04a/map.bin
Normal file
Binary file not shown.
578
mods/cnc/maps/gdi04a/map.yaml
Normal file
578
mods/cnc/maps/gdi04a/map.yaml
Normal file
@@ -0,0 +1,578 @@
|
|||||||
|
Selectable: True
|
||||||
|
|
||||||
|
MapFormat: 6
|
||||||
|
|
||||||
|
RequiresMod: cnc
|
||||||
|
|
||||||
|
Title: Get the Rods back (a)
|
||||||
|
|
||||||
|
Description: Nod has captured classified GDI property. You must find and retrieve the stolen equipment. It is being transported in a shipping crate. Use the new APC to strategically transport infantry through Nod forces.
|
||||||
|
|
||||||
|
Author: Westwood Studios
|
||||||
|
|
||||||
|
Tileset: TEMPERAT
|
||||||
|
|
||||||
|
MapSize: 64,64
|
||||||
|
|
||||||
|
Bounds: 7,24,51,36
|
||||||
|
|
||||||
|
UseAsShellmap: False
|
||||||
|
|
||||||
|
Type: Campaign
|
||||||
|
|
||||||
|
Options:
|
||||||
|
Cheats: False
|
||||||
|
Crates: False
|
||||||
|
Fog: False
|
||||||
|
Shroud: True
|
||||||
|
AllyBuildRadius: False
|
||||||
|
FragileAlliances: False
|
||||||
|
StartingCash: 0
|
||||||
|
ConfigurableStartingUnits: False
|
||||||
|
Difficulties: Easy,Normal
|
||||||
|
|
||||||
|
Players:
|
||||||
|
PlayerReference@Nod:
|
||||||
|
Name: Nod
|
||||||
|
Race: nod
|
||||||
|
ColorRamp: 3,255,127
|
||||||
|
Allies: Nod
|
||||||
|
Enemies: GDI
|
||||||
|
PlayerReference@GDI:
|
||||||
|
Name: GDI
|
||||||
|
Playable: True
|
||||||
|
AllowBots: False
|
||||||
|
Required: True
|
||||||
|
LockRace: True
|
||||||
|
Race: gdi
|
||||||
|
LockColor: True
|
||||||
|
ColorRamp: 31,222,183
|
||||||
|
LockSpawn: True
|
||||||
|
LockTeam: True
|
||||||
|
Allies: GDI
|
||||||
|
Enemies: Nod
|
||||||
|
PlayerReference@Neutral:
|
||||||
|
Name: Neutral
|
||||||
|
OwnsWorld: True
|
||||||
|
NonCombatant: True
|
||||||
|
Race: gdi
|
||||||
|
PlayerReference@Creeps:
|
||||||
|
Name: Creeps
|
||||||
|
NonCombatant: True
|
||||||
|
Race: gdi
|
||||||
|
|
||||||
|
Actors:
|
||||||
|
Actor0: cycl
|
||||||
|
Location: 26,59
|
||||||
|
Owner: Neutral
|
||||||
|
Actor1: cycl
|
||||||
|
Location: 25,59
|
||||||
|
Owner: Neutral
|
||||||
|
Actor2: cycl
|
||||||
|
Location: 24,59
|
||||||
|
Owner: Neutral
|
||||||
|
Actor3: cycl
|
||||||
|
Location: 26,58
|
||||||
|
Owner: Neutral
|
||||||
|
Actor4: cycl
|
||||||
|
Location: 24,58
|
||||||
|
Owner: Neutral
|
||||||
|
Actor5: t11
|
||||||
|
Location: 37,43
|
||||||
|
Owner: Neutral
|
||||||
|
Actor6: t11
|
||||||
|
Location: 24,43
|
||||||
|
Owner: Neutral
|
||||||
|
Actor7: t08
|
||||||
|
Location: 46,26
|
||||||
|
Owner: Neutral
|
||||||
|
Actor8: t08
|
||||||
|
Location: 48,23
|
||||||
|
Owner: Neutral
|
||||||
|
Actor9: t17
|
||||||
|
Location: 42,24
|
||||||
|
Owner: Neutral
|
||||||
|
Actor10: tc02
|
||||||
|
Location: 50,28
|
||||||
|
Owner: Neutral
|
||||||
|
Actor11: tc03
|
||||||
|
Location: 46,22
|
||||||
|
Owner: Neutral
|
||||||
|
Actor12: tc01
|
||||||
|
Location: 17,48
|
||||||
|
Owner: Neutral
|
||||||
|
Actor13: tc04
|
||||||
|
Location: 14,47
|
||||||
|
Owner: Neutral
|
||||||
|
Actor14: tc02
|
||||||
|
Location: 15,56
|
||||||
|
Owner: Neutral
|
||||||
|
Actor15: tc03
|
||||||
|
Location: 13,56
|
||||||
|
Owner: Neutral
|
||||||
|
Actor16: tc05
|
||||||
|
Location: 32,24
|
||||||
|
Owner: Neutral
|
||||||
|
Actor17: tc05
|
||||||
|
Location: 16,46
|
||||||
|
Owner: Neutral
|
||||||
|
Actor18: tc05
|
||||||
|
Location: 12,36
|
||||||
|
Owner: Neutral
|
||||||
|
Actor19: tc04
|
||||||
|
Location: 15,41
|
||||||
|
Owner: Neutral
|
||||||
|
Actor20: tc04
|
||||||
|
Location: 24,41
|
||||||
|
Owner: Neutral
|
||||||
|
Actor21: tc04
|
||||||
|
Location: 33,39
|
||||||
|
Owner: Neutral
|
||||||
|
Actor22: tc04
|
||||||
|
Location: 44,34
|
||||||
|
Owner: Neutral
|
||||||
|
Actor23: tc04
|
||||||
|
Location: 36,24
|
||||||
|
Owner: Neutral
|
||||||
|
Actor24: tc04
|
||||||
|
Location: 23,35
|
||||||
|
Owner: Neutral
|
||||||
|
Actor25: tc03
|
||||||
|
Location: 47,35
|
||||||
|
Owner: Neutral
|
||||||
|
Actor26: tc02
|
||||||
|
Location: 49,35
|
||||||
|
Owner: Neutral
|
||||||
|
Actor27: tc04
|
||||||
|
Location: 40,25
|
||||||
|
Owner: Neutral
|
||||||
|
Actor28: tc01
|
||||||
|
Location: 37,25
|
||||||
|
Owner: Neutral
|
||||||
|
Actor29: t01
|
||||||
|
Location: 11,29
|
||||||
|
Owner: Neutral
|
||||||
|
Actor30: t08
|
||||||
|
Location: 14,27
|
||||||
|
Owner: Neutral
|
||||||
|
Actor31: t08
|
||||||
|
Location: 22,35
|
||||||
|
Owner: Neutral
|
||||||
|
Actor32: t07
|
||||||
|
Location: 25,34
|
||||||
|
Owner: Neutral
|
||||||
|
Actor33: t07
|
||||||
|
Location: 21,27
|
||||||
|
Owner: Neutral
|
||||||
|
Actor34: t08
|
||||||
|
Location: 27,31
|
||||||
|
Owner: Neutral
|
||||||
|
Actor35: t06
|
||||||
|
Location: 26,31
|
||||||
|
Owner: Neutral
|
||||||
|
Actor36: t06
|
||||||
|
Location: 23,24
|
||||||
|
Owner: Neutral
|
||||||
|
Actor37: t06
|
||||||
|
Location: 3,23
|
||||||
|
Owner: Neutral
|
||||||
|
Actor38: t07
|
||||||
|
Location: 12,35
|
||||||
|
Owner: Neutral
|
||||||
|
Actor39: t05
|
||||||
|
Location: 13,42
|
||||||
|
Owner: Neutral
|
||||||
|
Actor40: tc01
|
||||||
|
Location: 14,57
|
||||||
|
Owner: Neutral
|
||||||
|
Actor41: t11
|
||||||
|
Location: 14,34
|
||||||
|
Owner: Neutral
|
||||||
|
Actor42: t01
|
||||||
|
Location: 36,39
|
||||||
|
Owner: Neutral
|
||||||
|
Actor43: t08
|
||||||
|
Location: 34,45
|
||||||
|
Owner: Neutral
|
||||||
|
Actor44: t07
|
||||||
|
Location: 33,44
|
||||||
|
Owner: Neutral
|
||||||
|
Actor45: t06
|
||||||
|
Location: 32,44
|
||||||
|
Owner: Neutral
|
||||||
|
Actor46: tc03
|
||||||
|
Location: 7,25
|
||||||
|
Owner: Neutral
|
||||||
|
Actor47: t11
|
||||||
|
Location: 11,24
|
||||||
|
Owner: Neutral
|
||||||
|
Actor48: tc02
|
||||||
|
Location: 35,38
|
||||||
|
Owner: Neutral
|
||||||
|
Actor49: tc03
|
||||||
|
Location: 33,38
|
||||||
|
Owner: Neutral
|
||||||
|
Actor50: hq
|
||||||
|
Location: 29,57
|
||||||
|
Owner: Nod
|
||||||
|
Health: 1
|
||||||
|
Facing: 0
|
||||||
|
Actor51: nuke
|
||||||
|
Location: 28,54
|
||||||
|
Owner: Nod
|
||||||
|
Health: 1
|
||||||
|
Facing: 0
|
||||||
|
HandOfNod: hand
|
||||||
|
Location: 30,52
|
||||||
|
Owner: Nod
|
||||||
|
Health: 1
|
||||||
|
Facing: 0
|
||||||
|
Hunter1: bggy
|
||||||
|
Location: 35,43
|
||||||
|
Owner: Nod
|
||||||
|
Health: 1
|
||||||
|
Facing: 192
|
||||||
|
Actor54: bggy
|
||||||
|
Location: 55,53
|
||||||
|
Owner: Nod
|
||||||
|
Health: 1
|
||||||
|
Facing: 32
|
||||||
|
Actor55: bggy
|
||||||
|
Location: 38,43
|
||||||
|
Owner: Nod
|
||||||
|
Health: 1
|
||||||
|
Facing: 64
|
||||||
|
Actor56: jeep
|
||||||
|
Location: 13,53
|
||||||
|
Owner: GDI
|
||||||
|
Health: 1
|
||||||
|
Facing: 0
|
||||||
|
Hunter2: bggy
|
||||||
|
Location: 32,43
|
||||||
|
Owner: Nod
|
||||||
|
Health: 1
|
||||||
|
Facing: 192
|
||||||
|
Actor58: bggy
|
||||||
|
Location: 31,57
|
||||||
|
Owner: Nod
|
||||||
|
Health: 1
|
||||||
|
Facing: 32
|
||||||
|
Actor59: apc
|
||||||
|
Location: 14,53
|
||||||
|
Owner: GDI
|
||||||
|
Health: 1
|
||||||
|
Facing: 0
|
||||||
|
Actor60: apc
|
||||||
|
Location: 12,53
|
||||||
|
Owner: GDI
|
||||||
|
Health: 1
|
||||||
|
Facing: 0
|
||||||
|
Actor61: bggy
|
||||||
|
Location: 26,27
|
||||||
|
Owner: Nod
|
||||||
|
Health: 1
|
||||||
|
Facing: 160
|
||||||
|
Actor62: bggy
|
||||||
|
Location: 51,27
|
||||||
|
Owner: Nod
|
||||||
|
Health: 1
|
||||||
|
Facing: 160
|
||||||
|
Actor63: ltnk
|
||||||
|
Location: 44,53
|
||||||
|
Owner: Nod
|
||||||
|
Health: 1
|
||||||
|
Facing: 192
|
||||||
|
Actor64: e3
|
||||||
|
Location: 45,36
|
||||||
|
Owner: Nod
|
||||||
|
Health: 1
|
||||||
|
Facing: 0
|
||||||
|
SubCell: 1
|
||||||
|
Actor65: e3
|
||||||
|
Location: 40,25
|
||||||
|
Owner: Nod
|
||||||
|
Health: 1
|
||||||
|
Facing: 0
|
||||||
|
SubCell: 0
|
||||||
|
Actor66: e3
|
||||||
|
Location: 36,41
|
||||||
|
Owner: Nod
|
||||||
|
Health: 1
|
||||||
|
Facing: 160
|
||||||
|
SubCell: 0
|
||||||
|
Actor67: e3
|
||||||
|
Location: 39,42
|
||||||
|
Owner: Nod
|
||||||
|
Health: 1
|
||||||
|
Facing: 160
|
||||||
|
SubCell: 3
|
||||||
|
Actor68: e3
|
||||||
|
Location: 12,24
|
||||||
|
Owner: Nod
|
||||||
|
Health: 1
|
||||||
|
Facing: 96
|
||||||
|
SubCell: 4
|
||||||
|
Actor69: e3
|
||||||
|
Location: 37,43
|
||||||
|
Owner: Nod
|
||||||
|
Health: 1
|
||||||
|
Facing: 192
|
||||||
|
SubCell: 4
|
||||||
|
Actor70: e2
|
||||||
|
Location: 14,54
|
||||||
|
Owner: GDI
|
||||||
|
Health: 1
|
||||||
|
Facing: 0
|
||||||
|
SubCell: 3
|
||||||
|
Actor71: e1
|
||||||
|
Location: 12,54
|
||||||
|
Owner: GDI
|
||||||
|
Health: 1
|
||||||
|
Facing: 0
|
||||||
|
SubCell: 1
|
||||||
|
Actor72: e1
|
||||||
|
Location: 12,54
|
||||||
|
Owner: GDI
|
||||||
|
Health: 1
|
||||||
|
Facing: 0
|
||||||
|
SubCell: 3
|
||||||
|
Actor73: e1
|
||||||
|
Location: 15,41
|
||||||
|
Owner: Nod
|
||||||
|
Health: 1
|
||||||
|
Facing: 96
|
||||||
|
SubCell: 4
|
||||||
|
Actor74: e1
|
||||||
|
Location: 24,35
|
||||||
|
Owner: Nod
|
||||||
|
Health: 1
|
||||||
|
Facing: 224
|
||||||
|
SubCell: 4
|
||||||
|
Actor75: e1
|
||||||
|
Location: 36,29
|
||||||
|
Owner: Nod
|
||||||
|
Health: 1
|
||||||
|
Facing: 192
|
||||||
|
SubCell: 1
|
||||||
|
Actor76: e1
|
||||||
|
Location: 28,27
|
||||||
|
Owner: Nod
|
||||||
|
Health: 1
|
||||||
|
Facing: 128
|
||||||
|
SubCell: 4
|
||||||
|
Actor77: e1
|
||||||
|
Location: 32,30
|
||||||
|
Owner: Nod
|
||||||
|
Health: 1
|
||||||
|
Facing: 224
|
||||||
|
SubCell: 0
|
||||||
|
Actor78: e1
|
||||||
|
Location: 33,44
|
||||||
|
Owner: Nod
|
||||||
|
Health: 1
|
||||||
|
Facing: 192
|
||||||
|
SubCell: 4
|
||||||
|
Actor79: e1
|
||||||
|
Location: 45,36
|
||||||
|
Owner: Nod
|
||||||
|
Health: 1
|
||||||
|
Facing: 160
|
||||||
|
SubCell: 2
|
||||||
|
Actor80: e3
|
||||||
|
Location: 52,44
|
||||||
|
Owner: Nod
|
||||||
|
Health: 1
|
||||||
|
Facing: 0
|
||||||
|
SubCell: 2
|
||||||
|
Actor81: e3
|
||||||
|
Location: 52,43
|
||||||
|
Owner: Nod
|
||||||
|
Health: 1
|
||||||
|
Facing: 0
|
||||||
|
SubCell: 0
|
||||||
|
Actor82: e3
|
||||||
|
Location: 52,44
|
||||||
|
Owner: Nod
|
||||||
|
Health: 1
|
||||||
|
Facing: 0
|
||||||
|
SubCell: 1
|
||||||
|
Actor83: e1
|
||||||
|
Location: 13,27
|
||||||
|
Owner: Nod
|
||||||
|
Health: 1
|
||||||
|
Facing: 128
|
||||||
|
SubCell: 2
|
||||||
|
Actor84: e1
|
||||||
|
Location: 13,36
|
||||||
|
Owner: Nod
|
||||||
|
Health: 1
|
||||||
|
Facing: 64
|
||||||
|
SubCell: 3
|
||||||
|
Actor85: e1
|
||||||
|
Location: 11,29
|
||||||
|
Owner: Nod
|
||||||
|
Health: 1
|
||||||
|
Facing: 64
|
||||||
|
SubCell: 4
|
||||||
|
Actor86: e2
|
||||||
|
Location: 14,54
|
||||||
|
Owner: GDI
|
||||||
|
Health: 1
|
||||||
|
Facing: 0
|
||||||
|
SubCell: 2
|
||||||
|
Actor87: e2
|
||||||
|
Location: 14,54
|
||||||
|
Owner: GDI
|
||||||
|
Health: 1
|
||||||
|
Facing: 0
|
||||||
|
SubCell: 1
|
||||||
|
Actor88: e2
|
||||||
|
Location: 14,54
|
||||||
|
Owner: GDI
|
||||||
|
Health: 1
|
||||||
|
Facing: 0
|
||||||
|
SubCell: 4
|
||||||
|
Actor89: e1
|
||||||
|
Location: 12,54
|
||||||
|
Owner: GDI
|
||||||
|
Health: 1
|
||||||
|
Facing: 0
|
||||||
|
SubCell: 2
|
||||||
|
Actor90: e1
|
||||||
|
Location: 12,54
|
||||||
|
Owner: GDI
|
||||||
|
Health: 1
|
||||||
|
Facing: 0
|
||||||
|
SubCell: 4
|
||||||
|
Actor91: e3
|
||||||
|
Location: 55,41
|
||||||
|
Owner: Nod
|
||||||
|
Health: 1
|
||||||
|
Facing: 192
|
||||||
|
SubCell: 2
|
||||||
|
Actor92: e3
|
||||||
|
Location: 48,42
|
||||||
|
Owner: Nod
|
||||||
|
Health: 1
|
||||||
|
Facing: 64
|
||||||
|
SubCell: 2
|
||||||
|
Actor93: e1
|
||||||
|
Location: 50,26
|
||||||
|
Owner: Nod
|
||||||
|
Health: 1
|
||||||
|
Facing: 192
|
||||||
|
SubCell: 4
|
||||||
|
Actor94: e1
|
||||||
|
Location: 50,28
|
||||||
|
Owner: Nod
|
||||||
|
Health: 1
|
||||||
|
Facing: 192
|
||||||
|
SubCell: 0
|
||||||
|
Actor95: e1
|
||||||
|
Location: 52,26
|
||||||
|
Owner: Nod
|
||||||
|
Health: 1
|
||||||
|
Facing: 64
|
||||||
|
SubCell: 3
|
||||||
|
Actor96: e1
|
||||||
|
Location: 25,43
|
||||||
|
Owner: Nod
|
||||||
|
Health: 1
|
||||||
|
Facing: 32
|
||||||
|
SubCell: 4
|
||||||
|
Actor97: e1
|
||||||
|
Location: 25,26
|
||||||
|
Owner: Nod
|
||||||
|
Health: 1
|
||||||
|
Facing: 160
|
||||||
|
SubCell: 1
|
||||||
|
Actor98: e1
|
||||||
|
Location: 30,30
|
||||||
|
Owner: Nod
|
||||||
|
Health: 1
|
||||||
|
Facing: 0
|
||||||
|
SubCell: 4
|
||||||
|
Actor99: e3
|
||||||
|
Location: 21,50
|
||||||
|
Owner: Nod
|
||||||
|
Health: 1
|
||||||
|
Facing: 192
|
||||||
|
SubCell: 1
|
||||||
|
Actor100: e3
|
||||||
|
Location: 25,53
|
||||||
|
Owner: Nod
|
||||||
|
Health: 1
|
||||||
|
Facing: 192
|
||||||
|
SubCell: 3
|
||||||
|
NodHeliLZ3: waypoint
|
||||||
|
Location: 53,32
|
||||||
|
Owner: Neutral
|
||||||
|
NodHeliLZ2: waypoint
|
||||||
|
Location: 17,28
|
||||||
|
Owner: Neutral
|
||||||
|
NodHeliLZ1: waypoint
|
||||||
|
Location: 31,39
|
||||||
|
Owner: Neutral
|
||||||
|
GDIReinforcementsWP2: waypoint
|
||||||
|
Location: 11,51
|
||||||
|
Owner: Neutral
|
||||||
|
GDIReinforcementsWP1: waypoint
|
||||||
|
Location: 11,52
|
||||||
|
Owner: Neutral
|
||||||
|
GDIReinforcementsEntry: waypoint
|
||||||
|
Location: 7, 50
|
||||||
|
Owner: Neutral
|
||||||
|
Auto1Trigger: waypoint
|
||||||
|
Location: 52, 47
|
||||||
|
Owner: Neutral
|
||||||
|
NodHeliEntry: waypoint
|
||||||
|
Location: 41,23
|
||||||
|
Owner: Neutral
|
||||||
|
GDIHeliEntry: waypoint
|
||||||
|
Location: 34,60
|
||||||
|
Owner: Neutral
|
||||||
|
GDIHeliLZ: waypoint
|
||||||
|
Location: 27,58
|
||||||
|
Owner: Neutral
|
||||||
|
crate: CRATE
|
||||||
|
Location: 25,58
|
||||||
|
Owner: Neutral
|
||||||
|
|
||||||
|
Smudges:
|
||||||
|
|
||||||
|
Rules:
|
||||||
|
World:
|
||||||
|
-SpawnMPUnits:
|
||||||
|
-MPStartLocations:
|
||||||
|
-CrateSpawner:
|
||||||
|
LuaScriptInterface:
|
||||||
|
LuaScripts: gdi04a.lua
|
||||||
|
Player:
|
||||||
|
-ConquestVictoryConditions:
|
||||||
|
^Infantry:
|
||||||
|
MustBeDestroyed:
|
||||||
|
CRATE:
|
||||||
|
Crate:
|
||||||
|
Lifetime: 9999
|
||||||
|
LuaScriptEvents:
|
||||||
|
HealUnitsCrateAction:
|
||||||
|
-RevealMapCrateAction:
|
||||||
|
-GiveMcvCrateAction:
|
||||||
|
-GiveCashCrateAction:
|
||||||
|
-ExplodeCrateAction@fire:
|
||||||
|
-CloakCrateAction:
|
||||||
|
|
||||||
|
Sequences:
|
||||||
|
|
||||||
|
VoxelSequences:
|
||||||
|
|
||||||
|
Weapons:
|
||||||
|
Tiberium:
|
||||||
|
Warhead:
|
||||||
|
Damage: 6
|
||||||
|
|
||||||
|
Voices:
|
||||||
|
|
||||||
|
Notifications:
|
||||||
|
|
||||||
|
Translations:
|
||||||
@@ -56,3 +56,27 @@ Reinforcements.Reinforce = function(owner, reinforcementNames, enterLocation, ra
|
|||||||
end
|
end
|
||||||
return reinforcements
|
return reinforcements
|
||||||
end
|
end
|
||||||
|
|
||||||
|
Reinforcements.ReinforceWithCargo = function(owner, actorName, path, cargoNames, actionFunc)
|
||||||
|
local facing = { Map.GetFacing(CPos.op_Subtraction(path[2].Location, path[1].Location), 0), "Int32" }
|
||||||
|
local center = WPos.op_Addition(path[1].CenterPosition, WVec.New(0, 0, Rules.InitialAltitude(actorName)))
|
||||||
|
local actor = Actor.Create(actorName, { Owner = owner, Location = path[1].Location, CenterPosition = center, Facing = facing })
|
||||||
|
local cargo = Actor.TraitOrDefault(actor, "Cargo")
|
||||||
|
local team = Team.New({})
|
||||||
|
if cargo ~= nil and cargoNames ~= nil and #cargoNames > 0 then
|
||||||
|
local passengers = { }
|
||||||
|
|
||||||
|
for i, cargoName in ipairs(cargoNames) do
|
||||||
|
local passenger = Actor.Create(cargoName, { AddToWorld = false, Owner = owner })
|
||||||
|
Team.Add(team, passenger)
|
||||||
|
passengers[i] = passenger
|
||||||
|
cargo:Load(actor, passenger)
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
Utils.Do(Utils.Skip(path, 1), function(waypoint) Actor.ScriptedMove(actor, waypoint.Location) end)
|
||||||
|
|
||||||
|
if actionFunc then actionFunc(actor, team) end
|
||||||
|
return actor, team
|
||||||
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user