Fix nonworking attack code in Allies 01
This commit is contained in:
@@ -110,9 +110,8 @@ namespace OpenRA.Mods.RA.Missions
|
|||||||
if (difficulty != "Easy")
|
if (difficulty != "Easy")
|
||||||
{
|
{
|
||||||
ManageSovietUnits();
|
ManageSovietUnits();
|
||||||
if (world.FrameNumber >= currentAttackWaveFrameNumber + 600)
|
if (world.FrameNumber >= currentAttackWaveFrameNumber + 400)
|
||||||
{
|
{
|
||||||
Sound.Play("enmyapp1.aud");
|
|
||||||
SpawnSovietUnits(AttackWave);
|
SpawnSovietUnits(AttackWave);
|
||||||
currentAttackWave++;
|
currentAttackWave++;
|
||||||
currentAttackWaveFrameNumber = world.FrameNumber;
|
currentAttackWaveFrameNumber = world.FrameNumber;
|
||||||
@@ -190,15 +189,27 @@ namespace OpenRA.Mods.RA.Missions
|
|||||||
|
|
||||||
void ManageSovietUnits()
|
void ManageSovietUnits()
|
||||||
{
|
{
|
||||||
foreach (var unit in world.Actors.Where(a => a.IsInWorld && a.Owner == soviets && !a.IsDead() && a.IsIdle
|
foreach (var unit in world.Actors.Where(u => u.IsInWorld && u.Owner == soviets && !u.IsDead() && u.IsIdle
|
||||||
&& a.HasTrait<Mobile>() && a.HasTrait<AttackBase>()))
|
&& u.HasTrait<Mobile>() && u.HasTrait<AttackBase>()))
|
||||||
{
|
{
|
||||||
Activity inner;
|
Activity innerActivity;
|
||||||
if (einstein != null && einstein.IsInWorld)
|
if (einstein != null)
|
||||||
inner = new Attack(Target.FromActor(einstein), 3);
|
{
|
||||||
|
if (einstein.IsInWorld)
|
||||||
|
innerActivity = new Move.Move(Target.FromActor(einstein), 3);
|
||||||
|
|
||||||
else
|
else
|
||||||
inner = new Move.Move(extractionLZ.Location, 3);
|
{
|
||||||
unit.QueueActivity(new AttackMove.AttackMoveActivity(unit, inner));
|
var container = world.UnitContaining(einstein);
|
||||||
|
|
||||||
|
if (container != null && !container.HasTrait<Aircraft>() && container.HasTrait<Mobile>())
|
||||||
|
innerActivity = new Move.Move(Target.FromActor(container), 3);
|
||||||
|
|
||||||
|
else
|
||||||
|
innerActivity = new Move.Move(extractionLZ.Location, 3);
|
||||||
|
}
|
||||||
|
unit.QueueActivity(new AttackMove.AttackMoveActivity(unit, innerActivity));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -311,7 +311,7 @@ namespace OpenRA.Mods.RA.Missions
|
|||||||
foreach (var rallyPoint in sovietRallyPoints)
|
foreach (var rallyPoint in sovietRallyPoints)
|
||||||
{
|
{
|
||||||
var units = world.FindAliveCombatantActorsInCircle(Util.CenterOfCell(rallyPoint), 10)
|
var units = world.FindAliveCombatantActorsInCircle(Util.CenterOfCell(rallyPoint), 10)
|
||||||
.Where(u => u.IsIdle && u.HasTrait<Mobile>() && u.Owner == soviets);
|
.Where(u => u.IsIdle && u.HasTrait<Mobile>() && u.HasTrait<AttackBase>() && u.Owner == soviets);
|
||||||
if (units.Count() >= SovietGroupSize)
|
if (units.Count() >= SovietGroupSize)
|
||||||
{
|
{
|
||||||
foreach (var unit in units)
|
foreach (var unit in units)
|
||||||
|
|||||||
@@ -148,11 +148,10 @@ namespace OpenRA.Mods.RA.Missions
|
|||||||
|
|
||||||
if (attackingTown)
|
if (attackingTown)
|
||||||
{
|
{
|
||||||
foreach (var attacker in townAttackers.Where(a => a.IsIdle && !a.IsDead() && a.IsInWorld))
|
foreach (var attacker in townAttackers.Where(u => u.IsIdle && !u.IsDead() && u.IsInWorld))
|
||||||
{
|
{
|
||||||
var enemies = world.Actors.Where(u => u.Owner == neutral
|
var enemies = world.Actors.Where(u => u.Owner == neutral
|
||||||
&& ((u.HasTrait<Building>() && !u.HasTrait<Wall>() && !u.HasTrait<Bridge>()) || u.HasTrait<Mobile>())
|
&& ((u.HasTrait<Building>() && !u.HasTrait<Wall>() && !u.HasTrait<Bridge>()) || u.HasTrait<Mobile>()) && !u.IsDead() && u.IsInWorld);
|
||||||
&& u.HasTrait<ITargetable>() && u.HasTrait<Health>() && !u.Trait<Health>().IsDead && u.IsInWorld);
|
|
||||||
|
|
||||||
var enemy = enemies.OrderBy(u => (attacker.CenterLocation - u.CenterLocation).LengthSquared).FirstOrDefault();
|
var enemy = enemies.OrderBy(u => (attacker.CenterLocation - u.CenterLocation).LengthSquared).FirstOrDefault();
|
||||||
if (enemy != null)
|
if (enemy != null)
|
||||||
|
|||||||
Reference in New Issue
Block a user