@@ -32,6 +32,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tiberian Dawn Lua scripts",
|
||||
mods\cnc\maps\gdi04c\gdi04c.lua = mods\cnc\maps\gdi04c\gdi04c.lua
|
||||
mods\cnc\maps\gdi05a\gdi05a.lua = mods\cnc\maps\gdi05a\gdi05a.lua
|
||||
mods\cnc\maps\gdi05b\gdi05b.lua = mods\cnc\maps\gdi05b\gdi05b.lua
|
||||
mods\cnc\maps\gdi06\gdi06.lua = mods\cnc\maps\gdi06\gdi06.lua
|
||||
mods\cnc\maps\nod01\nod01.lua = mods\cnc\maps\nod01\nod01.lua
|
||||
mods\cnc\maps\nod02a\nod02a.lua = mods\cnc\maps\nod02a\nod02a.lua
|
||||
mods\cnc\maps\nod02b\nod02b.lua = mods\cnc\maps\nod02b\nod02b.lua
|
||||
|
||||
233
mods/cnc/maps/gdi06/gdi06.lua
Normal file
233
mods/cnc/maps/gdi06/gdi06.lua
Normal file
@@ -0,0 +1,233 @@
|
||||
IslandSamSites = { SAM01, SAM02 }
|
||||
NodBase = { PowerPlant1, PowerPlant2, PowerPlant3, PowerPlant4, PowerPlant5, Refinery, HandOfNod, Silo1, Silo2, Silo3, Silo4, ConYard, CommCenter }
|
||||
|
||||
FlameSquad = { FlameGuy1, FlameGuy2, FlameGuy3 }
|
||||
FlameSquadRoute = { waypoint4.Location, waypoint12.Location, waypoint4.Location, waypoint6.Location }
|
||||
|
||||
FootPatrol1Squad = { MiniGunner1, MiniGunner2, RocketSoldier1 }
|
||||
FootPatrol1Route = {
|
||||
waypoint4.Location,
|
||||
waypoint12.Location,
|
||||
waypoint13.Location,
|
||||
waypoint3.Location,
|
||||
waypoint2.Location,
|
||||
waypoint7.Location,
|
||||
waypoint6.Location
|
||||
}
|
||||
|
||||
FootPatrol2Squad = { MiniGunner3, MiniGunner4 }
|
||||
FootPatrol2Route = {
|
||||
waypoint14.Location,
|
||||
waypoint16.Location
|
||||
}
|
||||
|
||||
FootPatrol3Squad = { MiniGunner5, MiniGunner6 }
|
||||
FootPatrol3Route = {
|
||||
waypoint15.Location,
|
||||
waypoint17.Location
|
||||
}
|
||||
|
||||
FootPatrol4Route = {
|
||||
waypoint4.Location,
|
||||
waypoint5.Location
|
||||
}
|
||||
|
||||
FootPatrol5Squad = { RocketSoldier2, RocketSoldier3, RocketSoldier4 }
|
||||
FootPatrol5Route = {
|
||||
waypoint4.Location,
|
||||
waypoint12.Location,
|
||||
waypoint13.Location,
|
||||
waypoint8.Location,
|
||||
waypoint9.Location,
|
||||
}
|
||||
|
||||
Buggy1Route = {
|
||||
waypoint6.Location,
|
||||
waypoint7.Location,
|
||||
waypoint2.Location,
|
||||
waypoint8.Location,
|
||||
waypoint9.Location,
|
||||
waypoint8.Location,
|
||||
waypoint2.Location,
|
||||
waypoint7.Location
|
||||
}
|
||||
|
||||
Buggy2Route = {
|
||||
waypoint6.Location,
|
||||
waypoint10.Location,
|
||||
waypoint11.Location,
|
||||
waypoint10.Location
|
||||
}
|
||||
|
||||
HuntTriggerActivator = { SAM03, SAM04, SAM05, SAM06, LightTank1, LightTank2, LightTank3, Buggy1, Buggy2, Turret1, Turret2 }
|
||||
|
||||
AttackCellTriggerActivator = { CPos.New(57,26), CPos.New(56,26), CPos.New(57,25), CPos.New(56,25), CPos.New(57,24), CPos.New(56,24), CPos.New(57,23), CPos.New(56,23), CPos.New(57,22), CPos.New(56,22), CPos.New(57,21), CPos.New(56,21) }
|
||||
AttackUnits = { LightTank2, LightTank3 }
|
||||
|
||||
KillCounter = 0
|
||||
|
||||
WorldLoaded = function()
|
||||
player = Player.GetPlayer("GDI")
|
||||
enemy = Player.GetPlayer("Nod")
|
||||
civilian = Player.GetPlayer("Neutral")
|
||||
|
||||
Trigger.OnObjectiveAdded(player, function(p, id)
|
||||
Media.DisplayMessage(p.GetObjectiveDescription(id), "New " .. string.lower(p.GetObjectiveType(id)) .. " objective")
|
||||
end)
|
||||
Trigger.OnObjectiveCompleted(player, function(p, id)
|
||||
Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective completed")
|
||||
end)
|
||||
Trigger.OnObjectiveFailed(player, function(p, id)
|
||||
Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective failed")
|
||||
end)
|
||||
|
||||
Trigger.OnPlayerWon(player, function()
|
||||
Media.PlaySpeechNotification(player, "Win")
|
||||
end)
|
||||
|
||||
Trigger.OnPlayerLost(player, function()
|
||||
Media.PlaySpeechNotification(player, "Lose")
|
||||
end)
|
||||
|
||||
if Map.Difficulty == "Easy" then
|
||||
CommandoType = "rmbo.easy"
|
||||
KillCounterHuntThreshold = 30
|
||||
elseif Map.Difficulty == "Hard" then
|
||||
CommandoType = "rmbo.hard"
|
||||
KillCounterHuntThreshold = 15
|
||||
else
|
||||
CommandoType = "rmbo"
|
||||
KillCounterHuntThreshold = 20
|
||||
end
|
||||
|
||||
destroyObjective = player.AddPrimaryObjective("Destroy the Nod ********.")
|
||||
|
||||
Trigger.OnKilled(Airfield, function()
|
||||
player.MarkCompletedObjective(destroyObjective)
|
||||
end)
|
||||
|
||||
Utils.Do(NodBase, function(structure)
|
||||
Trigger.OnKilled(structure, function()
|
||||
player.MarkCompletedObjective(destroyObjective)
|
||||
end)
|
||||
end)
|
||||
|
||||
Trigger.OnAllKilled(IslandSamSites, function()
|
||||
TransportFlare = Actor.Create('flare', true, { Owner = player, Location = Flare.Location })
|
||||
Reinforcements.ReinforceWithTransport(player, 'tran', nil, { lstStart.Location, TransportRally.Location })
|
||||
end)
|
||||
|
||||
Trigger.OnKilled(CivFleeTrigger, function()
|
||||
if not Civilian.IsDead then
|
||||
Civilian.Move(CivHideOut.Location)
|
||||
end
|
||||
end)
|
||||
|
||||
Trigger.OnKilled(AttackTrigger2, function()
|
||||
Utils.Do(FlameSquad, function(unit)
|
||||
unit.Patrol(FlameSquadRoute, false)
|
||||
end)
|
||||
end)
|
||||
|
||||
Trigger.OnEnteredFootprint(AttackCellTriggerActivator, function(a, id)
|
||||
if a.Owner == player then
|
||||
Utils.Do(AttackUnits, function(unit)
|
||||
unit.AttackMove(waypoint10.Location)
|
||||
end)
|
||||
Trigger.RemoveFootprintTrigger(id)
|
||||
end
|
||||
end)
|
||||
|
||||
Utils.Do(HuntTriggerActivator, function(unit)
|
||||
Trigger.OnDamaged(unit, HuntTriggerFunction)
|
||||
end)
|
||||
|
||||
Trigger.AfterDelay(5, NodKillCounter)
|
||||
|
||||
Utils.Do(FootPatrol1Squad, function(unit)
|
||||
unit.Patrol(FootPatrol1Route, true)
|
||||
end)
|
||||
|
||||
Utils.Do(FootPatrol2Squad, function(unit)
|
||||
unit.Patrol(FootPatrol2Route, true, 50)
|
||||
end)
|
||||
|
||||
Utils.Do(FootPatrol3Squad, function(unit)
|
||||
unit.Patrol(FootPatrol3Route, true, 50)
|
||||
end)
|
||||
|
||||
Utils.Do(FootPatrol5Squad, function(unit)
|
||||
unit.Patrol(FootPatrol5Route, true, 50)
|
||||
end)
|
||||
|
||||
AttackTrigger2.Patrol(FootPatrol4Route, true, 25)
|
||||
LightTank1.Move(waypoint6.Location)
|
||||
Buggy1.Patrol(Buggy1Route, true, 25)
|
||||
Buggy2.Patrol(Buggy2Route, true, 25)
|
||||
|
||||
Camera.Position = UnitsRally.CenterPosition
|
||||
Reinforce({ CommandoType })
|
||||
end
|
||||
|
||||
Tick = function()
|
||||
if DateTime.GameTime > DateTime.Seconds(5) and player.HasNoRequiredUnits() then
|
||||
player.MarkFailedObjective(destroyObjective)
|
||||
end
|
||||
end
|
||||
|
||||
Reinforce = function(units)
|
||||
Media.PlaySpeechNotification(player, "Reinforce")
|
||||
ReinforceWithLandingCraft(units, lstStart.Location, lstEnd.Location, UnitsRally.Location)
|
||||
end
|
||||
|
||||
ReinforceWithLandingCraft = function(units, transportStart, transportUnload, rallypoint)
|
||||
local transport = Actor.Create("oldlst", true, { Owner = player, Facing = 0, Location = transportStart })
|
||||
local subcell = 0
|
||||
Utils.Do(units, function(a)
|
||||
transport.LoadPassenger(Actor.Create(a, false, { Owner = transport.Owner, Facing = transport.Facing, Location = transportUnload, SubCell = subcell }))
|
||||
subcell = subcell + 1
|
||||
end)
|
||||
|
||||
transport.ScriptedMove(transportUnload)
|
||||
|
||||
transport.CallFunc(function()
|
||||
Utils.Do(units, function()
|
||||
local a = transport.UnloadPassenger()
|
||||
a.IsInWorld = true
|
||||
a.MoveIntoWorld(transport.Location - CVec.New(0, 1))
|
||||
|
||||
if rallypoint ~= nil then
|
||||
a.Move(rallypoint)
|
||||
end
|
||||
end)
|
||||
end)
|
||||
|
||||
transport.Wait(5)
|
||||
transport.ScriptedMove(transportStart)
|
||||
transport.Destroy()
|
||||
end
|
||||
|
||||
NodKillCounter = function()
|
||||
local enemyUnits = enemy.GetGroundAttackers()
|
||||
Utils.Do(enemyUnits, function(unit)
|
||||
Trigger.OnKilled(unit, function()
|
||||
KillCounter = KillCounter + 1
|
||||
if KillCounter >= KillCounterHuntThreshold then
|
||||
HuntTriggerFunction()
|
||||
end
|
||||
end)
|
||||
end)
|
||||
end
|
||||
|
||||
HuntTriggerFunction = function()
|
||||
local list = enemy.GetGroundAttackers()
|
||||
Utils.Do(list, function(unit)
|
||||
IdleHunt(unit)
|
||||
end)
|
||||
end
|
||||
|
||||
IdleHunt = function(unit)
|
||||
if not unit.IsDead then
|
||||
Trigger.OnIdle(unit, unit.Hunt)
|
||||
end
|
||||
end
|
||||
BIN
mods/cnc/maps/gdi06/map.bin
Normal file
BIN
mods/cnc/maps/gdi06/map.bin
Normal file
Binary file not shown.
BIN
mods/cnc/maps/gdi06/map.png
Normal file
BIN
mods/cnc/maps/gdi06/map.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 44 KiB |
1170
mods/cnc/maps/gdi06/map.yaml
Normal file
1170
mods/cnc/maps/gdi06/map.yaml
Normal file
File diff suppressed because it is too large
Load Diff
BIN
mods/cnc/maps/gdi06/rain-ambient.aud
Normal file
BIN
mods/cnc/maps/gdi06/rain-ambient.aud
Normal file
Binary file not shown.
@@ -7,6 +7,7 @@ GDI Campaign:
|
||||
./mods/cnc/maps/gdi04c
|
||||
./mods/cnc/maps/gdi05a
|
||||
./mods/cnc/maps/gdi05b
|
||||
./mods/cnc/maps/gdi06
|
||||
|
||||
Nod Campaign:
|
||||
./mods/cnc/maps/nod01
|
||||
|
||||
Reference in New Issue
Block a user