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="Widgets\Logic\CncMainMenuLogic.cs" />
<Compile Include="Widgets\Logic\ProductionTabsLogic.cs" />
<Compile Include="Traits\RenderUnitFlying.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\OpenRA.Game\OpenRA.Game.csproj">

View File

@@ -364,6 +364,7 @@
<Compile Include="Traits\ProximityCaptor.cs" />
<Compile Include="Traits\ProximityCapturable.cs" />
<Compile Include="Traits\RadarColorFromTerrain.cs" />
<Compile Include="Traits\Render\AutoSelectionSize.cs" />
<Compile Include="Traits\Render\Hovers.cs" />
<Compile Include="Traits\Render\LeavesTrails.cs" />
<Compile Include="Traits\Render\RenderBuilding.cs" />
@@ -386,6 +387,8 @@
<Compile Include="Traits\Render\WithBarrel.cs" />
<Compile Include="Traits\Render\WithBuildingExplosion.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\WithMakeAnimation.cs" />
<Compile Include="Traits\Render\WithChargeOverlay.cs" />
@@ -405,6 +408,7 @@
<Compile Include="Traits\Render\WithSmoke.cs" />
<Compile Include="Traits\Render\WithSpriteBody.cs" />
<Compile Include="Traits\Render\WithTurret.cs" />
<Compile Include="Traits\Render\WithFacingSpriteBody.cs" />
<Compile Include="Traits\Render\WithBuildingPlacedOverlay.cs" />
<Compile Include="Traits\Render\WithProductionDoorOverlay.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
{
[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 readonly string Sequence = "idle";

View File

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

View File

@@ -13,7 +13,8 @@ using OpenRA.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 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 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.Play(info.Sequence);
rs.Add(new AnimationWithOffset(anim,

View File

@@ -8,47 +8,47 @@
*/
#endregion
using OpenRA.Mods.Common.Traits;
using System.Linq;
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 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 WithFacingSpriteBody wfsb;
WPos cachedPosition;
public RenderUnitFlying(ActorInitializer init, RenderUnitFlyingInfo info)
: base(init, info)
public WithMoveAnimation(ActorInitializer init, WithMoveAnimationInfo info)
{
this.info = info;
movement = init.Self.Trait<IMove>();
wfsb = init.Self.Trait<WithFacingSpriteBody>();
cachedPosition = init.Self.CenterPosition;
}
public override void Tick(Actor self)
public void Tick(Actor self)
{
base.Tick(self);
var oldCachedPosition = cachedPosition;
cachedPosition = self.CenterPosition;
// 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;
if (isMoving ^ (DefaultAnimation.CurrentSequence.Name != info.MoveSequence))
if (isMoving ^ (wfsb.DefaultAnimation.CurrentSequence.Name != info.MoveSequence))
return;
DefaultAnimation.ReplaceAnim(isMoving ? info.MoveSequence : info.Sequence);
wfsb.DefaultAnimation.ReplaceAnim(isMoving ? info.MoveSequence : wfsb.Info.Sequence);
}
}
}

View File

@@ -9,13 +9,16 @@
#endregion
using System;
using System.Collections.Generic;
using OpenRA.Graphics;
using OpenRA.Mods.Common.Graphics;
using OpenRA.Traits;
namespace OpenRA.Mods.Common.Traits
{
[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.")]
public readonly string StartSequence = null;
@@ -23,30 +26,54 @@ namespace OpenRA.Mods.Common.Traits
[Desc("Animation to play when the actor is 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); }
public virtual IEnumerable<IActorPreview> RenderPreviewSprites(ActorPreviewInitializer init, RenderSpritesInfo rs, string image, int facings, PaletteReference p)
{
var anim = new Animation(init.World, image);
anim.PlayRepeating(RenderSprites.NormalizeSequence(anim, init.GetDamageState(), Sequence));
yield return new SpriteActorPreview(anim, WVec.Zero, 0, p, rs.Scale);
}
class WithSpriteBody : UpgradableTrait<WithSpriteBodyInfo>, ISpriteBody
public virtual int QuantizedBodyFacings(ActorInfo ai, SequenceProvider sequenceProvider, string race)
{
readonly Animation body;
readonly WithSpriteBodyInfo info;
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)
{
this.info = info;
var rs = init.Self.Trait<RenderSprites>();
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));
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 void PlayCustomAnimation(Actor self, string newAnimation, Action after)
public string NormalizeSequence(Actor self, string sequence)
{
body.PlayThen(newAnimation, () =>
return RenderSprites.NormalizeSequence(DefaultAnimation, self.GetDamageState(), sequence);
}
public void PlayCustomAnimation(Actor self, string name, Action after = null)
{
body.Play(info.Sequence);
DefaultAnimation.PlayThen(NormalizeSequence(self, name), () =>
{
DefaultAnimation.Play(NormalizeSequence(self, Info.Sequence));
if (after != null)
after();
});
@@ -54,14 +81,15 @@ namespace OpenRA.Mods.Common.Traits
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)
after();
});

View File

@@ -13,7 +13,7 @@ using OpenRA.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;
@@ -57,7 +57,7 @@ namespace OpenRA.Mods.Common.Traits
public ThrowsParticle(ActorInitializer init, ThrowsParticleInfo info)
{
var self = init.Self;
var rs = self.Trait<RenderSimple>();
var rs = self.Trait<RenderSprites>();
var body = self.Trait<IBodyOrientation>();
// 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);
}
}

View File

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

View File

@@ -22,7 +22,7 @@ using OpenRA.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 int ThumpInterval = 8;
@@ -52,7 +52,7 @@ namespace OpenRA.Mods.RA.Traits
{
readonly Actor self;
readonly MadTankInfo info;
readonly RenderUnit renderUnit;
readonly WithFacingSpriteBody wfsb;
readonly ScreenShaker screenShaker;
bool deployed;
int tick;
@@ -61,7 +61,7 @@ namespace OpenRA.Mods.RA.Traits
{
this.self = self;
this.info = info;
renderUnit = self.Trait<RenderUnit>();
wfsb = self.Trait<WithFacingSpriteBody>();
screenShaker = self.World.WorldActor.Trait<ScreenShaker>();
}
@@ -147,7 +147,7 @@ namespace OpenRA.Mods.RA.Traits
self.World.AddFrameEndTask(w => EjectDriver());
if (info.ThumpSequence != null)
renderUnit.PlayCustomAnimationRepeating(self, info.ThumpSequence);
wfsb.PlayCustomAnimationRepeating(self, info.ThumpSequence);
deployed = true;
self.QueueActivity(new Wait(info.ChargeDelay, false));
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
RevealsShroud:
Range: 10c0
RenderUnit:
WithFacingSpriteBody:
WithRotor@PRIMARY:
Offset: -597,0,171
Sequence: rotor2
@@ -40,6 +40,8 @@ TRAN:
Explodes:
Weapon: HeliExplode
EmptyWeapon: HeliExplode
AutoSelectionSize:
RenderSprites:
HELI:
Inherits: ^Helicopter
@@ -81,7 +83,7 @@ HELI:
SelfReloads: true
ReloadCount: 10
SelfReloadTicks: 200
RenderUnit:
WithFacingSpriteBody:
WithRotor:
Offset: 0,0,85
WithMuzzleFlash:
@@ -91,6 +93,8 @@ HELI:
Explodes:
Weapon: HeliExplode
EmptyWeapon: HeliExplode
AutoSelectionSize:
RenderSprites:
ORCA:
Inherits: ^Helicopter
@@ -129,13 +133,17 @@ ORCA:
SelfReloads: true
ReloadCount: 2
SelfReloadTicks: 100
RenderUnitFlying:
RenderSprites:
WithFacingSpriteBody:
LeavesHusk:
HuskActor: ORCA.Husk
AutoTarget:
Explodes:
Weapon: HeliExplode
EmptyWeapon: HeliExplode
AutoSelectionSize:
WithMoveAnimation:
MoveSequence: move
C17:
ParaDrop:
@@ -154,7 +162,7 @@ C17:
HP: 25
Armor:
Type: Heavy
RenderUnit:
WithFacingSpriteBody:
Cargo:
MaxWeight: 10
PipCount: 10
@@ -176,6 +184,8 @@ C17:
Contrail@4:
Offset: -261,650,0
TrailLength: 15
AutoSelectionSize:
RenderSprites:
A10:
Inherits: ^Plane
@@ -192,7 +202,7 @@ A10:
HP: 150
Armor:
Type: Heavy
RenderUnit:
WithFacingSpriteBody:
AttackBomber:
Armaments: gun, bombs
Guns: gun
@@ -217,6 +227,8 @@ A10:
Contrail@2:
Offset: -640,-171,0
TrailLength: 15
AutoSelectionSize:
RenderSprites:
TRAN.Husk:
Inherits: ^HelicopterHusk
@@ -231,7 +243,9 @@ TRAN.Husk:
Offset: -597,0,171
WithRotor@SECONDARY:
Offset: 597,0,85
RenderUnit:
WithFacingSpriteBody:
AutoSelectionSize:
RenderSprites:
Image: tran
HELI.Husk:
@@ -245,7 +259,9 @@ HELI.Husk:
Range: 10c0
WithRotor:
Offset: 0,0,85
RenderUnit:
WithFacingSpriteBody:
AutoSelectionSize:
RenderSprites:
Image: heli
ORCA.Husk:
@@ -257,6 +273,8 @@ ORCA.Husk:
Speed: 186
RevealsShroud:
Range: 10c0
RenderUnit:
WithFacingSpriteBody:
AutoSelectionSize:
RenderSprites:
Image: orca

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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