Merge pull request #8171 from reaperrr/withunitbody1

Introduce WithFacingSpriteBody and related With*Animation traits
This commit is contained in:
Matthias Mailänder
2015-06-07 17:11:48 +02:00
41 changed files with 759 additions and 289 deletions

View File

@@ -72,7 +72,6 @@
<Compile Include="Traits\SupportPowers\IonCannonPower.cs" /> <Compile Include="Traits\SupportPowers\IonCannonPower.cs" />
<Compile Include="Widgets\Logic\CncMainMenuLogic.cs" /> <Compile Include="Widgets\Logic\CncMainMenuLogic.cs" />
<Compile Include="Widgets\Logic\ProductionTabsLogic.cs" /> <Compile Include="Widgets\Logic\ProductionTabsLogic.cs" />
<Compile Include="Traits\RenderUnitFlying.cs" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\OpenRA.Game\OpenRA.Game.csproj"> <ProjectReference Include="..\OpenRA.Game\OpenRA.Game.csproj">

View File

@@ -364,6 +364,7 @@
<Compile Include="Traits\ProximityCaptor.cs" /> <Compile Include="Traits\ProximityCaptor.cs" />
<Compile Include="Traits\ProximityCapturable.cs" /> <Compile Include="Traits\ProximityCapturable.cs" />
<Compile Include="Traits\RadarColorFromTerrain.cs" /> <Compile Include="Traits\RadarColorFromTerrain.cs" />
<Compile Include="Traits\Render\AutoSelectionSize.cs" />
<Compile Include="Traits\Render\Hovers.cs" /> <Compile Include="Traits\Render\Hovers.cs" />
<Compile Include="Traits\Render\LeavesTrails.cs" /> <Compile Include="Traits\Render\LeavesTrails.cs" />
<Compile Include="Traits\Render\RenderBuilding.cs" /> <Compile Include="Traits\Render\RenderBuilding.cs" />
@@ -386,6 +387,8 @@
<Compile Include="Traits\Render\WithBarrel.cs" /> <Compile Include="Traits\Render\WithBarrel.cs" />
<Compile Include="Traits\Render\WithBuildingExplosion.cs" /> <Compile Include="Traits\Render\WithBuildingExplosion.cs" />
<Compile Include="Traits\Render\WithActiveAnimation.cs" /> <Compile Include="Traits\Render\WithActiveAnimation.cs" />
<Compile Include="Traits\Render\WithAttackAnimation.cs" />
<Compile Include="Traits\Render\WithMoveAnimation.cs" />
<Compile Include="Traits\Render\WithBuildingPlacedAnimation.cs" /> <Compile Include="Traits\Render\WithBuildingPlacedAnimation.cs" />
<Compile Include="Traits\Render\WithMakeAnimation.cs" /> <Compile Include="Traits\Render\WithMakeAnimation.cs" />
<Compile Include="Traits\Render\WithChargeOverlay.cs" /> <Compile Include="Traits\Render\WithChargeOverlay.cs" />
@@ -405,6 +408,7 @@
<Compile Include="Traits\Render\WithSmoke.cs" /> <Compile Include="Traits\Render\WithSmoke.cs" />
<Compile Include="Traits\Render\WithSpriteBody.cs" /> <Compile Include="Traits\Render\WithSpriteBody.cs" />
<Compile Include="Traits\Render\WithTurret.cs" /> <Compile Include="Traits\Render\WithTurret.cs" />
<Compile Include="Traits\Render\WithFacingSpriteBody.cs" />
<Compile Include="Traits\Render\WithBuildingPlacedOverlay.cs" /> <Compile Include="Traits\Render\WithBuildingPlacedOverlay.cs" />
<Compile Include="Traits\Render\WithProductionDoorOverlay.cs" /> <Compile Include="Traits\Render\WithProductionDoorOverlay.cs" />
<Compile Include="Traits\Render\WithProductionOverlay.cs" /> <Compile Include="Traits\Render\WithProductionOverlay.cs" />

View File

@@ -0,0 +1,31 @@
#region Copyright & License Information
/*
* Copyright 2007-2015 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. For more information,
* see COPYING.
*/
#endregion
using System;
using OpenRA.Traits;
namespace OpenRA.Mods.Common.Traits
{
public class AutoSelectionSizeInfo : ITraitInfo, Requires<RenderSpritesInfo>
{
public object Create(ActorInitializer init) { return new AutoSelectionSize(this); }
}
public class AutoSelectionSize : IAutoSelectionSize
{
public AutoSelectionSize(AutoSelectionSizeInfo info) { }
public int2 SelectionSize(Actor self)
{
var rs = self.Trait<RenderSprites>();
return rs.AutoSelectionSize(self);
}
}
}

View File

@@ -16,7 +16,7 @@ using OpenRA.Traits;
namespace OpenRA.Mods.Common.Traits namespace OpenRA.Mods.Common.Traits
{ {
[Desc("Basic render trait for immobile actors.")] [Desc("Basic render trait for immobile actors. Deprecated, use RenderSprites + WithSpriteBody instead.")]
public class RenderSimpleInfo : RenderSpritesInfo, IRenderActorPreviewSpritesInfo, IQuantizeBodyOrientationInfo, Requires<IBodyOrientationInfo> public class RenderSimpleInfo : RenderSpritesInfo, IRenderActorPreviewSpritesInfo, IQuantizeBodyOrientationInfo, Requires<IBodyOrientationInfo>
{ {
public readonly string Sequence = "idle"; public readonly string Sequence = "idle";

View File

@@ -236,8 +236,8 @@ namespace OpenRA.Mods.Common.Traits
return sequence; return sequence;
} }
// Required by RenderSimple // Required by RenderSimple, WithSpriteBody and WithInfantryBody
protected int2 AutoSelectionSize(Actor self) public int2 AutoSelectionSize(Actor self)
{ {
return anims.Where(b => b.IsVisible return anims.Where(b => b.IsVisible
&& b.Animation.Animation.CurrentSequence != null) && b.Animation.Animation.CurrentSequence != null)

View File

@@ -13,7 +13,8 @@ using OpenRA.Traits;
namespace OpenRA.Mods.Common.Traits namespace OpenRA.Mods.Common.Traits
{ {
[Desc("Render trait for non-animated actors that have sprites facing into each direction.")] [Desc("Render trait for non-animated actors that have sprites facing into each direction.",
"Deprecated. This will soon be removed, use RenderSprites + WithFacingSpriteBody instead.")]
public class RenderUnitInfo : RenderSimpleInfo, Requires<IFacingInfo> public class RenderUnitInfo : RenderSimpleInfo, Requires<IFacingInfo>
{ {
public override object Create(ActorInitializer init) { return new RenderUnit(init, this); } public override object Create(ActorInitializer init) { return new RenderUnit(init, this); }

View File

@@ -0,0 +1,73 @@
#region Copyright & License Information
/*
* Copyright 2007-2015 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. For more information,
* see COPYING.
*/
#endregion
using System.Linq;
using OpenRA.Mods.Common.Traits;
using OpenRA.Traits;
namespace OpenRA.Mods.RA.Traits
{
public class WithAttackAnimationInfo : ITraitInfo, Requires<WithFacingSpriteBodyInfo>, Requires<ArmamentInfo>, Requires<AttackBaseInfo>
{
[Desc("Armament name")]
public readonly string Armament = "primary";
[Desc("Displayed while attacking.")]
public readonly string AttackSequence = null;
[Desc("Displayed while targeting.")]
public readonly string AimSequence = null;
[Desc("Shown while reloading.")]
public readonly string ReloadPrefix = null;
public object Create(ActorInitializer init) { return new WithAttackAnimation(init, this); }
}
public class WithAttackAnimation : ITick, INotifyAttack
{
readonly WithAttackAnimationInfo info;
readonly AttackBase attack;
readonly Armament armament;
readonly WithFacingSpriteBody wfsb;
public WithAttackAnimation(ActorInitializer init, WithAttackAnimationInfo info)
{
this.info = info;
attack = init.Self.Trait<AttackBase>();
armament = init.Self.TraitsImplementing<Armament>()
.Single(a => a.Info.Name == info.Armament);
wfsb = init.Self.Trait<WithFacingSpriteBody>();
}
public void Attacking(Actor self, Target target, Armament a, Barrel barrel)
{
if (!string.IsNullOrEmpty(info.AttackSequence))
wfsb.PlayCustomAnimation(self, info.AttackSequence);
}
public void Tick(Actor self)
{
if (string.IsNullOrEmpty(info.AimSequence) && string.IsNullOrEmpty(info.ReloadPrefix))
return;
var sequence = wfsb.Info.Sequence;
if (!string.IsNullOrEmpty(info.AimSequence) && attack.IsAttacking)
sequence = info.AimSequence;
var prefix = (armament.IsReloading && !string.IsNullOrEmpty(info.ReloadPrefix)) ? info.ReloadPrefix : "";
if (!string.IsNullOrEmpty(prefix) && sequence != (prefix + sequence))
sequence = prefix + sequence;
wfsb.DefaultAnimation.ReplaceAnim(sequence);
}
}
}

View File

@@ -0,0 +1,46 @@
#region Copyright & License Information
/*
* Copyright 2007-2015 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. For more information,
* see COPYING.
*/
#endregion
using System;
using System.Collections.Generic;
using OpenRA.Graphics;
using OpenRA.Mods.Common.Graphics;
using OpenRA.Traits;
namespace OpenRA.Mods.Common.Traits
{
public class WithFacingSpriteBodyInfo : WithSpriteBodyInfo, Requires<IBodyOrientationInfo>, Requires<IFacingInfo>
{
public override object Create(ActorInitializer init) { return new WithFacingSpriteBody(init, this); }
public override IEnumerable<IActorPreview> RenderPreviewSprites(ActorPreviewInitializer init, RenderSpritesInfo rs, string image, int facings, PaletteReference p)
{
var ifacing = init.Actor.Traits.GetOrDefault<IFacingInfo>();
var facing = ifacing != null ? init.Contains<FacingInit>() ? init.Get<FacingInit, int>() : ifacing.GetInitialFacing() : 0;
var anim = new Animation(init.World, image, () => facing);
anim.PlayRepeating(RenderSprites.NormalizeSequence(anim, init.GetDamageState(), Sequence));
yield return new SpriteActorPreview(anim, WVec.Zero, 0, p, rs.Scale);
}
public override int QuantizedBodyFacings(ActorInfo ai, SequenceProvider sequenceProvider, string race)
{
var rsi = ai.Traits.Get<RenderSpritesInfo>();
return sequenceProvider.GetSequence(rsi.GetImage(ai, sequenceProvider, race), Sequence).Facings;
}
}
public class WithFacingSpriteBody : WithSpriteBody
{
public WithFacingSpriteBody(ActorInitializer init, WithFacingSpriteBodyInfo info)
: base(init, info, RenderSprites.MakeFacingFunc(init.Self)) { }
}
}

View File

@@ -40,7 +40,7 @@ namespace OpenRA.Mods.Common.Traits
var rs = self.Trait<RenderSprites>(); var rs = self.Trait<RenderSprites>();
var body = self.Trait<IBodyOrientation>(); var body = self.Trait<IBodyOrientation>();
anim = new Animation(self.World, rs.GetImage(self), RenderSimple.MakeFacingFunc(self)); anim = new Animation(self.World, rs.GetImage(self), RenderSprites.MakeFacingFunc(self));
anim.IsDecoration = true; anim.IsDecoration = true;
anim.Play(info.Sequence); anim.Play(info.Sequence);
rs.Add(new AnimationWithOffset(anim, rs.Add(new AnimationWithOffset(anim,

View File

@@ -8,47 +8,47 @@
*/ */
#endregion #endregion
using OpenRA.Mods.Common.Traits; using System.Linq;
using OpenRA.Traits; using OpenRA.Traits;
namespace OpenRA.Mods.Cnc.Traits namespace OpenRA.Mods.Common.Traits
{ {
class RenderUnitFlyingInfo : RenderUnitInfo, Requires<IMoveInfo> public class WithMoveAnimationInfo : ITraitInfo, Requires<WithFacingSpriteBodyInfo>, Requires<IMoveInfo>
{ {
[Desc("Displayed while moving.")]
public readonly string MoveSequence = "move"; public readonly string MoveSequence = "move";
public override object Create(ActorInitializer init) { return new RenderUnitFlying(init, this); } public object Create(ActorInitializer init) { return new WithMoveAnimation(init, this); }
} }
class RenderUnitFlying : RenderUnit, ITick public class WithMoveAnimation : ITick
{ {
readonly RenderUnitFlyingInfo info; readonly WithMoveAnimationInfo info;
readonly IMove movement; readonly IMove movement;
readonly WithFacingSpriteBody wfsb;
WPos cachedPosition; WPos cachedPosition;
public RenderUnitFlying(ActorInitializer init, RenderUnitFlyingInfo info) public WithMoveAnimation(ActorInitializer init, WithMoveAnimationInfo info)
: base(init, info)
{ {
this.info = info; this.info = info;
movement = init.Self.Trait<IMove>(); movement = init.Self.Trait<IMove>();
wfsb = init.Self.Trait<WithFacingSpriteBody>();
cachedPosition = init.Self.CenterPosition; cachedPosition = init.Self.CenterPosition;
} }
public override void Tick(Actor self) public void Tick(Actor self)
{ {
base.Tick(self);
var oldCachedPosition = cachedPosition; var oldCachedPosition = cachedPosition;
cachedPosition = self.CenterPosition; cachedPosition = self.CenterPosition;
// Flying units set IsMoving whenever they are airborne, which isn't enough for our purposes // Flying units set IsMoving whenever they are airborne, which isn't enough for our purposes
var isMoving = movement.IsMoving && !self.IsDead && (oldCachedPosition - cachedPosition).HorizontalLengthSquared != 0; var isMoving = movement.IsMoving && !self.IsDead && (oldCachedPosition - cachedPosition).HorizontalLengthSquared != 0;
if (isMoving ^ (DefaultAnimation.CurrentSequence.Name != info.MoveSequence)) if (isMoving ^ (wfsb.DefaultAnimation.CurrentSequence.Name != info.MoveSequence))
return; return;
DefaultAnimation.ReplaceAnim(isMoving ? info.MoveSequence : info.Sequence); wfsb.DefaultAnimation.ReplaceAnim(isMoving ? info.MoveSequence : wfsb.Info.Sequence);
} }
} }
} }

View File

@@ -9,13 +9,16 @@
#endregion #endregion
using System; using System;
using System.Collections.Generic;
using OpenRA.Graphics; using OpenRA.Graphics;
using OpenRA.Mods.Common.Graphics;
using OpenRA.Traits; using OpenRA.Traits;
namespace OpenRA.Mods.Common.Traits namespace OpenRA.Mods.Common.Traits
{ {
[Desc("Default trait for rendering sprite-based actors.")] [Desc("Default trait for rendering sprite-based actors.")]
class WithSpriteBodyInfo : UpgradableTraitInfo, ITraitInfo, Requires<RenderSpritesInfo> public class WithSpriteBodyInfo : UpgradableTraitInfo, ITraitInfo, IRenderActorPreviewSpritesInfo, IQuantizeBodyOrientationInfo,
Requires<RenderSpritesInfo>
{ {
[Desc("Animation to play when the actor is created.")] [Desc("Animation to play when the actor is created.")]
public readonly string StartSequence = null; public readonly string StartSequence = null;
@@ -23,30 +26,54 @@ namespace OpenRA.Mods.Common.Traits
[Desc("Animation to play when the actor is idle.")] [Desc("Animation to play when the actor is idle.")]
public readonly string Sequence = "idle"; public readonly string Sequence = "idle";
public object Create(ActorInitializer init) { return new WithSpriteBody(init, this); } public virtual object Create(ActorInitializer init) { return new WithSpriteBody(init, this); }
}
class WithSpriteBody : UpgradableTrait<WithSpriteBodyInfo>, ISpriteBody public virtual IEnumerable<IActorPreview> RenderPreviewSprites(ActorPreviewInitializer init, RenderSpritesInfo rs, string image, int facings, PaletteReference p)
{
readonly Animation body;
readonly WithSpriteBodyInfo info;
public WithSpriteBody(ActorInitializer init, WithSpriteBodyInfo info)
: base(info)
{ {
this.info = info; var anim = new Animation(init.World, image);
anim.PlayRepeating(RenderSprites.NormalizeSequence(anim, init.GetDamageState(), Sequence));
var rs = init.Self.Trait<RenderSprites>(); yield return new SpriteActorPreview(anim, WVec.Zero, 0, p, rs.Scale);
body = new Animation(init.Self.World, rs.GetImage(init.Self));
PlayCustomAnimation(init.Self, info.StartSequence, () => body.PlayRepeating(info.Sequence));
rs.Add(new AnimationWithOffset(body, null, () => IsTraitDisabled));
} }
public void PlayCustomAnimation(Actor self, string newAnimation, Action after) public virtual int QuantizedBodyFacings(ActorInfo ai, SequenceProvider sequenceProvider, string race)
{ {
body.PlayThen(newAnimation, () => return 1;
}
}
public class WithSpriteBody : UpgradableTrait<WithSpriteBodyInfo>, ISpriteBody
{
public readonly Animation DefaultAnimation;
public WithSpriteBody(ActorInitializer init, WithSpriteBodyInfo info)
: this(init, info, () => 0) { }
protected WithSpriteBody(ActorInitializer init, WithSpriteBodyInfo info, Func<int> baseFacing)
: base(info)
{
var rs = init.Self.Trait<RenderSprites>();
DefaultAnimation = new Animation(init.World, rs.GetImage(init.Self), baseFacing);
rs.Add(new AnimationWithOffset(DefaultAnimation, null, () => IsTraitDisabled));
if (Info.StartSequence != null)
PlayCustomAnimation(init.Self, Info.StartSequence,
() => DefaultAnimation.PlayRepeating(NormalizeSequence(init.Self, Info.Sequence)));
else
DefaultAnimation.PlayRepeating(NormalizeSequence(init.Self, Info.Sequence));
}
public string NormalizeSequence(Actor self, string sequence)
{
return RenderSprites.NormalizeSequence(DefaultAnimation, self.GetDamageState(), sequence);
}
public void PlayCustomAnimation(Actor self, string name, Action after = null)
{
DefaultAnimation.PlayThen(NormalizeSequence(self, name), () =>
{ {
body.Play(info.Sequence); DefaultAnimation.Play(NormalizeSequence(self, Info.Sequence));
if (after != null) if (after != null)
after(); after();
}); });
@@ -54,14 +81,15 @@ namespace OpenRA.Mods.Common.Traits
public void PlayCustomAnimationRepeating(Actor self, string name) public void PlayCustomAnimationRepeating(Actor self, string name)
{ {
body.PlayThen(name, () => PlayCustomAnimationRepeating(self, name)); DefaultAnimation.PlayThen(name,
() => PlayCustomAnimationRepeating(self, name));
} }
public void PlayCustomAnimationBackwards(Actor self, string name, Action after) public void PlayCustomAnimationBackwards(Actor self, string name, Action after = null)
{ {
body.PlayBackwardsThen(name, () => DefaultAnimation.PlayBackwardsThen(NormalizeSequence(self, name), () =>
{ {
body.PlayRepeating(info.Sequence); DefaultAnimation.PlayRepeating(NormalizeSequence(self, Info.Sequence));
if (after != null) if (after != null)
after(); after();
}); });

View File

@@ -13,7 +13,7 @@ using OpenRA.Traits;
namespace OpenRA.Mods.Common.Traits namespace OpenRA.Mods.Common.Traits
{ {
class ThrowsParticleInfo : ITraitInfo, Requires<RenderSimpleInfo>, Requires<IBodyOrientationInfo> class ThrowsParticleInfo : ITraitInfo, Requires<WithSpriteBodyInfo>, Requires<IBodyOrientationInfo>
{ {
public readonly string Anim = null; public readonly string Anim = null;
@@ -57,7 +57,7 @@ namespace OpenRA.Mods.Common.Traits
public ThrowsParticle(ActorInitializer init, ThrowsParticleInfo info) public ThrowsParticle(ActorInitializer init, ThrowsParticleInfo info)
{ {
var self = init.Self; var self = init.Self;
var rs = self.Trait<RenderSimple>(); var rs = self.Trait<RenderSprites>();
var body = self.Trait<IBodyOrientation>(); var body = self.Trait<IBodyOrientation>();
// TODO: Carry orientation over from the parent instead of just facing // TODO: Carry orientation over from the parent instead of just facing

View File

@@ -1016,6 +1016,75 @@ namespace OpenRA.Mods.Common.UtilityCommands
} }
} }
if (engineVersion < 20150528)
{
// Note (stolen from WithInfantryBody upgrade rule):
// These rules are set up to do approximately the right thing for maps, but
// mods need additional manual tweaks. This is the best we can do without having
// much smarter rules parsing, because we currently can't reason about inherited traits.
if (depth == 0)
{
var childKeys = new[] { "Sequence" };
var ru = node.Value.Nodes.FirstOrDefault(n => n.Key == "RenderUnit");
if (ru != null)
{
ru.Key = "WithFacingSpriteBody";
node.Value.Nodes.Add(new MiniYamlNode("AutoSelectionSize", ""));
var rsNodes = ru.Value.Nodes.Where(n => !childKeys.Contains(n.Key)).ToList();
if (rsNodes.Any())
node.Value.Nodes.Add(new MiniYamlNode("RenderSprites", new MiniYaml("", rsNodes)));
else
node.Value.Nodes.Add(new MiniYamlNode("RenderSprites", ""));
ru.Value.Nodes.RemoveAll(n => rsNodes.Contains(n));
}
var rru = node.Value.Nodes.FirstOrDefault(n => n.Key == "-RenderUnit");
if (rru != null)
rru.Key = "-WithFacingSpriteBody";
}
// For RenderUnitReload
var rur = node.Value.Nodes.Where(x => x.Key == "RenderUnitReload");
if (rur.Any())
{
rur.Do(x => x.Key = "RenderSprites");
node.Value.Nodes.Add(new MiniYamlNode("AutoSelectionSize", ""));
node.Value.Nodes.Add(new MiniYamlNode("WithFacingSpriteBody", "", new List<MiniYamlNode>
{
new MiniYamlNode("Sequence", "idle")
}));
node.Value.Nodes.Add(new MiniYamlNode("WithAttackAnimation", "", new List<MiniYamlNode>
{
new MiniYamlNode("AimSequence", "aim"),
new MiniYamlNode("ReloadPrefix", "empty-")
}));
var rrur = node.Value.Nodes.FirstOrDefault(n => n.Key == "-RenderUnitReload");
if (rrur != null)
rrur.Key = "-WithFacingSpriteBody";
}
// For RenderUnitFlying
var ruf = node.Value.Nodes.Where(x => x.Key == "RenderUnitFlying");
if (ruf.Any())
{
ruf.Do(x => x.Key = "RenderSprites");
node.Value.Nodes.Add(new MiniYamlNode("AutoSelectionSize", ""));
node.Value.Nodes.Add(new MiniYamlNode("WithFacingSpriteBody", ""));
node.Value.Nodes.Add(new MiniYamlNode("WithMoveAnimation", "", new List<MiniYamlNode>
{
new MiniYamlNode("MoveSequence", "move")
}));
var rruf = node.Value.Nodes.FirstOrDefault(n => n.Key == "-RenderUnitFlying");
if (rruf != null)
rruf.Key = "-WithFacingSpriteBody";
}
}
UpgradeActorRules(engineVersion, ref node.Value.Nodes, node, depth + 1); UpgradeActorRules(engineVersion, ref node.Value.Nodes, node, depth + 1);
} }
} }

View File

@@ -88,7 +88,6 @@
<Compile Include="Traits\Render\RenderJammerCircle.cs" /> <Compile Include="Traits\Render\RenderJammerCircle.cs" />
<Compile Include="Traits\Render\RenderLandingCraft.cs" /> <Compile Include="Traits\Render\RenderLandingCraft.cs" />
<Compile Include="Traits\Render\RenderShroudCircle.cs" /> <Compile Include="Traits\Render\RenderShroudCircle.cs" />
<Compile Include="Traits\Render\RenderUnitReload.cs" />
<Compile Include="Traits\SupportPowers\ChronoshiftPower.cs" /> <Compile Include="Traits\SupportPowers\ChronoshiftPower.cs" />
<Compile Include="Traits\SupportPowers\GpsPower.cs" /> <Compile Include="Traits\SupportPowers\GpsPower.cs" />
<Compile Include="Traits\SupportPowers\ParatroopersPower.cs" /> <Compile Include="Traits\SupportPowers\ParatroopersPower.cs" />

View File

@@ -22,7 +22,7 @@ using OpenRA.Traits;
namespace OpenRA.Mods.RA.Traits namespace OpenRA.Mods.RA.Traits
{ {
class MadTankInfo : ITraitInfo, Requires<ExplodesInfo>, Requires<RenderUnitInfo> class MadTankInfo : ITraitInfo, Requires<ExplodesInfo>, Requires<WithFacingSpriteBodyInfo>
{ {
public readonly string ThumpSequence = "piston"; public readonly string ThumpSequence = "piston";
public readonly int ThumpInterval = 8; public readonly int ThumpInterval = 8;
@@ -52,7 +52,7 @@ namespace OpenRA.Mods.RA.Traits
{ {
readonly Actor self; readonly Actor self;
readonly MadTankInfo info; readonly MadTankInfo info;
readonly RenderUnit renderUnit; readonly WithFacingSpriteBody wfsb;
readonly ScreenShaker screenShaker; readonly ScreenShaker screenShaker;
bool deployed; bool deployed;
int tick; int tick;
@@ -61,7 +61,7 @@ namespace OpenRA.Mods.RA.Traits
{ {
this.self = self; this.self = self;
this.info = info; this.info = info;
renderUnit = self.Trait<RenderUnit>(); wfsb = self.Trait<WithFacingSpriteBody>();
screenShaker = self.World.WorldActor.Trait<ScreenShaker>(); screenShaker = self.World.WorldActor.Trait<ScreenShaker>();
} }
@@ -147,7 +147,7 @@ namespace OpenRA.Mods.RA.Traits
self.World.AddFrameEndTask(w => EjectDriver()); self.World.AddFrameEndTask(w => EjectDriver());
if (info.ThumpSequence != null) if (info.ThumpSequence != null)
renderUnit.PlayCustomAnimationRepeating(self, info.ThumpSequence); wfsb.PlayCustomAnimationRepeating(self, info.ThumpSequence);
deployed = true; deployed = true;
self.QueueActivity(new Wait(info.ChargeDelay, false)); self.QueueActivity(new Wait(info.ChargeDelay, false));
self.QueueActivity(new CallFunc(() => Sound.Play(info.ChargeSound, self.CenterPosition))); self.QueueActivity(new CallFunc(() => Sound.Play(info.ChargeSound, self.CenterPosition)));

View File

@@ -1,55 +0,0 @@
#region Copyright & License Information
/*
* Copyright 2007-2015 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. For more information,
* see COPYING.
*/
#endregion
using System.Linq;
using OpenRA.Mods.Common.Traits;
using OpenRA.Traits;
namespace OpenRA.Mods.RA.Traits
{
class RenderUnitReloadInfo : RenderUnitInfo, Requires<ArmamentInfo>, Requires<AttackBaseInfo>
{
[Desc("Armament name")]
public readonly string Armament = "primary";
[Desc("Displayed while targeting.")]
public readonly string AimSequence = "aim";
[Desc("Shown while reloading.")]
public readonly string EmptyPrefix = "empty-";
public override object Create(ActorInitializer init) { return new RenderUnitReload(init, this); }
}
class RenderUnitReload : RenderUnit
{
readonly AttackBase attack;
readonly Armament armament;
readonly RenderUnitReloadInfo info;
public RenderUnitReload(ActorInitializer init, RenderUnitReloadInfo info)
: base(init, info)
{
this.info = info;
attack = init.Self.Trait<AttackBase>();
armament = init.Self.TraitsImplementing<Armament>()
.Single(a => a.Info.Name == info.Armament);
}
public override void Tick(Actor self)
{
var sequence = (armament.IsReloading ? info.EmptyPrefix : "") + (attack.IsAttacking ? info.AimSequence : info.Sequence);
if (sequence != DefaultAnimation.CurrentSequence.Name)
DefaultAnimation.ReplaceAnim(sequence);
base.Tick(self);
}
}
}

View File

@@ -24,7 +24,7 @@ TRAN:
Type: Light Type: Light
RevealsShroud: RevealsShroud:
Range: 10c0 Range: 10c0
RenderUnit: WithFacingSpriteBody:
WithRotor@PRIMARY: WithRotor@PRIMARY:
Offset: -597,0,171 Offset: -597,0,171
Sequence: rotor2 Sequence: rotor2
@@ -40,6 +40,8 @@ TRAN:
Explodes: Explodes:
Weapon: HeliExplode Weapon: HeliExplode
EmptyWeapon: HeliExplode EmptyWeapon: HeliExplode
AutoSelectionSize:
RenderSprites:
HELI: HELI:
Inherits: ^Helicopter Inherits: ^Helicopter
@@ -81,7 +83,7 @@ HELI:
SelfReloads: true SelfReloads: true
ReloadCount: 10 ReloadCount: 10
SelfReloadTicks: 200 SelfReloadTicks: 200
RenderUnit: WithFacingSpriteBody:
WithRotor: WithRotor:
Offset: 0,0,85 Offset: 0,0,85
WithMuzzleFlash: WithMuzzleFlash:
@@ -91,6 +93,8 @@ HELI:
Explodes: Explodes:
Weapon: HeliExplode Weapon: HeliExplode
EmptyWeapon: HeliExplode EmptyWeapon: HeliExplode
AutoSelectionSize:
RenderSprites:
ORCA: ORCA:
Inherits: ^Helicopter Inherits: ^Helicopter
@@ -129,13 +133,17 @@ ORCA:
SelfReloads: true SelfReloads: true
ReloadCount: 2 ReloadCount: 2
SelfReloadTicks: 100 SelfReloadTicks: 100
RenderUnitFlying: RenderSprites:
WithFacingSpriteBody:
LeavesHusk: LeavesHusk:
HuskActor: ORCA.Husk HuskActor: ORCA.Husk
AutoTarget: AutoTarget:
Explodes: Explodes:
Weapon: HeliExplode Weapon: HeliExplode
EmptyWeapon: HeliExplode EmptyWeapon: HeliExplode
AutoSelectionSize:
WithMoveAnimation:
MoveSequence: move
C17: C17:
ParaDrop: ParaDrop:
@@ -154,7 +162,7 @@ C17:
HP: 25 HP: 25
Armor: Armor:
Type: Heavy Type: Heavy
RenderUnit: WithFacingSpriteBody:
Cargo: Cargo:
MaxWeight: 10 MaxWeight: 10
PipCount: 10 PipCount: 10
@@ -176,6 +184,8 @@ C17:
Contrail@4: Contrail@4:
Offset: -261,650,0 Offset: -261,650,0
TrailLength: 15 TrailLength: 15
AutoSelectionSize:
RenderSprites:
A10: A10:
Inherits: ^Plane Inherits: ^Plane
@@ -192,7 +202,7 @@ A10:
HP: 150 HP: 150
Armor: Armor:
Type: Heavy Type: Heavy
RenderUnit: WithFacingSpriteBody:
AttackBomber: AttackBomber:
Armaments: gun, bombs Armaments: gun, bombs
Guns: gun Guns: gun
@@ -217,6 +227,8 @@ A10:
Contrail@2: Contrail@2:
Offset: -640,-171,0 Offset: -640,-171,0
TrailLength: 15 TrailLength: 15
AutoSelectionSize:
RenderSprites:
TRAN.Husk: TRAN.Husk:
Inherits: ^HelicopterHusk Inherits: ^HelicopterHusk
@@ -231,7 +243,9 @@ TRAN.Husk:
Offset: -597,0,171 Offset: -597,0,171
WithRotor@SECONDARY: WithRotor@SECONDARY:
Offset: 597,0,85 Offset: 597,0,85
RenderUnit: WithFacingSpriteBody:
AutoSelectionSize:
RenderSprites:
Image: tran Image: tran
HELI.Husk: HELI.Husk:
@@ -245,7 +259,9 @@ HELI.Husk:
Range: 10c0 Range: 10c0
WithRotor: WithRotor:
Offset: 0,0,85 Offset: 0,0,85
RenderUnit: WithFacingSpriteBody:
AutoSelectionSize:
RenderSprites:
Image: heli Image: heli
ORCA.Husk: ORCA.Husk:
@@ -257,6 +273,8 @@ ORCA.Husk:
Speed: 186 Speed: 186
RevealsShroud: RevealsShroud:
Range: 10c0 Range: 10c0
RenderUnit: WithFacingSpriteBody:
AutoSelectionSize:
RenderSprites:
Image: orca Image: orca

View File

@@ -460,7 +460,7 @@ VICE:
WanderMoveRadius: 2 WanderMoveRadius: 2
MinMoveDelayInTicks: 25 MinMoveDelayInTicks: 25
MaxMoveDelayInTicks: 45 MaxMoveDelayInTicks: 45
RenderUnit: WithFacingSpriteBody:
WithMuzzleFlash: WithMuzzleFlash:
SplitFacings: true SplitFacings: true
CombatDebugOverlay: CombatDebugOverlay:
@@ -473,4 +473,6 @@ VICE:
Weapon: Heal Weapon: Heal
Voiced: Voiced:
VoiceSet: DinoVoice VoiceSet: DinoVoice
AutoSelectionSize:
RenderSprites:

View File

@@ -3,148 +3,176 @@ MCV.Husk:
Tooltip: Tooltip:
Name: Mobile Construction Vehicle (Destroyed) Name: Mobile Construction Vehicle (Destroyed)
Icon: mcvicnh Icon: mcvicnh
RenderUnit: WithFacingSpriteBody:
Image: mcv.destroyed
TransformOnCapture: TransformOnCapture:
IntoActor: mcv IntoActor: mcv
AutoSelectionSize:
RenderSprites:
Image: mcv.destroyed
HARV.Husk: HARV.Husk:
Inherits: ^Husk Inherits: ^Husk
Tooltip: Tooltip:
Name: Harvester (Destroyed) Name: Harvester (Destroyed)
Icon: harvicnh Icon: harvicnh
RenderUnit: WithFacingSpriteBody:
Image: harv.destroyed
TransformOnCapture: TransformOnCapture:
IntoActor: harv IntoActor: harv
AutoSelectionSize:
RenderSprites:
Image: harv.destroyed
APC.Husk: APC.Husk:
Inherits: ^Husk Inherits: ^Husk
Tooltip: Tooltip:
Name: APC (Destroyed) Name: APC (Destroyed)
Icon: apcicnh Icon: apcicnh
RenderUnit: WithFacingSpriteBody:
Image: apc.destroyed
TransformOnCapture: TransformOnCapture:
IntoActor: apc IntoActor: apc
AutoSelectionSize:
RenderSprites:
Image: apc.destroyed
FTNK.Husk: FTNK.Husk:
Inherits: ^Husk Inherits: ^Husk
Tooltip: Tooltip:
Name: Flame Tank (Destroyed) Name: Flame Tank (Destroyed)
Icon: ftnkicnh Icon: ftnkicnh
RenderUnit: WithFacingSpriteBody:
Image: ftnk.destroyed
TransformOnCapture: TransformOnCapture:
IntoActor: ftnk IntoActor: ftnk
AutoSelectionSize:
RenderSprites:
Image: ftnk.destroyed
ARTY.Husk: ARTY.Husk:
Inherits: ^Husk Inherits: ^Husk
Tooltip: Tooltip:
Name: Artillery (Destroyed) Name: Artillery (Destroyed)
Icon: artyicnh Icon: artyicnh
RenderUnit: WithFacingSpriteBody:
Image: arty.destroyed
TransformOnCapture: TransformOnCapture:
IntoActor: arty IntoActor: arty
AutoSelectionSize:
RenderSprites:
Image: arty.destroyed
BGGY.Husk: BGGY.Husk:
Inherits: ^Husk Inherits: ^Husk
Tooltip: Tooltip:
Name: Nod Buggy (Destroyed) Name: Nod Buggy (Destroyed)
Icon: bggyicnh Icon: bggyicnh
RenderUnit: WithFacingSpriteBody:
Image: bggy.destroyed
TransformOnCapture: TransformOnCapture:
IntoActor: bggy IntoActor: bggy
AutoSelectionSize:
RenderSprites:
Image: bggy.destroyed
BIKE.Husk: BIKE.Husk:
Inherits: ^Husk Inherits: ^Husk
Tooltip: Tooltip:
Name: Recon Bike (Destroyed) Name: Recon Bike (Destroyed)
Icon: bikeicnh Icon: bikeicnh
RenderUnit: WithFacingSpriteBody:
Image: bike.destroyed
TransformOnCapture: TransformOnCapture:
IntoActor: bike IntoActor: bike
AutoSelectionSize:
RenderSprites:
Image: bike.destroyed
JEEP.Husk: JEEP.Husk:
Inherits: ^Husk Inherits: ^Husk
Tooltip: Tooltip:
Name: Hum-Vee (Destroyed) Name: Hum-Vee (Destroyed)
Icon: jeepicnh Icon: jeepicnh
RenderUnit: WithFacingSpriteBody:
Image: jeep.destroyed
TransformOnCapture: TransformOnCapture:
IntoActor: jeep IntoActor: jeep
AutoSelectionSize:
RenderSprites:
Image: jeep.destroyed
LTNK.Husk: LTNK.Husk:
Inherits: ^Husk Inherits: ^Husk
Tooltip: Tooltip:
Name: Light Tank (Destroyed) Name: Light Tank (Destroyed)
Icon: ltnkicnh Icon: ltnkicnh
RenderUnit: WithFacingSpriteBody:
Image: ltnk.destroyed
ThrowsParticle@turret: ThrowsParticle@turret:
Anim: turret Anim: turret
TransformOnCapture: TransformOnCapture:
IntoActor: ltnk IntoActor: ltnk
AutoSelectionSize:
RenderSprites:
Image: ltnk.destroyed
MTNK.Husk: MTNK.Husk:
Inherits: ^Husk Inherits: ^Husk
Tooltip: Tooltip:
Name: Medium Tank (Destroyed) Name: Medium Tank (Destroyed)
Icon: mtnkicnh Icon: mtnkicnh
RenderUnit: WithFacingSpriteBody:
Image: mtnk.destroyed
ThrowsParticle@turret: ThrowsParticle@turret:
Anim: turret Anim: turret
TransformOnCapture: TransformOnCapture:
IntoActor: mtnk IntoActor: mtnk
AutoSelectionSize:
RenderSprites:
Image: mtnk.destroyed
HTNK.Husk: HTNK.Husk:
Inherits: ^Husk Inherits: ^Husk
Tooltip: Tooltip:
Name: Mammoth Tank (Destroyed) Name: Mammoth Tank (Destroyed)
Icon: htnkicnh Icon: htnkicnh
RenderUnit: WithFacingSpriteBody:
Image: htnk.destroyed
ThrowsParticle@turret: ThrowsParticle@turret:
Anim: turret Anim: turret
TransformOnCapture: TransformOnCapture:
IntoActor: htnk IntoActor: htnk
AutoSelectionSize:
RenderSprites:
Image: htnk.destroyed
MSAM.Husk: MSAM.Husk:
Inherits: ^Husk Inherits: ^Husk
Tooltip: Tooltip:
Name: Rocket Launcher (Destroyed) Name: Rocket Launcher (Destroyed)
Icon: msamicnh Icon: msamicnh
RenderUnit: WithFacingSpriteBody:
Image: msam.destroyed
ThrowsParticle@turret: ThrowsParticle@turret:
Anim: turret Anim: turret
TransformOnCapture: TransformOnCapture:
IntoActor: msam IntoActor: msam
AutoSelectionSize:
RenderSprites:
Image: msam.destroyed
MLRS.Husk: MLRS.Husk:
Inherits: ^Husk Inherits: ^Husk
Tooltip: Tooltip:
Name: Mobile S.A.M. (Destroyed) Name: Mobile S.A.M. (Destroyed)
Icon: mlrsicnh Icon: mlrsicnh
RenderUnit: WithFacingSpriteBody:
Image: mlrs.destroyed
ThrowsParticle@turret: ThrowsParticle@turret:
Anim: turret Anim: turret
TransformOnCapture: TransformOnCapture:
IntoActor: mlrs IntoActor: mlrs
AutoSelectionSize:
RenderSprites:
Image: mlrs.destroyed
STNK.Husk: STNK.Husk:
Inherits: ^Husk Inherits: ^Husk
Tooltip: Tooltip:
Name: Stealth Tank (Destroyed) Name: Stealth Tank (Destroyed)
Icon: stnkicnh Icon: stnkicnh
RenderUnit: WithFacingSpriteBody:
Image: stnk.destroyed
TransformOnCapture: TransformOnCapture:
IntoActor: stnk IntoActor: stnk
AutoSelectionSize:
RenderSprites:
Image: stnk.destroyed

View File

@@ -60,7 +60,7 @@ LST:
Type: Heavy Type: Heavy
RevealsShroud: RevealsShroud:
Range: 7c0 Range: 7c0
RenderUnit: WithFacingSpriteBody:
WithRoof: WithRoof:
WithCargo: WithCargo:
DisplayTypes: Infantry, Vehicle DisplayTypes: Infantry, Vehicle
@@ -70,4 +70,6 @@ LST:
MaxWeight: 5 MaxWeight: 5
PipCount: 5 PipCount: 5
PassengerFacing: 0 PassengerFacing: 0
AutoSelectionSize:
RenderSprites:

View File

@@ -26,7 +26,7 @@ MCV:
Facing: 108 Facing: 108
TransformSounds: constru2.aud, hvydoor1.aud TransformSounds: constru2.aud, hvydoor1.aud
NoTransformNotification: BuildingCannotPlaceAudio NoTransformNotification: BuildingCannotPlaceAudio
RenderUnit: WithFacingSpriteBody:
MustBeDestroyed: MustBeDestroyed:
RequiredForShortGame: true RequiredForShortGame: true
BaseBuilding: BaseBuilding:
@@ -37,6 +37,8 @@ MCV:
Explodes: Explodes:
Weapon: UnitExplodeSmall Weapon: UnitExplodeSmall
EmptyWeapon: UnitExplodeSmall EmptyWeapon: UnitExplodeSmall
AutoSelectionSize:
RenderSprites:
HARV: HARV:
Inherits: ^Tank Inherits: ^Tank
@@ -114,7 +116,7 @@ APC:
MuzzleSequence: muzzle MuzzleSequence: muzzle
AttackTurreted: AttackTurreted:
WithMuzzleFlash: WithMuzzleFlash:
RenderUnit: WithFacingSpriteBody:
WithTurret: WithTurret:
AutoTarget: AutoTarget:
Cargo: Cargo:
@@ -123,6 +125,8 @@ APC:
PipCount: 5 PipCount: 5
LeavesHusk: LeavesHusk:
HuskActor: APC.Husk HuskActor: APC.Husk
AutoSelectionSize:
RenderSprites:
ARTY: ARTY:
Inherits: ^Tank Inherits: ^Tank
@@ -150,11 +154,13 @@ ARTY:
MuzzleSequence: muzzle MuzzleSequence: muzzle
AttackFrontal: AttackFrontal:
WithMuzzleFlash: WithMuzzleFlash:
RenderUnit: WithFacingSpriteBody:
AutoTarget: AutoTarget:
InitialStance: Defend InitialStance: Defend
LeavesHusk: LeavesHusk:
HuskActor: ARTY.Husk HuskActor: ARTY.Husk
AutoSelectionSize:
RenderSprites:
FTNK: FTNK:
Inherits: ^Tank Inherits: ^Tank
@@ -182,7 +188,7 @@ FTNK:
MuzzleSequence: muzzle MuzzleSequence: muzzle
MuzzleSplitFacings: 8 MuzzleSplitFacings: 8
AttackFrontal: AttackFrontal:
RenderUnit: WithFacingSpriteBody:
AutoTarget: AutoTarget:
WithMuzzleFlash: WithMuzzleFlash:
SplitFacings: true SplitFacings: true
@@ -191,6 +197,8 @@ FTNK:
EmptyWeapon: FlametankExplode EmptyWeapon: FlametankExplode
LeavesHusk: LeavesHusk:
HuskActor: FTNK.Husk HuskActor: FTNK.Husk
AutoSelectionSize:
RenderSprites:
BGGY: BGGY:
Inherits: ^Vehicle Inherits: ^Vehicle
@@ -221,11 +229,13 @@ BGGY:
MuzzleSequence: muzzle MuzzleSequence: muzzle
AttackTurreted: AttackTurreted:
WithMuzzleFlash: WithMuzzleFlash:
RenderUnit: WithFacingSpriteBody:
WithTurret: WithTurret:
AutoTarget: AutoTarget:
LeavesHusk: LeavesHusk:
HuskActor: BGGY.Husk HuskActor: BGGY.Husk
AutoSelectionSize:
RenderSprites:
BIKE: BIKE:
Inherits: ^Vehicle Inherits: ^Vehicle
@@ -259,10 +269,12 @@ BIKE:
LocalOffset: -128, -170, 170, -128, 170, 170 LocalOffset: -128, -170, 170, -128, 170, 170
LocalYaw: 100, -100 LocalYaw: 100, -100
AttackFrontal: AttackFrontal:
RenderUnit: WithFacingSpriteBody:
AutoTarget: AutoTarget:
LeavesHusk: LeavesHusk:
HuskActor: BIKE.Husk HuskActor: BIKE.Husk
AutoSelectionSize:
RenderSprites:
JEEP: JEEP:
Inherits: ^Vehicle Inherits: ^Vehicle
@@ -293,11 +305,13 @@ JEEP:
MuzzleSequence: muzzle MuzzleSequence: muzzle
AttackTurreted: AttackTurreted:
WithMuzzleFlash: WithMuzzleFlash:
RenderUnit: WithFacingSpriteBody:
WithTurret: WithTurret:
AutoTarget: AutoTarget:
LeavesHusk: LeavesHusk:
HuskActor: JEEP.Husk HuskActor: JEEP.Husk
AutoSelectionSize:
RenderSprites:
LTNK: LTNK:
Inherits: ^Tank Inherits: ^Tank
@@ -329,7 +343,7 @@ LTNK:
MuzzleSequence: muzzle MuzzleSequence: muzzle
AttackTurreted: AttackTurreted:
WithMuzzleFlash: WithMuzzleFlash:
RenderUnit: WithFacingSpriteBody:
WithTurret: WithTurret:
AutoTarget: AutoTarget:
LeavesHusk: LeavesHusk:
@@ -337,6 +351,8 @@ LTNK:
Explodes: Explodes:
Weapon: UnitExplodeSmall Weapon: UnitExplodeSmall
EmptyWeapon: UnitExplodeSmall EmptyWeapon: UnitExplodeSmall
AutoSelectionSize:
RenderSprites:
MTNK: MTNK:
Inherits: ^Tank Inherits: ^Tank
@@ -367,7 +383,7 @@ MTNK:
MuzzleSequence: muzzle MuzzleSequence: muzzle
AttackTurreted: AttackTurreted:
WithMuzzleFlash: WithMuzzleFlash:
RenderUnit: WithFacingSpriteBody:
WithTurret: WithTurret:
AutoTarget: AutoTarget:
LeavesHusk: LeavesHusk:
@@ -377,6 +393,8 @@ MTNK:
EmptyWeapon: UnitExplodeSmall EmptyWeapon: UnitExplodeSmall
Selectable: Selectable:
Bounds: 28,28 Bounds: 28,28
AutoSelectionSize:
RenderSprites:
HTNK: HTNK:
Inherits: ^Tank Inherits: ^Tank
@@ -416,7 +434,7 @@ HTNK:
MuzzleSequence: muzzle MuzzleSequence: muzzle
AttackTurreted: AttackTurreted:
WithMuzzleFlash: WithMuzzleFlash:
RenderUnit: WithFacingSpriteBody:
WithTurret: WithTurret:
AutoTarget: AutoTarget:
SelfHealing: SelfHealing:
@@ -430,6 +448,8 @@ HTNK:
EmptyWeapon: UnitExplodeSmall EmptyWeapon: UnitExplodeSmall
Selectable: Selectable:
Bounds: 34,34,0,-3 Bounds: 34,34,0,-3
AutoSelectionSize:
RenderSprites:
MSAM: MSAM:
Inherits: ^Tank Inherits: ^Tank
@@ -461,12 +481,14 @@ MSAM:
Weapon: 227mm Weapon: 227mm
LocalOffset: 213,-128,0, 213,128,0 LocalOffset: 213,-128,0, 213,128,0
AttackFrontal: AttackFrontal:
RenderUnit: WithFacingSpriteBody:
WithTurret: WithTurret:
AimSequence: aim AimSequence: aim
AutoTarget: AutoTarget:
LeavesHusk: LeavesHusk:
HuskActor: MSAM.Husk HuskActor: MSAM.Husk
AutoSelectionSize:
RenderSprites:
MLRS: MLRS:
Inherits: ^Tank Inherits: ^Tank
@@ -496,7 +518,7 @@ MLRS:
Weapon: Patriot Weapon: Patriot
LocalOffset: 0,-171,0, 0,171,0 LocalOffset: 0,-171,0, 0,171,0
AttackTurreted: AttackTurreted:
RenderUnit: WithFacingSpriteBody:
WithTurret: WithTurret:
AimSequence: aim AimSequence: aim
AutoTarget: AutoTarget:
@@ -507,6 +529,8 @@ MLRS:
RenderRangeCircle: RenderRangeCircle:
LeavesHusk: LeavesHusk:
HuskActor: MLRS.Husk HuskActor: MLRS.Husk
AutoSelectionSize:
RenderSprites:
STNK: STNK:
Inherits: ^Vehicle Inherits: ^Vehicle
@@ -539,13 +563,15 @@ STNK:
Weapon: 227mm.stnk Weapon: 227mm.stnk
LocalOffset: 213,43,128, 213,-43,128 LocalOffset: 213,43,128, 213,-43,128
AttackFrontal: AttackFrontal:
RenderUnit: WithFacingSpriteBody:
AutoTarget: AutoTarget:
InitialStance: HoldFire InitialStance: HoldFire
TargetableUnit: TargetableUnit:
LeavesHusk: LeavesHusk:
HuskActor: STNK.Husk HuskActor: STNK.Husk
-MustBeDestroyed: -MustBeDestroyed:
AutoSelectionSize:
RenderSprites:
MHQ: MHQ:
Inherits: ^Vehicle Inherits: ^Vehicle
@@ -562,11 +588,13 @@ MHQ:
Speed: 85 Speed: 85
RevealsShroud: RevealsShroud:
Range: 6c0 Range: 6c0
RenderUnit: WithFacingSpriteBody:
WithIdleOverlay@SPINNER: WithIdleOverlay@SPINNER:
Sequence: spinner Sequence: spinner
Offset: -256,0,256 Offset: -256,0,256
Explodes: Explodes:
Weapon: UnitExplodeSmall Weapon: UnitExplodeSmall
EmptyWeapon: UnitExplodeSmall EmptyWeapon: UnitExplodeSmall
AutoSelectionSize:
RenderSprites:

View File

@@ -20,8 +20,7 @@ carryall.reinforce:
Repulsable: False Repulsable: False
LandAltitude: 100 LandAltitude: 100
LandWhenIdle: False LandWhenIdle: False
RenderUnit: WithFacingSpriteBody:
Image: carryall
WithShadow: WithShadow:
LeavesHusk: LeavesHusk:
HuskActor: carryall.husk HuskActor: carryall.husk
@@ -29,6 +28,9 @@ carryall.reinforce:
-TargetableAircraft: -TargetableAircraft:
Carryall: Carryall:
Automatic: False Automatic: False
AutoSelectionSize:
RenderSprites:
Image: carryall
carryall: carryall:
Inherits: carryall.reinforce Inherits: carryall.reinforce
@@ -55,8 +57,7 @@ carryall.infantry:
RepairBuildings: repair RepairBuildings: repair
RearmBuildings: RearmBuildings:
Repulsable: False Repulsable: False
RenderUnit: WithFacingSpriteBody:
Image: carryall
WithShadow: WithShadow:
Cargo: Cargo:
MaxWeight: 5 MaxWeight: 5
@@ -69,6 +70,9 @@ carryall.infantry:
LeavesHusk: LeavesHusk:
HuskActor: carryall.infantry.husk HuskActor: carryall.infantry.husk
RejectsOrders: RejectsOrders:
AutoSelectionSize:
RenderSprites:
Image: carryall
carryall.husk: carryall.husk:
Inherits: ^AircraftHusk Inherits: ^AircraftHusk
@@ -79,9 +83,11 @@ carryall.husk:
Speed: 210 Speed: 210
RepairBuildings: repair RepairBuildings: repair
RearmBuildings: RearmBuildings:
RenderUnit: WithFacingSpriteBody:
Image: carryall
WithShadow: WithShadow:
AutoSelectionSize:
RenderSprites:
Image: carryall
frigate: frigate:
Inherits: ^Plane Inherits: ^Plane
@@ -137,12 +143,14 @@ orni:
Speed: 280 Speed: 280
RepairBuildings: repair RepairBuildings: repair
RearmBuildings: RearmBuildings:
RenderUnit: WithFacingSpriteBody:
WithShadow: WithShadow:
Selectable: Selectable:
Bounds: 38,32,0,0 Bounds: 38,32,0,0
LeavesHusk: LeavesHusk:
HuskActor: orni.husk HuskActor: orni.husk
AutoSelectionSize:
RenderSprites:
orni.bomber: orni.bomber:
AttackBomber: AttackBomber:
@@ -161,8 +169,7 @@ orni.bomber:
Repulsable: False Repulsable: False
AmmoPool: AmmoPool:
Ammo: 5 Ammo: 5
RenderUnit: WithFacingSpriteBody:
Image: orni
WithShadow: WithShadow:
-Selectable: -Selectable:
-GainsExperience: -GainsExperience:
@@ -171,6 +178,9 @@ orni.bomber:
LeavesHusk: LeavesHusk:
HuskActor: orni.bomber.husk HuskActor: orni.bomber.husk
RejectsOrders: RejectsOrders:
AutoSelectionSize:
RenderSprites:
Image: orni
orni.husk: orni.husk:
Inherits: ^AircraftHusk Inherits: ^AircraftHusk
@@ -181,9 +191,11 @@ orni.husk:
Speed: 280 Speed: 280
RepairBuildings: repair RepairBuildings: repair
RearmBuildings: RearmBuildings:
RenderUnit: WithFacingSpriteBody:
Image: orni
WithShadow: WithShadow:
AutoSelectionSize:
RenderSprites:
Image: orni
orni.bomber.husk: orni.bomber.husk:
Inherits: ^AircraftHusk Inherits: ^AircraftHusk
@@ -194,9 +206,11 @@ orni.bomber.husk:
Speed: 350 Speed: 350
RepairBuildings: repair RepairBuildings: repair
RearmBuildings: RearmBuildings:
RenderUnit: WithFacingSpriteBody:
Image: orni
WithShadow: WithShadow:
AutoSelectionSize:
RenderSprites:
Image: orni
carryall.infantry.husk: carryall.infantry.husk:
Inherits: ^AircraftHusk Inherits: ^AircraftHusk
@@ -207,6 +221,9 @@ carryall.infantry.husk:
Speed: 280 Speed: 280
RepairBuildings: repair RepairBuildings: repair
RearmBuildings: RearmBuildings:
RenderUnit: WithFacingSpriteBody:
Image: carryall
WithShadow: WithShadow:
AutoSelectionSize:
RenderSprites:
Image: carryall

View File

@@ -32,7 +32,7 @@
Guard: Guard:
Voice: Guard Voice: Guard
Guardable: Guardable:
RenderUnit: WithFacingSpriteBody:
BodyOrientation: BodyOrientation:
UpdatesPlayerStatistics: UpdatesPlayerStatistics:
Huntable: Huntable:
@@ -58,6 +58,8 @@
Image: pips Image: pips
Sequence: pickup-indicator Sequence: pickup-indicator
Offset: -12, -12 Offset: -12, -12
AutoSelectionSize:
RenderSprites:
^Tank: ^Tank:
AppearsOnRadar: AppearsOnRadar:
@@ -93,7 +95,7 @@
Guard: Guard:
Voice: Guard Voice: Guard
Guardable: Guardable:
RenderUnit: WithFacingSpriteBody:
BodyOrientation: BodyOrientation:
UpdatesPlayerStatistics: UpdatesPlayerStatistics:
Huntable: Huntable:
@@ -119,6 +121,8 @@
Image: pips Image: pips
Sequence: pickup-indicator Sequence: pickup-indicator
Offset: -12, -12 Offset: -12, -12
AutoSelectionSize:
RenderSprites:
^Husk: ^Husk:
Health: Health:
@@ -147,7 +151,9 @@
ForceHealthPercentage: 25 ForceHealthPercentage: 25
DisabledOverlay: DisabledOverlay:
ScriptTriggers: ScriptTriggers:
RenderUnit: WithFacingSpriteBody:
AutoSelectionSize:
RenderSprites:
^TowerHusk: ^TowerHusk:
Health: Health:
@@ -295,9 +301,11 @@
UpgradeManager: UpgradeManager:
AnnounceOnSeen: AnnounceOnSeen:
Notification: EnemyUnitsDetected Notification: EnemyUnitsDetected
RenderUnit:
Voiced: Voiced:
VoiceSet: GenericVoice VoiceSet: GenericVoice
WithFacingSpriteBody:
AutoSelectionSize:
RenderSprites:
^Helicopter: ^Helicopter:
Inherits: ^Plane Inherits: ^Plane

View File

@@ -24,9 +24,11 @@ siegetank.husk:
missiletank.husk: missiletank.husk:
Inherits: ^Husk Inherits: ^Husk
RenderUnit: WithFacingSpriteBody:
TransformOnCapture: TransformOnCapture:
IntoActor: missiletank IntoActor: missiletank
AutoSelectionSize:
RenderSprites:
sonictank.husk: sonictank.husk:
Inherits: ^Husk Inherits: ^Husk

View File

@@ -128,11 +128,13 @@ waypoint:
^carryall.colorpicker: ^carryall.colorpicker:
Inherits: carryall Inherits: carryall
RenderUnit: WithFacingSpriteBody:
Image: carryall
Palette: colorpicker
Helicopter: Helicopter:
InitialFacing: 104 InitialFacing: 104
AutoSelectionSize:
RenderSprites:
Image: carryall
Palette: colorpicker
camera: camera:
Immobile: Immobile:

View File

@@ -5,7 +5,9 @@ mcv.starport:
Queue: Starport Queue: Starport
Valued: Valued:
Cost: 2500 Cost: 2500
RenderUnit: WithFacingSpriteBody:
AutoSelectionSize:
RenderSprites:
Image: mcv Image: mcv
harvester.starport: harvester.starport:
@@ -24,7 +26,9 @@ trike.starport:
Prerequisites: starport Prerequisites: starport
Valued: Valued:
Cost: 315 Cost: 315
RenderUnit: WithFacingSpriteBody:
AutoSelectionSize:
RenderSprites:
Image: trike Image: trike
quad.starport: quad.starport:
@@ -33,7 +37,9 @@ quad.starport:
Queue: Starport Queue: Starport
Valued: Valued:
Cost: 500 Cost: 500
RenderUnit: WithFacingSpriteBody:
AutoSelectionSize:
RenderSprites:
Image: quad Image: quad
siegetank.starport: siegetank.starport:
@@ -42,7 +48,9 @@ siegetank.starport:
Queue: Starport Queue: Starport
Valued: Valued:
Cost: 1075 Cost: 1075
RenderUnit: WithFacingSpriteBody:
AutoSelectionSize:
RenderSprites:
Image: siegetank Image: siegetank
missiletank.starport: missiletank.starport:
@@ -51,7 +59,9 @@ missiletank.starport:
Queue: Starport Queue: Starport
Valued: Valued:
Cost: 1250 Cost: 1250
RenderUnit: WithFacingSpriteBody:
AutoSelectionSize:
RenderSprites:
Image: missiletank Image: missiletank
combata.starport: combata.starport:
@@ -61,7 +71,9 @@ combata.starport:
Queue: Starport Queue: Starport
Valued: Valued:
Cost: 875 Cost: 875
RenderUnit: WithFacingSpriteBody:
AutoSelectionSize:
RenderSprites:
Image: combata Image: combata
combath.starport: combath.starport:
@@ -71,7 +83,9 @@ combath.starport:
Queue: Starport Queue: Starport
Valued: Valued:
Cost: 875 Cost: 875
RenderUnit: WithFacingSpriteBody:
AutoSelectionSize:
RenderSprites:
Image: combath Image: combath
combato.starport: combato.starport:
@@ -81,7 +95,9 @@ combato.starport:
Queue: Starport Queue: Starport
Valued: Valued:
Cost: 875 Cost: 875
RenderUnit: WithFacingSpriteBody:
AutoSelectionSize:
RenderSprites:
Image: combato Image: combato
carryall.starport: carryall.starport:

View File

@@ -75,6 +75,10 @@ harvester:
EmptyWeapon: UnitExplodeScale EmptyWeapon: UnitExplodeScale
LeavesHusk: LeavesHusk:
HuskActor: Harvester.Husk HuskActor: Harvester.Husk
RenderUnit:
-RenderSprites:
-WithFacingSpriteBody:
-AutoSelectionSize:
WithHarvestAnimation: WithHarvestAnimation:
Palette: effect50alpha Palette: effect50alpha
AttractsWorms: AttractsWorms:
@@ -102,7 +106,7 @@ trike:
Speed: 128 Speed: 128
RevealsShroud: RevealsShroud:
Range: 7c0 Range: 7c0
RenderUnit: WithFacingSpriteBody:
WithMuzzleFlash: WithMuzzleFlash:
Armament: Armament:
Weapon: HMG Weapon: HMG
@@ -115,6 +119,8 @@ trike:
EmptyWeapon: UnitExplodeTiny EmptyWeapon: UnitExplodeTiny
AttractsWorms: AttractsWorms:
Intensity: 420 Intensity: 420
AutoSelectionSize:
RenderSprites:
quad: quad:
Inherits: ^Vehicle Inherits: ^Vehicle
@@ -181,8 +187,7 @@ siegetank:
MuzzleSequence: muzzle MuzzleSequence: muzzle
AttackFrontal: AttackFrontal:
WithMuzzleFlash: WithMuzzleFlash:
RenderUnit: WithFacingSpriteBody:
Image: SIEGETANK
WithTurret: WithTurret:
Explodes: Explodes:
Weapon: UnitExplodeScale Weapon: UnitExplodeScale
@@ -195,6 +200,9 @@ siegetank:
HuskActor: siegetank.husk HuskActor: siegetank.husk
AttractsWorms: AttractsWorms:
Intensity: 600 Intensity: 600
AutoSelectionSize:
RenderSprites:
Image: SIEGETANK
missiletank: missiletank:
Inherits: ^Tank Inherits: ^Tank
@@ -289,7 +297,7 @@ devast:
Crushes: crate, infantry Crushes: crate, infantry
RevealsShroud: RevealsShroud:
Range: 7c0 Range: 7c0
RenderUnit: WithFacingSpriteBody:
Armament: Armament:
Weapon: DevBullet Weapon: DevBullet
LocalOffset: 640,0,32 LocalOffset: 640,0,32
@@ -307,6 +315,8 @@ devast:
HuskActor: devast.husk HuskActor: devast.husk
AttractsWorms: AttractsWorms:
Intensity: 700 Intensity: 700
AutoSelectionSize:
RenderSprites:
raider: raider:
Inherits: ^Vehicle Inherits: ^Vehicle
@@ -382,7 +392,7 @@ deviatortank:
Type: Light Type: Light
RevealsShroud: RevealsShroud:
Range: 5c0 Range: 5c0
RenderUnit: WithFacingSpriteBody:
Armament: Armament:
Weapon: NerveGasMissile Weapon: NerveGasMissile
LocalOffset: -299,0,85 LocalOffset: -299,0,85
@@ -398,6 +408,8 @@ deviatortank:
HuskActor: deviatortank.husk HuskActor: deviatortank.husk
AttractsWorms: AttractsWorms:
Intensity: 600 Intensity: 600
AutoSelectionSize:
RenderSprites:
^combat: ^combat:
Inherits: ^Tank Inherits: ^Tank
@@ -430,7 +442,7 @@ deviatortank:
MuzzleSequence: muzzle MuzzleSequence: muzzle
AttackTurreted: AttackTurreted:
WithMuzzleFlash: WithMuzzleFlash:
RenderUnit: WithFacingSpriteBody:
WithTurret: WithTurret:
AutoTarget: AutoTarget:
Explodes: Explodes:
@@ -440,6 +452,8 @@ deviatortank:
Bounds: 30,30 Bounds: 30,30
AttractsWorms: AttractsWorms:
Intensity: 520 Intensity: 520
AutoSelectionSize:
RenderSprites:
combata: combata:
Inherits: ^combat Inherits: ^combat

View File

@@ -480,8 +480,7 @@ Rules:
PanelName: MISSION_OBJECTIVES PanelName: MISSION_OBJECTIVES
TRAN.Extraction: TRAN.Extraction:
Inherits: TRAN Inherits: TRAN
RenderUnit: WithFacingSpriteBody:
Image: tran
RevealsShroud: RevealsShroud:
Range: 0c0 Range: 0c0
RejectsOrders: RejectsOrders:
@@ -489,12 +488,17 @@ Rules:
Cargo: Cargo:
Types: Einstein Types: Einstein
MaxWeight: 1 MaxWeight: 1
AutoSelectionSize:
RenderSprites:
Image: tran
TRAN.Insertion: TRAN.Insertion:
Inherits: TRAN.Extraction Inherits: TRAN.Extraction
RenderUnit: WithFacingSpriteBody:
Image: tran
Cargo: Cargo:
MaxWeight: 0 MaxWeight: 0
AutoSelectionSize:
RenderSprites:
Image: tran
EINSTEIN: EINSTEIN:
Passenger: Passenger:
CargoType: Einstein CargoType: Einstein

View File

@@ -1377,8 +1377,7 @@ Rules:
ShowOwnerRow: false ShowOwnerRow: false
JEEP.mission: JEEP.mission:
Inherits: JEEP Inherits: JEEP
RenderUnit: WithFacingSpriteBody:
Image: JEEP
-Selectable: -Selectable:
-Demolishable: -Demolishable:
-Huntable: -Huntable:
@@ -1389,6 +1388,9 @@ Rules:
Types: ~disabled Types: ~disabled
RevealsShroud: RevealsShroud:
Range: 0c0 Range: 0c0
AutoSelectionSize:
RenderSprites:
Image: JEEP
E3: E3:
Buildable: Buildable:
Prerequisites: ~disabled Prerequisites: ~disabled

View File

@@ -1656,10 +1656,12 @@ Rules:
Inherits: TRUK Inherits: TRUK
Buildable: Buildable:
Prerequisites: ~disabled Prerequisites: ~disabled
RenderUnit: WithFacingSpriteBody:
Image: TRUK
-LeavesHusk: -LeavesHusk:
-EjectOnDeath: -EjectOnDeath:
AutoSelectionSize:
RenderSprites:
Image: TRUK
SPY: SPY:
Infiltrates: Infiltrates:
Types: Mission Objectives Types: Mission Objectives

View File

@@ -829,8 +829,7 @@ Rules:
ROT: 900 ROT: 900
RevealsShroud: RevealsShroud:
Range: 40c0 Range: 40c0
RenderUnit: WithFacingSpriteBody:
Image: MNLY
MustBeDestroyed: MustBeDestroyed:
RequiredForShortGame: true RequiredForShortGame: true
Transforms: Transforms:
@@ -840,6 +839,9 @@ Rules:
CashTrickler: CashTrickler:
Period: 150 Period: 150
Amount: 20 Amount: 20
AutoSelectionSize:
RenderSprites:
Image: MNLY
FTUR: FTUR:
Health: Health:
HP: 1000 HP: 1000

View File

@@ -684,14 +684,16 @@ Rules:
Speed: 280 Speed: 280
AmmoPool: AmmoPool:
Ammo: 30 Ammo: 30
RenderUnit: WithFacingSpriteBody:
Image: mig
WithShadow: WithShadow:
-Selectable: -Selectable:
-GainsExperience: -GainsExperience:
Tooltip: Tooltip:
Name: Mig Bomber Name: Mig Bomber
-EjectOnDeath: -EjectOnDeath:
AutoSelectionSize:
RenderSprites:
Image: mig
BRIK: BRIK:
Buildable: Buildable:
Prerequisites: ~disabled Prerequisites: ~disabled

View File

@@ -2210,8 +2210,7 @@ Rules:
MuzzleSequence: muzzle MuzzleSequence: muzzle
AttackTurreted: AttackTurreted:
WithMuzzleFlash: WithMuzzleFlash:
RenderUnit: WithFacingSpriteBody:
Image: 4TNK
WithTurret: WithTurret:
AutoTarget: AutoTarget:
Explodes: Explodes:
@@ -2227,16 +2226,21 @@ Rules:
Selectable: Selectable:
Bounds: 44,38,0,-4 Bounds: 44,38,0,-4
-EjectOnDeath: -EjectOnDeath:
AutoSelectionSize:
RenderSprites:
Image: 4TNK
5TNK.Husk: 5TNK.Husk:
Inherits: ^Husk Inherits: ^Husk
Tooltip: Tooltip:
Name: Husk (Super Tank) Name: Husk (Super Tank)
RenderUnit: WithFacingSpriteBody:
Image: 4TNK
ThrowsParticle@turret: ThrowsParticle@turret:
Anim: turret Anim: turret
Health: Health:
HP: 2000 HP: 2000
AutoSelectionSize:
RenderSprites:
Image: 4TNK
DOME.NoInfiltrate: DOME.NoInfiltrate:
Inherits: DOME Inherits: DOME
Buildable: Buildable:
@@ -2253,16 +2257,20 @@ Rules:
Inherits: 3TNK Inherits: 3TNK
Buildable: Buildable:
Prerequisites: ~disabled Prerequisites: ~disabled
RenderUnit: WithFacingSpriteBody:
Image: 3TNK
-EjectOnDeath: -EjectOnDeath:
AutoSelectionSize:
RenderSprites:
Image: 3TNK
BADTRUK: BADTRUK:
Inherits: TRUK Inherits: TRUK
Buildable: Buildable:
Prerequisites: ~disabled Prerequisites: ~disabled
RenderUnit: WithFacingSpriteBody:
Image: TRUK
-EjectOnDeath: -EjectOnDeath:
AutoSelectionSize:
RenderSprites:
Image: TRUK
SS: SS:
Buildable: Buildable:
Prerequisites: ~disabled Prerequisites: ~disabled

View File

@@ -10,7 +10,7 @@ BADR:
ROT: 5 ROT: 5
Speed: 149 Speed: 149
Repulsable: False Repulsable: False
RenderUnit: WithFacingSpriteBody:
Cargo: Cargo:
MaxWeight: 10 MaxWeight: 10
-Selectable: -Selectable:
@@ -33,6 +33,8 @@ BADR:
-GpsDot: -GpsDot:
RejectsOrders: RejectsOrders:
-AnnounceOnSeen: -AnnounceOnSeen:
AutoSelectionSize:
RenderSprites:
BADR.Bomber: BADR.Bomber:
Inherits: ^Plane Inherits: ^Plane
@@ -49,8 +51,7 @@ BADR.Bomber:
Repulsable: False Repulsable: False
AmmoPool: AmmoPool:
Ammo: 7 Ammo: 7
RenderUnit: WithFacingSpriteBody:
Image: badr
-Selectable: -Selectable:
-GainsExperience: -GainsExperience:
Tooltip: Tooltip:
@@ -70,6 +71,9 @@ BADR.Bomber:
-EjectOnDeath: -EjectOnDeath:
-GpsDot: -GpsDot:
RejectsOrders: RejectsOrders:
AutoSelectionSize:
RenderSprites:
Image: badr
MIG: MIG:
Inherits: ^Plane Inherits: ^Plane
@@ -105,8 +109,7 @@ MIG:
TargetWhenIdle: false TargetWhenIdle: false
TargetWhenDamaged: false TargetWhenDamaged: false
EnableStances: false EnableStances: false
RenderUnit: WithFacingSpriteBody:
CameraPitch: 99
AmmoPool: AmmoPool:
Ammo: 8 Ammo: 8
ReturnOnIdle: ReturnOnIdle:
@@ -121,6 +124,9 @@ MIG:
SmokeTrailWhenDamaged: SmokeTrailWhenDamaged:
Offset: -853,0,171 Offset: -853,0,171
Interval: 2 Interval: 2
AutoSelectionSize:
RenderSprites:
CameraPitch: 99
YAK: YAK:
Inherits: ^Plane Inherits: ^Plane
@@ -161,8 +167,7 @@ YAK:
TargetWhenIdle: false TargetWhenIdle: false
TargetWhenDamaged: false TargetWhenDamaged: false
EnableStances: false EnableStances: false
RenderUnit: WithFacingSpriteBody:
CameraPitch: 99
AmmoPool: AmmoPool:
Ammo: 18 Ammo: 18
PipCount: 6 PipCount: 6
@@ -178,6 +183,9 @@ YAK:
SmokeTrailWhenDamaged: SmokeTrailWhenDamaged:
Offset: -853,0,0 Offset: -853,0,0
Interval: 2 Interval: 2
AutoSelectionSize:
RenderSprites:
CameraPitch: 99
TRAN: TRAN:
Inherits: ^Helicopter Inherits: ^Helicopter
@@ -205,7 +213,7 @@ TRAN:
Speed: 112 Speed: 112
LandableTerrainTypes: Clear,Rough,Road,Ore,Beach LandableTerrainTypes: Clear,Rough,Road,Ore,Beach
AltitudeVelocity: 0c100 AltitudeVelocity: 0c100
RenderUnit: WithFacingSpriteBody:
WithRotor@PRIMARY: WithRotor@PRIMARY:
Offset: -597,0,341 Offset: -597,0,341
Sequence: rotor2 Sequence: rotor2
@@ -218,6 +226,8 @@ TRAN:
PipCount: 8 PipCount: 8
LeavesHusk: LeavesHusk:
HuskActor: TRAN.Husk HuskActor: TRAN.Husk
AutoSelectionSize:
RenderSprites:
HELI: HELI:
Inherits: ^Helicopter Inherits: ^Helicopter
@@ -254,7 +264,7 @@ HELI:
Speed: 149 Speed: 149
AutoTarget: AutoTarget:
InitialStance: HoldFire InitialStance: HoldFire
RenderUnit: WithFacingSpriteBody:
WithRotor: WithRotor:
Offset: 0,0,85 Offset: 0,0,85
AmmoPool: AmmoPool:
@@ -265,6 +275,8 @@ HELI:
HuskActor: HELI.Husk HuskActor: HELI.Husk
SmokeTrailWhenDamaged: SmokeTrailWhenDamaged:
Offset: -427,0,0 Offset: -427,0,0
AutoSelectionSize:
RenderSprites:
HIND: HIND:
Inherits: ^Helicopter Inherits: ^Helicopter
@@ -304,7 +316,7 @@ HIND:
Speed: 112 Speed: 112
AutoTarget: AutoTarget:
InitialStance: HoldFire InitialStance: HoldFire
RenderUnit: WithFacingSpriteBody:
WithRotor: WithRotor:
AmmoPool: AmmoPool:
Ammo: 24 Ammo: 24
@@ -317,6 +329,8 @@ HIND:
HuskActor: HIND.Husk HuskActor: HIND.Husk
SmokeTrailWhenDamaged: SmokeTrailWhenDamaged:
Offset: -427,0,0 Offset: -427,0,0
AutoSelectionSize:
RenderSprites:
U2: U2:
Inherits: ^Plane Inherits: ^Plane
@@ -329,7 +343,7 @@ U2:
Speed: 373 Speed: 373
Repulsable: False Repulsable: False
MaximumPitch: 56 MaximumPitch: 56
RenderUnit: WithFacingSpriteBody:
AttackBomber: AttackBomber:
-Selectable: -Selectable:
-TargetableAircraft: -TargetableAircraft:
@@ -345,4 +359,6 @@ U2:
Interval: 2 Interval: 2
RejectsOrders: RejectsOrders:
-AnnounceOnSeen: -AnnounceOnSeen:
AutoSelectionSize:
RenderSprites:

View File

@@ -536,7 +536,7 @@
^Husk: ^Husk:
Husk: Husk:
AllowedTerrain: Clear, Rough, Road, Ore, Gems, Beach AllowedTerrain: Clear, Rough, Road, Ore, Gems, Beach
RenderUnit: WithFacingSpriteBody:
Health: Health:
HP: 280 HP: 280
Armor: Armor:
@@ -562,6 +562,8 @@
ForceHealthPercentage: 25 ForceHealthPercentage: 25
DisabledOverlay: DisabledOverlay:
ScriptTriggers: ScriptTriggers:
AutoSelectionSize:
RenderSprites:
^HelicopterHusk: ^HelicopterHusk:
Inherits: ^Husk Inherits: ^Husk

View File

@@ -2,91 +2,106 @@
Inherits: ^Husk Inherits: ^Husk
Tooltip: Tooltip:
Name: Husk (Light Tank) Name: Husk (Light Tank)
RenderUnit: WithFacingSpriteBody:
Image: 1tnk.destroyed
ThrowsParticle@turret: ThrowsParticle@turret:
Anim: turret Anim: turret
TransformOnCapture: TransformOnCapture:
IntoActor: 1tnk IntoActor: 1tnk
AutoSelectionSize:
RenderSprites:
Image: 1tnk.destroyed
2TNK.Husk: 2TNK.Husk:
Inherits: ^Husk Inherits: ^Husk
Tooltip: Tooltip:
Name: Husk (Medium Tank) Name: Husk (Medium Tank)
RenderUnit: WithFacingSpriteBody:
Image: 2tnk.destroyed
ThrowsParticle@turret: ThrowsParticle@turret:
Anim: turret Anim: turret
TransformOnCapture: TransformOnCapture:
IntoActor: 2tnk IntoActor: 2tnk
AutoSelectionSize:
RenderSprites:
Image: 2tnk.destroyed
3TNK.Husk: 3TNK.Husk:
Inherits: ^Husk Inherits: ^Husk
Tooltip: Tooltip:
Name: Husk (Heavy Tank) Name: Husk (Heavy Tank)
RenderUnit: WithFacingSpriteBody:
Image: 3tnk.destroyed
ThrowsParticle@turret: ThrowsParticle@turret:
Anim: turret Anim: turret
TransformOnCapture: TransformOnCapture:
IntoActor: 3tnk IntoActor: 3tnk
AutoSelectionSize:
RenderSprites:
Image: 3tnk.destroyed
4TNK.Husk: 4TNK.Husk:
Inherits: ^Husk Inherits: ^Husk
Tooltip: Tooltip:
Name: Husk (Mammoth Tank) Name: Husk (Mammoth Tank)
RenderUnit: WithFacingSpriteBody:
Image: 4tnk.destroyed
ThrowsParticle@turret: ThrowsParticle@turret:
Anim: turret Anim: turret
TransformOnCapture: TransformOnCapture:
IntoActor: 4tnk IntoActor: 4tnk
AutoSelectionSize:
RenderSprites:
Image: 4tnk.destroyed
HARV.FullHusk: HARV.FullHusk:
Inherits: ^Husk Inherits: ^Husk
Tooltip: Tooltip:
Name: Husk (Harvester) Name: Husk (Harvester)
RenderUnit: WithFacingSpriteBody:
Image: hhusk
TransformOnCapture: TransformOnCapture:
IntoActor: harv IntoActor: harv
AutoSelectionSize:
RenderSprites:
Image: hhusk
HARV.EmptyHusk: HARV.EmptyHusk:
Inherits: ^Husk Inherits: ^Husk
Tooltip: Tooltip:
Name: Husk (Harvester) Name: Husk (Harvester)
RenderUnit: WithFacingSpriteBody:
Image: hhusk2
TransformOnCapture: TransformOnCapture:
IntoActor: harv IntoActor: harv
AutoSelectionSize:
RenderSprites:
Image: hhusk2
MCV.Husk: MCV.Husk:
Inherits: ^Husk Inherits: ^Husk
Tooltip: Tooltip:
Name: Husk (MCV) Name: Husk (MCV)
RenderUnit: WithFacingSpriteBody:
Image: mcvhusk
TransformOnCapture: TransformOnCapture:
IntoActor: mcv IntoActor: mcv
AutoSelectionSize:
RenderSprites:
Image: mcvhusk
MGG.Husk: MGG.Husk:
Inherits: ^Husk Inherits: ^Husk
Tooltip: Tooltip:
Name: Husk (Mobile Gap Generator) Name: Husk (Mobile Gap Generator)
RenderUnit: WithFacingSpriteBody:
Image: mgg.destroyed
ThrowsParticle@spinner: ThrowsParticle@spinner:
Anim: spinner-idle Anim: spinner-idle
Offset: -299,0,171 Offset: -299,0,171
TransformOnCapture: TransformOnCapture:
IntoActor: mgg IntoActor: mgg
AutoSelectionSize:
RenderSprites:
Image: mgg.destroyed
TRAN.Husk: TRAN.Husk:
Inherits: ^HelicopterHusk Inherits: ^HelicopterHusk
Tooltip: Tooltip:
Name: Transport Helicopter Name: Transport Helicopter
RenderUnit: WithFacingSpriteBody:
Image: tran
WithShadow: WithShadow:
Helicopter: Helicopter:
ROT: 4 ROT: 4
@@ -97,33 +112,39 @@ TRAN.Husk:
Offset: 597,0,213 Offset: 597,0,213
RevealsShroud: RevealsShroud:
Range: 12c0 Range: 12c0
AutoSelectionSize:
RenderSprites:
Image: tran
TRAN.Husk1: TRAN.Husk1:
Inherits: ^Husk Inherits: ^Husk
Tooltip: Tooltip:
Name: Husk (Transport Helicopter) Name: Husk (Transport Helicopter)
RenderUnit: WithFacingSpriteBody:
Image: tran1husk
-TargetableUnit: -TargetableUnit:
-Capturable: -Capturable:
-TransformOnCapture: -TransformOnCapture:
AutoSelectionSize:
RenderSprites:
Image: tran1husk
TRAN.Husk2: TRAN.Husk2:
Inherits: ^Husk Inherits: ^Husk
Tooltip: Tooltip:
Name: Husk (Transport Helicopter) Name: Husk (Transport Helicopter)
RenderUnit: WithFacingSpriteBody:
Image: tran2husk
-TargetableUnit: -TargetableUnit:
-Capturable: -Capturable:
-TransformOnCapture: -TransformOnCapture:
AutoSelectionSize:
RenderSprites:
Image: tran2husk
BADR.Husk: BADR.Husk:
Inherits: ^PlaneHusk Inherits: ^PlaneHusk
Tooltip: Tooltip:
Name: Badger Name: Badger
RenderUnit: WithFacingSpriteBody:
Image: badr
WithShadow: WithShadow:
Plane: Plane:
ROT: 5 ROT: 5
@@ -136,14 +157,15 @@ BADR.Husk:
Offset: -432,-560,0 Offset: -432,-560,0
Interval: 2 Interval: 2
MinDamage: Undamaged MinDamage: Undamaged
AutoSelectionSize:
RenderSprites:
Image: badr
MIG.Husk: MIG.Husk:
Inherits: ^PlaneHusk Inherits: ^PlaneHusk
Tooltip: Tooltip:
Name: Mig Attack Plane Name: Mig Attack Plane
RenderUnit: WithFacingSpriteBody:
CameraPitch: 99
Image: mig
WithShadow: WithShadow:
Contrail@1: Contrail@1:
Offset: -598,-683,0 Offset: -598,-683,0
@@ -158,14 +180,16 @@ MIG.Husk:
MinDamage: Undamaged MinDamage: Undamaged
RevealsShroud: RevealsShroud:
Range: 12c0 Range: 12c0
AutoSelectionSize:
RenderSprites:
CameraPitch: 99
Image: mig
YAK.Husk: YAK.Husk:
Inherits: ^PlaneHusk Inherits: ^PlaneHusk
Tooltip: Tooltip:
Name: Yak Attack Plane Name: Yak Attack Plane
RenderUnit: WithFacingSpriteBody:
CameraPitch: 99
Image: yak
WithShadow: WithShadow:
Contrail: Contrail:
Offset: -853,0,0 Offset: -853,0,0
@@ -178,13 +202,16 @@ YAK.Husk:
MinDamage: Undamaged MinDamage: Undamaged
RevealsShroud: RevealsShroud:
Range: 10c0 Range: 10c0
AutoSelectionSize:
RenderSprites:
CameraPitch: 99
Image: yak
HELI.Husk: HELI.Husk:
Inherits: ^HelicopterHusk Inherits: ^HelicopterHusk
Tooltip: Tooltip:
Name: Longbow Name: Longbow
RenderUnit: WithFacingSpriteBody:
Image: heli
WithShadow: WithShadow:
Helicopter: Helicopter:
ROT: 4 ROT: 4
@@ -196,13 +223,15 @@ HELI.Husk:
MinDamage: Undamaged MinDamage: Undamaged
RevealsShroud: RevealsShroud:
Range: 12c0 Range: 12c0
AutoSelectionSize:
RenderSprites:
Image: heli
HIND.Husk: HIND.Husk:
Inherits: ^HelicopterHusk Inherits: ^HelicopterHusk
Tooltip: Tooltip:
Name: Hind Name: Hind
RenderUnit: WithFacingSpriteBody:
Image: hind
WithShadow: WithShadow:
Helicopter: Helicopter:
ROT: 4 ROT: 4
@@ -213,11 +242,13 @@ HIND.Husk:
MinDamage: Undamaged MinDamage: Undamaged
RevealsShroud: RevealsShroud:
Range: 10c0 Range: 10c0
AutoSelectionSize:
RenderSprites:
Image: hind
U2.Husk: U2.Husk:
Inherits: ^PlaneHusk Inherits: ^PlaneHusk
RenderUnit: WithFacingSpriteBody:
Image: u2
WithShadow: WithShadow:
Plane: Plane:
ROT: 7 ROT: 7
@@ -230,4 +261,7 @@ U2.Husk:
Offset: -1c43,0,0 Offset: -1c43,0,0
Interval: 2 Interval: 2
MinDamage: Undamaged MinDamage: Undamaged
AutoSelectionSize:
RenderSprites:
Image: u2

View File

@@ -23,7 +23,7 @@ SS:
TargetableSubmarine: TargetableSubmarine:
TargetTypes: Ground, Water, Repair TargetTypes: Ground, Water, Repair
CloakedTargetTypes: Underwater, Repair CloakedTargetTypes: Underwater, Repair
RenderUnit: WithFacingSpriteBody:
Cloak: Cloak:
CloakTypes: Underwater CloakTypes: Underwater
InitialDelay: 0 InitialDelay: 0
@@ -49,6 +49,8 @@ SS:
Weapon: UnitExplodeSubmarine Weapon: UnitExplodeSubmarine
EmptyWeapon: UnitExplodeSubmarine EmptyWeapon: UnitExplodeSubmarine
-MustBeDestroyed: -MustBeDestroyed:
AutoSelectionSize:
RenderSprites:
MSUB: MSUB:
Inherits: ^Ship Inherits: ^Ship
@@ -71,7 +73,7 @@ MSUB:
Speed: 42 Speed: 42
RevealsShroud: RevealsShroud:
Range: 6c0 Range: 6c0
RenderUnit: WithFacingSpriteBody:
-TargetableUnit: -TargetableUnit:
TargetableSubmarine: TargetableSubmarine:
TargetTypes: Ground, Water, Repair TargetTypes: Ground, Water, Repair
@@ -101,6 +103,8 @@ MSUB:
Weapon: UnitExplodeSubmarine Weapon: UnitExplodeSubmarine
EmptyWeapon: UnitExplodeSubmarine EmptyWeapon: UnitExplodeSubmarine
-MustBeDestroyed: -MustBeDestroyed:
AutoSelectionSize:
RenderSprites:
DD: DD:
Inherits: ^Ship Inherits: ^Ship
@@ -141,7 +145,7 @@ DD:
AttackTurreted: AttackTurreted:
Selectable: Selectable:
Bounds: 38,38 Bounds: 38,38
RenderUnit: WithFacingSpriteBody:
WithTurret: WithTurret:
AutoTarget: AutoTarget:
Chronoshiftable: Chronoshiftable:
@@ -153,6 +157,8 @@ DD:
Explodes: Explodes:
Weapon: UnitExplodeShip Weapon: UnitExplodeShip
EmptyWeapon: UnitExplodeShip EmptyWeapon: UnitExplodeShip
AutoSelectionSize:
RenderSprites:
CA: CA:
Inherits: ^Ship Inherits: ^Ship
@@ -202,7 +208,7 @@ CA:
WithMuzzleFlash: WithMuzzleFlash:
Selectable: Selectable:
Bounds: 44,44 Bounds: 44,44
RenderUnit: WithFacingSpriteBody:
WithTurret@PRIMARY: WithTurret@PRIMARY:
Turret: primary Turret: primary
WithTurret@SECONDARY: WithTurret@SECONDARY:
@@ -213,6 +219,8 @@ CA:
Explodes: Explodes:
Weapon: UnitExplodeShip Weapon: UnitExplodeShip
EmptyWeapon: UnitExplodeShip EmptyWeapon: UnitExplodeShip
AutoSelectionSize:
RenderSprites:
LST: LST:
Inherits: ^Ship Inherits: ^Ship
@@ -282,7 +290,7 @@ PT:
WithMuzzleFlash: WithMuzzleFlash:
Selectable: Selectable:
Bounds: 32,32 Bounds: 32,32
RenderUnit: WithFacingSpriteBody:
WithTurret: WithTurret:
AutoTarget: AutoTarget:
Chronoshiftable: Chronoshiftable:
@@ -294,4 +302,6 @@ PT:
Explodes: Explodes:
Weapon: UnitExplodeShip Weapon: UnitExplodeShip
EmptyWeapon: UnitExplodeShip EmptyWeapon: UnitExplodeShip
AutoSelectionSize:
RenderSprites:

View File

@@ -20,11 +20,17 @@ V2RL:
Armament: Armament:
Weapon: SCUD Weapon: SCUD
AttackFrontal: AttackFrontal:
RenderUnitReload: RenderSprites:
AutoTarget: AutoTarget:
Explodes: Explodes:
Weapon: SCUD Weapon: SCUD
EmptyWeapon: UnitExplodeSmall EmptyWeapon: UnitExplodeSmall
AutoSelectionSize:
WithFacingSpriteBody:
Sequence: idle
WithAttackAnimation:
AimSequence: aim
ReloadPrefix: empty-
1TNK: 1TNK:
Inherits: ^Tank Inherits: ^Tank
@@ -56,7 +62,7 @@ V2RL:
MuzzleSequence: muzzle MuzzleSequence: muzzle
AttackTurreted: AttackTurreted:
WithMuzzleFlash: WithMuzzleFlash:
RenderUnit: WithFacingSpriteBody:
WithTurret: WithTurret:
AutoTarget: AutoTarget:
Explodes: Explodes:
@@ -64,6 +70,8 @@ V2RL:
EmptyWeapon: UnitExplodeSmall EmptyWeapon: UnitExplodeSmall
LeavesHusk: LeavesHusk:
HuskActor: 1TNK.Husk HuskActor: 1TNK.Husk
AutoSelectionSize:
RenderSprites:
2TNK: 2TNK:
Inherits: ^Tank Inherits: ^Tank
@@ -95,7 +103,7 @@ V2RL:
MuzzleSequence: muzzle MuzzleSequence: muzzle
AttackTurreted: AttackTurreted:
WithMuzzleFlash: WithMuzzleFlash:
RenderUnit: WithFacingSpriteBody:
WithTurret: WithTurret:
AutoTarget: AutoTarget:
Explodes: Explodes:
@@ -105,6 +113,8 @@ V2RL:
HuskActor: 2TNK.Husk HuskActor: 2TNK.Husk
Selectable: Selectable:
Bounds: 30,30 Bounds: 30,30
AutoSelectionSize:
RenderSprites:
3TNK: 3TNK:
Inherits: ^Tank Inherits: ^Tank
@@ -136,7 +146,7 @@ V2RL:
MuzzleSequence: muzzle MuzzleSequence: muzzle
AttackTurreted: AttackTurreted:
WithMuzzleFlash: WithMuzzleFlash:
RenderUnit: WithFacingSpriteBody:
WithTurret: WithTurret:
AutoTarget: AutoTarget:
Explodes: Explodes:
@@ -146,6 +156,8 @@ V2RL:
HuskActor: 3TNK.Husk HuskActor: 3TNK.Husk
Selectable: Selectable:
Bounds: 30,30 Bounds: 30,30
AutoSelectionSize:
RenderSprites:
4TNK: 4TNK:
Inherits: ^Tank Inherits: ^Tank
@@ -186,7 +198,7 @@ V2RL:
MuzzleSequence: muzzle MuzzleSequence: muzzle
AttackTurreted: AttackTurreted:
WithMuzzleFlash: WithMuzzleFlash:
RenderUnit: WithFacingSpriteBody:
WithTurret: WithTurret:
AutoTarget: AutoTarget:
Explodes: Explodes:
@@ -201,6 +213,8 @@ V2RL:
DamageCooldown: 150 DamageCooldown: 150
Selectable: Selectable:
Bounds: 44,38,0,-4 Bounds: 44,38,0,-4
AutoSelectionSize:
RenderSprites:
ARTY: ARTY:
Inherits: ^Tank Inherits: ^Tank
@@ -228,11 +242,13 @@ ARTY:
MuzzleSequence: muzzle MuzzleSequence: muzzle
AttackFrontal: AttackFrontal:
WithMuzzleFlash: WithMuzzleFlash:
RenderUnit: WithFacingSpriteBody:
Explodes: Explodes:
Weapon: UnitExplode Weapon: UnitExplode
Chance: 75 Chance: 75
AutoTarget: AutoTarget:
AutoSelectionSize:
RenderSprites:
HARV: HARV:
Inherits: ^Vehicle Inherits: ^Vehicle
@@ -309,7 +325,7 @@ MCV:
Facing: 96 Facing: 96
TransformSounds: placbldg.aud, build5.aud TransformSounds: placbldg.aud, build5.aud
NoTransformNotification: BuildingCannotPlaceAudio NoTransformNotification: BuildingCannotPlaceAudio
RenderUnit: WithFacingSpriteBody:
MustBeDestroyed: MustBeDestroyed:
RequiredForShortGame: true RequiredForShortGame: true
BaseBuilding: BaseBuilding:
@@ -318,6 +334,8 @@ MCV:
Explodes: Explodes:
Weapon: UnitExplodeSmall Weapon: UnitExplodeSmall
EmptyWeapon: UnitExplodeSmall EmptyWeapon: UnitExplodeSmall
AutoSelectionSize:
RenderSprites:
JEEP: JEEP:
Inherits: ^Vehicle Inherits: ^Vehicle
@@ -347,7 +365,7 @@ JEEP:
MuzzleSequence: muzzle MuzzleSequence: muzzle
AttackTurreted: AttackTurreted:
WithMuzzleFlash: WithMuzzleFlash:
RenderUnit: WithFacingSpriteBody:
WithTurret: WithTurret:
AutoTarget: AutoTarget:
Cargo: Cargo:
@@ -357,6 +375,8 @@ JEEP:
Explodes: Explodes:
Weapon: UnitExplodeSmall Weapon: UnitExplodeSmall
EmptyWeapon: UnitExplodeSmall EmptyWeapon: UnitExplodeSmall
AutoSelectionSize:
RenderSprites:
APC: APC:
Inherits: ^Tank Inherits: ^Tank
@@ -383,7 +403,7 @@ APC:
LocalOffset: 0,0,171 LocalOffset: 0,0,171
MuzzleSequence: muzzle MuzzleSequence: muzzle
AttackFrontal: AttackFrontal:
RenderUnit: WithFacingSpriteBody:
WithMuzzleFlash: WithMuzzleFlash:
AutoTarget: AutoTarget:
Cargo: Cargo:
@@ -393,6 +413,8 @@ APC:
Explodes: Explodes:
Weapon: UnitExplodeSmall Weapon: UnitExplodeSmall
EmptyWeapon: UnitExplodeSmall EmptyWeapon: UnitExplodeSmall
AutoSelectionSize:
RenderSprites:
MNLY.AP: MNLY.AP:
Inherits: ^Tank Inherits: ^Tank
@@ -414,8 +436,7 @@ MNLY.AP:
Crushes: wall, mine, crate, infantry Crushes: wall, mine, crate, infantry
RevealsShroud: RevealsShroud:
Range: 5c0 Range: 5c0
RenderUnit: WithFacingSpriteBody:
Image: MNLY
Minelayer: Minelayer:
Mine: MINP Mine: MINP
MineImmune: MineImmune:
@@ -428,6 +449,9 @@ MNLY.AP:
RenderDetectionCircle: RenderDetectionCircle:
Explodes: Explodes:
Weapon: APMine Weapon: APMine
AutoSelectionSize:
RenderSprites:
Image: MNLY
MNLY.AT: MNLY.AT:
Inherits: ^Tank Inherits: ^Tank
@@ -449,8 +473,7 @@ MNLY.AT:
Crushes: wall, mine, crate, infantry Crushes: wall, mine, crate, infantry
RevealsShroud: RevealsShroud:
Range: 5c0 Range: 5c0
RenderUnit: WithFacingSpriteBody:
Image: MNLY
Minelayer: Minelayer:
Mine: MINV Mine: MINV
MineImmune: MineImmune:
@@ -463,6 +486,9 @@ MNLY.AT:
RenderDetectionCircle: RenderDetectionCircle:
Explodes: Explodes:
Weapon: ATMine Weapon: ATMine
AutoSelectionSize:
RenderSprites:
Image: MNLY
TRUK: TRUK:
Inherits: ^Vehicle Inherits: ^Vehicle
@@ -483,7 +509,7 @@ TRUK:
Speed: 128 Speed: 128
RevealsShroud: RevealsShroud:
Range: 3c0 Range: 3c0
RenderUnit: WithFacingSpriteBody:
SupplyTruck: SupplyTruck:
Payload: 500 Payload: 500
Explodes: Explodes:
@@ -491,6 +517,8 @@ TRUK:
EmptyWeapon: UnitExplodeSmall EmptyWeapon: UnitExplodeSmall
LeavesHusk: LeavesHusk:
HuskActor: moneycrate HuskActor: moneycrate
AutoSelectionSize:
RenderSprites:
MGG: MGG:
Inherits: ^Vehicle Inherits: ^Vehicle
@@ -509,7 +537,7 @@ MGG:
Type: Heavy Type: Heavy
Mobile: Mobile:
Speed: 85 Speed: 85
RenderUnit: WithFacingSpriteBody:
WithIdleOverlay@SPINNER: WithIdleOverlay@SPINNER:
Offset: -299,0,171 Offset: -299,0,171
Sequence: spinner Sequence: spinner
@@ -523,6 +551,8 @@ MGG:
EmptyWeapon: UnitExplodeSmall EmptyWeapon: UnitExplodeSmall
LeavesHusk: LeavesHusk:
HuskActor: MGG.Husk HuskActor: MGG.Husk
AutoSelectionSize:
RenderSprites:
MRJ: MRJ:
Inherits: ^Vehicle Inherits: ^Vehicle
@@ -543,7 +573,7 @@ MRJ:
Speed: 85 Speed: 85
RevealsShroud: RevealsShroud:
Range: 6c0 Range: 6c0
RenderUnit: WithFacingSpriteBody:
WithIdleOverlay@SPINNER: WithIdleOverlay@SPINNER:
Sequence: spinner Sequence: spinner
Offset: -256,0,256 Offset: -256,0,256
@@ -558,6 +588,8 @@ MRJ:
RenderJammerCircle: RenderJammerCircle:
DetectCloaked: DetectCloaked:
Range: 6 Range: 6
AutoSelectionSize:
RenderSprites:
TTNK: TTNK:
Inherits: ^Tank Inherits: ^Tank
@@ -583,7 +615,7 @@ TTNK:
Weapon: TTankZap Weapon: TTankZap
LocalOffset: 0,0,213 LocalOffset: 0,0,213
AttackFrontal: AttackFrontal:
RenderUnit: WithFacingSpriteBody:
WithIdleOverlay@SPINNER: WithIdleOverlay@SPINNER:
Sequence: spinner Sequence: spinner
Selectable: Selectable:
@@ -592,6 +624,8 @@ TTNK:
Explodes: Explodes:
Weapon: UnitExplodeSmall Weapon: UnitExplodeSmall
EmptyWeapon: UnitExplodeSmall EmptyWeapon: UnitExplodeSmall
AutoSelectionSize:
RenderSprites:
FTRK: FTRK:
Inherits: ^Vehicle Inherits: ^Vehicle
@@ -623,7 +657,7 @@ FTRK:
MuzzleSequence: muzzle MuzzleSequence: muzzle
AttackTurreted: AttackTurreted:
WithMuzzleFlash: WithMuzzleFlash:
RenderUnit: WithFacingSpriteBody:
WithTurret: WithTurret:
AutoTarget: AutoTarget:
Explodes: Explodes:
@@ -631,6 +665,8 @@ FTRK:
EmptyWeapon: UnitExplodeSmall EmptyWeapon: UnitExplodeSmall
Selectable: Selectable:
Bounds: 28,28,0,0 Bounds: 28,28,0,0
AutoSelectionSize:
RenderSprites:
DTRK: DTRK:
Inherits: ^Vehicle Inherits: ^Vehicle
@@ -651,7 +687,7 @@ DTRK:
Speed: 85 Speed: 85
RevealsShroud: RevealsShroud:
Range: 3c0 Range: 3c0
RenderUnit: WithFacingSpriteBody:
Explodes: Explodes:
Weapon: MiniNuke Weapon: MiniNuke
EmptyWeapon: MiniNuke EmptyWeapon: MiniNuke
@@ -662,6 +698,8 @@ DTRK:
UpgradeMinEnabledLevel: 1 UpgradeMinEnabledLevel: 1
Chronoshiftable: Chronoshiftable:
ExplodeInstead: yes ExplodeInstead: yes
AutoSelectionSize:
RenderSprites:
CTNK: CTNK:
Inherits: ^Vehicle Inherits: ^Vehicle
@@ -685,7 +723,7 @@ CTNK:
Crushes: wall, mine, crate, infantry Crushes: wall, mine, crate, infantry
RevealsShroud: RevealsShroud:
Range: 6c0 Range: 6c0
RenderUnit: WithFacingSpriteBody:
AutoTarget: AutoTarget:
Armament@PRIMARY: Armament@PRIMARY:
Weapon: APTusk Weapon: APTusk
@@ -700,6 +738,8 @@ CTNK:
Explodes: Explodes:
Weapon: UnitExplodeSmall Weapon: UnitExplodeSmall
EmptyWeapon: UnitExplodeSmall EmptyWeapon: UnitExplodeSmall
AutoSelectionSize:
RenderSprites:
QTNK: QTNK:
Inherits: ^Tank Inherits: ^Tank
@@ -723,13 +763,15 @@ QTNK:
Range: 6c0 Range: 6c0
Selectable: Selectable:
Bounds: 44,38,0,-4 Bounds: 44,38,0,-4
RenderUnit: WithFacingSpriteBody:
Explodes: Explodes:
Weapon: UnitExplodeSmall Weapon: UnitExplodeSmall
MadTank: MadTank:
-EjectOnDeath: -EjectOnDeath:
TargetableUnit: TargetableUnit:
TargetTypes: Ground, MADTank, Repair TargetTypes: Ground, MADTank, Repair
AutoSelectionSize:
RenderSprites:
STNK: STNK:
Inherits: ^Vehicle Inherits: ^Vehicle
@@ -753,7 +795,7 @@ STNK:
Crushes: wall, mine, crate, infantry Crushes: wall, mine, crate, infantry
RevealsShroud: RevealsShroud:
Range: 6c0 Range: 6c0
RenderUnit: WithFacingSpriteBody:
AutoTarget: AutoTarget:
InitialStance: ReturnFire InitialStance: ReturnFire
Armament: Armament:
@@ -778,4 +820,6 @@ STNK:
Weapon: UnitExplodeSmall Weapon: UnitExplodeSmall
EmptyWeapon: UnitExplodeSmall EmptyWeapon: UnitExplodeSmall
-MustBeDestroyed: -MustBeDestroyed:
AutoSelectionSize:
RenderSprites:

View File

@@ -233,6 +233,8 @@ VISSML:
WanderMoveRadius: 2 WanderMoveRadius: 2
MinMoveDelayInTicks: 30 MinMoveDelayInTicks: 30
MaxMoveDelayInTicks: 60 MaxMoveDelayInTicks: 60
WithFacingSpriteBody:
AutoSelectionSize:
VISLRG: VISLRG:
Inherits: ^Viceroid Inherits: ^Viceroid
@@ -250,6 +252,8 @@ VISLRG:
MaxMoveDelayInTicks: 45 MaxMoveDelayInTicks: 45
Mobile: Mobile:
Crushes: crate, infantry Crushes: crate, infantry
WithFacingSpriteBody:
AutoSelectionSize:
CIV1: CIV1:
Inherits: ^CivilianInfantry Inherits: ^CivilianInfantry

View File

@@ -105,9 +105,14 @@ SMECH:
Armament: Armament:
Weapon: AssaultCannon Weapon: AssaultCannon
RenderSprites: RenderSprites:
WithInfantryBody:
Voiced: Voiced:
VoiceSet: Mech VoiceSet: Mech
WithFacingSpriteBody:
Sequence: stand
WithAttackAnimation:
AttackSequence: shoot
WithMoveAnimation:
MoveSequence: run
Selectable: Selectable:
Bounds: 20, 32, 0, -8 Bounds: 20, 32, 0, -8

View File

@@ -129,8 +129,11 @@ GGHUNT:
Type: Light Type: Light
RevealsShroud: RevealsShroud:
Range: 7c0 Range: 7c0
RenderUnit: WithFacingSpriteBody:
DemoTruck: DemoTruck:
Explodes: Explodes:
Weapon: SuicideBomb Weapon: SuicideBomb
EmptyWeapon: SuicideBomb EmptyWeapon: SuicideBomb
AutoSelectionSize:
RenderSprites: