added nod4b

This commit is contained in:
Alexander Boll
2015-03-11 11:03:30 +01:00
parent c9d6760972
commit 912ab4d1b8
7 changed files with 731 additions and 1 deletions

View File

@@ -37,6 +37,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tiberian Dawn Lua scripts",
mods\cnc\maps\nod03a\nod03a.lua = mods\cnc\maps\nod03a\nod03a.lua
mods\cnc\maps\nod03b\nod03b.lua = mods\cnc\maps\nod03b\nod03b.lua
mods\cnc\maps\nod04a\nod04a.lua = mods\cnc\maps\nod04a\nod04a.lua
mods\cnc\maps\nod04b\nod04b.lua = mods\cnc\maps\nod04b\nod04b.lua
mods\cnc\maps\shellmap\shellmap.lua = mods\cnc\maps\shellmap\shellmap.lua
EndProjectSection
EndProject

View File

@@ -4,7 +4,7 @@ RequiresMod: cnc
Title: Mao Civil War (a)
Description: 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.
Description: 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.
Author: Westwood Studios

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

View File

@@ -0,0 +1,565 @@
MapFormat: 7
RequiresMod: cnc
Title: Oum Hadjer (b)
Description: 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.
Author: Westwood Studios
Tileset: DESERT
MapSize: 64,64
Bounds: 7,17,52,44
Visibility: MissionSelector
Type: Campaign
Videos:
Briefing: nod4b.vqa
GameLost: nodlose.vqa
Options:
Crates: False
Creeps: False
Fog: True
Shroud: True
AllyBuildRadius: False
FragileAlliances: False
StartingCash: 0
ConfigurableStartingUnits: False
ShortGame: False
Players:
PlayerReference@GDI:
Name: GDI
Race: gdi
ColorRamp: 31,222,183
Enemies: Nod
PlayerReference@Neutral:
Name: Neutral
OwnsWorld: True
NonCombatant: True
Race: gdi
Allies: GDI
Enemies: Nod
PlayerReference@Nod:
Name: Nod
Playable: True
AllowBots: False
Required: True
LockRace: True
Race: nod
LockColor: True
ColorRamp: 3,255,127
LockSpawn: True
LockTeam: True
Enemies: GDI
Actors:
Actor0: sbag
Location: 58,26
Owner: Neutral
Actor1: sbag
Location: 57,26
Owner: Neutral
Actor2: sbag
Location: 56,26
Owner: Neutral
Actor3: sbag
Location: 55,26
Owner: Neutral
Actor4: sbag
Location: 54,26
Owner: Neutral
Actor5: sbag
Location: 53,26
Owner: Neutral
Actor6: sbag
Location: 52,26
Owner: Neutral
Actor7: sbag
Location: 51,26
Owner: Neutral
Actor8: sbag
Location: 50,26
Owner: Neutral
Actor9: sbag
Location: 49,26
Owner: Neutral
Actor10: sbag
Location: 48,26
Owner: Neutral
Actor11: sbag
Location: 47,26
Owner: Neutral
Actor12: sbag
Location: 58,25
Owner: Neutral
Actor13: sbag
Location: 47,25
Owner: Neutral
Actor14: sbag
Location: 58,24
Owner: Neutral
Actor15: sbag
Location: 47,24
Owner: Neutral
Actor16: sbag
Location: 58,23
Owner: Neutral
Actor17: sbag
Location: 58,22
Owner: Neutral
Actor18: sbag
Location: 58,21
Owner: Neutral
Actor19: sbag
Location: 47,21
Owner: Neutral
Actor20: sbag
Location: 58,20
Owner: Neutral
Actor21: sbag
Location: 47,20
Owner: Neutral
Actor22: sbag
Location: 58,19
Owner: Neutral
Actor23: sbag
Location: 47,19
Owner: Neutral
Actor24: sbag
Location: 58,18
Owner: Neutral
Actor25: sbag
Location: 57,18
Owner: Neutral
Actor26: sbag
Location: 48,18
Owner: Neutral
Actor27: sbag
Location: 47,18
Owner: Neutral
Actor28: sbag
Location: 58,17
Owner: Neutral
Actor29: sbag
Location: 57,17
Owner: Neutral
Actor30: sbag
Location: 56,17
Owner: Neutral
Actor31: sbag
Location: 55,17
Owner: Neutral
Actor32: sbag
Location: 54,17
Owner: Neutral
Actor33: sbag
Location: 53,17
Owner: Neutral
Actor34: sbag
Location: 52,17
Owner: Neutral
Actor35: sbag
Location: 51,17
Owner: Neutral
Actor36: sbag
Location: 50,17
Owner: Neutral
Actor37: sbag
Location: 49,17
Owner: Neutral
Actor38: sbag
Location: 48,17
Owner: Neutral
Actor39: sbag
Location: 47,17
Owner: Neutral
Actor40: t18
Location: 47,50
Owner: Neutral
Actor41: t18
Location: 46,31
Owner: Neutral
Actor42: t08
Location: 39,26
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
Actor62: gtwr
Location: 46,24
Owner: GDI
Actor63: hosp
Location: 48,19
Owner: GDI
Actor64: pyle
Location: 50,20
Owner: GDI
Actor65: nuke
Location: 53,21
Owner: GDI
Actor66: nuke
Location: 52,23
Owner: GDI
Actor67: silo
Location: 56,24
Owner: GDI
Actor68: silo
Location: 55,22
Owner: GDI
Actor69: fact
Location: 53,18
Owner: GDI
Actor70: hq
Location: 56,19
Owner: GDI
Actor72: v36
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
Actor92: jeep
Location: 51,25
Owner: GDI
Actor93: jeep
Location: 50,25
Owner: GDI
Actor94: jeep
Location: 39,48
Owner: GDI
Facing: 96
Actor110: e1
Location: 40,49
Owner: GDI
Facing: 224
SubCell: 0
Actor111: e2
Location: 38,50
Owner: GDI
Facing: 224
SubCell: 2
Actor112: e2
Location: 38,49
Owner: GDI
Facing: 128
SubCell: 0
Actor113: e2
Location: 35,40
Owner: GDI
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
waypoint9: 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: 224
SubCell: 0
Civilian2: c9
Location: 12,49
Owner: GDI
Facing: 224
SubCell: 2
Civilian3: c8
Location: 14,49
Owner: GDI
Facing: 64
SubCell: 3
Civilian4: c7
Location: 13,50
Owner: GDI
Facing: 224
SubCell: 0
Civilian5: c6
Location: 11,49
Owner: GDI
Facing: 32
SubCell: 0
Civilian6: c5
Location: 12,50
Owner: GDI
Facing: 224
SubCell: 2
Civilian7: c4
Location: 10,50
Owner: GDI
Facing: 32
SubCell: 1
Civilian8: c3
Location: 10,51
Owner: GDI
Facing: 32
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
NodGunner1: e1
Location: 41,50
Owner: GDI
Facing: 192
SubCell: 2
NodGunner2: e1
Location: 39,50
Owner: GDI
SubCell: 0
NodGunner3: e1
Location: 40,50
Owner: GDI
Facing: 64
SubCell: 0
EntryPointVehicle: waypoint
Location: 33,13
Owner: Neutral
RallyPointVehicle: waypoint
Location: 33,30
Owner: Neutral
EntryPointRocket: waypoint
Location: 35,15
Owner: Neutral
RallyPointRocket: waypoint
Location: 34,32
Owner: Neutral
EntryPointGunner: waypoint
Location: 31,15
Owner: Neutral
RallyPointGunner: waypoint
Location: 32,32
Owner: Neutral
CameraPoint: waypoint
Location: 32,22
Owner: Neutral
Smudges:
Rules:
Player:
-ConquestVictoryConditions:
MissionObjectives:
EarlyGameOver: true
EnemyWatcher:
World:
-CrateSpawner:
-SpawnMPUnits:
-MPStartLocations:
ObjectivesPanel:
PanelName: MISSION_OBJECTIVES
LuaScript:
Scripts: nod04b.lua
^Vehicle:
Tooltip:
GenericVisibility: Enemy
ShowOwnerRow: false
AnnounceOnSeen:
^Tank:
Tooltip:
GenericVisibility: Enemy
ShowOwnerRow: false
AnnounceOnSeen:
^Helicopter:
Tooltip:
GenericVisibility: Enemy
ShowOwnerRow: false
^Infantry:
Tooltip:
GenericVisibility: Enemy
ShowOwnerRow: false
^Building:
Tooltip:
GenericVisibility: Enemy
ShowOwnerRow: false
^Wall:
Tooltip:
ShowOwnerRow: false
^CivBuilding:
Tooltip:
ShowOwnerRow: false
^CivBuildingHusk:
Tooltip:
ShowOwnerRow: false
^Husk:
Tooltip:
GenericVisibility: Enemy, Ally, Neutral
GenericStancePrefix: false
ShowOwnerRow: false
TRAN:
RejectsOrders:
Selectable:
Selectable: false
RevealsShroud:
Range: 5c0
Sequences:
VoxelSequences:
Weapons:
Voices:
Notifications:
Translations:

View File

@@ -0,0 +1,163 @@
NodUnitsBuggy = { 'bggy', 'bggy', 'bike', 'bike' }
NodUnitsRocket = { 'e3', 'e3', 'e3', 'e3', 'e3', 'e3' }
NodUnitsGunner = { 'e1', 'e1', 'e1', 'e1', 'e1', 'e1' }
Apc3CellTriggerActivator = { 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) }
Civ1CellTriggerActivator = { CPos.New(24,52), CPos.New(23,52), CPos.New(22,52), CPos.New(23,51), CPos.New(22,51), CPos.New(21,51) }
Civ2CellTriggerActivator = { CPos.New(26,54), CPos.New(25,54), CPos.New(24,54), CPos.New(25,53), CPos.New(24,53), CPos.New(23,53) }
Apc1Units = { 'c2', 'c3', 'c4', 'c5' }
WinActorTriggerActivator = { Civilian1, Civilian2, Civilian3, Civilian4, Civilian5, Civilian6, Civilian7, Civilian8, CivBuilding1, CivBuilding2, CivBuilding3, CivBuilding4, CivBuilding5, CivBuilding6, CivBuilding7, CivBuilding8, CivBuilding9, CivBuilding10, CivBuilding11, CivBuilding12, CivBuilding13, CivBuilding14 }
Apc2ActorTriggerActivator = { NodGunner1, NodGunner2, NodGunner3 }
Apc1Waypoints = { waypoint0.Location, waypoint11.Location, waypoint10.Location, waypoint8.Location, waypoint9.Location }
Apc2Waypoints = { waypoint8, waypoint7, waypoint6, waypoint5, waypoint4 }
Apc3Waypoints = { waypoint3, waypoint2, waypoint1, waypoint0, waypoint11, waypoint10, waypoint8, waypoint9 }
Civ1Waypoints = { waypoint3, waypoint2, waypoint3, waypoint1, waypoint2, waypoint11, waypoint10, waypoint8, waypoint9 }
Civ2Waypoints = { waypoint3, waypoint2, waypoint1, waypoint11, waypoint10, waypoint8, waypoint9 }
Hummer1Waypoints = { waypoint8, waypoint7, waypoint6, waypoint5, waypoint4, waypoint3, waypoint2, waypoint1, waypoint0, waypoint11, waypoint10, waypoint8 }
Apc1TriggerFunctionTime = DateTime.Seconds(3)
Apc1TriggerFunction = function()
Reinforcements.ReinforceWithTransport(GDI, 'apc', Apc1Units, Apc1Waypoints, nil,
function(transport, cargo)
Utils.Do(cargo, function(actor)
IdleHunt(actor)
end)
end,
nil)
end
Hum1TriggerFunction = function(actor, discoverer)
MyActors = Utils.Take(2, GDI.GetActorsByType('jeep'))
Utils.Do(MyActors, function(actor)
MoveAndHunt(actor, Hummer1Waypoints)
end)
end
Movement = function(unit)
if unit ~= nil then
Utils.Do(Civ1Waypoints, function(waypoint)
unit.AttackMove(waypoint.Location)
end)
end
end
MoveAndHunt = function(unit)
if unit ~= nil then
Utils.Do(Apc2Waypoints, function(waypoint)
unit.AttackMove(waypoint.Location)
end)
IdleHunt(unit)
end
end
Apc2TriggerFunction = function()
MyActors = Utils.Take(1, GDI.GetActorsByType('apc'))
Utils.Do(MyActors, function(actor)
MoveAndHunt(actor, Apc2Waypoints)
end)
end
WinTriggerFunction = function()
Nod.MarkCompletedObjective(NodObjective1)
end
InsertNodUnits = function()
Camera.Position = CameraPoint.CenterPosition
Media.PlaySpeechNotification(Nod, "Reinforce")
Reinforcements.ReinforceWithTransport(Nod, 'tran', NodUnitsBuggy, { EntryPointVehicle.Location, RallyPointVehicle.Location }, { EntryPointVehicle.Location }, nil, nil)
Reinforcements.ReinforceWithTransport(Nod, 'tran', NodUnitsRocket, { EntryPointRocket.Location, RallyPointRocket.Location }, { EntryPointRocket.Location }, nil, nil)
Reinforcements.ReinforceWithTransport(Nod, 'tran', NodUnitsGunner, { EntryPointGunner.Location, RallyPointGunner.Location }, { EntryPointGunner.Location }, nil, nil)
end
WorldLoaded = function()
GDI = Player.GetPlayer("GDI")
Nod = Player.GetPlayer("Nod")
Trigger.AfterDelay(Apc1TriggerFunctionTime, Apc1TriggerFunction)
Trigger.OnEnteredFootprint(Civ2CellTriggerActivator, function(a, id)
if a.Owner == Nod then
for type, count in pairs({ ['c6'] = 1, ['c7'] = 1, ['c8'] = 1, ['c9'] = 1 }) do
MyActors = Utils.Take(count, GDI.GetActorsByType(type))
Utils.Do(MyActors, function(actor)
Movement(actor, Civ2Waypoints)
end)
end
Trigger.RemoveFootprintTrigger(id)
end
end)
Trigger.OnEnteredFootprint(Civ1CellTriggerActivator, function(a, id)
if a.Owner == Nod then
for type, count in pairs({ ['c2'] = 1, ['c3'] = 1, ['c4'] = 1, ['c5'] = 1 }) do
MyActors = Utils.Take(count, GDI.GetActorsByType(type))
Utils.Do(MyActors, function(actor)
Movement(actor, Civ1Waypoints)
end)
end
Trigger.RemoveFootprintTrigger(id)
end
end)
Trigger.OnDiscovered(Convoi, Hum1TriggerFunction)
Trigger.OnAllRemovedFromWorld(Apc2ActorTriggerActivator, Apc2TriggerFunction)
Trigger.OnEnteredFootprint(Apc3CellTriggerActivator, function(a, id)
if a.Owner == Nod then
MoveAndHunt(GDI.GetActorsByType('apc')[1], Apc3Waypoints)
Trigger.RemoveFootprintTrigger(id)
end
end)
Trigger.OnAllRemovedFromWorld(WinActorTriggerActivator, WinTriggerFunction)
Trigger.OnObjectiveAdded(Nod, function(p, id)
Media.DisplayMessage(p.GetObjectiveDescription(id), "New " .. string.lower(p.GetObjectiveType(id)) .. " objective")
end)
Trigger.OnObjectiveCompleted(Nod, function(p, id)
Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective completed")
end)
Trigger.OnObjectiveFailed(Nod, function(p, id)
Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective failed")
end)
Trigger.OnPlayerWon(Nod, function()
Media.PlaySpeechNotification(Nod, "Win")
end)
Trigger.OnPlayerLost(Nod, function()
Media.PlaySpeechNotification(Nod, "Lose")
end)
GDIObjective = GDI.AddPrimaryObjective("Kill all enemies!")
NodObjective1 = Nod.AddPrimaryObjective("Destroy the village and kill all civilians!")
NodObjective2 = Nod.AddSecondaryObjective("Kill all GDI units in the area.")
InsertNodUnits()
end
Tick = function()
if Nod.HasNoRequiredUnits() then
if DateTime.GameTime > 2 then
GDI.MarkCompletedObjective(GDIObjective)
end
end
if GDI.HasNoRequiredUnits() then
Nod.MarkCompletedObjective(NodObjective2)
end
end
IdleHunt = function(unit)
if not unit.IsDead then
Trigger.OnIdle(unit, unit.Hunt)
end
end

View File

@@ -15,3 +15,4 @@ Nod Campaign:
./mods/cnc/maps/nod03a
./mods/cnc/maps/nod03b
./mods/cnc/maps/nod04a
./mods/cnc/maps/nod04b