Convert yaml-exposed facings to WAngle.
This commit is contained in:
@@ -567,6 +567,9 @@ namespace OpenRA
|
|||||||
}
|
}
|
||||||
else if (fieldType.IsGenericType && fieldType.GetGenericTypeDefinition() == typeof(Nullable<>))
|
else if (fieldType.IsGenericType && fieldType.GetGenericTypeDefinition() == typeof(Nullable<>))
|
||||||
{
|
{
|
||||||
|
if (string.IsNullOrEmpty(value))
|
||||||
|
return null;
|
||||||
|
|
||||||
var innerType = fieldType.GetGenericArguments().First();
|
var innerType = fieldType.GetGenericArguments().First();
|
||||||
var innerValue = GetValue("Nullable<T>", innerType, value, field);
|
var innerValue = GetValue("Nullable<T>", innerType, value, field);
|
||||||
return fieldType.GetConstructor(new[] { innerType }).Invoke(new[] { innerValue });
|
return fieldType.GetConstructor(new[] { innerType }).Invoke(new[] { innerValue });
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ namespace OpenRA.Mods.Cnc.Activities
|
|||||||
readonly WithVoxelUnloadBody body;
|
readonly WithVoxelUnloadBody body;
|
||||||
readonly WithDockingOverlay spriteOverlay;
|
readonly WithDockingOverlay spriteOverlay;
|
||||||
|
|
||||||
public VoxelHarvesterDockSequence(Actor self, Actor refinery, int dockAngle, bool isDragRequired, WVec dragOffset, int dragLength)
|
public VoxelHarvesterDockSequence(Actor self, Actor refinery, WAngle dockAngle, bool isDragRequired, WVec dragOffset, int dragLength)
|
||||||
: base(self, refinery, dockAngle, isDragRequired, dragOffset, dragLength)
|
: base(self, refinery, dockAngle, isDragRequired, dragOffset, dragLength)
|
||||||
{
|
{
|
||||||
body = self.Trait<WithVoxelUnloadBody>();
|
body = self.Trait<WithVoxelUnloadBody>();
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ namespace OpenRA.Mods.Cnc.Traits
|
|||||||
[Desc("How many game ticks should pass before closing the actor's turret.")]
|
[Desc("How many game ticks should pass before closing the actor's turret.")]
|
||||||
public readonly int CloseDelay = 125;
|
public readonly int CloseDelay = 125;
|
||||||
|
|
||||||
public readonly int DefaultFacing = 0;
|
public readonly WAngle DefaultFacing = WAngle.Zero;
|
||||||
|
|
||||||
[Desc("The percentage of damage that is received while this actor is closed.")]
|
[Desc("The percentage of damage that is received while this actor is closed.")]
|
||||||
public readonly int ClosedDamageMultiplier = 50;
|
public readonly int ClosedDamageMultiplier = 50;
|
||||||
@@ -107,10 +107,10 @@ namespace OpenRA.Mods.Cnc.Traits
|
|||||||
{
|
{
|
||||||
if (state == PopupState.Open && idleTicks++ > info.CloseDelay)
|
if (state == PopupState.Open && idleTicks++ > info.CloseDelay)
|
||||||
{
|
{
|
||||||
turret.DesiredFacing = info.DefaultFacing;
|
turret.DesiredFacing = info.DefaultFacing.Facing;
|
||||||
state = PopupState.Rotating;
|
state = PopupState.Rotating;
|
||||||
}
|
}
|
||||||
else if (state == PopupState.Rotating && turret.TurretFacing == info.DefaultFacing)
|
else if (state == PopupState.Rotating && turret.TurretFacing == info.DefaultFacing.Facing)
|
||||||
{
|
{
|
||||||
state = PopupState.Transitioning;
|
state = PopupState.Transitioning;
|
||||||
wsb.PlayCustomAnimation(self, info.ClosingSequence, () =>
|
wsb.PlayCustomAnimation(self, info.ClosingSequence, () =>
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ namespace OpenRA.Mods.Cnc.Traits
|
|||||||
public readonly string OriginalActor = "mcv";
|
public readonly string OriginalActor = "mcv";
|
||||||
|
|
||||||
[Desc("Facing of the returned actor.")]
|
[Desc("Facing of the returned actor.")]
|
||||||
public readonly int Facing = 96;
|
public readonly WAngle Facing = new WAngle(384);
|
||||||
|
|
||||||
public readonly string ChronoshiftSound = "chrono2.aud";
|
public readonly string ChronoshiftSound = "chrono2.aud";
|
||||||
|
|
||||||
@@ -175,7 +175,7 @@ namespace OpenRA.Mods.Cnc.Traits
|
|||||||
{
|
{
|
||||||
new LocationInit(destination.Value),
|
new LocationInit(destination.Value),
|
||||||
new OwnerInit(self.Owner),
|
new OwnerInit(self.Owner),
|
||||||
new FacingInit(WAngle.FromFacing(info.Facing)),
|
new FacingInit(info.Facing),
|
||||||
new FactionInit(faction),
|
new FactionInit(faction),
|
||||||
new HealthInit((int)(health.HP * 100L / health.MaxHP))
|
new HealthInit((int)(health.HP * 100L / health.MaxHP))
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ namespace OpenRA.Mods.Cnc.Traits
|
|||||||
public readonly int2 Drops = new int2(5, 8);
|
public readonly int2 Drops = new int2(5, 8);
|
||||||
|
|
||||||
[Desc("Sets the approach direction.")]
|
[Desc("Sets the approach direction.")]
|
||||||
public readonly int PodFacing = 32;
|
public readonly WAngle PodFacing = new WAngle(128);
|
||||||
|
|
||||||
[Desc("Maximum offset from targetLocation")]
|
[Desc("Maximum offset from targetLocation")]
|
||||||
public readonly int PodScatter = 3;
|
public readonly int PodScatter = 3;
|
||||||
@@ -91,7 +91,7 @@ namespace OpenRA.Mods.Cnc.Traits
|
|||||||
{
|
{
|
||||||
base.Activate(self, order, manager);
|
base.Activate(self, order, manager);
|
||||||
|
|
||||||
SendDropPods(self, order, WAngle.FromFacing(info.PodFacing));
|
SendDropPods(self, order, info.PodFacing);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SendDropPods(Actor self, Order order, WAngle facing)
|
public void SendDropPods(Actor self, Order order, WAngle facing)
|
||||||
|
|||||||
@@ -24,18 +24,18 @@ namespace OpenRA.Mods.Cnc.Traits
|
|||||||
public readonly int Speed = 28;
|
public readonly int Speed = 28;
|
||||||
|
|
||||||
[Desc("Facing to use when actor spawns. Only 64 and 192 supported.")]
|
[Desc("Facing to use when actor spawns. Only 64 and 192 supported.")]
|
||||||
public readonly int InitialFacing = 64;
|
public readonly WAngle InitialFacing = new WAngle(256);
|
||||||
|
|
||||||
[Desc("Facing to use for actor previews (map editor, color picker, etc). Only 64 and 192 supported.")]
|
[Desc("Facing to use for actor previews (map editor, color picker, etc). Only 64 and 192 supported.")]
|
||||||
public readonly int PreviewFacing = 64;
|
public readonly WAngle PreviewFacing = new WAngle(256);
|
||||||
|
|
||||||
public override object Create(ActorInitializer init) { return new TDGunboat(init, this); }
|
public override object Create(ActorInitializer init) { return new TDGunboat(init, this); }
|
||||||
|
|
||||||
public WAngle GetInitialFacing() { return WAngle.FromFacing(InitialFacing); }
|
public WAngle GetInitialFacing() { return InitialFacing; }
|
||||||
|
|
||||||
IEnumerable<ActorInit> IActorPreviewInitInfo.ActorPreviewInits(ActorInfo ai, ActorPreviewType type)
|
IEnumerable<ActorInit> IActorPreviewInitInfo.ActorPreviewInits(ActorInfo ai, ActorPreviewType type)
|
||||||
{
|
{
|
||||||
yield return new FacingInit(WAngle.FromFacing(PreviewFacing));
|
yield return new FacingInit(PreviewFacing);
|
||||||
}
|
}
|
||||||
|
|
||||||
public IReadOnlyDictionary<CPos, SubCell> OccupiedCells(ActorInfo info, CPos location, SubCell subCell = SubCell.Any)
|
public IReadOnlyDictionary<CPos, SubCell> OccupiedCells(ActorInfo info, CPos location, SubCell subCell = SubCell.Any)
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ namespace OpenRA.Mods.Common.Activities
|
|||||||
this.info = info;
|
this.info = info;
|
||||||
IsInterruptible = false;
|
IsInterruptible = false;
|
||||||
aircraft = self.Trait<Aircraft>();
|
aircraft = self.Trait<Aircraft>();
|
||||||
if (info.MaximumSpinSpeed != 0)
|
if (!info.MaximumSpinSpeed.HasValue || info.MaximumSpinSpeed.Value != WAngle.Zero)
|
||||||
acceleration = self.World.SharedRandom.Next(2) * 2 - 1;
|
acceleration = self.World.SharedRandom.Next(2) * 2 - 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -49,14 +49,13 @@ namespace OpenRA.Mods.Common.Activities
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (info.MaximumSpinSpeed != 0)
|
if (acceleration != 0)
|
||||||
{
|
{
|
||||||
if (info.MaximumSpinSpeed < 0 || Math.Abs(spin) < info.MaximumSpinSpeed)
|
if (!info.MaximumSpinSpeed.HasValue || Math.Abs(spin) < info.MaximumSpinSpeed.Value.Angle)
|
||||||
spin += acceleration; // TODO: Possibly unhardcode this
|
spin += 4 * acceleration; // TODO: Possibly unhardcode this
|
||||||
|
|
||||||
// Allow for negative spin values and convert from facing to angle units
|
// Allow for negative spin values and convert from facing to angle units
|
||||||
// TODO: Remember to convert this when removing WAngle.FromFacing
|
aircraft.Facing = new WAngle(aircraft.Facing.Angle + spin);
|
||||||
aircraft.Facing = new WAngle(aircraft.Facing.Angle + 4 * spin);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var move = info.Moves ? aircraft.FlyStep(aircraft.Facing) : WVec.Zero;
|
var move = info.Moves ? aircraft.FlyStep(aircraft.Facing) : WVec.Zero;
|
||||||
|
|||||||
@@ -61,7 +61,7 @@ namespace OpenRA.Mods.Common.Activities
|
|||||||
// NOTE: desiredFacing = -1 means we should not prefer any particular facing and instead just
|
// NOTE: desiredFacing = -1 means we should not prefer any particular facing and instead just
|
||||||
// use whatever facing gives us the most direct path to the landing site.
|
// use whatever facing gives us the most direct path to the landing site.
|
||||||
if (!facing.HasValue && aircraft.Info.TurnToLand)
|
if (!facing.HasValue && aircraft.Info.TurnToLand)
|
||||||
desiredFacing = WAngle.FromFacing(aircraft.Info.InitialFacing);
|
desiredFacing = aircraft.Info.InitialFacing;
|
||||||
else
|
else
|
||||||
desiredFacing = facing;
|
desiredFacing = facing;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -114,7 +114,7 @@ namespace OpenRA.Mods.Common.Activities
|
|||||||
var exit = dest.FirstExitOrDefault();
|
var exit = dest.FirstExitOrDefault();
|
||||||
var offset = exit != null ? exit.Info.SpawnOffset : WVec.Zero;
|
var offset = exit != null ? exit.Info.SpawnOffset : WVec.Zero;
|
||||||
if (aircraft.Info.TurnToDock || !aircraft.Info.VTOL)
|
if (aircraft.Info.TurnToDock || !aircraft.Info.VTOL)
|
||||||
facing = WAngle.FromFacing(aircraft.Info.InitialFacing);
|
facing = aircraft.Info.InitialFacing;
|
||||||
|
|
||||||
aircraft.MakeReservation(dest);
|
aircraft.MakeReservation(dest);
|
||||||
QueueChild(new Land(self, Target.FromActor(dest), offset, facing, Color.Green));
|
QueueChild(new Land(self, Target.FromActor(dest), offset, facing, Color.Green));
|
||||||
|
|||||||
@@ -31,8 +31,8 @@ namespace OpenRA.Mods.Common.Activities
|
|||||||
protected override void OnFirstRun(Actor self)
|
protected override void OnFirstRun(Actor self)
|
||||||
{
|
{
|
||||||
// Turn to the required facing.
|
// Turn to the required facing.
|
||||||
if (deploy.DeployState == DeployState.Undeployed && deploy.Info.Facing != -1 && canTurn && !moving)
|
if (deploy.DeployState == DeployState.Undeployed && deploy.Info.Facing.HasValue && canTurn && !moving)
|
||||||
QueueChild(new Turn(self, WAngle.FromFacing(deploy.Info.Facing)));
|
QueueChild(new Turn(self, deploy.Info.Facing.Value));
|
||||||
}
|
}
|
||||||
|
|
||||||
public override bool Tick(Actor self)
|
public override bool Tick(Actor self)
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ namespace OpenRA.Mods.Common.Activities
|
|||||||
|
|
||||||
protected readonly Actor Refinery;
|
protected readonly Actor Refinery;
|
||||||
protected readonly Harvester Harv;
|
protected readonly Harvester Harv;
|
||||||
protected readonly int DockAngle;
|
protected readonly WAngle DockAngle;
|
||||||
protected readonly bool IsDragRequired;
|
protected readonly bool IsDragRequired;
|
||||||
protected readonly WVec DragOffset;
|
protected readonly WVec DragOffset;
|
||||||
protected readonly int DragLength;
|
protected readonly int DragLength;
|
||||||
@@ -33,7 +33,7 @@ namespace OpenRA.Mods.Common.Activities
|
|||||||
|
|
||||||
protected DockingState dockingState;
|
protected DockingState dockingState;
|
||||||
|
|
||||||
public HarvesterDockSequence(Actor self, Actor refinery, int dockAngle, bool isDragRequired, WVec dragOffset, int dragLength)
|
public HarvesterDockSequence(Actor self, Actor refinery, WAngle dockAngle, bool isDragRequired, WVec dragOffset, int dragLength)
|
||||||
{
|
{
|
||||||
dockingState = DockingState.Turn;
|
dockingState = DockingState.Turn;
|
||||||
Refinery = refinery;
|
Refinery = refinery;
|
||||||
@@ -55,7 +55,7 @@ namespace OpenRA.Mods.Common.Activities
|
|||||||
|
|
||||||
case DockingState.Turn:
|
case DockingState.Turn:
|
||||||
dockingState = DockingState.Dock;
|
dockingState = DockingState.Dock;
|
||||||
QueueChild(new Turn(self, WAngle.FromFacing(DockAngle)));
|
QueueChild(new Turn(self, DockAngle));
|
||||||
if (IsDragRequired)
|
if (IsDragRequired)
|
||||||
QueueChild(new Drag(self, StartDrag, EndDrag, DragLength));
|
QueueChild(new Drag(self, StartDrag, EndDrag, DragLength));
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ namespace OpenRA.Mods.Common.Activities
|
|||||||
readonly WithSpriteBody wsb;
|
readonly WithSpriteBody wsb;
|
||||||
readonly WithDockingAnimationInfo wda;
|
readonly WithDockingAnimationInfo wda;
|
||||||
|
|
||||||
public SpriteHarvesterDockSequence(Actor self, Actor refinery, int dockAngle, bool isDragRequired, WVec dragOffset, int dragLength)
|
public SpriteHarvesterDockSequence(Actor self, Actor refinery, WAngle dockAngle, bool isDragRequired, WVec dragOffset, int dragLength)
|
||||||
: base(self, refinery, dockAngle, isDragRequired, dragOffset, dragLength)
|
: base(self, refinery, dockAngle, isDragRequired, dragOffset, dragLength)
|
||||||
{
|
{
|
||||||
wsb = self.Trait<WithSpriteBody>();
|
wsb = self.Trait<WithSpriteBody>();
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ namespace OpenRA.Mods.Common.Activities
|
|||||||
{
|
{
|
||||||
public readonly string ToActor;
|
public readonly string ToActor;
|
||||||
public CVec Offset = CVec.Zero;
|
public CVec Offset = CVec.Zero;
|
||||||
public WAngle Facing = WAngle.FromFacing(96);
|
public WAngle Facing = new WAngle(384);
|
||||||
public string[] Sounds = { };
|
public string[] Sounds = { };
|
||||||
public string Notification = null;
|
public string Notification = null;
|
||||||
public int ForceHealthPercentage = 0;
|
public int ForceHealthPercentage = 0;
|
||||||
|
|||||||
@@ -84,10 +84,10 @@ namespace OpenRA.Mods.Common.Projectiles
|
|||||||
public readonly int LockOnProbability = 100;
|
public readonly int LockOnProbability = 100;
|
||||||
|
|
||||||
[Desc("Horizontal rate of turn.")]
|
[Desc("Horizontal rate of turn.")]
|
||||||
public readonly int HorizontalRateOfTurn = 5;
|
public readonly WAngle HorizontalRateOfTurn = new WAngle(20);
|
||||||
|
|
||||||
[Desc("Vertical rate of turn.")]
|
[Desc("Vertical rate of turn.")]
|
||||||
public readonly int VerticalRateOfTurn = 6;
|
public readonly WAngle VerticalRateOfTurn = new WAngle(24);
|
||||||
|
|
||||||
[Desc("Gravity applied while in free fall.")]
|
[Desc("Gravity applied while in free fall.")]
|
||||||
public readonly int Gravity = 10;
|
public readonly int Gravity = 10;
|
||||||
@@ -288,7 +288,7 @@ namespace OpenRA.Mods.Common.Projectiles
|
|||||||
// to hit the target without passing it by (and thus having to do horizontal loops)
|
// to hit the target without passing it by (and thus having to do horizontal loops)
|
||||||
var minSpeed = ((System.Math.Min(predClfDist * 1024 / (1024 - WAngle.FromFacing(vFacing).Sin()),
|
var minSpeed = ((System.Math.Min(predClfDist * 1024 / (1024 - WAngle.FromFacing(vFacing).Sin()),
|
||||||
(relTarHorDist + predClfDist) * 1024 / (2 * (2048 - WAngle.FromFacing(vFacing).Sin())))
|
(relTarHorDist + predClfDist) * 1024 / (2 * (2048 - WAngle.FromFacing(vFacing).Sin())))
|
||||||
* info.VerticalRateOfTurn * 157) / 6400).Clamp(minLaunchSpeed, maxLaunchSpeed);
|
* info.VerticalRateOfTurn.Facing * 157) / 6400).Clamp(minLaunchSpeed, maxLaunchSpeed);
|
||||||
|
|
||||||
if ((sbyte)vFacing < 0)
|
if ((sbyte)vFacing < 0)
|
||||||
speed = minSpeed;
|
speed = minSpeed;
|
||||||
@@ -300,7 +300,7 @@ namespace OpenRA.Mods.Common.Projectiles
|
|||||||
var vFac = vFacing;
|
var vFac = vFacing;
|
||||||
speed = BisectionSearch(minSpeed, maxLaunchSpeed, spd =>
|
speed = BisectionSearch(minSpeed, maxLaunchSpeed, spd =>
|
||||||
{
|
{
|
||||||
var lpRds = LoopRadius(spd, info.VerticalRateOfTurn);
|
var lpRds = LoopRadius(spd, info.VerticalRateOfTurn.Facing);
|
||||||
return WillClimbWithinDistance(vFac, lpRds, predClfDist, diffClfMslHgt)
|
return WillClimbWithinDistance(vFac, lpRds, predClfDist, diffClfMslHgt)
|
||||||
|| WillClimbAroundInclineTop(vFac, lpRds, predClfDist, diffClfMslHgt, spd);
|
|| WillClimbAroundInclineTop(vFac, lpRds, predClfDist, diffClfMslHgt, spd);
|
||||||
});
|
});
|
||||||
@@ -320,7 +320,7 @@ namespace OpenRA.Mods.Common.Projectiles
|
|||||||
void DetermineLaunchSpeedAndAngle(World world, out int speed, out int vFacing)
|
void DetermineLaunchSpeedAndAngle(World world, out int speed, out int vFacing)
|
||||||
{
|
{
|
||||||
speed = maxLaunchSpeed;
|
speed = maxLaunchSpeed;
|
||||||
loopRadius = LoopRadius(speed, info.VerticalRateOfTurn);
|
loopRadius = LoopRadius(speed, info.VerticalRateOfTurn.Facing);
|
||||||
|
|
||||||
// Compute current distance from target position
|
// Compute current distance from target position
|
||||||
var tarDistVec = targetPosition + offset - pos;
|
var tarDistVec = targetPosition + offset - pos;
|
||||||
@@ -440,7 +440,7 @@ namespace OpenRA.Mods.Common.Projectiles
|
|||||||
speed = (speed + sign * info.Acceleration.Length).Clamp(0, maxSpeed);
|
speed = (speed + sign * info.Acceleration.Length).Clamp(0, maxSpeed);
|
||||||
|
|
||||||
// Compute the vertical loop radius
|
// Compute the vertical loop radius
|
||||||
loopRadius = LoopRadius(speed, info.VerticalRateOfTurn);
|
loopRadius = LoopRadius(speed, info.VerticalRateOfTurn.Facing);
|
||||||
}
|
}
|
||||||
|
|
||||||
WVec FreefallTick()
|
WVec FreefallTick()
|
||||||
@@ -509,7 +509,7 @@ namespace OpenRA.Mods.Common.Projectiles
|
|||||||
// If missile is below incline top height and facing downwards, bring back
|
// If missile is below incline top height and facing downwards, bring back
|
||||||
// its vertical facing above zero as soon as possible
|
// its vertical facing above zero as soon as possible
|
||||||
if ((sbyte)vFacing < 0)
|
if ((sbyte)vFacing < 0)
|
||||||
desiredVFacing = info.VerticalRateOfTurn;
|
desiredVFacing = info.VerticalRateOfTurn.Facing;
|
||||||
|
|
||||||
// Missile will climb around incline top if bringing vertical facing
|
// Missile will climb around incline top if bringing vertical facing
|
||||||
// down to zero on an arc of radius loopRadius
|
// down to zero on an arc of radius loopRadius
|
||||||
@@ -525,7 +525,7 @@ namespace OpenRA.Mods.Common.Projectiles
|
|||||||
// for which the missile will be able to climb terrAltDiff w-units
|
// for which the missile will be able to climb terrAltDiff w-units
|
||||||
// within hHeightChange w-units all the while ending the ascent
|
// within hHeightChange w-units all the while ending the ascent
|
||||||
// with vertical facing 0
|
// with vertical facing 0
|
||||||
for (var vFac = System.Math.Min(vFacing + info.VerticalRateOfTurn - 1, 63); vFac >= vFacing; vFac--)
|
for (var vFac = System.Math.Min(vFacing + info.VerticalRateOfTurn.Facing - 1, 63); vFac >= vFacing; vFac--)
|
||||||
if (!WillClimbWithinDistance(vFac, loopRadius, predClfDist, diffClfMslHgt)
|
if (!WillClimbWithinDistance(vFac, loopRadius, predClfDist, diffClfMslHgt)
|
||||||
&& !(predClfDist <= loopRadius * (1024 - WAngle.FromFacing(vFac).Sin()) / 1024
|
&& !(predClfDist <= loopRadius * (1024 - WAngle.FromFacing(vFac).Sin()) / 1024
|
||||||
&& WillClimbAroundInclineTop(vFac, loopRadius, predClfDist, diffClfMslHgt, speed)))
|
&& WillClimbAroundInclineTop(vFac, loopRadius, predClfDist, diffClfMslHgt, speed)))
|
||||||
@@ -600,7 +600,7 @@ namespace OpenRA.Mods.Common.Projectiles
|
|||||||
// and thus needs smaller vertical facings so as not
|
// and thus needs smaller vertical facings so as not
|
||||||
// to hit the ground prematurely
|
// to hit the ground prematurely
|
||||||
if (targetPassedBy)
|
if (targetPassedBy)
|
||||||
desiredVFacing = desiredVFacing.Clamp(-info.VerticalRateOfTurn, info.VerticalRateOfTurn);
|
desiredVFacing = desiredVFacing.Clamp(-info.VerticalRateOfTurn.Facing, info.VerticalRateOfTurn.Facing);
|
||||||
else if (lastHt == 0)
|
else if (lastHt == 0)
|
||||||
{ // Before the target is passed by, missile speed should be changed
|
{ // Before the target is passed by, missile speed should be changed
|
||||||
// Target's height above loop's center
|
// Target's height above loop's center
|
||||||
@@ -662,7 +662,7 @@ namespace OpenRA.Mods.Common.Projectiles
|
|||||||
if (info.TerrainHeightAware && edgeVector.Length > loopRadius && lastHt > targetPosition.Z)
|
if (info.TerrainHeightAware && edgeVector.Length > loopRadius && lastHt > targetPosition.Z)
|
||||||
{
|
{
|
||||||
int vFac;
|
int vFac;
|
||||||
for (vFac = vFacing + 1; vFac <= vFacing + info.VerticalRateOfTurn - 1; vFac++)
|
for (vFac = vFacing + 1; vFac <= vFacing + info.VerticalRateOfTurn.Facing - 1; vFac++)
|
||||||
{
|
{
|
||||||
// Vector from missile's current position pointing to the loop's center
|
// Vector from missile's current position pointing to the loop's center
|
||||||
radius = new WVec(loopRadius, 0, 0)
|
radius = new WVec(loopRadius, 0, 0)
|
||||||
@@ -681,7 +681,7 @@ namespace OpenRA.Mods.Common.Projectiles
|
|||||||
// Aim for the target
|
// Aim for the target
|
||||||
var vDist = new WVec(-relTarHgt, -relTarHorDist, 0);
|
var vDist = new WVec(-relTarHgt, -relTarHorDist, 0);
|
||||||
desiredVFacing = (sbyte)vDist.HorizontalLengthSquared != 0 ? vDist.Yaw.Facing : vFacing;
|
desiredVFacing = (sbyte)vDist.HorizontalLengthSquared != 0 ? vDist.Yaw.Facing : vFacing;
|
||||||
if (desiredVFacing < 0 && info.VerticalRateOfTurn < (sbyte)vFacing)
|
if (desiredVFacing < 0 && info.VerticalRateOfTurn.Facing < (sbyte)vFacing)
|
||||||
desiredVFacing = 0;
|
desiredVFacing = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -691,7 +691,7 @@ namespace OpenRA.Mods.Common.Projectiles
|
|||||||
// Aim for the target
|
// Aim for the target
|
||||||
var vDist = new WVec(-relTarHgt, relTarHorDist, 0);
|
var vDist = new WVec(-relTarHgt, relTarHorDist, 0);
|
||||||
desiredVFacing = (sbyte)vDist.HorizontalLengthSquared != 0 ? vDist.Yaw.Facing : vFacing;
|
desiredVFacing = (sbyte)vDist.HorizontalLengthSquared != 0 ? vDist.Yaw.Facing : vFacing;
|
||||||
if (desiredVFacing < 0 && info.VerticalRateOfTurn < (sbyte)vFacing)
|
if (desiredVFacing < 0 && info.VerticalRateOfTurn.Facing < (sbyte)vFacing)
|
||||||
desiredVFacing = 0;
|
desiredVFacing = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -706,7 +706,7 @@ namespace OpenRA.Mods.Common.Projectiles
|
|||||||
if (-diffClfMslHgt > info.CruiseAltitude.Length)
|
if (-diffClfMslHgt > info.CruiseAltitude.Length)
|
||||||
desiredVFacing = -desiredVFacing;
|
desiredVFacing = -desiredVFacing;
|
||||||
|
|
||||||
desiredVFacing = desiredVFacing.Clamp(-info.VerticalRateOfTurn, info.VerticalRateOfTurn);
|
desiredVFacing = desiredVFacing.Clamp(-info.VerticalRateOfTurn.Facing, info.VerticalRateOfTurn.Facing);
|
||||||
|
|
||||||
ChangeSpeed();
|
ChangeSpeed();
|
||||||
}
|
}
|
||||||
@@ -722,7 +722,7 @@ namespace OpenRA.Mods.Common.Projectiles
|
|||||||
if (-diffClfMslHgt > info.CruiseAltitude.Length)
|
if (-diffClfMslHgt > info.CruiseAltitude.Length)
|
||||||
desiredVFacing = -desiredVFacing;
|
desiredVFacing = -desiredVFacing;
|
||||||
|
|
||||||
desiredVFacing = desiredVFacing.Clamp(-info.VerticalRateOfTurn, info.VerticalRateOfTurn);
|
desiredVFacing = desiredVFacing.Clamp(-info.VerticalRateOfTurn.Facing, info.VerticalRateOfTurn.Facing);
|
||||||
|
|
||||||
ChangeSpeed();
|
ChangeSpeed();
|
||||||
}
|
}
|
||||||
@@ -780,8 +780,8 @@ namespace OpenRA.Mods.Common.Projectiles
|
|||||||
desiredHFacing = hFacing;
|
desiredHFacing = hFacing;
|
||||||
|
|
||||||
// Compute new direction the projectile will be facing
|
// Compute new direction the projectile will be facing
|
||||||
hFacing = Util.TickFacing(hFacing, desiredHFacing, info.HorizontalRateOfTurn);
|
hFacing = Util.TickFacing(hFacing, desiredHFacing, info.HorizontalRateOfTurn.Facing);
|
||||||
vFacing = Util.TickFacing(vFacing, desiredVFacing, info.VerticalRateOfTurn);
|
vFacing = Util.TickFacing(vFacing, desiredVFacing, info.VerticalRateOfTurn.Facing);
|
||||||
|
|
||||||
// Compute the projectile's guided displacement
|
// Compute the projectile's guided displacement
|
||||||
return new WVec(0, -1024 * speed, 0)
|
return new WVec(0, -1024 * speed, 0)
|
||||||
@@ -803,7 +803,7 @@ namespace OpenRA.Mods.Common.Projectiles
|
|||||||
speed = velocity.Length;
|
speed = velocity.Length;
|
||||||
|
|
||||||
// Compute the vertical loop radius
|
// Compute the vertical loop radius
|
||||||
loopRadius = LoopRadius(speed, info.VerticalRateOfTurn);
|
loopRadius = LoopRadius(speed, info.VerticalRateOfTurn.Facing);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Switch from homing mode to freefall mode
|
// Switch from homing mode to freefall mode
|
||||||
|
|||||||
@@ -157,7 +157,7 @@ namespace OpenRA.Mods.Common.Scripting
|
|||||||
// Scripted cargo aircraft must turn to default position before unloading.
|
// Scripted cargo aircraft must turn to default position before unloading.
|
||||||
// TODO: pass facing through UnloadCargo instead.
|
// TODO: pass facing through UnloadCargo instead.
|
||||||
if (aircraft != null)
|
if (aircraft != null)
|
||||||
transport.QueueActivity(new Land(transport, Target.FromCell(transport.World, entryPath.Last()), WDist.FromCells(dropRange), WAngle.FromFacing(aircraft.Info.InitialFacing)));
|
transport.QueueActivity(new Land(transport, Target.FromCell(transport.World, entryPath.Last()), WDist.FromCells(dropRange), aircraft.Info.InitialFacing));
|
||||||
|
|
||||||
if (cargo != null)
|
if (cargo != null)
|
||||||
transport.QueueActivity(new UnloadCargo(transport, WDist.FromCells(dropRange)));
|
transport.QueueActivity(new UnloadCargo(transport, WDist.FromCells(dropRange)));
|
||||||
|
|||||||
@@ -47,12 +47,13 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
[Desc("The speed at which the aircraft is repulsed from other aircraft. Specify -1 for normal movement speed.")]
|
[Desc("The speed at which the aircraft is repulsed from other aircraft. Specify -1 for normal movement speed.")]
|
||||||
public readonly int RepulsionSpeed = -1;
|
public readonly int RepulsionSpeed = -1;
|
||||||
|
|
||||||
public readonly int InitialFacing = 0;
|
public readonly WAngle InitialFacing = WAngle.Zero;
|
||||||
|
|
||||||
public readonly int TurnSpeed = 255;
|
[Desc("Speed at which the actor turns.")]
|
||||||
|
public readonly WAngle TurnSpeed = new WAngle(512);
|
||||||
|
|
||||||
[Desc("Turn speed to apply when aircraft flies in circles while idle. Defaults to TurnSpeed if negative.")]
|
[Desc("Turn speed to apply when aircraft flies in circles while idle. Defaults to TurnSpeed if undefined.")]
|
||||||
public readonly int IdleTurnSpeed = -1;
|
public readonly WAngle? IdleTurnSpeed = null;
|
||||||
|
|
||||||
public readonly int Speed = 1;
|
public readonly int Speed = 1;
|
||||||
|
|
||||||
@@ -145,7 +146,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
public readonly int NumberOfTicksToVerifyAvailableAirport = 150;
|
public readonly int NumberOfTicksToVerifyAvailableAirport = 150;
|
||||||
|
|
||||||
[Desc("Facing to use for actor previews (map editor, color picker, etc)")]
|
[Desc("Facing to use for actor previews (map editor, color picker, etc)")]
|
||||||
public readonly int PreviewFacing = 96;
|
public readonly WAngle PreviewFacing = new WAngle(384);
|
||||||
|
|
||||||
[Desc("Display order for the facing slider in the map editor")]
|
[Desc("Display order for the facing slider in the map editor")]
|
||||||
public readonly int EditorFacingDisplayOrder = 3;
|
public readonly int EditorFacingDisplayOrder = 3;
|
||||||
@@ -160,14 +161,14 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
[Desc("Cursor to display when unable to land at target building.")]
|
[Desc("Cursor to display when unable to land at target building.")]
|
||||||
public readonly string EnterBlockedCursor = "enter-blocked";
|
public readonly string EnterBlockedCursor = "enter-blocked";
|
||||||
|
|
||||||
public WAngle GetInitialFacing() { return WAngle.FromFacing(InitialFacing); }
|
public WAngle GetInitialFacing() { return InitialFacing; }
|
||||||
public WDist GetCruiseAltitude() { return CruiseAltitude; }
|
public WDist GetCruiseAltitude() { return CruiseAltitude; }
|
||||||
|
|
||||||
public override object Create(ActorInitializer init) { return new Aircraft(init, this); }
|
public override object Create(ActorInitializer init) { return new Aircraft(init, this); }
|
||||||
|
|
||||||
IEnumerable<ActorInit> IActorPreviewInitInfo.ActorPreviewInits(ActorInfo ai, ActorPreviewType type)
|
IEnumerable<ActorInit> IActorPreviewInitInfo.ActorPreviewInits(ActorInfo ai, ActorPreviewType type)
|
||||||
{
|
{
|
||||||
yield return new FacingInit(WAngle.FromFacing(PreviewFacing));
|
yield return new FacingInit(PreviewFacing);
|
||||||
}
|
}
|
||||||
|
|
||||||
public IReadOnlyDictionary<CPos, SubCell> OccupiedCells(ActorInfo info, CPos location, SubCell subCell = SubCell.Any) { return new ReadOnlyDictionary<CPos, SubCell>(); }
|
public IReadOnlyDictionary<CPos, SubCell> OccupiedCells(ActorInfo info, CPos location, SubCell subCell = SubCell.Any) { return new ReadOnlyDictionary<CPos, SubCell>(); }
|
||||||
@@ -200,7 +201,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
actor =>
|
actor =>
|
||||||
{
|
{
|
||||||
var init = actor.GetInitOrDefault<FacingInit>(this);
|
var init = actor.GetInitOrDefault<FacingInit>(this);
|
||||||
return (init != null ? init.Value : WAngle.FromFacing(InitialFacing)).Angle;
|
return (init != null ? init.Value : InitialFacing).Angle;
|
||||||
},
|
},
|
||||||
(actor, value) => actor.ReplaceInit(new FacingInit(new WAngle((int)value))));
|
(actor, value) => actor.ReplaceInit(new FacingInit(new WAngle((int)value))));
|
||||||
}
|
}
|
||||||
@@ -250,8 +251,8 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
public WPos CenterPosition { get; private set; }
|
public WPos CenterPosition { get; private set; }
|
||||||
|
|
||||||
public CPos TopLeft { get { return self.World.Map.CellContaining(CenterPosition); } }
|
public CPos TopLeft { get { return self.World.Map.CellContaining(CenterPosition); } }
|
||||||
public WAngle TurnSpeed { get { return !IsTraitDisabled && !IsTraitPaused ? new WAngle(4 * Info.TurnSpeed) : WAngle.Zero; } }
|
public WAngle TurnSpeed { get { return !IsTraitDisabled && !IsTraitPaused ? Info.TurnSpeed : WAngle.Zero; } }
|
||||||
public WAngle? IdleTurnSpeed { get { return Info.IdleTurnSpeed != -1 ? new WAngle(4 * Info.IdleTurnSpeed) : (WAngle?)null; } }
|
public WAngle? IdleTurnSpeed { get { return Info.IdleTurnSpeed; } }
|
||||||
|
|
||||||
public Actor ReservedActor { get; private set; }
|
public Actor ReservedActor { get; private set; }
|
||||||
public bool MayYieldReservation { get; private set; }
|
public bool MayYieldReservation { get; private set; }
|
||||||
@@ -292,7 +293,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
if (centerPositionInit != null)
|
if (centerPositionInit != null)
|
||||||
SetPosition(self, centerPositionInit.Value);
|
SetPosition(self, centerPositionInit.Value);
|
||||||
|
|
||||||
Facing = init.GetValue<FacingInit, WAngle>(WAngle.FromFacing(Info.InitialFacing));
|
Facing = init.GetValue<FacingInit, WAngle>(Info.InitialFacing);
|
||||||
creationActivityDelay = init.GetValue<CreationActivityDelayInit, int>(0);
|
creationActivityDelay = init.GetValue<CreationActivityDelayInit, int>(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -22,9 +22,9 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
[Desc("Explosion weapon that triggers when hitting ground.")]
|
[Desc("Explosion weapon that triggers when hitting ground.")]
|
||||||
public readonly string Explosion = "UnitExplode";
|
public readonly string Explosion = "UnitExplode";
|
||||||
|
|
||||||
[Desc("Limit the maximum spin (in facing units per tick) that can be achieved while crashing.",
|
[Desc("Limit the maximum spin (in angle units per tick) that can be achieved while crashing.",
|
||||||
"0 disables spinning. Negative values imply no limit.")]
|
"0 disables spinning. Leave undefined for no limit.")]
|
||||||
public readonly int MaximumSpinSpeed = -1;
|
public readonly WAngle? MaximumSpinSpeed = null;
|
||||||
|
|
||||||
[Desc("Does the aircraft (husk) move forward at aircraft speed?")]
|
[Desc("Does the aircraft (husk) move forward at aircraft speed?")]
|
||||||
public readonly bool Moves = false;
|
public readonly bool Moves = false;
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
|
|
||||||
[Desc("Cell offset where the exiting actor enters the ActorMap relative to the topleft cell of the producing actor.")]
|
[Desc("Cell offset where the exiting actor enters the ActorMap relative to the topleft cell of the producing actor.")]
|
||||||
public readonly CVec ExitCell = CVec.Zero;
|
public readonly CVec ExitCell = CVec.Zero;
|
||||||
public readonly int Facing = -1;
|
public readonly WAngle? Facing = null;
|
||||||
|
|
||||||
[Desc("Type tags on this exit.")]
|
[Desc("Type tags on this exit.")]
|
||||||
public readonly HashSet<string> ProductionTypes = new HashSet<string>();
|
public readonly HashSet<string> ProductionTypes = new HashSet<string>();
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
public readonly CVec SpawnOffset = CVec.Zero;
|
public readonly CVec SpawnOffset = CVec.Zero;
|
||||||
|
|
||||||
[Desc("Which direction the unit should face.")]
|
[Desc("Which direction the unit should face.")]
|
||||||
public readonly int Facing = 0;
|
public readonly WAngle Facing = WAngle.Zero;
|
||||||
|
|
||||||
[Desc("Whether another actor should spawn upon re-enabling the trait.")]
|
[Desc("Whether another actor should spawn upon re-enabling the trait.")]
|
||||||
public readonly bool AllowRespawn = false;
|
public readonly bool AllowRespawn = false;
|
||||||
@@ -81,7 +81,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
new ParentActorInit(self),
|
new ParentActorInit(self),
|
||||||
new LocationInit(self.Location + Info.SpawnOffset),
|
new LocationInit(self.Location + Info.SpawnOffset),
|
||||||
new OwnerInit(self.Owner),
|
new OwnerInit(self.Owner),
|
||||||
new FacingInit(WAngle.FromFacing(Info.Facing)),
|
new FacingInit(Info.Facing),
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
public readonly bool BaselineSpawn = false;
|
public readonly bool BaselineSpawn = false;
|
||||||
|
|
||||||
[Desc("Direction the aircraft should face to land.")]
|
[Desc("Direction the aircraft should face to land.")]
|
||||||
public readonly int Facing = 64;
|
public readonly WAngle Facing = new WAngle(256);
|
||||||
|
|
||||||
public override object Create(ActorInitializer init) { return new ProductionAirdrop(init, this); }
|
public override object Create(ActorInitializer init) { return new ProductionAirdrop(init, this); }
|
||||||
}
|
}
|
||||||
@@ -77,7 +77,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
var loc = self.Location.ToMPos(map);
|
var loc = self.Location.ToMPos(map);
|
||||||
startPos = new MPos(loc.U + map.Bounds.Width, loc.V).ToCPos(map);
|
startPos = new MPos(loc.U + map.Bounds.Width, loc.V).ToCPos(map);
|
||||||
endPos = new MPos(map.Bounds.Left, loc.V).ToCPos(map);
|
endPos = new MPos(map.Bounds.Left, loc.V).ToCPos(map);
|
||||||
spawnFacing = WAngle.FromFacing(info.Facing);
|
spawnFacing = info.Facing;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Assume a single exit point for simplicity
|
// Assume a single exit point for simplicity
|
||||||
@@ -99,7 +99,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
});
|
});
|
||||||
|
|
||||||
var exitCell = self.Location + exit.ExitCell;
|
var exitCell = self.Location + exit.ExitCell;
|
||||||
actor.QueueActivity(new Land(actor, Target.FromActor(self), WDist.Zero, WVec.Zero, WAngle.FromFacing(info.Facing), clearCells: new CPos[1] { exitCell }));
|
actor.QueueActivity(new Land(actor, Target.FromActor(self), WDist.Zero, WVec.Zero, info.Facing, clearCells: new CPos[1] { exitCell }));
|
||||||
actor.QueueActivity(new CallFunc(() =>
|
actor.QueueActivity(new CallFunc(() =>
|
||||||
{
|
{
|
||||||
if (!self.IsInWorld || self.IsDead)
|
if (!self.IsInWorld || self.IsDead)
|
||||||
|
|||||||
@@ -23,8 +23,8 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
{
|
{
|
||||||
public class RefineryInfo : TraitInfo, Requires<WithSpriteBodyInfo>, IAcceptResourcesInfo
|
public class RefineryInfo : TraitInfo, Requires<WithSpriteBodyInfo>, IAcceptResourcesInfo
|
||||||
{
|
{
|
||||||
[Desc("Actual harvester facing when docking, 0-255 counter-clock-wise.")]
|
[Desc("Actual harvester facing when docking.")]
|
||||||
public readonly int DockAngle = 0;
|
public readonly WAngle DockAngle = WAngle.Zero;
|
||||||
|
|
||||||
[Desc("Docking cell relative to top-left cell.")]
|
[Desc("Docking cell relative to top-left cell.")]
|
||||||
public readonly CVec DockOffset = CVec.Zero;
|
public readonly CVec DockOffset = CVec.Zero;
|
||||||
@@ -71,7 +71,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
|
|
||||||
public bool AllowDocking { get { return !preventDock; } }
|
public bool AllowDocking { get { return !preventDock; } }
|
||||||
public CVec DeliveryOffset { get { return info.DockOffset; } }
|
public CVec DeliveryOffset { get { return info.DockOffset; } }
|
||||||
public int DeliveryAngle { get { return info.DockAngle; } }
|
public WAngle DeliveryAngle { get { return info.DockAngle; } }
|
||||||
public bool IsDragRequired { get { return info.IsDragRequired; } }
|
public bool IsDragRequired { get { return info.IsDragRequired; } }
|
||||||
public WVec DragOffset { get { return info.DragOffset; } }
|
public WVec DragOffset { get { return info.DragOffset; } }
|
||||||
public int DragLength { get { return info.DragLength; } }
|
public int DragLength { get { return info.DragLength; } }
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
public readonly WDist LoadRange = WDist.FromCells(5);
|
public readonly WDist LoadRange = WDist.FromCells(5);
|
||||||
|
|
||||||
[Desc("Which direction the passenger will face (relative to the transport) when unloading.")]
|
[Desc("Which direction the passenger will face (relative to the transport) when unloading.")]
|
||||||
public readonly int PassengerFacing = 128;
|
public readonly WAngle PassengerFacing = new WAngle(512);
|
||||||
|
|
||||||
[Desc("Delay (in ticks) before continuing after loading a passenger.")]
|
[Desc("Delay (in ticks) before continuing after loading a passenger.")]
|
||||||
public readonly int AfterLoadDelay = 8;
|
public readonly int AfterLoadDelay = 8;
|
||||||
@@ -370,10 +370,10 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
|
|
||||||
var passengerFacing = passenger.TraitOrDefault<IFacing>();
|
var passengerFacing = passenger.TraitOrDefault<IFacing>();
|
||||||
if (passengerFacing != null)
|
if (passengerFacing != null)
|
||||||
passengerFacing.Facing = facing.Value.Facing + WAngle.FromFacing(Info.PassengerFacing);
|
passengerFacing.Facing = facing.Value.Facing + Info.PassengerFacing;
|
||||||
|
|
||||||
foreach (var t in passenger.TraitsImplementing<Turreted>())
|
foreach (var t in passenger.TraitsImplementing<Turreted>())
|
||||||
t.TurretFacing = facing.Value.Facing.Facing + Info.PassengerFacing;
|
t.TurretFacing = (facing.Value.Facing + Info.PassengerFacing).Facing;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Load(Actor self, Actor a)
|
public void Load(Actor self, Actor a)
|
||||||
|
|||||||
@@ -43,8 +43,8 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
[Desc("Cursor to display when unable to (un)deploy the actor.")]
|
[Desc("Cursor to display when unable to (un)deploy the actor.")]
|
||||||
public readonly string DeployBlockedCursor = "deploy-blocked";
|
public readonly string DeployBlockedCursor = "deploy-blocked";
|
||||||
|
|
||||||
[Desc("Facing that the actor must face before deploying. Set to -1 to deploy regardless of facing.")]
|
[Desc("Facing that the actor must face before deploying. Leave undefined to deploy regardless of facing.")]
|
||||||
public readonly int Facing = -1;
|
public readonly WAngle? Facing = null;
|
||||||
|
|
||||||
[Desc("Play a randomly selected sound from this list when deploying.")]
|
[Desc("Play a randomly selected sound from this list when deploying.")]
|
||||||
public readonly string[] DeploySounds = null;
|
public readonly string[] DeploySounds = null;
|
||||||
@@ -94,8 +94,6 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
{
|
{
|
||||||
readonly Actor self;
|
readonly Actor self;
|
||||||
readonly bool checkTerrainType;
|
readonly bool checkTerrainType;
|
||||||
readonly bool canTurn;
|
|
||||||
readonly IMove move;
|
|
||||||
|
|
||||||
DeployState deployState;
|
DeployState deployState;
|
||||||
INotifyDeployTriggered[] notify;
|
INotifyDeployTriggered[] notify;
|
||||||
@@ -109,8 +107,6 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
{
|
{
|
||||||
self = init.Self;
|
self = init.Self;
|
||||||
checkTerrainType = info.AllowedTerrainTypes.Count > 0;
|
checkTerrainType = info.AllowedTerrainTypes.Count > 0;
|
||||||
canTurn = self.Info.HasTraitInfo<IFacingInfo>();
|
|
||||||
move = self.TraitOrDefault<IMove>();
|
|
||||||
deployState = init.GetValue<DeployStateInit, DeployState>(DeployState.Undeployed);
|
deployState = init.GetValue<DeployStateInit, DeployState>(DeployState.Undeployed);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -119,27 +115,25 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
notify = self.TraitsImplementing<INotifyDeployTriggered>().ToArray();
|
notify = self.TraitsImplementing<INotifyDeployTriggered>().ToArray();
|
||||||
base.Created(self);
|
base.Created(self);
|
||||||
|
|
||||||
|
if (Info.Facing.HasValue && deployState != DeployState.Undeployed)
|
||||||
|
{
|
||||||
|
var facing = self.TraitOrDefault<IFacing>();
|
||||||
|
if (facing != null)
|
||||||
|
facing.Facing = Info.Facing.Value;
|
||||||
|
}
|
||||||
|
|
||||||
switch (deployState)
|
switch (deployState)
|
||||||
{
|
{
|
||||||
case DeployState.Undeployed:
|
case DeployState.Undeployed:
|
||||||
OnUndeployCompleted();
|
OnUndeployCompleted();
|
||||||
break;
|
break;
|
||||||
case DeployState.Deploying:
|
case DeployState.Deploying:
|
||||||
if (canTurn)
|
|
||||||
self.Trait<IFacing>().Facing = WAngle.FromFacing(Info.Facing);
|
|
||||||
|
|
||||||
Deploy(true);
|
Deploy(true);
|
||||||
break;
|
break;
|
||||||
case DeployState.Deployed:
|
case DeployState.Deployed:
|
||||||
if (canTurn)
|
|
||||||
self.Trait<IFacing>().Facing = WAngle.FromFacing(Info.Facing);
|
|
||||||
|
|
||||||
OnDeployCompleted();
|
OnDeployCompleted();
|
||||||
break;
|
break;
|
||||||
case DeployState.Undeploying:
|
case DeployState.Undeploying:
|
||||||
if (canTurn)
|
|
||||||
self.Trait<IFacing>().Facing = WAngle.FromFacing(Info.Facing);
|
|
||||||
|
|
||||||
Undeploy(true);
|
Undeploy(true);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,16 +23,16 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
public readonly HashSet<string> AllowedTerrain = new HashSet<string>();
|
public readonly HashSet<string> AllowedTerrain = new HashSet<string>();
|
||||||
|
|
||||||
[Desc("Facing to use for actor previews (map editor, color picker, etc)")]
|
[Desc("Facing to use for actor previews (map editor, color picker, etc)")]
|
||||||
public readonly int PreviewFacing = 96;
|
public readonly WAngle PreviewFacing = new WAngle(384);
|
||||||
|
|
||||||
IEnumerable<ActorInit> IActorPreviewInitInfo.ActorPreviewInits(ActorInfo ai, ActorPreviewType type)
|
IEnumerable<ActorInit> IActorPreviewInitInfo.ActorPreviewInits(ActorInfo ai, ActorPreviewType type)
|
||||||
{
|
{
|
||||||
yield return new FacingInit(WAngle.FromFacing(PreviewFacing));
|
yield return new FacingInit(PreviewFacing);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override object Create(ActorInitializer init) { return new Husk(init, this); }
|
public override object Create(ActorInitializer init) { return new Husk(init, this); }
|
||||||
|
|
||||||
public WAngle GetInitialFacing() { return WAngle.FromFacing(128); }
|
public WAngle GetInitialFacing() { return new WAngle(512); }
|
||||||
|
|
||||||
public IReadOnlyDictionary<CPos, SubCell> OccupiedCells(ActorInfo info, CPos location, SubCell subCell = SubCell.Any)
|
public IReadOnlyDictionary<CPos, SubCell> OccupiedCells(ActorInfo info, CPos location, SubCell subCell = SubCell.Any)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -30,10 +30,10 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
[Desc("Which Locomotor does this trait use. Must be defined on the World actor.")]
|
[Desc("Which Locomotor does this trait use. Must be defined on the World actor.")]
|
||||||
public readonly string Locomotor = null;
|
public readonly string Locomotor = null;
|
||||||
|
|
||||||
public readonly int InitialFacing = 0;
|
public readonly WAngle InitialFacing = WAngle.Zero;
|
||||||
|
|
||||||
[Desc("Speed at which the actor turns.")]
|
[Desc("Speed at which the actor turns.")]
|
||||||
public readonly int TurnSpeed = 255;
|
public readonly WAngle TurnSpeed = new WAngle(512);
|
||||||
|
|
||||||
public readonly int Speed = 1;
|
public readonly int Speed = 1;
|
||||||
|
|
||||||
@@ -50,7 +50,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
public readonly string Voice = "Action";
|
public readonly string Voice = "Action";
|
||||||
|
|
||||||
[Desc("Facing to use for actor previews (map editor, color picker, etc)")]
|
[Desc("Facing to use for actor previews (map editor, color picker, etc)")]
|
||||||
public readonly int PreviewFacing = 96;
|
public readonly WAngle PreviewFacing = new WAngle(384);
|
||||||
|
|
||||||
[Desc("Display order for the facing slider in the map editor")]
|
[Desc("Display order for the facing slider in the map editor")]
|
||||||
public readonly int EditorFacingDisplayOrder = 3;
|
public readonly int EditorFacingDisplayOrder = 3;
|
||||||
@@ -65,7 +65,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
|
|
||||||
IEnumerable<ActorInit> IActorPreviewInitInfo.ActorPreviewInits(ActorInfo ai, ActorPreviewType type)
|
IEnumerable<ActorInit> IActorPreviewInitInfo.ActorPreviewInits(ActorInfo ai, ActorPreviewType type)
|
||||||
{
|
{
|
||||||
yield return new FacingInit(WAngle.FromFacing(PreviewFacing));
|
yield return new FacingInit(PreviewFacing);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override object Create(ActorInitializer init) { return new Mobile(init, this); }
|
public override object Create(ActorInitializer init) { return new Mobile(init, this); }
|
||||||
@@ -87,7 +87,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
base.RulesetLoaded(rules, ai);
|
base.RulesetLoaded(rules, ai);
|
||||||
}
|
}
|
||||||
|
|
||||||
public WAngle GetInitialFacing() { return WAngle.FromFacing(InitialFacing); }
|
public WAngle GetInitialFacing() { return InitialFacing; }
|
||||||
|
|
||||||
// initialized and used by CanEnterCell
|
// initialized and used by CanEnterCell
|
||||||
Locomotor locomotor;
|
Locomotor locomotor;
|
||||||
@@ -134,7 +134,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
actor =>
|
actor =>
|
||||||
{
|
{
|
||||||
var init = actor.GetInitOrDefault<FacingInit>(this);
|
var init = actor.GetInitOrDefault<FacingInit>(this);
|
||||||
return (init != null ? init.Value : WAngle.FromFacing(InitialFacing)).Angle;
|
return (init != null ? init.Value : InitialFacing).Angle;
|
||||||
},
|
},
|
||||||
(actor, value) => actor.ReplaceInit(new FacingInit(new WAngle((int)value))));
|
(actor, value) => actor.ReplaceInit(new FacingInit(new WAngle((int)value))));
|
||||||
}
|
}
|
||||||
@@ -206,7 +206,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
|
|
||||||
public WRot Orientation { get { return orientation; } }
|
public WRot Orientation { get { return orientation; } }
|
||||||
|
|
||||||
public WAngle TurnSpeed { get { return new WAngle(4 * Info.TurnSpeed); } }
|
public WAngle TurnSpeed { get { return Info.TurnSpeed; } }
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
[Sync]
|
[Sync]
|
||||||
@@ -265,7 +265,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
SetVisualPosition(self, init.World.Map.CenterOfSubCell(FromCell, FromSubCell));
|
SetVisualPosition(self, init.World.Map.CenterOfSubCell(FromCell, FromSubCell));
|
||||||
}
|
}
|
||||||
|
|
||||||
Facing = oldFacing = init.GetValue<FacingInit, WAngle>(WAngle.FromFacing(info.InitialFacing));
|
Facing = oldFacing = init.GetValue<FacingInit, WAngle>(info.InitialFacing);
|
||||||
|
|
||||||
// Sets the initial visual position
|
// Sets the initial visual position
|
||||||
// Unit will move into the cell grid (defined by LocationInit) as its initial activity
|
// Unit will move into the cell grid (defined by LocationInit) as its initial activity
|
||||||
|
|||||||
@@ -56,8 +56,8 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
var spawn = self.CenterPosition + exitinfo.SpawnOffset;
|
var spawn = self.CenterPosition + exitinfo.SpawnOffset;
|
||||||
var to = self.World.Map.CenterOfCell(exit);
|
var to = self.World.Map.CenterOfCell(exit);
|
||||||
|
|
||||||
var initialFacing = WAngle.FromFacing(exitinfo.Facing);
|
WAngle initialFacing;
|
||||||
if (exitinfo.Facing < 0)
|
if (!exitinfo.Facing.HasValue)
|
||||||
{
|
{
|
||||||
var delta = to - spawn;
|
var delta = to - spawn;
|
||||||
if (delta.HorizontalLengthSquared == 0)
|
if (delta.HorizontalLengthSquared == 0)
|
||||||
@@ -68,6 +68,8 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
else
|
else
|
||||||
initialFacing = delta.Yaw;
|
initialFacing = delta.Yaw;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
initialFacing = exitinfo.Facing.Value;
|
||||||
|
|
||||||
exitLocations = rp.Value != null && rp.Value.Path.Count > 0 ? rp.Value.Path : new List<CPos> { exit };
|
exitLocations = rp.Value != null && rp.Value.Path.Count > 0 ? rp.Value.Path : new List<CPos> { exit };
|
||||||
|
|
||||||
|
|||||||
@@ -124,7 +124,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
var spawn = self.World.Map.CenterOfCell(exit) + new WVec(WDist.Zero, WDist.Zero, altitude);
|
var spawn = self.World.Map.CenterOfCell(exit) + new WVec(WDist.Zero, WDist.Zero, altitude);
|
||||||
var to = self.World.Map.CenterOfCell(exit);
|
var to = self.World.Map.CenterOfCell(exit);
|
||||||
|
|
||||||
var initialFacing = exitinfo == null || exitinfo.Facing < 0 ? (to - spawn).Yaw : WAngle.FromFacing(exitinfo.Facing);
|
var initialFacing = (exitinfo != null && exitinfo.Facing.HasValue) ? exitinfo.Facing.Value : (to - spawn).Yaw;
|
||||||
|
|
||||||
exitLocations = rp.Value != null && rp.Value.Path.Count > 0 ? rp.Value.Path : new List<CPos> { exit };
|
exitLocations = rp.Value != null && rp.Value.Path.Count > 0 ? rp.Value.Path : new List<CPos> { exit };
|
||||||
|
|
||||||
|
|||||||
@@ -87,7 +87,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
{
|
{
|
||||||
var aircraft = new List<Actor>();
|
var aircraft = new List<Actor>();
|
||||||
if (!facing.HasValue)
|
if (!facing.HasValue)
|
||||||
facing = WAngle.FromFacing(256 * self.World.SharedRandom.Next(info.QuantizedFacings) / info.QuantizedFacings);
|
facing = new WAngle(1024 * self.World.SharedRandom.Next(info.QuantizedFacings) / info.QuantizedFacings);
|
||||||
|
|
||||||
var altitude = self.World.Map.Rules.Actors[info.UnitType].TraitInfo<AircraftInfo>().CruiseAltitude.Length;
|
var altitude = self.World.Map.Rules.Actors[info.UnitType].TraitInfo<AircraftInfo>().CruiseAltitude.Length;
|
||||||
var attackRotation = WRot.FromYaw(facing.Value);
|
var attackRotation = WRot.FromYaw(facing.Value);
|
||||||
|
|||||||
@@ -105,7 +105,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
var info = Info as ParatroopersPowerInfo;
|
var info = Info as ParatroopersPowerInfo;
|
||||||
|
|
||||||
if (!facing.HasValue)
|
if (!facing.HasValue)
|
||||||
facing = WAngle.FromFacing(256 * self.World.SharedRandom.Next(info.QuantizedFacings) / info.QuantizedFacings);
|
facing = new WAngle(1024 * self.World.SharedRandom.Next(info.QuantizedFacings) / info.QuantizedFacings);
|
||||||
|
|
||||||
var utLower = info.UnitType.ToLowerInvariant();
|
var utLower = info.UnitType.ToLowerInvariant();
|
||||||
ActorInfo unitType;
|
ActorInfo unitType;
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
public readonly int Velocity = 75;
|
public readonly int Velocity = 75;
|
||||||
|
|
||||||
[Desc("Speed at which the particle turns.")]
|
[Desc("Speed at which the particle turns.")]
|
||||||
public readonly int TurnSpeed = 15;
|
public readonly WAngle TurnSpeed = new WAngle(60);
|
||||||
|
|
||||||
public override object Create(ActorInitializer init) { return new ThrowsParticle(init, this); }
|
public override object Create(ActorInitializer init) { return new ThrowsParticle(init, this); }
|
||||||
}
|
}
|
||||||
@@ -80,9 +80,9 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
length = (finalPos - initialPos).Length / info.Velocity;
|
length = (finalPos - initialPos).Length / info.Velocity;
|
||||||
|
|
||||||
// WAngle requires positive inputs, so track the speed and direction separately
|
// WAngle requires positive inputs, so track the speed and direction separately
|
||||||
var rotationSpeed = WDist.FromPDF(Game.CosmeticRandom, 2).Length * info.TurnSpeed / 1024;
|
var rotationSpeed = WDist.FromPDF(Game.CosmeticRandom, 2).Length * info.TurnSpeed.Angle / 1024;
|
||||||
direction = rotationSpeed < 0 ? -1 : 1;
|
direction = rotationSpeed < 0 ? -1 : 1;
|
||||||
rotation = WAngle.FromFacing(Math.Abs(rotationSpeed));
|
rotation = new WAngle(Math.Abs(rotationSpeed));
|
||||||
|
|
||||||
var anim = new Animation(init.World, rs.GetImage(self), () => facing);
|
var anim = new Animation(init.World, rs.GetImage(self), () => facing);
|
||||||
anim.PlayRepeating(info.Anim);
|
anim.PlayRepeating(info.Anim);
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
public readonly CVec Offset = CVec.Zero;
|
public readonly CVec Offset = CVec.Zero;
|
||||||
|
|
||||||
[Desc("Facing that the actor must face before transforming.")]
|
[Desc("Facing that the actor must face before transforming.")]
|
||||||
public readonly int Facing = 96;
|
public readonly WAngle Facing = new WAngle(384);
|
||||||
|
|
||||||
[Desc("Sounds to play when transforming.")]
|
[Desc("Sounds to play when transforming.")]
|
||||||
public readonly string[] TransformSounds = { };
|
public readonly string[] TransformSounds = { };
|
||||||
@@ -91,7 +91,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
return new Transform(self, Info.IntoActor)
|
return new Transform(self, Info.IntoActor)
|
||||||
{
|
{
|
||||||
Offset = Info.Offset,
|
Offset = Info.Offset,
|
||||||
Facing = WAngle.FromFacing(Info.Facing),
|
Facing = Info.Facing,
|
||||||
Sounds = Info.TransformSounds,
|
Sounds = Info.TransformSounds,
|
||||||
Notification = Info.TransformNotification,
|
Notification = Info.TransformNotification,
|
||||||
Faction = faction
|
Faction = faction
|
||||||
|
|||||||
@@ -20,9 +20,11 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
public class TurretedInfo : PausableConditionalTraitInfo, Requires<BodyOrientationInfo>, IActorPreviewInitInfo, IEditorActorOptions
|
public class TurretedInfo : PausableConditionalTraitInfo, Requires<BodyOrientationInfo>, IActorPreviewInitInfo, IEditorActorOptions
|
||||||
{
|
{
|
||||||
public readonly string Turret = "primary";
|
public readonly string Turret = "primary";
|
||||||
|
|
||||||
[Desc("Speed at which the turret turns.")]
|
[Desc("Speed at which the turret turns.")]
|
||||||
public readonly int TurnSpeed = 255;
|
public readonly WAngle TurnSpeed = new WAngle(512);
|
||||||
public readonly int InitialFacing = 0;
|
|
||||||
|
public readonly WAngle InitialFacing = WAngle.Zero;
|
||||||
|
|
||||||
[Desc("Number of ticks before turret is realigned. (-1 turns off realignment)")]
|
[Desc("Number of ticks before turret is realigned. (-1 turns off realignment)")]
|
||||||
public readonly int RealignDelay = 40;
|
public readonly int RealignDelay = 40;
|
||||||
@@ -35,7 +37,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
|
|
||||||
IEnumerable<ActorInit> IActorPreviewInitInfo.ActorPreviewInits(ActorInfo ai, ActorPreviewType type)
|
IEnumerable<ActorInit> IActorPreviewInitInfo.ActorPreviewInits(ActorInfo ai, ActorPreviewType type)
|
||||||
{
|
{
|
||||||
yield return new TurretFacingInit(this, WAngle.FromFacing(InitialFacing));
|
yield return new TurretFacingInit(this, InitialFacing);
|
||||||
}
|
}
|
||||||
|
|
||||||
IEnumerable<EditorActorOption> IEditorActorOptions.ActorOptions(ActorInfo ai, World world)
|
IEnumerable<EditorActorOption> IEditorActorOptions.ActorOptions(ActorInfo ai, World world)
|
||||||
@@ -47,7 +49,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
if (init != null)
|
if (init != null)
|
||||||
return init.Value.Angle;
|
return init.Value.Angle;
|
||||||
|
|
||||||
return WAngle.FromFacing(InitialFacing).Angle;
|
return InitialFacing.Angle;
|
||||||
},
|
},
|
||||||
(actor, value) => actor.ReplaceInit(new TurretFacingInit(this, new WAngle((int)value)), this));
|
(actor, value) => actor.ReplaceInit(new TurretFacingInit(this, new WAngle((int)value)), this));
|
||||||
}
|
}
|
||||||
@@ -78,7 +80,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
|
|
||||||
public static Func<WAngle> TurretFacingFromInit(IActorInitializer init, TurretedInfo info)
|
public static Func<WAngle> TurretFacingFromInit(IActorInitializer init, TurretedInfo info)
|
||||||
{
|
{
|
||||||
return TurretFacingFromInit(init, info, WAngle.FromFacing(info.InitialFacing));
|
return TurretFacingFromInit(init, info, info.InitialFacing);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Func<WAngle> TurretFacingFromInit(IActorInitializer init, TraitInfo info, WAngle defaultFacing)
|
public static Func<WAngle> TurretFacingFromInit(IActorInitializer init, TraitInfo info, WAngle defaultFacing)
|
||||||
@@ -155,7 +157,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
void MoveTurret()
|
void MoveTurret()
|
||||||
{
|
{
|
||||||
var df = DesiredFacing ?? (facing != null ? facing.Facing.Facing : TurretFacing);
|
var df = DesiredFacing ?? (facing != null ? facing.Facing.Facing : TurretFacing);
|
||||||
TurretFacing = Util.TickFacing(TurretFacing, df, Info.TurnSpeed);
|
TurretFacing = Util.TickFacing(TurretFacing, df, Info.TurnSpeed.Facing);
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool FaceTarget(Actor self, Target target)
|
public bool FaceTarget(Actor self, Target target)
|
||||||
|
|||||||
@@ -141,7 +141,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
if (info.DeliveryAircraft != null)
|
if (info.DeliveryAircraft != null)
|
||||||
{
|
{
|
||||||
var crate = w.CreateActor(false, crateActor, new TypeDictionary { new OwnerInit(w.WorldActor.Owner) });
|
var crate = w.CreateActor(false, crateActor, new TypeDictionary { new OwnerInit(w.WorldActor.Owner) });
|
||||||
var dropFacing = WAngle.FromFacing(256 * self.World.SharedRandom.Next(info.QuantizedFacings) / info.QuantizedFacings);
|
var dropFacing = new WAngle(1024 * self.World.SharedRandom.Next(info.QuantizedFacings) / info.QuantizedFacings);
|
||||||
var delta = new WVec(0, -1024, 0).Rotate(WRot.FromYaw(dropFacing));
|
var delta = new WVec(0, -1024, 0).Rotate(WRot.FromYaw(dropFacing));
|
||||||
|
|
||||||
var altitude = self.World.Map.Rules.Actors[info.DeliveryAircraft].TraitInfo<AircraftInfo>().CruiseAltitude.Length;
|
var altitude = self.World.Map.Rules.Actors[info.DeliveryAircraft].TraitInfo<AircraftInfo>().CruiseAltitude.Length;
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
[Desc("Required for the map editor to work. Attach this to the world actor.")]
|
[Desc("Required for the map editor to work. Attach this to the world actor.")]
|
||||||
public class EditorCursorLayerInfo : TraitInfo, Requires<EditorActorLayerInfo>
|
public class EditorCursorLayerInfo : TraitInfo, Requires<EditorActorLayerInfo>
|
||||||
{
|
{
|
||||||
public readonly int PreviewFacing = 96;
|
public readonly WAngle PreviewFacing = new WAngle(384);
|
||||||
|
|
||||||
public override object Create(ActorInitializer init) { return new EditorCursorLayer(init.Self, this); }
|
public override object Create(ActorInitializer init) { return new EditorCursorLayer(init.Self, this); }
|
||||||
}
|
}
|
||||||
@@ -194,7 +194,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (actor.HasTraitInfo<IFacingInfo>())
|
if (actor.HasTraitInfo<IFacingInfo>())
|
||||||
reference.Add(new FacingInit(WAngle.FromFacing(info.PreviewFacing)));
|
reference.Add(new FacingInit(info.PreviewFacing));
|
||||||
|
|
||||||
Type = EditorCursorType.Actor;
|
Type = EditorCursorType.Actor;
|
||||||
Actor = new EditorActorPreview(wr, null, reference, owner);
|
Actor = new EditorActorPreview(wr, null, reference, owner);
|
||||||
|
|||||||
@@ -43,11 +43,11 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
[Desc("Outer radius for spawning support actors")]
|
[Desc("Outer radius for spawning support actors")]
|
||||||
public readonly int OuterSupportRadius = 4;
|
public readonly int OuterSupportRadius = 4;
|
||||||
|
|
||||||
[Desc("Initial facing of BaseActor. -1 means random.")]
|
[Desc("Initial facing of BaseActor. Leave undefined for random facings.")]
|
||||||
public readonly int BaseActorFacing = 128;
|
public readonly WAngle? BaseActorFacing = new WAngle(512);
|
||||||
|
|
||||||
[Desc("Initial facing of SupportActors. -1 means random.")]
|
[Desc("Initial facing of SupportActors. Leave undefined for random facings.")]
|
||||||
public readonly int SupportActorsFacing = -1;
|
public readonly WAngle? SupportActorsFacing = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public class MPStartUnits { }
|
public class MPStartUnits { }
|
||||||
|
|||||||
@@ -85,7 +85,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
|
|
||||||
if (unitGroup.BaseActor != null)
|
if (unitGroup.BaseActor != null)
|
||||||
{
|
{
|
||||||
var facing = unitGroup.BaseActorFacing < 0 ? new WAngle(w.SharedRandom.Next(1024)) : WAngle.FromFacing(unitGroup.BaseActorFacing);
|
var facing = unitGroup.BaseActorFacing.HasValue ? unitGroup.BaseActorFacing.Value : new WAngle(w.SharedRandom.Next(1024));
|
||||||
w.CreateActor(unitGroup.BaseActor.ToLowerInvariant(), new TypeDictionary
|
w.CreateActor(unitGroup.BaseActor.ToLowerInvariant(), new TypeDictionary
|
||||||
{
|
{
|
||||||
new LocationInit(sp + unitGroup.BaseActorOffset),
|
new LocationInit(sp + unitGroup.BaseActorOffset),
|
||||||
@@ -113,7 +113,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
}
|
}
|
||||||
|
|
||||||
var subCell = ip.SharesCell ? w.ActorMap.FreeSubCell(validCell) : 0;
|
var subCell = ip.SharesCell ? w.ActorMap.FreeSubCell(validCell) : 0;
|
||||||
var facing = unitGroup.SupportActorsFacing < 0 ? new WAngle(w.SharedRandom.Next(1024)) : WAngle.FromFacing(unitGroup.SupportActorsFacing);
|
var facing = unitGroup.SupportActorsFacing.HasValue ? unitGroup.SupportActorsFacing.Value : new WAngle(w.SharedRandom.Next(1024));
|
||||||
|
|
||||||
w.CreateActor(s.ToLowerInvariant(), new TypeDictionary
|
w.CreateActor(s.ToLowerInvariant(), new TypeDictionary
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -0,0 +1,105 @@
|
|||||||
|
#region Copyright & License Information
|
||||||
|
/*
|
||||||
|
* Copyright 2007-2020 The OpenRA Developers (see AUTHORS)
|
||||||
|
* This file is part of OpenRA, which is free software. It is made
|
||||||
|
* available to you under the terms of the GNU General Public License
|
||||||
|
* as published by the Free Software Foundation, either version 3 of
|
||||||
|
* the License, or (at your option) any later version. For more
|
||||||
|
* information, see COPYING.
|
||||||
|
*/
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
|
namespace OpenRA.Mods.Common.UpdateRules.Rules
|
||||||
|
{
|
||||||
|
class ReplaceFacingAngles : UpdateRule
|
||||||
|
{
|
||||||
|
static readonly Dictionary<string, string[]> TraitFields = new Dictionary<string, string[]>()
|
||||||
|
{
|
||||||
|
{ "Aircraft", new[] { "InitialFacing", "PreviewFacing", "TurnSpeed", "IdleTurnSpeed" } },
|
||||||
|
{ "Mobile", new[] { "InitialFacing", "PreviewFacing", "TurnSpeed" } },
|
||||||
|
{ "Husk", new[] { "PreviewFacing" } },
|
||||||
|
{ "Turreted", new[] { "InitialFacing", "TurnSpeed" } },
|
||||||
|
{ "GrantConditionOnDeploy", new[] { "Facing" } },
|
||||||
|
{ "FreeActor", new[] { "Facing" } },
|
||||||
|
{ "ProductionAirdrop", new[] { "Facing" } },
|
||||||
|
{ "EditorCursorLayer", new[] { "PreviewFacing" } },
|
||||||
|
{ "MPStartUnits", new[] { "BaseActorFacing", "SupportActorsFacing" } },
|
||||||
|
{ "Refinery", new[] { "DockAngle" } },
|
||||||
|
{ "Cargo", new[] { "PassengerFacing" } },
|
||||||
|
{ "Exit", new[] { "Facing" } },
|
||||||
|
{ "ThrowsParticle", new[] { "TurnSpeed" } },
|
||||||
|
{ "Transforms", new[] { "Facing" } },
|
||||||
|
{ "FallsToEarth", new[] { "MaximumSpinSpeed" } },
|
||||||
|
{ "ConyardChronoReturn", new[] { "Facing" } },
|
||||||
|
{ "TDGunboat", new[] { "InitialFacing", "PreviewFacing" } },
|
||||||
|
{ "AttackPopupTurreted", new[] { "DefaultFacing" } },
|
||||||
|
{ "DropPodsPower", new[] { "PodFacing" } },
|
||||||
|
{ "TiberianSunRefinery", new[] { "DockAngle" } },
|
||||||
|
};
|
||||||
|
|
||||||
|
static readonly Dictionary<string, string[]> ProjectileFields = new Dictionary<string, string[]>()
|
||||||
|
{
|
||||||
|
{ "Missile", new[] { "HorizontalRateOfTurn", "VerticalRateOfTurn" } }
|
||||||
|
};
|
||||||
|
|
||||||
|
public override string Name { get { return "Increase facing angle resolution"; } }
|
||||||
|
public override string Description
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return "Trait fields that defined facings (0-255) have been replaced with higher resolution angles (0-1023).\n" +
|
||||||
|
"Values for the following trait fields should be multiplied by 4, or if undefined (-1) replaced by an empty definition:\n" +
|
||||||
|
UpdateUtils.FormatMessageList(TraitFields.Select(t => t.Key + "\n" + UpdateUtils.FormatMessageList(t.Value))) + "\n" +
|
||||||
|
"Values for the following projectile files should be multiplied by 4:\n" +
|
||||||
|
UpdateUtils.FormatMessageList(ProjectileFields.Select(t => t.Key + "\n" + UpdateUtils.FormatMessageList(t.Value)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public override IEnumerable<string> UpdateActorNode(ModData modData, MiniYamlNode actorNode)
|
||||||
|
{
|
||||||
|
foreach (var kv in TraitFields)
|
||||||
|
{
|
||||||
|
foreach (var traitNode in actorNode.ChildrenMatching(kv.Key))
|
||||||
|
{
|
||||||
|
foreach (var fieldName in kv.Value)
|
||||||
|
{
|
||||||
|
foreach (var fieldNode in traitNode.ChildrenMatching(fieldName))
|
||||||
|
{
|
||||||
|
var value = fieldNode.NodeValue<int>();
|
||||||
|
fieldNode.Value.Value = value != -1 ? FieldSaver.FormatValue(value != 255 ? 4 * value : 1023) : "";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
yield break;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override IEnumerable<string> UpdateWeaponNode(ModData modData, MiniYamlNode weaponNode)
|
||||||
|
{
|
||||||
|
foreach (var projectileNode in weaponNode.ChildrenMatching("Projectile"))
|
||||||
|
{
|
||||||
|
if (projectileNode.Value.Value == null)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
string[] fieldNames;
|
||||||
|
if (ProjectileFields.TryGetValue(projectileNode.Value.Value, out fieldNames))
|
||||||
|
{
|
||||||
|
foreach (var fieldName in fieldNames)
|
||||||
|
{
|
||||||
|
foreach (var fieldNode in projectileNode.ChildrenMatching(fieldName))
|
||||||
|
{
|
||||||
|
var value = fieldNode.NodeValue<int>();
|
||||||
|
fieldNode.Value.Value = FieldSaver.FormatValue(value != 255 ? 4 * value : 1023);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
yield break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -69,6 +69,7 @@ namespace OpenRA.Mods.Common.UpdateRules
|
|||||||
new UpdateMapInits(),
|
new UpdateMapInits(),
|
||||||
new CreateFlashPaletteEffectWarhead(),
|
new CreateFlashPaletteEffectWarhead(),
|
||||||
new ChangeTargetLineDelayToMilliseconds(),
|
new ChangeTargetLineDelayToMilliseconds(),
|
||||||
|
new ReplaceFacingAngles(),
|
||||||
})
|
})
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ TRAN:
|
|||||||
Queue: Aircraft.GDI, Aircraft.Nod
|
Queue: Aircraft.GDI, Aircraft.Nod
|
||||||
Description: Fast Infantry Transport Helicopter.\n Unarmed
|
Description: Fast Infantry Transport Helicopter.\n Unarmed
|
||||||
Aircraft:
|
Aircraft:
|
||||||
TurnSpeed: 5
|
TurnSpeed: 20
|
||||||
Speed: 150
|
Speed: 150
|
||||||
AltitudeVelocity: 0c100
|
AltitudeVelocity: 0c100
|
||||||
Health:
|
Health:
|
||||||
@@ -64,7 +64,7 @@ HELI:
|
|||||||
Queue: Aircraft.Nod
|
Queue: Aircraft.Nod
|
||||||
Description: Helicopter Gunship with Chainguns.\n Strong vs Infantry, Light Vehicles and\n Aircraft\n Weak vs Tanks
|
Description: Helicopter Gunship with Chainguns.\n Strong vs Infantry, Light Vehicles and\n Aircraft\n Weak vs Tanks
|
||||||
Aircraft:
|
Aircraft:
|
||||||
TurnSpeed: 7
|
TurnSpeed: 28
|
||||||
Speed: 180
|
Speed: 180
|
||||||
Health:
|
Health:
|
||||||
HP: 12500
|
HP: 12500
|
||||||
@@ -132,7 +132,7 @@ ORCA:
|
|||||||
Queue: Aircraft.GDI
|
Queue: Aircraft.GDI
|
||||||
Description: Helicopter Gunship with AG Missiles.\n Strong vs Buildings, Tanks\n Weak vs Infantry
|
Description: Helicopter Gunship with AG Missiles.\n Strong vs Buildings, Tanks\n Weak vs Infantry
|
||||||
Aircraft:
|
Aircraft:
|
||||||
TurnSpeed: 7
|
TurnSpeed: 28
|
||||||
Speed: 186
|
Speed: 186
|
||||||
Health:
|
Health:
|
||||||
HP: 9000
|
HP: 9000
|
||||||
@@ -182,7 +182,7 @@ C17:
|
|||||||
Valued:
|
Valued:
|
||||||
Cost: 2000
|
Cost: 2000
|
||||||
Aircraft:
|
Aircraft:
|
||||||
TurnSpeed: 5
|
TurnSpeed: 20
|
||||||
Speed: 700
|
Speed: 700
|
||||||
Repulsable: False
|
Repulsable: False
|
||||||
MaximumPitch: 36
|
MaximumPitch: 36
|
||||||
@@ -215,7 +215,7 @@ A10:
|
|||||||
Valued:
|
Valued:
|
||||||
Cost: 2000
|
Cost: 2000
|
||||||
Aircraft:
|
Aircraft:
|
||||||
TurnSpeed: 4
|
TurnSpeed: 16
|
||||||
Speed: 373
|
Speed: 373
|
||||||
Repulsable: False
|
Repulsable: False
|
||||||
AttackBomber:
|
AttackBomber:
|
||||||
@@ -242,7 +242,7 @@ TRAN.Husk:
|
|||||||
Tooltip:
|
Tooltip:
|
||||||
Name: Chinook Transport
|
Name: Chinook Transport
|
||||||
Aircraft:
|
Aircraft:
|
||||||
TurnSpeed: 5
|
TurnSpeed: 20
|
||||||
Speed: 140
|
Speed: 140
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 10c0
|
Range: 10c0
|
||||||
@@ -261,7 +261,7 @@ HELI.Husk:
|
|||||||
Tooltip:
|
Tooltip:
|
||||||
Name: Apache Longbow
|
Name: Apache Longbow
|
||||||
Aircraft:
|
Aircraft:
|
||||||
TurnSpeed: 4
|
TurnSpeed: 16
|
||||||
Speed: 186
|
Speed: 186
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 10c0
|
Range: 10c0
|
||||||
@@ -277,7 +277,7 @@ ORCA.Husk:
|
|||||||
Tooltip:
|
Tooltip:
|
||||||
Name: Orca
|
Name: Orca
|
||||||
Aircraft:
|
Aircraft:
|
||||||
TurnSpeed: 4
|
TurnSpeed: 16
|
||||||
Speed: 186
|
Speed: 186
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 10c0
|
Range: 10c0
|
||||||
|
|||||||
@@ -267,7 +267,7 @@
|
|||||||
Action: Kill
|
Action: Kill
|
||||||
Mobile:
|
Mobile:
|
||||||
Locomotor: wheeled
|
Locomotor: wheeled
|
||||||
TurnSpeed: 5
|
TurnSpeed: 20
|
||||||
Selectable:
|
Selectable:
|
||||||
Bounds: 24,24
|
Bounds: 24,24
|
||||||
Targetable:
|
Targetable:
|
||||||
@@ -299,7 +299,7 @@
|
|||||||
Inherits: ^Vehicle
|
Inherits: ^Vehicle
|
||||||
Mobile:
|
Mobile:
|
||||||
Locomotor: tracked
|
Locomotor: tracked
|
||||||
TurnSpeed: 5
|
TurnSpeed: 20
|
||||||
Tooltip:
|
Tooltip:
|
||||||
GenericName: Tank
|
GenericName: Tank
|
||||||
|
|
||||||
@@ -330,7 +330,7 @@
|
|||||||
VTOL: true
|
VTOL: true
|
||||||
LandableTerrainTypes: Clear, Rough, Road, Beach, Tiberium, BlueTiberium
|
LandableTerrainTypes: Clear, Rough, Road, Beach, Tiberium, BlueTiberium
|
||||||
Crushes: crate, infantry
|
Crushes: crate, infantry
|
||||||
InitialFacing: 224
|
InitialFacing: 896
|
||||||
CanSlide: True
|
CanSlide: True
|
||||||
HiddenUnderFog:
|
HiddenUnderFog:
|
||||||
Type: GroundPosition
|
Type: GroundPosition
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ BOAT:
|
|||||||
Range: 7c0
|
Range: 7c0
|
||||||
Type: CenterPosition
|
Type: CenterPosition
|
||||||
Turreted:
|
Turreted:
|
||||||
TurnSpeed: 5
|
TurnSpeed: 20
|
||||||
Offset: 0,896,171
|
Offset: 0,896,171
|
||||||
Armament:
|
Armament:
|
||||||
Weapon: BoatMissile
|
Weapon: BoatMissile
|
||||||
@@ -62,7 +62,7 @@ LST:
|
|||||||
Mobile:
|
Mobile:
|
||||||
Locomotor: lcraft
|
Locomotor: lcraft
|
||||||
InitialFacing: 0
|
InitialFacing: 0
|
||||||
TurnSpeed: 4
|
TurnSpeed: 16
|
||||||
Speed: 142
|
Speed: 142
|
||||||
PauseOnCondition: notmobile
|
PauseOnCondition: notmobile
|
||||||
Health:
|
Health:
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ FACT:
|
|||||||
PauseOnCondition: being-demolished || build-incomplete
|
PauseOnCondition: being-demolished || build-incomplete
|
||||||
IntoActor: mcv
|
IntoActor: mcv
|
||||||
Offset: 1,1
|
Offset: 1,1
|
||||||
Facing: 108
|
Facing: 432
|
||||||
TransformsIntoMobile:
|
TransformsIntoMobile:
|
||||||
RequiresCondition: factundeploy
|
RequiresCondition: factundeploy
|
||||||
Locomotor: heavywheeled
|
Locomotor: heavywheeled
|
||||||
@@ -228,7 +228,7 @@ PROC:
|
|||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 6c0
|
Range: 6c0
|
||||||
Refinery:
|
Refinery:
|
||||||
DockAngle: 112
|
DockAngle: 448
|
||||||
DockOffset: 0,2
|
DockOffset: 0,2
|
||||||
IsDragRequired: True
|
IsDragRequired: True
|
||||||
DragOffset: -554,512,0
|
DragOffset: -554,512,0
|
||||||
@@ -244,7 +244,7 @@ PROC:
|
|||||||
FreeActor:
|
FreeActor:
|
||||||
Actor: HARV
|
Actor: HARV
|
||||||
SpawnOffset: 1,2
|
SpawnOffset: 1,2
|
||||||
Facing: 64
|
Facing: 256
|
||||||
WithBuildingBib:
|
WithBuildingBib:
|
||||||
WithResourceLevelOverlay:
|
WithResourceLevelOverlay:
|
||||||
RequiresCondition: !build-incomplete
|
RequiresCondition: !build-incomplete
|
||||||
@@ -850,8 +850,8 @@ GUN:
|
|||||||
WithBuildingBib:
|
WithBuildingBib:
|
||||||
HasMinibib: true
|
HasMinibib: true
|
||||||
Turreted:
|
Turreted:
|
||||||
TurnSpeed: 12
|
TurnSpeed: 48
|
||||||
InitialFacing: 56
|
InitialFacing: 224
|
||||||
-WithSpriteBody:
|
-WithSpriteBody:
|
||||||
WithEmbeddedTurretSpriteBody:
|
WithEmbeddedTurretSpriteBody:
|
||||||
Armament:
|
Armament:
|
||||||
@@ -901,7 +901,7 @@ SAM:
|
|||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 6c0
|
Range: 6c0
|
||||||
Turreted:
|
Turreted:
|
||||||
TurnSpeed: 10
|
TurnSpeed: 40
|
||||||
InitialFacing: 0
|
InitialFacing: 0
|
||||||
RealignDelay: -1
|
RealignDelay: -1
|
||||||
-WithSpriteBody:
|
-WithSpriteBody:
|
||||||
@@ -1006,7 +1006,7 @@ GTWR:
|
|||||||
Range: 3c0
|
Range: 3c0
|
||||||
WithMuzzleOverlay:
|
WithMuzzleOverlay:
|
||||||
Turreted:
|
Turreted:
|
||||||
TurnSpeed: 255
|
TurnSpeed: 512
|
||||||
Power:
|
Power:
|
||||||
Amount: -10
|
Amount: -10
|
||||||
|
|
||||||
@@ -1041,7 +1041,7 @@ ATWR:
|
|||||||
WithBuildingBib:
|
WithBuildingBib:
|
||||||
HasMinibib: true
|
HasMinibib: true
|
||||||
Turreted:
|
Turreted:
|
||||||
TurnSpeed: 255
|
TurnSpeed: 512
|
||||||
Offset: 128,128,384
|
Offset: 128,128,384
|
||||||
Armament@PRIMARY:
|
Armament@PRIMARY:
|
||||||
Weapon: TowerMissile
|
Weapon: TowerMissile
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ MCV:
|
|||||||
Transforms:
|
Transforms:
|
||||||
IntoActor: fact
|
IntoActor: fact
|
||||||
Offset: -1,-1
|
Offset: -1,-1
|
||||||
Facing: 108
|
Facing: 432
|
||||||
TransformSounds: constru2.aud, hvydoor1.aud
|
TransformSounds: constru2.aud, hvydoor1.aud
|
||||||
NoTransformNotification: BuildingCannotPlaceAudio
|
NoTransformNotification: BuildingCannotPlaceAudio
|
||||||
MustBeDestroyed:
|
MustBeDestroyed:
|
||||||
@@ -114,7 +114,7 @@ APC:
|
|||||||
BuildDurationModifier: 40
|
BuildDurationModifier: 40
|
||||||
Description: Armed infantry transport.\nCan attack Aircraft.\n Strong vs Vehicles\n Weak vs Infantry
|
Description: Armed infantry transport.\nCan attack Aircraft.\n Strong vs Vehicles\n Weak vs Infantry
|
||||||
Mobile:
|
Mobile:
|
||||||
TurnSpeed: 5
|
TurnSpeed: 20
|
||||||
Speed: 132
|
Speed: 132
|
||||||
PauseOnCondition: notmobile
|
PauseOnCondition: notmobile
|
||||||
Health:
|
Health:
|
||||||
@@ -126,7 +126,7 @@ APC:
|
|||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 6c0
|
Range: 6c0
|
||||||
Turreted:
|
Turreted:
|
||||||
TurnSpeed: 10
|
TurnSpeed: 40
|
||||||
Armament@PRIMARY:
|
Armament@PRIMARY:
|
||||||
Weapon: APCGun
|
Weapon: APCGun
|
||||||
Recoil: 48
|
Recoil: 48
|
||||||
@@ -183,7 +183,7 @@ ARTY:
|
|||||||
Queue: Vehicle.Nod
|
Queue: Vehicle.Nod
|
||||||
Description: Long-range artillery.\n Strong vs Infantry, Vehicles and Buildings
|
Description: Long-range artillery.\n Strong vs Infantry, Vehicles and Buildings
|
||||||
Mobile:
|
Mobile:
|
||||||
TurnSpeed: 4
|
TurnSpeed: 16
|
||||||
Speed: 85
|
Speed: 85
|
||||||
Health:
|
Health:
|
||||||
HP: 7500
|
HP: 7500
|
||||||
@@ -229,7 +229,7 @@ FTNK:
|
|||||||
Queue: Vehicle.Nod
|
Queue: Vehicle.Nod
|
||||||
Description: Heavily armored flame-throwing vehicle.\n Strong vs Infantry, Buildings and Vehicles\n Weak vs Tanks
|
Description: Heavily armored flame-throwing vehicle.\n Strong vs Infantry, Buildings and Vehicles\n Weak vs Tanks
|
||||||
Mobile:
|
Mobile:
|
||||||
TurnSpeed: 7
|
TurnSpeed: 28
|
||||||
Speed: 99
|
Speed: 99
|
||||||
Health:
|
Health:
|
||||||
HP: 27000
|
HP: 27000
|
||||||
@@ -270,7 +270,7 @@ BGGY:
|
|||||||
Queue: Vehicle.Nod
|
Queue: Vehicle.Nod
|
||||||
Description: Fast scout and anti-infantry vehicle.\n Strong vs Infantry\n Weak vs Tanks
|
Description: Fast scout and anti-infantry vehicle.\n Strong vs Infantry\n Weak vs Tanks
|
||||||
Mobile:
|
Mobile:
|
||||||
TurnSpeed: 10
|
TurnSpeed: 40
|
||||||
Speed: 170
|
Speed: 170
|
||||||
Health:
|
Health:
|
||||||
HP: 12000
|
HP: 12000
|
||||||
@@ -281,7 +281,7 @@ BGGY:
|
|||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 8c0
|
Range: 8c0
|
||||||
Turreted:
|
Turreted:
|
||||||
TurnSpeed: 10
|
TurnSpeed: 40
|
||||||
Offset: -43,0,128
|
Offset: -43,0,128
|
||||||
Armament:
|
Armament:
|
||||||
Weapon: MachineGun
|
Weapon: MachineGun
|
||||||
@@ -312,7 +312,7 @@ BIKE:
|
|||||||
Queue: Vehicle.Nod
|
Queue: Vehicle.Nod
|
||||||
Description: Fast scout vehicle, armed with\nrockets.\nCan attack Aircraft.\n Strong vs Vehicles, Tanks\n Weak vs Infantry
|
Description: Fast scout vehicle, armed with\nrockets.\nCan attack Aircraft.\n Strong vs Vehicles, Tanks\n Weak vs Infantry
|
||||||
Mobile:
|
Mobile:
|
||||||
TurnSpeed: 10
|
TurnSpeed: 40
|
||||||
Speed: 213
|
Speed: 213
|
||||||
Locomotor: bike
|
Locomotor: bike
|
||||||
Health:
|
Health:
|
||||||
@@ -350,7 +350,7 @@ JEEP:
|
|||||||
Queue: Vehicle.GDI
|
Queue: Vehicle.GDI
|
||||||
Description: Fast scout and anti-infantry vehicle.\n Strong vs Infantry\n Weak vs Tanks
|
Description: Fast scout and anti-infantry vehicle.\n Strong vs Infantry\n Weak vs Tanks
|
||||||
Mobile:
|
Mobile:
|
||||||
TurnSpeed: 10
|
TurnSpeed: 40
|
||||||
Speed: 156
|
Speed: 156
|
||||||
Health:
|
Health:
|
||||||
HP: 16000
|
HP: 16000
|
||||||
@@ -361,7 +361,7 @@ JEEP:
|
|||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 8c0
|
Range: 8c0
|
||||||
Turreted:
|
Turreted:
|
||||||
TurnSpeed: 10
|
TurnSpeed: 40
|
||||||
Offset: -85,0,128
|
Offset: -85,0,128
|
||||||
Armament:
|
Armament:
|
||||||
Weapon: MachineGunH
|
Weapon: MachineGunH
|
||||||
@@ -392,7 +392,7 @@ LTNK:
|
|||||||
Queue: Vehicle.Nod
|
Queue: Vehicle.Nod
|
||||||
Description: Fast, light tank.\n Strong vs Vehicles, Tanks\n Weak vs Infantry
|
Description: Fast, light tank.\n Strong vs Vehicles, Tanks\n Weak vs Infantry
|
||||||
Mobile:
|
Mobile:
|
||||||
TurnSpeed: 7
|
TurnSpeed: 28
|
||||||
Speed: 110
|
Speed: 110
|
||||||
Health:
|
Health:
|
||||||
HP: 34000
|
HP: 34000
|
||||||
@@ -403,7 +403,7 @@ LTNK:
|
|||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 6c0
|
Range: 6c0
|
||||||
Turreted:
|
Turreted:
|
||||||
TurnSpeed: 7
|
TurnSpeed: 28
|
||||||
Armament:
|
Armament:
|
||||||
Weapon: 70mm
|
Weapon: 70mm
|
||||||
Recoil: 85
|
Recoil: 85
|
||||||
@@ -445,7 +445,7 @@ MTNK:
|
|||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 6c0
|
Range: 6c0
|
||||||
Turreted:
|
Turreted:
|
||||||
TurnSpeed: 5
|
TurnSpeed: 20
|
||||||
Armament:
|
Armament:
|
||||||
Weapon: 120mm
|
Weapon: 120mm
|
||||||
Recoil: 128
|
Recoil: 128
|
||||||
@@ -481,7 +481,7 @@ HTNK:
|
|||||||
Mobile:
|
Mobile:
|
||||||
Locomotor: heavytracked
|
Locomotor: heavytracked
|
||||||
Speed: 56
|
Speed: 56
|
||||||
TurnSpeed: 3
|
TurnSpeed: 12
|
||||||
Health:
|
Health:
|
||||||
HP: 87000
|
HP: 87000
|
||||||
Repairable:
|
Repairable:
|
||||||
@@ -492,7 +492,7 @@ HTNK:
|
|||||||
Range: 6c0
|
Range: 6c0
|
||||||
WithSpriteTurret:
|
WithSpriteTurret:
|
||||||
Turreted:
|
Turreted:
|
||||||
TurnSpeed: 3
|
TurnSpeed: 12
|
||||||
Armament@PRIMARY:
|
Armament@PRIMARY:
|
||||||
Weapon: 120mmDual
|
Weapon: 120mmDual
|
||||||
LocalOffset: 900,180,340, 900,-180,340
|
LocalOffset: 900,180,340, 900,-180,340
|
||||||
@@ -538,7 +538,7 @@ MSAM:
|
|||||||
Description: Long range rocket artillery.\n Strong vs all Ground units.
|
Description: Long range rocket artillery.\n Strong vs all Ground units.
|
||||||
Mobile:
|
Mobile:
|
||||||
Speed: 85
|
Speed: 85
|
||||||
TurnSpeed: 4
|
TurnSpeed: 16
|
||||||
Health:
|
Health:
|
||||||
HP: 12000
|
HP: 12000
|
||||||
Repairable:
|
Repairable:
|
||||||
@@ -548,7 +548,7 @@ MSAM:
|
|||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 5c0
|
Range: 5c0
|
||||||
Turreted:
|
Turreted:
|
||||||
TurnSpeed: 255
|
TurnSpeed: 512
|
||||||
Offset: -256,0,128
|
Offset: -256,0,128
|
||||||
Armament@PRIMARY:
|
Armament@PRIMARY:
|
||||||
Weapon: 227mm
|
Weapon: 227mm
|
||||||
@@ -586,7 +586,7 @@ MLRS:
|
|||||||
Description: Powerful anti-air unit.\nCannot attack Ground units.
|
Description: Powerful anti-air unit.\nCannot attack Ground units.
|
||||||
Mobile:
|
Mobile:
|
||||||
Speed: 99
|
Speed: 99
|
||||||
TurnSpeed: 7
|
TurnSpeed: 28
|
||||||
Health:
|
Health:
|
||||||
HP: 18000
|
HP: 18000
|
||||||
Repairable:
|
Repairable:
|
||||||
@@ -596,7 +596,7 @@ MLRS:
|
|||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 8c0
|
Range: 8c0
|
||||||
Turreted:
|
Turreted:
|
||||||
TurnSpeed: 8
|
TurnSpeed: 32
|
||||||
Offset: -128,0,128
|
Offset: -128,0,128
|
||||||
RealignDelay: 0
|
RealignDelay: 0
|
||||||
Armament:
|
Armament:
|
||||||
@@ -642,7 +642,7 @@ STNK:
|
|||||||
Description: Long-range missile tank that can cloak.\nCan attack Aircraft.\nHas weak armor. Can be spotted by infantry and defense structures.\n Strong vs Vehicles, Tanks\n Weak vs Infantry.
|
Description: Long-range missile tank that can cloak.\nCan attack Aircraft.\nHas weak armor. Can be spotted by infantry and defense structures.\n Strong vs Vehicles, Tanks\n Weak vs Infantry.
|
||||||
Mobile:
|
Mobile:
|
||||||
Locomotor: heavywheeled
|
Locomotor: heavywheeled
|
||||||
TurnSpeed: 10
|
TurnSpeed: 40
|
||||||
Speed: 142
|
Speed: 142
|
||||||
Health:
|
Health:
|
||||||
HP: 15000
|
HP: 15000
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
Inaccuracy: 128
|
Inaccuracy: 128
|
||||||
Image: DRAGON
|
Image: DRAGON
|
||||||
Shadow: true
|
Shadow: true
|
||||||
HorizontalRateOfTurn: 15
|
HorizontalRateOfTurn: 60
|
||||||
TrailImage: smokey
|
TrailImage: smokey
|
||||||
ContrailLength: 8
|
ContrailLength: 8
|
||||||
Speed: 298
|
Speed: 298
|
||||||
@@ -49,7 +49,7 @@ Dragon:
|
|||||||
BurstDelays: 5
|
BurstDelays: 5
|
||||||
Projectile: Missile
|
Projectile: Missile
|
||||||
Speed: 426
|
Speed: 426
|
||||||
HorizontalRateOfTurn: 20
|
HorizontalRateOfTurn: 80
|
||||||
RangeLimit: 12c0
|
RangeLimit: 12c0
|
||||||
Warhead@1Dam: SpreadDamage
|
Warhead@1Dam: SpreadDamage
|
||||||
ValidTargets: Air
|
ValidTargets: Air
|
||||||
@@ -68,7 +68,7 @@ BikeRockets:
|
|||||||
Burst: 2
|
Burst: 2
|
||||||
BurstDelays: 10
|
BurstDelays: 10
|
||||||
Projectile: Missile
|
Projectile: Missile
|
||||||
HorizontalRateOfTurn: 10
|
HorizontalRateOfTurn: 40
|
||||||
Speed: 213
|
Speed: 213
|
||||||
Warhead@1Dam: SpreadDamage
|
Warhead@1Dam: SpreadDamage
|
||||||
Versus:
|
Versus:
|
||||||
@@ -85,7 +85,7 @@ OrcaAGMissiles:
|
|||||||
ValidTargets: Ground, Water
|
ValidTargets: Ground, Water
|
||||||
Projectile: Missile
|
Projectile: Missile
|
||||||
Arm: 1
|
Arm: 1
|
||||||
HorizontalRateOfTurn: 20
|
HorizontalRateOfTurn: 80
|
||||||
Speed: 256
|
Speed: 256
|
||||||
RangeLimit: 6c0
|
RangeLimit: 6c0
|
||||||
Warhead@1Dam: SpreadDamage
|
Warhead@1Dam: SpreadDamage
|
||||||
@@ -117,7 +117,7 @@ MammothMissiles:
|
|||||||
Burst: 2
|
Burst: 2
|
||||||
BurstDelays: 15
|
BurstDelays: 15
|
||||||
Projectile: Missile
|
Projectile: Missile
|
||||||
HorizontalRateOfTurn: 20
|
HorizontalRateOfTurn: 80
|
||||||
Speed: 341
|
Speed: 341
|
||||||
RangeLimit: 6c0
|
RangeLimit: 6c0
|
||||||
Warhead@1Dam: SpreadDamage
|
Warhead@1Dam: SpreadDamage
|
||||||
@@ -174,7 +174,7 @@ MammothMissiles:
|
|||||||
BurstDelays: 10
|
BurstDelays: 10
|
||||||
Projectile: Missile
|
Projectile: Missile
|
||||||
Inaccuracy: 213
|
Inaccuracy: 213
|
||||||
HorizontalRateOfTurn: 10
|
HorizontalRateOfTurn: 40
|
||||||
Speed: 213
|
Speed: 213
|
||||||
RangeLimit: 8c409
|
RangeLimit: 8c409
|
||||||
Warhead@1Dam: SpreadDamage
|
Warhead@1Dam: SpreadDamage
|
||||||
@@ -194,7 +194,7 @@ BoatMissile:
|
|||||||
Report: rocket2.aud
|
Report: rocket2.aud
|
||||||
Projectile: Missile
|
Projectile: Missile
|
||||||
Inaccuracy: 426
|
Inaccuracy: 426
|
||||||
HorizontalRateOfTurn: 5
|
HorizontalRateOfTurn: 20
|
||||||
Speed: 170
|
Speed: 170
|
||||||
RangeLimit: 9c614
|
RangeLimit: 9c614
|
||||||
Warhead@1Dam: SpreadDamage
|
Warhead@1Dam: SpreadDamage
|
||||||
@@ -218,7 +218,7 @@ TowerMissile:
|
|||||||
Report: rocket2.aud
|
Report: rocket2.aud
|
||||||
ValidTargets: Ground, Water
|
ValidTargets: Ground, Water
|
||||||
Projectile: Missile
|
Projectile: Missile
|
||||||
HorizontalRateOfTurn: 20
|
HorizontalRateOfTurn: 80
|
||||||
Speed: 298
|
Speed: 298
|
||||||
RangeLimit: 8c409
|
RangeLimit: 8c409
|
||||||
Warhead@1Dam: SpreadDamage
|
Warhead@1Dam: SpreadDamage
|
||||||
@@ -241,7 +241,7 @@ TowerAAMissile:
|
|||||||
ValidTargets: Air
|
ValidTargets: Air
|
||||||
Projectile: Missile
|
Projectile: Missile
|
||||||
Image: MISSILE
|
Image: MISSILE
|
||||||
HorizontalRateOfTurn: 20
|
HorizontalRateOfTurn: 80
|
||||||
Speed: 426
|
Speed: 426
|
||||||
RangeLimit: 9c614
|
RangeLimit: 9c614
|
||||||
Inaccuracy: 0
|
Inaccuracy: 0
|
||||||
@@ -266,7 +266,7 @@ Patriot:
|
|||||||
ValidTargets: Air
|
ValidTargets: Air
|
||||||
Projectile: Missile
|
Projectile: Missile
|
||||||
Image: MISSILE
|
Image: MISSILE
|
||||||
HorizontalRateOfTurn: 20
|
HorizontalRateOfTurn: 80
|
||||||
Speed: 300
|
Speed: 300
|
||||||
RangeLimit: 10c819
|
RangeLimit: 10c819
|
||||||
Inaccuracy: 0
|
Inaccuracy: 0
|
||||||
|
|||||||
@@ -13,13 +13,13 @@ carryall.reinforce:
|
|||||||
CruisingCondition: cruising
|
CruisingCondition: cruising
|
||||||
InitialFacing: 0
|
InitialFacing: 0
|
||||||
Speed: 144
|
Speed: 144
|
||||||
TurnSpeed: 4
|
TurnSpeed: 16
|
||||||
LandableTerrainTypes: Sand, Rock, Transition, Spice, SpiceSand, Dune, Concrete
|
LandableTerrainTypes: Sand, Rock, Transition, Spice, SpiceSand, Dune, Concrete
|
||||||
Repulsable: False
|
Repulsable: False
|
||||||
AirborneCondition: airborne
|
AirborneCondition: airborne
|
||||||
CanSlide: True
|
CanSlide: True
|
||||||
VTOL: true
|
VTOL: true
|
||||||
IdleTurnSpeed: 1
|
IdleTurnSpeed: 4
|
||||||
Targetable@GROUND:
|
Targetable@GROUND:
|
||||||
TargetTypes: Ground, Vehicle
|
TargetTypes: Ground, Vehicle
|
||||||
RequiresCondition: !airborne
|
RequiresCondition: !airborne
|
||||||
@@ -78,7 +78,7 @@ frigate:
|
|||||||
Aircraft:
|
Aircraft:
|
||||||
IdleBehavior: LeaveMap
|
IdleBehavior: LeaveMap
|
||||||
Speed: 189
|
Speed: 189
|
||||||
TurnSpeed: 1
|
TurnSpeed: 4
|
||||||
Repulsable: False
|
Repulsable: False
|
||||||
MaximumPitch: 20
|
MaximumPitch: 20
|
||||||
CruiseAltitude: 2048
|
CruiseAltitude: 2048
|
||||||
@@ -101,7 +101,7 @@ ornithopter:
|
|||||||
Type: light
|
Type: light
|
||||||
Aircraft:
|
Aircraft:
|
||||||
Speed: 224
|
Speed: 224
|
||||||
TurnSpeed: 2
|
TurnSpeed: 8
|
||||||
Repulsable: False
|
Repulsable: False
|
||||||
CruiseAltitude: 1920
|
CruiseAltitude: 1920
|
||||||
AmmoPool:
|
AmmoPool:
|
||||||
@@ -119,7 +119,7 @@ ornithopter.husk:
|
|||||||
Tooltip:
|
Tooltip:
|
||||||
Name: Ornithopter
|
Name: Ornithopter
|
||||||
Aircraft:
|
Aircraft:
|
||||||
TurnSpeed: 5
|
TurnSpeed: 20
|
||||||
Speed: 224
|
Speed: 224
|
||||||
RenderSprites:
|
RenderSprites:
|
||||||
Image: ornithopter
|
Image: ornithopter
|
||||||
@@ -129,7 +129,7 @@ carryall.husk:
|
|||||||
Tooltip:
|
Tooltip:
|
||||||
Name: Carryall
|
Name: Carryall
|
||||||
Aircraft:
|
Aircraft:
|
||||||
TurnSpeed: 4
|
TurnSpeed: 16
|
||||||
Speed: 144
|
Speed: 144
|
||||||
CanSlide: True
|
CanSlide: True
|
||||||
VTOL: true
|
VTOL: true
|
||||||
@@ -144,7 +144,7 @@ carryall.huskVTOL:
|
|||||||
Moves: False
|
Moves: False
|
||||||
Velocity: 0c128
|
Velocity: 0c128
|
||||||
Aircraft:
|
Aircraft:
|
||||||
TurnSpeed: 4
|
TurnSpeed: 16
|
||||||
CanSlide: True
|
CanSlide: True
|
||||||
VTOL: true
|
VTOL: true
|
||||||
RenderSprites:
|
RenderSprites:
|
||||||
|
|||||||
@@ -194,7 +194,7 @@
|
|||||||
OwnerLostAction:
|
OwnerLostAction:
|
||||||
Action: Kill
|
Action: Kill
|
||||||
Mobile:
|
Mobile:
|
||||||
TurnSpeed: 5
|
TurnSpeed: 20
|
||||||
Locomotor: vehicle
|
Locomotor: vehicle
|
||||||
PauseOnCondition: notmobile
|
PauseOnCondition: notmobile
|
||||||
Selectable:
|
Selectable:
|
||||||
|
|||||||
@@ -110,7 +110,7 @@ thumper:
|
|||||||
GrantConditionOnDeploy:
|
GrantConditionOnDeploy:
|
||||||
DeployedCondition: deployed
|
DeployedCondition: deployed
|
||||||
UndeployedCondition: undeployed
|
UndeployedCondition: undeployed
|
||||||
Facing: 128
|
Facing: 512
|
||||||
AllowedTerrainTypes: Sand, Spice, Dune, SpiceSand
|
AllowedTerrainTypes: Sand, Spice, Dune, SpiceSand
|
||||||
WithInfantryBody:
|
WithInfantryBody:
|
||||||
RequiresCondition: undeployed
|
RequiresCondition: undeployed
|
||||||
|
|||||||
@@ -172,7 +172,7 @@ waypoint:
|
|||||||
carryall.colorpicker:
|
carryall.colorpicker:
|
||||||
Inherits: carryall
|
Inherits: carryall
|
||||||
Aircraft:
|
Aircraft:
|
||||||
InitialFacing: 104
|
InitialFacing: 416
|
||||||
-Buildable:
|
-Buildable:
|
||||||
-MapEditorData:
|
-MapEditorData:
|
||||||
RenderSprites:
|
RenderSprites:
|
||||||
|
|||||||
@@ -261,7 +261,7 @@ refinery:
|
|||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 3c768
|
Range: 3c768
|
||||||
Refinery:
|
Refinery:
|
||||||
DockAngle: 160
|
DockAngle: 640
|
||||||
DockOffset: 2,1
|
DockOffset: 2,1
|
||||||
TickRate: 20
|
TickRate: 20
|
||||||
StoresResources:
|
StoresResources:
|
||||||
@@ -744,8 +744,8 @@ medium_gun_turret:
|
|||||||
QuantizedFacings: 32
|
QuantizedFacings: 32
|
||||||
WithMuzzleOverlay:
|
WithMuzzleOverlay:
|
||||||
Turreted:
|
Turreted:
|
||||||
TurnSpeed: 6
|
TurnSpeed: 24
|
||||||
InitialFacing: 128
|
InitialFacing: 512
|
||||||
Armament:
|
Armament:
|
||||||
Weapon: 110mm_Gun
|
Weapon: 110mm_Gun
|
||||||
LocalOffset: 512,0,432
|
LocalOffset: 512,0,432
|
||||||
@@ -789,8 +789,8 @@ large_gun_turret:
|
|||||||
Weapon: TowerMissile
|
Weapon: TowerMissile
|
||||||
LocalOffset: 256,384,768, 256,-384,768
|
LocalOffset: 256,384,768, 256,-384,768
|
||||||
Turreted:
|
Turreted:
|
||||||
TurnSpeed: 8
|
TurnSpeed: 32
|
||||||
InitialFacing: 128
|
InitialFacing: 512
|
||||||
Power:
|
Power:
|
||||||
Amount: -60
|
Amount: -60
|
||||||
RevealOnDeath:
|
RevealOnDeath:
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ mcv:
|
|||||||
Weapon: UnitExplodeLarge
|
Weapon: UnitExplodeLarge
|
||||||
EmptyWeapon: UnitExplodeLarge
|
EmptyWeapon: UnitExplodeLarge
|
||||||
Transforms:
|
Transforms:
|
||||||
Facing: 16
|
Facing: 64
|
||||||
IntoActor: construction_yard
|
IntoActor: construction_yard
|
||||||
Offset: -1,-1
|
Offset: -1,-1
|
||||||
TransformSounds: BUILD1.WAV
|
TransformSounds: BUILD1.WAV
|
||||||
@@ -127,7 +127,7 @@ trike:
|
|||||||
Armor:
|
Armor:
|
||||||
Type: wood
|
Type: wood
|
||||||
Mobile:
|
Mobile:
|
||||||
TurnSpeed: 10
|
TurnSpeed: 40
|
||||||
Speed: 128
|
Speed: 128
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 4c768
|
Range: 4c768
|
||||||
@@ -168,7 +168,7 @@ quad:
|
|||||||
Armor:
|
Armor:
|
||||||
Type: light
|
Type: light
|
||||||
Mobile:
|
Mobile:
|
||||||
TurnSpeed: 8
|
TurnSpeed: 32
|
||||||
Speed: 96
|
Speed: 96
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 4c768
|
Range: 4c768
|
||||||
@@ -207,11 +207,11 @@ siege_tank:
|
|||||||
Type: light
|
Type: light
|
||||||
Mobile:
|
Mobile:
|
||||||
Speed: 43
|
Speed: 43
|
||||||
TurnSpeed: 3
|
TurnSpeed: 12
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 6c768
|
Range: 6c768
|
||||||
Turreted:
|
Turreted:
|
||||||
TurnSpeed: 3
|
TurnSpeed: 12
|
||||||
Offset: 0,0,-32
|
Offset: 0,0,-32
|
||||||
Armament:
|
Armament:
|
||||||
Weapon: 155mm
|
Weapon: 155mm
|
||||||
@@ -255,7 +255,7 @@ missile_tank:
|
|||||||
Cost: 900
|
Cost: 900
|
||||||
Mobile:
|
Mobile:
|
||||||
Speed: 64
|
Speed: 64
|
||||||
TurnSpeed: 5
|
TurnSpeed: 20
|
||||||
Health:
|
Health:
|
||||||
HP: 13000
|
HP: 13000
|
||||||
Armor:
|
Armor:
|
||||||
@@ -302,7 +302,7 @@ sonic_tank:
|
|||||||
Armor:
|
Armor:
|
||||||
Type: light
|
Type: light
|
||||||
Mobile:
|
Mobile:
|
||||||
TurnSpeed: 3
|
TurnSpeed: 12
|
||||||
Speed: 31
|
Speed: 31
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 5c768
|
Range: 5c768
|
||||||
@@ -342,7 +342,7 @@ devastator:
|
|||||||
Armor:
|
Armor:
|
||||||
Type: heavy
|
Type: heavy
|
||||||
Mobile:
|
Mobile:
|
||||||
TurnSpeed: 3
|
TurnSpeed: 12
|
||||||
Speed: 31
|
Speed: 31
|
||||||
Locomotor: devastator
|
Locomotor: devastator
|
||||||
RequiresCondition: !overload
|
RequiresCondition: !overload
|
||||||
@@ -414,7 +414,7 @@ raider:
|
|||||||
Armor:
|
Armor:
|
||||||
Type: wood
|
Type: wood
|
||||||
Mobile:
|
Mobile:
|
||||||
TurnSpeed: 10
|
TurnSpeed: 40
|
||||||
Speed: 149
|
Speed: 149
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 4c768
|
Range: 4c768
|
||||||
@@ -479,7 +479,7 @@ deviator:
|
|||||||
BuildDurationModifier: 100
|
BuildDurationModifier: 100
|
||||||
Description: Fires a warhead which changes\nthe allegiance of enemy vehicles
|
Description: Fires a warhead which changes\nthe allegiance of enemy vehicles
|
||||||
Mobile:
|
Mobile:
|
||||||
TurnSpeed: 3
|
TurnSpeed: 12
|
||||||
Speed: 53
|
Speed: 53
|
||||||
Health:
|
Health:
|
||||||
HP: 11000
|
HP: 11000
|
||||||
@@ -525,11 +525,11 @@ deviator:
|
|||||||
Type: heavy
|
Type: heavy
|
||||||
Mobile:
|
Mobile:
|
||||||
Speed: 75
|
Speed: 75
|
||||||
TurnSpeed: 5
|
TurnSpeed: 20
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 5c768
|
Range: 5c768
|
||||||
Turreted:
|
Turreted:
|
||||||
TurnSpeed: 5
|
TurnSpeed: 20
|
||||||
RealignDelay: 0
|
RealignDelay: 0
|
||||||
Armament:
|
Armament:
|
||||||
Weapon: 80mm_A
|
Weapon: 80mm_A
|
||||||
@@ -578,7 +578,7 @@ combat_tank_o:
|
|||||||
Buildable:
|
Buildable:
|
||||||
Prerequisites: ~heavy.ordos_combat
|
Prerequisites: ~heavy.ordos_combat
|
||||||
Turreted:
|
Turreted:
|
||||||
TurnSpeed: 5
|
TurnSpeed: 20
|
||||||
Armament:
|
Armament:
|
||||||
Weapon: 80mm_O
|
Weapon: 80mm_O
|
||||||
Mobile:
|
Mobile:
|
||||||
|
|||||||
@@ -44,11 +44,11 @@
|
|||||||
MinRange: 0c512
|
MinRange: 0c512
|
||||||
Projectile: Missile
|
Projectile: Missile
|
||||||
Shadow: true
|
Shadow: true
|
||||||
HorizontalRateOfTurn: 3
|
HorizontalRateOfTurn: 12
|
||||||
RangeLimit: 6c614
|
RangeLimit: 6c614
|
||||||
CruiseAltitude: 1c0
|
CruiseAltitude: 1c0
|
||||||
MinimumLaunchAngle: 64
|
MinimumLaunchAngle: 64
|
||||||
VerticalRateOfTurn: 10
|
VerticalRateOfTurn: 40
|
||||||
Image: MISSILE2
|
Image: MISSILE2
|
||||||
TrailImage: large_trail
|
TrailImage: large_trail
|
||||||
Speed: 288
|
Speed: 288
|
||||||
@@ -104,7 +104,7 @@ TowerMissile:
|
|||||||
BurstDelays: 60
|
BurstDelays: 60
|
||||||
ValidTargets: Ground, Air
|
ValidTargets: Ground, Air
|
||||||
Projectile: Missile
|
Projectile: Missile
|
||||||
HorizontalRateOfTurn: 1
|
HorizontalRateOfTurn: 4
|
||||||
Warhead@1Dam: SpreadDamage
|
Warhead@1Dam: SpreadDamage
|
||||||
ValidTargets: Ground, Air
|
ValidTargets: Ground, Air
|
||||||
DamageTypes: Prone50Percent, TriggerProne, ExplosionDeath
|
DamageTypes: Prone50Percent, TriggerProne, ExplosionDeath
|
||||||
|
|||||||
@@ -123,7 +123,7 @@ MNLYR:
|
|||||||
Type: Heavy
|
Type: Heavy
|
||||||
Mobile:
|
Mobile:
|
||||||
Speed: 128
|
Speed: 128
|
||||||
TurnSpeed: 900
|
TurnSpeed: 512
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 40c0
|
Range: 40c0
|
||||||
MustBeDestroyed:
|
MustBeDestroyed:
|
||||||
@@ -131,7 +131,7 @@ MNLYR:
|
|||||||
Transforms:
|
Transforms:
|
||||||
IntoActor: ftur
|
IntoActor: ftur
|
||||||
Offset: 0,0
|
Offset: 0,0
|
||||||
Facing: 96
|
Facing: 384
|
||||||
CashTrickler:
|
CashTrickler:
|
||||||
Interval: 150
|
Interval: 150
|
||||||
Amount: 20
|
Amount: 20
|
||||||
@@ -147,7 +147,7 @@ FTUR:
|
|||||||
Transforms:
|
Transforms:
|
||||||
IntoActor: mnlyr
|
IntoActor: mnlyr
|
||||||
Offset: 0,0
|
Offset: 0,0
|
||||||
Facing: 96
|
Facing: 384
|
||||||
MustBeDestroyed:
|
MustBeDestroyed:
|
||||||
RequiredForShortGame: true
|
RequiredForShortGame: true
|
||||||
CashTrickler:
|
CashTrickler:
|
||||||
|
|||||||
@@ -161,7 +161,7 @@ MOBILETENT:
|
|||||||
Transforms:
|
Transforms:
|
||||||
IntoActor: tent
|
IntoActor: tent
|
||||||
Offset: 0,0
|
Offset: 0,0
|
||||||
Facing: 96
|
Facing: 384
|
||||||
TransformSounds: placbldg.aud, build5.aud
|
TransformSounds: placbldg.aud, build5.aud
|
||||||
NoTransformNotification: BuildingCannotPlaceAudio
|
NoTransformNotification: BuildingCannotPlaceAudio
|
||||||
RenderSprites:
|
RenderSprites:
|
||||||
@@ -328,7 +328,7 @@ V2RL:
|
|||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 14c0
|
Range: 14c0
|
||||||
Turreted:
|
Turreted:
|
||||||
TurnSpeed: 1
|
TurnSpeed: 4
|
||||||
Armament@PRIMARY:
|
Armament@PRIMARY:
|
||||||
Recoil: 8
|
Recoil: 8
|
||||||
RecoilRecovery: 0c7
|
RecoilRecovery: 0c7
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ MammothTusk:
|
|||||||
TrailImage: smokey
|
TrailImage: smokey
|
||||||
ContrailLength: 150
|
ContrailLength: 150
|
||||||
Inaccuracy: 0c853
|
Inaccuracy: 0c853
|
||||||
HorizontalRateOfTurn: 10
|
HorizontalRateOfTurn: 40
|
||||||
RangeLimit: 12c0
|
RangeLimit: 12c0
|
||||||
Warhead@1Dam: SpreadDamage
|
Warhead@1Dam: SpreadDamage
|
||||||
Spread: 640
|
Spread: 640
|
||||||
|
|||||||
@@ -141,7 +141,7 @@ PBOX:
|
|||||||
ExternalCondition@friendly:
|
ExternalCondition@friendly:
|
||||||
Condition: friendly
|
Condition: friendly
|
||||||
Turreted:
|
Turreted:
|
||||||
TurnSpeed: 1
|
TurnSpeed: 4
|
||||||
Armament@PRIMARY:
|
Armament@PRIMARY:
|
||||||
Weapon: SuperTankPrimary
|
Weapon: SuperTankPrimary
|
||||||
LocalOffset: 900,180,340, 900,-180,340
|
LocalOffset: 900,180,340, 900,-180,340
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ BADR:
|
|||||||
HP: 30000
|
HP: 30000
|
||||||
Aircraft:
|
Aircraft:
|
||||||
CruiseAltitude: 2560
|
CruiseAltitude: 2560
|
||||||
TurnSpeed: 5
|
TurnSpeed: 20
|
||||||
Speed: 180
|
Speed: 180
|
||||||
Repulsable: False
|
Repulsable: False
|
||||||
MaximumPitch: 56
|
MaximumPitch: 56
|
||||||
@@ -84,8 +84,8 @@ MIG:
|
|||||||
OpportunityFire: False
|
OpportunityFire: False
|
||||||
Aircraft:
|
Aircraft:
|
||||||
CruiseAltitude: 2560
|
CruiseAltitude: 2560
|
||||||
InitialFacing: 192
|
InitialFacing: 768
|
||||||
TurnSpeed: 4
|
TurnSpeed: 16
|
||||||
Speed: 223
|
Speed: 223
|
||||||
RepulsionSpeed: 40
|
RepulsionSpeed: 40
|
||||||
MaximumPitch: 56
|
MaximumPitch: 56
|
||||||
@@ -158,8 +158,8 @@ YAK:
|
|||||||
OpportunityFire: False
|
OpportunityFire: False
|
||||||
Aircraft:
|
Aircraft:
|
||||||
CruiseAltitude: 2560
|
CruiseAltitude: 2560
|
||||||
InitialFacing: 192
|
InitialFacing: 768
|
||||||
TurnSpeed: 4
|
TurnSpeed: 16
|
||||||
Speed: 178
|
Speed: 178
|
||||||
RepulsionSpeed: 40
|
RepulsionSpeed: 40
|
||||||
MaximumPitch: 56
|
MaximumPitch: 56
|
||||||
@@ -216,7 +216,7 @@ TRAN:
|
|||||||
Range: 6c0
|
Range: 6c0
|
||||||
Type: GroundPosition
|
Type: GroundPosition
|
||||||
Aircraft:
|
Aircraft:
|
||||||
TurnSpeed: 5
|
TurnSpeed: 20
|
||||||
Speed: 128
|
Speed: 128
|
||||||
AltitudeVelocity: 0c58
|
AltitudeVelocity: 0c58
|
||||||
WithIdleOverlay@ROTOR1AIR:
|
WithIdleOverlay@ROTOR1AIR:
|
||||||
@@ -283,7 +283,7 @@ HELI:
|
|||||||
AttackType: Hover
|
AttackType: Hover
|
||||||
OpportunityFire: False
|
OpportunityFire: False
|
||||||
Aircraft:
|
Aircraft:
|
||||||
TurnSpeed: 4
|
TurnSpeed: 16
|
||||||
Speed: 149
|
Speed: 149
|
||||||
AutoTarget:
|
AutoTarget:
|
||||||
InitialStance: HoldFire
|
InitialStance: HoldFire
|
||||||
@@ -356,7 +356,7 @@ HIND:
|
|||||||
AttackType: Hover
|
AttackType: Hover
|
||||||
OpportunityFire: False
|
OpportunityFire: False
|
||||||
Aircraft:
|
Aircraft:
|
||||||
TurnSpeed: 4
|
TurnSpeed: 16
|
||||||
Speed: 112
|
Speed: 112
|
||||||
AutoTarget:
|
AutoTarget:
|
||||||
InitialStance: HoldFire
|
InitialStance: HoldFire
|
||||||
@@ -396,7 +396,7 @@ U2:
|
|||||||
Name: Spy Plane
|
Name: Spy Plane
|
||||||
Aircraft:
|
Aircraft:
|
||||||
CruiseAltitude: 2560
|
CruiseAltitude: 2560
|
||||||
TurnSpeed: 7
|
TurnSpeed: 28
|
||||||
Speed: 373
|
Speed: 373
|
||||||
Repulsable: False
|
Repulsable: False
|
||||||
MaximumPitch: 56
|
MaximumPitch: 56
|
||||||
@@ -458,7 +458,7 @@ MH60:
|
|||||||
PersistentTargeting: false
|
PersistentTargeting: false
|
||||||
AttackType: Hover
|
AttackType: Hover
|
||||||
Aircraft:
|
Aircraft:
|
||||||
TurnSpeed: 4
|
TurnSpeed: 16
|
||||||
Speed: 112
|
Speed: 112
|
||||||
AutoTarget:
|
AutoTarget:
|
||||||
InitialStance: HoldFire
|
InitialStance: HoldFire
|
||||||
|
|||||||
@@ -241,7 +241,7 @@
|
|||||||
Mobile:
|
Mobile:
|
||||||
PauseOnCondition: being-captured
|
PauseOnCondition: being-captured
|
||||||
Locomotor: wheeled
|
Locomotor: wheeled
|
||||||
TurnSpeed: 5
|
TurnSpeed: 20
|
||||||
Selectable:
|
Selectable:
|
||||||
Bounds: 24, 24
|
Bounds: 24, 24
|
||||||
Targetable:
|
Targetable:
|
||||||
@@ -609,7 +609,7 @@
|
|||||||
VTOL: true
|
VTOL: true
|
||||||
LandableTerrainTypes: Clear, Rough, Road, Ore, Beach, Gems
|
LandableTerrainTypes: Clear, Rough, Road, Ore, Beach, Gems
|
||||||
Crushes: crate, mine, infantry
|
Crushes: crate, mine, infantry
|
||||||
InitialFacing: 224
|
InitialFacing: 896
|
||||||
CanSlide: True
|
CanSlide: True
|
||||||
GpsDot:
|
GpsDot:
|
||||||
String: Helicopter
|
String: Helicopter
|
||||||
|
|||||||
@@ -102,7 +102,7 @@ TRAN.Husk:
|
|||||||
Tooltip:
|
Tooltip:
|
||||||
Name: Chinook
|
Name: Chinook
|
||||||
Aircraft:
|
Aircraft:
|
||||||
TurnSpeed: 4
|
TurnSpeed: 16
|
||||||
Speed: 149
|
Speed: 149
|
||||||
WithIdleOverlay@PRIMARY:
|
WithIdleOverlay@PRIMARY:
|
||||||
Offset: -597,0,341
|
Offset: -597,0,341
|
||||||
@@ -146,7 +146,7 @@ BADR.Husk:
|
|||||||
Tooltip:
|
Tooltip:
|
||||||
Name: Badger
|
Name: Badger
|
||||||
Aircraft:
|
Aircraft:
|
||||||
TurnSpeed: 5
|
TurnSpeed: 20
|
||||||
Speed: 149
|
Speed: 149
|
||||||
SmokeTrailWhenDamaged@0:
|
SmokeTrailWhenDamaged@0:
|
||||||
Offset: -432,560,0
|
Offset: -432,560,0
|
||||||
@@ -169,7 +169,7 @@ MIG.Husk:
|
|||||||
Contrail@2:
|
Contrail@2:
|
||||||
Offset: -598,683,0
|
Offset: -598,683,0
|
||||||
Aircraft:
|
Aircraft:
|
||||||
TurnSpeed: 5
|
TurnSpeed: 20
|
||||||
Speed: 186
|
Speed: 186
|
||||||
SmokeTrailWhenDamaged:
|
SmokeTrailWhenDamaged:
|
||||||
Offset: -853,0,171
|
Offset: -853,0,171
|
||||||
@@ -193,7 +193,7 @@ YAK.Husk:
|
|||||||
Contrail:
|
Contrail:
|
||||||
Offset: -853,0,0
|
Offset: -853,0,0
|
||||||
Aircraft:
|
Aircraft:
|
||||||
TurnSpeed: 5
|
TurnSpeed: 20
|
||||||
Speed: 149
|
Speed: 149
|
||||||
SmokeTrailWhenDamaged:
|
SmokeTrailWhenDamaged:
|
||||||
Offset: -853,0,0
|
Offset: -853,0,0
|
||||||
@@ -215,7 +215,7 @@ HELI.Husk:
|
|||||||
Tooltip:
|
Tooltip:
|
||||||
Name: Longbow
|
Name: Longbow
|
||||||
Aircraft:
|
Aircraft:
|
||||||
TurnSpeed: 4
|
TurnSpeed: 16
|
||||||
Speed: 149
|
Speed: 149
|
||||||
WithIdleOverlay:
|
WithIdleOverlay:
|
||||||
Offset: 0,0,85
|
Offset: 0,0,85
|
||||||
@@ -239,7 +239,7 @@ HIND.Husk:
|
|||||||
Tooltip:
|
Tooltip:
|
||||||
Name: Hind
|
Name: Hind
|
||||||
Aircraft:
|
Aircraft:
|
||||||
TurnSpeed: 4
|
TurnSpeed: 16
|
||||||
Speed: 112
|
Speed: 112
|
||||||
WithIdleOverlay:
|
WithIdleOverlay:
|
||||||
Sequence: rotor
|
Sequence: rotor
|
||||||
@@ -262,7 +262,7 @@ U2.Husk:
|
|||||||
Tooltip:
|
Tooltip:
|
||||||
Name: Husk (Spy Plane)
|
Name: Husk (Spy Plane)
|
||||||
Aircraft:
|
Aircraft:
|
||||||
TurnSpeed: 7
|
TurnSpeed: 28
|
||||||
Speed: 373
|
Speed: 373
|
||||||
Contrail@1:
|
Contrail@1:
|
||||||
Offset: -725,683,0
|
Offset: -725,683,0
|
||||||
@@ -451,7 +451,7 @@ MH60.Husk:
|
|||||||
Tooltip:
|
Tooltip:
|
||||||
Name: Black Hawk
|
Name: Black Hawk
|
||||||
Aircraft:
|
Aircraft:
|
||||||
TurnSpeed: 4
|
TurnSpeed: 16
|
||||||
Speed: 112
|
Speed: 112
|
||||||
WithIdleOverlay:
|
WithIdleOverlay:
|
||||||
Sequence: rotor
|
Sequence: rotor
|
||||||
|
|||||||
@@ -752,7 +752,7 @@ Ant:
|
|||||||
HP: 75000
|
HP: 75000
|
||||||
Mobile:
|
Mobile:
|
||||||
Speed: 99
|
Speed: 99
|
||||||
TurnSpeed: 12
|
TurnSpeed: 48
|
||||||
Locomotor: lighttracked
|
Locomotor: lighttracked
|
||||||
-Crushable:
|
-Crushable:
|
||||||
AutoTarget:
|
AutoTarget:
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ SS:
|
|||||||
Armor:
|
Armor:
|
||||||
Type: Light
|
Type: Light
|
||||||
Mobile:
|
Mobile:
|
||||||
TurnSpeed: 4
|
TurnSpeed: 16
|
||||||
Speed: 71
|
Speed: 71
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
MinRange: 5c0
|
MinRange: 5c0
|
||||||
@@ -84,7 +84,7 @@ MSUB:
|
|||||||
Armor:
|
Armor:
|
||||||
Type: Light
|
Type: Light
|
||||||
Mobile:
|
Mobile:
|
||||||
TurnSpeed: 3
|
TurnSpeed: 12
|
||||||
Speed: 42
|
Speed: 42
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
MinRange: 5c0
|
MinRange: 5c0
|
||||||
@@ -155,7 +155,7 @@ DD:
|
|||||||
Armor:
|
Armor:
|
||||||
Type: Heavy
|
Type: Heavy
|
||||||
Mobile:
|
Mobile:
|
||||||
TurnSpeed: 7
|
TurnSpeed: 28
|
||||||
Speed: 85
|
Speed: 85
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
MinRange: 5c0
|
MinRange: 5c0
|
||||||
@@ -164,7 +164,7 @@ DD:
|
|||||||
RevealsShroud@GAPGEN:
|
RevealsShroud@GAPGEN:
|
||||||
Range: 5c0
|
Range: 5c0
|
||||||
Turreted:
|
Turreted:
|
||||||
TurnSpeed: 7
|
TurnSpeed: 28
|
||||||
Offset: 469,0,128
|
Offset: 469,0,128
|
||||||
Armament@PRIMARY:
|
Armament@PRIMARY:
|
||||||
Weapon: Stinger
|
Weapon: Stinger
|
||||||
@@ -207,7 +207,7 @@ CA:
|
|||||||
Armor:
|
Armor:
|
||||||
Type: Heavy
|
Type: Heavy
|
||||||
Mobile:
|
Mobile:
|
||||||
TurnSpeed: 3
|
TurnSpeed: 12
|
||||||
Speed: 42
|
Speed: 42
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
MinRange: 5c0
|
MinRange: 5c0
|
||||||
@@ -218,11 +218,11 @@ CA:
|
|||||||
Turreted@PRIMARY:
|
Turreted@PRIMARY:
|
||||||
Turret: primary
|
Turret: primary
|
||||||
Offset: -896,0,128
|
Offset: -896,0,128
|
||||||
TurnSpeed: 3
|
TurnSpeed: 12
|
||||||
Turreted@SECONDARY:
|
Turreted@SECONDARY:
|
||||||
Turret: secondary
|
Turret: secondary
|
||||||
Offset: 768,0,128
|
Offset: 768,0,128
|
||||||
TurnSpeed: 3
|
TurnSpeed: 12
|
||||||
Armament@PRIMARY:
|
Armament@PRIMARY:
|
||||||
Turret: primary
|
Turret: primary
|
||||||
Weapon: 8Inch
|
Weapon: 8Inch
|
||||||
@@ -309,7 +309,7 @@ PT:
|
|||||||
Armor:
|
Armor:
|
||||||
Type: Heavy
|
Type: Heavy
|
||||||
Mobile:
|
Mobile:
|
||||||
TurnSpeed: 7
|
TurnSpeed: 28
|
||||||
Speed: 128
|
Speed: 128
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
MinRange: 5c0
|
MinRange: 5c0
|
||||||
@@ -318,7 +318,7 @@ PT:
|
|||||||
RevealsShroud@GAPGEN:
|
RevealsShroud@GAPGEN:
|
||||||
Range: 5c0
|
Range: 5c0
|
||||||
Turreted:
|
Turreted:
|
||||||
TurnSpeed: 7
|
TurnSpeed: 28
|
||||||
Offset: 512,0,0
|
Offset: 512,0,0
|
||||||
Armament@PRIMARY:
|
Armament@PRIMARY:
|
||||||
Weapon: 2Inch
|
Weapon: 2Inch
|
||||||
|
|||||||
@@ -154,49 +154,49 @@ SPEN:
|
|||||||
Exit@1:
|
Exit@1:
|
||||||
RequiresCondition: !being-captured
|
RequiresCondition: !being-captured
|
||||||
SpawnOffset: 0,-213,0
|
SpawnOffset: 0,-213,0
|
||||||
Facing: 96
|
Facing: 384
|
||||||
ExitCell: -1,2
|
ExitCell: -1,2
|
||||||
ProductionTypes: Submarine
|
ProductionTypes: Submarine
|
||||||
Exit@2:
|
Exit@2:
|
||||||
RequiresCondition: !being-captured
|
RequiresCondition: !being-captured
|
||||||
SpawnOffset: 0,-213,0
|
SpawnOffset: 0,-213,0
|
||||||
Facing: 160
|
Facing: 640
|
||||||
ExitCell: 3,2
|
ExitCell: 3,2
|
||||||
ProductionTypes: Submarine
|
ProductionTypes: Submarine
|
||||||
Exit@3:
|
Exit@3:
|
||||||
RequiresCondition: !being-captured
|
RequiresCondition: !being-captured
|
||||||
SpawnOffset: 0,0,0
|
SpawnOffset: 0,0,0
|
||||||
Facing: 32
|
Facing: 128
|
||||||
ExitCell: 0,0
|
ExitCell: 0,0
|
||||||
ProductionTypes: Submarine
|
ProductionTypes: Submarine
|
||||||
Exit@4:
|
Exit@4:
|
||||||
RequiresCondition: !being-captured
|
RequiresCondition: !being-captured
|
||||||
SpawnOffset: 0,0,0
|
SpawnOffset: 0,0,0
|
||||||
Facing: 224
|
Facing: 896
|
||||||
ExitCell: 2,0
|
ExitCell: 2,0
|
||||||
ProductionTypes: Submarine
|
ProductionTypes: Submarine
|
||||||
Exit@b1:
|
Exit@b1:
|
||||||
RequiresCondition: !being-captured
|
RequiresCondition: !being-captured
|
||||||
SpawnOffset: -1024,1024,0
|
SpawnOffset: -1024,1024,0
|
||||||
Facing: 160
|
Facing: 640
|
||||||
ExitCell: 0,2
|
ExitCell: 0,2
|
||||||
ProductionTypes: Ship
|
ProductionTypes: Ship
|
||||||
Exit@b2:
|
Exit@b2:
|
||||||
RequiresCondition: !being-captured
|
RequiresCondition: !being-captured
|
||||||
SpawnOffset: 1024,1024,0
|
SpawnOffset: 1024,1024,0
|
||||||
Facing: 224
|
Facing: 896
|
||||||
ExitCell: 2,2
|
ExitCell: 2,2
|
||||||
ProductionTypes: Ship
|
ProductionTypes: Ship
|
||||||
Exit@b3:
|
Exit@b3:
|
||||||
RequiresCondition: !being-captured
|
RequiresCondition: !being-captured
|
||||||
SpawnOffset: -1024,-1024,0
|
SpawnOffset: -1024,-1024,0
|
||||||
Facing: 96
|
Facing: 384
|
||||||
ExitCell: 0,0
|
ExitCell: 0,0
|
||||||
ProductionTypes: Ship
|
ProductionTypes: Ship
|
||||||
Exit@b4:
|
Exit@b4:
|
||||||
RequiresCondition: !being-captured
|
RequiresCondition: !being-captured
|
||||||
SpawnOffset: 1024,-1024,0
|
SpawnOffset: 1024,-1024,0
|
||||||
Facing: 32
|
Facing: 128
|
||||||
ExitCell: 2,0
|
ExitCell: 2,0
|
||||||
ProductionTypes: Ship
|
ProductionTypes: Ship
|
||||||
Production:
|
Production:
|
||||||
@@ -292,25 +292,25 @@ SYRD:
|
|||||||
Exit@1:
|
Exit@1:
|
||||||
RequiresCondition: !being-captured
|
RequiresCondition: !being-captured
|
||||||
SpawnOffset: -1024,1024,0
|
SpawnOffset: -1024,1024,0
|
||||||
Facing: 160
|
Facing: 640
|
||||||
ExitCell: 0,2
|
ExitCell: 0,2
|
||||||
ProductionTypes: Ship, Boat
|
ProductionTypes: Ship, Boat
|
||||||
Exit@2:
|
Exit@2:
|
||||||
RequiresCondition: !being-captured
|
RequiresCondition: !being-captured
|
||||||
SpawnOffset: 1024,1024,0
|
SpawnOffset: 1024,1024,0
|
||||||
Facing: 224
|
Facing: 896
|
||||||
ExitCell: 2,2
|
ExitCell: 2,2
|
||||||
ProductionTypes: Ship, Boat
|
ProductionTypes: Ship, Boat
|
||||||
Exit@3:
|
Exit@3:
|
||||||
RequiresCondition: !being-captured
|
RequiresCondition: !being-captured
|
||||||
SpawnOffset: -1024,-1024,0
|
SpawnOffset: -1024,-1024,0
|
||||||
Facing: 96
|
Facing: 384
|
||||||
ExitCell: 0,0
|
ExitCell: 0,0
|
||||||
ProductionTypes: Ship, Boat
|
ProductionTypes: Ship, Boat
|
||||||
Exit@4:
|
Exit@4:
|
||||||
RequiresCondition: !being-captured
|
RequiresCondition: !being-captured
|
||||||
SpawnOffset: 1024,-1024,0
|
SpawnOffset: 1024,-1024,0
|
||||||
Facing: 32
|
Facing: 128
|
||||||
ExitCell: 2,0
|
ExitCell: 2,0
|
||||||
ProductionTypes: Ship, Boat
|
ProductionTypes: Ship, Boat
|
||||||
Production:
|
Production:
|
||||||
@@ -601,8 +601,8 @@ AGUN:
|
|||||||
WithBuildingBib:
|
WithBuildingBib:
|
||||||
HasMinibib: true
|
HasMinibib: true
|
||||||
Turreted:
|
Turreted:
|
||||||
TurnSpeed: 15
|
TurnSpeed: 60
|
||||||
InitialFacing: 224
|
InitialFacing: 896
|
||||||
-WithSpriteBody:
|
-WithSpriteBody:
|
||||||
WithEmbeddedTurretSpriteBody:
|
WithEmbeddedTurretSpriteBody:
|
||||||
Armament:
|
Armament:
|
||||||
@@ -699,7 +699,7 @@ PBOX:
|
|||||||
WithBuildingBib:
|
WithBuildingBib:
|
||||||
HasMinibib: true
|
HasMinibib: true
|
||||||
Turreted:
|
Turreted:
|
||||||
TurnSpeed: 255
|
TurnSpeed: 512
|
||||||
-QuantizeFacingsFromSequence:
|
-QuantizeFacingsFromSequence:
|
||||||
BodyOrientation:
|
BodyOrientation:
|
||||||
QuantizedFacings: 8
|
QuantizedFacings: 8
|
||||||
@@ -761,7 +761,7 @@ HBOX:
|
|||||||
Condition: cloak-force-disabled
|
Condition: cloak-force-disabled
|
||||||
ValidDamageStates: Critical
|
ValidDamageStates: Critical
|
||||||
Turreted:
|
Turreted:
|
||||||
TurnSpeed: 255
|
TurnSpeed: 512
|
||||||
-QuantizeFacingsFromSequence:
|
-QuantizeFacingsFromSequence:
|
||||||
BodyOrientation:
|
BodyOrientation:
|
||||||
QuantizedFacings: 8
|
QuantizedFacings: 8
|
||||||
@@ -815,8 +815,8 @@ GUN:
|
|||||||
WithBuildingBib:
|
WithBuildingBib:
|
||||||
HasMinibib: true
|
HasMinibib: true
|
||||||
Turreted:
|
Turreted:
|
||||||
TurnSpeed: 12
|
TurnSpeed: 48
|
||||||
InitialFacing: 56
|
InitialFacing: 224
|
||||||
-WithSpriteBody:
|
-WithSpriteBody:
|
||||||
WithEmbeddedTurretSpriteBody:
|
WithEmbeddedTurretSpriteBody:
|
||||||
Armament:
|
Armament:
|
||||||
@@ -859,7 +859,7 @@ FTUR:
|
|||||||
WithBuildingBib:
|
WithBuildingBib:
|
||||||
HasMinibib: true
|
HasMinibib: true
|
||||||
Turreted:
|
Turreted:
|
||||||
TurnSpeed: 255
|
TurnSpeed: 512
|
||||||
Offset: 0,0,112
|
Offset: 0,0,112
|
||||||
Armament:
|
Armament:
|
||||||
Weapon: FireballLauncher
|
Weapon: FireballLauncher
|
||||||
@@ -914,7 +914,7 @@ SAM:
|
|||||||
WithBuildingBib:
|
WithBuildingBib:
|
||||||
HasMinibib: true
|
HasMinibib: true
|
||||||
Turreted:
|
Turreted:
|
||||||
TurnSpeed: 30
|
TurnSpeed: 120
|
||||||
InitialFacing: 0
|
InitialFacing: 0
|
||||||
-WithSpriteBody:
|
-WithSpriteBody:
|
||||||
WithEmbeddedTurretSpriteBody:
|
WithEmbeddedTurretSpriteBody:
|
||||||
@@ -1158,7 +1158,7 @@ FACT:
|
|||||||
PauseOnCondition: chrono-vortex || being-captured || being-demolished || build-incomplete
|
PauseOnCondition: chrono-vortex || being-captured || being-demolished || build-incomplete
|
||||||
IntoActor: mcv
|
IntoActor: mcv
|
||||||
Offset: 1,1
|
Offset: 1,1
|
||||||
Facing: 96
|
Facing: 384
|
||||||
TransformsIntoMobile:
|
TransformsIntoMobile:
|
||||||
RequiresCondition: factundeploy
|
RequiresCondition: factundeploy
|
||||||
Locomotor: heavywheeled
|
Locomotor: heavywheeled
|
||||||
@@ -1238,7 +1238,7 @@ PROC:
|
|||||||
RevealsShroud@GAPGEN:
|
RevealsShroud@GAPGEN:
|
||||||
Range: 4c0
|
Range: 4c0
|
||||||
Refinery:
|
Refinery:
|
||||||
DockAngle: 64
|
DockAngle: 256
|
||||||
DockOffset: 1,2
|
DockOffset: 1,2
|
||||||
StoresResources:
|
StoresResources:
|
||||||
Capacity: 2000
|
Capacity: 2000
|
||||||
@@ -1247,7 +1247,7 @@ PROC:
|
|||||||
FreeActor:
|
FreeActor:
|
||||||
Actor: HARV
|
Actor: HARV
|
||||||
SpawnOffset: 1,2
|
SpawnOffset: 1,2
|
||||||
Facing: 64
|
Facing: 256
|
||||||
InfiltrateForCash:
|
InfiltrateForCash:
|
||||||
Percentage: 50
|
Percentage: 50
|
||||||
Types: SpyInfiltrate, ThiefInfiltrate
|
Types: SpyInfiltrate, ThiefInfiltrate
|
||||||
@@ -1373,7 +1373,7 @@ HPAD:
|
|||||||
RequiresCondition: !being-captured
|
RequiresCondition: !being-captured
|
||||||
SpawnOffset: 0,-256,0
|
SpawnOffset: 0,-256,0
|
||||||
ExitCell: 0,0
|
ExitCell: 0,0
|
||||||
Facing: 224
|
Facing: 896
|
||||||
RallyPoint:
|
RallyPoint:
|
||||||
Production:
|
Production:
|
||||||
Produces: Aircraft, Helicopter
|
Produces: Aircraft, Helicopter
|
||||||
@@ -1454,7 +1454,7 @@ AFLD:
|
|||||||
Exit@1:
|
Exit@1:
|
||||||
RequiresCondition: !being-captured
|
RequiresCondition: !being-captured
|
||||||
ExitCell: 1,1
|
ExitCell: 1,1
|
||||||
Facing: 192
|
Facing: 768
|
||||||
RallyPoint:
|
RallyPoint:
|
||||||
Production:
|
Production:
|
||||||
Produces: Aircraft, Plane
|
Produces: Aircraft, Plane
|
||||||
|
|||||||
@@ -76,7 +76,7 @@ V2RL:
|
|||||||
RevealsShroud@GAPGEN:
|
RevealsShroud@GAPGEN:
|
||||||
Range: 4c0
|
Range: 4c0
|
||||||
Turreted:
|
Turreted:
|
||||||
TurnSpeed: 7
|
TurnSpeed: 28
|
||||||
Armament:
|
Armament:
|
||||||
Weapon: 25mm
|
Weapon: 25mm
|
||||||
Recoil: 85
|
Recoil: 85
|
||||||
@@ -120,7 +120,7 @@ V2RL:
|
|||||||
RevealsShroud@GAPGEN:
|
RevealsShroud@GAPGEN:
|
||||||
Range: 4c0
|
Range: 4c0
|
||||||
Turreted:
|
Turreted:
|
||||||
TurnSpeed: 5
|
TurnSpeed: 20
|
||||||
Armament:
|
Armament:
|
||||||
Weapon: 90mm
|
Weapon: 90mm
|
||||||
Recoil: 128
|
Recoil: 128
|
||||||
@@ -166,7 +166,7 @@ V2RL:
|
|||||||
RevealsShroud@GAPGEN:
|
RevealsShroud@GAPGEN:
|
||||||
Range: 4c0
|
Range: 4c0
|
||||||
Turreted:
|
Turreted:
|
||||||
TurnSpeed: 5
|
TurnSpeed: 20
|
||||||
Armament:
|
Armament:
|
||||||
Weapon: 105mm
|
Weapon: 105mm
|
||||||
Recoil: 128
|
Recoil: 128
|
||||||
@@ -213,7 +213,7 @@ V2RL:
|
|||||||
RevealsShroud@GAPGEN:
|
RevealsShroud@GAPGEN:
|
||||||
Range: 4c0
|
Range: 4c0
|
||||||
Turreted:
|
Turreted:
|
||||||
TurnSpeed: 2
|
TurnSpeed: 8
|
||||||
Armament@PRIMARY:
|
Armament@PRIMARY:
|
||||||
Weapon: 120mm
|
Weapon: 120mm
|
||||||
LocalOffset: 900,180,340, 900,-180,340
|
LocalOffset: 900,180,340, 900,-180,340
|
||||||
@@ -262,7 +262,7 @@ ARTY:
|
|||||||
Armor:
|
Armor:
|
||||||
Type: Light
|
Type: Light
|
||||||
Mobile:
|
Mobile:
|
||||||
TurnSpeed: 2
|
TurnSpeed: 8
|
||||||
Speed: 85
|
Speed: 85
|
||||||
Locomotor: lighttracked
|
Locomotor: lighttracked
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
@@ -374,7 +374,7 @@ MCV:
|
|||||||
Transforms:
|
Transforms:
|
||||||
IntoActor: fact
|
IntoActor: fact
|
||||||
Offset: -1,-1
|
Offset: -1,-1
|
||||||
Facing: 96
|
Facing: 384
|
||||||
TransformSounds: placbldg.aud, build5.aud
|
TransformSounds: placbldg.aud, build5.aud
|
||||||
NoTransformNotification: BuildingCannotPlaceAudio
|
NoTransformNotification: BuildingCannotPlaceAudio
|
||||||
MustBeDestroyed:
|
MustBeDestroyed:
|
||||||
@@ -406,7 +406,7 @@ JEEP:
|
|||||||
Armor:
|
Armor:
|
||||||
Type: Light
|
Type: Light
|
||||||
Mobile:
|
Mobile:
|
||||||
TurnSpeed: 10
|
TurnSpeed: 40
|
||||||
Speed: 170
|
Speed: 170
|
||||||
PauseOnCondition: notmobile || being-captured
|
PauseOnCondition: notmobile || being-captured
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
@@ -416,7 +416,7 @@ JEEP:
|
|||||||
RevealsShroud@GAPGEN:
|
RevealsShroud@GAPGEN:
|
||||||
Range: 4c0
|
Range: 4c0
|
||||||
Turreted:
|
Turreted:
|
||||||
TurnSpeed: 10
|
TurnSpeed: 40
|
||||||
Offset: 0,0,128
|
Offset: 0,0,128
|
||||||
Armament:
|
Armament:
|
||||||
Weapon: M60mg
|
Weapon: M60mg
|
||||||
@@ -681,7 +681,7 @@ FTRK:
|
|||||||
Armor:
|
Armor:
|
||||||
Type: Light
|
Type: Light
|
||||||
Mobile:
|
Mobile:
|
||||||
TurnSpeed: 10
|
TurnSpeed: 40
|
||||||
Speed: 118
|
Speed: 118
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
MinRange: 4c0
|
MinRange: 4c0
|
||||||
@@ -690,7 +690,7 @@ FTRK:
|
|||||||
RevealsShroud@GAPGEN:
|
RevealsShroud@GAPGEN:
|
||||||
Range: 4c0
|
Range: 4c0
|
||||||
Turreted:
|
Turreted:
|
||||||
TurnSpeed: 10
|
TurnSpeed: 40
|
||||||
Offset: -298,0,298
|
Offset: -298,0,298
|
||||||
Armament@AA:
|
Armament@AA:
|
||||||
Weapon: FLAK-23-AA
|
Weapon: FLAK-23-AA
|
||||||
@@ -871,7 +871,7 @@ STNK:
|
|||||||
Weapon: APTusk.stnk
|
Weapon: APTusk.stnk
|
||||||
LocalOffset: 192,0,176
|
LocalOffset: 192,0,176
|
||||||
Turreted:
|
Turreted:
|
||||||
TurnSpeed: 5
|
TurnSpeed: 20
|
||||||
AttackTurreted:
|
AttackTurreted:
|
||||||
WithSpriteTurret:
|
WithSpriteTurret:
|
||||||
Cargo:
|
Cargo:
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
Inaccuracy: 128
|
Inaccuracy: 128
|
||||||
Image: DRAGON
|
Image: DRAGON
|
||||||
Shadow: True
|
Shadow: True
|
||||||
HorizontalRateOfTurn: 5
|
HorizontalRateOfTurn: 20
|
||||||
RangeLimit: 6c0
|
RangeLimit: 6c0
|
||||||
Warhead@1Dam: SpreadDamage
|
Warhead@1Dam: SpreadDamage
|
||||||
Spread: 128
|
Spread: 128
|
||||||
@@ -79,7 +79,7 @@ HellfireAG:
|
|||||||
BurstDelays: 7
|
BurstDelays: 7
|
||||||
Projectile: Missile
|
Projectile: Missile
|
||||||
Speed: 256
|
Speed: 256
|
||||||
HorizontalRateOfTurn: 10
|
HorizontalRateOfTurn: 40
|
||||||
RangeLimit: 8c512
|
RangeLimit: 8c512
|
||||||
Warhead@1Dam: SpreadDamage
|
Warhead@1Dam: SpreadDamage
|
||||||
Damage: 6000
|
Damage: 6000
|
||||||
@@ -99,7 +99,7 @@ HellfireAA:
|
|||||||
Projectile: Missile
|
Projectile: Missile
|
||||||
Speed: 492
|
Speed: 492
|
||||||
Inaccuracy: 128
|
Inaccuracy: 128
|
||||||
HorizontalRateOfTurn: 25
|
HorizontalRateOfTurn: 100
|
||||||
RangeLimit: 7c0
|
RangeLimit: 7c0
|
||||||
CloseEnough: 0c600
|
CloseEnough: 0c600
|
||||||
Warhead@1Dam: SpreadDamage
|
Warhead@1Dam: SpreadDamage
|
||||||
@@ -119,7 +119,7 @@ MammothTusk:
|
|||||||
ValidTargets: AirborneActor, Infantry
|
ValidTargets: AirborneActor, Infantry
|
||||||
Projectile: Missile
|
Projectile: Missile
|
||||||
Speed: 341
|
Speed: 341
|
||||||
HorizontalRateOfTurn: 15
|
HorizontalRateOfTurn: 60
|
||||||
RangeLimit: 9c614
|
RangeLimit: 9c614
|
||||||
Warhead@1Dam: SpreadDamage
|
Warhead@1Dam: SpreadDamage
|
||||||
Spread: 256
|
Spread: 256
|
||||||
@@ -147,7 +147,7 @@ Nike:
|
|||||||
Arm: 3
|
Arm: 3
|
||||||
Inaccuracy: 0
|
Inaccuracy: 0
|
||||||
Image: MISSILE
|
Image: MISSILE
|
||||||
HorizontalRateOfTurn: 25
|
HorizontalRateOfTurn: 100
|
||||||
RangeLimit: 9c0
|
RangeLimit: 9c0
|
||||||
Speed: 341
|
Speed: 341
|
||||||
Warhead@1Dam: SpreadDamage
|
Warhead@1Dam: SpreadDamage
|
||||||
@@ -164,7 +164,7 @@ RedEye:
|
|||||||
ReloadDelay: 50
|
ReloadDelay: 50
|
||||||
Projectile: Missile
|
Projectile: Missile
|
||||||
Inaccuracy: 0
|
Inaccuracy: 0
|
||||||
HorizontalRateOfTurn: 20
|
HorizontalRateOfTurn: 80
|
||||||
Speed: 298
|
Speed: 298
|
||||||
Warhead@1Dam: SpreadDamage
|
Warhead@1Dam: SpreadDamage
|
||||||
Damage: 4000
|
Damage: 4000
|
||||||
@@ -182,7 +182,7 @@ Stinger:
|
|||||||
Projectile: Missile
|
Projectile: Missile
|
||||||
Arm: 3
|
Arm: 3
|
||||||
Inaccuracy: 0
|
Inaccuracy: 0
|
||||||
HorizontalRateOfTurn: 20
|
HorizontalRateOfTurn: 80
|
||||||
RangeLimit: 9c512
|
RangeLimit: 9c512
|
||||||
Speed: 170
|
Speed: 170
|
||||||
CloseEnough: 149
|
CloseEnough: 149
|
||||||
@@ -212,7 +212,7 @@ APTusk:
|
|||||||
Projectile: Missile
|
Projectile: Missile
|
||||||
Speed: 298
|
Speed: 298
|
||||||
TrailImage: smokey
|
TrailImage: smokey
|
||||||
HorizontalRateOfTurn: 10
|
HorizontalRateOfTurn: 40
|
||||||
RangeLimit: 7c204
|
RangeLimit: 7c204
|
||||||
|
|
||||||
APTusk.stnk:
|
APTusk.stnk:
|
||||||
@@ -231,7 +231,7 @@ TorpTube:
|
|||||||
Arm: 3
|
Arm: 3
|
||||||
Speed: 85
|
Speed: 85
|
||||||
TrailImage: bubbles
|
TrailImage: bubbles
|
||||||
HorizontalRateOfTurn: 1
|
HorizontalRateOfTurn: 4
|
||||||
RangeLimit: 10c819
|
RangeLimit: 10c819
|
||||||
BoundToTerrainType: Water
|
BoundToTerrainType: Water
|
||||||
Palette: shadow
|
Palette: shadow
|
||||||
@@ -265,7 +265,7 @@ TorpTube:
|
|||||||
Projectile: Missile
|
Projectile: Missile
|
||||||
Speed: 234
|
Speed: 234
|
||||||
Inaccuracy: 0c614
|
Inaccuracy: 0c614
|
||||||
HorizontalRateOfTurn: 15
|
HorizontalRateOfTurn: 60
|
||||||
RangeLimit: 9c0
|
RangeLimit: 9c0
|
||||||
Image: MISSILE
|
Image: MISSILE
|
||||||
TrailImage: smokey
|
TrailImage: smokey
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ DPOD:
|
|||||||
IdleBehavior: Land
|
IdleBehavior: Land
|
||||||
Pitch: 0
|
Pitch: 0
|
||||||
Roll: 0
|
Roll: 0
|
||||||
TurnSpeed: 5
|
TurnSpeed: 20
|
||||||
Speed: 149
|
Speed: 149
|
||||||
InitialFacing: 0
|
InitialFacing: 0
|
||||||
Health:
|
Health:
|
||||||
@@ -48,7 +48,7 @@ DPOD2:
|
|||||||
Armor:
|
Armor:
|
||||||
Type: Light
|
Type: Light
|
||||||
Aircraft:
|
Aircraft:
|
||||||
TurnSpeed: 5
|
TurnSpeed: 20
|
||||||
Speed: 300
|
Speed: 300
|
||||||
CruiseAltitude: 16c0
|
CruiseAltitude: 16c0
|
||||||
MaximumPitch: 110
|
MaximumPitch: 110
|
||||||
@@ -96,7 +96,7 @@ DSHP:
|
|||||||
IdleBehavior: Land
|
IdleBehavior: Land
|
||||||
Pitch: 0
|
Pitch: 0
|
||||||
Roll: 0
|
Roll: 0
|
||||||
TurnSpeed: 5
|
TurnSpeed: 20
|
||||||
Speed: 168
|
Speed: 168
|
||||||
InitialFacing: 0
|
InitialFacing: 0
|
||||||
TakeoffSounds: dropup1.aud
|
TakeoffSounds: dropup1.aud
|
||||||
@@ -138,7 +138,7 @@ ORCA:
|
|||||||
Selectable:
|
Selectable:
|
||||||
Bounds: 30,24
|
Bounds: 30,24
|
||||||
Aircraft:
|
Aircraft:
|
||||||
TurnSpeed: 5
|
TurnSpeed: 20
|
||||||
Speed: 186
|
Speed: 186
|
||||||
TakeoffSounds: orcaup1.aud
|
TakeoffSounds: orcaup1.aud
|
||||||
LandingSounds: orcadwn1.aud
|
LandingSounds: orcadwn1.aud
|
||||||
@@ -200,7 +200,7 @@ ORCAB:
|
|||||||
Bounds: 30,24
|
Bounds: 30,24
|
||||||
Aircraft:
|
Aircraft:
|
||||||
CruiseAltitude: 5c512
|
CruiseAltitude: 5c512
|
||||||
TurnSpeed: 3
|
TurnSpeed: 12
|
||||||
Speed: 96
|
Speed: 96
|
||||||
CruisingCondition: cruising
|
CruisingCondition: cruising
|
||||||
TakeoffSounds: orcaup1.aud
|
TakeoffSounds: orcaup1.aud
|
||||||
@@ -262,7 +262,7 @@ ORCATRAN:
|
|||||||
Prerequisites: ~disabled
|
Prerequisites: ~disabled
|
||||||
RenderSprites:
|
RenderSprites:
|
||||||
Aircraft:
|
Aircraft:
|
||||||
TurnSpeed: 5
|
TurnSpeed: 20
|
||||||
Speed: 84
|
Speed: 84
|
||||||
InitialFacing: 0
|
InitialFacing: 0
|
||||||
LandableTerrainTypes: Clear, Road, Rail, DirtRoad, Rough, Tiberium, BlueTiberium, Veins
|
LandableTerrainTypes: Clear, Road, Rail, DirtRoad, Rough, Tiberium, BlueTiberium, Veins
|
||||||
@@ -304,7 +304,7 @@ TRNSPORT:
|
|||||||
Prerequisites: ~gahpad, gadept
|
Prerequisites: ~gahpad, gadept
|
||||||
Description: VTOL aircraft capable of lifting\nand transporting vehicles.\n Unarmed
|
Description: VTOL aircraft capable of lifting\nand transporting vehicles.\n Unarmed
|
||||||
Aircraft:
|
Aircraft:
|
||||||
TurnSpeed: 5
|
TurnSpeed: 20
|
||||||
Speed: 149
|
Speed: 149
|
||||||
InitialFacing: 0
|
InitialFacing: 0
|
||||||
Pitch: 0
|
Pitch: 0
|
||||||
@@ -354,7 +354,7 @@ SCRIN:
|
|||||||
VoiceSet: Scrin
|
VoiceSet: Scrin
|
||||||
Aircraft:
|
Aircraft:
|
||||||
CruiseAltitude: 5c0
|
CruiseAltitude: 5c0
|
||||||
TurnSpeed: 3
|
TurnSpeed: 12
|
||||||
Speed: 168
|
Speed: 168
|
||||||
TakeoffSounds: dropup1.aud
|
TakeoffSounds: dropup1.aud
|
||||||
LandingSounds: dropdwn1.aud
|
LandingSounds: dropdwn1.aud
|
||||||
@@ -420,7 +420,7 @@ APACHE:
|
|||||||
PitchSpeed: 8
|
PitchSpeed: 8
|
||||||
Roll: 16
|
Roll: 16
|
||||||
RollSpeed: 8
|
RollSpeed: 8
|
||||||
TurnSpeed: 5
|
TurnSpeed: 20
|
||||||
Speed: 130
|
Speed: 130
|
||||||
CanSlide: false
|
CanSlide: false
|
||||||
TakeOffOnResupply: true
|
TakeOffOnResupply: true
|
||||||
@@ -480,7 +480,7 @@ HUNTER:
|
|||||||
Armor:
|
Armor:
|
||||||
Type: Light
|
Type: Light
|
||||||
Aircraft:
|
Aircraft:
|
||||||
TurnSpeed: 16
|
TurnSpeed: 64
|
||||||
Speed: 355
|
Speed: 355
|
||||||
Pitch: 0
|
Pitch: 0
|
||||||
Roll: 0
|
Roll: 0
|
||||||
|
|||||||
@@ -1690,7 +1690,7 @@ GAICBM:
|
|||||||
Transforms:
|
Transforms:
|
||||||
IntoActor: icbm
|
IntoActor: icbm
|
||||||
Offset: 1,1
|
Offset: 1,1
|
||||||
Facing: 96
|
Facing: 384
|
||||||
TransformSounds: place2.aud
|
TransformSounds: place2.aud
|
||||||
NoTransformSounds:
|
NoTransformSounds:
|
||||||
-WithDeathAnimation:
|
-WithDeathAnimation:
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
Name: Mammoth Tank
|
Name: Mammoth Tank
|
||||||
Mobile:
|
Mobile:
|
||||||
Speed: 56
|
Speed: 56
|
||||||
TurnSpeed: 5
|
TurnSpeed: 20
|
||||||
Health:
|
Health:
|
||||||
HP: 60000
|
HP: 60000
|
||||||
Armor:
|
Armor:
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
MaxHeightDelta: 3
|
MaxHeightDelta: 3
|
||||||
RequiresCondition: !inside-tunnel
|
RequiresCondition: !inside-tunnel
|
||||||
Turreted:
|
Turreted:
|
||||||
TurnSpeed: 3
|
TurnSpeed: 12
|
||||||
Armament@PRIMARY:
|
Armament@PRIMARY:
|
||||||
Weapon: 120mmx
|
Weapon: 120mmx
|
||||||
LocalOffset: 707,85,509, 707,-120,509
|
LocalOffset: 707,85,509, 707,-120,509
|
||||||
@@ -77,7 +77,7 @@ ICBM:
|
|||||||
Type: Light
|
Type: Light
|
||||||
Mobile:
|
Mobile:
|
||||||
Speed: 85
|
Speed: 85
|
||||||
TurnSpeed: 5
|
TurnSpeed: 20
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
RequiresCondition: !inside-tunnel
|
RequiresCondition: !inside-tunnel
|
||||||
Range: 7c0
|
Range: 7c0
|
||||||
@@ -85,7 +85,7 @@ ICBM:
|
|||||||
Transforms:
|
Transforms:
|
||||||
IntoActor: gaicbm
|
IntoActor: gaicbm
|
||||||
Offset: -1,-1
|
Offset: -1,-1
|
||||||
Facing: 96
|
Facing: 384
|
||||||
TransformSounds:
|
TransformSounds:
|
||||||
NoTransformSounds:
|
NoTransformSounds:
|
||||||
Voice: Move
|
Voice: Move
|
||||||
@@ -98,7 +98,7 @@ BUS:
|
|||||||
Tooltip:
|
Tooltip:
|
||||||
Name: School Bus
|
Name: School Bus
|
||||||
Mobile:
|
Mobile:
|
||||||
TurnSpeed: 5
|
TurnSpeed: 20
|
||||||
Speed: 113
|
Speed: 113
|
||||||
PauseOnCondition: empdisable || loading || being-captured || carried
|
PauseOnCondition: empdisable || loading || being-captured || carried
|
||||||
Health:
|
Health:
|
||||||
@@ -124,7 +124,7 @@ PICK:
|
|||||||
Tooltip:
|
Tooltip:
|
||||||
Name: Pickup
|
Name: Pickup
|
||||||
Mobile:
|
Mobile:
|
||||||
TurnSpeed: 5
|
TurnSpeed: 20
|
||||||
Speed: 113
|
Speed: 113
|
||||||
PauseOnCondition: empdisable || loading || being-captured || carried
|
PauseOnCondition: empdisable || loading || being-captured || carried
|
||||||
Health:
|
Health:
|
||||||
@@ -150,7 +150,7 @@ CAR:
|
|||||||
Tooltip:
|
Tooltip:
|
||||||
Name: Automobile
|
Name: Automobile
|
||||||
Mobile:
|
Mobile:
|
||||||
TurnSpeed: 5
|
TurnSpeed: 20
|
||||||
Speed: 113
|
Speed: 113
|
||||||
PauseOnCondition: empdisable || loading || being-captured || carried
|
PauseOnCondition: empdisable || loading || being-captured || carried
|
||||||
Health:
|
Health:
|
||||||
@@ -176,7 +176,7 @@ WINI:
|
|||||||
Tooltip:
|
Tooltip:
|
||||||
Name: Recreational Vehicle
|
Name: Recreational Vehicle
|
||||||
Mobile:
|
Mobile:
|
||||||
TurnSpeed: 5
|
TurnSpeed: 20
|
||||||
Speed: 113
|
Speed: 113
|
||||||
PauseOnCondition: empdisable || loading || being-captured || carried
|
PauseOnCondition: empdisable || loading || being-captured || carried
|
||||||
Health:
|
Health:
|
||||||
|
|||||||
@@ -760,7 +760,7 @@
|
|||||||
Mobile:
|
Mobile:
|
||||||
PauseOnCondition: empdisable || being-captured || carried
|
PauseOnCondition: empdisable || being-captured || carried
|
||||||
Locomotor: wheeled
|
Locomotor: wheeled
|
||||||
TurnSpeed: 5
|
TurnSpeed: 20
|
||||||
Voice: Move
|
Voice: Move
|
||||||
Selectable:
|
Selectable:
|
||||||
Bounds: 40,24
|
Bounds: 40,24
|
||||||
@@ -875,7 +875,7 @@
|
|||||||
RepairActors: gadept
|
RepairActors: gadept
|
||||||
Voice: Move
|
Voice: Move
|
||||||
Aircraft:
|
Aircraft:
|
||||||
InitialFacing: 224
|
InitialFacing: 896
|
||||||
AirborneCondition: airborne
|
AirborneCondition: airborne
|
||||||
CruisingCondition: cruising
|
CruisingCondition: cruising
|
||||||
CruiseAltitude: 4c704
|
CruiseAltitude: 4c704
|
||||||
@@ -951,7 +951,7 @@
|
|||||||
FallsToEarth:
|
FallsToEarth:
|
||||||
Moves: true
|
Moves: true
|
||||||
Velocity: 112
|
Velocity: 112
|
||||||
MaximumSpinSpeed: 10
|
MaximumSpinSpeed: 40
|
||||||
HitShape:
|
HitShape:
|
||||||
|
|
||||||
^Visceroid:
|
^Visceroid:
|
||||||
@@ -965,7 +965,7 @@
|
|||||||
Type: Light
|
Type: Light
|
||||||
Mobile:
|
Mobile:
|
||||||
Speed: 113
|
Speed: 113
|
||||||
TurnSpeed: 16
|
TurnSpeed: 64
|
||||||
Locomotor: visceroid
|
Locomotor: visceroid
|
||||||
Selectable:
|
Selectable:
|
||||||
Bounds: 26,26,0,-3
|
Bounds: 26,26,0,-3
|
||||||
@@ -1114,7 +1114,7 @@
|
|||||||
RenderSprites:
|
RenderSprites:
|
||||||
WithVoxelBody:
|
WithVoxelBody:
|
||||||
Mobile:
|
Mobile:
|
||||||
TurnSpeed: 5
|
TurnSpeed: 20
|
||||||
Voice: Move
|
Voice: Move
|
||||||
Speed: 113
|
Speed: 113
|
||||||
PauseOnCondition: empdisable
|
PauseOnCondition: empdisable
|
||||||
|
|||||||
@@ -73,8 +73,8 @@ GACTWR:
|
|||||||
DetectCloaked:
|
DetectCloaked:
|
||||||
RequiresCondition: !empdisable && !disabled && (tower.vulcan || tower.rocket || tower.sam)
|
RequiresCondition: !empdisable && !disabled && (tower.vulcan || tower.rocket || tower.sam)
|
||||||
Turreted:
|
Turreted:
|
||||||
TurnSpeed: 10
|
TurnSpeed: 40
|
||||||
InitialFacing: 224
|
InitialFacing: 896
|
||||||
AttackTurreted:
|
AttackTurreted:
|
||||||
RequiresCondition: !build-incomplete && (tower.vulcan || tower.rocket || tower.sam)
|
RequiresCondition: !build-incomplete && (tower.vulcan || tower.rocket || tower.sam)
|
||||||
PauseOnCondition: empdisable || disabled
|
PauseOnCondition: empdisable || disabled
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ APC:
|
|||||||
Prerequisites: ~gaweap, gapile, ~techlevel.medium
|
Prerequisites: ~gaweap, gapile, ~techlevel.medium
|
||||||
Description: Armored infantry transport.\nCan move on water.\n Unarmed
|
Description: Armored infantry transport.\nCan move on water.\n Unarmed
|
||||||
Mobile:
|
Mobile:
|
||||||
TurnSpeed: 5
|
TurnSpeed: 20
|
||||||
Speed: 113
|
Speed: 113
|
||||||
PauseOnCondition: empdisable || loading || being-captured || carried
|
PauseOnCondition: empdisable || loading || being-captured || carried
|
||||||
Locomotor: amphibious
|
Locomotor: amphibious
|
||||||
@@ -81,7 +81,7 @@ HVR:
|
|||||||
Weapon: HoverMissile
|
Weapon: HoverMissile
|
||||||
LocalOffset: 0,242,543, 0,-242,543
|
LocalOffset: 0,242,543, 0,-242,543
|
||||||
Turreted:
|
Turreted:
|
||||||
TurnSpeed: 7
|
TurnSpeed: 28
|
||||||
Offset: -128,0,85
|
Offset: -128,0,85
|
||||||
AttackTurreted:
|
AttackTurreted:
|
||||||
Voice: Attack
|
Voice: Attack
|
||||||
@@ -120,7 +120,7 @@ SMECH:
|
|||||||
Prerequisites: ~gaweap, ~techlevel.low
|
Prerequisites: ~gaweap, ~techlevel.low
|
||||||
Description: Anti-personnel walker.\n Strong vs Infantry, Light armor\n Weak vs Vehicles, Aircraft
|
Description: Anti-personnel walker.\n Strong vs Infantry, Light armor\n Weak vs Vehicles, Aircraft
|
||||||
Mobile:
|
Mobile:
|
||||||
TurnSpeed: 5
|
TurnSpeed: 20
|
||||||
Speed: 99
|
Speed: 99
|
||||||
AlwaysTurnInPlace: true
|
AlwaysTurnInPlace: true
|
||||||
Health:
|
Health:
|
||||||
@@ -168,7 +168,7 @@ MMCH:
|
|||||||
Prerequisites: ~gaweap, ~techlevel.medium
|
Prerequisites: ~gaweap, ~techlevel.medium
|
||||||
Description: General purpose mechanized walker.\n Strong vs Vehicles\n Weak vs Infantry, Aircraft
|
Description: General purpose mechanized walker.\n Strong vs Vehicles\n Weak vs Infantry, Aircraft
|
||||||
Mobile:
|
Mobile:
|
||||||
TurnSpeed: 5
|
TurnSpeed: 20
|
||||||
Speed: 56
|
Speed: 56
|
||||||
AlwaysTurnInPlace: true
|
AlwaysTurnInPlace: true
|
||||||
Health:
|
Health:
|
||||||
@@ -188,7 +188,7 @@ MMCH:
|
|||||||
MoveSequence: walk
|
MoveSequence: walk
|
||||||
ValidMovementTypes: Horizontal, Turn
|
ValidMovementTypes: Horizontal, Turn
|
||||||
Turreted:
|
Turreted:
|
||||||
TurnSpeed: 5
|
TurnSpeed: 20
|
||||||
AttackTurreted:
|
AttackTurreted:
|
||||||
Voice: Attack
|
Voice: Attack
|
||||||
PauseOnCondition: empdisable
|
PauseOnCondition: empdisable
|
||||||
@@ -232,7 +232,7 @@ HMEC:
|
|||||||
BuildLimit: 1
|
BuildLimit: 1
|
||||||
Description: Slow heavy walker.\nArmed with dual railguns and rocket launchers.\n Strong vs Infantry, Vehicles, Aircraft and Buildings\n Weak vs Nothing\nMaximum 1 can be built.
|
Description: Slow heavy walker.\nArmed with dual railguns and rocket launchers.\n Strong vs Infantry, Vehicles, Aircraft and Buildings\n Weak vs Nothing\nMaximum 1 can be built.
|
||||||
Mobile:
|
Mobile:
|
||||||
TurnSpeed: 3
|
TurnSpeed: 12
|
||||||
Speed: 42
|
Speed: 42
|
||||||
Health:
|
Health:
|
||||||
HP: 80000
|
HP: 80000
|
||||||
@@ -280,7 +280,7 @@ SONIC:
|
|||||||
Targetable:
|
Targetable:
|
||||||
TargetTypes: Ground, Vehicle, Disruptor
|
TargetTypes: Ground, Vehicle, Disruptor
|
||||||
Mobile:
|
Mobile:
|
||||||
TurnSpeed: 4
|
TurnSpeed: 16
|
||||||
Speed: 56
|
Speed: 56
|
||||||
Health:
|
Health:
|
||||||
HP: 50000
|
HP: 50000
|
||||||
@@ -298,7 +298,7 @@ SONIC:
|
|||||||
PauseOnCondition: empdisable
|
PauseOnCondition: empdisable
|
||||||
OpportunityFire: False
|
OpportunityFire: False
|
||||||
Turreted:
|
Turreted:
|
||||||
TurnSpeed: 5
|
TurnSpeed: 20
|
||||||
Offset: -170,0,0
|
Offset: -170,0,0
|
||||||
WithVoxelTurret:
|
WithVoxelTurret:
|
||||||
Explodes:
|
Explodes:
|
||||||
@@ -333,7 +333,7 @@ JUGG:
|
|||||||
Type: Light
|
Type: Light
|
||||||
Mobile:
|
Mobile:
|
||||||
Speed: 71
|
Speed: 71
|
||||||
TurnSpeed: 5
|
TurnSpeed: 20
|
||||||
AlwaysTurnInPlace: true
|
AlwaysTurnInPlace: true
|
||||||
ImmovableCondition: !undeployed
|
ImmovableCondition: !undeployed
|
||||||
RequireForceMoveCondition: !undeployed
|
RequireForceMoveCondition: !undeployed
|
||||||
@@ -359,7 +359,7 @@ JUGG:
|
|||||||
UndeployedCondition: undeployed
|
UndeployedCondition: undeployed
|
||||||
UndeployOnMove: true
|
UndeployOnMove: true
|
||||||
UndeployOnPickup: true
|
UndeployOnPickup: true
|
||||||
Facing: 96
|
Facing: 384
|
||||||
AllowedTerrainTypes: Clear, Road, DirtRoad, Rough
|
AllowedTerrainTypes: Clear, Road, DirtRoad, Rough
|
||||||
DeploySounds: place2.aud
|
DeploySounds: place2.aud
|
||||||
UndeploySounds: clicky1.aud
|
UndeploySounds: clicky1.aud
|
||||||
@@ -379,8 +379,8 @@ JUGG:
|
|||||||
Name: deployedbody
|
Name: deployedbody
|
||||||
Turreted:
|
Turreted:
|
||||||
Turret: deployed
|
Turret: deployed
|
||||||
TurnSpeed: 5
|
TurnSpeed: 20
|
||||||
InitialFacing: 96
|
InitialFacing: 384
|
||||||
Offset: -153,-17,633
|
Offset: -153,-17,633
|
||||||
RealignDelay: -1
|
RealignDelay: -1
|
||||||
WithVoxelBarrel:
|
WithVoxelBarrel:
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ DSHP.Husk:
|
|||||||
Tooltip:
|
Tooltip:
|
||||||
Name: Dropship
|
Name: Dropship
|
||||||
Aircraft:
|
Aircraft:
|
||||||
TurnSpeed: 5
|
TurnSpeed: 20
|
||||||
Speed: 168
|
Speed: 168
|
||||||
-RenderSprites:
|
-RenderSprites:
|
||||||
RenderVoxels:
|
RenderVoxels:
|
||||||
@@ -14,7 +14,7 @@ ORCA.Husk:
|
|||||||
Tooltip:
|
Tooltip:
|
||||||
Name: Orca Fighter
|
Name: Orca Fighter
|
||||||
Aircraft:
|
Aircraft:
|
||||||
TurnSpeed: 5
|
TurnSpeed: 20
|
||||||
Speed: 186
|
Speed: 186
|
||||||
RenderSprites:
|
RenderSprites:
|
||||||
Image: orca
|
Image: orca
|
||||||
@@ -30,10 +30,10 @@ ORCAB.Husk:
|
|||||||
Tooltip:
|
Tooltip:
|
||||||
Name: Orca Bomber
|
Name: Orca Bomber
|
||||||
Aircraft:
|
Aircraft:
|
||||||
TurnSpeed: 3
|
TurnSpeed: 12
|
||||||
Speed: 96
|
Speed: 96
|
||||||
FallsToEarth:
|
FallsToEarth:
|
||||||
MaximumSpinSpeed: 6
|
MaximumSpinSpeed: 24
|
||||||
RenderSprites:
|
RenderSprites:
|
||||||
Image: orcab
|
Image: orcab
|
||||||
RenderVoxels:
|
RenderVoxels:
|
||||||
@@ -48,7 +48,7 @@ ORCATRAN.Husk:
|
|||||||
Tooltip:
|
Tooltip:
|
||||||
Name: Orca Transport
|
Name: Orca Transport
|
||||||
Aircraft:
|
Aircraft:
|
||||||
TurnSpeed: 5
|
TurnSpeed: 20
|
||||||
Speed: 84
|
Speed: 84
|
||||||
RenderSprites:
|
RenderSprites:
|
||||||
Image: orcatran
|
Image: orcatran
|
||||||
@@ -64,7 +64,7 @@ TRNSPORT.Husk:
|
|||||||
Tooltip:
|
Tooltip:
|
||||||
Name: Carryall
|
Name: Carryall
|
||||||
Aircraft:
|
Aircraft:
|
||||||
TurnSpeed: 5
|
TurnSpeed: 20
|
||||||
Speed: 149
|
Speed: 149
|
||||||
RenderSprites:
|
RenderSprites:
|
||||||
Image: trnsport
|
Image: trnsport
|
||||||
@@ -80,10 +80,10 @@ SCRIN.Husk:
|
|||||||
Tooltip:
|
Tooltip:
|
||||||
Name: Banshee Fighter
|
Name: Banshee Fighter
|
||||||
Aircraft:
|
Aircraft:
|
||||||
TurnSpeed: 3
|
TurnSpeed: 12
|
||||||
Speed: 168
|
Speed: 168
|
||||||
FallsToEarth:
|
FallsToEarth:
|
||||||
MaximumSpinSpeed: 6
|
MaximumSpinSpeed: 24
|
||||||
RenderSprites:
|
RenderSprites:
|
||||||
Image: scrin
|
Image: scrin
|
||||||
RenderVoxels:
|
RenderVoxels:
|
||||||
@@ -98,7 +98,7 @@ APACHE.Husk:
|
|||||||
Tooltip:
|
Tooltip:
|
||||||
Name: Harpy
|
Name: Harpy
|
||||||
Aircraft:
|
Aircraft:
|
||||||
TurnSpeed: 5
|
TurnSpeed: 20
|
||||||
Speed: 130
|
Speed: 130
|
||||||
WithIdleOverlay:
|
WithIdleOverlay:
|
||||||
Offset: 85,0,598
|
Offset: 85,0,598
|
||||||
|
|||||||
@@ -31,9 +31,9 @@ waypoint:
|
|||||||
mmch.colorpicker:
|
mmch.colorpicker:
|
||||||
Inherits: MMCH
|
Inherits: MMCH
|
||||||
Mobile:
|
Mobile:
|
||||||
InitialFacing: 160
|
InitialFacing: 640
|
||||||
Turreted:
|
Turreted:
|
||||||
InitialFacing: 160
|
InitialFacing: 640
|
||||||
WithFacingSpriteBody:
|
WithFacingSpriteBody:
|
||||||
Sequence: walk
|
Sequence: walk
|
||||||
-Buildable:
|
-Buildable:
|
||||||
|
|||||||
@@ -522,7 +522,7 @@ NAWAST:
|
|||||||
Range: 6c0
|
Range: 6c0
|
||||||
MaxHeightDelta: 3
|
MaxHeightDelta: 3
|
||||||
TiberianSunRefinery:
|
TiberianSunRefinery:
|
||||||
DockAngle: 160
|
DockAngle: 640
|
||||||
DockOffset: 2,1
|
DockOffset: 2,1
|
||||||
StoresResources:
|
StoresResources:
|
||||||
Capacity: 56
|
Capacity: 56
|
||||||
@@ -531,7 +531,7 @@ NAWAST:
|
|||||||
FreeActor:
|
FreeActor:
|
||||||
Actor: WEED
|
Actor: WEED
|
||||||
SpawnOffset: 3,1
|
SpawnOffset: 3,1
|
||||||
Facing: 160
|
Facing: 640
|
||||||
WithIdleOverlay@GLOW:
|
WithIdleOverlay@GLOW:
|
||||||
RequiresCondition: !build-incomplete
|
RequiresCondition: !build-incomplete
|
||||||
Sequence: idle-glow
|
Sequence: idle-glow
|
||||||
|
|||||||
@@ -163,8 +163,8 @@ NALASR:
|
|||||||
DetectCloaked:
|
DetectCloaked:
|
||||||
Range: 3c0
|
Range: 3c0
|
||||||
Turreted:
|
Turreted:
|
||||||
TurnSpeed: 10
|
TurnSpeed: 40
|
||||||
InitialFacing: 224
|
InitialFacing: 896
|
||||||
Offset: 298,-171,288
|
Offset: 298,-171,288
|
||||||
AttackTurreted:
|
AttackTurreted:
|
||||||
RequiresCondition: !build-incomplete
|
RequiresCondition: !build-incomplete
|
||||||
@@ -247,8 +247,8 @@ NASAM:
|
|||||||
RenderRangeCircle:
|
RenderRangeCircle:
|
||||||
RangeCircleType: aa
|
RangeCircleType: aa
|
||||||
Turreted:
|
Turreted:
|
||||||
TurnSpeed: 10
|
TurnSpeed: 40
|
||||||
InitialFacing: 224
|
InitialFacing: 896
|
||||||
AttackTurreted:
|
AttackTurreted:
|
||||||
RequiresCondition: !build-incomplete
|
RequiresCondition: !build-incomplete
|
||||||
PauseOnCondition: empdisable || disabled
|
PauseOnCondition: empdisable || disabled
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ BGGY:
|
|||||||
Prerequisites: ~naweap, ~techlevel.low
|
Prerequisites: ~naweap, ~techlevel.low
|
||||||
Description: Fast scout and anti-infantry vehicle.\n Strong vs Infantry, Light armor\n Weak vs Vehicles, Aircraft
|
Description: Fast scout and anti-infantry vehicle.\n Strong vs Infantry, Light armor\n Weak vs Vehicles, Aircraft
|
||||||
Mobile:
|
Mobile:
|
||||||
TurnSpeed: 8
|
TurnSpeed: 32
|
||||||
Speed: 142
|
Speed: 142
|
||||||
Health:
|
Health:
|
||||||
HP: 22000
|
HP: 22000
|
||||||
@@ -55,7 +55,7 @@ BIKE:
|
|||||||
Prerequisites: ~naweap, ~techlevel.low
|
Prerequisites: ~naweap, ~techlevel.low
|
||||||
Description: Fast scout vehicle, armed with\nrockets.\n Strong vs Vehicles\n Weak vs Infantry, Aircraft
|
Description: Fast scout vehicle, armed with\nrockets.\n Strong vs Vehicles\n Weak vs Infantry, Aircraft
|
||||||
Mobile:
|
Mobile:
|
||||||
TurnSpeed: 8
|
TurnSpeed: 32
|
||||||
Speed: 170
|
Speed: 170
|
||||||
Health:
|
Health:
|
||||||
HP: 15000
|
HP: 15000
|
||||||
@@ -102,7 +102,7 @@ TTNK:
|
|||||||
Prerequisites: ~naweap, ~techlevel.medium
|
Prerequisites: ~naweap, ~techlevel.medium
|
||||||
Description: Nod's main battle tank.\nCan deploy to gain extra protection.\n Strong vs Vehicles\n Weak vs Infantry, Aircraft
|
Description: Nod's main battle tank.\nCan deploy to gain extra protection.\n Strong vs Vehicles\n Weak vs Infantry, Aircraft
|
||||||
Mobile:
|
Mobile:
|
||||||
TurnSpeed: 5
|
TurnSpeed: 20
|
||||||
Speed: 85
|
Speed: 85
|
||||||
ImmovableCondition: !undeployed
|
ImmovableCondition: !undeployed
|
||||||
RequireForceMoveCondition: !undeployed
|
RequireForceMoveCondition: !undeployed
|
||||||
@@ -137,7 +137,7 @@ TTNK:
|
|||||||
UndeployedCondition: undeployed
|
UndeployedCondition: undeployed
|
||||||
UndeployOnMove: true
|
UndeployOnMove: true
|
||||||
UndeployOnPickup: true
|
UndeployOnPickup: true
|
||||||
Facing: 160
|
Facing: 640
|
||||||
AllowedTerrainTypes: Clear, Road, DirtRoad, Rough
|
AllowedTerrainTypes: Clear, Road, DirtRoad, Rough
|
||||||
DeploySounds: place2.aud
|
DeploySounds: place2.aud
|
||||||
UndeploySounds: clicky1.aud
|
UndeploySounds: clicky1.aud
|
||||||
@@ -159,9 +159,9 @@ TTNK:
|
|||||||
RequiresCondition: undeployed
|
RequiresCondition: undeployed
|
||||||
PauseOnCondition: empdisable
|
PauseOnCondition: empdisable
|
||||||
Turreted:
|
Turreted:
|
||||||
TurnSpeed: 6
|
TurnSpeed: 24
|
||||||
Turret: deployed
|
Turret: deployed
|
||||||
InitialFacing: 160
|
InitialFacing: 640
|
||||||
Offset: -20, -130, 128
|
Offset: -20, -130, 128
|
||||||
RealignDelay: -1
|
RealignDelay: -1
|
||||||
WithVoxelBarrel:
|
WithVoxelBarrel:
|
||||||
@@ -232,7 +232,7 @@ ART2:
|
|||||||
Type: Light
|
Type: Light
|
||||||
Mobile:
|
Mobile:
|
||||||
Speed: 71
|
Speed: 71
|
||||||
TurnSpeed: 2
|
TurnSpeed: 8
|
||||||
ImmovableCondition: !undeployed
|
ImmovableCondition: !undeployed
|
||||||
RequireForceMoveCondition: !undeployed
|
RequireForceMoveCondition: !undeployed
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
@@ -250,7 +250,7 @@ ART2:
|
|||||||
UndeployedCondition: undeployed
|
UndeployedCondition: undeployed
|
||||||
UndeployOnMove: true
|
UndeployOnMove: true
|
||||||
UndeployOnPickup: true
|
UndeployOnPickup: true
|
||||||
Facing: 96
|
Facing: 384
|
||||||
AllowedTerrainTypes: Clear, Road, DirtRoad, Rough
|
AllowedTerrainTypes: Clear, Road, DirtRoad, Rough
|
||||||
DeploySounds: place2.aud
|
DeploySounds: place2.aud
|
||||||
UndeploySounds: clicky1.aud
|
UndeploySounds: clicky1.aud
|
||||||
@@ -269,8 +269,8 @@ ART2:
|
|||||||
RequiresCondition: !undeployed && real-actor
|
RequiresCondition: !undeployed && real-actor
|
||||||
Turreted:
|
Turreted:
|
||||||
Turret: deployed
|
Turret: deployed
|
||||||
TurnSpeed: 5
|
TurnSpeed: 20
|
||||||
InitialFacing: 96
|
InitialFacing: 384
|
||||||
Offset: 0,0,256
|
Offset: 0,0,256
|
||||||
RealignDelay: -1
|
RealignDelay: -1
|
||||||
WithVoxelBarrel:
|
WithVoxelBarrel:
|
||||||
@@ -320,7 +320,7 @@ REPAIR:
|
|||||||
HP: 20000
|
HP: 20000
|
||||||
Mobile:
|
Mobile:
|
||||||
Speed: 85
|
Speed: 85
|
||||||
TurnSpeed: 5
|
TurnSpeed: 20
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
RequiresCondition: !inside-tunnel
|
RequiresCondition: !inside-tunnel
|
||||||
Range: 5c0
|
Range: 5c0
|
||||||
@@ -365,7 +365,7 @@ WEED:
|
|||||||
DeliverVoice: Move
|
DeliverVoice: Move
|
||||||
Mobile:
|
Mobile:
|
||||||
Speed: 71
|
Speed: 71
|
||||||
TurnSpeed: 5
|
TurnSpeed: 20
|
||||||
Health:
|
Health:
|
||||||
HP: 60000
|
HP: 60000
|
||||||
SelfHealing:
|
SelfHealing:
|
||||||
@@ -407,7 +407,7 @@ SAPC:
|
|||||||
Prerequisites: ~naweap, natech, ~techlevel.medium
|
Prerequisites: ~naweap, natech, ~techlevel.medium
|
||||||
Description: Troop transport that can move\nunderground to avoid detection.\n Unarmed
|
Description: Troop transport that can move\nunderground to avoid detection.\n Unarmed
|
||||||
Mobile:
|
Mobile:
|
||||||
TurnSpeed: 5
|
TurnSpeed: 20
|
||||||
Speed: 71
|
Speed: 71
|
||||||
PauseOnCondition: empdisable || loading || being-captured || carried
|
PauseOnCondition: empdisable || loading || being-captured || carried
|
||||||
Locomotor: subterranean
|
Locomotor: subterranean
|
||||||
@@ -459,7 +459,7 @@ SUBTANK:
|
|||||||
Prerequisites: ~naweap, natech, ~techlevel.high
|
Prerequisites: ~naweap, natech, ~techlevel.high
|
||||||
Description: Subterranean Flame Tank.\nIs able to move underground.\n Strong vs Infantry, Buildings\n Weak vs Tanks, Aircraft
|
Description: Subterranean Flame Tank.\nIs able to move underground.\n Strong vs Infantry, Buildings\n Weak vs Tanks, Aircraft
|
||||||
Mobile:
|
Mobile:
|
||||||
TurnSpeed: 6
|
TurnSpeed: 24
|
||||||
Speed: 71
|
Speed: 71
|
||||||
Locomotor: subterranean
|
Locomotor: subterranean
|
||||||
Health:
|
Health:
|
||||||
@@ -509,7 +509,7 @@ STNK:
|
|||||||
Queue: Vehicle
|
Queue: Vehicle
|
||||||
Description: Lightly armoured tank equipped with a personal\nstealth generator. Armed with missiles.\nCan be spotted by infantry at close range.\n Strong vs Vehicles, Aircraft\n Weak vs Infantry
|
Description: Lightly armoured tank equipped with a personal\nstealth generator. Armed with missiles.\nCan be spotted by infantry at close range.\n Strong vs Vehicles, Aircraft\n Weak vs Infantry
|
||||||
Mobile:
|
Mobile:
|
||||||
TurnSpeed: 5
|
TurnSpeed: 20
|
||||||
Speed: 85
|
Speed: 85
|
||||||
Health:
|
Health:
|
||||||
HP: 18000
|
HP: 18000
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ GACNST:
|
|||||||
PauseOnCondition: empdisable || being-demolished || build-incomplete
|
PauseOnCondition: empdisable || being-demolished || build-incomplete
|
||||||
IntoActor: mcv
|
IntoActor: mcv
|
||||||
Offset: 1,1
|
Offset: 1,1
|
||||||
Facing: 96
|
Facing: 384
|
||||||
DeployCursor: undeploy
|
DeployCursor: undeploy
|
||||||
TransformsIntoMobile:
|
TransformsIntoMobile:
|
||||||
RequiresCondition: factundeploy
|
RequiresCondition: factundeploy
|
||||||
@@ -105,7 +105,7 @@ PROC:
|
|||||||
Range: 6c0
|
Range: 6c0
|
||||||
MaxHeightDelta: 3
|
MaxHeightDelta: 3
|
||||||
TiberianSunRefinery:
|
TiberianSunRefinery:
|
||||||
DockAngle: 160
|
DockAngle: 640
|
||||||
DockOffset: 2,1
|
DockOffset: 2,1
|
||||||
DiscardExcessResources: true
|
DiscardExcessResources: true
|
||||||
StoresResources:
|
StoresResources:
|
||||||
@@ -115,7 +115,7 @@ PROC:
|
|||||||
FreeActor:
|
FreeActor:
|
||||||
Actor: HARV
|
Actor: HARV
|
||||||
SpawnOffset: 2,1
|
SpawnOffset: 2,1
|
||||||
Facing: 160
|
Facing: 640
|
||||||
WithIdleOverlay@REDLIGHTS:
|
WithIdleOverlay@REDLIGHTS:
|
||||||
RequiresCondition: !build-incomplete
|
RequiresCondition: !build-incomplete
|
||||||
Sequence: idle-redlights
|
Sequence: idle-redlights
|
||||||
|
|||||||
@@ -21,8 +21,8 @@ NAPULS:
|
|||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 8c0
|
Range: 8c0
|
||||||
Turreted:
|
Turreted:
|
||||||
TurnSpeed: 10
|
TurnSpeed: 40
|
||||||
InitialFacing: 224
|
InitialFacing: 896
|
||||||
AttackTurreted:
|
AttackTurreted:
|
||||||
RequiresCondition: !build-incomplete && !empdisable && !disabled
|
RequiresCondition: !build-incomplete && !empdisable && !disabled
|
||||||
Armament:
|
Armament:
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ MCV:
|
|||||||
PauseOnCondition: empdisable || being-captured
|
PauseOnCondition: empdisable || being-captured
|
||||||
IntoActor: gacnst
|
IntoActor: gacnst
|
||||||
Offset: -1,-1
|
Offset: -1,-1
|
||||||
Facing: 96
|
Facing: 384
|
||||||
TransformSounds: place2.aud
|
TransformSounds: place2.aud
|
||||||
NoTransformSounds:
|
NoTransformSounds:
|
||||||
Voice: Move
|
Voice: Move
|
||||||
@@ -134,7 +134,7 @@ LPST:
|
|||||||
Type: Wood
|
Type: Wood
|
||||||
Mobile:
|
Mobile:
|
||||||
Speed: 85
|
Speed: 85
|
||||||
TurnSpeed: 5
|
TurnSpeed: 20
|
||||||
ImmovableCondition: !undeployed
|
ImmovableCondition: !undeployed
|
||||||
RequireForceMoveCondition: !undeployed
|
RequireForceMoveCondition: !undeployed
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
@@ -159,7 +159,7 @@ LPST:
|
|||||||
UndeployedCondition: undeployed
|
UndeployedCondition: undeployed
|
||||||
UndeployOnMove: true
|
UndeployOnMove: true
|
||||||
UndeployOnPickup: true
|
UndeployOnPickup: true
|
||||||
Facing: 160
|
Facing: 640
|
||||||
AllowedTerrainTypes: Clear, Road, DirtRoad, Rough
|
AllowedTerrainTypes: Clear, Road, DirtRoad, Rough
|
||||||
DeploySounds: place2.aud
|
DeploySounds: place2.aud
|
||||||
UndeploySounds: clicky1.aud
|
UndeploySounds: clicky1.aud
|
||||||
|
|||||||
@@ -117,7 +117,7 @@ CyCannon:
|
|||||||
Projectile: Missile
|
Projectile: Missile
|
||||||
MaximumLaunchSpeed: 192
|
MaximumLaunchSpeed: 192
|
||||||
Blockable: false
|
Blockable: false
|
||||||
HorizontalRateOfTurn: 2
|
HorizontalRateOfTurn: 8
|
||||||
Shadow: true
|
Shadow: true
|
||||||
Image: TORPEDO
|
Image: TORPEDO
|
||||||
MinimumLaunchSpeed: 75
|
MinimumLaunchSpeed: 75
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
Image: DRAGON
|
Image: DRAGON
|
||||||
TrailImage: small_smoke_trail
|
TrailImage: small_smoke_trail
|
||||||
TrailPalette: effectalpha75
|
TrailPalette: effectalpha75
|
||||||
HorizontalRateOfTurn: 25
|
HorizontalRateOfTurn: 100
|
||||||
RangeLimit: 15c0
|
RangeLimit: 15c0
|
||||||
Palette: ra
|
Palette: ra
|
||||||
MinimumLaunchSpeed: 75
|
MinimumLaunchSpeed: 75
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
Acceleration: 96
|
Acceleration: 96
|
||||||
MinimumLaunchAngle: 128
|
MinimumLaunchAngle: 128
|
||||||
MaximumLaunchAngle: 192
|
MaximumLaunchAngle: 192
|
||||||
VerticalRateOfTurn: 25
|
VerticalRateOfTurn: 100
|
||||||
CruiseAltitude: 5c512
|
CruiseAltitude: 5c512
|
||||||
AllowSnapping: true
|
AllowSnapping: true
|
||||||
TerrainHeightAware: true
|
TerrainHeightAware: true
|
||||||
@@ -128,7 +128,7 @@ RedEye2:
|
|||||||
ValidTargets: Air
|
ValidTargets: Air
|
||||||
Projectile: Missile
|
Projectile: Missile
|
||||||
Arm: 1
|
Arm: 1
|
||||||
VerticalRateOfTurn: 35
|
VerticalRateOfTurn: 140
|
||||||
RangeLimit: 25c0
|
RangeLimit: 25c0
|
||||||
Speed: 288
|
Speed: 288
|
||||||
Warhead@1Dam: SpreadDamage
|
Warhead@1Dam: SpreadDamage
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ MultiCluster:
|
|||||||
MaximumLaunchAngle: 255
|
MaximumLaunchAngle: 255
|
||||||
RangeLimit: 10c0
|
RangeLimit: 10c0
|
||||||
AllowSnapping: false
|
AllowSnapping: false
|
||||||
VerticalRateOfTurn: 16
|
VerticalRateOfTurn: 64
|
||||||
Warhead@1Dam: SpreadDamage
|
Warhead@1Dam: SpreadDamage
|
||||||
Spread: 216
|
Spread: 216
|
||||||
Damage: 13000
|
Damage: 13000
|
||||||
|
|||||||
Reference in New Issue
Block a user