Add soviet-02b

This commit is contained in:
Biofreak1987
2015-10-11 20:33:41 +02:00
parent f4d937094d
commit dc90a35aa0
6 changed files with 857 additions and 0 deletions

View File

@@ -57,6 +57,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Red Alert Lua scripts", "Re
mods\ra\maps\allies-05a\allies05a-AI.lua = mods\ra\maps\allies-05a\allies05a-AI.lua
mods\ra\maps\soviet-01\soviet01.lua = mods\ra\maps\soviet-01\soviet01.lua
mods\ra\maps\soviet-02a\soviet02a.lua = mods\ra\maps\soviet-02a\soviet02a.lua
mods\ra\maps\soviet-02b\soviet02b.lua = mods\ra\maps\soviet-02b\soviet02b.lua
mods\ra\maps\soviet-03\soviet03.lua = mods\ra\maps\soviet-03\soviet03.lua
mods\ra\maps\soviet-04a\soviet04a.lua = mods\ra\maps\soviet-04a\soviet04a.lua
mods\ra\maps\soviet-04a\soviet04a-AI.lua = mods\ra\maps\soviet-04a\soviet04a-AI.lua

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

View File

@@ -0,0 +1,681 @@
MapFormat: 7
RequiresMod: ra
Title: Soviet 02b: The thin red line
Description: Tomorrow, the attack on Germany begins, but today, we must protect our facility from Allied attacks.\n\nKeep the Command Center intact at all costs, and destroy any Allied fortification you might find.
Author: Westwood Studios
Tileset: TEMPERAT
MapSize: 128,128
Bounds: 36,52,54,35
Visibility: MissionSelector
Type: Campaign
Videos:
Briefing: soviet2.vqa
GameStart: spotter.vqa
GameWon: sovtstar.vqa
GameLost: sovcemet.vqa
Options:
Crates: False
Fog: True
Shroud: True
AllyBuildRadius: False
FragileAlliances: False
StartingCash: 5000
ConfigurableStartingUnits: False
ShortGame: False
Players:
PlayerReference@Neutral:
Name: Neutral
OwnsWorld: True
NonCombatant: True
Faction: allies
PlayerReference@Creeps:
Name: Creeps
NonCombatant: True
PlayerReference@Germany:
Name: Germany
Faction: allies
ColorRamp: 161,134,236
Enemies: USSR
PlayerReference@USSR:
Name: USSR
AllowBots: False
Playable: True
Required: True
LockFaction: True
Faction: soviet
LockColor: True
ColorRamp: 3,255,127
LockSpawn: True
LockTeam: True
Enemies: Germany, Creeps
Actors:
Actor0: sbag
Location: 53,52
Owner: Germany
Actor1: sbag
Location: 54,52
Owner: Germany
Actor2: sbag
Location: 53,53
Owner: Neutral
Actor3: sbag
Location: 54,53
Owner: Germany
Actor4: sbag
Location: 53,56
Owner: Germany
Actor5: sbag
Location: 54,56
Owner: Germany
Actor6: sbag
Location: 53,57
Owner: Germany
Actor7: sbag
Location: 54,57
Owner: Germany
Actor8: sbag
Location: 81,68
Owner: Germany
Actor9: sbag
Location: 83,68
Owner: Germany
Actor10: sbag
Location: 87,68
Owner: Germany
Actor11: sbag
Location: 89,68
Owner: Germany
Actor12: sbag
Location: 81,69
Owner: Germany
Actor13: sbag
Location: 82,69
Owner: Germany
Actor14: sbag
Location: 83,69
Owner: Germany
Actor15: sbag
Location: 87,69
Owner: Germany
Actor16: sbag
Location: 88,69
Owner: Germany
Actor17: sbag
Location: 89,69
Owner: Germany
Actor18: v14
Location: 87,84
Owner: Neutral
Actor19: v15
Location: 88,84
Owner: Neutral
Actor20: v16
Location: 86,85
Owner: Neutral
Actor21: v17
Location: 87,85
Owner: Neutral
Actor22: v18
Location: 88,85
Owner: Neutral
Actor23: tc05
Location: 75,63
Owner: Neutral
Actor24: tc02
Location: 82,58
Owner: Neutral
Actor25: tc01
Location: 85,57
Owner: Neutral
Actor26: t07
Location: 83,60
Owner: Neutral
Actor27: tc04
Location: 36,55
Owner: Neutral
Actor28: tc05
Location: 41,52
Owner: Neutral
Actor29: t01
Location: 73,62
Owner: Neutral
Actor30: tc01
Location: 64,63
Owner: Neutral
Actor31: t06
Location: 69,62
Owner: Neutral
Actor32: t07
Location: 67,63
Owner: Neutral
Actor33: tc02
Location: 73,57
Owner: Neutral
Actor34: t07
Location: 74,55
Owner: Neutral
Actor35: tc05
Location: 61,60
Owner: Neutral
Actor36: tc01
Location: 69,72
Owner: Neutral
Actor37: tc05
Location: 36,81
Owner: Neutral
Actor38: tc02
Location: 43,85
Owner: Neutral
Actor39: tc01
Location: 47,85
Owner: Neutral
Actor40: tc01
Location: 39,84
Owner: Neutral
Actor41: tc04
Location: 51,65
Owner: Neutral
Actor42: tc05
Location: 47,66
Owner: Neutral
Actor43: tc02
Location: 88,65
Owner: Neutral
Actor44: tc04
Location: 79,84
Owner: Neutral
Actor45: tc04
Location: 66,72
Owner: Neutral
Actor46: weap
Location: 84,59
Owner: Germany
Actor47: dome
Location: 72,55
Owner: Germany
Actor50: fact
Location: 75,55
Owner: Germany
Actor51: proc
Location: 80,59
Owner: Germany
FreeActor: False
Actor52: powr
Location: 83,55
Owner: Germany
Actor53: powr
Location: 85,55
Owner: Germany
Actor54: brl3
Location: 69,64
Owner: Creeps
Actor55: brl3
Location: 68,65
Owner: Creeps
Actor57: barl
Location: 73,64
Owner: Creeps
Actor58: barl
Location: 72,63
Owner: Creeps
Actor59: barl
Location: 70,63
Owner: Creeps
Actor61: brl3
Location: 70,56
Owner: Creeps
Actor62: brl3
Location: 71,56
Owner: Creeps
Actor63: brl3
Location: 70,55
Owner: Creeps
Actor64: barl
Location: 69,54
Owner: Creeps
Actor65: brl3
Location: 68,54
Owner: Creeps
Actor66: barl
Location: 67,53
Owner: Creeps
Actor68: v03
Location: 81,85
Owner: Creeps
Actor69: v06
Location: 87,83
Owner: Creeps
Actor70: fact
Location: 41,76
Owner: USSR
Actor71: powr
Location: 46,80
Owner: USSR
Actor72: powr
Location: 49,80
Owner: USSR
Actor73: powr
Location: 43,80
Owner: USSR
Actor75: afld
Location: 45,77
Owner: USSR
Actor76: afld
Location: 49,77
Owner: USSR
Actor78: brl3
Location: 82,70
Owner: Germany
Actor79: brl3
Location: 83,70
Owner: Germany
Actor80: brl3
Location: 88,70
Owner: Germany
Actor81: barl
Location: 87,70
Owner: Germany
Actor82: barl
Location: 84,69
Owner: Germany
Actor83: tent
Location: 70,57
Owner: Germany
Actor84: barl
Location: 74,55
Owner: Creeps
Actor85: powr
Location: 52,80
Owner: USSR
Actor86: jeep
Location: 85,66
Owner: Germany
Health: 55
Facing: 128
Actor89: jeep
Location: 55,56
Owner: Germany
Health: 59
Facing: 224
Actor90: jeep
Location: 79,54
Owner: Germany
Facing: 128
Actor92: e1
Location: 47,75
Owner: USSR
Facing: 64
SubCell: 4
Actor93: e1
Location: 48,75
Owner: USSR
Facing: 64
SubCell: 3
Actor94: e1
Location: 47,76
Owner: USSR
Facing: 64
SubCell: 2
Actor95: e1
Location: 48,76
Owner: USSR
Facing: 64
SubCell: 1
Actor96: dog
Location: 49,73
Owner: USSR
Facing: 64
SubCell: 3
Actor97: dog
Location: 49,76
Owner: USSR
Facing: 64
SubCell: 1
Actor98: dog
Location: 49,75
Owner: USSR
Facing: 64
SubCell: 3
Actor99: dog
Location: 49,74
Owner: USSR
Facing: 64
SubCell: 1
Actor100: e3
Location: 88,68
Owner: Germany
Facing: 160
SubCell: 3
Actor103: e1
Location: 79,64
Owner: Germany
Facing: 96
SubCell: 3
Actor104: e1
Location: 79,64
Owner: Germany
Facing: 96
SubCell: 4
Actor105: e3
Location: 78,57
Owner: Germany
Facing: 160
SubCell: 4
Actor106: e2
Location: 47,73
Owner: USSR
Facing: 64
SubCell: 4
Actor107: e2
Location: 47,74
Owner: USSR
Facing: 64
SubCell: 2
Actor108: e2
Location: 48,74
Owner: USSR
Facing: 64
SubCell: 1
Actor109: e2
Location: 48,73
Owner: USSR
Facing: 64
SubCell: 3
Actor110: e1
Location: 72,61
Owner: Germany
Facing: 160
SubCell: 0
Actor111: e1
Location: 40,54
Owner: Germany
Facing: 96
SubCell: 0
Actor112: e1
Location: 83,85
Owner: Germany
Facing: 224
SubCell: 3
Actor113: e1
Location: 82,68
Owner: Germany
Facing: 96
SubCell: 4
Actor114: e1
Location: 69,55
Owner: Germany
Facing: 160
SubCell: 0
BarrelBase: brl3
Location: 71,55
Owner: Creeps
BarrelBridge: brl3
Location: 72,65
Owner: Creeps
BridgeCheck1: waypoint
Owner: Neutral
Location: 60,60
BridgeCheck2: waypoint
Owner: Neutral
Location: 80,75
CameraStart: Camera
Location: 60,77
Owner: Neutral
CameraBridge: Camera
Location: 69,67
Owner: Neutral
CameraBase1: Camera
Location: 70,56
Owner: Neutral
CameraBase2: Camera
Location: 82,58
Owner: Neutral
CameraBaseEntrance: Camera
Location: 85,67
Owner: Neutral
Church1: v01
Location: 67,73
Owner: Creeps
Church2: v01
Location: 86,81
Owner: Creeps
ForwardCommand: fcom
Location: 45,73
Owner: USSR
BridgeGun1: gun
Location: 68,64
Owner: Germany
Health: 56
Facing: 160
BridgeGun2: gun
Location: 74,64
Owner: Germany
Health: 53
Facing: 160
IntroSoldier1: e1
Location: 71,65
Owner: Germany
Facing: 160
SubCell: 3
IntroSoldier2: e1
Location: 71,60
Owner: Germany
Facing: 128
SubCell: 3
IntroSoldier3: e1
Location: 70,60
Owner: Germany
Facing: 128
SubCell: 4
ParachuteBase1: waypoint
Location: 66,54
Owner: Neutral
ParachuteBase2: waypoint
Location: 66,56
Owner: Neutral
ParachuteBaseEntrance: waypoint
Location: 85,68
Owner: Neutral
TransportTruck: truk
Location: 75,58
Owner: Germany
Facing: 192
TransportWaypoint1: waypoint
Location: 75,58
Owner: Neutral
TransportWaypoint2: waypoint
Location: 86,83
Owner: Neutral
TransportWaypoint3: waypoint
Location: 67,75
Owner: Neutral
Smudges:
Rules:
Player:
-ConquestVictoryConditions:
MissionObjectives:
EarlyGameOver: true
-EnemyWatcher:
World:
-CrateSpawner:
-SpawnMPUnits:
-MPStartLocations:
LuaScript:
Scripts: soviet02b.lua
ObjectivesPanel:
PanelName: MISSION_OBJECTIVES
^Building:
Tooltip:
GenericVisibility: Enemy
ShowOwnerRow: false
^Infantry:
Tooltip:
GenericVisibility: Enemy
ShowOwnerRow: false
^Vehicle:
Tooltip:
GenericVisibility: Enemy
ShowOwnerRow: false
^Plane:
Tooltip:
GenericVisibility: Enemy
ShowOwnerRow: false
^Wall:
Tooltip:
ShowOwnerRow: false
^Crate:
Tooltip:
ShowOwnerRow: false
^Husk:
Tooltip:
GenericVisibility: Enemy, Ally, Neutral
GenericStancePrefix: false
ShowOwnerRow: false
SPEN:
Buildable:
Prerequisites: ~disabled
DOME:
Buildable:
Prerequisites: ~disabled
WEAP:
Buildable:
Prerequisites: ~disabled
FIX:
Buildable:
Prerequisites: ~disabled
APWR:
Buildable:
Prerequisites: ~disabled
STEK:
Buildable:
Prerequisites: ~disabled
BRIK:
Buildable:
Prerequisites: ~disabled
TSLA:
Buildable:
Prerequisites: ~disabled
SAM:
Buildable:
Prerequisites: ~disabled
IRON:
Buildable:
Prerequisites: ~disabled
MSLO:
Buildable:
Prerequisites: ~disabled
E3:
Buildable:
Prerequisites: ~disabled
E4:
Buildable:
Prerequisites: ~disabled
E6:
Buildable:
Prerequisites: ~disabled
SHOK:
Buildable:
Prerequisites: ~disabled
SNIPER:
Buildable:
Prerequisites: ~disabled
HIJACKER:
Buildable:
Prerequisites: ~disabled
MIG:
Buildable:
Prerequisites: ~disabled
GUN:
-RepairableBuilding:
FCOM:
RepairableBuilding:
Tooltip:
ShowOwnerRow: false
AFLD:
Buildable:
Prerequisites: ~disabled
AirstrikePower@spyplane:
Prerequisites: ~disabled
ParatroopersPower@paratroopers:
Prerequisites: ~disabled
DOG:
Health:
HP: 25
AutoTarget:
ScanRadius: 5
HARV:
Harvester:
SearchFromProcRadius: 50
SearchFromOrderRadius: 50
BARL:
Health:
HP: 1
Explodes:
Weapon: MissionBarrelExplode
BRL3:
Health:
HP: 1
Explodes:
Weapon: MissionBarrelExplode
MONEYCRATE:
GiveCashCrateAction:
Amount: 2000
powerproxy.paratroopers:
ParatroopersPower:
DropItems: E1,E1,E2,E2,E2
powerproxy.paratroopers2:
Inherits: powerproxy.paratroopers
ParatroopersPower:
DropItems: E2,E2,E2,E2,E2
powerproxy.paratroopers3:
Inherits: powerproxy.paratroopers
ParatroopersPower:
DropItems: E1,E1,E1,E1,E1
Sequences:
VoxelSequences:
Weapons:
MissionBarrelExplode:
Warhead@1Dam: SpreadDamage
Spread: 600
Damage: 100
Falloff: 1000, 368, 135, 50, 18, 7, 0
Delay: 5
Versus:
None: 120
Wood: 200
Light: 50
Heavy: 25
Concrete: 10
DamageTypes: Prone50Percent, TriggerProne, ExplosionDeath
Warhead@2Smu: LeaveSmudge
SmudgeType: Scorch
Size: 2,1
Delay: 5
Warhead@3Eff: CreateEffect
Explosion: napalm
ImpactSound: firebl3.aud
Delay: 5
Voices:
Notifications:
Translations:

View File

@@ -0,0 +1,174 @@
IntroAttackers = { IntroSoldier1, IntroSoldier2, IntroSoldier3 }
BridgeShroudTrigger = { CPos.New(63, 71), CPos.New(64, 71), CPos.New(65, 71), CPos.New(69, 65), CPos.New(70, 65), CPos.New(71, 65) }
BridgeExplosionTrigger = { CPos.New(66, 69), CPos.New(67, 69), CPos.New(68, 69) }
TransportTrigger = { CPos.New(75, 58) }
EnemyBaseShroudTrigger = { CPos.New(64, 52), CPos.New(64, 53), CPos.New(64, 54), CPos.New(64, 55), CPos.New(64, 56), CPos.New(64, 57), CPos.New(64, 58), CPos.New(64, 59), CPos.New(64, 60), CPos.New(64, 61), CPos.New(64, 62), CPos.New(64, 63), CPos.New(64, 64) }
ParachuteTrigger = { CPos.New(80, 66), CPos.New(81, 66), CPos.New(82, 66), CPos.New(83, 66), CPos.New(84, 66), CPos.New(85, 66),CPos.New(86, 66), CPos.New(87, 66), CPos.New(88, 66), CPos.New(89, 66) }
EnemyBaseEntranceShroudTrigger = { CPos.New(80, 73), CPos.New(81, 73), CPos.New(82, 73), CPos.New(83, 73), CPos.New(84, 73), CPos.New(85, 73),CPos.New(86, 73), CPos.New(87, 73), CPos.New(88, 73), CPos.New(89, 73) }
SendUSSRParadrops = function()
paraproxy1 = Actor.Create("powerproxy.paratroopers", false, { Owner = player })
paraproxy1.SendParatroopers(ParachuteBaseEntrance.CenterPosition, false, Facing.North)
paraproxy1.Destroy()
end
SendUSSRParadropsBase = function()
paraproxy2 = Actor.Create("powerproxy.paratroopers2", false, { Owner = player })
paraproxy2.SendParatroopers(ParachuteBase1.CenterPosition, false, Facing.East)
paraproxy2.Destroy()
paraproxy3 = Actor.Create("powerproxy.paratroopers3", false, { Owner = player })
paraproxy3.SendParatroopers(ParachuteBase2.CenterPosition, false, Facing.East)
paraproxy3.Destroy()
end
Trigger.OnEnteredFootprint(BridgeShroudTrigger, function(a, id)
if not bridgeShroudTrigger and a.Owner == player then
bridgeShroudTrigger = true
local cameraBridge = Actor.Create("camera", true, { Owner = player, Location = CameraBridge.Location })
Trigger.AfterDelay(DateTime.Seconds(15), function()
cameraBridge.Kill()
end)
end
end)
Trigger.OnEnteredFootprint(BridgeExplosionTrigger, function(a, id)
if not bridgeExplosionTrigger and a.Owner == player then
bridgeExplosionTrigger = true
if not BarrelBridge.IsDead then
BarrelBridge.Kill()
end
end
end)
Trigger.OnEnteredFootprint(EnemyBaseEntranceShroudTrigger, function(a, id)
if not enemyBaseEntranceShroudTrigger and a.Owner == player then
enemyBaseEntranceShroudTrigger = true
local cameraBaseEntrance = Actor.Create("camera", true, { Owner = player, Location = CameraBaseEntrance.Location })
Trigger.AfterDelay(DateTime.Seconds(15), function()
cameraBaseEntrance.Kill()
end)
end
end)
Trigger.OnEnteredFootprint(EnemyBaseShroudTrigger, function(a, id)
if not enemyBaseShroudTrigger and a.Owner == player then
enemyBaseShroudTrigger = true
local cameraBase1 = Actor.Create("camera", true, { Owner = player, Location = CameraBase1.Location })
local cameraBase2 = Actor.Create("camera", true, { Owner = player, Location = CameraBase2.Location })
Trigger.AfterDelay(DateTime.Seconds(15), function()
cameraBase1.Kill()
cameraBase2.Kill()
end)
end
end)
Trigger.OnEnteredFootprint(ParachuteTrigger, function(a, id)
if not parachuteTrigger and a.Owner == player then
parachuteTrigger = true
SendUSSRParadrops()
Media.PlaySpeechNotification(player, "ReinforcementsArrived")
end
end)
Trigger.OnEnteredFootprint(TransportTrigger, function(a, id)
if not transportTrigger and a.Type == "truk" then
transportTrigger = true
if not TransportTruck.IsDead then
TransportTruck.Wait(DateTime.Seconds(5))
TransportTruck.Move(TransportWaypoint2.Location)
TransportTruck.Wait(DateTime.Seconds(5))
TransportTruck.Move(TransportWaypoint3.Location)
TransportTruck.Wait(DateTime.Seconds(5))
TransportTruck.Move(TransportWaypoint1.Location)
end
Trigger.AfterDelay(DateTime.Seconds(10), function()
transportTrigger = false
end)
end
end)
Trigger.OnKilled(BarrelBase, function()
SendUSSRParadropsBase()
Media.PlaySpeechNotification(player, "ReinforcementsArrived")
end)
Trigger.OnKilled(BarrelBridge, function()
local bridgepart = Map.ActorsInBox(BridgeCheck1.CenterPosition, BridgeCheck2.CenterPosition, function(self) return self.Type == "br1" end)[1]
if not bridgepart.IsDead then
bridgepart.Kill()
end
end)
Trigger.OnKilled(Church1, function()
Actor.Create("moneycrate", true, { Owner = player, Location = TransportWaypoint3.Location })
end)
Trigger.OnKilled(Church2, function()
Actor.Create("healcrate", true, { Owner = player, Location = Church2.Location })
end)
Trigger.OnKilled(ForwardCommand, function()
enemy.MarkCompletedObjective(alliedObjective)
end)
Trigger.OnKilled(IntroSoldier1, function()
local cameraIntro = Actor.Create("camera", true, { Owner = player, Location = CameraStart.Location })
Trigger.AfterDelay(DateTime.Seconds(15), function()
cameraIntro.Kill()
end)
end)
WorldLoaded = function()
player = Player.GetPlayer("USSR")
enemy = Player.GetPlayer("Germany")
Utils.Do(IntroAttackers, function(actor)
if not actor.IsDead then
Trigger.OnIdle(actor, actor.Hunt)
end
end)
Trigger.AfterDelay(0, function()
local buildings = Map.ActorsInBox(Map.TopLeft, Map.BottomRight, function(self) return self.Owner == enemy and self.HasProperty("StartBuildingRepairs") end)
Utils.Do(buildings, function(actor)
Trigger.OnDamaged(actor, function(building, attacker)
if building.Owner == enemy and building.Health < building.MaxHealth * 0.8 then
building.StartBuildingRepairs()
end
end)
end)
end)
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)
alliedObjective = enemy.AddPrimaryObjective("Destroy all Soviet troops.")
sovietObjective1 = player.AddPrimaryObjective("Protect the Command Center.")
sovietObjective2 = player.AddPrimaryObjective("Destroy all Allied units and structures.")
end
Tick = function()
if player.HasNoRequiredUnits() then
enemy.MarkCompletedObjective(alliedObjective)
end
if enemy.HasNoRequiredUnits() then
player.MarkCompletedObjective(sovietObjective1)
player.MarkCompletedObjective(sovietObjective2)
end
if enemy.Resources >= enemy.ResourceCapacity * 0.75 then
enemy.Cash = enemy.Cash + enemy.Resources - enemy.ResourceCapacity * 0.25
enemy.Resources = enemy.ResourceCapacity * 0.25
end
end

View File

@@ -7,6 +7,7 @@ Allied Campaign:
Soviet Campaign:
./mods/ra/maps/soviet-01
./mods/ra/maps/soviet-02a
./mods/ra/maps/soviet-02b
./mods/ra/maps/soviet-03
./mods/ra/maps/soviet-04a
./mods/ra/maps/soviet-04b