Fix map previews and order in TD

This commit is contained in:
abcdefg30
2020-10-15 12:42:34 +02:00
committed by Paul Chote
parent e11c8436bd
commit 575596c9ad
22 changed files with 1635 additions and 1635 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 47 KiB

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 47 KiB

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

View File

@@ -10,7 +10,7 @@ Tileset: DESERT
MapSize: 64,64 MapSize: 64,64
Bounds: 27,34,36,26 Bounds: 3,23,36,26
Visibility: MissionSelector Visibility: MissionSelector
@@ -23,6 +23,7 @@ Players:
Name: GDI Name: GDI
Faction: gdi Faction: gdi
Color: F5D378 Color: F5D378
Allies: GDI
Enemies: Nod Enemies: Nod
Bot: campaign Bot: campaign
PlayerReference@Nod: PlayerReference@Nod:
@@ -45,154 +46,192 @@ Players:
Actors: Actors:
Actor0: t08 Actor0: t08
Location: 30,52 Location: 34,38
Owner: Neutral Owner: Neutral
Actor1: t18 Actor1: t18
Location: 34,52 Location: 34,36
Owner: Neutral Owner: Neutral
Actor2: t08 Actor2: t08
Location: 57,47 Location: 25,31
Owner: Neutral Owner: Neutral
Actor3: t08 Actor3: t08
Location: 38,59 Location: 26,31
Owner: Neutral Owner: Neutral
Actor4: silo Actor4: t08
Location: 33,40 Location: 21,40
Owner: GDI
Actor9: silo
Location: 32,42
Owner: GDI
Actor10: jeep
Location: 30,46
Owner: GDI
Facing: 512
Actor11: jeep
Location: 31,35
Owner: GDI
Facing: 256
Actor17: e1
Location: 34,56
Owner: GDI
SubCell: 3
Actor18: e1
Location: 43,35
Owner: GDI
SubCell: 3
Actor19: e1
Location: 43,36
Owner: GDI
SubCell: 3
Actor31: e1
Location: 47,53
Owner: GDI
SubCell: 4
Actor32: e1
Location: 49,54
Owner: GDI
Facing: 896
SubCell: 1
Actor35: e1
Location: 34,57
Owner: GDI
Facing: 256
SubCell: 1
waypoint27: waypoint
Location: 27,51
Owner: Neutral Owner: Neutral
waypoint26: waypoint Actor5: t08
Location: 49,35 Location: 3,24
Owner: Neutral Owner: Neutral
waypoint10: waypoint Actor6: t08
Location: 30,44 Location: 3,42
Owner: Neutral Owner: Neutral
waypoint9: waypoint Actor7: t08
Location: 55,40 Location: 4,42
Owner: Neutral Owner: Neutral
waypoint8: waypoint Actor8: t08
Location: 48,41 Location: 6,48
Owner: Neutral Owner: Neutral
waypoint7: waypoint Actor9: t08
Location: 60,58 Location: 16,43
Owner: Neutral Owner: Neutral
waypoint6: waypoint Actor10: t08
Location: 61,47 Location: 26,48
Owner: Neutral Owner: Neutral
waypoint5: waypoint Actor11: t08
Location: 48,55 Location: 13,27
Owner: Neutral Owner: Neutral
waypoint4: waypoint Actor12: t08
Location: 41,51 Location: 6,40
Owner: Neutral Owner: Neutral
waypoint3: waypoint Actor13: rock1
Location: 28,36 Location: 22,32
Owner: Neutral Owner: Neutral
waypoint2: waypoint Actor20: jeep
Location: 28,51 Location: 5,24
Owner: Neutral
waypoint1: waypoint
Location: 40,43
Owner: Neutral
waypoint0: waypoint
Location: 40,35
Owner: Neutral
Refinery: proc
Location: 30,38
Owner: GDI
Barracks: pyle
Location: 34,43
Owner: GDI
Powerplant: nuke
Location: 35,40
Owner: GDI
Yard: fact
Location: 33,37
Owner: GDI
Guard1: e1
Location: 42,39
Owner: GDI
Facing: 256
SubCell: 0
Guard2: e1
Location: 38,38
Owner: GDI
Facing: 256
SubCell: 2
Guard3: e1
Location: 35,49
Owner: GDI Owner: GDI
Facing: 384 Facing: 384
SubCell: 0 Actor21: jeep
Guard4: e1 Location: 6,32
Location: 34,48
Owner: GDI Owner: GDI
Facing: 384 Facing: 640
SubCell: 3 Actor22: jeep
Guard5: e1 Location: 12,27
Location: 39,40
Owner: GDI
Facing: 256
SubCell: 1
Guard6: e1
Location: 40,56
Owner: GDI
Facing: 384
SubCell: 4
Guard7: e1
Location: 38,54
Owner: GDI Owner: GDI
Facing: 128 Facing: 128
Actor28: e1
Location: 10,24
Owner: GDI
Facing: 384
SubCell: 3 SubCell: 3
Actor29: e1
Location: 10,24
Owner: GDI
Facing: 384
SubCell: 1
Actor30: e1
Location: 9,24
Owner: GDI
Facing: 384
SubCell: 4
Actor31: e1
Location: 5,34
Owner: GDI
SubCell: 3
Actor32: e1
Location: 5,35
Owner: GDI
SubCell: 2
Actor33: e1
Location: 10,27
Owner: GDI
SubCell: 2
Actor34: e1
Location: 11,27
Owner: GDI
SubCell: 1
Actor35: e1
Location: 10,24
Owner: GDI
Facing: 384
SubCell: 2
Actor37: e1
Location: 7,40
Owner: GDI
SubCell: 2
waypoint26: waypoint
Location: 26,41
Owner: Neutral
waypoint23: waypoint
Location: 33,45
Owner: Neutral
waypoint21: waypoint
Location: 32,42
Owner: Neutral
waypoint17: waypoint
Location: 32,26
Owner: Neutral
waypoint9: waypoint
Location: 29,47
Owner: Neutral
waypoint8: waypoint
Location: 16,28
Owner: Neutral
waypoint7: waypoint
Location: 23,40
Owner: Neutral
waypoint6: waypoint
Location: 20,47
Owner: Neutral
waypoint5: waypoint
Location: 10,44
Owner: Neutral
waypoint4: waypoint
Location: 13,36
Owner: Neutral
waypoint3: waypoint
Location: 36,41
Owner: Neutral
waypoint2: waypoint
Location: 31,28
Owner: Neutral
waypoint1: waypoint
Location: 18,25
Owner: Neutral
waypoint0: waypoint
Location: 4,26
Owner: Neutral
Refinery: proc
Location: 7,27
Owner: GDI
FreeActor: false
Yard: fact
Location: 10,28
Owner: GDI
Barracks: pyle
Location: 7,32
Owner: GDI
Plant: nuke
Location: 11,31
Owner: GDI
Silo1: silo
Location: 9,31
Owner: GDI
Silo2: silo
Location: 9,33
Owner: GDI
Guard1: e1
Location: 8,40
Owner: GDI
SubCell: 1
Guard2: e1
Location: 37,24
Owner: GDI
SubCell: 3
Guard3: e1
Location: 36,24
Owner: GDI
SubCell: 2
Guard4: e1
Location: 27,31
Owner: GDI
SubCell: 1
Harvester: harv
Location: 5,29
Owner: GDI
Health: 39
Facing: 896
McvEntry: waypoint McvEntry: waypoint
Location: 62,43 Location: 33,48
Owner: Neutral Owner: Neutral
McvRally: waypoint McvRally: waypoint
Location: 57,41 Location: 33,46
Owner: Neutral Owner: Neutral
UnitsEntry: waypoint UnitsEntry: waypoint
Location: 62,38 Location: 30,48
Owner: Neutral Owner: Neutral
UnitsRally: waypoint UnitsRally: waypoint
Location: 56,38 Location: 30,44
Owner: Neutral Owner: Neutral
Rules: cnc|rules/campaign-maprules.yaml, cnc|rules/campaign-tooltips.yaml, cnc|rules/campaign-palettes.yaml, rules.yaml Rules: cnc|rules/campaign-maprules.yaml, cnc|rules/campaign-tooltips.yaml, cnc|rules/campaign-palettes.yaml, rules.yaml

View File

@@ -10,17 +10,10 @@
NodUnits = { "bggy", "e1", "e1", "e1", "e1", "e1", "bggy", "e1", "e1", "e1", "bggy" } NodUnits = { "bggy", "e1", "e1", "e1", "e1", "e1", "bggy", "e1", "e1", "e1", "bggy" }
NodBaseBuildings = { "hand", "fact", "nuke" } NodBaseBuildings = { "hand", "fact", "nuke" }
GDIBase = { Refinery, Barracks, Powerplant, Yard } GDIBase = { Refinery, Yard, Barracks, Plant, Silo1, Silo2 }
Guards = { Guard1, Guard2, Guard3, Guard4, Guard5, Guard6, Guard7 }
Atk1CellTriggerActivator = { CPos.New(45,37), CPos.New(44,37), CPos.New(45,36), CPos.New(44,36), CPos.New(45,35), CPos.New(44,35), CPos.New(45,34), CPos.New(44,34) } GDIWaypoints1 = { waypoint0, waypoint1, waypoint2, waypoint3 }
Atk4CellTriggerActivator = { CPos.New(50,47), CPos.New(49,47), CPos.New(48,47), CPos.New(47,47), CPos.New(46,47), CPos.New(45,47), CPos.New(44,47), CPos.New(43,47), CPos.New(42,47), CPos.New(41,47), CPos.New(40,47), CPos.New(39,47), CPos.New(38,47), CPos.New(37,47), CPos.New(50,46), CPos.New(49,46), CPos.New(48,46), CPos.New(47,46), CPos.New(46,46), CPos.New(45,46), CPos.New(44,46), CPos.New(43,46), CPos.New(42,46), CPos.New(41,46), CPos.New(40,46), CPos.New(39,46), CPos.New(38,46) } GDIWaypoints2 = { waypoint0, waypoint1, waypoint4, waypoint5, waypoint6, waypoint7, waypoint9 }
Atk1Waypoints = { waypoint2, waypoint4, waypoint5, waypoint6 }
Atk2Waypoints = { waypoint2, waypoint5, waypoint7, waypoint6 }
Atk3Waypoints = { waypoint2, waypoint4, waypoint5, waypoint9 }
Atk4Waypoints = { waypoint0, waypoint8, waypoint9 }
Pat1Waypoints = { waypoint0, waypoint1, waypoint2, waypoint3 }
GetAttackers = function(amount) GetAttackers = function(amount)
local units = GDI.GetActorsByType("e1") local units = GDI.GetActorsByType("e1")
@@ -38,59 +31,52 @@ WorldLoaded = function()
InitObjectives(Nod) InitObjectives(Nod)
BuildBase = Nod.AddObjective("Build a base.")
DestroyGDI = Nod.AddObjective("Destroy the GDI base.")
GDIObjective = GDI.AddObjective("Kill all enemies.") GDIObjective = GDI.AddObjective("Kill all enemies.")
BuildBase = Nod.AddObjective("Build a base.")
DestroyGDI = Nod.AddObjective("Destroy all GDI units.")
Utils.Do(Guards, function(actor) Utils.Do({ Refinery, Yard }, function(actor)
Trigger.OnDamaged(actor, function() Trigger.OnDamaged(actor, function()
if Atk3TriggerSwitch then if not Grd2TriggerSwitch then
return Grd2TriggerSwitch = true
Utils.Do(GetAttackers(5), IdleHunt)
end end
Atk3TriggerSwitch = true
MoveAndHunt(GetAttackers(4), Atk3Waypoints)
end) end)
end) end)
Trigger.AfterDelay(DateTime.Minutes(1) + DateTime.Seconds(25), function()
MoveAndHunt(GetAttackers(2), GDIWaypoints1)
end)
Trigger.AfterDelay(DateTime.Minutes(1) + DateTime.Seconds(20), function()
MoveAndHunt(GetAttackers(3), GDIWaypoints2)
end)
Trigger.OnKilled(Guard1, function()
MoveAndHunt(GetAttackers(3), GDIWaypoints2)
end)
Trigger.OnKilled(Guard4, function()
MoveAndHunt(GetAttackers(2), GDIWaypoints1)
end)
Trigger.OnAllKilled({ Guard2, Guard3 }, function()
MoveAndHunt(GetAttackers(2), GDIWaypoints1)
end)
Trigger.OnDamaged(Harvester, function()
if Atk5TriggerSwitch then
return
end
Atk5TriggerSwitch = true
MoveAndHunt(GetAttackers(3), GDIWaypoints2)
end)
Trigger.OnAllRemovedFromWorld(GDIBase, function() Trigger.OnAllRemovedFromWorld(GDIBase, function()
Utils.Do(GDI.GetGroundAttackers(), IdleHunt) Utils.Do(GDI.GetGroundAttackers(), IdleHunt)
end) end)
Trigger.AfterDelay(DateTime.Seconds(40), function()
MoveAndHunt(GetAttackers(3), Atk2Waypoints)
end)
Trigger.AfterDelay(DateTime.Minutes(1) + DateTime.Seconds(15), function()
MoveAndHunt(GetAttackers(3), Atk2Waypoints)
end)
Trigger.AfterDelay(DateTime.Minutes(1) + DateTime.Seconds(20), function()
MoveAndHunt(GetAttackers(3), Atk3Waypoints)
end)
Trigger.AfterDelay(DateTime.Seconds(50), function()
MoveAndHunt(GetAttackers(3), Atk4Waypoints)
end)
Trigger.AfterDelay(DateTime.Seconds(30), function()
MoveAndHunt(GetAttackers(3), Pat1Waypoints)
end)
Trigger.OnEnteredFootprint(Atk1CellTriggerActivator, function(a, id)
if a.Owner == Nod then
MoveAndHunt(GetAttackers(5), Atk1Waypoints)
Trigger.RemoveFootprintTrigger(id)
end
end)
Trigger.OnEnteredFootprint(Atk4CellTriggerActivator, function(a, id)
if a.Owner == Nod then
MoveAndHunt(GetAttackers(3), Atk2Waypoints)
Trigger.RemoveFootprintTrigger(id)
end
end)
Trigger.AfterDelay(0, function() Trigger.AfterDelay(0, function()
Utils.Do(GDI.GetActorsByType("e1"), function(unit) Utils.Do(GDI.GetActorsByType("e1"), function(unit)
RebuildUnit({ unit }, GDI, Barracks) RebuildUnit({ unit }, GDI, Barracks)
@@ -103,14 +89,14 @@ WorldLoaded = function()
end end
Tick = function() Tick = function()
if GDI.HasNoRequiredUnits() then
Nod.MarkCompletedObjective(DestroyGDI)
end
if DateTime.GameTime > 2 and Nod.HasNoRequiredUnits() then if DateTime.GameTime > 2 and Nod.HasNoRequiredUnits() then
GDI.MarkCompletedObjective(GDIObjective) GDI.MarkCompletedObjective(GDIObjective)
end end
if GDI.HasNoRequiredUnits() then
Nod.MarkCompletedObjective(DestroyGDI)
end
if DateTime.GameTime % DateTime.Seconds(1) == 0 and not Nod.IsObjectiveCompleted(BuildBase) and CheckForBase(Nod, NodBaseBuildings) then if DateTime.GameTime % DateTime.Seconds(1) == 0 and not Nod.IsObjectiveCompleted(BuildBase) and CheckForBase(Nod, NodBaseBuildings) then
Nod.MarkCompletedObjective(BuildBase) Nod.MarkCompletedObjective(BuildBase)
end end

View File

@@ -1,7 +1,3 @@
Player:
PlayerResources:
DefaultCash: 4000
World: World:
LuaScript: LuaScript:
Scripts: campaign-global.lua, nod02a.lua Scripts: campaign-global.lua, nod02a.lua
@@ -15,60 +11,9 @@ World:
WinVideo: airstrk.vqa WinVideo: airstrk.vqa
LossVideo: deskill.vqa LossVideo: deskill.vqa
^Vehicle: Player:
Tooltip: PlayerResources:
GenericVisibility: Enemy DefaultCash: 4000
ShowOwnerRow: false
RenderSprites:
PlayerPalette: player-units
^Tank:
Tooltip:
GenericVisibility: Enemy
ShowOwnerRow: false
RenderSprites:
PlayerPalette: player-units
^Helicopter:
Tooltip:
GenericVisibility: Enemy
ShowOwnerRow: false
RenderSprites:
PlayerPalette: player-units
^Infantry:
Tooltip:
GenericVisibility: Enemy
ShowOwnerRow: false
RenderSprites:
PlayerPalette: player-units
^Plane:
Tooltip:
GenericVisibility: Enemy
ShowOwnerRow: false
^Ship:
Tooltip:
GenericVisibility: Enemy
ShowOwnerRow: false
^Building:
Tooltip:
GenericVisibility: Enemy
ShowOwnerRow: false
^Wall:
Tooltip:
ShowOwnerRow: false
^CommonHuskDefaults:
Tooltip:
GenericVisibility: Enemy, Ally, Neutral
GenericStancePrefix: false
ShowOwnerRow: false
RenderSprites:
PlayerPalette: player-units
NUK2: NUK2:
Buildable: Buildable:
@@ -129,20 +74,6 @@ MLRS:
MCV: MCV:
Buildable: Buildable:
Prerequisites: ~disabled Prerequisites: ~disabled
RenderSprites:
PlayerPalette: player
MCV.Husk:
RenderSprites:
PlayerPalette: player
HARV:
RenderSprites:
PlayerPalette: player
HARV.Husk:
RenderSprites:
PlayerPalette: player
SAM: SAM:
Buildable: Buildable:

Binary file not shown.

View File

@@ -10,7 +10,7 @@ Tileset: DESERT
MapSize: 64,64 MapSize: 64,64
Bounds: 3,23,36,26 Bounds: 27,34,36,26
Visibility: MissionSelector Visibility: MissionSelector
@@ -23,7 +23,6 @@ Players:
Name: GDI Name: GDI
Faction: gdi Faction: gdi
Color: F5D378 Color: F5D378
Allies: GDI
Enemies: Nod Enemies: Nod
Bot: campaign Bot: campaign
PlayerReference@Nod: PlayerReference@Nod:
@@ -46,192 +45,154 @@ Players:
Actors: Actors:
Actor0: t08 Actor0: t08
Location: 34,38 Location: 30,52
Owner: Neutral Owner: Neutral
Actor1: t18 Actor1: t18
Location: 34,36 Location: 34,52
Owner: Neutral Owner: Neutral
Actor2: t08 Actor2: t08
Location: 25,31 Location: 57,47
Owner: Neutral Owner: Neutral
Actor3: t08 Actor3: t08
Location: 26,31 Location: 38,59
Owner: Neutral Owner: Neutral
Actor4: t08 Actor4: silo
Location: 21,40 Location: 33,40
Owner: GDI
Actor9: silo
Location: 32,42
Owner: GDI
Actor10: jeep
Location: 30,46
Owner: GDI
Facing: 512
Actor11: jeep
Location: 31,35
Owner: GDI
Facing: 256
Actor17: e1
Location: 34,56
Owner: GDI
SubCell: 3
Actor18: e1
Location: 43,35
Owner: GDI
SubCell: 3
Actor19: e1
Location: 43,36
Owner: GDI
SubCell: 3
Actor31: e1
Location: 47,53
Owner: GDI
SubCell: 4
Actor32: e1
Location: 49,54
Owner: GDI
Facing: 896
SubCell: 1
Actor35: e1
Location: 34,57
Owner: GDI
Facing: 256
SubCell: 1
waypoint27: waypoint
Location: 27,51
Owner: Neutral Owner: Neutral
Actor5: t08 waypoint26: waypoint
Location: 3,24 Location: 49,35
Owner: Neutral Owner: Neutral
Actor6: t08 waypoint10: waypoint
Location: 3,42 Location: 30,44
Owner: Neutral Owner: Neutral
Actor7: t08 waypoint9: waypoint
Location: 4,42 Location: 55,40
Owner: Neutral Owner: Neutral
Actor8: t08 waypoint8: waypoint
Location: 6,48 Location: 48,41
Owner: Neutral Owner: Neutral
Actor9: t08 waypoint7: waypoint
Location: 16,43 Location: 60,58
Owner: Neutral Owner: Neutral
Actor10: t08 waypoint6: waypoint
Location: 26,48 Location: 61,47
Owner: Neutral Owner: Neutral
Actor11: t08 waypoint5: waypoint
Location: 13,27 Location: 48,55
Owner: Neutral Owner: Neutral
Actor12: t08 waypoint4: waypoint
Location: 6,40 Location: 41,51
Owner: Neutral Owner: Neutral
Actor13: rock1 waypoint3: waypoint
Location: 22,32 Location: 28,36
Owner: Neutral Owner: Neutral
Actor20: jeep waypoint2: waypoint
Location: 5,24 Location: 28,51
Owner: Neutral
waypoint1: waypoint
Location: 40,43
Owner: Neutral
waypoint0: waypoint
Location: 40,35
Owner: Neutral
Refinery: proc
Location: 30,38
Owner: GDI
Barracks: pyle
Location: 34,43
Owner: GDI
Powerplant: nuke
Location: 35,40
Owner: GDI
Yard: fact
Location: 33,37
Owner: GDI
Guard1: e1
Location: 42,39
Owner: GDI
Facing: 256
SubCell: 0
Guard2: e1
Location: 38,38
Owner: GDI
Facing: 256
SubCell: 2
Guard3: e1
Location: 35,49
Owner: GDI Owner: GDI
Facing: 384 Facing: 384
Actor21: jeep SubCell: 0
Location: 6,32 Guard4: e1
Owner: GDI Location: 34,48
Facing: 640
Actor22: jeep
Location: 12,27
Owner: GDI
Facing: 128
Actor28: e1
Location: 10,24
Owner: GDI Owner: GDI
Facing: 384 Facing: 384
SubCell: 3 SubCell: 3
Actor29: e1 Guard5: e1
Location: 10,24 Location: 39,40
Owner: GDI Owner: GDI
Facing: 384 Facing: 256
SubCell: 1 SubCell: 1
Actor30: e1 Guard6: e1
Location: 9,24 Location: 40,56
Owner: GDI Owner: GDI
Facing: 384 Facing: 384
SubCell: 4 SubCell: 4
Actor31: e1 Guard7: e1
Location: 5,34 Location: 38,54
Owner: GDI Owner: GDI
Facing: 128
SubCell: 3 SubCell: 3
Actor32: e1
Location: 5,35
Owner: GDI
SubCell: 2
Actor33: e1
Location: 10,27
Owner: GDI
SubCell: 2
Actor34: e1
Location: 11,27
Owner: GDI
SubCell: 1
Actor35: e1
Location: 10,24
Owner: GDI
Facing: 384
SubCell: 2
Actor37: e1
Location: 7,40
Owner: GDI
SubCell: 2
waypoint26: waypoint
Location: 26,41
Owner: Neutral
waypoint23: waypoint
Location: 33,45
Owner: Neutral
waypoint21: waypoint
Location: 32,42
Owner: Neutral
waypoint17: waypoint
Location: 32,26
Owner: Neutral
waypoint9: waypoint
Location: 29,47
Owner: Neutral
waypoint8: waypoint
Location: 16,28
Owner: Neutral
waypoint7: waypoint
Location: 23,40
Owner: Neutral
waypoint6: waypoint
Location: 20,47
Owner: Neutral
waypoint5: waypoint
Location: 10,44
Owner: Neutral
waypoint4: waypoint
Location: 13,36
Owner: Neutral
waypoint3: waypoint
Location: 36,41
Owner: Neutral
waypoint2: waypoint
Location: 31,28
Owner: Neutral
waypoint1: waypoint
Location: 18,25
Owner: Neutral
waypoint0: waypoint
Location: 4,26
Owner: Neutral
Refinery: proc
Location: 7,27
Owner: GDI
FreeActor: false
Yard: fact
Location: 10,28
Owner: GDI
Barracks: pyle
Location: 7,32
Owner: GDI
Plant: nuke
Location: 11,31
Owner: GDI
Silo1: silo
Location: 9,31
Owner: GDI
Silo2: silo
Location: 9,33
Owner: GDI
Guard1: e1
Location: 8,40
Owner: GDI
SubCell: 1
Guard2: e1
Location: 37,24
Owner: GDI
SubCell: 3
Guard3: e1
Location: 36,24
Owner: GDI
SubCell: 2
Guard4: e1
Location: 27,31
Owner: GDI
SubCell: 1
Harvester: harv
Location: 5,29
Owner: GDI
Health: 39
Facing: 896
McvEntry: waypoint McvEntry: waypoint
Location: 33,48 Location: 62,43
Owner: Neutral Owner: Neutral
McvRally: waypoint McvRally: waypoint
Location: 33,46 Location: 57,41
Owner: Neutral Owner: Neutral
UnitsEntry: waypoint UnitsEntry: waypoint
Location: 30,48 Location: 62,38
Owner: Neutral Owner: Neutral
UnitsRally: waypoint UnitsRally: waypoint
Location: 30,44 Location: 56,38
Owner: Neutral Owner: Neutral
Rules: cnc|rules/campaign-maprules.yaml, cnc|rules/campaign-tooltips.yaml, cnc|rules/campaign-palettes.yaml, rules.yaml Rules: cnc|rules/campaign-maprules.yaml, cnc|rules/campaign-tooltips.yaml, cnc|rules/campaign-palettes.yaml, rules.yaml

View File

@@ -10,10 +10,17 @@
NodUnits = { "bggy", "e1", "e1", "e1", "e1", "e1", "bggy", "e1", "e1", "e1", "bggy" } NodUnits = { "bggy", "e1", "e1", "e1", "e1", "e1", "bggy", "e1", "e1", "e1", "bggy" }
NodBaseBuildings = { "hand", "fact", "nuke" } NodBaseBuildings = { "hand", "fact", "nuke" }
GDIBase = { Refinery, Yard, Barracks, Plant, Silo1, Silo2 } GDIBase = { Refinery, Barracks, Powerplant, Yard }
Guards = { Guard1, Guard2, Guard3, Guard4, Guard5, Guard6, Guard7 }
GDIWaypoints1 = { waypoint0, waypoint1, waypoint2, waypoint3 } Atk1CellTriggerActivator = { CPos.New(45,37), CPos.New(44,37), CPos.New(45,36), CPos.New(44,36), CPos.New(45,35), CPos.New(44,35), CPos.New(45,34), CPos.New(44,34) }
GDIWaypoints2 = { waypoint0, waypoint1, waypoint4, waypoint5, waypoint6, waypoint7, waypoint9 } Atk4CellTriggerActivator = { CPos.New(50,47), CPos.New(49,47), CPos.New(48,47), CPos.New(47,47), CPos.New(46,47), CPos.New(45,47), CPos.New(44,47), CPos.New(43,47), CPos.New(42,47), CPos.New(41,47), CPos.New(40,47), CPos.New(39,47), CPos.New(38,47), CPos.New(37,47), CPos.New(50,46), CPos.New(49,46), CPos.New(48,46), CPos.New(47,46), CPos.New(46,46), CPos.New(45,46), CPos.New(44,46), CPos.New(43,46), CPos.New(42,46), CPos.New(41,46), CPos.New(40,46), CPos.New(39,46), CPos.New(38,46) }
Atk1Waypoints = { waypoint2, waypoint4, waypoint5, waypoint6 }
Atk2Waypoints = { waypoint2, waypoint5, waypoint7, waypoint6 }
Atk3Waypoints = { waypoint2, waypoint4, waypoint5, waypoint9 }
Atk4Waypoints = { waypoint0, waypoint8, waypoint9 }
Pat1Waypoints = { waypoint0, waypoint1, waypoint2, waypoint3 }
GetAttackers = function(amount) GetAttackers = function(amount)
local units = GDI.GetActorsByType("e1") local units = GDI.GetActorsByType("e1")
@@ -31,52 +38,59 @@ WorldLoaded = function()
InitObjectives(Nod) InitObjectives(Nod)
GDIObjective = GDI.AddObjective("Kill all enemies.")
BuildBase = Nod.AddObjective("Build a base.") BuildBase = Nod.AddObjective("Build a base.")
DestroyGDI = Nod.AddObjective("Destroy all GDI units.") DestroyGDI = Nod.AddObjective("Destroy the GDI base.")
GDIObjective = GDI.AddObjective("Kill all enemies.")
Utils.Do({ Refinery, Yard }, function(actor) Utils.Do(Guards, function(actor)
Trigger.OnDamaged(actor, function() Trigger.OnDamaged(actor, function()
if not Grd2TriggerSwitch then if Atk3TriggerSwitch then
Grd2TriggerSwitch = true return
Utils.Do(GetAttackers(5), IdleHunt)
end end
Atk3TriggerSwitch = true
MoveAndHunt(GetAttackers(4), Atk3Waypoints)
end) end)
end) end)
Trigger.AfterDelay(DateTime.Minutes(1) + DateTime.Seconds(25), function()
MoveAndHunt(GetAttackers(2), GDIWaypoints1)
end)
Trigger.AfterDelay(DateTime.Minutes(1) + DateTime.Seconds(20), function()
MoveAndHunt(GetAttackers(3), GDIWaypoints2)
end)
Trigger.OnKilled(Guard1, function()
MoveAndHunt(GetAttackers(3), GDIWaypoints2)
end)
Trigger.OnKilled(Guard4, function()
MoveAndHunt(GetAttackers(2), GDIWaypoints1)
end)
Trigger.OnAllKilled({ Guard2, Guard3 }, function()
MoveAndHunt(GetAttackers(2), GDIWaypoints1)
end)
Trigger.OnDamaged(Harvester, function()
if Atk5TriggerSwitch then
return
end
Atk5TriggerSwitch = true
MoveAndHunt(GetAttackers(3), GDIWaypoints2)
end)
Trigger.OnAllRemovedFromWorld(GDIBase, function() Trigger.OnAllRemovedFromWorld(GDIBase, function()
Utils.Do(GDI.GetGroundAttackers(), IdleHunt) Utils.Do(GDI.GetGroundAttackers(), IdleHunt)
end) end)
Trigger.AfterDelay(DateTime.Seconds(40), function()
MoveAndHunt(GetAttackers(3), Atk2Waypoints)
end)
Trigger.AfterDelay(DateTime.Minutes(1) + DateTime.Seconds(15), function()
MoveAndHunt(GetAttackers(3), Atk2Waypoints)
end)
Trigger.AfterDelay(DateTime.Minutes(1) + DateTime.Seconds(20), function()
MoveAndHunt(GetAttackers(3), Atk3Waypoints)
end)
Trigger.AfterDelay(DateTime.Seconds(50), function()
MoveAndHunt(GetAttackers(3), Atk4Waypoints)
end)
Trigger.AfterDelay(DateTime.Seconds(30), function()
MoveAndHunt(GetAttackers(3), Pat1Waypoints)
end)
Trigger.OnEnteredFootprint(Atk1CellTriggerActivator, function(a, id)
if a.Owner == Nod then
MoveAndHunt(GetAttackers(5), Atk1Waypoints)
Trigger.RemoveFootprintTrigger(id)
end
end)
Trigger.OnEnteredFootprint(Atk4CellTriggerActivator, function(a, id)
if a.Owner == Nod then
MoveAndHunt(GetAttackers(3), Atk2Waypoints)
Trigger.RemoveFootprintTrigger(id)
end
end)
Trigger.AfterDelay(0, function() Trigger.AfterDelay(0, function()
Utils.Do(GDI.GetActorsByType("e1"), function(unit) Utils.Do(GDI.GetActorsByType("e1"), function(unit)
RebuildUnit({ unit }, GDI, Barracks) RebuildUnit({ unit }, GDI, Barracks)
@@ -89,14 +103,14 @@ WorldLoaded = function()
end end
Tick = function() Tick = function()
if DateTime.GameTime > 2 and Nod.HasNoRequiredUnits() then
GDI.MarkCompletedObjective(GDIObjective)
end
if GDI.HasNoRequiredUnits() then if GDI.HasNoRequiredUnits() then
Nod.MarkCompletedObjective(DestroyGDI) Nod.MarkCompletedObjective(DestroyGDI)
end end
if DateTime.GameTime > 2 and Nod.HasNoRequiredUnits() then
GDI.MarkCompletedObjective(GDIObjective)
end
if DateTime.GameTime % DateTime.Seconds(1) == 0 and not Nod.IsObjectiveCompleted(BuildBase) and CheckForBase(Nod, NodBaseBuildings) then if DateTime.GameTime % DateTime.Seconds(1) == 0 and not Nod.IsObjectiveCompleted(BuildBase) and CheckForBase(Nod, NodBaseBuildings) then
Nod.MarkCompletedObjective(BuildBase) Nod.MarkCompletedObjective(BuildBase)
end end

View File

@@ -1,3 +1,7 @@
Player:
PlayerResources:
DefaultCash: 4000
World: World:
LuaScript: LuaScript:
Scripts: campaign-global.lua, nod02b.lua Scripts: campaign-global.lua, nod02b.lua
@@ -11,9 +15,60 @@ World:
WinVideo: airstrk.vqa WinVideo: airstrk.vqa
LossVideo: deskill.vqa LossVideo: deskill.vqa
Player: ^Vehicle:
PlayerResources: Tooltip:
DefaultCash: 4000 GenericVisibility: Enemy
ShowOwnerRow: false
RenderSprites:
PlayerPalette: player-units
^Tank:
Tooltip:
GenericVisibility: Enemy
ShowOwnerRow: false
RenderSprites:
PlayerPalette: player-units
^Helicopter:
Tooltip:
GenericVisibility: Enemy
ShowOwnerRow: false
RenderSprites:
PlayerPalette: player-units
^Infantry:
Tooltip:
GenericVisibility: Enemy
ShowOwnerRow: false
RenderSprites:
PlayerPalette: player-units
^Plane:
Tooltip:
GenericVisibility: Enemy
ShowOwnerRow: false
^Ship:
Tooltip:
GenericVisibility: Enemy
ShowOwnerRow: false
^Building:
Tooltip:
GenericVisibility: Enemy
ShowOwnerRow: false
^Wall:
Tooltip:
ShowOwnerRow: false
^CommonHuskDefaults:
Tooltip:
GenericVisibility: Enemy, Ally, Neutral
GenericStancePrefix: false
ShowOwnerRow: false
RenderSprites:
PlayerPalette: player-units
NUK2: NUK2:
Buildable: Buildable:
@@ -74,6 +129,20 @@ MLRS:
MCV: MCV:
Buildable: Buildable:
Prerequisites: ~disabled Prerequisites: ~disabled
RenderSprites:
PlayerPalette: player
MCV.Husk:
RenderSprites:
PlayerPalette: player
HARV:
RenderSprites:
PlayerPalette: player
HARV.Husk:
RenderSprites:
PlayerPalette: player
SAM: SAM:
Buildable: Buildable:

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

View File

@@ -2,7 +2,7 @@ MapFormat: 11
RequiresMod: cnc RequiresMod: cnc
Title: 04a: Mao Civil War Title: 04a: Oum Hadjer
Author: Westwood Studios Author: Westwood Studios
@@ -10,7 +10,7 @@ Tileset: DESERT
MapSize: 64,64 MapSize: 64,64
Bounds: 11,6,46,34 Bounds: 7,17,52,44
Visibility: MissionSelector Visibility: MissionSelector
@@ -19,26 +19,21 @@ Categories: Campaign
LockPreview: True LockPreview: True
Players: Players:
PlayerReference@GDI:
Name: GDI
Bot: campaign
Faction: gdi
Color: F5D378
Enemies: Nod
PlayerReference@Neutral: PlayerReference@Neutral:
Name: Neutral Name: Neutral
OwnsWorld: True OwnsWorld: True
NonCombatant: True NonCombatant: True
Faction: gdi Faction: gdi
PlayerReference@NodSupporter:
Name: NodSupporter
NonCombatant: True
Faction: nod
Bot: campaign
PlayerReference@GDI:
Name: GDI
Faction: gdi
Color: F5D378
Enemies: Nod
Bot: campaign
PlayerReference@Nod: PlayerReference@Nod:
Name: Nod Name: Nod
Playable: True
AllowBots: False AllowBots: False
Playable: True
Required: True Required: True
LockFaction: True LockFaction: True
Faction: nod Faction: nod
@@ -49,491 +44,437 @@ Players:
Enemies: GDI Enemies: GDI
Actors: Actors:
Actor0: t08 Actor0: sbag
Location: 34,20 Location: 58,26
Owner: Neutral Owner: Neutral
Actor1: t18 Actor1: sbag
Location: 33,18 Location: 57,26
Owner: Neutral Owner: Neutral
Actor2: t18 Actor2: sbag
Location: 33,9 Location: 56,26
Owner: Neutral Owner: Neutral
Actor3: t08 Actor3: sbag
Location: 41,5 Location: 55,26
Owner: Neutral Owner: Neutral
Actor4: t18 Actor4: sbag
Location: 42,15 Location: 54,26
Owner: Neutral Owner: Neutral
Actor5: t08 Actor5: sbag
Location: 45,26 Location: 53,26
Owner: Neutral Owner: Neutral
Actor6: t08 Actor6: sbag
Location: 56,29 Location: 52,26
Owner: Neutral Owner: Neutral
Actor7: t08 Actor7: sbag
Location: 55,29
Owner: Neutral
Actor8: t08
Location: 51,26 Location: 51,26
Owner: Neutral Owner: Neutral
Actor9: t08 Actor8: sbag
Location: 56,18 Location: 50,26
Owner: Neutral Owner: Neutral
Actor10: t08 Actor9: sbag
Location: 52,16 Location: 49,26
Owner: Neutral Owner: Neutral
Actor11: t08 Actor10: sbag
Location: 45,21 Location: 48,26
Owner: Neutral Owner: Neutral
Actor12: t08 Actor11: sbag
Location: 38,19 Location: 47,26
Owner: Neutral Owner: Neutral
Actor13: t08 Actor12: sbag
Location: 23,16 Location: 58,25
Owner: Neutral Owner: Neutral
Actor14: t08 Actor13: sbag
Location: 14,22 Location: 47,25
Owner: Neutral Owner: Neutral
Actor15: t08 Actor14: sbag
Location: 26,22 Location: 58,24
Owner: Neutral Owner: Neutral
Actor16: t08 Actor15: sbag
Location: 21,26 Location: 47,24
Owner: Neutral Owner: Neutral
Actor17: t08 Actor16: sbag
Location: 48,6 Location: 58,23
Owner: Neutral Owner: Neutral
Actor18: t08 Actor17: sbag
Location: 15,19 Location: 58,22
Owner: Neutral Owner: Neutral
Actor19: t08 Actor18: sbag
Location: 31,15 Location: 58,21
Owner: Neutral Owner: Neutral
Actor20: t18 Actor19: sbag
Location: 49,34 Location: 47,21
Owner: Neutral Owner: Neutral
Actor21: t18 Actor20: sbag
Location: 48,38 Location: 58,20
Owner: Neutral Owner: Neutral
Actor22: t18 Actor21: sbag
Location: 42,35 Location: 47,20
Owner: Neutral Owner: Neutral
Actor23: t18 Actor22: sbag
Location: 54,37 Location: 58,19
Owner: Neutral Owner: Neutral
Actor24: t08 Actor23: sbag
Location: 51,35 Location: 47,19
Owner: Neutral Owner: Neutral
Actor25: t08 Actor24: sbag
Location: 45,37 Location: 58,18
Owner: Neutral Owner: Neutral
Actor26: t08 Actor25: sbag
Location: 47,33 Location: 57,18
Owner: Neutral Owner: Neutral
Actor27: t18 Actor26: sbag
Location: 13,10 Location: 48,18
Owner: Neutral Owner: Neutral
Actor28: t18 Actor27: sbag
Location: 20,7 Location: 47,18
Owner: Neutral Owner: Neutral
Actor30: t08 Actor28: sbag
Location: 12,8 Location: 58,17
Owner: Neutral Owner: Neutral
Actor31: t08 Actor29: sbag
Location: 23,9 Location: 57,17
Owner: Neutral Owner: Neutral
Actor32: v35 Actor30: sbag
Location: 48,38 Location: 56,17
Owner: NodSupporter Owner: Neutral
Actor33: v34 Actor31: sbag
Location: 46,33 Location: 55,17
Owner: NodSupporter Owner: Neutral
Actor35: v32 Actor32: sbag
Location: 54,35 Location: 54,17
Owner: NodSupporter Owner: Neutral
Actor36: v30 Actor33: sbag
Location: 48,32 Location: 53,17
Owner: NodSupporter Owner: Neutral
Actor37: v30 Actor34: sbag
Location: 52,34 Location: 52,17
Owner: NodSupporter Owner: Neutral
Actor38: v31 Actor35: sbag
Location: 52,35 Location: 51,17
Owner: NodSupporter Owner: Neutral
Actor39: v32 Actor36: sbag
Location: 46,37 Location: 50,17
Owner: NodSupporter Owner: Neutral
Health: 73 Actor37: sbag
Actor41: v34 Location: 49,17
Location: 49,38 Owner: Neutral
Owner: NodSupporter Actor38: sbag
Actor42: v35 Location: 48,17
Location: 46,32 Owner: Neutral
Owner: NodSupporter Actor39: sbag
Actor43: v36 Location: 47,17
Location: 48,37 Owner: Neutral
Owner: NodSupporter Actor40: t18
Actor44: v32 Location: 47,50
Location: 49,33 Owner: Neutral
Owner: NodSupporter Actor41: t18
Actor45: v34 Location: 46,31
Location: 50,34 Owner: Neutral
Owner: NodSupporter Actor42: t08
Actor46: v20 Location: 39,26
Location: 15,10 Owner: Neutral
Actor43: t18
Location: 37,25
Owner: Neutral
Actor44: t18
Location: 27,28
Owner: Neutral
Actor45: t18
Location: 54,26
Owner: Neutral
Actor46: t18
Location: 49,18
Owner: Neutral
Actor47: t18
Location: 23,54
Owner: Neutral
Actor48: t18
Location: 34,40
Owner: Neutral
Actor49: t08
Location: 16,45
Owner: Neutral
Actor50: t08
Location: 14,53
Owner: Neutral
Actor52: t18
Location: 13,44
Owner: Neutral
Actor57: t18
Location: 36,49
Owner: Neutral
Actor58: t18
Location: 44,59
Owner: Neutral
Actor59: t18
Location: 11,37
Owner: Neutral
Actor60: t18
Location: 25,20
Owner: Neutral
Actor61: gtwr
Location: 46,21
Owner: GDI Owner: GDI
Actor47: v21 Actor62: gtwr
Location: 12,10 Location: 46,24
Owner: GDI Owner: GDI
Actor48: v22 Actor63: hosp
Location: 21,11 Location: 48,19
Owner: GDI Owner: GDI
Actor49: v23 Actor64: pyle
Location: 22,8 Location: 50,20
Owner: GDI Owner: GDI
Actor50: v24 Actor65: nuke
Location: 18,8 Location: 53,21
Owner: GDI Owner: GDI
Actor51: v25 Actor66: nuke
Location: 13,7 Location: 52,23
Owner: GDI Owner: GDI
Actor52: v26 Actor67: silo
Location: 20,9 Location: 56,24
Owner: GDI Owner: GDI
Actor53: v27 Actor68: silo
Location: 15,9 Location: 55,22
Owner: GDI Owner: GDI
Actor54: v27 Actor69: fact
Location: 14,9 Location: 53,18
Owner: GDI Owner: GDI
Actor55: v27 Actor70: hq
Location: 13,9 Location: 56,19
Owner: GDI Owner: GDI
Actor56: v28 Actor72: v36
Location: 21,7 Location: 12,54
Owner: Neutral
Actor73: v35
Location: 10,54
Owner: Neutral
Actor74: v34
Location: 11,53
Owner: Neutral
Actor75: v33
Location: 15,53
Owner: Neutral
Actor76: v32
Location: 12,53
Owner: Neutral
Actor77: v31
Location: 10,52
Owner: Neutral
Actor87: v23
Location: 9,59
Owner: Neutral
Jeep1: jeep
Location: 51,25
Owner: GDI Owner: GDI
Actor57: v29 Jeep2: jeep
Location: 22,7 Location: 50,25
Owner: GDI Owner: GDI
Actor58: v30 Actor94: jeep
Location: 21,10 Location: 39,48
Owner: GDI
Actor59: v30
Location: 23,8
Owner: GDI
Actor61: jeep
Location: 15,23
Owner: GDI
Facing: 640
Actor62: jeep
Location: 36,6
Owner: GDI Owner: GDI
Facing: 384 Facing: 384
Actor65: mtnk Actor110: e1
Location: 29,10 Location: 40,49
Owner: GDI Owner: GDI
Facing: 256 Facing: 896
Actor71: jeep
Location: 24,26
Owner: GDI
Facing: 384
Actor72: jeep
Location: 37,19
Owner: GDI
Facing: 128
Actor73: jeep
Location: 27,33
Owner: GDI
Facing: 384
Actor86: e1
Location: 43,15
Owner: GDI
Health: 88
Facing: 128
SubCell: 3
Actor99: e1
Location: 45,15
Owner: GDI
SubCell: 3
Actor100: e1
Location: 43,15
Owner: GDI
Health: 94
Facing: 128
SubCell: 4
Actor105: e1
Location: 46,14
Owner: GDI
SubCell: 2
Actor106: e1
Location: 18,29
Owner: GDI
Facing: 384
SubCell: 4
Actor107: e1
Location: 12,20
Owner: GDI
SubCell: 1
Actor108: e1
Location: 39,23
Owner: GDI
SubCell: 1
Actor119: e2
Location: 18,8
Owner: GDI
Facing: 512
SubCell: 3
Actor120: e2
Location: 16,10
Owner: GDI
Facing: 384
SubCell: 2
Actor121: e2
Location: 27,19
Owner: GDI
Facing: 512
SubCell: 1
Actor122: e2
Location: 25,34
Owner: GDI
SubCell: 4
Actor123: e1
Location: 13,13
Owner: GDI
Facing: 512
SubCell: 1
Actor124: e1
Location: 13,13
Owner: GDI
Facing: 512
SubCell: 2
Actor125: e2
Location: 13,13
Owner: GDI
Facing: 512
SubCell: 4
Actor126: e2
Location: 13,13
Owner: GDI
Facing: 512
SubCell: 3
Actor127: e2
Location: 29,18
Owner: GDI
Facing: 256
SubCell: 3
Actor128: e2
Location: 27,22
Owner: GDI
Facing: 256
SubCell: 1
Actor129: e2
Location: 36,10
Owner: GDI
Health: 38
Facing: 256
SubCell: 0 SubCell: 0
Actor131: e1 Actor111: e2
Location: 21,12 Location: 38,50
Owner: GDI Owner: GDI
Facing: 512
SubCell: 4
Actor132: e1
Location: 22,12
Owner: GDI
Facing: 512
SubCell: 3
Actor29: t18
Location: 14,7
Owner: Neutral
waypoint27: waypoint
Location: 35,25
Owner: Neutral
waypoint26: waypoint
Location: 44,6
Owner: Neutral
waypoint9: waypoint
Location: 26,19
Owner: Neutral
waypoint8: waypoint
Location: 53,37
Owner: Neutral
waypoint7: waypoint
Location: 47,35
Owner: Neutral
waypoint6: waypoint
Location: 45,11
Owner: Neutral
waypoint5: waypoint
Location: 40,17
Owner: Neutral
waypoint4: waypoint
Location: 39,34
Owner: Neutral
waypoint3: waypoint
Location: 21,38
Owner: Neutral
waypoint2: waypoint
Location: 20,28
Owner: Neutral
waypoint1: waypoint
Location: 13,26
Owner: Neutral
waypoint0: waypoint
Location: 13,14
Owner: Neutral
Civilian1: v33
Location: 48,34
Owner: Neutral
Health: 62
Civilian2: v33
Location: 54,37
Owner: Neutral
Soldier1: e2
Location: 22,15
Owner: GDI
Facing: 384
SubCell: 2
Soldier2: e1
Location: 17,14
Owner: GDI
Facing: 384
SubCell: 4
Soldier3: e2
Location: 13,16
Owner: GDI
Facing: 384
SubCell: 1
GDICiv1: c9
Location: 20,12
Owner: GDI
SubCell: 3
GDICiv2: c4
Location: 18,7
Owner: GDI
SubCell: 0
GDICiv3: c9
Location: 19,12
Owner: GDI
SubCell: 1
GDICiv4: c8
Location: 16,8
Owner: GDI
SubCell: 3
GDICiv5: c7
Location: 17,9
Owner: GDI
SubCell: 1
GDICiv6: c6
Location: 24,13
Owner: GDI
SubCell: 2
GDICiv7: c5
Location: 20,7
Owner: GDI
SubCell: 4
GDICiv8: c4
Location: 14,12
Owner: GDI
SubCell: 1
GDICiv9: c3
Location: 15,10
Owner: GDI
SubCell: 2
GDICiv10: c2
Location: 14,10
Owner: GDI
SubCell: 1
GDICiv11: c1
Location: 17,7
Owner: GDI
SubCell: 2
GDICiv12: c1
Location: 20,10
Owner: GDI
SubCell: 1
GDICiv13: c1
Location: 20,11
Owner: GDI
SubCell: 3
UnitsEntryBuggy: waypoint
Location: 52,6
Owner: Neutral
UnitsRallyBuggy: waypoint
Location: 52,10
Owner: Neutral
UnitsEntryBikes: waypoint
Location: 50,6
Owner: Neutral
UnitsRallyBikes: waypoint
Location: 50,10
Owner: Neutral
UnitsEntryGunner: waypoint
Location: 54,6
Owner: Neutral
UnitsRallyGunner: waypoint
Location: 54,10
Owner: Neutral
UnitsEntryRocket: waypoint
Location: 56,12
Owner: Neutral
UnitsRallyRocket: waypoint
Location: 54,12
Owner: Neutral
NodCiv1: c8
Location: 46,36
Owner: NodSupporter
Facing: 512
SubCell: 2
NodCiv2: e3
Location: 48,36
Owner: NodSupporter
Facing: 768
SubCell: 4
NodCiv3: c4
Location: 52,38
Owner: NodSupporter
Facing: 768
SubCell: 1
NodCiv4: c3
Location: 45,35
Owner: NodSupporter
Facing: 128
SubCell: 4
NodCiv5: c1
Location: 51,36
Owner: NodSupporter
Facing: 896 Facing: 896
SubCell: 2 SubCell: 2
NodCiv6: c2 Actor112: e2
Location: 45,34 Location: 38,49
Owner: NodSupporter
Facing: 0
SubCell: 1
NodCiv7: c4
Location: 54,36
Owner: NodSupporter
Facing: 640
SubCell: 0
NodCiv8: c5
Location: 50,37
Owner: NodSupporter
Facing: 384
SubCell: 2
NodCiv9: c9
Location: 47,34
Owner: NodSupporter
Facing: 768
SubCell: 2
Gciv1: e1
Location: 38,9
Owner: GDI Owner: GDI
Facing: 512 Facing: 512
SubCell: 0 SubCell: 0
Gciv2: e1 Actor113: e2
Location: 18,10 Location: 35,40
Owner: GDI Owner: GDI
Facing: 640 SubCell: 0
Actor114: e2
Location: 35,40
Owner: GDI
SubCell: 1
waypoint27: waypoint
Location: 31,36
Owner: Neutral
waypoint25: waypoint
Location: 40,43
Owner: Neutral
waypoint26: waypoint
Location: 28,27
Owner: Neutral
waypoint11: waypoint
Location: 54,29
Owner: Neutral
waypoint10: waypoint
Location: 45,28
Owner: Neutral
GDIBase: waypoint
Location: 52,22
Owner: Neutral
waypoint8: waypoint
Location: 43,22
Owner: Neutral
waypoint7: waypoint
Location: 31,22
Owner: Neutral
waypoint6: waypoint
Location: 21,25
Owner: Neutral
waypoint5: waypoint
Location: 18,39
Owner: Neutral
waypoint4: waypoint
Location: 10,48
Owner: Neutral
waypoint3: waypoint
Location: 19,48
Owner: Neutral
waypoint2: waypoint
Location: 27,55
Owner: Neutral
waypoint1: waypoint
Location: 48,56
Owner: Neutral
waypoint0: waypoint
Location: 54,42
Owner: Neutral
Convoi: apc
Location: 24,53
Owner: GDI
CivBuilding1: v26
Location: 8,51
Owner: GDI
CivBuilding2: v30
Location: 17,46
Owner: GDI
CivBuilding3: v29
Location: 16,46
Owner: GDI
CivBuilding4: v28
Location: 15,45
Owner: GDI
CivBuilding5: v27
Location: 14,51
Owner: GDI
CivBuilding6: v27
Location: 13,51
Owner: GDI
CivBuilding7: v27
Location: 12,51
Owner: GDI
CivBuilding8: v26
Location: 14,46
Owner: GDI
CivBuilding9: v25
Location: 19,46
Owner: GDI
CivBuilding10: v24
Location: 8,47
Owner: GDI
CivBuilding11: v22
Location: 9,45
Owner: GDI
CivBuilding12: v22
Location: 18,52
Owner: GDI
CivBuilding13: v21
Location: 16,51
Owner: GDI
CivBuilding14: v20
Location: 8,45
Owner: GDI
Civilian1: c2
Location: 11,50
Owner: GDI
Facing: 896
SubCell: 0
Civilian2: c9
Location: 12,49
Owner: GDI
Facing: 896
SubCell: 2 SubCell: 2
Civilian3: c8
Location: 14,49
Owner: GDI
Facing: 256
SubCell: 3
Civilian4: c7
Location: 13,50
Owner: GDI
Facing: 896
SubCell: 0
Civilian5: c6
Location: 11,49
Owner: GDI
Facing: 128
SubCell: 0
Civilian6: c5
Location: 12,50
Owner: GDI
Facing: 896
SubCell: 2
Civilian7: c4
Location: 10,50
Owner: GDI
Facing: 128
SubCell: 1
Civilian8: c3
Location: 10,51
Owner: GDI
Facing: 128
SubCell: 1
Actor56: t18
Location: 19,51
Owner: Neutral
Actor55: t18
Location: 20,46
Owner: Neutral
Actor51: t08
Location: 13,46
Owner: Neutral
Actor53: t18
Location: 7,46
Owner: Neutral
Actor54: t18
Location: 11,51
Owner: Neutral
GDIGunner1: e1
Location: 41,50
Owner: GDI
Facing: 768
SubCell: 2
GDIGunner2: e1
Location: 39,50
Owner: GDI
SubCell: 0
GDIGunner3: e1
Location: 40,50
Owner: GDI
Facing: 256
SubCell: 0
EntryPointVehicle: waypoint
Location: 33,17
Owner: Neutral
RallyPointVehicle: waypoint
Location: 33,30
Owner: Neutral
EntryPointRocket: waypoint
Location: 35,17
Owner: Neutral
RallyPointRocket: waypoint
Location: 35,32
Owner: Neutral
EntryPointGunner: waypoint
Location: 31,17
Owner: Neutral
RallyPointGunner: waypoint
Location: 31,32
Owner: Neutral
CameraPoint: waypoint
Location: 32,22
Owner: Neutral
Rules: cnc|rules/campaign-maprules.yaml, cnc|rules/campaign-tooltips.yaml, cnc|rules/campaign-palettes.yaml, rules.yaml Rules: cnc|rules/campaign-maprules.yaml, cnc|rules/campaign-tooltips.yaml, cnc|rules/campaign-palettes.yaml, rules.yaml

View File

@@ -7,201 +7,124 @@
information, see COPYING. information, see COPYING.
]] ]]
NodUnitsBuggy = { "bggy", "bggy", "bggy", "bggy", "bggy" } NodUnitsBuggy = { "bggy", "bggy", "bike", "bike" }
NodUnitsBikes = { "bike", "bike", "bike" }
NodUnitsGunner = { "e1", "e1", "e1", "e1", "e1", "e1" }
NodUnitsRocket = { "e3", "e3", "e3", "e3", "e3", "e3" } NodUnitsRocket = { "e3", "e3", "e3", "e3", "e3", "e3" }
NodUnitsGunner = { "e1", "e1", "e1", "e1", "e1", "e1" }
Atk6Units = { "c1", "c2", "c3" } Apc3Trigger = { CPos.New(28,58), CPos.New(27,58), CPos.New(28,57), CPos.New(27,57), CPos.New(28,56), CPos.New(27,56), CPos.New(28,55), CPos.New(27,55), CPos.New(28,54), CPos.New(27,54), CPos.New(28,53), CPos.New(27,53) }
Atk5Units = { "e1", "e1", "e2", "e2" } NorthernBridgeTrigger = { CPos.New(13,41), CPos.New(14,41), CPos.New(15,41), CPos.New(14,42), CPos.New(15,42), CPos.New(16,42) }
Atk1Units = { "e1", "e1" } SouthernBridgeTrigger = { CPos.New(26,54), CPos.New(25,54), CPos.New(24,54), CPos.New(25,53), CPos.New(24,53), CPos.New(23,53) }
JeepReinforcements = { "jeep" }
GDIUnits = { "e1", "e1", "e2" }
ApcUnits = { "e1", "e1", "e2", "e2" }
Spawnpoint = { waypoint0.Location } Apc1Units = { "c2", "c3", "c4", "c5" }
Atk6WaypointsPart1 = { waypoint1.Location, waypoint2.Location, waypoint3.Location, waypoint4.Location }
Atk6WaypointsPart2 = { waypoint7.Location, waypoint8.Location, waypoint7.Location }
Atk5Waypoints = { waypoint0.Location, waypoint9.Location}
Atk3Waypoints = { waypoint0 }
Atk2Waypoints = { waypoint6 }
GcivWaypoints = { waypoint0, waypoint1, waypoint2, waypoint3, waypoint4 }
Atk1Waypoints = { waypoint0, waypoint1, waypoint2, waypoint3, waypoint4, waypoint5, waypoint6 }
Atk4Waypoints = { waypoint0, waypoint9 }
Atk6ActorTriggerActivator = { Civilian1, Civilian2 } Civilians = { Civilian1, Civilian2, Civilian3, Civilian4, Civilian5, Civilian6, Civilian7, Civilian8 }
Atk5ActorTriggerActivator = { Soldier1, Soldier2, Soldier3, Actor105 } TargetActors = { Civilian1, Civilian2, Civilian3, Civilian4, Civilian5, Civilian6, Civilian7, Civilian8, CivBuilding1, CivBuilding2, CivBuilding3, CivBuilding4, CivBuilding5, CivBuilding6, CivBuilding7, CivBuilding8, CivBuilding9, CivBuilding10, CivBuilding11, CivBuilding12, CivBuilding13, CivBuilding14 }
WinActorTriggerActivator = { GDICiv1, GDICiv2, GDICiv3, GDICiv4, GDICiv5, GDICiv6, GDICiv7, GDICiv8, GDICiv9, GDICiv11, GDICiv12, GDICiv13 } Apc2Trigger = { GDIGunner1, GDIGunner2, GDIGunner3 }
GcivActors = { Gcvi1, Gciv2, GDICiv2, GDICiv9, GDICiv10, GDICiv11 }
Atk2CellTriggerActivator = { CPos.New(41,22), CPos.New(40,22), CPos.New(39,22), CPos.New(41,21), CPos.New(40,21), CPos.New(39,21) } Apc1Waypoints = { waypoint0.Location, waypoint11.Location, waypoint10.Location, waypoint8.Location, GDIBase.Location }
Atk3CellTriggerActivator = { CPos.New(18,18), CPos.New(17,18), CPos.New(16,18), CPos.New(15,18), CPos.New(14,18), CPos.New(13,18), CPos.New(12,18), CPos.New(11,18), CPos.New(24,17), CPos.New(23,17), CPos.New(22,17), CPos.New(21,17), CPos.New(20,17), CPos.New(19,17), CPos.New(17,17), CPos.New(16,17), CPos.New(15,17), CPos.New(14,17), CPos.New(13,17), CPos.New(12,17), CPos.New(11,17) } Apc2Waypoints = { waypoint8, waypoint7, waypoint6, waypoint5, waypoint4 }
Atk4CellTriggerActivator = { CPos.New(29,28), CPos.New(28,28), CPos.New(29,27), CPos.New(28,27), CPos.New(29,26), CPos.New(28,26), CPos.New(29,25), CPos.New(28,25), CPos.New(29,24), CPos.New(28,24), CPos.New(29,23), CPos.New(28,23), CPos.New(29,22), CPos.New(28,22) } Apc3Waypoints = { waypoint3, waypoint2, waypoint1, waypoint0, waypoint11, waypoint10, waypoint8, GDIBase }
GcivCellTriggerActivator = { CPos.New(51,17), CPos.New(50,17), CPos.New(49,17), CPos.New(48,17), CPos.New(47,17), CPos.New(46,17), CPos.New(45,17), CPos.New(44,17), CPos.New(43,17), CPos.New(42,17), CPos.New(41,17), CPos.New(40,17), CPos.New(39,17), CPos.New(38,17), CPos.New(37,17), CPos.New(36,17), CPos.New(35,17), CPos.New(52,16), CPos.New(51,16), CPos.New(50,16), CPos.New(49,16), CPos.New(48,16), CPos.New(47,16), CPos.New(46,16), CPos.New(45,16), CPos.New(44,16), CPos.New(43,16), CPos.New(42,16), CPos.New(41,16), CPos.New(40,16), CPos.New(39,16), CPos.New(38,16), CPos.New(37,16), CPos.New(36,16), CPos.New(35,16) } FlightRouteTop = { waypoint4, waypoint5, waypoint6, waypoint7, waypoint8, GDIBase }
DelxCellTriggerActivator = { CPos.New(42,20), CPos.New(41,20), CPos.New(40,20), CPos.New(39,20), CPos.New(38,20) } FlightRouteBottom = { waypoint3, waypoint2, waypoint1, waypoint11, waypoint10, waypoint8, GDIBase }
DelyCellTriggerActivator = { CPos.New(31,28), CPos.New(30,28), CPos.New(31,27), CPos.New(30,27), CPos.New(31,26), CPos.New(30,26), CPos.New(31,25), CPos.New(30,25), CPos.New(31,24), CPos.New(30,24) } Hummer1Waypoints = { waypoint8, waypoint7, waypoint6, waypoint5, waypoint4, waypoint3, waypoint2, waypoint1, waypoint0, waypoint11, waypoint10, waypoint8 }
DelzCellTriggerActivator = { CPos.New(18,20), CPos.New(17,20), CPos.New(16,20), CPos.New(15,20), CPos.New(14,20), CPos.New(13,20), CPos.New(12,20), CPos.New(11,20), CPos.New(25,19), CPos.New(24,19), CPos.New(23,19), CPos.New(22,19), CPos.New(21,19), CPos.New(20,19), CPos.New(19,19), CPos.New(18,19), CPos.New(17,19), CPos.New(16,19), CPos.New(15,19), CPos.New(14,19), CPos.New(13,19), CPos.New(12,19), CPos.New(11,19), CPos.New(25,18), CPos.New(24,18), CPos.New(23,18), CPos.New(22,18), CPos.New(21,18), CPos.New(20,18), CPos.New(19,18) }
NodCiviliansActors = { NodCiv1, NodCiv2, NodCiv3, NodCiv4, NodCiv5, NodCiv6, NodCiv7, NodCiv8, NodCiv9 }
SendJeepReinforcements = function()
if not PreventJeepReinforcements then
local units = Reinforcements.Reinforce(GDI, JeepReinforcements, Spawnpoint, 15)
MoveAndHunt(units, Atk2Waypoints)
end
end
SendGDIReinforcements = function()
if not PreventGDIReinforcements then
local units = Reinforcements.Reinforce(GDI, GDIUnits, Spawnpoint, 15)
MoveAndHunt(units, Atk4Waypoints)
end
end
SendApcReinforcements = function()
if not PreventApcReinforcements then
Reinforcements.ReinforceWithTransport(GDI, "apc", ApcUnits, Atk5Waypoints, nil,
function(transport, cargo)
transport.UnloadPassengers()
Utils.Do(cargo, IdleHunt)
end, IdleHunt)
end
end
CreateCivilians = function(actor, discoverer)
Utils.Do(NodCiviliansActors, function(actor)
actor.Owner = Nod
end)
ProtectCivilians = Nod.AddPrimaryObjective("Protect the civilians that support Nod.")
Trigger.OnAllKilled(NodCiviliansActors, function()
Nod.MarkFailedObjective(ProtectCivilians)
end)
Utils.Do(GcivActors, function(actor)
if not actor.IsDead then
actor.AttackMove(waypoint7.Location)
actor.AttackMove(waypoint8.Location)
IdleHunt(actor)
end
end)
end
WorldLoaded = function() WorldLoaded = function()
Nod = Player.GetPlayer("Nod") Nod = Player.GetPlayer("Nod")
NodSupporter = Player.GetPlayer("NodSupporter")
GDI = Player.GetPlayer("GDI") GDI = Player.GetPlayer("GDI")
InitObjectives(Nod) Trigger.AfterDelay(DateTime.Seconds(3), function()
local apc = Actor.Create("apc", true, { Owner = GDI, Location = Apc1Waypoints[1], Cargo = Apc1Units })
Utils.Do(Apc1Waypoints, function(waypoint)
apc.AttackMove(waypoint)
end)
Trigger.OnAnyKilled(Atk6ActorTriggerActivator, function() Trigger.OnEnteredFootprint(Apc3Trigger, function(a, id)
Reinforcements.ReinforceWithTransport(GDI, "apc", Atk6Units, Atk6WaypointsPart1, Atk6WaypointsPart2, if a.Owner == Nod then
function(transport, cargo) MoveAndHunt({ apc }, Apc3Waypoints)
Utils.Do(cargo, IdleHunt) Trigger.RemoveFootprintTrigger(id)
end, IdleHunt)
end)
Utils.Do(Atk5ActorTriggerActivator, function(actor)
Trigger.OnDamaged(actor, function()
if Atk5TriggerSwitch then
return
end end
Atk5TriggerSwitch = true
Reinforcements.ReinforceWithTransport(GDI, "apc", Atk5Units, Atk5Waypoints, nil,
function(transport, cargo)
transport.UnloadPassengers()
Utils.Do(cargo, IdleHunt)
end, IdleHunt)
end) end)
end) end)
Trigger.OnEnteredFootprint(Atk3CellTriggerActivator, function(a, id) Trigger.OnEnteredFootprint(NorthernBridgeTrigger, function(a, id)
if a.Owner == Nod then if a.Owner == Nod then
Trigger.RemoveFootprintTrigger(id) if not CiviliansEvacuated then
CiviliansEvacuated = true
Utils.Do(Civilians, function(civ)
Utils.Do(FlightRouteBottom, function(waypoint)
civ.Move(waypoint.Location)
end)
for type, count in pairs({ ["e1"] = 3, ["e2"] = 2, ["mtnk"] = 1 }) do Trigger.OnIdle(civ, function()
MoveAndHunt(Utils.Take(count, GDI.GetActorsByType(type)), Atk3Waypoints) if civ.Location == GDIBase.Location then
Trigger.Clear(civ, "OnIdle")
else
civ.Move(GDIBase.Location)
end
end)
end)
end end
end
end)
Trigger.OnEnteredFootprint(Atk2CellTriggerActivator, function(a, id)
if a.Owner == Nod then
MoveAndHunt(Utils.Take(1, GDI.GetActorsByType("jeep")), Atk2Waypoints)
Trigger.RemoveFootprintTrigger(id) Trigger.RemoveFootprintTrigger(id)
end end
end) end)
Trigger.OnEnteredFootprint(GcivCellTriggerActivator, function(a, id) Trigger.OnEnteredFootprint(SouthernBridgeTrigger, function(a, id)
if a.Owner == Nod then if a.Owner == Nod then
MoveAndHunt(GcivActors, GcivWaypoints) if not CiviliansEvacuated then
Trigger.RemoveFootprintTrigger(id) CiviliansEvacuated = true
end Utils.Do(Civilians, function(civ)
end) Utils.Do(FlightRouteTop, function(waypoint)
civ.Move(waypoint.Location)
end)
Trigger.OnEnteredFootprint(Atk4CellTriggerActivator, function(a, id) Trigger.OnIdle(civ, function()
if a.Owner == Nod then if civ.Location == GDIBase.Location then
for type, count in pairs({ ["e1"] = 2,["e2"] = 1 }) do Trigger.Clear(civ, "OnIdle")
MoveAndHunt(Utils.Take(count, GDI.GetActorsByType(type)), Atk4Waypoints) else
civ.Move(GDIBase.Location)
end
end)
end)
end end
Trigger.RemoveFootprintTrigger(id) Trigger.RemoveFootprintTrigger(id)
end end
end) end)
Trigger.AfterDelay(DateTime.Seconds(20), function() Trigger.OnDiscovered(Convoi, function()
local units = Reinforcements.Reinforce(GDI, Atk1Units, Spawnpoint, 15) MoveAndHunt({ Jeep1, Jeep2 }, Hummer1Waypoints)
MoveAndHunt(units, Atk1Waypoints)
end) end)
Trigger.AfterDelay(DateTime.Seconds(50), SendJeepReinforcements) Trigger.OnAllRemovedFromWorld(Apc2Trigger, function()
Trigger.AfterDelay(DateTime.Minutes(1) + DateTime.Seconds(40), SendGDIReinforcements) MoveAndHunt({ Convoi }, Apc2Waypoints)
Trigger.AfterDelay(DateTime.Minutes(2) + DateTime.Seconds(30), SendApcReinforcements)
Trigger.OnEnteredFootprint(DelxCellTriggerActivator, function(a, id)
if a.Owner == Nod then
PreventJeepReinforcements = true
Trigger.RemoveFootprintTrigger(id)
end
end) end)
Trigger.OnEnteredFootprint(DelyCellTriggerActivator, function(a, id) Trigger.OnAllRemovedFromWorld(TargetActors, function()
if a.Owner == Nod then Nod.MarkCompletedObjective(KillCivilians)
PreventGDIReinforcements = true
Trigger.RemoveFootprintTrigger(id)
end
end) end)
Trigger.OnEnteredFootprint(DelzCellTriggerActivator, function(a, id) InitObjectives(Nod)
if a.Owner == Nod then
PreventApcReinforcements = true
Trigger.RemoveFootprintTrigger(id)
end
end)
Trigger.OnPlayerDiscovered(NodSupporter, CreateCivilians) KillCivilians = Nod.AddObjective("Destroy the village and kill all civilians.")
KillGDI = Nod.AddObjective("Kill all GDI units in the area.", "Secondary", false)
Trigger.OnAllKilled(WinActorTriggerActivator, function() Camera.Position = CameraPoint.CenterPosition
Nod.MarkCompletedObjective(KillGDI)
if ProtectCivilians then
Nod.MarkCompletedObjective(ProtectCivilians)
end
end)
KillGDI = Nod.AddObjective("Kill all civilian GDI supporters.")
Media.PlaySpeechNotification(Nod, "Reinforce") Media.PlaySpeechNotification(Nod, "Reinforce")
Reinforcements.Reinforce(Nod, NodUnitsBuggy, { UnitsEntryBuggy.Location, UnitsRallyBuggy.Location }, 11) Trigger.AfterDelay(DateTime.Seconds(1), function()
Reinforcements.Reinforce(Nod, NodUnitsBikes, { UnitsEntryBikes.Location, UnitsRallyBikes.Location }, 15) Reinforcements.ReinforceWithTransport(Nod, "tran", NodUnitsBuggy, { EntryPointVehicle.Location, RallyPointVehicle.Location }, { EntryPointVehicle.Location })
Reinforcements.Reinforce(Nod, NodUnitsGunner, { UnitsEntryGunner.Location, UnitsRallyGunner.Location }, 15) end)
Reinforcements.Reinforce(Nod, NodUnitsRocket, { UnitsEntryRocket.Location, UnitsRallyRocket.Location }, 15) Reinforcements.ReinforceWithTransport(Nod, "tran", NodUnitsRocket, { EntryPointRocket.Location, RallyPointRocket.Location }, { EntryPointRocket.Location })
Reinforcements.ReinforceWithTransport(Nod, "tran", NodUnitsGunner, { EntryPointGunner.Location, RallyPointGunner.Location }, { EntryPointGunner.Location })
Camera.Position = waypoint6.CenterPosition
end end
Tick = function() Tick = function()
if DateTime.GameTime > 2 and Nod.HasNoRequiredUnits() then if DateTime.GameTime > 2 and Nod.HasNoRequiredUnits() then
Nod.MarkFailedObjective(KillGDI) Nod.MarkFailedObjective(KillCivilians)
end
if GDI.HasNoRequiredUnits() then
Nod.MarkCompletedObjective(KillGDI)
end end
end end

View File

@@ -2,128 +2,27 @@ World:
LuaScript: LuaScript:
Scripts: campaign-global.lua, nod04a.lua Scripts: campaign-global.lua, nod04a.lua
MusicPlaylist: MusicPlaylist:
StartingMusic: valkyrie StartingMusic: warfare
VictoryMusic: nod_win1 VictoryMusic: nod_win1
MissionData: MissionData:
Briefing: A small village friendly to our cause has been increasingly harassed by GDI, and the Brotherhood wishes you to assist them in their efforts.\n\nSeek out the enemy village and destroy it. The event will be disguised as a GDI attack. Briefing: A small village friendly to our cause has been increasingly harassed by GDI, and the Brotherhood wishes you to assist them in their efforts.\n\nSeek out the enemy village and destroy it. The event will be disguised as a GDI attack.
BriefingVideo: nod4b.vqa BriefingVideo: nod4b.vqa
StartVideo: retro.vqa LossVideo: nodlose.vqa
LossVideo: deskill.vqa
SmudgeLayer@SCORCH:
InitialSmudges:
37,24: sc6,0
36,18: sc6,0
Player: Player:
EnemyWatcher: EnemyWatcher:
PlayerResources: PlayerResources:
DefaultCash: 0 DefaultCash: 0
^Palettes: ^Vehicle:
IndexedPlayerPalette:
PlayerIndex:
NodSupporter: 192, 164, 132, 155, 133, 197, 112, 12, 163, 132, 155, 133, 134, 197, 154, 198
IndexedPlayerPalette@units:
PlayerIndex:
NodSupporter: 192, 164, 132, 155, 133, 197, 112, 12, 163, 132, 155, 133, 134, 197, 154, 198
^Infantry:
AnnounceOnSeen: AnnounceOnSeen:
^CivBuilding: ^Tank:
AnnounceOnSeen: AnnounceOnSeen:
^CivBuildingHusk: TRAN:
AnnounceOnSeen: RejectsOrders:
-Selectable:
NUK2: RevealsShroud:
Buildable: Range: 5c0
Prerequisites: ~disabled Interactable:
GUN:
Buildable:
Prerequisites: ~disabled
CYCL:
Buildable:
Prerequisites: ~disabled
FIX:
Buildable:
Prerequisites: ~disabled
HPAD:
Buildable:
Prerequisites: ~disabled
OBLI:
Buildable:
Prerequisites: ~disabled
BRIK:
Buildable:
Prerequisites: ~disabled
TMPL:
Buildable:
Prerequisites: ~disabled
FTNK:
Buildable:
Prerequisites: ~disabled
STNK:
Buildable:
Prerequisites: ~disabled
ARTY:
Buildable:
Prerequisites: ~disabled
E5:
Buildable:
Prerequisites: ~disabled
RMBO:
Buildable:
Prerequisites: ~disabled
MLRS:
Buildable:
Prerequisites: ~disabled
MCV:
Buildable:
Prerequisites: ~disabled
SAM:
Buildable:
Prerequisites: ~disabled
AFLD:
Buildable:
Prerequisites: ~disabled
E4:
Buildable:
Prerequisites: ~disabled
SBAG:
Buildable:
Prerequisites: ~disabled
GTWR:
Buildable:
Prerequisites: ~disabled
WEAP:
Buildable:
Prerequisites: ~disabled
EYE:
Buildable:
Prerequisites: ~disabled
ATWR:
Buildable:
Prerequisites: ~disabled

Binary file not shown.

View File

@@ -2,7 +2,7 @@ MapFormat: 11
RequiresMod: cnc RequiresMod: cnc
Title: 04b: Oum Hadjer Title: 04b: Mao Civil War
Author: Westwood Studios Author: Westwood Studios
@@ -10,7 +10,7 @@ Tileset: DESERT
MapSize: 64,64 MapSize: 64,64
Bounds: 7,17,52,44 Bounds: 11,6,46,34
Visibility: MissionSelector Visibility: MissionSelector
@@ -19,21 +19,26 @@ Categories: Campaign
LockPreview: True LockPreview: True
Players: Players:
PlayerReference@GDI:
Name: GDI
Bot: campaign
Faction: gdi
Color: F5D378
Enemies: Nod
PlayerReference@Neutral: PlayerReference@Neutral:
Name: Neutral Name: Neutral
OwnsWorld: True OwnsWorld: True
NonCombatant: True NonCombatant: True
Faction: gdi Faction: gdi
PlayerReference@NodSupporter:
Name: NodSupporter
NonCombatant: True
Faction: nod
Bot: campaign
PlayerReference@GDI:
Name: GDI
Faction: gdi
Color: F5D378
Enemies: Nod
Bot: campaign
PlayerReference@Nod: PlayerReference@Nod:
Name: Nod Name: Nod
AllowBots: False
Playable: True Playable: True
AllowBots: False
Required: True Required: True
LockFaction: True LockFaction: True
Faction: nod Faction: nod
@@ -44,437 +49,491 @@ Players:
Enemies: GDI Enemies: GDI
Actors: Actors:
Actor0: sbag Actor0: t08
Location: 58,26 Location: 34,20
Owner: Neutral Owner: Neutral
Actor1: sbag Actor1: t18
Location: 57,26 Location: 33,18
Owner: Neutral Owner: Neutral
Actor2: sbag Actor2: t18
Location: 56,26 Location: 33,9
Owner: Neutral Owner: Neutral
Actor3: sbag Actor3: t08
Location: 55,26 Location: 41,5
Owner: Neutral Owner: Neutral
Actor4: sbag Actor4: t18
Location: 54,26 Location: 42,15
Owner: Neutral Owner: Neutral
Actor5: sbag Actor5: t08
Location: 53,26 Location: 45,26
Owner: Neutral Owner: Neutral
Actor6: sbag Actor6: t08
Location: 52,26 Location: 56,29
Owner: Neutral Owner: Neutral
Actor7: sbag Actor7: t08
Location: 55,29
Owner: Neutral
Actor8: t08
Location: 51,26 Location: 51,26
Owner: Neutral Owner: Neutral
Actor8: sbag Actor9: t08
Location: 50,26 Location: 56,18
Owner: Neutral Owner: Neutral
Actor9: sbag Actor10: t08
Location: 49,26 Location: 52,16
Owner: Neutral Owner: Neutral
Actor10: sbag Actor11: t08
Location: 48,26 Location: 45,21
Owner: Neutral Owner: Neutral
Actor11: sbag Actor12: t08
Location: 47,26 Location: 38,19
Owner: Neutral Owner: Neutral
Actor12: sbag Actor13: t08
Location: 58,25 Location: 23,16
Owner: Neutral Owner: Neutral
Actor13: sbag Actor14: t08
Location: 47,25 Location: 14,22
Owner: Neutral Owner: Neutral
Actor14: sbag Actor15: t08
Location: 58,24 Location: 26,22
Owner: Neutral Owner: Neutral
Actor15: sbag Actor16: t08
Location: 47,24 Location: 21,26
Owner: Neutral Owner: Neutral
Actor16: sbag Actor17: t08
Location: 58,23 Location: 48,6
Owner: Neutral Owner: Neutral
Actor17: sbag Actor18: t08
Location: 58,22 Location: 15,19
Owner: Neutral Owner: Neutral
Actor18: sbag Actor19: t08
Location: 58,21 Location: 31,15
Owner: Neutral Owner: Neutral
Actor19: sbag Actor20: t18
Location: 47,21 Location: 49,34
Owner: Neutral Owner: Neutral
Actor20: sbag Actor21: t18
Location: 58,20 Location: 48,38
Owner: Neutral Owner: Neutral
Actor21: sbag Actor22: t18
Location: 47,20 Location: 42,35
Owner: Neutral Owner: Neutral
Actor22: sbag Actor23: t18
Location: 58,19 Location: 54,37
Owner: Neutral Owner: Neutral
Actor23: sbag Actor24: t08
Location: 47,19 Location: 51,35
Owner: Neutral Owner: Neutral
Actor24: sbag Actor25: t08
Location: 58,18 Location: 45,37
Owner: Neutral Owner: Neutral
Actor25: sbag Actor26: t08
Location: 57,18 Location: 47,33
Owner: Neutral Owner: Neutral
Actor26: sbag Actor27: t18
Location: 48,18 Location: 13,10
Owner: Neutral Owner: Neutral
Actor27: sbag Actor28: t18
Location: 47,18 Location: 20,7
Owner: Neutral Owner: Neutral
Actor28: sbag Actor30: t08
Location: 58,17 Location: 12,8
Owner: Neutral Owner: Neutral
Actor29: sbag Actor31: t08
Location: 57,17 Location: 23,9
Owner: Neutral Owner: Neutral
Actor30: sbag Actor32: v35
Location: 56,17 Location: 48,38
Owner: Neutral Owner: NodSupporter
Actor31: sbag Actor33: v34
Location: 55,17 Location: 46,33
Owner: Neutral Owner: NodSupporter
Actor32: sbag Actor35: v32
Location: 54,17 Location: 54,35
Owner: Neutral Owner: NodSupporter
Actor33: sbag Actor36: v30
Location: 53,17 Location: 48,32
Owner: Neutral Owner: NodSupporter
Actor34: sbag Actor37: v30
Location: 52,17 Location: 52,34
Owner: Neutral Owner: NodSupporter
Actor35: sbag Actor38: v31
Location: 51,17 Location: 52,35
Owner: Neutral Owner: NodSupporter
Actor36: sbag Actor39: v32
Location: 50,17 Location: 46,37
Owner: Neutral Owner: NodSupporter
Actor37: sbag Health: 73
Location: 49,17 Actor41: v34
Owner: Neutral Location: 49,38
Actor38: sbag Owner: NodSupporter
Location: 48,17 Actor42: v35
Owner: Neutral Location: 46,32
Actor39: sbag Owner: NodSupporter
Location: 47,17 Actor43: v36
Owner: Neutral Location: 48,37
Actor40: t18 Owner: NodSupporter
Location: 47,50 Actor44: v32
Owner: Neutral Location: 49,33
Actor41: t18 Owner: NodSupporter
Location: 46,31 Actor45: v34
Owner: Neutral Location: 50,34
Actor42: t08 Owner: NodSupporter
Location: 39,26 Actor46: v20
Owner: Neutral Location: 15,10
Actor43: t18
Location: 37,25
Owner: Neutral
Actor44: t18
Location: 27,28
Owner: Neutral
Actor45: t18
Location: 54,26
Owner: Neutral
Actor46: t18
Location: 49,18
Owner: Neutral
Actor47: t18
Location: 23,54
Owner: Neutral
Actor48: t18
Location: 34,40
Owner: Neutral
Actor49: t08
Location: 16,45
Owner: Neutral
Actor50: t08
Location: 14,53
Owner: Neutral
Actor52: t18
Location: 13,44
Owner: Neutral
Actor57: t18
Location: 36,49
Owner: Neutral
Actor58: t18
Location: 44,59
Owner: Neutral
Actor59: t18
Location: 11,37
Owner: Neutral
Actor60: t18
Location: 25,20
Owner: Neutral
Actor61: gtwr
Location: 46,21
Owner: GDI Owner: GDI
Actor62: gtwr Actor47: v21
Location: 46,24 Location: 12,10
Owner: GDI Owner: GDI
Actor63: hosp Actor48: v22
Location: 48,19 Location: 21,11
Owner: GDI Owner: GDI
Actor64: pyle Actor49: v23
Location: 50,20 Location: 22,8
Owner: GDI Owner: GDI
Actor65: nuke Actor50: v24
Location: 53,21 Location: 18,8
Owner: GDI Owner: GDI
Actor66: nuke Actor51: v25
Location: 52,23 Location: 13,7
Owner: GDI Owner: GDI
Actor67: silo Actor52: v26
Location: 56,24 Location: 20,9
Owner: GDI Owner: GDI
Actor68: silo Actor53: v27
Location: 55,22 Location: 15,9
Owner: GDI Owner: GDI
Actor69: fact Actor54: v27
Location: 53,18 Location: 14,9
Owner: GDI Owner: GDI
Actor70: hq Actor55: v27
Location: 56,19 Location: 13,9
Owner: GDI Owner: GDI
Actor72: v36 Actor56: v28
Location: 12,54 Location: 21,7
Owner: Neutral
Actor73: v35
Location: 10,54
Owner: Neutral
Actor74: v34
Location: 11,53
Owner: Neutral
Actor75: v33
Location: 15,53
Owner: Neutral
Actor76: v32
Location: 12,53
Owner: Neutral
Actor77: v31
Location: 10,52
Owner: Neutral
Actor87: v23
Location: 9,59
Owner: Neutral
Jeep1: jeep
Location: 51,25
Owner: GDI Owner: GDI
Jeep2: jeep Actor57: v29
Location: 50,25 Location: 22,7
Owner: GDI Owner: GDI
Actor94: jeep Actor58: v30
Location: 39,48 Location: 21,10
Owner: GDI
Actor59: v30
Location: 23,8
Owner: GDI
Actor61: jeep
Location: 15,23
Owner: GDI
Facing: 640
Actor62: jeep
Location: 36,6
Owner: GDI Owner: GDI
Facing: 384 Facing: 384
Actor110: e1 Actor65: mtnk
Location: 40,49 Location: 29,10
Owner: GDI Owner: GDI
Facing: 896 Facing: 256
SubCell: 0 Actor71: jeep
Actor111: e2 Location: 24,26
Location: 38,50 Owner: GDI
Facing: 384
Actor72: jeep
Location: 37,19
Owner: GDI
Facing: 128
Actor73: jeep
Location: 27,33
Owner: GDI
Facing: 384
Actor86: e1
Location: 43,15
Owner: GDI
Health: 88
Facing: 128
SubCell: 3
Actor99: e1
Location: 45,15
Owner: GDI
SubCell: 3
Actor100: e1
Location: 43,15
Owner: GDI
Health: 94
Facing: 128
SubCell: 4
Actor105: e1
Location: 46,14
Owner: GDI Owner: GDI
Facing: 896
SubCell: 2 SubCell: 2
Actor112: e2 Actor106: e1
Location: 38,49 Location: 18,29
Owner: GDI Owner: GDI
Facing: 512 Facing: 384
SubCell: 0 SubCell: 4
Actor113: e2 Actor107: e1
Location: 35,40 Location: 12,20
Owner: GDI
SubCell: 0
Actor114: e2
Location: 35,40
Owner: GDI Owner: GDI
SubCell: 1 SubCell: 1
waypoint27: waypoint Actor108: e1
Location: 31,36 Location: 39,23
Owner: Neutral
waypoint25: waypoint
Location: 40,43
Owner: Neutral
waypoint26: waypoint
Location: 28,27
Owner: Neutral
waypoint11: waypoint
Location: 54,29
Owner: Neutral
waypoint10: waypoint
Location: 45,28
Owner: Neutral
GDIBase: waypoint
Location: 52,22
Owner: Neutral
waypoint8: waypoint
Location: 43,22
Owner: Neutral
waypoint7: waypoint
Location: 31,22
Owner: Neutral
waypoint6: waypoint
Location: 21,25
Owner: Neutral
waypoint5: waypoint
Location: 18,39
Owner: Neutral
waypoint4: waypoint
Location: 10,48
Owner: Neutral
waypoint3: waypoint
Location: 19,48
Owner: Neutral
waypoint2: waypoint
Location: 27,55
Owner: Neutral
waypoint1: waypoint
Location: 48,56
Owner: Neutral
waypoint0: waypoint
Location: 54,42
Owner: Neutral
Convoi: apc
Location: 24,53
Owner: GDI Owner: GDI
CivBuilding1: v26 SubCell: 1
Location: 8,51 Actor119: e2
Location: 18,8
Owner: GDI Owner: GDI
CivBuilding2: v30 Facing: 512
Location: 17,46 SubCell: 3
Actor120: e2
Location: 16,10
Owner: GDI Owner: GDI
CivBuilding3: v29 Facing: 384
Location: 16,46
Owner: GDI
CivBuilding4: v28
Location: 15,45
Owner: GDI
CivBuilding5: v27
Location: 14,51
Owner: GDI
CivBuilding6: v27
Location: 13,51
Owner: GDI
CivBuilding7: v27
Location: 12,51
Owner: GDI
CivBuilding8: v26
Location: 14,46
Owner: GDI
CivBuilding9: v25
Location: 19,46
Owner: GDI
CivBuilding10: v24
Location: 8,47
Owner: GDI
CivBuilding11: v22
Location: 9,45
Owner: GDI
CivBuilding12: v22
Location: 18,52
Owner: GDI
CivBuilding13: v21
Location: 16,51
Owner: GDI
CivBuilding14: v20
Location: 8,45
Owner: GDI
Civilian1: c2
Location: 11,50
Owner: GDI
Facing: 896
SubCell: 0
Civilian2: c9
Location: 12,49
Owner: GDI
Facing: 896
SubCell: 2 SubCell: 2
Civilian3: c8 Actor121: e2
Location: 14,49 Location: 27,19
Owner: GDI
Facing: 512
SubCell: 1
Actor122: e2
Location: 25,34
Owner: GDI
SubCell: 4
Actor123: e1
Location: 13,13
Owner: GDI
Facing: 512
SubCell: 1
Actor124: e1
Location: 13,13
Owner: GDI
Facing: 512
SubCell: 2
Actor125: e2
Location: 13,13
Owner: GDI
Facing: 512
SubCell: 4
Actor126: e2
Location: 13,13
Owner: GDI
Facing: 512
SubCell: 3
Actor127: e2
Location: 29,18
Owner: GDI Owner: GDI
Facing: 256 Facing: 256
SubCell: 3 SubCell: 3
Civilian4: c7 Actor128: e2
Location: 13,50 Location: 27,22
Owner: GDI
Facing: 896
SubCell: 0
Civilian5: c6
Location: 11,49
Owner: GDI
Facing: 128
SubCell: 0
Civilian6: c5
Location: 12,50
Owner: GDI
Facing: 896
SubCell: 2
Civilian7: c4
Location: 10,50
Owner: GDI
Facing: 128
SubCell: 1
Civilian8: c3
Location: 10,51
Owner: GDI
Facing: 128
SubCell: 1
Actor56: t18
Location: 19,51
Owner: Neutral
Actor55: t18
Location: 20,46
Owner: Neutral
Actor51: t08
Location: 13,46
Owner: Neutral
Actor53: t18
Location: 7,46
Owner: Neutral
Actor54: t18
Location: 11,51
Owner: Neutral
GDIGunner1: e1
Location: 41,50
Owner: GDI
Facing: 768
SubCell: 2
GDIGunner2: e1
Location: 39,50
Owner: GDI
SubCell: 0
GDIGunner3: e1
Location: 40,50
Owner: GDI Owner: GDI
Facing: 256 Facing: 256
SubCell: 1
Actor129: e2
Location: 36,10
Owner: GDI
Health: 38
Facing: 256
SubCell: 0 SubCell: 0
EntryPointVehicle: waypoint Actor131: e1
Location: 33,17 Location: 21,12
Owner: GDI
Facing: 512
SubCell: 4
Actor132: e1
Location: 22,12
Owner: GDI
Facing: 512
SubCell: 3
Actor29: t18
Location: 14,7
Owner: Neutral Owner: Neutral
RallyPointVehicle: waypoint waypoint27: waypoint
Location: 33,30 Location: 35,25
Owner: Neutral Owner: Neutral
EntryPointRocket: waypoint waypoint26: waypoint
Location: 35,17 Location: 44,6
Owner: Neutral Owner: Neutral
RallyPointRocket: waypoint waypoint9: waypoint
Location: 35,32 Location: 26,19
Owner: Neutral Owner: Neutral
EntryPointGunner: waypoint waypoint8: waypoint
Location: 31,17 Location: 53,37
Owner: Neutral Owner: Neutral
RallyPointGunner: waypoint waypoint7: waypoint
Location: 31,32 Location: 47,35
Owner: Neutral Owner: Neutral
CameraPoint: waypoint waypoint6: waypoint
Location: 32,22 Location: 45,11
Owner: Neutral Owner: Neutral
waypoint5: waypoint
Location: 40,17
Owner: Neutral
waypoint4: waypoint
Location: 39,34
Owner: Neutral
waypoint3: waypoint
Location: 21,38
Owner: Neutral
waypoint2: waypoint
Location: 20,28
Owner: Neutral
waypoint1: waypoint
Location: 13,26
Owner: Neutral
waypoint0: waypoint
Location: 13,14
Owner: Neutral
Civilian1: v33
Location: 48,34
Owner: Neutral
Health: 62
Civilian2: v33
Location: 54,37
Owner: Neutral
Soldier1: e2
Location: 22,15
Owner: GDI
Facing: 384
SubCell: 2
Soldier2: e1
Location: 17,14
Owner: GDI
Facing: 384
SubCell: 4
Soldier3: e2
Location: 13,16
Owner: GDI
Facing: 384
SubCell: 1
GDICiv1: c9
Location: 20,12
Owner: GDI
SubCell: 3
GDICiv2: c4
Location: 18,7
Owner: GDI
SubCell: 0
GDICiv3: c9
Location: 19,12
Owner: GDI
SubCell: 1
GDICiv4: c8
Location: 16,8
Owner: GDI
SubCell: 3
GDICiv5: c7
Location: 17,9
Owner: GDI
SubCell: 1
GDICiv6: c6
Location: 24,13
Owner: GDI
SubCell: 2
GDICiv7: c5
Location: 20,7
Owner: GDI
SubCell: 4
GDICiv8: c4
Location: 14,12
Owner: GDI
SubCell: 1
GDICiv9: c3
Location: 15,10
Owner: GDI
SubCell: 2
GDICiv10: c2
Location: 14,10
Owner: GDI
SubCell: 1
GDICiv11: c1
Location: 17,7
Owner: GDI
SubCell: 2
GDICiv12: c1
Location: 20,10
Owner: GDI
SubCell: 1
GDICiv13: c1
Location: 20,11
Owner: GDI
SubCell: 3
UnitsEntryBuggy: waypoint
Location: 52,6
Owner: Neutral
UnitsRallyBuggy: waypoint
Location: 52,10
Owner: Neutral
UnitsEntryBikes: waypoint
Location: 50,6
Owner: Neutral
UnitsRallyBikes: waypoint
Location: 50,10
Owner: Neutral
UnitsEntryGunner: waypoint
Location: 54,6
Owner: Neutral
UnitsRallyGunner: waypoint
Location: 54,10
Owner: Neutral
UnitsEntryRocket: waypoint
Location: 56,12
Owner: Neutral
UnitsRallyRocket: waypoint
Location: 54,12
Owner: Neutral
NodCiv1: c8
Location: 46,36
Owner: NodSupporter
Facing: 512
SubCell: 2
NodCiv2: e3
Location: 48,36
Owner: NodSupporter
Facing: 768
SubCell: 4
NodCiv3: c4
Location: 52,38
Owner: NodSupporter
Facing: 768
SubCell: 1
NodCiv4: c3
Location: 45,35
Owner: NodSupporter
Facing: 128
SubCell: 4
NodCiv5: c1
Location: 51,36
Owner: NodSupporter
Facing: 896
SubCell: 2
NodCiv6: c2
Location: 45,34
Owner: NodSupporter
Facing: 0
SubCell: 1
NodCiv7: c4
Location: 54,36
Owner: NodSupporter
Facing: 640
SubCell: 0
NodCiv8: c5
Location: 50,37
Owner: NodSupporter
Facing: 384
SubCell: 2
NodCiv9: c9
Location: 47,34
Owner: NodSupporter
Facing: 768
SubCell: 2
Gciv1: e1
Location: 38,9
Owner: GDI
Facing: 512
SubCell: 0
Gciv2: e1
Location: 18,10
Owner: GDI
Facing: 640
SubCell: 2
Rules: cnc|rules/campaign-maprules.yaml, cnc|rules/campaign-tooltips.yaml, cnc|rules/campaign-palettes.yaml, rules.yaml Rules: cnc|rules/campaign-maprules.yaml, cnc|rules/campaign-tooltips.yaml, cnc|rules/campaign-palettes.yaml, rules.yaml

View File

@@ -7,124 +7,201 @@
information, see COPYING. information, see COPYING.
]] ]]
NodUnitsBuggy = { "bggy", "bggy", "bike", "bike" } NodUnitsBuggy = { "bggy", "bggy", "bggy", "bggy", "bggy" }
NodUnitsRocket = { "e3", "e3", "e3", "e3", "e3", "e3" } NodUnitsBikes = { "bike", "bike", "bike" }
NodUnitsGunner = { "e1", "e1", "e1", "e1", "e1", "e1" } NodUnitsGunner = { "e1", "e1", "e1", "e1", "e1", "e1" }
NodUnitsRocket = { "e3", "e3", "e3", "e3", "e3", "e3" }
Apc3Trigger = { CPos.New(28,58), CPos.New(27,58), CPos.New(28,57), CPos.New(27,57), CPos.New(28,56), CPos.New(27,56), CPos.New(28,55), CPos.New(27,55), CPos.New(28,54), CPos.New(27,54), CPos.New(28,53), CPos.New(27,53) } Atk6Units = { "c1", "c2", "c3" }
NorthernBridgeTrigger = { CPos.New(13,41), CPos.New(14,41), CPos.New(15,41), CPos.New(14,42), CPos.New(15,42), CPos.New(16,42) } Atk5Units = { "e1", "e1", "e2", "e2" }
SouthernBridgeTrigger = { CPos.New(26,54), CPos.New(25,54), CPos.New(24,54), CPos.New(25,53), CPos.New(24,53), CPos.New(23,53) } Atk1Units = { "e1", "e1" }
JeepReinforcements = { "jeep" }
GDIUnits = { "e1", "e1", "e2" }
ApcUnits = { "e1", "e1", "e2", "e2" }
Apc1Units = { "c2", "c3", "c4", "c5" } Spawnpoint = { waypoint0.Location }
Atk6WaypointsPart1 = { waypoint1.Location, waypoint2.Location, waypoint3.Location, waypoint4.Location }
Atk6WaypointsPart2 = { waypoint7.Location, waypoint8.Location, waypoint7.Location }
Atk5Waypoints = { waypoint0.Location, waypoint9.Location}
Atk3Waypoints = { waypoint0 }
Atk2Waypoints = { waypoint6 }
GcivWaypoints = { waypoint0, waypoint1, waypoint2, waypoint3, waypoint4 }
Atk1Waypoints = { waypoint0, waypoint1, waypoint2, waypoint3, waypoint4, waypoint5, waypoint6 }
Atk4Waypoints = { waypoint0, waypoint9 }
Civilians = { Civilian1, Civilian2, Civilian3, Civilian4, Civilian5, Civilian6, Civilian7, Civilian8 } Atk6ActorTriggerActivator = { Civilian1, Civilian2 }
TargetActors = { Civilian1, Civilian2, Civilian3, Civilian4, Civilian5, Civilian6, Civilian7, Civilian8, CivBuilding1, CivBuilding2, CivBuilding3, CivBuilding4, CivBuilding5, CivBuilding6, CivBuilding7, CivBuilding8, CivBuilding9, CivBuilding10, CivBuilding11, CivBuilding12, CivBuilding13, CivBuilding14 } Atk5ActorTriggerActivator = { Soldier1, Soldier2, Soldier3, Actor105 }
Apc2Trigger = { GDIGunner1, GDIGunner2, GDIGunner3 } WinActorTriggerActivator = { GDICiv1, GDICiv2, GDICiv3, GDICiv4, GDICiv5, GDICiv6, GDICiv7, GDICiv8, GDICiv9, GDICiv11, GDICiv12, GDICiv13 }
GcivActors = { Gcvi1, Gciv2, GDICiv2, GDICiv9, GDICiv10, GDICiv11 }
Apc1Waypoints = { waypoint0.Location, waypoint11.Location, waypoint10.Location, waypoint8.Location, GDIBase.Location } Atk2CellTriggerActivator = { CPos.New(41,22), CPos.New(40,22), CPos.New(39,22), CPos.New(41,21), CPos.New(40,21), CPos.New(39,21) }
Apc2Waypoints = { waypoint8, waypoint7, waypoint6, waypoint5, waypoint4 } Atk3CellTriggerActivator = { CPos.New(18,18), CPos.New(17,18), CPos.New(16,18), CPos.New(15,18), CPos.New(14,18), CPos.New(13,18), CPos.New(12,18), CPos.New(11,18), CPos.New(24,17), CPos.New(23,17), CPos.New(22,17), CPos.New(21,17), CPos.New(20,17), CPos.New(19,17), CPos.New(17,17), CPos.New(16,17), CPos.New(15,17), CPos.New(14,17), CPos.New(13,17), CPos.New(12,17), CPos.New(11,17) }
Apc3Waypoints = { waypoint3, waypoint2, waypoint1, waypoint0, waypoint11, waypoint10, waypoint8, GDIBase } Atk4CellTriggerActivator = { CPos.New(29,28), CPos.New(28,28), CPos.New(29,27), CPos.New(28,27), CPos.New(29,26), CPos.New(28,26), CPos.New(29,25), CPos.New(28,25), CPos.New(29,24), CPos.New(28,24), CPos.New(29,23), CPos.New(28,23), CPos.New(29,22), CPos.New(28,22) }
FlightRouteTop = { waypoint4, waypoint5, waypoint6, waypoint7, waypoint8, GDIBase } GcivCellTriggerActivator = { CPos.New(51,17), CPos.New(50,17), CPos.New(49,17), CPos.New(48,17), CPos.New(47,17), CPos.New(46,17), CPos.New(45,17), CPos.New(44,17), CPos.New(43,17), CPos.New(42,17), CPos.New(41,17), CPos.New(40,17), CPos.New(39,17), CPos.New(38,17), CPos.New(37,17), CPos.New(36,17), CPos.New(35,17), CPos.New(52,16), CPos.New(51,16), CPos.New(50,16), CPos.New(49,16), CPos.New(48,16), CPos.New(47,16), CPos.New(46,16), CPos.New(45,16), CPos.New(44,16), CPos.New(43,16), CPos.New(42,16), CPos.New(41,16), CPos.New(40,16), CPos.New(39,16), CPos.New(38,16), CPos.New(37,16), CPos.New(36,16), CPos.New(35,16) }
FlightRouteBottom = { waypoint3, waypoint2, waypoint1, waypoint11, waypoint10, waypoint8, GDIBase } DelxCellTriggerActivator = { CPos.New(42,20), CPos.New(41,20), CPos.New(40,20), CPos.New(39,20), CPos.New(38,20) }
Hummer1Waypoints = { waypoint8, waypoint7, waypoint6, waypoint5, waypoint4, waypoint3, waypoint2, waypoint1, waypoint0, waypoint11, waypoint10, waypoint8 } DelyCellTriggerActivator = { CPos.New(31,28), CPos.New(30,28), CPos.New(31,27), CPos.New(30,27), CPos.New(31,26), CPos.New(30,26), CPos.New(31,25), CPos.New(30,25), CPos.New(31,24), CPos.New(30,24) }
DelzCellTriggerActivator = { CPos.New(18,20), CPos.New(17,20), CPos.New(16,20), CPos.New(15,20), CPos.New(14,20), CPos.New(13,20), CPos.New(12,20), CPos.New(11,20), CPos.New(25,19), CPos.New(24,19), CPos.New(23,19), CPos.New(22,19), CPos.New(21,19), CPos.New(20,19), CPos.New(19,19), CPos.New(18,19), CPos.New(17,19), CPos.New(16,19), CPos.New(15,19), CPos.New(14,19), CPos.New(13,19), CPos.New(12,19), CPos.New(11,19), CPos.New(25,18), CPos.New(24,18), CPos.New(23,18), CPos.New(22,18), CPos.New(21,18), CPos.New(20,18), CPos.New(19,18) }
NodCiviliansActors = { NodCiv1, NodCiv2, NodCiv3, NodCiv4, NodCiv5, NodCiv6, NodCiv7, NodCiv8, NodCiv9 }
SendJeepReinforcements = function()
if not PreventJeepReinforcements then
local units = Reinforcements.Reinforce(GDI, JeepReinforcements, Spawnpoint, 15)
MoveAndHunt(units, Atk2Waypoints)
end
end
SendGDIReinforcements = function()
if not PreventGDIReinforcements then
local units = Reinforcements.Reinforce(GDI, GDIUnits, Spawnpoint, 15)
MoveAndHunt(units, Atk4Waypoints)
end
end
SendApcReinforcements = function()
if not PreventApcReinforcements then
Reinforcements.ReinforceWithTransport(GDI, "apc", ApcUnits, Atk5Waypoints, nil,
function(transport, cargo)
transport.UnloadPassengers()
Utils.Do(cargo, IdleHunt)
end, IdleHunt)
end
end
CreateCivilians = function(actor, discoverer)
Utils.Do(NodCiviliansActors, function(actor)
actor.Owner = Nod
end)
ProtectCivilians = Nod.AddPrimaryObjective("Protect the civilians that support Nod.")
Trigger.OnAllKilled(NodCiviliansActors, function()
Nod.MarkFailedObjective(ProtectCivilians)
end)
Utils.Do(GcivActors, function(actor)
if not actor.IsDead then
actor.AttackMove(waypoint7.Location)
actor.AttackMove(waypoint8.Location)
IdleHunt(actor)
end
end)
end
WorldLoaded = function() WorldLoaded = function()
Nod = Player.GetPlayer("Nod") Nod = Player.GetPlayer("Nod")
NodSupporter = Player.GetPlayer("NodSupporter")
GDI = Player.GetPlayer("GDI") GDI = Player.GetPlayer("GDI")
Trigger.AfterDelay(DateTime.Seconds(3), function()
local apc = Actor.Create("apc", true, { Owner = GDI, Location = Apc1Waypoints[1], Cargo = Apc1Units })
Utils.Do(Apc1Waypoints, function(waypoint)
apc.AttackMove(waypoint)
end)
Trigger.OnEnteredFootprint(Apc3Trigger, function(a, id)
if a.Owner == Nod then
MoveAndHunt({ apc }, Apc3Waypoints)
Trigger.RemoveFootprintTrigger(id)
end
end)
end)
Trigger.OnEnteredFootprint(NorthernBridgeTrigger, function(a, id)
if a.Owner == Nod then
if not CiviliansEvacuated then
CiviliansEvacuated = true
Utils.Do(Civilians, function(civ)
Utils.Do(FlightRouteBottom, function(waypoint)
civ.Move(waypoint.Location)
end)
Trigger.OnIdle(civ, function()
if civ.Location == GDIBase.Location then
Trigger.Clear(civ, "OnIdle")
else
civ.Move(GDIBase.Location)
end
end)
end)
end
Trigger.RemoveFootprintTrigger(id)
end
end)
Trigger.OnEnteredFootprint(SouthernBridgeTrigger, function(a, id)
if a.Owner == Nod then
if not CiviliansEvacuated then
CiviliansEvacuated = true
Utils.Do(Civilians, function(civ)
Utils.Do(FlightRouteTop, function(waypoint)
civ.Move(waypoint.Location)
end)
Trigger.OnIdle(civ, function()
if civ.Location == GDIBase.Location then
Trigger.Clear(civ, "OnIdle")
else
civ.Move(GDIBase.Location)
end
end)
end)
end
Trigger.RemoveFootprintTrigger(id)
end
end)
Trigger.OnDiscovered(Convoi, function()
MoveAndHunt({ Jeep1, Jeep2 }, Hummer1Waypoints)
end)
Trigger.OnAllRemovedFromWorld(Apc2Trigger, function()
MoveAndHunt({ Convoi }, Apc2Waypoints)
end)
Trigger.OnAllRemovedFromWorld(TargetActors, function()
Nod.MarkCompletedObjective(KillCivilians)
end)
InitObjectives(Nod) InitObjectives(Nod)
KillCivilians = Nod.AddObjective("Destroy the village and kill all civilians.") Trigger.OnAnyKilled(Atk6ActorTriggerActivator, function()
KillGDI = Nod.AddObjective("Kill all GDI units in the area.", "Secondary", false) Reinforcements.ReinforceWithTransport(GDI, "apc", Atk6Units, Atk6WaypointsPart1, Atk6WaypointsPart2,
function(transport, cargo)
Utils.Do(cargo, IdleHunt)
end, IdleHunt)
end)
Camera.Position = CameraPoint.CenterPosition Utils.Do(Atk5ActorTriggerActivator, function(actor)
Trigger.OnDamaged(actor, function()
if Atk5TriggerSwitch then
return
end
Atk5TriggerSwitch = true
Reinforcements.ReinforceWithTransport(GDI, "apc", Atk5Units, Atk5Waypoints, nil,
function(transport, cargo)
transport.UnloadPassengers()
Utils.Do(cargo, IdleHunt)
end, IdleHunt)
end)
end)
Trigger.OnEnteredFootprint(Atk3CellTriggerActivator, function(a, id)
if a.Owner == Nod then
Trigger.RemoveFootprintTrigger(id)
for type, count in pairs({ ["e1"] = 3, ["e2"] = 2, ["mtnk"] = 1 }) do
MoveAndHunt(Utils.Take(count, GDI.GetActorsByType(type)), Atk3Waypoints)
end
end
end)
Trigger.OnEnteredFootprint(Atk2CellTriggerActivator, function(a, id)
if a.Owner == Nod then
MoveAndHunt(Utils.Take(1, GDI.GetActorsByType("jeep")), Atk2Waypoints)
Trigger.RemoveFootprintTrigger(id)
end
end)
Trigger.OnEnteredFootprint(GcivCellTriggerActivator, function(a, id)
if a.Owner == Nod then
MoveAndHunt(GcivActors, GcivWaypoints)
Trigger.RemoveFootprintTrigger(id)
end
end)
Trigger.OnEnteredFootprint(Atk4CellTriggerActivator, function(a, id)
if a.Owner == Nod then
for type, count in pairs({ ["e1"] = 2,["e2"] = 1 }) do
MoveAndHunt(Utils.Take(count, GDI.GetActorsByType(type)), Atk4Waypoints)
end
Trigger.RemoveFootprintTrigger(id)
end
end)
Trigger.AfterDelay(DateTime.Seconds(20), function()
local units = Reinforcements.Reinforce(GDI, Atk1Units, Spawnpoint, 15)
MoveAndHunt(units, Atk1Waypoints)
end)
Trigger.AfterDelay(DateTime.Seconds(50), SendJeepReinforcements)
Trigger.AfterDelay(DateTime.Minutes(1) + DateTime.Seconds(40), SendGDIReinforcements)
Trigger.AfterDelay(DateTime.Minutes(2) + DateTime.Seconds(30), SendApcReinforcements)
Trigger.OnEnteredFootprint(DelxCellTriggerActivator, function(a, id)
if a.Owner == Nod then
PreventJeepReinforcements = true
Trigger.RemoveFootprintTrigger(id)
end
end)
Trigger.OnEnteredFootprint(DelyCellTriggerActivator, function(a, id)
if a.Owner == Nod then
PreventGDIReinforcements = true
Trigger.RemoveFootprintTrigger(id)
end
end)
Trigger.OnEnteredFootprint(DelzCellTriggerActivator, function(a, id)
if a.Owner == Nod then
PreventApcReinforcements = true
Trigger.RemoveFootprintTrigger(id)
end
end)
Trigger.OnPlayerDiscovered(NodSupporter, CreateCivilians)
Trigger.OnAllKilled(WinActorTriggerActivator, function()
Nod.MarkCompletedObjective(KillGDI)
if ProtectCivilians then
Nod.MarkCompletedObjective(ProtectCivilians)
end
end)
KillGDI = Nod.AddObjective("Kill all civilian GDI supporters.")
Media.PlaySpeechNotification(Nod, "Reinforce") Media.PlaySpeechNotification(Nod, "Reinforce")
Trigger.AfterDelay(DateTime.Seconds(1), function() Reinforcements.Reinforce(Nod, NodUnitsBuggy, { UnitsEntryBuggy.Location, UnitsRallyBuggy.Location }, 11)
Reinforcements.ReinforceWithTransport(Nod, "tran", NodUnitsBuggy, { EntryPointVehicle.Location, RallyPointVehicle.Location }, { EntryPointVehicle.Location }) Reinforcements.Reinforce(Nod, NodUnitsBikes, { UnitsEntryBikes.Location, UnitsRallyBikes.Location }, 15)
end) Reinforcements.Reinforce(Nod, NodUnitsGunner, { UnitsEntryGunner.Location, UnitsRallyGunner.Location }, 15)
Reinforcements.ReinforceWithTransport(Nod, "tran", NodUnitsRocket, { EntryPointRocket.Location, RallyPointRocket.Location }, { EntryPointRocket.Location }) Reinforcements.Reinforce(Nod, NodUnitsRocket, { UnitsEntryRocket.Location, UnitsRallyRocket.Location }, 15)
Reinforcements.ReinforceWithTransport(Nod, "tran", NodUnitsGunner, { EntryPointGunner.Location, RallyPointGunner.Location }, { EntryPointGunner.Location })
Camera.Position = waypoint6.CenterPosition
end end
Tick = function() Tick = function()
if DateTime.GameTime > 2 and Nod.HasNoRequiredUnits() then if DateTime.GameTime > 2 and Nod.HasNoRequiredUnits() then
Nod.MarkFailedObjective(KillCivilians) Nod.MarkFailedObjective(KillGDI)
end
if GDI.HasNoRequiredUnits() then
Nod.MarkCompletedObjective(KillGDI)
end end
end end

View File

@@ -2,27 +2,128 @@ World:
LuaScript: LuaScript:
Scripts: campaign-global.lua, nod04b.lua Scripts: campaign-global.lua, nod04b.lua
MusicPlaylist: MusicPlaylist:
StartingMusic: warfare StartingMusic: valkyrie
VictoryMusic: nod_win1 VictoryMusic: nod_win1
MissionData: MissionData:
Briefing: A small village friendly to our cause has been increasingly harassed by GDI, and the Brotherhood wishes you to assist them in their efforts.\n\nSeek out the enemy village and destroy it. The event will be disguised as a GDI attack. Briefing: A small village friendly to our cause has been increasingly harassed by GDI, and the Brotherhood wishes you to assist them in their efforts.\n\nSeek out the enemy village and destroy it. The event will be disguised as a GDI attack.
BriefingVideo: nod4b.vqa BriefingVideo: nod4b.vqa
LossVideo: nodlose.vqa StartVideo: retro.vqa
LossVideo: deskill.vqa
SmudgeLayer@SCORCH:
InitialSmudges:
37,24: sc6,0
36,18: sc6,0
Player: Player:
EnemyWatcher: EnemyWatcher:
PlayerResources: PlayerResources:
DefaultCash: 0 DefaultCash: 0
^Vehicle: ^Palettes:
IndexedPlayerPalette:
PlayerIndex:
NodSupporter: 192, 164, 132, 155, 133, 197, 112, 12, 163, 132, 155, 133, 134, 197, 154, 198
IndexedPlayerPalette@units:
PlayerIndex:
NodSupporter: 192, 164, 132, 155, 133, 197, 112, 12, 163, 132, 155, 133, 134, 197, 154, 198
^Infantry:
AnnounceOnSeen: AnnounceOnSeen:
^Tank: ^CivBuilding:
AnnounceOnSeen: AnnounceOnSeen:
TRAN: ^CivBuildingHusk:
RejectsOrders: AnnounceOnSeen:
-Selectable:
RevealsShroud: NUK2:
Range: 5c0 Buildable:
Interactable: Prerequisites: ~disabled
GUN:
Buildable:
Prerequisites: ~disabled
CYCL:
Buildable:
Prerequisites: ~disabled
FIX:
Buildable:
Prerequisites: ~disabled
HPAD:
Buildable:
Prerequisites: ~disabled
OBLI:
Buildable:
Prerequisites: ~disabled
BRIK:
Buildable:
Prerequisites: ~disabled
TMPL:
Buildable:
Prerequisites: ~disabled
FTNK:
Buildable:
Prerequisites: ~disabled
STNK:
Buildable:
Prerequisites: ~disabled
ARTY:
Buildable:
Prerequisites: ~disabled
E5:
Buildable:
Prerequisites: ~disabled
RMBO:
Buildable:
Prerequisites: ~disabled
MLRS:
Buildable:
Prerequisites: ~disabled
MCV:
Buildable:
Prerequisites: ~disabled
SAM:
Buildable:
Prerequisites: ~disabled
AFLD:
Buildable:
Prerequisites: ~disabled
E4:
Buildable:
Prerequisites: ~disabled
SBAG:
Buildable:
Prerequisites: ~disabled
GTWR:
Buildable:
Prerequisites: ~disabled
WEAP:
Buildable:
Prerequisites: ~disabled
EYE:
Buildable:
Prerequisites: ~disabled
ATWR:
Buildable:
Prerequisites: ~disabled

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 37 KiB