Decompose RenderInfantry into WithInfantryBody and RenderSprites.
This commit is contained in:
@@ -373,7 +373,6 @@
|
|||||||
<Compile Include="Traits\Render\RenderEditorOnly.cs" />
|
<Compile Include="Traits\Render\RenderEditorOnly.cs" />
|
||||||
<Compile Include="Traits\Render\RenderFlare.cs" />
|
<Compile Include="Traits\Render\RenderFlare.cs" />
|
||||||
<Compile Include="Traits\Render\RenderHarvester.cs" />
|
<Compile Include="Traits\Render\RenderHarvester.cs" />
|
||||||
<Compile Include="Traits\Render\RenderInfantry.cs" />
|
|
||||||
<Compile Include="Traits\Render\RenderNameTag.cs" />
|
<Compile Include="Traits\Render\RenderNameTag.cs" />
|
||||||
<Compile Include="Traits\Render\RenderSimple.cs" />
|
<Compile Include="Traits\Render\RenderSimple.cs" />
|
||||||
<Compile Include="Traits\Render\RenderSprites.cs" />
|
<Compile Include="Traits\Render\RenderSprites.cs" />
|
||||||
@@ -616,6 +615,7 @@
|
|||||||
<Compile Include="Widgets\TooltipContainerWidget.cs" />
|
<Compile Include="Widgets\TooltipContainerWidget.cs" />
|
||||||
<Compile Include="Widgets\ViewportControllerWidget.cs" />
|
<Compile Include="Widgets\ViewportControllerWidget.cs" />
|
||||||
<Compile Include="Widgets\VqaPlayerWidget.cs" />
|
<Compile Include="Widgets\VqaPlayerWidget.cs" />
|
||||||
|
<Compile Include="Traits\Render\WithInfantryBody.cs" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
|
|||||||
@@ -148,7 +148,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
return cachedImage = info.GetImage(self.Info, self.World.Map.SequenceProvider, race);
|
return cachedImage = info.GetImage(self.Info, self.World.Map.SequenceProvider, race);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void UpdatePalette()
|
public void UpdatePalette()
|
||||||
{
|
{
|
||||||
foreach (var anim in anims.Values)
|
foreach (var anim in anims.Values)
|
||||||
anim.OwnerChanged();
|
anim.OwnerChanged();
|
||||||
|
|||||||
@@ -16,18 +16,18 @@ using OpenRA.Traits;
|
|||||||
|
|
||||||
namespace OpenRA.Mods.Common.Traits
|
namespace OpenRA.Mods.Common.Traits
|
||||||
{
|
{
|
||||||
public class RenderInfantryInfo : RenderSimpleInfo, Requires<IMoveInfo>
|
public class WithInfantryBodyInfo : ITraitInfo, IQuantizeBodyOrientationInfo, IRenderActorPreviewSpritesInfo, Requires<IMoveInfo>, Requires<RenderSpritesInfo>
|
||||||
{
|
{
|
||||||
public readonly int MinIdleWaitTicks = 30;
|
public readonly int MinIdleWaitTicks = 30;
|
||||||
public readonly int MaxIdleWaitTicks = 110;
|
public readonly int MaxIdleWaitTicks = 110;
|
||||||
public readonly string MoveAnimation = "run";
|
public readonly string MoveSequence = "run";
|
||||||
public readonly string AttackAnimation = "shoot";
|
public readonly string AttackSequence = "shoot";
|
||||||
public readonly string[] IdleAnimations = { };
|
public readonly string[] IdleSequences = { };
|
||||||
public readonly string[] StandAnimations = { "stand" };
|
public readonly string[] StandSequences = { "stand" };
|
||||||
|
|
||||||
public override object Create(ActorInitializer init) { return new RenderInfantry(init, this); }
|
public virtual object Create(ActorInitializer init) { return new WithInfantryBody(init, this); }
|
||||||
|
|
||||||
public override IEnumerable<IActorPreview> RenderPreviewSprites(ActorPreviewInitializer init, RenderSpritesInfo rs, string image, int facings, PaletteReference p)
|
public IEnumerable<IActorPreview> RenderPreviewSprites(ActorPreviewInitializer init, RenderSpritesInfo rs, string image, int facings, PaletteReference p)
|
||||||
{
|
{
|
||||||
var facing = 0;
|
var facing = 0;
|
||||||
var ifacing = init.Actor.Traits.GetOrDefault<IFacingInfo>();
|
var ifacing = init.Actor.Traits.GetOrDefault<IFacingInfo>();
|
||||||
@@ -35,20 +35,23 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
facing = init.Contains<FacingInit>() ? init.Get<FacingInit, int>() : ifacing.GetInitialFacing();
|
facing = init.Contains<FacingInit>() ? init.Get<FacingInit, int>() : ifacing.GetInitialFacing();
|
||||||
|
|
||||||
var anim = new Animation(init.World, image, () => facing);
|
var anim = new Animation(init.World, image, () => facing);
|
||||||
anim.PlayRepeating(StandAnimations.First());
|
anim.PlayRepeating(StandSequences.First());
|
||||||
yield return new SpriteActorPreview(anim, WVec.Zero, 0, p, rs.Scale);
|
yield return new SpriteActorPreview(anim, WVec.Zero, 0, p, rs.Scale);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override int QuantizedBodyFacings(ActorInfo ai, SequenceProvider sequenceProvider, string race)
|
public int QuantizedBodyFacings(ActorInfo ai, SequenceProvider sequenceProvider, string race)
|
||||||
{
|
{
|
||||||
return sequenceProvider.GetSequence(GetImage(ai, sequenceProvider, race), StandAnimations.First()).Facings;
|
var rsi = ai.Traits.Get<RenderSpritesInfo>();
|
||||||
|
return sequenceProvider.GetSequence(rsi.GetImage(ai, sequenceProvider, race), StandSequences.First()).Facings;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public class RenderInfantry : RenderSimple, INotifyAttack, INotifyIdle
|
public class WithInfantryBody : ITick, INotifyAttack, INotifyIdle
|
||||||
{
|
{
|
||||||
readonly RenderInfantryInfo info;
|
readonly WithInfantryBodyInfo info;
|
||||||
readonly IMove move;
|
readonly IMove move;
|
||||||
|
protected readonly Animation DefaultAnimation;
|
||||||
|
|
||||||
bool dirty = false;
|
bool dirty = false;
|
||||||
string idleSequence;
|
string idleSequence;
|
||||||
int idleDelay;
|
int idleDelay;
|
||||||
@@ -58,11 +61,16 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
bool IsModifyingSequence { get { return rsm != null && rsm.IsModifyingSequence; } }
|
bool IsModifyingSequence { get { return rsm != null && rsm.IsModifyingSequence; } }
|
||||||
bool wasModifying;
|
bool wasModifying;
|
||||||
|
|
||||||
public RenderInfantry(ActorInitializer init, RenderInfantryInfo info)
|
public WithInfantryBody(ActorInitializer init, WithInfantryBodyInfo info)
|
||||||
: base(init, info, MakeFacingFunc(init.Self))
|
|
||||||
{
|
{
|
||||||
this.info = info;
|
this.info = info;
|
||||||
DefaultAnimation.PlayFetchIndex(NormalizeInfantrySequence(init.Self, info.StandAnimations.Random(Game.CosmeticRandom)), () => 0);
|
var self = init.Self;
|
||||||
|
var rs = self.Trait<RenderSprites>();
|
||||||
|
|
||||||
|
DefaultAnimation = new Animation(init.World, rs.GetImage(self), RenderSprites.MakeFacingFunc(self));
|
||||||
|
rs.Add("", DefaultAnimation);
|
||||||
|
|
||||||
|
DefaultAnimation.PlayFetchIndex(NormalizeInfantrySequence(init.Self, info.StandSequences.Random(Game.CosmeticRandom)), () => 0);
|
||||||
state = AnimationState.Waiting;
|
state = AnimationState.Waiting;
|
||||||
move = init.Self.Trait<IMove>();
|
move = init.Self.Trait<IMove>();
|
||||||
rsm = init.Self.TraitOrDefault<IRenderInfantrySequenceModifier>();
|
rsm = init.Self.TraitOrDefault<IRenderInfantrySequenceModifier>();
|
||||||
@@ -86,8 +94,8 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
public void Attacking(Actor self, Target target)
|
public void Attacking(Actor self, Target target)
|
||||||
{
|
{
|
||||||
state = AnimationState.Attacking;
|
state = AnimationState.Attacking;
|
||||||
if (DefaultAnimation.HasSequence(NormalizeInfantrySequence(self, info.AttackAnimation)))
|
if (DefaultAnimation.HasSequence(NormalizeInfantrySequence(self, info.AttackSequence)))
|
||||||
DefaultAnimation.PlayThen(NormalizeInfantrySequence(self, info.AttackAnimation), () => state = AnimationState.Idle);
|
DefaultAnimation.PlayThen(NormalizeInfantrySequence(self, info.AttackSequence), () => state = AnimationState.Idle);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Attacking(Actor self, Target target, Armament a, Barrel barrel)
|
public void Attacking(Actor self, Target target, Armament a, Barrel barrel)
|
||||||
@@ -95,10 +103,8 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
Attacking(self, target);
|
Attacking(self, target);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void Tick(Actor self)
|
public virtual void Tick(Actor self)
|
||||||
{
|
{
|
||||||
base.Tick(self);
|
|
||||||
|
|
||||||
if (rsm != null)
|
if (rsm != null)
|
||||||
{
|
{
|
||||||
if (wasModifying != rsm.IsModifyingSequence)
|
if (wasModifying != rsm.IsModifyingSequence)
|
||||||
@@ -110,12 +116,12 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
if ((state == AnimationState.Moving || dirty) && !move.IsMoving)
|
if ((state == AnimationState.Moving || dirty) && !move.IsMoving)
|
||||||
{
|
{
|
||||||
state = AnimationState.Waiting;
|
state = AnimationState.Waiting;
|
||||||
DefaultAnimation.PlayFetchIndex(NormalizeInfantrySequence(self, info.StandAnimations.Random(Game.CosmeticRandom)), () => 0);
|
DefaultAnimation.PlayFetchIndex(NormalizeInfantrySequence(self, info.StandSequences.Random(Game.CosmeticRandom)), () => 0);
|
||||||
}
|
}
|
||||||
else if ((state != AnimationState.Moving || dirty) && move.IsMoving)
|
else if ((state != AnimationState.Moving || dirty) && move.IsMoving)
|
||||||
{
|
{
|
||||||
state = AnimationState.Moving;
|
state = AnimationState.Moving;
|
||||||
DefaultAnimation.PlayRepeating(NormalizeInfantrySequence(self, info.MoveAnimation));
|
DefaultAnimation.PlayRepeating(NormalizeInfantrySequence(self, info.MoveSequence));
|
||||||
}
|
}
|
||||||
|
|
||||||
dirty = false;
|
dirty = false;
|
||||||
@@ -125,12 +131,12 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
{
|
{
|
||||||
if (state != AnimationState.Idle && state != AnimationState.IdleAnimating)
|
if (state != AnimationState.Idle && state != AnimationState.IdleAnimating)
|
||||||
{
|
{
|
||||||
DefaultAnimation.PlayFetchIndex(NormalizeInfantrySequence(self, info.StandAnimations.Random(Game.CosmeticRandom)), () => 0);
|
DefaultAnimation.PlayFetchIndex(NormalizeInfantrySequence(self, info.StandSequences.Random(Game.CosmeticRandom)), () => 0);
|
||||||
state = AnimationState.Idle;
|
state = AnimationState.Idle;
|
||||||
|
|
||||||
if (info.IdleAnimations.Length > 0)
|
if (info.IdleSequences.Length > 0)
|
||||||
{
|
{
|
||||||
idleSequence = info.IdleAnimations.Random(self.World.SharedRandom);
|
idleSequence = info.IdleSequences.Random(self.World.SharedRandom);
|
||||||
idleDelay = self.World.SharedRandom.Next(info.MinIdleWaitTicks, info.MaxIdleWaitTicks);
|
idleDelay = self.World.SharedRandom.Next(info.MinIdleWaitTicks, info.MaxIdleWaitTicks);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -143,14 +149,14 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
state = AnimationState.IdleAnimating;
|
state = AnimationState.IdleAnimating;
|
||||||
DefaultAnimation.PlayThen(idleSequence, () =>
|
DefaultAnimation.PlayThen(idleSequence, () =>
|
||||||
{
|
{
|
||||||
DefaultAnimation.PlayRepeating(NormalizeInfantrySequence(self, info.StandAnimations.Random(Game.CosmeticRandom)));
|
DefaultAnimation.PlayRepeating(NormalizeInfantrySequence(self, info.StandSequences.Random(Game.CosmeticRandom)));
|
||||||
state = AnimationState.Waiting;
|
state = AnimationState.Waiting;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
DefaultAnimation.PlayRepeating(NormalizeInfantrySequence(self, info.StandAnimations.Random(Game.CosmeticRandom)));
|
DefaultAnimation.PlayRepeating(NormalizeInfantrySequence(self, info.StandSequences.Random(Game.CosmeticRandom)));
|
||||||
state = AnimationState.Waiting;
|
state = AnimationState.Waiting;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -719,6 +719,61 @@ namespace OpenRA.Mods.Common.UtilityCommands
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (engineVersion < 20150321)
|
||||||
|
{
|
||||||
|
// Note: 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[] { "MinIdleWaitTicks", "MaxIdleWaitTicks", "MoveAnimation", "AttackAnimation", "IdleAnimations", "StandAnimations" };
|
||||||
|
|
||||||
|
var ri = node.Value.Nodes.FirstOrDefault(n => n.Key.StartsWith("RenderInfantry"));
|
||||||
|
if (ri != null)
|
||||||
|
{
|
||||||
|
ri.Key = "WithInfantryBody";
|
||||||
|
|
||||||
|
var rsNodes = ri.Value.Nodes.Where(n => !childKeys.Contains(n.Key)).ToList();
|
||||||
|
if (rsNodes.Any())
|
||||||
|
node.Value.Nodes.Add(new MiniYamlNode("RenderSprites", new MiniYaml("", rsNodes)));
|
||||||
|
|
||||||
|
ri.Value.Nodes.RemoveAll(n => rsNodes.Contains(n));
|
||||||
|
}
|
||||||
|
|
||||||
|
var rri = node.Value.Nodes.FirstOrDefault(n => n.Key.StartsWith("-RenderInfantry"));
|
||||||
|
if (rri != null)
|
||||||
|
rri.Key = "-WithInfantryBody";
|
||||||
|
|
||||||
|
var rdi = node.Value.Nodes.FirstOrDefault(n => n.Key.StartsWith("RenderDisguise"));
|
||||||
|
if (rdi != null)
|
||||||
|
{
|
||||||
|
rdi.Key = "WithDisguisingInfantryBody";
|
||||||
|
|
||||||
|
var rsNodes = rdi.Value.Nodes.Where(n => !childKeys.Contains(n.Key)).ToList();
|
||||||
|
if (rsNodes.Any())
|
||||||
|
node.Value.Nodes.Add(new MiniYamlNode("RenderSprites", new MiniYaml("", rsNodes)));
|
||||||
|
|
||||||
|
rdi.Value.Nodes.RemoveAll(n => rsNodes.Contains(n));
|
||||||
|
}
|
||||||
|
|
||||||
|
var rrdi = node.Value.Nodes.FirstOrDefault(n => n.Key.StartsWith("-RenderDisguise"));
|
||||||
|
if (rrdi != null)
|
||||||
|
rrdi.Key = "-WithDisguisingInfantryBody";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (depth == 2 && node.Key == "MoveAnimation")
|
||||||
|
node.Key = "MoveSequence";
|
||||||
|
|
||||||
|
if (depth == 2 && node.Key == "AttackAnimation")
|
||||||
|
node.Key = "AttackSequence";
|
||||||
|
|
||||||
|
if (depth == 2 && node.Key == "IdleAnimations")
|
||||||
|
node.Key = "IdleSequences";
|
||||||
|
|
||||||
|
if (depth == 2 && node.Key == "StandAnimations")
|
||||||
|
node.Key = "StandSequences";
|
||||||
|
}
|
||||||
|
|
||||||
UpgradeActorRules(engineVersion, ref node.Value.Nodes, node, depth + 1);
|
UpgradeActorRules(engineVersion, ref node.Value.Nodes, node, depth + 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -45,7 +45,8 @@ namespace OpenRA.Mods.RA.Activities
|
|||||||
to = self.World.Map.CenterOfSubCell(targetMobile.FromCell, targetMobile.FromSubCell);
|
to = self.World.Map.CenterOfSubCell(targetMobile.FromCell, targetMobile.FromSubCell);
|
||||||
length = Math.Max((to - from).Length / speed.Range, 1);
|
length = Math.Max((to - from).Length / speed.Range, 1);
|
||||||
|
|
||||||
self.Trait<RenderInfantry>().Attacking(self, Target.FromActor(target));
|
// HACK: why isn't this using the interface?
|
||||||
|
self.Trait<WithInfantryBody>().Attacking(self, Target.FromActor(target));
|
||||||
|
|
||||||
if (weapon.Report != null && weapon.Report.Any())
|
if (weapon.Report != null && weapon.Report.Any())
|
||||||
Sound.Play(weapon.Report.Random(self.World.SharedRandom), self.CenterPosition);
|
Sound.Play(weapon.Report.Random(self.World.SharedRandom), self.CenterPosition);
|
||||||
|
|||||||
@@ -94,7 +94,6 @@
|
|||||||
<Compile Include="Traits\PaletteEffects\ChronoshiftPaletteEffect.cs" />
|
<Compile Include="Traits\PaletteEffects\ChronoshiftPaletteEffect.cs" />
|
||||||
<Compile Include="Traits\PortableChrono.cs" />
|
<Compile Include="Traits\PortableChrono.cs" />
|
||||||
<Compile Include="Traits\Render\RenderJammerCircle.cs" />
|
<Compile Include="Traits\Render\RenderJammerCircle.cs" />
|
||||||
<Compile Include="Traits\Render\RenderDisguise.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\Render\RenderUnitReload.cs" />
|
||||||
@@ -106,6 +105,7 @@
|
|||||||
<Compile Include="Scripting\Properties\ChronosphereProperties.cs" />
|
<Compile Include="Scripting\Properties\ChronosphereProperties.cs" />
|
||||||
<Compile Include="Scripting\Properties\ParadropProperties.cs" />
|
<Compile Include="Scripting\Properties\ParadropProperties.cs" />
|
||||||
<Compile Include="Scripting\Properties\ParatroopersProperties.cs" />
|
<Compile Include="Scripting\Properties\ParatroopersProperties.cs" />
|
||||||
|
<Compile Include="Traits\Render\WithDisguisingInfantryBody.cs" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\OpenRA.Game\OpenRA.Game.csproj">
|
<ProjectReference Include="..\OpenRA.Game\OpenRA.Game.csproj">
|
||||||
|
|||||||
@@ -13,21 +13,23 @@ using OpenRA.Traits;
|
|||||||
|
|
||||||
namespace OpenRA.Mods.RA.Traits
|
namespace OpenRA.Mods.RA.Traits
|
||||||
{
|
{
|
||||||
class RenderDisguiseInfo : RenderInfantryInfo, Requires<DisguiseInfo>
|
class WithDisguisingInfantryBodyInfo : WithInfantryBodyInfo, Requires<DisguiseInfo>
|
||||||
{
|
{
|
||||||
public override object Create(ActorInitializer init) { return new RenderDisguise(init, this); }
|
public override object Create(ActorInitializer init) { return new WithDisguisingInfantryBody(init, this); }
|
||||||
}
|
}
|
||||||
|
|
||||||
class RenderDisguise : RenderInfantry
|
class WithDisguisingInfantryBody : WithInfantryBody
|
||||||
{
|
{
|
||||||
RenderDisguiseInfo info;
|
readonly WithDisguisingInfantryBodyInfo info;
|
||||||
|
readonly Disguise disguise;
|
||||||
|
readonly RenderSprites rs;
|
||||||
string intendedSprite;
|
string intendedSprite;
|
||||||
Disguise disguise;
|
|
||||||
|
|
||||||
public RenderDisguise(ActorInitializer init, RenderDisguiseInfo info)
|
public WithDisguisingInfantryBody(ActorInitializer init, WithDisguisingInfantryBodyInfo info)
|
||||||
: base(init, info)
|
: base(init, info)
|
||||||
{
|
{
|
||||||
this.info = info;
|
this.info = info;
|
||||||
|
rs = init.Self.Trait<RenderSprites>();
|
||||||
disguise = init.Self.Trait<Disguise>();
|
disguise = init.Self.Trait<Disguise>();
|
||||||
intendedSprite = disguise.AsSprite;
|
intendedSprite = disguise.AsSprite;
|
||||||
}
|
}
|
||||||
@@ -37,8 +39,8 @@ namespace OpenRA.Mods.RA.Traits
|
|||||||
if (disguise.AsSprite != intendedSprite)
|
if (disguise.AsSprite != intendedSprite)
|
||||||
{
|
{
|
||||||
intendedSprite = disguise.AsSprite;
|
intendedSprite = disguise.AsSprite;
|
||||||
DefaultAnimation.ChangeImage(intendedSprite ?? GetImage(self), info.StandAnimations.Random(Game.CosmeticRandom));
|
DefaultAnimation.ChangeImage(intendedSprite ?? rs.GetImage(self), info.StandSequences.Random(Game.CosmeticRandom));
|
||||||
UpdatePalette();
|
rs.UpdatePalette();
|
||||||
}
|
}
|
||||||
|
|
||||||
base.Tick(self);
|
base.Tick(self);
|
||||||
@@ -182,7 +182,8 @@
|
|||||||
TargetTypes: Ground, Infantry
|
TargetTypes: Ground, Infantry
|
||||||
TakeCover:
|
TakeCover:
|
||||||
SpeedModifier: 60
|
SpeedModifier: 60
|
||||||
RenderInfantry:
|
RenderSprites:
|
||||||
|
WithInfantryBody:
|
||||||
WithDeathAnimation:
|
WithDeathAnimation:
|
||||||
AttackMove:
|
AttackMove:
|
||||||
Passenger:
|
Passenger:
|
||||||
@@ -300,8 +301,7 @@
|
|||||||
TargetTypes: Ground, Infantry
|
TargetTypes: Ground, Infantry
|
||||||
HiddenUnderFog:
|
HiddenUnderFog:
|
||||||
GivesExperience:
|
GivesExperience:
|
||||||
RenderInfantry:
|
WithInfantryBody:
|
||||||
Palette: terrain
|
|
||||||
WithDeathAnimation:
|
WithDeathAnimation:
|
||||||
UseDeathTypeSuffix: false
|
UseDeathTypeSuffix: false
|
||||||
EditorAppearance:
|
EditorAppearance:
|
||||||
@@ -316,6 +316,8 @@
|
|||||||
Huntable:
|
Huntable:
|
||||||
ScriptTriggers:
|
ScriptTriggers:
|
||||||
DeathSounds:
|
DeathSounds:
|
||||||
|
RenderSprites:
|
||||||
|
Palette: terrain
|
||||||
|
|
||||||
^Plane:
|
^Plane:
|
||||||
AppearsOnRadar:
|
AppearsOnRadar:
|
||||||
|
|||||||
@@ -17,9 +17,9 @@ E1:
|
|||||||
Armament:
|
Armament:
|
||||||
Weapon: M16
|
Weapon: M16
|
||||||
AttackFrontal:
|
AttackFrontal:
|
||||||
RenderInfantry:
|
WithInfantryBody:
|
||||||
IdleAnimations: idle1,idle2,idle3,idle4
|
IdleSequences: idle1,idle2,idle3,idle4
|
||||||
StandAnimations: stand, stand2
|
StandSequences: stand, stand2
|
||||||
|
|
||||||
E2:
|
E2:
|
||||||
Inherits: ^Infantry
|
Inherits: ^Infantry
|
||||||
@@ -43,9 +43,9 @@ E2:
|
|||||||
LocalOffset: 0,0,427
|
LocalOffset: 0,0,427
|
||||||
FireDelay: 15
|
FireDelay: 15
|
||||||
AttackFrontal:
|
AttackFrontal:
|
||||||
RenderInfantry:
|
WithInfantryBody:
|
||||||
IdleAnimations: idle1,idle2
|
IdleSequences: idle1,idle2
|
||||||
StandAnimations: stand, stand2
|
StandSequences: stand, stand2
|
||||||
Explodes:
|
Explodes:
|
||||||
Weapon: GrenadierExplode
|
Weapon: GrenadierExplode
|
||||||
EmptyWeapon: GrenadierExplode
|
EmptyWeapon: GrenadierExplode
|
||||||
@@ -74,9 +74,9 @@ E3:
|
|||||||
LocalOffset: 256,43,341
|
LocalOffset: 256,43,341
|
||||||
FireDelay: 5
|
FireDelay: 5
|
||||||
AttackFrontal:
|
AttackFrontal:
|
||||||
RenderInfantry:
|
WithInfantryBody:
|
||||||
IdleAnimations: idle1,idle2
|
IdleSequences: idle1,idle2
|
||||||
StandAnimations: stand, stand2
|
StandSequences: stand, stand2
|
||||||
|
|
||||||
E4:
|
E4:
|
||||||
Inherits: ^Infantry
|
Inherits: ^Infantry
|
||||||
@@ -104,9 +104,9 @@ E4:
|
|||||||
AttackFrontal:
|
AttackFrontal:
|
||||||
WithMuzzleFlash:
|
WithMuzzleFlash:
|
||||||
SplitFacings: true
|
SplitFacings: true
|
||||||
RenderInfantry:
|
WithInfantryBody:
|
||||||
IdleAnimations: idle1,idle2
|
IdleSequences: idle1,idle2
|
||||||
StandAnimations: stand, stand2
|
StandSequences: stand, stand2
|
||||||
|
|
||||||
E5:
|
E5:
|
||||||
Inherits: ^Infantry
|
Inherits: ^Infantry
|
||||||
@@ -140,9 +140,9 @@ E5:
|
|||||||
WithMuzzleFlash:
|
WithMuzzleFlash:
|
||||||
SplitFacings: true
|
SplitFacings: true
|
||||||
-PoisonedByTiberium:
|
-PoisonedByTiberium:
|
||||||
RenderInfantry:
|
WithInfantryBody:
|
||||||
IdleAnimations: idle1,idle2
|
IdleSequences: idle1,idle2
|
||||||
StandAnimations: stand, stand2
|
StandSequences: stand, stand2
|
||||||
|
|
||||||
E6:
|
E6:
|
||||||
Inherits: ^Infantry
|
Inherits: ^Infantry
|
||||||
@@ -167,9 +167,9 @@ E6:
|
|||||||
Captures:
|
Captures:
|
||||||
CaptureTypes: building, husk
|
CaptureTypes: building, husk
|
||||||
-AutoTarget:
|
-AutoTarget:
|
||||||
RenderInfantry:
|
WithInfantryBody:
|
||||||
IdleAnimations: idle1,idle2
|
IdleSequences: idle1,idle2
|
||||||
StandAnimations: stand, stand2
|
StandSequences: stand, stand2
|
||||||
-GainsExperience:
|
-GainsExperience:
|
||||||
|
|
||||||
RMBO:
|
RMBO:
|
||||||
@@ -201,9 +201,9 @@ RMBO:
|
|||||||
Armament:
|
Armament:
|
||||||
Weapon: Sniper
|
Weapon: Sniper
|
||||||
AttackFrontal:
|
AttackFrontal:
|
||||||
RenderInfantry:
|
WithInfantryBody:
|
||||||
IdleAnimations: idle1,idle2,idle3
|
IdleSequences: idle1,idle2,idle3
|
||||||
StandAnimations: stand, stand2
|
StandSequences: stand, stand2
|
||||||
AnnounceOnBuild:
|
AnnounceOnBuild:
|
||||||
AnnounceOnKill:
|
AnnounceOnKill:
|
||||||
|
|
||||||
|
|||||||
@@ -193,7 +193,8 @@
|
|||||||
Voice: InfantryVoice
|
Voice: InfantryVoice
|
||||||
TargetableUnit:
|
TargetableUnit:
|
||||||
TargetTypes: Ground
|
TargetTypes: Ground
|
||||||
RenderInfantry:
|
RenderSprites:
|
||||||
|
WithInfantryBody:
|
||||||
TakeCover:
|
TakeCover:
|
||||||
WithDeathAnimation:
|
WithDeathAnimation:
|
||||||
AutoTarget:
|
AutoTarget:
|
||||||
|
|||||||
@@ -99,8 +99,8 @@ medic:
|
|||||||
AttackMedic:
|
AttackMedic:
|
||||||
Cursor: ability
|
Cursor: ability
|
||||||
OutsideRangeCursor: ability
|
OutsideRangeCursor: ability
|
||||||
RenderInfantry:
|
WithInfantryBody:
|
||||||
AttackAnimation: heal
|
AttackSequence: heal
|
||||||
Passenger:
|
Passenger:
|
||||||
PipType: Blue
|
PipType: Blue
|
||||||
-AutoTarget:
|
-AutoTarget:
|
||||||
@@ -166,8 +166,8 @@ grenadier:
|
|||||||
FireDelay: 15
|
FireDelay: 15
|
||||||
AttackFrontal:
|
AttackFrontal:
|
||||||
TakeCover:
|
TakeCover:
|
||||||
RenderInfantry:
|
WithInfantryBody:
|
||||||
IdleAnimations: idle
|
IdleSequences: idle
|
||||||
Explodes:
|
Explodes:
|
||||||
Weapon: UnitExplodeSmall
|
Weapon: UnitExplodeSmall
|
||||||
Chance: 100
|
Chance: 100
|
||||||
@@ -228,3 +228,4 @@ saboteur:
|
|||||||
-AutoTarget:
|
-AutoTarget:
|
||||||
AttractsWorms:
|
AttractsWorms:
|
||||||
Intensity: 120
|
Intensity: 120
|
||||||
|
|
||||||
|
|||||||
@@ -1381,14 +1381,14 @@ Rules:
|
|||||||
-ExternalCaptures:
|
-ExternalCaptures:
|
||||||
Captures:
|
Captures:
|
||||||
CaptureTypes: building
|
CaptureTypes: building
|
||||||
RenderInfantry:
|
|
||||||
Image: E6
|
|
||||||
Cloak@JAIL:
|
Cloak@JAIL:
|
||||||
UpgradeTypes: jail
|
UpgradeTypes: jail
|
||||||
UpgradeMinEnabledLevel: 1
|
UpgradeMinEnabledLevel: 1
|
||||||
InitialDelay: 0
|
InitialDelay: 0
|
||||||
CloakDelay: 0
|
CloakDelay: 0
|
||||||
Palette:
|
Palette:
|
||||||
|
RenderSprites:
|
||||||
|
Image: E6
|
||||||
MEDI:
|
MEDI:
|
||||||
Cloak@JAIL:
|
Cloak@JAIL:
|
||||||
UpgradeTypes: jail
|
UpgradeTypes: jail
|
||||||
@@ -1398,11 +1398,11 @@ Rules:
|
|||||||
Palette:
|
Palette:
|
||||||
E7.noautotarget:
|
E7.noautotarget:
|
||||||
Inherits: E7
|
Inherits: E7
|
||||||
RenderInfantry:
|
|
||||||
Image: E7
|
|
||||||
AutoTarget:
|
AutoTarget:
|
||||||
EnableStances: false
|
EnableStances: false
|
||||||
-AttackMove:
|
-AttackMove:
|
||||||
|
RenderSprites:
|
||||||
|
Image: E7
|
||||||
PRISON:
|
PRISON:
|
||||||
Immobile:
|
Immobile:
|
||||||
OccupiesSpace: false
|
OccupiesSpace: false
|
||||||
@@ -1430,7 +1430,7 @@ Rules:
|
|||||||
Range: 8c0
|
Range: 8c0
|
||||||
AutoTarget:
|
AutoTarget:
|
||||||
ScanRadius: 7
|
ScanRadius: 7
|
||||||
RenderInfantry:
|
RenderSprites:
|
||||||
Image: E1
|
Image: E1
|
||||||
E2.Autotarget:
|
E2.Autotarget:
|
||||||
Inherits: E2
|
Inherits: E2
|
||||||
@@ -1440,7 +1440,7 @@ Rules:
|
|||||||
Range: 8c0
|
Range: 8c0
|
||||||
AutoTarget:
|
AutoTarget:
|
||||||
ScanRadius: 7
|
ScanRadius: 7
|
||||||
RenderInfantry:
|
RenderSprites:
|
||||||
Image: E2
|
Image: E2
|
||||||
DOG:
|
DOG:
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
|
|||||||
@@ -1276,14 +1276,15 @@ Rules:
|
|||||||
-ExternalCaptures:
|
-ExternalCaptures:
|
||||||
Captures:
|
Captures:
|
||||||
CaptureTypes: building
|
CaptureTypes: building
|
||||||
RenderInfantry:
|
WithInfantryBody:
|
||||||
Image: E6
|
|
||||||
Cloak@JAIL:
|
Cloak@JAIL:
|
||||||
UpgradeTypes: jail
|
UpgradeTypes: jail
|
||||||
UpgradeMinEnabledLevel: 1
|
UpgradeMinEnabledLevel: 1
|
||||||
InitialDelay: 0
|
InitialDelay: 0
|
||||||
CloakDelay: 0
|
CloakDelay: 0
|
||||||
Palette:
|
Palette:
|
||||||
|
RenderSprites:
|
||||||
|
Image: E6
|
||||||
MEDI:
|
MEDI:
|
||||||
Cloak@JAIL:
|
Cloak@JAIL:
|
||||||
UpgradeTypes: jail
|
UpgradeTypes: jail
|
||||||
@@ -1293,11 +1294,11 @@ Rules:
|
|||||||
Palette:
|
Palette:
|
||||||
E7.noautotarget:
|
E7.noautotarget:
|
||||||
Inherits: E7
|
Inherits: E7
|
||||||
RenderInfantry:
|
|
||||||
Image: E7
|
|
||||||
AutoTarget:
|
AutoTarget:
|
||||||
EnableStances: false
|
EnableStances: false
|
||||||
-AttackMove:
|
-AttackMove:
|
||||||
|
RenderSprites:
|
||||||
|
Image: E7
|
||||||
PRISON:
|
PRISON:
|
||||||
Immobile:
|
Immobile:
|
||||||
OccupiesSpace: false
|
OccupiesSpace: false
|
||||||
@@ -1338,7 +1339,7 @@ Rules:
|
|||||||
Range: 8c0
|
Range: 8c0
|
||||||
AutoTarget:
|
AutoTarget:
|
||||||
ScanRadius: 7
|
ScanRadius: 7
|
||||||
RenderInfantry:
|
RenderSprites:
|
||||||
Image: E1
|
Image: E1
|
||||||
E2.Autotarget:
|
E2.Autotarget:
|
||||||
Inherits: E2
|
Inherits: E2
|
||||||
@@ -1348,7 +1349,7 @@ Rules:
|
|||||||
Range: 8c0
|
Range: 8c0
|
||||||
AutoTarget:
|
AutoTarget:
|
||||||
ScanRadius: 7
|
ScanRadius: 7
|
||||||
RenderInfantry:
|
RenderSprites:
|
||||||
Image: E2
|
Image: E2
|
||||||
DOG:
|
DOG:
|
||||||
Buildable:
|
Buildable:
|
||||||
|
|||||||
@@ -1687,11 +1687,11 @@ Rules:
|
|||||||
TargetTypes: Ground, C4, DetonateAttack, Structure, Mission Objectives
|
TargetTypes: Ground, C4, DetonateAttack, Structure, Mission Objectives
|
||||||
E7.noautotarget:
|
E7.noautotarget:
|
||||||
Inherits: E7
|
Inherits: E7
|
||||||
RenderInfantry:
|
|
||||||
Image: E7
|
|
||||||
AutoTarget:
|
AutoTarget:
|
||||||
EnableStances: false
|
EnableStances: false
|
||||||
-AttackMove:
|
-AttackMove:
|
||||||
|
RenderSprites:
|
||||||
|
Image: E7
|
||||||
Colt:
|
Colt:
|
||||||
-Huntable:
|
-Huntable:
|
||||||
AutoTargetIgnore:
|
AutoTargetIgnore:
|
||||||
@@ -1727,7 +1727,7 @@ Rules:
|
|||||||
Range: 8c0
|
Range: 8c0
|
||||||
AutoTarget:
|
AutoTarget:
|
||||||
ScanRadius: 7
|
ScanRadius: 7
|
||||||
RenderInfantry:
|
RenderSprites:
|
||||||
Image: E1
|
Image: E1
|
||||||
E2.Autotarget:
|
E2.Autotarget:
|
||||||
Inherits: E2
|
Inherits: E2
|
||||||
@@ -1737,7 +1737,7 @@ Rules:
|
|||||||
Range: 8c0
|
Range: 8c0
|
||||||
AutoTarget:
|
AutoTarget:
|
||||||
ScanRadius: 7
|
ScanRadius: 7
|
||||||
RenderInfantry:
|
RenderSprites:
|
||||||
Image: E2
|
Image: E2
|
||||||
AFLD:
|
AFLD:
|
||||||
AirstrikePower@spyplane:
|
AirstrikePower@spyplane:
|
||||||
|
|||||||
@@ -617,12 +617,12 @@ Rules:
|
|||||||
Inherits: SNIPER
|
Inherits: SNIPER
|
||||||
Buildable:
|
Buildable:
|
||||||
Prerequisites: ~disabled
|
Prerequisites: ~disabled
|
||||||
RenderInfantry:
|
|
||||||
Image: SNIPER
|
|
||||||
MustBeDestroyed:
|
MustBeDestroyed:
|
||||||
InvulnerabilityUpgrade@UNKILLABLE:
|
InvulnerabilityUpgrade@UNKILLABLE:
|
||||||
UpgradeTypes: unkillable
|
UpgradeTypes: unkillable
|
||||||
UpgradeMinEnabledLevel: 1
|
UpgradeMinEnabledLevel: 1
|
||||||
|
RenderSprites:
|
||||||
|
Image: SNIPER
|
||||||
SPY:
|
SPY:
|
||||||
Inherits: ^Infantry
|
Inherits: ^Infantry
|
||||||
Buildable:
|
Buildable:
|
||||||
|
|||||||
@@ -2240,7 +2240,7 @@ Rules:
|
|||||||
Captures:
|
Captures:
|
||||||
CaptureTypes: building
|
CaptureTypes: building
|
||||||
Sabotage: False
|
Sabotage: False
|
||||||
RenderInfantry:
|
RenderSprites:
|
||||||
Image: e6
|
Image: e6
|
||||||
E6:
|
E6:
|
||||||
Buildable:
|
Buildable:
|
||||||
|
|||||||
@@ -2145,10 +2145,10 @@ Rules:
|
|||||||
Inherits: DELPHI
|
Inherits: DELPHI
|
||||||
Tooltip:
|
Tooltip:
|
||||||
Name: Dr. Demitri
|
Name: Dr. Demitri
|
||||||
RenderInfantry:
|
|
||||||
Image: DELPHI
|
|
||||||
Passenger:
|
Passenger:
|
||||||
CargoType: Demitri
|
CargoType: Demitri
|
||||||
|
RenderSprites:
|
||||||
|
Image: DELPHI
|
||||||
TRAN:
|
TRAN:
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 0c0
|
Range: 0c0
|
||||||
|
|||||||
@@ -13,43 +13,50 @@ C4:
|
|||||||
Inherits: ^CivInfantry
|
Inherits: ^CivInfantry
|
||||||
Selectable:
|
Selectable:
|
||||||
Voice: CivilianFemaleVoice
|
Voice: CivilianFemaleVoice
|
||||||
RenderInfantry:
|
WithInfantryBody:
|
||||||
|
RenderSprites:
|
||||||
Image: C2
|
Image: C2
|
||||||
|
|
||||||
C5:
|
C5:
|
||||||
Inherits: ^CivInfantry
|
Inherits: ^CivInfantry
|
||||||
RenderInfantry:
|
WithInfantryBody:
|
||||||
|
RenderSprites:
|
||||||
Image: C1
|
Image: C1
|
||||||
|
|
||||||
C6:
|
C6:
|
||||||
Inherits: ^CivInfantry
|
Inherits: ^CivInfantry
|
||||||
Selectable:
|
Selectable:
|
||||||
Voice: CivilianFemaleVoice
|
Voice: CivilianFemaleVoice
|
||||||
RenderInfantry:
|
WithInfantryBody:
|
||||||
|
RenderSprites:
|
||||||
Image: C2
|
Image: C2
|
||||||
|
|
||||||
C7:
|
C7:
|
||||||
Inherits: ^CivInfantry
|
Inherits: ^CivInfantry
|
||||||
RenderInfantry:
|
WithInfantryBody:
|
||||||
|
RenderSprites:
|
||||||
Image: C1
|
Image: C1
|
||||||
|
|
||||||
C8:
|
C8:
|
||||||
Inherits: ^CivInfantry
|
Inherits: ^CivInfantry
|
||||||
Selectable:
|
Selectable:
|
||||||
Voice: CivilianFemaleVoice
|
Voice: CivilianFemaleVoice
|
||||||
RenderInfantry:
|
WithInfantryBody:
|
||||||
|
RenderSprites:
|
||||||
Image: C2
|
Image: C2
|
||||||
|
|
||||||
C9:
|
C9:
|
||||||
Inherits: ^CivInfantry
|
Inherits: ^CivInfantry
|
||||||
RenderInfantry:
|
WithInfantryBody:
|
||||||
|
RenderSprites:
|
||||||
Image: C1
|
Image: C1
|
||||||
|
|
||||||
C10:
|
C10:
|
||||||
Inherits: ^CivInfantry
|
Inherits: ^CivInfantry
|
||||||
Selectable:
|
Selectable:
|
||||||
Voice: CivilianFemaleVoice
|
Voice: CivilianFemaleVoice
|
||||||
RenderInfantry:
|
WithInfantryBody:
|
||||||
|
RenderSprites:
|
||||||
Image: C2
|
Image: C2
|
||||||
|
|
||||||
FCOM:
|
FCOM:
|
||||||
|
|||||||
@@ -182,7 +182,8 @@
|
|||||||
Voice: GenericVoice
|
Voice: GenericVoice
|
||||||
TargetableUnit:
|
TargetableUnit:
|
||||||
TargetTypes: Ground, Infantry, Disguise
|
TargetTypes: Ground, Infantry, Disguise
|
||||||
RenderInfantry:
|
RenderSprites:
|
||||||
|
WithInfantryBody:
|
||||||
WithDeathAnimation:
|
WithDeathAnimation:
|
||||||
AutoTarget:
|
AutoTarget:
|
||||||
AttackMove:
|
AttackMove:
|
||||||
@@ -545,7 +546,7 @@
|
|||||||
AttackFrontal:
|
AttackFrontal:
|
||||||
ProximityCaptor:
|
ProximityCaptor:
|
||||||
Types: CivilianInfantry
|
Types: CivilianInfantry
|
||||||
RenderInfantry:
|
WithInfantryBody:
|
||||||
ScaredyCat:
|
ScaredyCat:
|
||||||
|
|
||||||
^CivBuilding:
|
^CivBuilding:
|
||||||
|
|||||||
@@ -22,8 +22,8 @@ DOG:
|
|||||||
Armament:
|
Armament:
|
||||||
Weapon: DogJaw
|
Weapon: DogJaw
|
||||||
AttackLeap:
|
AttackLeap:
|
||||||
RenderInfantry:
|
WithInfantryBody:
|
||||||
IdleAnimations: idle1,idle2
|
IdleSequences: idle1,idle2
|
||||||
IgnoresDisguise:
|
IgnoresDisguise:
|
||||||
DetectCloaked:
|
DetectCloaked:
|
||||||
Range: 5
|
Range: 5
|
||||||
@@ -54,9 +54,9 @@ E1:
|
|||||||
MuzzleSequence: garrison-muzzle
|
MuzzleSequence: garrison-muzzle
|
||||||
AttackFrontal:
|
AttackFrontal:
|
||||||
TakeCover:
|
TakeCover:
|
||||||
RenderInfantry:
|
WithInfantryBody:
|
||||||
IdleAnimations: idle1,idle2
|
IdleSequences: idle1,idle2
|
||||||
StandAnimations: stand,stand2
|
StandSequences: stand,stand2
|
||||||
|
|
||||||
E2:
|
E2:
|
||||||
Inherits: ^Infantry
|
Inherits: ^Infantry
|
||||||
@@ -86,9 +86,9 @@ E2:
|
|||||||
FireDelay: 15
|
FireDelay: 15
|
||||||
AttackFrontal:
|
AttackFrontal:
|
||||||
TakeCover:
|
TakeCover:
|
||||||
RenderInfantry:
|
WithInfantryBody:
|
||||||
IdleAnimations: idle1,idle2
|
IdleSequences: idle1,idle2
|
||||||
StandAnimations: stand,stand2
|
StandSequences: stand,stand2
|
||||||
Explodes:
|
Explodes:
|
||||||
Weapon: UnitExplodeSmall
|
Weapon: UnitExplodeSmall
|
||||||
Chance: 50
|
Chance: 50
|
||||||
@@ -122,9 +122,9 @@ E3:
|
|||||||
Weapon: Dragon
|
Weapon: Dragon
|
||||||
AttackFrontal:
|
AttackFrontal:
|
||||||
TakeCover:
|
TakeCover:
|
||||||
RenderInfantry:
|
WithInfantryBody:
|
||||||
IdleAnimations: idle1,idle2
|
IdleSequences: idle1,idle2
|
||||||
StandAnimations: stand,stand2
|
StandSequences: stand,stand2
|
||||||
|
|
||||||
E4:
|
E4:
|
||||||
Inherits: ^Infantry
|
Inherits: ^Infantry
|
||||||
@@ -153,9 +153,9 @@ E4:
|
|||||||
Weapon: Flamer
|
Weapon: Flamer
|
||||||
AttackFrontal:
|
AttackFrontal:
|
||||||
TakeCover:
|
TakeCover:
|
||||||
RenderInfantry:
|
WithInfantryBody:
|
||||||
IdleAnimations: idle1,idle2
|
IdleSequences: idle1,idle2
|
||||||
StandAnimations: stand,stand2
|
StandSequences: stand,stand2
|
||||||
|
|
||||||
E6:
|
E6:
|
||||||
Inherits: ^Infantry
|
Inherits: ^Infantry
|
||||||
@@ -184,9 +184,9 @@ E6:
|
|||||||
Type: building
|
Type: building
|
||||||
TakeCover:
|
TakeCover:
|
||||||
-AutoTarget:
|
-AutoTarget:
|
||||||
RenderInfantry:
|
WithInfantryBody:
|
||||||
IdleAnimations: idle1,idle2
|
IdleSequences: idle1,idle2
|
||||||
StandAnimations: stand,stand2
|
StandSequences: stand,stand2
|
||||||
|
|
||||||
SPY:
|
SPY:
|
||||||
Inherits: ^Infantry
|
Inherits: ^Infantry
|
||||||
@@ -218,24 +218,25 @@ SPY:
|
|||||||
Infiltrates:
|
Infiltrates:
|
||||||
Types: SpyInfiltrate
|
Types: SpyInfiltrate
|
||||||
-AutoTarget:
|
-AutoTarget:
|
||||||
-RenderInfantry:
|
-WithInfantryBody:
|
||||||
RenderDisguise:
|
WithDisguisingInfantryBody:
|
||||||
IdleAnimations: idle1,idle2
|
IdleSequences: idle1,idle2
|
||||||
StandAnimations: stand,stand2
|
StandSequences: stand,stand2
|
||||||
Armament:
|
Armament:
|
||||||
Weapon: SilencedPPK
|
Weapon: SilencedPPK
|
||||||
AttackFrontal:
|
AttackFrontal:
|
||||||
|
|
||||||
SPY.England:
|
SPY.England:
|
||||||
Inherits: SPY
|
Inherits: SPY
|
||||||
RenderDisguise:
|
WithDisguisingInfantryBody:
|
||||||
Image: spy
|
|
||||||
Buildable:
|
Buildable:
|
||||||
Prerequisites: ~infantry.england, dome, ~tent, ~techlevel.medium
|
Prerequisites: ~infantry.england, dome, ~tent, ~techlevel.medium
|
||||||
Valued:
|
Valued:
|
||||||
Cost: 250
|
Cost: 250
|
||||||
DisguiseToolTip:
|
DisguiseToolTip:
|
||||||
Name: British Spy
|
Name: British Spy
|
||||||
|
RenderSprites:
|
||||||
|
Image: spy
|
||||||
|
|
||||||
E7:
|
E7:
|
||||||
Inherits: ^Infantry
|
Inherits: ^Infantry
|
||||||
@@ -274,8 +275,8 @@ E7:
|
|||||||
MuzzleSequence: garrison-muzzle
|
MuzzleSequence: garrison-muzzle
|
||||||
AttackFrontal:
|
AttackFrontal:
|
||||||
TakeCover:
|
TakeCover:
|
||||||
RenderInfantry:
|
WithInfantryBody:
|
||||||
IdleAnimations: idle1,idle2
|
IdleSequences: idle1,idle2
|
||||||
AnnounceOnBuild:
|
AnnounceOnBuild:
|
||||||
AnnounceOnKill:
|
AnnounceOnKill:
|
||||||
|
|
||||||
@@ -310,9 +311,9 @@ MEDI:
|
|||||||
OutsideRangeCursor: heal
|
OutsideRangeCursor: heal
|
||||||
TakeCover:
|
TakeCover:
|
||||||
-AutoTarget:
|
-AutoTarget:
|
||||||
RenderInfantry:
|
WithInfantryBody:
|
||||||
IdleAnimations: idle1,idle2
|
IdleSequences: idle1,idle2
|
||||||
AttackAnimation: heal
|
AttackSequence: heal
|
||||||
|
|
||||||
MECH:
|
MECH:
|
||||||
Inherits: ^Infantry
|
Inherits: ^Infantry
|
||||||
@@ -347,9 +348,9 @@ MECH:
|
|||||||
CaptureTypes: husk
|
CaptureTypes: husk
|
||||||
TakeCover:
|
TakeCover:
|
||||||
-AutoTarget:
|
-AutoTarget:
|
||||||
RenderInfantry:
|
WithInfantryBody:
|
||||||
IdleAnimations: idle1,idle2
|
IdleSequences: idle1,idle2
|
||||||
AttackAnimation: heal
|
AttackSequence: heal
|
||||||
|
|
||||||
EINSTEIN:
|
EINSTEIN:
|
||||||
Inherits: ^Infantry
|
Inherits: ^Infantry
|
||||||
@@ -369,7 +370,7 @@ EINSTEIN:
|
|||||||
-AutoTarget:
|
-AutoTarget:
|
||||||
ProximityCaptor:
|
ProximityCaptor:
|
||||||
Types: CivilianInfantry
|
Types: CivilianInfantry
|
||||||
RenderInfantry:
|
WithInfantryBody:
|
||||||
ScaredyCat:
|
ScaredyCat:
|
||||||
|
|
||||||
DELPHI:
|
DELPHI:
|
||||||
@@ -390,7 +391,7 @@ DELPHI:
|
|||||||
-AutoTarget:
|
-AutoTarget:
|
||||||
ProximityCaptor:
|
ProximityCaptor:
|
||||||
Types: CivilianInfantry
|
Types: CivilianInfantry
|
||||||
RenderInfantry:
|
WithInfantryBody:
|
||||||
ScaredyCat:
|
ScaredyCat:
|
||||||
|
|
||||||
CHAN:
|
CHAN:
|
||||||
@@ -484,9 +485,9 @@ SHOK:
|
|||||||
Weapon: PortaTesla
|
Weapon: PortaTesla
|
||||||
AttackFrontal:
|
AttackFrontal:
|
||||||
TakeCover:
|
TakeCover:
|
||||||
RenderInfantry:
|
WithInfantryBody:
|
||||||
IdleAnimations: idle1,idle2
|
IdleSequences: idle1,idle2
|
||||||
StandAnimations: stand,stand2
|
StandSequences: stand,stand2
|
||||||
|
|
||||||
SNIPER:
|
SNIPER:
|
||||||
Inherits: ^Infantry
|
Inherits: ^Infantry
|
||||||
@@ -520,9 +521,9 @@ SNIPER:
|
|||||||
MuzzleSequence: garrison-muzzle
|
MuzzleSequence: garrison-muzzle
|
||||||
AttackFrontal:
|
AttackFrontal:
|
||||||
TakeCover:
|
TakeCover:
|
||||||
RenderInfantry:
|
WithInfantryBody:
|
||||||
IdleAnimations: idle1,idle2
|
IdleSequences: idle1,idle2
|
||||||
StandAnimations: stand,stand2
|
StandSequences: stand,stand2
|
||||||
Cloak:
|
Cloak:
|
||||||
InitialDelay: 250
|
InitialDelay: 250
|
||||||
CloakDelay: 120
|
CloakDelay: 120
|
||||||
|
|||||||
@@ -162,7 +162,8 @@
|
|||||||
Voice: Infantry
|
Voice: Infantry
|
||||||
TargetableUnit:
|
TargetableUnit:
|
||||||
TargetTypes: Ground, Infantry
|
TargetTypes: Ground, Infantry
|
||||||
RenderInfantry:
|
RenderSprites:
|
||||||
|
WithInfantryBody:
|
||||||
WithDeathAnimation:
|
WithDeathAnimation:
|
||||||
AutoTarget:
|
AutoTarget:
|
||||||
AttackMove:
|
AttackMove:
|
||||||
@@ -244,7 +245,7 @@
|
|||||||
AttackFrontal:
|
AttackFrontal:
|
||||||
ProximityCaptor:
|
ProximityCaptor:
|
||||||
Types: CivilianInfantry
|
Types: CivilianInfantry
|
||||||
RenderInfantry:
|
WithInfantryBody:
|
||||||
ScaredyCat:
|
ScaredyCat:
|
||||||
-MustBeDestroyed:
|
-MustBeDestroyed:
|
||||||
|
|
||||||
|
|||||||
@@ -26,8 +26,8 @@ E1:
|
|||||||
UpgradeMinEnabledLevel: 1
|
UpgradeMinEnabledLevel: 1
|
||||||
AttackFrontal:
|
AttackFrontal:
|
||||||
TakeCover:
|
TakeCover:
|
||||||
RenderInfantry:
|
WithInfantryBody:
|
||||||
IdleAnimations: idle1,idle2
|
IdleSequences: idle1,idle2
|
||||||
|
|
||||||
E2:
|
E2:
|
||||||
Inherits: ^Infantry
|
Inherits: ^Infantry
|
||||||
@@ -52,8 +52,8 @@ E2:
|
|||||||
FireDelay: 5
|
FireDelay: 5
|
||||||
AttackFrontal:
|
AttackFrontal:
|
||||||
TakeCover:
|
TakeCover:
|
||||||
RenderInfantry:
|
WithInfantryBody:
|
||||||
IdleAnimations: idle1,idle2
|
IdleSequences: idle1,idle2
|
||||||
|
|
||||||
E3:
|
E3:
|
||||||
Inherits: ^Infantry
|
Inherits: ^Infantry
|
||||||
@@ -78,8 +78,8 @@ E3:
|
|||||||
LocalOffset: 128,0,640
|
LocalOffset: 128,0,640
|
||||||
AttackFrontal:
|
AttackFrontal:
|
||||||
TakeCover:
|
TakeCover:
|
||||||
RenderInfantry:
|
WithInfantryBody:
|
||||||
IdleAnimations: idle1,idle2
|
IdleSequences: idle1,idle2
|
||||||
|
|
||||||
WEEDGUY:
|
WEEDGUY:
|
||||||
Inherits: ^Infantry
|
Inherits: ^Infantry
|
||||||
@@ -106,7 +106,7 @@ WEEDGUY:
|
|||||||
Weapon: FireballLauncher
|
Weapon: FireballLauncher
|
||||||
LocalOffset: 85,0,384
|
LocalOffset: 85,0,384
|
||||||
AttackFrontal:
|
AttackFrontal:
|
||||||
RenderInfantry:
|
WithInfantryBody:
|
||||||
TakeCover:
|
TakeCover:
|
||||||
|
|
||||||
MEDIC:
|
MEDIC:
|
||||||
@@ -133,9 +133,9 @@ MEDIC:
|
|||||||
Weapon: Heal
|
Weapon: Heal
|
||||||
AttackFrontal:
|
AttackFrontal:
|
||||||
TakeCover:
|
TakeCover:
|
||||||
RenderInfantry:
|
WithInfantryBody:
|
||||||
IdleAnimations: idle1,idle2
|
IdleSequences: idle1,idle2
|
||||||
AttackAnimation: heal
|
AttackSequence: heal
|
||||||
SelfHealing:
|
SelfHealing:
|
||||||
Passenger:
|
Passenger:
|
||||||
PipType: Red
|
PipType: Red
|
||||||
@@ -165,8 +165,8 @@ ENGINEER:
|
|||||||
Captures:
|
Captures:
|
||||||
CaptureTypes: building
|
CaptureTypes: building
|
||||||
-AutoTarget:
|
-AutoTarget:
|
||||||
RenderInfantry:
|
WithInfantryBody:
|
||||||
IdleAnimations: idle1,idle2
|
IdleSequences: idle1,idle2
|
||||||
TakeCover:
|
TakeCover:
|
||||||
-GainsExperience:
|
-GainsExperience:
|
||||||
|
|
||||||
@@ -197,8 +197,8 @@ UMAGON:
|
|||||||
Weapon: Sniper
|
Weapon: Sniper
|
||||||
AttackFrontal:
|
AttackFrontal:
|
||||||
TakeCover:
|
TakeCover:
|
||||||
RenderInfantry:
|
WithInfantryBody:
|
||||||
IdleAnimations: idle1,idle2
|
IdleSequences: idle1,idle2
|
||||||
|
|
||||||
GHOST:
|
GHOST:
|
||||||
Inherits: ^Infantry
|
Inherits: ^Infantry
|
||||||
@@ -233,8 +233,8 @@ GHOST:
|
|||||||
C4Demolition:
|
C4Demolition:
|
||||||
C4Delay: 45
|
C4Delay: 45
|
||||||
TakeCover:
|
TakeCover:
|
||||||
RenderInfantry:
|
WithInfantryBody:
|
||||||
IdleAnimations: idle1,idle2
|
IdleSequences: idle1,idle2
|
||||||
|
|
||||||
JUMPJET:
|
JUMPJET:
|
||||||
Inherits: ^Infantry
|
Inherits: ^Infantry
|
||||||
@@ -264,7 +264,7 @@ JUMPJET:
|
|||||||
-Crushable:
|
-Crushable:
|
||||||
AttackFrontal:
|
AttackFrontal:
|
||||||
TakeCover:
|
TakeCover:
|
||||||
RenderInfantry:
|
WithInfantryBody:
|
||||||
|
|
||||||
CHAMSPY:
|
CHAMSPY:
|
||||||
Inherits: ^Infantry
|
Inherits: ^Infantry
|
||||||
@@ -292,9 +292,9 @@ CHAMSPY:
|
|||||||
Infiltrates:
|
Infiltrates:
|
||||||
Types: SpyInfiltrate
|
Types: SpyInfiltrate
|
||||||
-AutoTarget:
|
-AutoTarget:
|
||||||
-RenderInfantry:
|
-WithInfantryBody:
|
||||||
RenderDisguise:
|
WithDisguisingInfantryBody:
|
||||||
IdleAnimations: idle1,idle2
|
IdleSequences: idle1,idle2
|
||||||
|
|
||||||
CYBORG:
|
CYBORG:
|
||||||
Inherits: ^Infantry
|
Inherits: ^Infantry
|
||||||
@@ -326,8 +326,8 @@ CYBORG:
|
|||||||
Weapon: Vulcan3
|
Weapon: Vulcan3
|
||||||
AttackFrontal:
|
AttackFrontal:
|
||||||
TakeCover:
|
TakeCover:
|
||||||
RenderInfantry:
|
WithInfantryBody:
|
||||||
IdleAnimations: idle1,idle2
|
IdleSequences: idle1,idle2
|
||||||
|
|
||||||
CYC2:
|
CYC2:
|
||||||
Inherits: ^Infantry
|
Inherits: ^Infantry
|
||||||
@@ -360,8 +360,8 @@ CYC2:
|
|||||||
LocalOffset: 170,85,683
|
LocalOffset: 170,85,683
|
||||||
AttackFrontal:
|
AttackFrontal:
|
||||||
TakeCover:
|
TakeCover:
|
||||||
RenderInfantry:
|
WithInfantryBody:
|
||||||
IdleAnimations: idle1,idle2
|
IdleSequences: idle1,idle2
|
||||||
|
|
||||||
MUTANT:
|
MUTANT:
|
||||||
Inherits: ^Infantry
|
Inherits: ^Infantry
|
||||||
@@ -388,8 +388,8 @@ MUTANT:
|
|||||||
Weapon: Vulcan
|
Weapon: Vulcan
|
||||||
AttackFrontal:
|
AttackFrontal:
|
||||||
TakeCover:
|
TakeCover:
|
||||||
RenderInfantry:
|
WithInfantryBody:
|
||||||
IdleAnimations: idle1,idle2
|
IdleSequences: idle1,idle2
|
||||||
|
|
||||||
MWMN:
|
MWMN:
|
||||||
Inherits: ^Infantry
|
Inherits: ^Infantry
|
||||||
@@ -416,8 +416,8 @@ MWMN:
|
|||||||
Weapon: Vulcan
|
Weapon: Vulcan
|
||||||
AttackFrontal:
|
AttackFrontal:
|
||||||
TakeCover:
|
TakeCover:
|
||||||
RenderInfantry:
|
WithInfantryBody:
|
||||||
IdleAnimations: idle1,idle2
|
IdleSequences: idle1,idle2
|
||||||
|
|
||||||
MUTANT3:
|
MUTANT3:
|
||||||
Inherits: ^Infantry
|
Inherits: ^Infantry
|
||||||
@@ -444,8 +444,8 @@ MUTANT3:
|
|||||||
Weapon: Vulcan
|
Weapon: Vulcan
|
||||||
AttackFrontal:
|
AttackFrontal:
|
||||||
TakeCover:
|
TakeCover:
|
||||||
RenderInfantry:
|
WithInfantryBody:
|
||||||
IdleAnimations: idle1,idle2
|
IdleSequences: idle1,idle2
|
||||||
|
|
||||||
MHIJACK:
|
MHIJACK:
|
||||||
Inherits: ^Infantry
|
Inherits: ^Infantry
|
||||||
@@ -471,8 +471,8 @@ MHIJACK:
|
|||||||
Range: 6c0
|
Range: 6c0
|
||||||
-AutoTarget:
|
-AutoTarget:
|
||||||
TakeCover:
|
TakeCover:
|
||||||
RenderInfantry:
|
WithInfantryBody:
|
||||||
IdleAnimations: idle1,idle2
|
IdleSequences: idle1,idle2
|
||||||
|
|
||||||
TRATOS:
|
TRATOS:
|
||||||
Inherits: ^Infantry
|
Inherits: ^Infantry
|
||||||
@@ -496,8 +496,8 @@ TRATOS:
|
|||||||
Range: 4c0
|
Range: 4c0
|
||||||
TakeCover:
|
TakeCover:
|
||||||
-AutoTarget:
|
-AutoTarget:
|
||||||
RenderInfantry:
|
WithInfantryBody:
|
||||||
IdleAnimations: idle1,idle2
|
IdleSequences: idle1,idle2
|
||||||
|
|
||||||
OXANNA:
|
OXANNA:
|
||||||
Inherits: ^Infantry
|
Inherits: ^Infantry
|
||||||
@@ -519,8 +519,8 @@ OXANNA:
|
|||||||
Range: 4c0
|
Range: 4c0
|
||||||
TakeCover:
|
TakeCover:
|
||||||
-AutoTarget:
|
-AutoTarget:
|
||||||
RenderInfantry:
|
WithInfantryBody:
|
||||||
IdleAnimations: idle1,idle2
|
IdleSequences: idle1,idle2
|
||||||
|
|
||||||
SLAV:
|
SLAV:
|
||||||
Inherits: ^Infantry
|
Inherits: ^Infantry
|
||||||
@@ -542,8 +542,8 @@ SLAV:
|
|||||||
Range: 4c0
|
Range: 4c0
|
||||||
TakeCover:
|
TakeCover:
|
||||||
-AutoTarget:
|
-AutoTarget:
|
||||||
RenderInfantry:
|
WithInfantryBody:
|
||||||
IdleAnimations: idle1,idle2
|
IdleSequences: idle1,idle2
|
||||||
|
|
||||||
DOGGIE:
|
DOGGIE:
|
||||||
Inherits: ^Infantry
|
Inherits: ^Infantry
|
||||||
@@ -603,9 +603,10 @@ VISSML:
|
|||||||
TargetableUnit:
|
TargetableUnit:
|
||||||
TargetTypes: Ground
|
TargetTypes: Ground
|
||||||
-AutoTarget:
|
-AutoTarget:
|
||||||
-RenderInfantry:
|
-RenderSprites:
|
||||||
RenderUnit:
|
-WithInfantryBody:
|
||||||
-WithDeathAnimation:
|
-WithDeathAnimation:
|
||||||
|
RenderUnit:
|
||||||
|
|
||||||
VISLRG:
|
VISLRG:
|
||||||
Inherits: ^Infantry
|
Inherits: ^Infantry
|
||||||
@@ -639,9 +640,10 @@ VISLRG:
|
|||||||
WanderMoveRadius: 2
|
WanderMoveRadius: 2
|
||||||
MinMoveDelayInTicks: 25
|
MinMoveDelayInTicks: 25
|
||||||
MaxMoveDelayInTicks: 45
|
MaxMoveDelayInTicks: 45
|
||||||
-RenderInfantry:
|
-RenderSprites:
|
||||||
RenderUnit:
|
-WithInfantryBody:
|
||||||
-WithDeathAnimation:
|
-WithDeathAnimation:
|
||||||
|
RenderUnit:
|
||||||
|
|
||||||
CIV1:
|
CIV1:
|
||||||
Inherits: ^CivilianInfantry
|
Inherits: ^CivilianInfantry
|
||||||
|
|||||||
@@ -16,13 +16,14 @@ waypoint:
|
|||||||
InitialFacing: 160
|
InitialFacing: 160
|
||||||
Turreted:
|
Turreted:
|
||||||
InitialFacing: 160
|
InitialFacing: 160
|
||||||
RenderInfantry:
|
WithInfantryBody:
|
||||||
Image: mmch
|
StandSequences: run
|
||||||
StandAnimations: run
|
|
||||||
Palette: colorpicker
|
|
||||||
RenderVoxels:
|
RenderVoxels:
|
||||||
Image: mmch
|
Image: mmch
|
||||||
Palette: colorpicker
|
Palette: colorpicker
|
||||||
|
RenderSprites:
|
||||||
|
Image: mmch
|
||||||
|
Palette: colorpicker
|
||||||
|
|
||||||
CAMERA:
|
CAMERA:
|
||||||
Immobile:
|
Immobile:
|
||||||
@@ -66,3 +67,4 @@ TROCK04:
|
|||||||
|
|
||||||
TROCK05:
|
TROCK05:
|
||||||
Inherits: ^Rock
|
Inherits: ^Rock
|
||||||
|
|
||||||
|
|||||||
@@ -518,7 +518,8 @@ MMCH:
|
|||||||
Type: Heavy
|
Type: Heavy
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 8c0
|
Range: 8c0
|
||||||
RenderInfantry:
|
RenderSprites:
|
||||||
|
WithInfantryBody:
|
||||||
Turreted:
|
Turreted:
|
||||||
ROT: 5
|
ROT: 5
|
||||||
AttackTurreted:
|
AttackTurreted:
|
||||||
@@ -590,7 +591,8 @@ SMECH:
|
|||||||
AutoTarget:
|
AutoTarget:
|
||||||
Armament:
|
Armament:
|
||||||
Weapon: AssaultCannon
|
Weapon: AssaultCannon
|
||||||
RenderInfantry:
|
RenderSprites:
|
||||||
|
WithInfantryBody:
|
||||||
Selectable:
|
Selectable:
|
||||||
Voices: Mech
|
Voices: Mech
|
||||||
Bounds: 16, 32
|
Bounds: 16, 32
|
||||||
|
|||||||
Reference in New Issue
Block a user