Fort LoneStar Fixes/Changes
Added: -Game-play Balance changes -Greater Difficulty -Added Boss(es)
This commit is contained in:
@@ -35,23 +35,23 @@ namespace OpenRA.Mods.RA.Missions
|
|||||||
Actor paradrop2;
|
Actor paradrop2;
|
||||||
Actor paradrop3;
|
Actor paradrop3;
|
||||||
Actor paradrop4;
|
Actor paradrop4;
|
||||||
|
Actor patrol1;
|
||||||
Actor baseA;
|
Actor patrol2;
|
||||||
Actor baseB;
|
Actor patrol3;
|
||||||
|
Actor patrol4;
|
||||||
World world;
|
World world;
|
||||||
|
|
||||||
int WaveNumber = 0;
|
int WaveNumber = 0;
|
||||||
InfoWidget evacuateWidget;
|
InfoWidget evacuateWidget;
|
||||||
const string ShortEvacuateTemplate = "Wave {0}";
|
const string ShortEvacuateTemplate = "Wave {0}";
|
||||||
static readonly string[] PatrolA = { "e1", "e2", "e1" };
|
static readonly string[] Patrol = { "e1", "e2", "e1" };
|
||||||
static readonly string[] Infantry = { "e4", "e1", "e1", "e2", "e1", "e2" };
|
static readonly string[] Infantry = { "e4", "e1", "e1", "e2", "e1", "e2" };
|
||||||
static readonly string[] InfantryAdvanced = { "e4", "e1", "e1", "shok", "e1", "e2", "e4" };
|
static readonly string[] Vehicles = { "arty", "ftrk", "ftrk", "apc", "apc", };
|
||||||
static readonly string[] Vehicles = { "arty", "ftrk", "ftrk", "jeep", "jeep", "jeep", "apc", "apc", };
|
const string tank = "3tnk";
|
||||||
static readonly string[] Volkov = { "e8" };
|
const string v2 = "v2rl";
|
||||||
const string boss = "4tnk";
|
const string boss = "4tnk";
|
||||||
|
|
||||||
const int TimerTicks = 1;
|
const int TimerTicks = 1;
|
||||||
const int PatrolTicks = 1500;
|
|
||||||
|
|
||||||
int AttackSquad = 6;
|
int AttackSquad = 6;
|
||||||
int AttackSquadCount = 1;
|
int AttackSquadCount = 1;
|
||||||
@@ -87,14 +87,16 @@ namespace OpenRA.Mods.RA.Missions
|
|||||||
{
|
{
|
||||||
for (int i = 1; i <= VehicleSquadCount; i++)
|
for (int i = 1; i <= VehicleSquadCount; i++)
|
||||||
{
|
{
|
||||||
var enemies = world.Actors.Where(u => u.IsInWorld && !u.IsDead() && (u.Owner == soviets)
|
|
||||||
&& !u.HasTrait<Mobile>());
|
|
||||||
var route = world.SharedRandom.Next(sovietEntryPoints.Length);
|
var route = world.SharedRandom.Next(sovietEntryPoints.Length);
|
||||||
var spawnPoint = sovietEntryPoints[route];
|
var spawnPoint = sovietEntryPoints[route];
|
||||||
for (int r = 1; r <= VehicleSquad; r++)
|
for (int r = 1; r <= VehicleSquad; r++)
|
||||||
{
|
{
|
||||||
var squad = world.CreateActor(Vehicles.Random(world.SharedRandom),
|
var squad = world.CreateActor(Vehicles.Random(world.SharedRandom),
|
||||||
new TypeDictionary { new LocationInit(spawnPoint), new OwnerInit(soviets) });
|
new TypeDictionary
|
||||||
|
{
|
||||||
|
new LocationInit(spawnPoint),
|
||||||
|
new OwnerInit(soviets)
|
||||||
|
});
|
||||||
squad.QueueActivity(new AttackMove.AttackMoveActivity(squad, new Move.Move(paradrop1.Location, 3)));
|
squad.QueueActivity(new AttackMove.AttackMoveActivity(squad, new Move.Move(paradrop1.Location, 3)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -107,23 +109,18 @@ namespace OpenRA.Mods.RA.Missions
|
|||||||
{
|
{
|
||||||
for (int i = 1; i <= AttackSquadCount; i++)
|
for (int i = 1; i <= AttackSquadCount; i++)
|
||||||
{
|
{
|
||||||
var enemies = world.Actors.Where(u => u.IsInWorld && !u.IsDead() && (u.Owner == soviets)
|
world.Actors.Where(u => u.IsInWorld && !u.IsDead() && (u.Owner == soviets)
|
||||||
&& !u.HasTrait<Mobile>());
|
&& !u.HasTrait<Mobile>());
|
||||||
var route = world.SharedRandom.Next(sovietEntryPoints.Length);
|
var route = world.SharedRandom.Next(sovietEntryPoints.Length);
|
||||||
var spawnPoint = sovietEntryPoints[route];
|
var spawnPoint = sovietEntryPoints[route];
|
||||||
IEnumerable<string> units;
|
|
||||||
if (world.FrameNumber >= 1500 * 10)
|
|
||||||
{
|
|
||||||
units = InfantryAdvanced;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
units = Infantry;
|
|
||||||
}
|
|
||||||
for (int r = 1; r < AttackSquad; r++)
|
for (int r = 1; r < AttackSquad; r++)
|
||||||
{
|
{
|
||||||
var squad = world.CreateActor(Infantry.Random(world.SharedRandom),
|
var squad = world.CreateActor(Infantry.Random(world.SharedRandom),
|
||||||
new TypeDictionary { new LocationInit(spawnPoint), new OwnerInit(soviets) });
|
new TypeDictionary
|
||||||
|
{
|
||||||
|
new LocationInit(spawnPoint),
|
||||||
|
new OwnerInit(soviets)
|
||||||
|
});
|
||||||
squad.QueueActivity(new AttackMove.AttackMoveActivity(squad, new Move.Move(paradrop1.Location, 3)));
|
squad.QueueActivity(new AttackMove.AttackMoveActivity(squad, new Move.Move(paradrop1.Location, 3)));
|
||||||
var scatteredUnits = world.FindAliveCombatantActorsInCircle(Util.CenterOfCell(paradrop1.Location), 15)
|
var scatteredUnits = world.FindAliveCombatantActorsInCircle(Util.CenterOfCell(paradrop1.Location), 15)
|
||||||
.Where(unit => unit.IsIdle && unit.HasTrait<Mobile>() && unit.Owner == soviets);
|
.Where(unit => unit.IsIdle && unit.HasTrait<Mobile>() && unit.Owner == soviets);
|
||||||
@@ -136,75 +133,35 @@ namespace OpenRA.Mods.RA.Missions
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void SendPatrol()
|
void SendPatrol(string[] squad, Player owner, CPos location, CPos move)
|
||||||
{
|
{
|
||||||
if (SpawnPatrol == true)
|
if (SpawnPatrol)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < PatrolA.Length; i++)
|
for (int i = 0; i < squad.Length; i++)
|
||||||
{
|
{
|
||||||
var inf = world.CreateActor(PatrolA.Random(world.SharedRandom),
|
var actor = world.CreateActor(squad[i], new TypeDictionary
|
||||||
new TypeDictionary { new LocationInit(paradrop1.Location + new CVec(0, -10)), new OwnerInit(soviets) });
|
{
|
||||||
inf.QueueActivity(new AttackMove.AttackMoveActivity(inf, new Move.Move(paradrop1.Location + new CVec(0, 0))));
|
new OwnerInit(owner),
|
||||||
var units = world.FindAliveCombatantActorsInCircle(Util.CenterOfCell(paradrop1.Location), 20)
|
new LocationInit(location)
|
||||||
.Where(u => u.Owner == soviets);
|
});
|
||||||
foreach (var unit in units)
|
actor.QueueActivity(new AttackMove.AttackMoveActivity(actor, new Move.Move(move, 3)));
|
||||||
{
|
AttackNearestAlliedActor(actor);
|
||||||
AttackNearestAlliedActor(unit);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for (int i = 0; i < PatrolA.Length; i++)
|
|
||||||
{
|
|
||||||
var inf = world.CreateActor(PatrolA.Random(world.SharedRandom),
|
|
||||||
new TypeDictionary { new LocationInit(paradrop4.Location + new CVec(10, 0)), new OwnerInit(soviets) });
|
|
||||||
inf.QueueActivity(new AttackMove.AttackMoveActivity(inf, new Move.Move(paradrop4.Location + new CVec(0, 0))));
|
|
||||||
var units = world.FindAliveCombatantActorsInCircle(Util.CenterOfCell(paradrop1.Location), 20)
|
|
||||||
.Where(u => u.Owner == soviets);
|
|
||||||
foreach (var unit in units)
|
|
||||||
{
|
|
||||||
AttackNearestAlliedActor(unit);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for (int i = 0; i < PatrolA.Length; i++)
|
|
||||||
{
|
|
||||||
var inf = world.CreateActor(PatrolA.Random(world.SharedRandom),
|
|
||||||
new TypeDictionary { new LocationInit(paradrop3.Location + new CVec(0, 10)), new OwnerInit(soviets) });
|
|
||||||
inf.QueueActivity(new AttackMove.AttackMoveActivity(inf, new Move.Move(paradrop3.Location + new CVec(0, 0))));
|
|
||||||
var units = world.FindAliveCombatantActorsInCircle(Util.CenterOfCell(paradrop1.Location), 20)
|
|
||||||
.Where(u => u.Owner == soviets);
|
|
||||||
foreach (var unit in units)
|
|
||||||
{
|
|
||||||
AttackNearestAlliedActor(unit);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for (int i = 0; i < PatrolA.Length; i++)
|
|
||||||
{
|
|
||||||
var inf = world.CreateActor(PatrolA.Random(world.SharedRandom),
|
|
||||||
new TypeDictionary { new LocationInit(paradrop2.Location + new CVec(-10, 0)), new OwnerInit(soviets) });
|
|
||||||
inf.QueueActivity(new AttackMove.AttackMoveActivity(inf, new Move.Move(paradrop2.Location + new CVec(0, 0))));
|
|
||||||
var units = world.FindAliveCombatantActorsInCircle(Util.CenterOfCell(paradrop1.Location), 20)
|
|
||||||
.Where(u => u.Owner == soviets);
|
|
||||||
foreach (var unit in units)
|
|
||||||
{
|
|
||||||
AttackNearestAlliedActor(unit);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void SendVolkov()
|
void SendBoss(string unit)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < Volkov.Length; i++)
|
var route = world.SharedRandom.Next(sovietEntryPoints.Length);
|
||||||
|
var spawnPoint = sovietEntryPoints[route];
|
||||||
|
var actor = world.CreateActor(unit, new TypeDictionary
|
||||||
|
{
|
||||||
|
new OwnerInit(soviets),
|
||||||
|
new LocationInit(spawnPoint)
|
||||||
|
});
|
||||||
|
if (multi0 != null)
|
||||||
{
|
{
|
||||||
var route = world.SharedRandom.Next(sovietEntryPoints.Length);
|
AttackNearestAlliedActor(actor);
|
||||||
var spawnPoint = sovietEntryPoints[route];
|
|
||||||
var actor = world.CreateActor(Volkov[i], new TypeDictionary { new OwnerInit(soviets), new LocationInit(spawnPoint) });
|
|
||||||
actor.QueueActivity(new Move.Move(paradrop1.Location + new CVec(4, -11)));
|
|
||||||
var scatteredUnits = world.FindAliveCombatantActorsInCircle(Util.CenterOfCell(paradrop1.Location + new CVec(4, -11)), 4)
|
|
||||||
.Where(unit => unit.IsIdle && unit.HasTrait<Mobile>() && unit.Owner == soviets);
|
|
||||||
foreach (var unit in scatteredUnits)
|
|
||||||
{
|
|
||||||
AttackNearestAlliedActor(unit);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -213,23 +170,16 @@ namespace OpenRA.Mods.RA.Missions
|
|||||||
Game.AddChatLine(Color.Cyan, "Wave Sequence", text);
|
Game.AddChatLine(Color.Cyan, "Wave Sequence", text);
|
||||||
}
|
}
|
||||||
|
|
||||||
void FinalWave(string text)
|
|
||||||
{
|
|
||||||
Game.AddChatLine(Color.DarkRed, "Boss Wave Sequence Initializing", text);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Tick(Actor self)
|
public void Tick(Actor self)
|
||||||
{
|
{
|
||||||
var unitsAndBuildings = world.Actors.Where(a => !a.IsDead() && a.IsInWorld && (a.HasTrait<Mobile>() && a.HasTrait<IMove>()));
|
|
||||||
if (!unitsAndBuildings.Any(a => a.Owner == soviets))
|
|
||||||
{
|
|
||||||
MissionAccomplished("You and your mates have survived the onslaught!");
|
|
||||||
}
|
|
||||||
if (world.FrameNumber == patrolAttackFrame)
|
if (world.FrameNumber == patrolAttackFrame)
|
||||||
{
|
{
|
||||||
patrolAttackFrame += patrolattackAtFrameIncrement;
|
patrolAttackFrame += patrolattackAtFrameIncrement;
|
||||||
patrolattackAtFrameIncrement = Math.Max(patrolattackAtFrameIncrement - 5, 100);
|
patrolattackAtFrameIncrement = Math.Max(patrolattackAtFrameIncrement - 5, 100);
|
||||||
SendPatrol();
|
SendPatrol(Patrol, soviets, patrol1.Location, paradrop1.Location);
|
||||||
|
SendPatrol(Patrol, soviets, patrol2.Location, paradrop2.Location);
|
||||||
|
SendPatrol(Patrol, soviets, patrol3.Location, paradrop3.Location);
|
||||||
|
SendPatrol(Patrol, soviets, patrol4.Location, paradrop4.Location);
|
||||||
}
|
}
|
||||||
if (world.FrameNumber == WaveAttackFrame)
|
if (world.FrameNumber == WaveAttackFrame)
|
||||||
{
|
{
|
||||||
@@ -286,11 +236,11 @@ namespace OpenRA.Mods.RA.Missions
|
|||||||
Wave("Five Initializing");
|
Wave("Five Initializing");
|
||||||
UpdateWaveSequence();
|
UpdateWaveSequence();
|
||||||
AttackSquad = 10;
|
AttackSquad = 10;
|
||||||
SendVolkov();
|
|
||||||
VehicleSquad = 4;
|
VehicleSquad = 4;
|
||||||
VehicleSquadCount = 2;
|
VehicleSquadCount = 2;
|
||||||
|
SendBoss(tank);
|
||||||
}
|
}
|
||||||
if (world.FrameNumber == 1500 * 10)
|
if (world.FrameNumber == 1500 * 11)
|
||||||
{
|
{
|
||||||
WaveNumber++;
|
WaveNumber++;
|
||||||
Wave("Six Initializing");
|
Wave("Six Initializing");
|
||||||
@@ -301,8 +251,10 @@ namespace OpenRA.Mods.RA.Missions
|
|||||||
MissionUtils.Parabomb(world, soviets, entry4.Location, paradrop1.Location);
|
MissionUtils.Parabomb(world, soviets, entry4.Location, paradrop1.Location);
|
||||||
MissionUtils.Parabomb(world, soviets, entry6.Location, paradrop3.Location);
|
MissionUtils.Parabomb(world, soviets, entry6.Location, paradrop3.Location);
|
||||||
MissionUtils.Parabomb(world, soviets, entry5.Location, paradrop3.Location);
|
MissionUtils.Parabomb(world, soviets, entry5.Location, paradrop3.Location);
|
||||||
|
SendBoss(tank);
|
||||||
|
SendBoss(tank);
|
||||||
}
|
}
|
||||||
if (world.FrameNumber == 1500 * 12)
|
if (world.FrameNumber == 1500 * 14)
|
||||||
{
|
{
|
||||||
WaveNumber++;
|
WaveNumber++;
|
||||||
Wave("Seven Initializing");
|
Wave("Seven Initializing");
|
||||||
@@ -310,9 +262,9 @@ namespace OpenRA.Mods.RA.Missions
|
|||||||
AttackSquad = 12;
|
AttackSquad = 12;
|
||||||
VehicleSquad = 5;
|
VehicleSquad = 5;
|
||||||
VehicleSquadCount = 3;
|
VehicleSquadCount = 3;
|
||||||
SendVolkov();
|
SendBoss(v2);
|
||||||
}
|
}
|
||||||
if (world.FrameNumber == 1500 * 14)
|
if (world.FrameNumber == 1500 * 17)
|
||||||
{
|
{
|
||||||
SpawnVehicles = true;
|
SpawnVehicles = true;
|
||||||
WaveNumber++;
|
WaveNumber++;
|
||||||
@@ -326,8 +278,11 @@ namespace OpenRA.Mods.RA.Missions
|
|||||||
MissionUtils.Parabomb(world, soviets, entry5.Location, paradrop3.Location);
|
MissionUtils.Parabomb(world, soviets, entry5.Location, paradrop3.Location);
|
||||||
MissionUtils.Parabomb(world, soviets, entry2.Location, paradrop2.Location);
|
MissionUtils.Parabomb(world, soviets, entry2.Location, paradrop2.Location);
|
||||||
MissionUtils.Parabomb(world, soviets, entry3.Location, paradrop2.Location);
|
MissionUtils.Parabomb(world, soviets, entry3.Location, paradrop2.Location);
|
||||||
|
SendBoss(v2);
|
||||||
|
SendBoss(tank);
|
||||||
|
SendBoss(v2);
|
||||||
}
|
}
|
||||||
if (world.FrameNumber == 1500 * 16)
|
if (world.FrameNumber == 1500 * 21)
|
||||||
{
|
{
|
||||||
WaveNumber++;
|
WaveNumber++;
|
||||||
Wave("Nine Initializing");
|
Wave("Nine Initializing");
|
||||||
@@ -335,30 +290,36 @@ namespace OpenRA.Mods.RA.Missions
|
|||||||
AttackSquad = 14;
|
AttackSquad = 14;
|
||||||
VehicleSquad = 6;
|
VehicleSquad = 6;
|
||||||
VehicleSquadCount = 4;
|
VehicleSquadCount = 4;
|
||||||
SendVolkov();
|
SendBoss(v2);
|
||||||
|
SendBoss(tank);
|
||||||
|
SendBoss(tank);
|
||||||
}
|
}
|
||||||
if (world.FrameNumber == 1500 * 18)
|
if (world.FrameNumber == 1500 * 25)
|
||||||
{
|
{
|
||||||
WaveNumber++;
|
WaveNumber++;
|
||||||
Wave("Ten Initializing");
|
Wave("Ten Initializing");
|
||||||
UpdateWaveSequence();
|
UpdateWaveSequence();
|
||||||
AttackSquad = 15;
|
AttackSquad = 15;
|
||||||
AttackSquadCount = 6;
|
AttackSquadCount = 6;
|
||||||
MissionUtils.Parabomb(world, soviets, entry1.Location, paradrop1.Location + new CVec(0, -2));
|
for (int i = 0; i < 2; i++)
|
||||||
MissionUtils.Parabomb(world, soviets, entry2.Location, paradrop3.Location + new CVec(0, -2));
|
{
|
||||||
MissionUtils.Parabomb(world, soviets, entry4.Location, paradrop2.Location + new CVec(0, -2));
|
MissionUtils.Parabomb(world, soviets, entry1.Location, paradrop1.Location + new CVec(0, -2));
|
||||||
MissionUtils.Parabomb(world, soviets, entry5.Location, paradrop4.Location + new CVec(0, -2));
|
MissionUtils.Parabomb(world, soviets, entry2.Location, paradrop3.Location + new CVec(0, -2));
|
||||||
MissionUtils.Parabomb(world, soviets, entry2.Location, paradrop1.Location + new CVec(0, 2));
|
MissionUtils.Parabomb(world, soviets, entry4.Location, paradrop2.Location + new CVec(0, -2));
|
||||||
MissionUtils.Parabomb(world, soviets, entry4.Location, paradrop3.Location + new CVec(0, 2));
|
MissionUtils.Parabomb(world, soviets, entry5.Location, paradrop4.Location + new CVec(0, -2));
|
||||||
MissionUtils.Parabomb(world, soviets, entry3.Location, paradrop2.Location + new CVec(0, 2));
|
MissionUtils.Parabomb(world, soviets, entry2.Location, paradrop1.Location + new CVec(0, 2));
|
||||||
MissionUtils.Parabomb(world, soviets, entry5.Location, paradrop4.Location + new CVec(0, 2));
|
MissionUtils.Parabomb(world, soviets, entry4.Location, paradrop3.Location + new CVec(0, 2));
|
||||||
|
MissionUtils.Parabomb(world, soviets, entry3.Location, paradrop2.Location + new CVec(0, 2));
|
||||||
|
MissionUtils.Parabomb(world, soviets, entry5.Location, paradrop4.Location + new CVec(0, 2));
|
||||||
|
}
|
||||||
|
SendBoss(boss);
|
||||||
}
|
}
|
||||||
if (world.FrameNumber == 1500 * 19)
|
if (world.FrameNumber == 1500 * 30)
|
||||||
{
|
{
|
||||||
SpawnWave = false;
|
SpawnWave = false;
|
||||||
SpawnVehicles = false;
|
SpawnVehicles = false;
|
||||||
}
|
}
|
||||||
if (world.FrameNumber == 1500 * 20)
|
if (world.FrameNumber == 1500 * 31)
|
||||||
{
|
{
|
||||||
MissionAccomplished("You and your mates have Survived the Onslaught!");
|
MissionAccomplished("You and your mates have Survived the Onslaught!");
|
||||||
}
|
}
|
||||||
@@ -400,8 +361,10 @@ namespace OpenRA.Mods.RA.Missions
|
|||||||
paradrop2 = actors["Paradrop2"];
|
paradrop2 = actors["Paradrop2"];
|
||||||
paradrop3 = actors["Paradrop3"];
|
paradrop3 = actors["Paradrop3"];
|
||||||
paradrop4 = actors["Paradrop4"];
|
paradrop4 = actors["Paradrop4"];
|
||||||
baseA = actors["BaseA"];
|
patrol1 = actors["Patrol1"];
|
||||||
baseB = actors["BaseB"];
|
patrol2 = actors["Patrol2"];
|
||||||
|
patrol3 = actors["Patrol3"];
|
||||||
|
patrol4 = actors["Patrol4"];
|
||||||
MissionUtils.PlayMissionMusic();
|
MissionUtils.PlayMissionMusic();
|
||||||
Game.AddChatLine(Color.Cyan, "Mission", "Defend Fort LoneStar At All costs!");
|
Game.AddChatLine(Color.Cyan, "Mission", "Defend Fort LoneStar At All costs!");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ Players:
|
|||||||
PlayerReference@Soviets:
|
PlayerReference@Soviets:
|
||||||
Name: Soviets
|
Name: Soviets
|
||||||
Race: soviet
|
Race: soviet
|
||||||
ColorRamp: 0,255,128,10
|
ColorRamp: 0,255,128
|
||||||
Enemies: Multi0,Multi1,Multi2,Multi3
|
Enemies: Multi0,Multi1,Multi2,Multi3
|
||||||
|
|
||||||
Actors:
|
Actors:
|
||||||
@@ -392,32 +392,20 @@ Actors:
|
|||||||
Paradrop4: waypoint
|
Paradrop4: waypoint
|
||||||
Location: 36,32
|
Location: 36,32
|
||||||
Owner: Neutral
|
Owner: Neutral
|
||||||
Rally1: waypoint
|
Patrol3: waypoint
|
||||||
Location: 25,17
|
Location: 32,46
|
||||||
Owner: Neutral
|
Owner: Neutral
|
||||||
Rally2: waypoint
|
Patrol4: waypoint
|
||||||
Location: 38,17
|
Location: 46,32
|
||||||
Owner: Neutral
|
|
||||||
Rally3: waypoint
|
|
||||||
Location: 16,31
|
|
||||||
Owner: Neutral
|
|
||||||
Rally4: waypoint
|
|
||||||
Location: 24,47
|
|
||||||
Owner: Neutral
|
|
||||||
Rally5: waypoint
|
|
||||||
Location: 37,47
|
|
||||||
Owner: Neutral
|
|
||||||
Rally6: waypoint
|
|
||||||
Location: 47,32
|
|
||||||
Owner: Neutral
|
Owner: Neutral
|
||||||
Actor20: apwr
|
Actor20: apwr
|
||||||
Location: 37,4
|
Location: 37,4
|
||||||
Owner: Soviets
|
Owner: Soviets
|
||||||
BaseA: waypoint
|
Patrol2: waypoint
|
||||||
Location: 24,24
|
Location: 17,32
|
||||||
Owner: Neutral
|
Owner: Neutral
|
||||||
BaseB: waypoint
|
Patrol1: waypoint
|
||||||
Location: 40,40
|
Location: 32,18
|
||||||
Owner: Neutral
|
Owner: Neutral
|
||||||
Actor34: sniper
|
Actor34: sniper
|
||||||
Location: 9,26
|
Location: 9,26
|
||||||
@@ -741,41 +729,45 @@ Rules:
|
|||||||
Prerequisites: barr,oilb
|
Prerequisites: barr,oilb
|
||||||
Valued:
|
Valued:
|
||||||
Cost: 750
|
Cost: 750
|
||||||
E8:
|
3TNK:
|
||||||
Inherits: ^Infantry
|
Inherits: ^Tank
|
||||||
Buildable:
|
Buildable:
|
||||||
Queue: Infantry
|
Queue: Vehicle
|
||||||
BuildPaletteOrder: 110
|
BuildPaletteOrder: 40
|
||||||
Prerequisites: stek
|
Prerequisites: fix
|
||||||
Owner: None
|
Owner: soviet
|
||||||
|
Hotkey: h
|
||||||
Valued:
|
Valued:
|
||||||
Cost: 1800
|
Cost: 1150
|
||||||
Tooltip:
|
|
||||||
Name: Volkov
|
|
||||||
Description: Elite commando infantry, armed with \nmodular cannons and grenade launcher.\n Strong vs Vehicles, Infantry\n Weak vs Aircraft
|
|
||||||
Selectable:
|
|
||||||
Voice: VolkovVoice
|
|
||||||
Bounds: 12,17,0,-9
|
|
||||||
Health:
|
Health:
|
||||||
HP: 200
|
HP: 700
|
||||||
Armor:
|
Armor:
|
||||||
Type: Heavy
|
Type: Heavy
|
||||||
Mobile:
|
Mobile:
|
||||||
Speed: 5
|
Speed: 5
|
||||||
|
Crushes: wall, atmine, crate, infantry
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 7
|
Range: 7
|
||||||
Passenger:
|
Turreted:
|
||||||
PipType: Red
|
ROT: 5
|
||||||
AttackFrontal:
|
Armament:
|
||||||
PrimaryWeapon: VolkNapalm
|
Weapon: VolkNapalm
|
||||||
|
Recoil: 200
|
||||||
|
RecoilRecovery: 38
|
||||||
|
LocalOffset: 0,85,0, 0,-85,0
|
||||||
|
AttackTurreted:
|
||||||
|
RenderUnit:
|
||||||
|
WithTurret:
|
||||||
|
AutoTarget:
|
||||||
Explodes:
|
Explodes:
|
||||||
Weapon: UnitExplodeSmall
|
Weapon: UnitExplodeSmall
|
||||||
|
EmptyWeapon: UnitExplodeSmall
|
||||||
Chance: 100
|
Chance: 100
|
||||||
TakeCover:
|
LeavesHusk:
|
||||||
-RenderInfantry:
|
HuskActor: 3TNK.Husk
|
||||||
RenderInfantryProne:
|
Selectable:
|
||||||
IdleAnimations: idle1
|
Bounds: 30,30
|
||||||
-CrushableInfantry:
|
|
||||||
MECH:
|
MECH:
|
||||||
Buildable:
|
Buildable:
|
||||||
Owner: None
|
Owner: None
|
||||||
@@ -789,14 +781,32 @@ Rules:
|
|||||||
Buildable:
|
Buildable:
|
||||||
Owner: soviet,allies
|
Owner: soviet,allies
|
||||||
Prerequisites: barr,oilb
|
Prerequisites: barr,oilb
|
||||||
Valued:
|
|
||||||
Cost: 120
|
|
||||||
SNIPER:
|
|
||||||
Buildable:
|
|
||||||
Owner: allies,soviet
|
|
||||||
Prerequisites: barr,oilb
|
|
||||||
Valued:
|
Valued:
|
||||||
Cost: 150
|
Cost: 150
|
||||||
|
SNIPER:
|
||||||
|
Inherits: ^Infantry
|
||||||
|
Valued:
|
||||||
|
Cost: 300
|
||||||
|
Buildable:
|
||||||
|
Queue: Infantry
|
||||||
|
BuildPaletteOrder: 80
|
||||||
|
Owner: soviet
|
||||||
|
Prerequisites: barr,oilb
|
||||||
|
Hotkey: n
|
||||||
|
Selectable:
|
||||||
|
Bounds: 12,17,0,-6
|
||||||
|
Mobile:
|
||||||
|
Speed: 4
|
||||||
|
Health:
|
||||||
|
HP: 200
|
||||||
|
Passenger:
|
||||||
|
PipType: Red
|
||||||
|
RevealsShroud:
|
||||||
|
Range: 6
|
||||||
|
AutoTarget:
|
||||||
|
InitialStance: HoldFire
|
||||||
|
Armament:
|
||||||
|
Weapon: Sniper
|
||||||
SPY:
|
SPY:
|
||||||
Inherits: ^Infantry
|
Inherits: ^Infantry
|
||||||
Buildable:
|
Buildable:
|
||||||
@@ -806,9 +816,6 @@ Rules:
|
|||||||
Owner: allies, soviets
|
Owner: allies, soviets
|
||||||
Valued:
|
Valued:
|
||||||
Cost: 300
|
Cost: 300
|
||||||
SpyToolTip:
|
|
||||||
Name: Spy
|
|
||||||
Description: Infiltrates enemy structures to gather \nintelligence. Exact effect depends on the \nbuilding infiltrated.\n Strong vs Nothing\n Weak vs Everything\n Special Ability: Disguised
|
|
||||||
Selectable:
|
Selectable:
|
||||||
Voice: SpyVoice
|
Voice: SpyVoice
|
||||||
Bounds: 12,17,0,-9
|
Bounds: 12,17,0,-9
|
||||||
@@ -830,6 +837,56 @@ Rules:
|
|||||||
IdleAnimations: idle1,idle2
|
IdleAnimations: idle1,idle2
|
||||||
AttackFrontal:
|
AttackFrontal:
|
||||||
PrimaryWeapon: SilencedPPK
|
PrimaryWeapon: SilencedPPK
|
||||||
|
FTRK:
|
||||||
|
Inherits: ^Vehicle
|
||||||
|
Valued:
|
||||||
|
Cost: 600
|
||||||
|
Health:
|
||||||
|
HP: 150
|
||||||
|
Armor:
|
||||||
|
Type: Light
|
||||||
|
Mobile:
|
||||||
|
ROT: 10
|
||||||
|
Speed: 9
|
||||||
|
RevealsShroud:
|
||||||
|
Range: 4
|
||||||
|
Turreted:
|
||||||
|
ROT: 5
|
||||||
|
Offset: -298,0,298
|
||||||
|
Armament:
|
||||||
|
Weapon: FLAK-23
|
||||||
|
Recoil: 85
|
||||||
|
AttackTurreted:
|
||||||
|
RenderUnit:
|
||||||
|
WithTurret:
|
||||||
|
AutoTarget:
|
||||||
|
Explodes:
|
||||||
|
Weapon: UnitExplodeSmall
|
||||||
|
EmptyWeapon: UnitExplodeSmall
|
||||||
|
Selectable:
|
||||||
|
Bounds: 28,28,0,0
|
||||||
|
APC:
|
||||||
|
Inherits: ^Tank
|
||||||
|
Health:
|
||||||
|
HP: 400
|
||||||
|
Armor:
|
||||||
|
Type: Heavy
|
||||||
|
Mobile:
|
||||||
|
Speed: 10
|
||||||
|
RevealsShroud:
|
||||||
|
Range: 5
|
||||||
|
Armament:
|
||||||
|
Weapon: M60mg
|
||||||
|
LocalOffset: 0,0,171
|
||||||
|
AttackFrontal:
|
||||||
|
RenderUnit:
|
||||||
|
WithMuzzleFlash:
|
||||||
|
AutoTarget:
|
||||||
|
Cargo:
|
||||||
|
Types: Infantry
|
||||||
|
MaxWeight: 5
|
||||||
|
PipCount: 5
|
||||||
|
UnloadFacing: 220
|
||||||
ARTY:
|
ARTY:
|
||||||
Inherits: ^Tank
|
Inherits: ^Tank
|
||||||
Buildable:
|
Buildable:
|
||||||
@@ -859,25 +916,35 @@ Rules:
|
|||||||
Weapon: UnitExplode
|
Weapon: UnitExplode
|
||||||
Chance: 50
|
Chance: 50
|
||||||
AutoTarget:
|
AutoTarget:
|
||||||
|
V2RL:
|
||||||
|
Inherits: ^Vehicle
|
||||||
|
Valued:
|
||||||
|
Cost: 700
|
||||||
|
Health:
|
||||||
|
HP: 150
|
||||||
|
Armor:
|
||||||
|
Type: Light
|
||||||
|
Mobile:
|
||||||
|
Speed: 7
|
||||||
|
RevealsShroud:
|
||||||
|
Range: 5
|
||||||
|
Armament:
|
||||||
|
Weapon: SCUD
|
||||||
|
AttackFrontal:
|
||||||
|
RenderUnitReload:
|
||||||
|
AutoTarget:
|
||||||
|
Explodes:
|
||||||
|
Weapon: SCUD
|
||||||
|
EmptyWeapon:
|
||||||
4TNK:
|
4TNK:
|
||||||
Inherits: ^Tank
|
Inherits: ^Tank
|
||||||
Buildable:
|
Buildable:
|
||||||
Queue: Vehicle
|
|
||||||
BuildPaletteOrder: 100
|
|
||||||
Prerequisites: fix,stek
|
|
||||||
Owner: soviet
|
|
||||||
Valued:
|
|
||||||
Cost: 1800
|
|
||||||
Tooltip:
|
|
||||||
Name: Mammoth Tank
|
|
||||||
Description: Big and slow tank, with anti-air capability.\n Strong vs Tanks, Aircraft\n Weak vs Infantry
|
|
||||||
Health:
|
Health:
|
||||||
HP: 5000
|
HP: 2500
|
||||||
Armor:
|
Armor:
|
||||||
Type: Heavy
|
Type: Heavy
|
||||||
Mobile:
|
Mobile:
|
||||||
Speed: 4
|
Speed: 4
|
||||||
Crushes: wall, atmine, crate, infantry
|
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 14
|
Range: 14
|
||||||
Turreted:
|
Turreted:
|
||||||
@@ -890,7 +957,8 @@ Rules:
|
|||||||
PrimaryRecoil: 8
|
PrimaryRecoil: 8
|
||||||
PrimaryRecoilRecovery: 0.7
|
PrimaryRecoilRecovery: 0.7
|
||||||
SecondaryRecoil: 2
|
SecondaryRecoil: 2
|
||||||
RenderUnitTurreted:
|
RenderUnit:
|
||||||
|
WithTurret:
|
||||||
AutoTarget:
|
AutoTarget:
|
||||||
Explodes:
|
Explodes:
|
||||||
Weapon: napalm
|
Weapon: napalm
|
||||||
@@ -900,7 +968,7 @@ Rules:
|
|||||||
SelfHealing:
|
SelfHealing:
|
||||||
Step: 2
|
Step: 2
|
||||||
Ticks: 1
|
Ticks: 1
|
||||||
HealIfBelow: 80%
|
HealIfBelow: 40%
|
||||||
DamageCooldown: 150
|
DamageCooldown: 150
|
||||||
Selectable:
|
Selectable:
|
||||||
Bounds: 44,38,0,-4
|
Bounds: 44,38,0,-4
|
||||||
@@ -940,20 +1008,10 @@ Rules:
|
|||||||
-GainsExperience:
|
-GainsExperience:
|
||||||
Tooltip:
|
Tooltip:
|
||||||
Name: Badger
|
Name: Badger
|
||||||
Contrail@1:
|
|
||||||
ContrailOffset: 11, -11
|
|
||||||
Contrail@2:
|
|
||||||
ContrailOffset: -11, -11
|
|
||||||
FallsToEarth:
|
FallsToEarth:
|
||||||
Spins: no
|
Spins: no
|
||||||
Moves: yes
|
Moves: yes
|
||||||
Explosion: UnitExplode
|
Explosion: UnitExplode
|
||||||
SmokeTrailWhenDamaged@0:
|
|
||||||
Offset: 11, -11
|
|
||||||
Interval: 2
|
|
||||||
SmokeTrailWhenDamaged@1:
|
|
||||||
Offset: -11, -11
|
|
||||||
Interval: 2
|
|
||||||
-EjectOnDeath:
|
-EjectOnDeath:
|
||||||
-GpsDot:
|
-GpsDot:
|
||||||
|
|
||||||
@@ -996,18 +1054,18 @@ Weapons:
|
|||||||
Shadow: false
|
Shadow: false
|
||||||
Proximity: true
|
Proximity: true
|
||||||
Trail: smokey
|
Trail: smokey
|
||||||
ContrailLength: 10
|
ContrailLength: 150
|
||||||
Inaccuracy: 20
|
Inaccuracy: 20
|
||||||
Image: DRAGON
|
Image: DRAGON
|
||||||
ROT: 10
|
ROT: 10
|
||||||
RangeLimit: 80
|
RangeLimit: 80
|
||||||
Warhead:
|
Warhead:
|
||||||
Spread: 12
|
Spread: 15
|
||||||
Versus:
|
Versus:
|
||||||
None: 90%
|
None: 125%
|
||||||
Wood: 150%
|
Wood: 110%
|
||||||
Light: 150%
|
Light: 110%
|
||||||
Heavy: 150%
|
Heavy: 100%
|
||||||
Concrete: 200%
|
Concrete: 200%
|
||||||
Explosion: nuke
|
Explosion: nuke
|
||||||
WaterExplosion: nuke
|
WaterExplosion: nuke
|
||||||
@@ -1016,7 +1074,7 @@ Weapons:
|
|||||||
Damage: 250
|
Damage: 250
|
||||||
VolkNapalm:
|
VolkNapalm:
|
||||||
ROF: 40
|
ROF: 40
|
||||||
Range: 7
|
Range: 8
|
||||||
Report: volknapalm
|
Report: volknapalm
|
||||||
ValidTargets: Ground
|
ValidTargets: Ground
|
||||||
Burst: 6
|
Burst: 6
|
||||||
@@ -1077,17 +1135,64 @@ Weapons:
|
|||||||
Warhead:
|
Warhead:
|
||||||
Spread: 10
|
Spread: 10
|
||||||
Versus:
|
Versus:
|
||||||
None: 100%
|
None: 80%
|
||||||
Wood: 100%
|
Wood: 100%
|
||||||
Light: 60%
|
Light: 60%
|
||||||
Heavy: 25%
|
Heavy: 75%
|
||||||
Concrete: 35%
|
Concrete: 35%
|
||||||
Explosion: small_napalm
|
Explosion: small_napalm
|
||||||
WaterExplosion: small_napalm
|
WaterExplosion: small_napalm
|
||||||
InfDeath: 5
|
InfDeath: 5
|
||||||
SmudgeType: Scorch
|
SmudgeType: Scorch
|
||||||
ImpactSound: firebl3
|
ImpactSound: firebl3
|
||||||
Damage: 6
|
Damage: 10
|
||||||
|
FLAK-23:
|
||||||
|
ROF: 10
|
||||||
|
Range: 8
|
||||||
|
Report: AACANON3
|
||||||
|
ValidTargets: Air,Ground
|
||||||
|
Projectile: Bullet
|
||||||
|
Speed: 100
|
||||||
|
High: true
|
||||||
|
Warhead:
|
||||||
|
Spread: 5
|
||||||
|
Versus:
|
||||||
|
None: 35%
|
||||||
|
Wood: 30%
|
||||||
|
Light: 30%
|
||||||
|
Heavy: 40%
|
||||||
|
Concrete: 30%
|
||||||
|
Explosion: med_explosion
|
||||||
|
Damage: 25
|
||||||
|
SCUD:
|
||||||
|
ROF: 280
|
||||||
|
Range: 10
|
||||||
|
MinRange: 3
|
||||||
|
Report: MISSILE1
|
||||||
|
Projectile: Bullet
|
||||||
|
Speed: 10
|
||||||
|
Arm: 10
|
||||||
|
High: true
|
||||||
|
Shadow: false
|
||||||
|
Proximity: true
|
||||||
|
Trail: smokey
|
||||||
|
Inaccuracy: 10
|
||||||
|
Image: V2
|
||||||
|
Angle: .1
|
||||||
|
Warhead:
|
||||||
|
Spread: 20
|
||||||
|
Versus:
|
||||||
|
None: 100%
|
||||||
|
Wood: 90%
|
||||||
|
Light: 80%
|
||||||
|
Heavy: 70%
|
||||||
|
Explosion: nuke
|
||||||
|
WaterExplosion: large_splash
|
||||||
|
InfDeath: 3
|
||||||
|
SmudgeType: Crater
|
||||||
|
Damage: 500
|
||||||
|
ImpactSound: kaboom1
|
||||||
|
WaterImpactSound: kaboom1
|
||||||
SilencedPPK:
|
SilencedPPK:
|
||||||
ROF: 80
|
ROF: 80
|
||||||
Range: 2.5
|
Range: 2.5
|
||||||
|
|||||||
Reference in New Issue
Block a user