Merge pull request #9189 from reaperrr/bye-rendersimple3
Remove RenderBuilding
This commit is contained in:
@@ -15,15 +15,25 @@ using OpenRA.Traits;
|
|||||||
namespace OpenRA.Mods.Cnc.Traits
|
namespace OpenRA.Mods.Cnc.Traits
|
||||||
{
|
{
|
||||||
[Desc("Actor's turret rises from the ground before attacking.")]
|
[Desc("Actor's turret rises from the ground before attacking.")]
|
||||||
class AttackPopupTurretedInfo : AttackTurretedInfo, Requires<BuildingInfo>, Requires<RenderBuildingInfo>
|
class AttackPopupTurretedInfo : AttackTurretedInfo, Requires<BuildingInfo>, Requires<WithTurretedSpriteBodyInfo>
|
||||||
{
|
{
|
||||||
[Desc("How many game ticks should pass before closing the actor's turret.")]
|
[Desc("How many game ticks should pass before closing the actor's turret.")]
|
||||||
public int CloseDelay = 125;
|
public int CloseDelay = 125;
|
||||||
|
|
||||||
public int DefaultFacing = 0;
|
public int DefaultFacing = 0;
|
||||||
|
|
||||||
[Desc("The percentage of damage that is received while this actor is closed.")]
|
[Desc("The percentage of damage that is received while this actor is closed.")]
|
||||||
public int ClosedDamageMultiplier = 50;
|
public int ClosedDamageMultiplier = 50;
|
||||||
|
|
||||||
|
[Desc("Sequence to play when opening.")]
|
||||||
|
[SequenceReference] public string OpeningSequence = "opening";
|
||||||
|
|
||||||
|
[Desc("Sequence to play when closing.")]
|
||||||
|
[SequenceReference] public string ClosingSequence = "closing";
|
||||||
|
|
||||||
|
[Desc("Idle sequence to play when closed.")]
|
||||||
|
[SequenceReference] public string ClosedIdleSequence = "closed-idle";
|
||||||
|
|
||||||
public override object Create(ActorInitializer init) { return new AttackPopupTurreted(init, this); }
|
public override object Create(ActorInitializer init) { return new AttackPopupTurreted(init, this); }
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -32,11 +42,11 @@ namespace OpenRA.Mods.Cnc.Traits
|
|||||||
enum PopupState { Open, Rotating, Transitioning, Closed }
|
enum PopupState { Open, Rotating, Transitioning, Closed }
|
||||||
|
|
||||||
readonly AttackPopupTurretedInfo info;
|
readonly AttackPopupTurretedInfo info;
|
||||||
RenderBuilding rb;
|
readonly WithSpriteBody wsb;
|
||||||
|
readonly Turreted turret;
|
||||||
|
|
||||||
int idleTicks = 0;
|
int idleTicks = 0;
|
||||||
PopupState state = PopupState.Open;
|
PopupState state = PopupState.Open;
|
||||||
Turreted turret;
|
|
||||||
bool skippedMakeAnimation;
|
bool skippedMakeAnimation;
|
||||||
|
|
||||||
public AttackPopupTurreted(ActorInitializer init, AttackPopupTurretedInfo info)
|
public AttackPopupTurreted(ActorInitializer init, AttackPopupTurretedInfo info)
|
||||||
@@ -44,7 +54,7 @@ namespace OpenRA.Mods.Cnc.Traits
|
|||||||
{
|
{
|
||||||
this.info = info;
|
this.info = info;
|
||||||
turret = turrets.FirstOrDefault();
|
turret = turrets.FirstOrDefault();
|
||||||
rb = init.Self.Trait<RenderBuilding>();
|
wsb = init.Self.Trait<WithSpriteBody>();
|
||||||
skippedMakeAnimation = init.Contains<SkipMakeAnimsInit>();
|
skippedMakeAnimation = init.Contains<SkipMakeAnimsInit>();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -60,10 +70,10 @@ namespace OpenRA.Mods.Cnc.Traits
|
|||||||
if (state == PopupState.Closed)
|
if (state == PopupState.Closed)
|
||||||
{
|
{
|
||||||
state = PopupState.Transitioning;
|
state = PopupState.Transitioning;
|
||||||
rb.PlayCustomAnimThen(self, "opening", () =>
|
wsb.PlayCustomAnimation(self, info.OpeningSequence, () =>
|
||||||
{
|
{
|
||||||
state = PopupState.Open;
|
state = PopupState.Open;
|
||||||
rb.PlayCustomAnimRepeating(self, "idle");
|
wsb.PlayCustomAnimationRepeating(self, wsb.Info.Sequence);
|
||||||
});
|
});
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -81,10 +91,10 @@ namespace OpenRA.Mods.Cnc.Traits
|
|||||||
else if (state == PopupState.Rotating && turret.TurretFacing == info.DefaultFacing)
|
else if (state == PopupState.Rotating && turret.TurretFacing == info.DefaultFacing)
|
||||||
{
|
{
|
||||||
state = PopupState.Transitioning;
|
state = PopupState.Transitioning;
|
||||||
rb.PlayCustomAnimThen(self, "closing", () =>
|
wsb.PlayCustomAnimation(self, info.ClosingSequence, () =>
|
||||||
{
|
{
|
||||||
state = PopupState.Closed;
|
state = PopupState.Closed;
|
||||||
rb.PlayCustomAnimRepeating(self, "closed-idle");
|
wsb.PlayCustomAnimationRepeating(self, info.ClosedIdleSequence);
|
||||||
turret.DesiredFacing = null;
|
turret.DesiredFacing = null;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -95,7 +105,7 @@ namespace OpenRA.Mods.Cnc.Traits
|
|||||||
if (skippedMakeAnimation)
|
if (skippedMakeAnimation)
|
||||||
{
|
{
|
||||||
state = PopupState.Closed;
|
state = PopupState.Closed;
|
||||||
rb.PlayCustomAnimRepeating(self, "closed-idle");
|
wsb.PlayCustomAnimationRepeating(self, info.ClosedIdleSequence);
|
||||||
turret.DesiredFacing = null;
|
turret.DesiredFacing = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ using OpenRA.Traits;
|
|||||||
namespace OpenRA.Mods.Cnc.Traits
|
namespace OpenRA.Mods.Cnc.Traits
|
||||||
{
|
{
|
||||||
[Desc("Building animation to play when ProductionAirdrop is used to deliver units.")]
|
[Desc("Building animation to play when ProductionAirdrop is used to deliver units.")]
|
||||||
public class WithDeliveryAnimationInfo : ITraitInfo, Requires<RenderBuildingInfo>
|
public class WithDeliveryAnimationInfo : ITraitInfo, Requires<WithSpriteBodyInfo>
|
||||||
{
|
{
|
||||||
public readonly string ActiveSequence = "active";
|
public readonly string ActiveSequence = "active";
|
||||||
|
|
||||||
@@ -26,23 +26,23 @@ namespace OpenRA.Mods.Cnc.Traits
|
|||||||
public class WithDeliveryAnimation : INotifyDelivery
|
public class WithDeliveryAnimation : INotifyDelivery
|
||||||
{
|
{
|
||||||
readonly WithDeliveryAnimationInfo info;
|
readonly WithDeliveryAnimationInfo info;
|
||||||
readonly RenderBuilding building;
|
readonly WithSpriteBody wsb;
|
||||||
|
|
||||||
public WithDeliveryAnimation(Actor self, WithDeliveryAnimationInfo info)
|
public WithDeliveryAnimation(Actor self, WithDeliveryAnimationInfo info)
|
||||||
{
|
{
|
||||||
building = self.Trait<RenderBuilding>();
|
wsb = self.Trait<WithSpriteBody>();
|
||||||
|
|
||||||
this.info = info;
|
this.info = info;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void IncomingDelivery(Actor self)
|
public void IncomingDelivery(Actor self)
|
||||||
{
|
{
|
||||||
building.PlayCustomAnimRepeating(self, info.ActiveSequence);
|
wsb.PlayCustomAnimationRepeating(self, info.ActiveSequence);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Delivered(Actor self)
|
public void Delivered(Actor self)
|
||||||
{
|
{
|
||||||
building.PlayCustomAnimRepeating(self, info.IdleSequence);
|
wsb.PlayCustomAnimationRepeating(self, info.IdleSequence);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -48,7 +48,7 @@ namespace OpenRA.Mods.Common.Activities
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
// HACK to check if we are on the helipad/airfield/etc.
|
// HACK to check if we are on the helipad/airfield/etc.
|
||||||
var hostBuilding = self.World.ActorMap.GetUnitsAt(self.Location).FirstOrDefault(a => a.HasTrait<RenderBuilding>());
|
var hostBuilding = self.World.ActorMap.GetUnitsAt(self.Location).FirstOrDefault(a => a.HasTrait<Building>());
|
||||||
|
|
||||||
if (hostBuilding == null || !hostBuilding.IsInWorld)
|
if (hostBuilding == null || !hostBuilding.IsInWorld)
|
||||||
return NextActivity;
|
return NextActivity;
|
||||||
@@ -56,7 +56,7 @@ namespace OpenRA.Mods.Common.Activities
|
|||||||
if (!pool.GiveAmmo())
|
if (!pool.GiveAmmo())
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
hostBuilding.Trait<RenderBuilding>().PlayCustomAnim(hostBuilding, "active");
|
hostBuilding.Trait<WithSpriteBody>().PlayCustomAnimation(hostBuilding, "active");
|
||||||
|
|
||||||
var sound = pool.Info.RearmSound;
|
var sound = pool.Info.RearmSound;
|
||||||
if (sound != null)
|
if (sound != null)
|
||||||
|
|||||||
@@ -403,15 +403,12 @@
|
|||||||
<Compile Include="Traits\Render\AutoSelectionSize.cs" />
|
<Compile Include="Traits\Render\AutoSelectionSize.cs" />
|
||||||
<Compile Include="Traits\Render\Hovers.cs" />
|
<Compile Include="Traits\Render\Hovers.cs" />
|
||||||
<Compile Include="Traits\Render\LeavesTrails.cs" />
|
<Compile Include="Traits\Render\LeavesTrails.cs" />
|
||||||
<Compile Include="Traits\Render\RenderBuilding.cs" />
|
|
||||||
<Compile Include="Traits\Render\RenderBuildingCharge.cs" />
|
|
||||||
<Compile Include="Traits\Render\RenderBuildingTurreted.cs" />
|
|
||||||
<Compile Include="Traits\Render\RenderSpritesEditorOnly.cs" />
|
<Compile Include="Traits\Render\RenderSpritesEditorOnly.cs" />
|
||||||
|
<Compile Include="Traits\Render\WithTurretedSpriteBody.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" />
|
||||||
<Compile Include="Traits\Render\RenderBuildingSilo.cs" />
|
<Compile Include="Traits\Render\WithWallSpriteBody.cs" />
|
||||||
<Compile Include="Traits\Render\RenderBuildingWall.cs" />
|
|
||||||
<Compile Include="Traits\Render\RenderDetectionCircle.cs" />
|
<Compile Include="Traits\Render\RenderDetectionCircle.cs" />
|
||||||
<Compile Include="Traits\Render\RenderRangeCircle.cs" />
|
<Compile Include="Traits\Render\RenderRangeCircle.cs" />
|
||||||
<Compile Include="Traits\Render\RenderVoxels.cs" />
|
<Compile Include="Traits\Render\RenderVoxels.cs" />
|
||||||
@@ -423,8 +420,10 @@
|
|||||||
<Compile Include="Traits\Render\WithActiveAnimation.cs" />
|
<Compile Include="Traits\Render\WithActiveAnimation.cs" />
|
||||||
<Compile Include="Traits\Render\WithAttackAnimation.cs" />
|
<Compile Include="Traits\Render\WithAttackAnimation.cs" />
|
||||||
<Compile Include="Traits\Render\WithMoveAnimation.cs" />
|
<Compile Include="Traits\Render\WithMoveAnimation.cs" />
|
||||||
|
<Compile Include="Traits\Render\WithSiloAnimation.cs" />
|
||||||
<Compile Include="Traits\Render\WithBuildingPlacedAnimation.cs" />
|
<Compile Include="Traits\Render\WithBuildingPlacedAnimation.cs" />
|
||||||
<Compile Include="Traits\Render\WithMakeAnimation.cs" />
|
<Compile Include="Traits\Render\WithMakeAnimation.cs" />
|
||||||
|
<Compile Include="Traits\Render\WithChargeAnimation.cs" />
|
||||||
<Compile Include="Traits\Render\WithChargeOverlay.cs" />
|
<Compile Include="Traits\Render\WithChargeOverlay.cs" />
|
||||||
<Compile Include="Traits\Render\WithCrateBody.cs" />
|
<Compile Include="Traits\Render\WithCrateBody.cs" />
|
||||||
<Compile Include="Traits\Render\WithDeathAnimation.cs" />
|
<Compile Include="Traits\Render\WithDeathAnimation.cs" />
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ using OpenRA.Traits;
|
|||||||
|
|
||||||
namespace OpenRA.Mods.Common.Traits
|
namespace OpenRA.Mods.Common.Traits
|
||||||
{
|
{
|
||||||
public class RefineryInfo : ITraitInfo
|
public class RefineryInfo : ITraitInfo, Requires<WithSpriteBodyInfo>
|
||||||
{
|
{
|
||||||
[Desc("Actual harvester facing when docking, 0-255 counter-clock-wise.")]
|
[Desc("Actual harvester facing when docking, 0-255 counter-clock-wise.")]
|
||||||
public readonly int DockAngle = 0;
|
public readonly int DockAngle = 0;
|
||||||
@@ -47,6 +47,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
{
|
{
|
||||||
readonly Actor self;
|
readonly Actor self;
|
||||||
readonly RefineryInfo info;
|
readonly RefineryInfo info;
|
||||||
|
readonly WithSpriteBody wsb;
|
||||||
PlayerResources playerResources;
|
PlayerResources playerResources;
|
||||||
|
|
||||||
int currentDisplayTick = 0;
|
int currentDisplayTick = 0;
|
||||||
@@ -69,6 +70,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
this.info = info;
|
this.info = info;
|
||||||
playerResources = self.Owner.PlayerActor.Trait<PlayerResources>();
|
playerResources = self.Owner.PlayerActor.Trait<PlayerResources>();
|
||||||
currentDisplayTick = info.TickRate;
|
currentDisplayTick = info.TickRate;
|
||||||
|
wsb = self.Trait<WithSpriteBody>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual Activity DockSequence(Actor harv, Actor self)
|
public virtual Activity DockSequence(Actor harv, Actor self)
|
||||||
@@ -105,7 +107,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
// Harvester was killed while unloading
|
// Harvester was killed while unloading
|
||||||
if (dockedHarv != null && dockedHarv.IsDead)
|
if (dockedHarv != null && dockedHarv.IsDead)
|
||||||
{
|
{
|
||||||
self.Trait<RenderBuilding>().CancelCustomAnim(self);
|
wsb.PlayCustomAnimation(self, wsb.Info.Sequence);
|
||||||
dockedHarv = null;
|
dockedHarv = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -8,15 +8,17 @@
|
|||||||
*/
|
*/
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using OpenRA.Effects;
|
using OpenRA.Effects;
|
||||||
|
using OpenRA.Graphics;
|
||||||
using OpenRA.Primitives;
|
using OpenRA.Primitives;
|
||||||
using OpenRA.Traits;
|
using OpenRA.Traits;
|
||||||
|
|
||||||
namespace OpenRA.Mods.Common.Traits
|
namespace OpenRA.Mods.Common.Traits
|
||||||
{
|
{
|
||||||
[Desc("Allows the player to execute build orders.", " Attach this to the player actor.")]
|
[Desc("Allows the player to execute build orders.", " Attach this to the player actor.")]
|
||||||
public class PlaceBuildingInfo : ITraitInfo
|
public class PlaceBuildingInfo : ITraitInfo, IPlaceBuildingDecoration
|
||||||
{
|
{
|
||||||
[Desc("Palette to use for rendering the placement sprite.")]
|
[Desc("Palette to use for rendering the placement sprite.")]
|
||||||
[PaletteReference] public readonly string Palette = "terrain";
|
[PaletteReference] public readonly string Palette = "terrain";
|
||||||
@@ -28,6 +30,16 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
public readonly string NewOptionsNotification = "NewOptions";
|
public readonly string NewOptionsNotification = "NewOptions";
|
||||||
|
|
||||||
public object Create(ActorInitializer init) { return new PlaceBuilding(this); }
|
public object Create(ActorInitializer init) { return new PlaceBuilding(this); }
|
||||||
|
|
||||||
|
public IEnumerable<IRenderable> Render(WorldRenderer wr, World w, ActorInfo ai, WPos centerPosition)
|
||||||
|
{
|
||||||
|
if (!ai.Traits.Get<BuildingInfo>().RequiresBaseProvider)
|
||||||
|
yield break;
|
||||||
|
|
||||||
|
foreach (var a in w.ActorsWithTrait<BaseProvider>())
|
||||||
|
foreach (var r in a.Trait.RenderAfterWorld(wr))
|
||||||
|
yield return r;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public class PlaceBuilding : IResolveOrder
|
public class PlaceBuilding : IResolveOrder
|
||||||
|
|||||||
@@ -1,91 +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;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using OpenRA.Graphics;
|
|
||||||
using OpenRA.Traits;
|
|
||||||
|
|
||||||
namespace OpenRA.Mods.Common.Traits
|
|
||||||
{
|
|
||||||
[Desc("Render trait for stationary objects that can be placed from the build palette.")]
|
|
||||||
public class RenderBuildingInfo : RenderSimpleInfo, Requires<BuildingInfo>, IPlaceBuildingDecoration
|
|
||||||
{
|
|
||||||
public readonly bool PauseOnLowPower = false;
|
|
||||||
|
|
||||||
public override object Create(ActorInitializer init) { return new RenderBuilding(init, this); }
|
|
||||||
|
|
||||||
public IEnumerable<IRenderable> Render(WorldRenderer wr, World w, ActorInfo ai, WPos centerPosition)
|
|
||||||
{
|
|
||||||
if (!ai.Traits.Get<BuildingInfo>().RequiresBaseProvider)
|
|
||||||
yield break;
|
|
||||||
|
|
||||||
foreach (var a in w.ActorsWithTrait<BaseProvider>())
|
|
||||||
foreach (var r in a.Trait.RenderAfterWorld(wr))
|
|
||||||
yield return r;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public class RenderBuilding : RenderSimple, INotifyDamageStateChanged, INotifyBuildComplete
|
|
||||||
{
|
|
||||||
RenderBuildingInfo info;
|
|
||||||
|
|
||||||
public RenderBuilding(ActorInitializer init, RenderBuildingInfo info)
|
|
||||||
: this(init, info, () => 0) { }
|
|
||||||
|
|
||||||
public RenderBuilding(ActorInitializer init, RenderBuildingInfo info, Func<int> baseFacing)
|
|
||||||
: base(init, info, baseFacing)
|
|
||||||
{
|
|
||||||
var self = init.Self;
|
|
||||||
this.info = info;
|
|
||||||
|
|
||||||
DefaultAnimation.PlayRepeating(NormalizeSequence(self, info.Sequence));
|
|
||||||
}
|
|
||||||
|
|
||||||
public virtual void BuildingComplete(Actor self)
|
|
||||||
{
|
|
||||||
DefaultAnimation.PlayRepeating(NormalizeSequence(self, info.Sequence));
|
|
||||||
|
|
||||||
if (info.PauseOnLowPower)
|
|
||||||
DefaultAnimation.Paused = () =>
|
|
||||||
self.IsDisabled() && DefaultAnimation.CurrentSequence.Name == NormalizeSequence(self, info.Sequence);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void PlayCustomAnimThen(Actor self, string name, Action a)
|
|
||||||
{
|
|
||||||
DefaultAnimation.PlayThen(NormalizeSequence(self, name),
|
|
||||||
() => { DefaultAnimation.PlayRepeating(NormalizeSequence(self, info.Sequence)); a(); });
|
|
||||||
}
|
|
||||||
|
|
||||||
public void PlayCustomAnimRepeating(Actor self, string name)
|
|
||||||
{
|
|
||||||
DefaultAnimation.PlayThen(NormalizeSequence(self, name),
|
|
||||||
() => PlayCustomAnimRepeating(self, name));
|
|
||||||
}
|
|
||||||
|
|
||||||
public void PlayCustomAnimBackwards(Actor self, string name, Action a)
|
|
||||||
{
|
|
||||||
DefaultAnimation.PlayBackwardsThen(NormalizeSequence(self, name),
|
|
||||||
() => { DefaultAnimation.PlayRepeating(NormalizeSequence(self, info.Sequence)); a(); });
|
|
||||||
}
|
|
||||||
|
|
||||||
public void CancelCustomAnim(Actor self)
|
|
||||||
{
|
|
||||||
DefaultAnimation.PlayRepeating(NormalizeSequence(self, info.Sequence));
|
|
||||||
}
|
|
||||||
|
|
||||||
public virtual void DamageStateChanged(Actor self, AttackInfo e)
|
|
||||||
{
|
|
||||||
if (DefaultAnimation.CurrentSequence != null)
|
|
||||||
DefaultAnimation.ReplaceAnim(NormalizeSequence(self, DefaultAnimation.CurrentSequence.Name));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,39 +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 OpenRA.Traits;
|
|
||||||
|
|
||||||
namespace OpenRA.Mods.Common.Traits
|
|
||||||
{
|
|
||||||
[Desc("Used for tesla coil and obelisk.")]
|
|
||||||
public class RenderBuildingChargeInfo : RenderBuildingInfo
|
|
||||||
{
|
|
||||||
[Desc("Sequence to use for building charge animation.")]
|
|
||||||
[SequenceReference] public readonly string ChargeSequence = "active";
|
|
||||||
|
|
||||||
public override object Create(ActorInitializer init) { return new RenderBuildingCharge(init, this); }
|
|
||||||
}
|
|
||||||
|
|
||||||
public class RenderBuildingCharge : RenderBuilding, INotifyCharging
|
|
||||||
{
|
|
||||||
RenderBuildingChargeInfo info;
|
|
||||||
|
|
||||||
public RenderBuildingCharge(ActorInitializer init, RenderBuildingChargeInfo info)
|
|
||||||
: base(init, info)
|
|
||||||
{
|
|
||||||
this.info = info;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Charging(Actor self, Target target)
|
|
||||||
{
|
|
||||||
PlayCustomAnim(self, info.ChargeSequence);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,61 +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.Collections.Generic;
|
|
||||||
using OpenRA.Graphics;
|
|
||||||
using OpenRA.Mods.Common.Graphics;
|
|
||||||
using OpenRA.Traits;
|
|
||||||
|
|
||||||
namespace OpenRA.Mods.Common.Traits
|
|
||||||
{
|
|
||||||
[Desc("Render trait for buildings that change the sprite according to the remaining resource storage capacity across all depots.")]
|
|
||||||
class RenderBuildingSiloInfo : RenderBuildingInfo
|
|
||||||
{
|
|
||||||
public override object Create(ActorInitializer init) { return new RenderBuildingSilo(init, this); }
|
|
||||||
|
|
||||||
public override IEnumerable<IActorPreview> RenderPreviewSprites(ActorPreviewInitializer init, RenderSpritesInfo rs, string image, int facings, PaletteReference p)
|
|
||||||
{
|
|
||||||
// Show a static frame instead of animating all of the fullness states
|
|
||||||
var anim = new Animation(init.World, image, () => 0);
|
|
||||||
anim.PlayFetchIndex(RenderSprites.NormalizeSequence(anim, init.GetDamageState(), Sequence), () => 0);
|
|
||||||
|
|
||||||
yield return new SpriteActorPreview(anim, WVec.Zero, 0, p, rs.Scale);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class RenderBuildingSilo : RenderBuilding, INotifyBuildComplete, INotifyOwnerChanged
|
|
||||||
{
|
|
||||||
readonly RenderBuildingSiloInfo info;
|
|
||||||
PlayerResources playerResources;
|
|
||||||
|
|
||||||
public RenderBuildingSilo(ActorInitializer init, RenderBuildingSiloInfo info)
|
|
||||||
: base(init, info)
|
|
||||||
{
|
|
||||||
this.info = info;
|
|
||||||
playerResources = init.Self.Owner.PlayerActor.Trait<PlayerResources>();
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void BuildingComplete(Actor self)
|
|
||||||
{
|
|
||||||
var animation = RenderSprites.NormalizeSequence(DefaultAnimation, self.GetDamageState(), info.Sequence);
|
|
||||||
|
|
||||||
DefaultAnimation.PlayFetchIndex(animation,
|
|
||||||
() => playerResources.ResourceCapacity != 0
|
|
||||||
? ((10 * DefaultAnimation.CurrentSequence.Length - 1) * playerResources.Resources) / (10 * playerResources.ResourceCapacity)
|
|
||||||
: 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void OnOwnerChanged(Actor self, Player oldOwner, Player newOwner)
|
|
||||||
{
|
|
||||||
playerResources = newOwner.PlayerActor.Trait<PlayerResources>();
|
|
||||||
base.OnOwnerChanged(self, oldOwner, newOwner);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -16,7 +16,7 @@ using OpenRA.Traits;
|
|||||||
namespace OpenRA.Mods.Common.Traits
|
namespace OpenRA.Mods.Common.Traits
|
||||||
{
|
{
|
||||||
[Desc("Replaces the idle animation of a building.")]
|
[Desc("Replaces the idle animation of a building.")]
|
||||||
public class WithActiveAnimationInfo : ITraitInfo, Requires<RenderBuildingInfo>
|
public class WithActiveAnimationInfo : ITraitInfo, Requires<WithSpriteBodyInfo>
|
||||||
{
|
{
|
||||||
[Desc("Sequence name to use")]
|
[Desc("Sequence name to use")]
|
||||||
[SequenceReference] public readonly string Sequence = "active";
|
[SequenceReference] public readonly string Sequence = "active";
|
||||||
@@ -31,11 +31,11 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
public class WithActiveAnimation : ITick, INotifyBuildComplete, INotifySold
|
public class WithActiveAnimation : ITick, INotifyBuildComplete, INotifySold
|
||||||
{
|
{
|
||||||
readonly WithActiveAnimationInfo info;
|
readonly WithActiveAnimationInfo info;
|
||||||
readonly RenderBuilding renderBuilding;
|
readonly WithSpriteBody wsb;
|
||||||
|
|
||||||
public WithActiveAnimation(Actor self, WithActiveAnimationInfo info)
|
public WithActiveAnimation(Actor self, WithActiveAnimationInfo info)
|
||||||
{
|
{
|
||||||
renderBuilding = self.Trait<RenderBuilding>();
|
wsb = self.Trait<WithSpriteBody>();
|
||||||
this.info = info;
|
this.info = info;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -48,7 +48,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
if (--ticks <= 0)
|
if (--ticks <= 0)
|
||||||
{
|
{
|
||||||
if (!(info.PauseOnLowPower && self.IsDisabled()))
|
if (!(info.PauseOnLowPower && self.IsDisabled()))
|
||||||
renderBuilding.PlayCustomAnim(self, info.Sequence);
|
wsb.PlayCustomAnimation(self, info.Sequence);
|
||||||
ticks = info.Interval;
|
ticks = info.Interval;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,10 +13,10 @@ using OpenRA.Traits;
|
|||||||
namespace OpenRA.Mods.Common.Traits
|
namespace OpenRA.Mods.Common.Traits
|
||||||
{
|
{
|
||||||
[Desc("Changes the animation when the actor constructed a building.")]
|
[Desc("Changes the animation when the actor constructed a building.")]
|
||||||
public class WithBuildingPlacedAnimationInfo : ITraitInfo, Requires<RenderSimpleInfo>
|
public class WithBuildingPlacedAnimationInfo : ITraitInfo, Requires<WithSpriteBodyInfo>
|
||||||
{
|
{
|
||||||
[Desc("Sequence name to use")]
|
[Desc("Sequence name to use"), SequenceReference]
|
||||||
[SequenceReference] public readonly string Sequence = "build";
|
public readonly string Sequence = "build";
|
||||||
|
|
||||||
public object Create(ActorInitializer init) { return new WithBuildingPlacedAnimation(init.Self, this); }
|
public object Create(ActorInitializer init) { return new WithBuildingPlacedAnimation(init.Self, this); }
|
||||||
}
|
}
|
||||||
@@ -24,13 +24,13 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
public class WithBuildingPlacedAnimation : INotifyBuildingPlaced, INotifyBuildComplete
|
public class WithBuildingPlacedAnimation : INotifyBuildingPlaced, INotifyBuildComplete
|
||||||
{
|
{
|
||||||
readonly WithBuildingPlacedAnimationInfo info;
|
readonly WithBuildingPlacedAnimationInfo info;
|
||||||
readonly RenderSimple renderSimple;
|
readonly WithSpriteBody wsb;
|
||||||
bool buildComplete;
|
bool buildComplete;
|
||||||
|
|
||||||
public WithBuildingPlacedAnimation(Actor self, WithBuildingPlacedAnimationInfo info)
|
public WithBuildingPlacedAnimation(Actor self, WithBuildingPlacedAnimationInfo info)
|
||||||
{
|
{
|
||||||
this.info = info;
|
this.info = info;
|
||||||
renderSimple = self.Trait<RenderSimple>();
|
wsb = self.Trait<WithSpriteBody>();
|
||||||
buildComplete = !self.HasTrait<Building>();
|
buildComplete = !self.HasTrait<Building>();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -42,7 +42,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
public void BuildingPlaced(Actor self)
|
public void BuildingPlaced(Actor self)
|
||||||
{
|
{
|
||||||
if (buildComplete)
|
if (buildComplete)
|
||||||
renderSimple.PlayCustomAnim(self, info.Sequence);
|
wsb.PlayCustomAnimation(self, info.Sequence, () => wsb.CancelCustomAnimation(self));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
40
OpenRA.Mods.Common/Traits/Render/WithChargeAnimation.cs
Normal file
40
OpenRA.Mods.Common/Traits/Render/WithChargeAnimation.cs
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
#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 OpenRA.Traits;
|
||||||
|
|
||||||
|
namespace OpenRA.Mods.Common.Traits
|
||||||
|
{
|
||||||
|
[Desc("This actor displays a charge-up animation before firing.")]
|
||||||
|
public class WithChargeAnimationInfo : ITraitInfo, Requires<WithSpriteBodyInfo>, Requires<RenderSpritesInfo>
|
||||||
|
{
|
||||||
|
[Desc("Sequence to use for charge animation.")]
|
||||||
|
[SequenceReference] public readonly string ChargeSequence = "active";
|
||||||
|
|
||||||
|
public object Create(ActorInitializer init) { return new WithChargeAnimation(init, this); }
|
||||||
|
}
|
||||||
|
|
||||||
|
public class WithChargeAnimation : INotifyCharging
|
||||||
|
{
|
||||||
|
readonly WithChargeAnimationInfo info;
|
||||||
|
readonly WithSpriteBody wsb;
|
||||||
|
|
||||||
|
public WithChargeAnimation(ActorInitializer init, WithChargeAnimationInfo info)
|
||||||
|
{
|
||||||
|
this.info = info;
|
||||||
|
wsb = init.Self.Trait<WithSpriteBody>();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Charging(Actor self, Target target)
|
||||||
|
{
|
||||||
|
wsb.PlayCustomAnimation(self, info.ChargeSequence);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -18,7 +18,7 @@ using OpenRA.Traits;
|
|||||||
namespace OpenRA.Mods.Common.Traits
|
namespace OpenRA.Mods.Common.Traits
|
||||||
{
|
{
|
||||||
[Desc("Replaces the sprite during construction.")]
|
[Desc("Replaces the sprite during construction.")]
|
||||||
public class WithMakeAnimationInfo : ITraitInfo, Requires<BuildingInfo>, Requires<RenderBuildingInfo>
|
public class WithMakeAnimationInfo : ITraitInfo, Requires<WithSpriteBodyInfo>
|
||||||
{
|
{
|
||||||
[Desc("Sequence name to use")]
|
[Desc("Sequence name to use")]
|
||||||
[SequenceReference] public readonly string Sequence = "make";
|
[SequenceReference] public readonly string Sequence = "make";
|
||||||
@@ -29,18 +29,18 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
public class WithMakeAnimation
|
public class WithMakeAnimation
|
||||||
{
|
{
|
||||||
readonly WithMakeAnimationInfo info;
|
readonly WithMakeAnimationInfo info;
|
||||||
readonly RenderBuilding renderBuilding;
|
readonly WithSpriteBody wsb;
|
||||||
|
|
||||||
public WithMakeAnimation(ActorInitializer init, WithMakeAnimationInfo info)
|
public WithMakeAnimation(ActorInitializer init, WithMakeAnimationInfo info)
|
||||||
{
|
{
|
||||||
this.info = info;
|
this.info = info;
|
||||||
var self = init.Self;
|
var self = init.Self;
|
||||||
renderBuilding = self.Trait<RenderBuilding>();
|
wsb = self.Trait<WithSpriteBody>();
|
||||||
|
|
||||||
var building = self.Trait<Building>();
|
var building = self.TraitOrDefault<Building>();
|
||||||
if (!building.SkipMakeAnimation)
|
if (building != null && !building.SkipMakeAnimation)
|
||||||
{
|
{
|
||||||
renderBuilding.PlayCustomAnimThen(self, info.Sequence, () =>
|
wsb.PlayCustomAnimation(self, info.Sequence, () =>
|
||||||
{
|
{
|
||||||
building.NotifyBuildingComplete(self);
|
building.NotifyBuildingComplete(self);
|
||||||
});
|
});
|
||||||
@@ -49,10 +49,10 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
|
|
||||||
public void Reverse(Actor self, Activity activity, bool queued = true)
|
public void Reverse(Actor self, Activity activity, bool queued = true)
|
||||||
{
|
{
|
||||||
renderBuilding.PlayCustomAnimBackwards(self, info.Sequence, () =>
|
wsb.PlayCustomAnimationBackwards(self, info.Sequence, () =>
|
||||||
{
|
{
|
||||||
// avoids visual glitches as we wait for the actor to get destroyed
|
// avoids visual glitches as we wait for the actor to get destroyed
|
||||||
renderBuilding.DefaultAnimation.PlayFetchIndex(info.Sequence, () => 0);
|
wsb.DefaultAnimation.PlayFetchIndex(info.Sequence, () => 0);
|
||||||
self.QueueActivity(queued, activity);
|
self.QueueActivity(queued, activity);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ using OpenRA.Traits;
|
|||||||
namespace OpenRA.Mods.Common.Traits
|
namespace OpenRA.Mods.Common.Traits
|
||||||
{
|
{
|
||||||
[Desc("Replaces the building animation when it repairs a unit.")]
|
[Desc("Replaces the building animation when it repairs a unit.")]
|
||||||
public class WithRepairAnimationInfo : ITraitInfo, Requires<RenderBuildingInfo>
|
public class WithRepairAnimationInfo : ITraitInfo, Requires<WithSpriteBodyInfo>
|
||||||
{
|
{
|
||||||
[Desc("Sequence name to use")]
|
[Desc("Sequence name to use")]
|
||||||
[SequenceReference] public readonly string Sequence = "active";
|
[SequenceReference] public readonly string Sequence = "active";
|
||||||
@@ -36,9 +36,9 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
|
|
||||||
public void Repairing(Actor self, Actor host)
|
public void Repairing(Actor self, Actor host)
|
||||||
{
|
{
|
||||||
var building = host.TraitOrDefault<RenderBuilding>();
|
var spriteBody = host.TraitOrDefault<WithSpriteBody>();
|
||||||
if (building != null && !(info.PauseOnLowPower && self.IsDisabled()))
|
if (spriteBody != null && !(info.PauseOnLowPower && self.IsDisabled()))
|
||||||
building.PlayCustomAnim(host, info.Sequence);
|
spriteBody.PlayCustomAnimation(host, info.Sequence);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -14,7 +14,7 @@ using OpenRA.Traits;
|
|||||||
namespace OpenRA.Mods.Common.Traits
|
namespace OpenRA.Mods.Common.Traits
|
||||||
{
|
{
|
||||||
[Desc("Displays the fill status of PlayerResources with an extra sprite overlay on the actor.")]
|
[Desc("Displays the fill status of PlayerResources with an extra sprite overlay on the actor.")]
|
||||||
class WithResourcesInfo : ITraitInfo, Requires<RenderSimpleInfo>
|
class WithResourcesInfo : ITraitInfo, Requires<WithSpriteBodyInfo>, Requires<RenderSpritesInfo>
|
||||||
{
|
{
|
||||||
[Desc("Sequence name to use")]
|
[Desc("Sequence name to use")]
|
||||||
[SequenceReference] public readonly string Sequence = "resources";
|
[SequenceReference] public readonly string Sequence = "resources";
|
||||||
@@ -26,7 +26,8 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
{
|
{
|
||||||
readonly WithResourcesInfo info;
|
readonly WithResourcesInfo info;
|
||||||
readonly AnimationWithOffset anim;
|
readonly AnimationWithOffset anim;
|
||||||
readonly RenderSimple rs;
|
readonly RenderSprites rs;
|
||||||
|
readonly WithSpriteBody wsb;
|
||||||
|
|
||||||
PlayerResources playerResources;
|
PlayerResources playerResources;
|
||||||
bool buildComplete;
|
bool buildComplete;
|
||||||
@@ -34,7 +35,8 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
public WithResources(Actor self, WithResourcesInfo info)
|
public WithResources(Actor self, WithResourcesInfo info)
|
||||||
{
|
{
|
||||||
this.info = info;
|
this.info = info;
|
||||||
rs = self.Trait<RenderSimple>();
|
rs = self.Trait<RenderSprites>();
|
||||||
|
wsb = self.Trait<WithSpriteBody>();
|
||||||
playerResources = self.Owner.PlayerActor.Trait<PlayerResources>();
|
playerResources = self.Owner.PlayerActor.Trait<PlayerResources>();
|
||||||
|
|
||||||
var a = new Animation(self.World, rs.GetImage(self));
|
var a = new Animation(self.World, rs.GetImage(self));
|
||||||
@@ -55,7 +57,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
public void DamageStateChanged(Actor self, AttackInfo e)
|
public void DamageStateChanged(Actor self, AttackInfo e)
|
||||||
{
|
{
|
||||||
if (anim.Animation.CurrentSequence != null)
|
if (anim.Animation.CurrentSequence != null)
|
||||||
anim.Animation.ReplaceAnim(rs.NormalizeSequence(self, info.Sequence));
|
anim.Animation.ReplaceAnim(wsb.NormalizeSequence(self, info.Sequence));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void OnOwnerChanged(Actor self, Player oldOwner, Player newOwner)
|
public void OnOwnerChanged(Actor self, Player oldOwner, Player newOwner)
|
||||||
|
|||||||
55
OpenRA.Mods.Common/Traits/Render/WithSiloAnimation.cs
Normal file
55
OpenRA.Mods.Common/Traits/Render/WithSiloAnimation.cs
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
#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.Collections.Generic;
|
||||||
|
using OpenRA.Graphics;
|
||||||
|
using OpenRA.Mods.Common.Graphics;
|
||||||
|
using OpenRA.Traits;
|
||||||
|
|
||||||
|
namespace OpenRA.Mods.Common.Traits
|
||||||
|
{
|
||||||
|
[Desc("Render trait for buildings that change the sprite according to the remaining resource storage capacity across all depots.")]
|
||||||
|
class WithSiloAnimationInfo : ITraitInfo, Requires<WithSpriteBodyInfo>, Requires<RenderSpritesInfo>
|
||||||
|
{
|
||||||
|
public readonly int Stages = 10;
|
||||||
|
|
||||||
|
public object Create(ActorInitializer init) { return new WithSiloAnimation(init, this); }
|
||||||
|
}
|
||||||
|
|
||||||
|
class WithSiloAnimation : INotifyBuildComplete, INotifyOwnerChanged
|
||||||
|
{
|
||||||
|
readonly WithSiloAnimationInfo info;
|
||||||
|
readonly WithSpriteBody wsb;
|
||||||
|
PlayerResources playerResources;
|
||||||
|
|
||||||
|
public WithSiloAnimation(ActorInitializer init, WithSiloAnimationInfo info)
|
||||||
|
{
|
||||||
|
this.info = info;
|
||||||
|
wsb = init.Self.Trait<WithSpriteBody>();
|
||||||
|
playerResources = init.Self.Owner.PlayerActor.Trait<PlayerResources>();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void BuildingComplete(Actor self)
|
||||||
|
{
|
||||||
|
var animation = wsb.NormalizeSequence(self, wsb.Info.Sequence);
|
||||||
|
|
||||||
|
wsb.DefaultAnimation.PlayFetchIndex(animation,
|
||||||
|
() => playerResources.ResourceCapacity != 0
|
||||||
|
? ((info.Stages * wsb.DefaultAnimation.CurrentSequence.Length - 1) * playerResources.Resources) / (info.Stages * playerResources.ResourceCapacity)
|
||||||
|
: 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OnOwnerChanged(Actor self, Player oldOwner, Player newOwner)
|
||||||
|
{
|
||||||
|
playerResources = newOwner.PlayerActor.Trait<PlayerResources>();
|
||||||
|
OnOwnerChanged(self, oldOwner, newOwner);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -19,11 +19,14 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
[Desc("Default trait for rendering sprite-based actors.")]
|
[Desc("Default trait for rendering sprite-based actors.")]
|
||||||
public class WithSpriteBodyInfo : UpgradableTraitInfo, IRenderActorPreviewSpritesInfo, Requires<RenderSpritesInfo>
|
public class WithSpriteBodyInfo : UpgradableTraitInfo, IRenderActorPreviewSpritesInfo, Requires<RenderSpritesInfo>
|
||||||
{
|
{
|
||||||
[Desc("Animation to play when the actor is created.")]
|
[Desc("Animation to play when the actor is created."), SequenceReference]
|
||||||
[SequenceReference] public readonly string StartSequence = null;
|
public readonly string StartSequence = null;
|
||||||
|
|
||||||
[Desc("Animation to play when the actor is idle.")]
|
[Desc("Animation to play when the actor is idle."), SequenceReference]
|
||||||
[SequenceReference] public readonly string Sequence = "idle";
|
public readonly string Sequence = "idle";
|
||||||
|
|
||||||
|
[Desc("Pause animation when actor is disabled.")]
|
||||||
|
public readonly bool PauseAnimationWhenDisabled = false;
|
||||||
|
|
||||||
public override object Create(ActorInitializer init) { return new WithSpriteBody(init, this); }
|
public override object Create(ActorInitializer init) { return new WithSpriteBody(init, this); }
|
||||||
|
|
||||||
@@ -36,7 +39,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public class WithSpriteBody : UpgradableTrait<WithSpriteBodyInfo>, ISpriteBody, INotifyDamageStateChanged
|
public class WithSpriteBody : UpgradableTrait<WithSpriteBodyInfo>, ISpriteBody, INotifyDamageStateChanged, INotifyBuildComplete
|
||||||
{
|
{
|
||||||
public readonly Animation DefaultAnimation;
|
public readonly Animation DefaultAnimation;
|
||||||
|
|
||||||
@@ -56,6 +59,10 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
() => PlayCustomAnimationRepeating(init.Self, info.Sequence));
|
() => PlayCustomAnimationRepeating(init.Self, info.Sequence));
|
||||||
else
|
else
|
||||||
DefaultAnimation.PlayRepeating(NormalizeSequence(init.Self, info.Sequence));
|
DefaultAnimation.PlayRepeating(NormalizeSequence(init.Self, info.Sequence));
|
||||||
|
|
||||||
|
if (info.PauseAnimationWhenDisabled)
|
||||||
|
DefaultAnimation.Paused = () =>
|
||||||
|
init.Self.IsDisabled() && DefaultAnimation.CurrentSequence.Name == NormalizeSequence(init.Self, Info.Sequence);
|
||||||
}
|
}
|
||||||
|
|
||||||
public string NormalizeSequence(Actor self, string sequence)
|
public string NormalizeSequence(Actor self, string sequence)
|
||||||
@@ -63,6 +70,12 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
return RenderSprites.NormalizeSequence(DefaultAnimation, self.GetDamageState(), sequence);
|
return RenderSprites.NormalizeSequence(DefaultAnimation, self.GetDamageState(), sequence);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: Get rid of INotifyBuildComplete in favor of using the upgrade system
|
||||||
|
public virtual void BuildingComplete(Actor self)
|
||||||
|
{
|
||||||
|
DefaultAnimation.PlayRepeating(NormalizeSequence(self, Info.Sequence));
|
||||||
|
}
|
||||||
|
|
||||||
public void PlayCustomAnimation(Actor self, string name, Action after = null)
|
public void PlayCustomAnimation(Actor self, string name, Action after = null)
|
||||||
{
|
{
|
||||||
DefaultAnimation.PlayThen(NormalizeSequence(self, name), () =>
|
DefaultAnimation.PlayThen(NormalizeSequence(self, name), () =>
|
||||||
|
|||||||
@@ -17,24 +17,25 @@ using OpenRA.Traits;
|
|||||||
|
|
||||||
namespace OpenRA.Mods.Common.Traits
|
namespace OpenRA.Mods.Common.Traits
|
||||||
{
|
{
|
||||||
class RenderBuildingTurretedInfo : RenderBuildingInfo, Requires<TurretedInfo>
|
[Desc("This actor has turret art with facings baked into the sprite.")]
|
||||||
|
public class WithTurretedSpriteBodyInfo : WithSpriteBodyInfo, Requires<TurretedInfo>, Requires<IBodyOrientationInfo>
|
||||||
{
|
{
|
||||||
public override object Create(ActorInitializer init) { return new RenderBuildingTurreted(init, this); }
|
public override object Create(ActorInitializer init) { return new WithTurretedSpriteBody(init, this); }
|
||||||
|
|
||||||
public override IEnumerable<IActorPreview> RenderPreviewSprites(ActorPreviewInitializer init, RenderSpritesInfo rs, string image, int facings, PaletteReference p)
|
public override IEnumerable<IActorPreview> RenderPreviewSprites(ActorPreviewInitializer init, RenderSpritesInfo rs, string image, int facings, PaletteReference p)
|
||||||
{
|
{
|
||||||
var t = init.Actor.Traits.WithInterface<TurretedInfo>()
|
var t = init.Actor.Traits.WithInterface<TurretedInfo>().FirstOrDefault();
|
||||||
.FirstOrDefault();
|
var wsb = init.Actor.Traits.WithInterface<WithSpriteBodyInfo>().FirstOrDefault();
|
||||||
|
|
||||||
// Show the correct turret facing
|
// Show the correct turret facing
|
||||||
var anim = new Animation(init.World, image, () => t.InitialFacing);
|
var anim = new Animation(init.World, image, () => t.InitialFacing);
|
||||||
anim.PlayRepeating(RenderSprites.NormalizeSequence(anim, init.GetDamageState(), Sequence));
|
anim.PlayRepeating(RenderSprites.NormalizeSequence(anim, init.GetDamageState(), wsb.Sequence));
|
||||||
|
|
||||||
yield return new SpriteActorPreview(anim, WVec.Zero, 0, p, rs.Scale);
|
yield return new SpriteActorPreview(anim, WVec.Zero, 0, p, rs.Scale);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class RenderBuildingTurreted : RenderBuilding
|
public class WithTurretedSpriteBody : WithSpriteBody
|
||||||
{
|
{
|
||||||
readonly Turreted turreted;
|
readonly Turreted turreted;
|
||||||
|
|
||||||
@@ -45,7 +46,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
return () => turreted.TurretFacing;
|
return () => turreted.TurretFacing;
|
||||||
}
|
}
|
||||||
|
|
||||||
public RenderBuildingTurreted(ActorInitializer init, RenderBuildingInfo info)
|
public WithTurretedSpriteBody(ActorInitializer init, WithSpriteBodyInfo info)
|
||||||
: base(init, info, MakeTurretFacingFunc(init.Self))
|
: base(init, info, MakeTurretFacingFunc(init.Self))
|
||||||
{
|
{
|
||||||
turreted = init.Self.TraitsImplementing<Turreted>().FirstOrDefault();
|
turreted = init.Self.TraitsImplementing<Turreted>().FirstOrDefault();
|
||||||
@@ -17,11 +17,11 @@ using OpenRA.Traits;
|
|||||||
namespace OpenRA.Mods.Common.Traits
|
namespace OpenRA.Mods.Common.Traits
|
||||||
{
|
{
|
||||||
[Desc("Render trait for actors that change sprites if neighbors with the same trait are present.")]
|
[Desc("Render trait for actors that change sprites if neighbors with the same trait are present.")]
|
||||||
class RenderBuildingWallInfo : RenderBuildingInfo
|
class WithWallSpriteBodyInfo : WithSpriteBodyInfo
|
||||||
{
|
{
|
||||||
public readonly string Type = "wall";
|
public readonly string Type = "wall";
|
||||||
|
|
||||||
public override object Create(ActorInitializer init) { return new RenderBuildingWall(init, this); }
|
public override object Create(ActorInitializer init) { return new WithWallSpriteBody(init, this); }
|
||||||
|
|
||||||
public override IEnumerable<IActorPreview> RenderPreviewSprites(ActorPreviewInitializer init, RenderSpritesInfo rs, string image, int facings, PaletteReference p)
|
public override IEnumerable<IActorPreview> RenderPreviewSprites(ActorPreviewInitializer init, RenderSpritesInfo rs, string image, int facings, PaletteReference p)
|
||||||
{
|
{
|
||||||
@@ -39,7 +39,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
var haveNeighbour = false;
|
var haveNeighbour = false;
|
||||||
foreach (var n in kv.Value)
|
foreach (var n in kv.Value)
|
||||||
{
|
{
|
||||||
var rb = init.World.Map.Rules.Actors[n].Traits.GetOrDefault<RenderBuildingWallInfo>();
|
var rb = init.World.Map.Rules.Actors[n].Traits.GetOrDefault<WithWallSpriteBodyInfo>();
|
||||||
if (rb != null && rb.Type == Type)
|
if (rb != null && rb.Type == Type)
|
||||||
{
|
{
|
||||||
haveNeighbour = true;
|
haveNeighbour = true;
|
||||||
@@ -68,33 +68,26 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class RenderBuildingWall : RenderBuilding, INotifyAddedToWorld, INotifyRemovedFromWorld
|
class WithWallSpriteBody : WithSpriteBody, INotifyAddedToWorld, INotifyRemovedFromWorld, ITick
|
||||||
{
|
{
|
||||||
readonly RenderBuildingWallInfo info;
|
readonly WithWallSpriteBodyInfo wallInfo;
|
||||||
int adjacent = 0;
|
int adjacent = 0;
|
||||||
bool dirty = true;
|
bool dirty = true;
|
||||||
|
|
||||||
public RenderBuildingWall(ActorInitializer init, RenderBuildingWallInfo info)
|
public WithWallSpriteBody(ActorInitializer init, WithWallSpriteBodyInfo info)
|
||||||
: base(init, info)
|
: base(init, info, () => 0)
|
||||||
{
|
{
|
||||||
this.info = info;
|
wallInfo = info;
|
||||||
}
|
DefaultAnimation.PlayFetchIndex(NormalizeSequence(init.Self, Info.Sequence), () => adjacent);
|
||||||
|
|
||||||
public override void BuildingComplete(Actor self)
|
|
||||||
{
|
|
||||||
DefaultAnimation.PlayFetchIndex(info.Sequence, () => adjacent);
|
|
||||||
UpdateNeighbours(self);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void DamageStateChanged(Actor self, AttackInfo e)
|
public override void DamageStateChanged(Actor self, AttackInfo e)
|
||||||
{
|
{
|
||||||
DefaultAnimation.PlayFetchIndex(NormalizeSequence(DefaultAnimation, e.DamageState, info.Sequence), () => adjacent);
|
DefaultAnimation.PlayFetchIndex(NormalizeSequence(self, Info.Sequence), () => adjacent);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void Tick(Actor self)
|
public void Tick(Actor self)
|
||||||
{
|
{
|
||||||
base.Tick(self);
|
|
||||||
|
|
||||||
if (!dirty)
|
if (!dirty)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@@ -105,8 +98,8 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
adjacent = 0;
|
adjacent = 0;
|
||||||
foreach (var a in adjacentActors)
|
foreach (var a in adjacentActors)
|
||||||
{
|
{
|
||||||
var rb = a.TraitOrDefault<RenderBuildingWall>();
|
var rb = a.TraitOrDefault<WithWallSpriteBody>();
|
||||||
if (rb == null || rb.info.Type != info.Type)
|
if (rb == null || rb.wallInfo.Type != wallInfo.Type)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
var location = self.Location;
|
var location = self.Location;
|
||||||
@@ -129,7 +122,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
{
|
{
|
||||||
var adjacentActors = CVec.Directions.SelectMany(dir =>
|
var adjacentActors = CVec.Directions.SelectMany(dir =>
|
||||||
self.World.ActorMap.GetUnitsAt(self.Location + dir))
|
self.World.ActorMap.GetUnitsAt(self.Location + dir))
|
||||||
.Select(a => a.TraitOrDefault<RenderBuildingWall>())
|
.Select(a => a.TraitOrDefault<WithWallSpriteBody>())
|
||||||
.Where(a => a != null);
|
.Where(a => a != null);
|
||||||
|
|
||||||
foreach (var rb in adjacentActors)
|
foreach (var rb in adjacentActors)
|
||||||
@@ -138,6 +131,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
|
|
||||||
public void AddedToWorld(Actor self)
|
public void AddedToWorld(Actor self)
|
||||||
{
|
{
|
||||||
|
DefaultAnimation.PlayFetchIndex(NormalizeSequence(self, Info.Sequence), () => adjacent);
|
||||||
UpdateNeighbours(self);
|
UpdateNeighbours(self);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -30,6 +30,9 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
public readonly int Range = 1;
|
public readonly int Range = 1;
|
||||||
public readonly string GrantUpgradeSound = "ironcur9.aud";
|
public readonly string GrantUpgradeSound = "ironcur9.aud";
|
||||||
|
|
||||||
|
[Desc("Sequence to play for granting actor when activated."), SequenceReference]
|
||||||
|
public readonly string GrantUpgradeSequence = "active";
|
||||||
|
|
||||||
public override object Create(ActorInitializer init) { return new GrantUpgradePower(init.Self, this); }
|
public override object Create(ActorInitializer init) { return new GrantUpgradePower(init.Self, this); }
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -53,7 +56,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
{
|
{
|
||||||
base.Activate(self, order, manager);
|
base.Activate(self, order, manager);
|
||||||
|
|
||||||
self.Trait<RenderBuilding>().PlayCustomAnim(self, "active");
|
self.Trait<WithSpriteBody>().PlayCustomAnimation(self, info.GrantUpgradeSequence);
|
||||||
|
|
||||||
Sound.Play(info.GrantUpgradeSound, self.World.Map.CenterOfCell(order.TargetLocation));
|
Sound.Play(info.GrantUpgradeSound, self.World.Map.CenterOfCell(order.TargetLocation));
|
||||||
|
|
||||||
|
|||||||
@@ -47,6 +47,10 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
|
|
||||||
public readonly string FlashType = null;
|
public readonly string FlashType = null;
|
||||||
|
|
||||||
|
[SequenceReference]
|
||||||
|
[Desc("Sequence the launching actor should play when activating this power.")]
|
||||||
|
public readonly string ActivationSequence = "active";
|
||||||
|
|
||||||
public override object Create(ActorInitializer init) { return new NukePower(init.Self, this); }
|
public override object Create(ActorInitializer init) { return new NukePower(init.Self, this); }
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -71,8 +75,11 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
else
|
else
|
||||||
Sound.Play(Info.IncomingSound);
|
Sound.Play(Info.IncomingSound);
|
||||||
|
|
||||||
var rb = self.Trait<RenderSimple>();
|
if (!string.IsNullOrEmpty(info.ActivationSequence))
|
||||||
rb.PlayCustomAnim(self, "active");
|
{
|
||||||
|
var wsb = self.Trait<WithSpriteBody>();
|
||||||
|
wsb.PlayCustomAnimation(self, info.ActivationSequence);
|
||||||
|
}
|
||||||
|
|
||||||
var targetPosition = self.World.Map.CenterOfCell(order.TargetLocation);
|
var targetPosition = self.World.Map.CenterOfCell(order.TargetLocation);
|
||||||
var missile = new NukeLaunch(self.Owner, info.MissileWeapon,
|
var missile = new NukeLaunch(self.Owner, info.MissileWeapon,
|
||||||
|
|||||||
@@ -1810,6 +1810,161 @@ namespace OpenRA.Mods.Common.UtilityCommands
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (engineVersion < 20150826)
|
||||||
|
{
|
||||||
|
// Replaced RenderBuildingCharge with RenderSprites + WithSpriteBody + WithChargeAnimation (+AutoSelectionSize)
|
||||||
|
if (depth == 0)
|
||||||
|
{
|
||||||
|
var childKeySequence = new[] { "ChargeSequence" };
|
||||||
|
var childKeysExcludeFromRS = new[] { "Sequence", "ChargeSequence", "PauseOnLowPower" };
|
||||||
|
|
||||||
|
var rb = node.Value.Nodes.FirstOrDefault(n => n.Key.StartsWith("RenderBuildingCharge"));
|
||||||
|
if (rb != null)
|
||||||
|
{
|
||||||
|
rb.Key = "WithChargeAnimation";
|
||||||
|
|
||||||
|
var rsNodes = rb.Value.Nodes.Where(n => !childKeysExcludeFromRS.Contains(n.Key)).ToList();
|
||||||
|
var wsbNodes = rb.Value.Nodes.Where(n => childKeySequence.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", ""));
|
||||||
|
|
||||||
|
node.Value.Nodes.Add(new MiniYamlNode("AutoSelectionSize", ""));
|
||||||
|
|
||||||
|
rb.Value.Nodes.RemoveAll(n => rsNodes.Contains(n));
|
||||||
|
rb.Value.Nodes.RemoveAll(n => wsbNodes.Contains(n));
|
||||||
|
}
|
||||||
|
|
||||||
|
var rrb = node.Value.Nodes.FirstOrDefault(n => n.Key.StartsWith("-RenderBuildingCharge"));
|
||||||
|
if (rrb != null)
|
||||||
|
rrb.Key = "-WithChargeAnimation";
|
||||||
|
}
|
||||||
|
|
||||||
|
// Replaced RenderBuildingSilo with RenderSprites + WithSpriteBody + WithSiloAnimation (+AutoSelectionSize)
|
||||||
|
if (depth == 0)
|
||||||
|
{
|
||||||
|
var childKeySequence = new[] { "Sequence", "PauseOnLowPower" };
|
||||||
|
|
||||||
|
var rb = node.Value.Nodes.FirstOrDefault(n => n.Key.StartsWith("RenderBuildingSilo"));
|
||||||
|
if (rb != null)
|
||||||
|
{
|
||||||
|
rb.Key = "WithSiloAnimation";
|
||||||
|
|
||||||
|
var rsNodes = rb.Value.Nodes.Where(n => !childKeySequence.Contains(n.Key)).ToList();
|
||||||
|
var wsbNodes = rb.Value.Nodes.Where(n => childKeySequence.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", ""));
|
||||||
|
|
||||||
|
if (wsbNodes.Any())
|
||||||
|
node.Value.Nodes.Add(new MiniYamlNode("WithSpriteBody", new MiniYaml("", wsbNodes)));
|
||||||
|
else
|
||||||
|
node.Value.Nodes.Add(new MiniYamlNode("WithSpriteBody", ""));
|
||||||
|
|
||||||
|
node.Value.Nodes.Add(new MiniYamlNode("AutoSelectionSize", ""));
|
||||||
|
|
||||||
|
rb.Value.Nodes.RemoveAll(n => rsNodes.Contains(n));
|
||||||
|
rb.Value.Nodes.RemoveAll(n => wsbNodes.Contains(n));
|
||||||
|
}
|
||||||
|
|
||||||
|
var rrb = node.Value.Nodes.FirstOrDefault(n => n.Key.StartsWith("-RenderBuildingSilo"));
|
||||||
|
if (rrb != null)
|
||||||
|
rrb.Key = "-WithSiloAnimation";
|
||||||
|
}
|
||||||
|
|
||||||
|
// Replaced RenderBuildingTurreted with RenderSprites + WithTurretedSpriteBody (+AutoSelectionSize)
|
||||||
|
if (depth == 0)
|
||||||
|
{
|
||||||
|
var childKeysExcludeFromRS = new[] { "Sequence", "PauseOnLowPower" };
|
||||||
|
|
||||||
|
var rb = node.Value.Nodes.FirstOrDefault(n => n.Key.StartsWith("RenderBuildingTurreted"));
|
||||||
|
if (rb != null)
|
||||||
|
{
|
||||||
|
rb.Key = "WithTurretedSpriteBody";
|
||||||
|
|
||||||
|
var rsNodes = rb.Value.Nodes.Where(n => !childKeysExcludeFromRS.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", ""));
|
||||||
|
|
||||||
|
node.Value.Nodes.Add(new MiniYamlNode("AutoSelectionSize", ""));
|
||||||
|
|
||||||
|
rb.Value.Nodes.RemoveAll(n => rsNodes.Contains(n));
|
||||||
|
}
|
||||||
|
|
||||||
|
var rrb = node.Value.Nodes.FirstOrDefault(n => n.Key.StartsWith("-RenderBuildingTurreted"));
|
||||||
|
if (rrb != null)
|
||||||
|
rrb.Key = "-WithTurretedSpriteBody";
|
||||||
|
}
|
||||||
|
|
||||||
|
// Replaced RenderBuildingWall with RenderSprites + WithWallSpriteBody (+AutoSelectionSize)
|
||||||
|
if (depth == 0)
|
||||||
|
{
|
||||||
|
var childKeysExcludeFromRS = new[] { "Sequence", "Type" };
|
||||||
|
|
||||||
|
var rb = node.Value.Nodes.FirstOrDefault(n => n.Key.StartsWith("RenderBuildingWall"));
|
||||||
|
if (rb != null)
|
||||||
|
{
|
||||||
|
rb.Key = "WithWallSpriteBody";
|
||||||
|
|
||||||
|
var rsNodes = rb.Value.Nodes.Where(n => !childKeysExcludeFromRS.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", ""));
|
||||||
|
|
||||||
|
node.Value.Nodes.Add(new MiniYamlNode("AutoSelectionSize", ""));
|
||||||
|
|
||||||
|
rb.Value.Nodes.RemoveAll(n => rsNodes.Contains(n));
|
||||||
|
}
|
||||||
|
|
||||||
|
var rrb = node.Value.Nodes.FirstOrDefault(n => n.Key.StartsWith("-RenderBuildingWall"));
|
||||||
|
if (rrb != null)
|
||||||
|
rrb.Key = "-WithWallSpriteBody";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (engineVersion < 20150828)
|
||||||
|
{
|
||||||
|
// Replaced RenderBuilding with RenderSprites + WithSpriteBody (+AutoSelectionSize)
|
||||||
|
if (depth == 0)
|
||||||
|
{
|
||||||
|
var childKeysExcludeFromRS = new[] { "Sequence", "PauseOnLowPower" };
|
||||||
|
|
||||||
|
var rb = node.Value.Nodes.FirstOrDefault(n => n.Key.StartsWith("RenderBuilding"));
|
||||||
|
if (rb != null)
|
||||||
|
{
|
||||||
|
rb.Key = "WithSpriteBody";
|
||||||
|
|
||||||
|
var rsNodes = rb.Value.Nodes.Where(n => !childKeysExcludeFromRS.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", ""));
|
||||||
|
|
||||||
|
node.Value.Nodes.Add(new MiniYamlNode("AutoSelectionSize", ""));
|
||||||
|
|
||||||
|
rb.Value.Nodes.RemoveAll(n => rsNodes.Contains(n));
|
||||||
|
}
|
||||||
|
|
||||||
|
var rrb = node.Value.Nodes.FirstOrDefault(n => n.Key.StartsWith("-RenderBuilding"));
|
||||||
|
if (rrb != null)
|
||||||
|
rrb.Key = "-WithSpriteBody";
|
||||||
|
|
||||||
|
if (depth == 2 && node.Key == "PauseOnLowPower" && (parentKey == "WithSpriteBody"
|
||||||
|
|| parentKey == "WithTurretedSpriteBody" || parentKey == "WithWallSpriteBody"))
|
||||||
|
node.Key = "PauseAnimationWhenDisabled";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
UpgradeActorRules(engineVersion, ref node.Value.Nodes, node, depth + 1);
|
UpgradeActorRules(engineVersion, ref node.Value.Nodes, node, depth + 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -92,9 +92,9 @@ namespace OpenRA.Mods.RA.Activities
|
|||||||
|
|
||||||
if (teleporter != null && self != teleporter && !teleporter.Disposed)
|
if (teleporter != null && self != teleporter && !teleporter.Disposed)
|
||||||
{
|
{
|
||||||
var building = teleporter.TraitOrDefault<RenderBuilding>();
|
var building = teleporter.TraitOrDefault<WithSpriteBody>();
|
||||||
if (building != null)
|
if (building != null)
|
||||||
building.PlayCustomAnim(teleporter, "active");
|
building.PlayCustomAnimation(teleporter, "active");
|
||||||
}
|
}
|
||||||
|
|
||||||
return NextActivity;
|
return NextActivity;
|
||||||
|
|||||||
@@ -287,7 +287,7 @@ BARB:
|
|||||||
NodeTypes: barbwire
|
NodeTypes: barbwire
|
||||||
LineBuildNode:
|
LineBuildNode:
|
||||||
Types: barbwire
|
Types: barbwire
|
||||||
RenderBuildingWall:
|
WithWallSpriteBody:
|
||||||
Type: barbwire
|
Type: barbwire
|
||||||
|
|
||||||
WOOD:
|
WOOD:
|
||||||
@@ -303,7 +303,7 @@ WOOD:
|
|||||||
NodeTypes: woodfence
|
NodeTypes: woodfence
|
||||||
LineBuildNode:
|
LineBuildNode:
|
||||||
Types: woodfence
|
Types: woodfence
|
||||||
RenderBuildingWall:
|
WithWallSpriteBody:
|
||||||
Type: woodfence
|
Type: woodfence
|
||||||
|
|
||||||
BRIDGE1:
|
BRIDGE1:
|
||||||
|
|||||||
@@ -432,7 +432,9 @@
|
|||||||
DamagedSounds: xplos.aud
|
DamagedSounds: xplos.aud
|
||||||
DestroyedSounds: crumble.aud
|
DestroyedSounds: crumble.aud
|
||||||
QuantizeFacingsFromSequence:
|
QuantizeFacingsFromSequence:
|
||||||
RenderBuilding:
|
RenderSprites:
|
||||||
|
WithSpriteBody:
|
||||||
|
AutoSelectionSize:
|
||||||
WithBuildingExplosion:
|
WithBuildingExplosion:
|
||||||
Delay: 1
|
Delay: 1
|
||||||
CaptureNotification:
|
CaptureNotification:
|
||||||
@@ -489,7 +491,9 @@
|
|||||||
Dimensions: 1,1
|
Dimensions: 1,1
|
||||||
Footprint: x
|
Footprint: x
|
||||||
QuantizeFacingsFromSequence:
|
QuantizeFacingsFromSequence:
|
||||||
RenderBuilding:
|
RenderSprites:
|
||||||
|
WithSpriteBody:
|
||||||
|
AutoSelectionSize:
|
||||||
Tooltip:
|
Tooltip:
|
||||||
Name: Civilian Building (Destroyed)
|
Name: Civilian Building (Destroyed)
|
||||||
GenericVisibility: None
|
GenericVisibility: None
|
||||||
@@ -518,8 +522,10 @@
|
|||||||
-WithBuildingExplosion:
|
-WithBuildingExplosion:
|
||||||
-TargetableBuilding:
|
-TargetableBuilding:
|
||||||
-Demolishable:
|
-Demolishable:
|
||||||
RenderBuilding:
|
RenderSprites:
|
||||||
Palette: terrain
|
Palette: terrain
|
||||||
|
WithSpriteBody:
|
||||||
|
AutoSelectionSize:
|
||||||
|
|
||||||
^CivFieldHusk:
|
^CivFieldHusk:
|
||||||
AppearsOnRadar:
|
AppearsOnRadar:
|
||||||
@@ -560,8 +566,10 @@
|
|||||||
Types: wall
|
Types: wall
|
||||||
BodyOrientation:
|
BodyOrientation:
|
||||||
QuantizedFacings: 1
|
QuantizedFacings: 1
|
||||||
RenderBuildingWall:
|
RenderSprites:
|
||||||
Palette: staticterrain
|
Palette: staticterrain
|
||||||
|
WithWallSpriteBody:
|
||||||
|
AutoSelectionSize:
|
||||||
GivesExperience:
|
GivesExperience:
|
||||||
AutoTargetIgnore:
|
AutoTargetIgnore:
|
||||||
Sellable:
|
Sellable:
|
||||||
@@ -599,8 +607,10 @@
|
|||||||
Name: Blossom Tree
|
Name: Blossom Tree
|
||||||
BodyOrientation:
|
BodyOrientation:
|
||||||
QuantizedFacings: 1
|
QuantizedFacings: 1
|
||||||
RenderBuilding:
|
RenderSprites:
|
||||||
Palette: staticterrain
|
Palette: staticterrain
|
||||||
|
WithSpriteBody:
|
||||||
|
AutoSelectionSize:
|
||||||
Building:
|
Building:
|
||||||
Footprint: x
|
Footprint: x
|
||||||
Dimensions: 1,1
|
Dimensions: 1,1
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ waypoint:
|
|||||||
|
|
||||||
^fact.colorpicker:
|
^fact.colorpicker:
|
||||||
Inherits: FACT
|
Inherits: FACT
|
||||||
RenderBuilding:
|
RenderSprites:
|
||||||
Image: fact
|
Image: fact
|
||||||
Palette: colorpicker
|
Palette: colorpicker
|
||||||
|
|
||||||
|
|||||||
@@ -72,7 +72,7 @@ FACT:
|
|||||||
|
|
||||||
FACT.GDI:
|
FACT.GDI:
|
||||||
Inherits: FACT
|
Inherits: FACT
|
||||||
RenderBuilding:
|
RenderSprites:
|
||||||
Image: fact
|
Image: fact
|
||||||
Buildable:
|
Buildable:
|
||||||
Queue: Building.GDI, Building.Nod
|
Queue: Building.GDI, Building.Nod
|
||||||
@@ -84,7 +84,7 @@ FACT.GDI:
|
|||||||
|
|
||||||
FACT.NOD:
|
FACT.NOD:
|
||||||
Inherits: FACT
|
Inherits: FACT
|
||||||
RenderBuilding:
|
RenderSprites:
|
||||||
Image: fact
|
Image: fact
|
||||||
Buildable:
|
Buildable:
|
||||||
Queue: Building.GDI, Building.Nod
|
Queue: Building.GDI, Building.Nod
|
||||||
@@ -210,12 +210,14 @@ SILO:
|
|||||||
Range: 4c0
|
Range: 4c0
|
||||||
Bib:
|
Bib:
|
||||||
HasMinibib: Yes
|
HasMinibib: Yes
|
||||||
RenderBuildingSilo:
|
RenderSprites:
|
||||||
|
WithSpriteBody:
|
||||||
|
AutoSelectionSize:
|
||||||
|
WithSiloAnimation:
|
||||||
StoresResources:
|
StoresResources:
|
||||||
PipCount: 10
|
PipCount: 10
|
||||||
PipColor: Green
|
PipColor: Green
|
||||||
Capacity: 2000
|
Capacity: 2000
|
||||||
-RenderBuilding:
|
|
||||||
-EmitInfantryOnSell:
|
-EmitInfantryOnSell:
|
||||||
Power:
|
Power:
|
||||||
Amount: -10
|
Amount: -10
|
||||||
@@ -459,8 +461,8 @@ HQ:
|
|||||||
RequiresPower:
|
RequiresPower:
|
||||||
CanPowerDown:
|
CanPowerDown:
|
||||||
DisabledOverlay:
|
DisabledOverlay:
|
||||||
RenderBuilding:
|
WithSpriteBody:
|
||||||
PauseOnLowPower: yes
|
PauseAnimationWhenDisabled: true
|
||||||
Health:
|
Health:
|
||||||
HP: 700
|
HP: 700
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
@@ -545,8 +547,8 @@ EYE:
|
|||||||
RequiresPower:
|
RequiresPower:
|
||||||
CanPowerDown:
|
CanPowerDown:
|
||||||
DisabledOverlay:
|
DisabledOverlay:
|
||||||
RenderBuilding:
|
WithSpriteBody:
|
||||||
PauseOnLowPower: yes
|
PauseAnimationWhenDisabled: true
|
||||||
Health:
|
Health:
|
||||||
HP: 1200
|
HP: 1200
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
@@ -650,14 +652,14 @@ GUN:
|
|||||||
Turreted:
|
Turreted:
|
||||||
ROT: 12
|
ROT: 12
|
||||||
InitialFacing: 50
|
InitialFacing: 50
|
||||||
RenderBuildingTurreted:
|
-WithSpriteBody:
|
||||||
|
WithTurretedSpriteBody:
|
||||||
Armament:
|
Armament:
|
||||||
Weapon: TurretGun
|
Weapon: TurretGun
|
||||||
LocalOffset: 512,0,112
|
LocalOffset: 512,0,112
|
||||||
MuzzleSequence: muzzle
|
MuzzleSequence: muzzle
|
||||||
AttackTurreted:
|
AttackTurreted:
|
||||||
WithMuzzleFlash:
|
WithMuzzleFlash:
|
||||||
-RenderBuilding:
|
|
||||||
-WithDeathAnimation:
|
-WithDeathAnimation:
|
||||||
DetectCloaked:
|
DetectCloaked:
|
||||||
Range: 3
|
Range: 3
|
||||||
@@ -691,13 +693,14 @@ SAM:
|
|||||||
Turreted:
|
Turreted:
|
||||||
ROT: 10
|
ROT: 10
|
||||||
InitialFacing: 0
|
InitialFacing: 0
|
||||||
RenderBuildingTurreted:
|
-WithSpriteBody:
|
||||||
|
WithTurretedSpriteBody:
|
||||||
|
AutoSelectionSize:
|
||||||
Armament:
|
Armament:
|
||||||
Weapon: SAMMissile
|
Weapon: SAMMissile
|
||||||
MuzzleSequence: muzzle
|
MuzzleSequence: muzzle
|
||||||
AttackPopupTurreted:
|
AttackPopupTurreted:
|
||||||
WithMuzzleFlash:
|
WithMuzzleFlash:
|
||||||
-RenderBuilding:
|
|
||||||
-RenderDetectionCircle:
|
-RenderDetectionCircle:
|
||||||
Power:
|
Power:
|
||||||
Amount: -20
|
Amount: -20
|
||||||
@@ -732,7 +735,7 @@ OBLI:
|
|||||||
Range: 8c0
|
Range: 8c0
|
||||||
Bib:
|
Bib:
|
||||||
HasMinibib: Yes
|
HasMinibib: Yes
|
||||||
RenderBuildingCharge:
|
WithChargeAnimation:
|
||||||
Armament:
|
Armament:
|
||||||
Weapon: Laser
|
Weapon: Laser
|
||||||
LocalOffset: 0,0,725
|
LocalOffset: 0,0,725
|
||||||
@@ -741,7 +744,6 @@ OBLI:
|
|||||||
ChargeAudio: obelpowr.aud
|
ChargeAudio: obelpowr.aud
|
||||||
ReloadTime: 40
|
ReloadTime: 40
|
||||||
InitialChargeDelay: 50
|
InitialChargeDelay: 50
|
||||||
-RenderBuilding:
|
|
||||||
-EmitInfantryOnSell:
|
-EmitInfantryOnSell:
|
||||||
DetectCloaked:
|
DetectCloaked:
|
||||||
Range: 5
|
Range: 5
|
||||||
@@ -854,7 +856,7 @@ SBAG:
|
|||||||
NodeTypes: sandbag
|
NodeTypes: sandbag
|
||||||
LineBuildNode:
|
LineBuildNode:
|
||||||
Types: sandbag
|
Types: sandbag
|
||||||
RenderBuildingWall:
|
WithWallSpriteBody:
|
||||||
Type: sandbag
|
Type: sandbag
|
||||||
|
|
||||||
CYCL:
|
CYCL:
|
||||||
@@ -879,7 +881,7 @@ CYCL:
|
|||||||
NodeTypes: chain
|
NodeTypes: chain
|
||||||
LineBuildNode:
|
LineBuildNode:
|
||||||
Types: chain
|
Types: chain
|
||||||
RenderBuildingWall:
|
WithWallSpriteBody:
|
||||||
Type: chain
|
Type: chain
|
||||||
|
|
||||||
BRIK:
|
BRIK:
|
||||||
@@ -909,7 +911,7 @@ BRIK:
|
|||||||
NodeTypes: concrete
|
NodeTypes: concrete
|
||||||
LineBuildNode:
|
LineBuildNode:
|
||||||
Types: concrete
|
Types: concrete
|
||||||
RenderBuildingWall:
|
WithWallSpriteBody:
|
||||||
Type: concrete
|
Type: concrete
|
||||||
|
|
||||||
BARRACKS:
|
BARRACKS:
|
||||||
|
|||||||
@@ -11,7 +11,6 @@ V19:
|
|||||||
|
|
||||||
V19.Husk:
|
V19.Husk:
|
||||||
Inherits: ^CivBuildingHusk
|
Inherits: ^CivBuildingHusk
|
||||||
-RenderBuilding:
|
|
||||||
AutoSelectionSize:
|
AutoSelectionSize:
|
||||||
RenderSprites:
|
RenderSprites:
|
||||||
BodyOrientation:
|
BodyOrientation:
|
||||||
@@ -88,7 +87,6 @@ BIO.Husk:
|
|||||||
|
|
||||||
MISS:
|
MISS:
|
||||||
Inherits: ^CivBuilding
|
Inherits: ^CivBuilding
|
||||||
RenderBuilding:
|
|
||||||
Building:
|
Building:
|
||||||
Footprint: xxx xxx
|
Footprint: xxx xxx
|
||||||
Dimensions: 3,2
|
Dimensions: 3,2
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ SPLIT2:
|
|||||||
|
|
||||||
SPLIT3:
|
SPLIT3:
|
||||||
Inherits: ^TibTree
|
Inherits: ^TibTree
|
||||||
RenderBuilding:
|
RenderSprites:
|
||||||
Image: split2
|
Image: split2
|
||||||
SeedsResource:
|
SeedsResource:
|
||||||
ResourceType: Tiberium
|
ResourceType: Tiberium
|
||||||
@@ -16,7 +16,7 @@ SPLIT3:
|
|||||||
|
|
||||||
SPLITBLUE:
|
SPLITBLUE:
|
||||||
Inherits: ^TibTree
|
Inherits: ^TibTree
|
||||||
RenderBuilding:
|
RenderSprites:
|
||||||
Image: split3
|
Image: split3
|
||||||
SeedsResource:
|
SeedsResource:
|
||||||
ResourceType: BlueTiberium
|
ResourceType: BlueTiberium
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
spicebloom:
|
spicebloom:
|
||||||
HiddenUnderShroud:
|
HiddenUnderShroud:
|
||||||
RenderBuilding:
|
RenderSprites:
|
||||||
|
WithSpriteBody:
|
||||||
|
AutoSelectionSize:
|
||||||
Building:
|
Building:
|
||||||
Footprint: x
|
Footprint: x
|
||||||
Dimensions: 1,1
|
Dimensions: 1,1
|
||||||
|
|||||||
@@ -275,7 +275,9 @@
|
|||||||
DamagedSounds: EXPLSML1.WAV
|
DamagedSounds: EXPLSML1.WAV
|
||||||
DestroyedSounds: EXPLHG1.WAV
|
DestroyedSounds: EXPLHG1.WAV
|
||||||
QuantizeFacingsFromSequence:
|
QuantizeFacingsFromSequence:
|
||||||
RenderBuilding:
|
RenderSprites:
|
||||||
|
WithSpriteBody:
|
||||||
|
AutoSelectionSize:
|
||||||
WithBuildingExplosion:
|
WithBuildingExplosion:
|
||||||
RepairableBuilding:
|
RepairableBuilding:
|
||||||
EmitInfantryOnSell:
|
EmitInfantryOnSell:
|
||||||
@@ -311,8 +313,10 @@
|
|||||||
-GivesBuildableArea:
|
-GivesBuildableArea:
|
||||||
-WithCrumbleOverlay:
|
-WithCrumbleOverlay:
|
||||||
-WithMakeAnimation:
|
-WithMakeAnimation:
|
||||||
-RenderBuilding:
|
-WithSpriteBody:
|
||||||
RenderBuildingWall:
|
RenderSprites:
|
||||||
|
WithWallSpriteBody:
|
||||||
|
AutoSelectionSize:
|
||||||
LineBuildNode:
|
LineBuildNode:
|
||||||
Types: turret
|
Types: turret
|
||||||
MustBeDestroyed:
|
MustBeDestroyed:
|
||||||
|
|||||||
@@ -67,7 +67,7 @@ conyard:
|
|||||||
ProductionBar:
|
ProductionBar:
|
||||||
Power:
|
Power:
|
||||||
Amount: 20
|
Amount: 20
|
||||||
RenderBuilding:
|
RenderSprites:
|
||||||
Image: conyard.harkonnen
|
Image: conyard.harkonnen
|
||||||
FactionImages:
|
FactionImages:
|
||||||
atreides: conyard.atreides
|
atreides: conyard.atreides
|
||||||
@@ -99,7 +99,7 @@ power:
|
|||||||
Type: Wood
|
Type: Wood
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 4c0
|
Range: 4c0
|
||||||
RenderBuilding:
|
RenderSprites:
|
||||||
Image: power.harkonnen
|
Image: power.harkonnen
|
||||||
FactionImages:
|
FactionImages:
|
||||||
atreides: power.atreides
|
atreides: power.atreides
|
||||||
@@ -160,7 +160,7 @@ barracks:
|
|||||||
Factions: atreides, ordos
|
Factions: atreides, ordos
|
||||||
Power:
|
Power:
|
||||||
Amount: -20
|
Amount: -20
|
||||||
RenderBuilding:
|
RenderSprites:
|
||||||
Image: barracks.harkonnen
|
Image: barracks.harkonnen
|
||||||
FactionImages:
|
FactionImages:
|
||||||
atreides: barracks.atreides
|
atreides: barracks.atreides
|
||||||
@@ -205,7 +205,7 @@ refinery:
|
|||||||
DeliveryOffset: 2,2
|
DeliveryOffset: 2,2
|
||||||
DeliveringActor: carryall.reinforce
|
DeliveringActor: carryall.reinforce
|
||||||
Facing: 160
|
Facing: 160
|
||||||
RenderBuilding:
|
RenderSprites:
|
||||||
Image: refinery.harkonnen
|
Image: refinery.harkonnen
|
||||||
FactionImages:
|
FactionImages:
|
||||||
atreides: refinery.atreides
|
atreides: refinery.atreides
|
||||||
@@ -241,12 +241,13 @@ silo:
|
|||||||
Type: Wood
|
Type: Wood
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 4c0
|
Range: 4c0
|
||||||
-RenderBuilding:
|
RenderSprites:
|
||||||
RenderBuildingSilo:
|
|
||||||
Image: silo.harkonnen
|
Image: silo.harkonnen
|
||||||
FactionImages:
|
FactionImages:
|
||||||
atreides: silo.atreides
|
atreides: silo.atreides
|
||||||
ordos: silo.ordos
|
ordos: silo.ordos
|
||||||
|
WithSpriteBody:
|
||||||
|
WithSiloAnimation:
|
||||||
StoresResources:
|
StoresResources:
|
||||||
PipColor: green
|
PipColor: green
|
||||||
PipCount: 5
|
PipCount: 5
|
||||||
@@ -280,7 +281,7 @@ light:
|
|||||||
Type: Wood
|
Type: Wood
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 4c0
|
Range: 4c0
|
||||||
RenderBuilding:
|
RenderSprites:
|
||||||
Image: light.harkonnen
|
Image: light.harkonnen
|
||||||
FactionImages:
|
FactionImages:
|
||||||
atreides: light.atreides
|
atreides: light.atreides
|
||||||
@@ -358,7 +359,7 @@ heavy:
|
|||||||
ProvidesPrerequisite@missiletank:
|
ProvidesPrerequisite@missiletank:
|
||||||
Prerequisite: heavy.missiletank
|
Prerequisite: heavy.missiletank
|
||||||
Factions: atreides, harkonnen
|
Factions: atreides, harkonnen
|
||||||
RenderBuilding:
|
RenderSprites:
|
||||||
Image: heavy.harkonnen
|
Image: heavy.harkonnen
|
||||||
FactionImages:
|
FactionImages:
|
||||||
atreides: heavy.atreides
|
atreides: heavy.atreides
|
||||||
@@ -404,7 +405,7 @@ radar:
|
|||||||
DetectCloaked:
|
DetectCloaked:
|
||||||
Range: 6
|
Range: 6
|
||||||
RenderDetectionCircle:
|
RenderDetectionCircle:
|
||||||
RenderBuilding:
|
RenderSprites:
|
||||||
Image: radar.harkonnen
|
Image: radar.harkonnen
|
||||||
FactionImages:
|
FactionImages:
|
||||||
atreides: radar.atreides
|
atreides: radar.atreides
|
||||||
@@ -449,7 +450,7 @@ starport:
|
|||||||
ProductionAirdrop:
|
ProductionAirdrop:
|
||||||
Produces: Starport
|
Produces: Starport
|
||||||
ActorType: frigate
|
ActorType: frigate
|
||||||
RenderBuilding:
|
RenderSprites:
|
||||||
Image: starport.harkonnen
|
Image: starport.harkonnen
|
||||||
FactionImages:
|
FactionImages:
|
||||||
atreides: starport.atreides
|
atreides: starport.atreides
|
||||||
@@ -510,7 +511,9 @@ wall:
|
|||||||
Types: wall
|
Types: wall
|
||||||
TargetableBuilding:
|
TargetableBuilding:
|
||||||
TargetTypes: Ground, Wall
|
TargetTypes: Ground, Wall
|
||||||
RenderBuildingWall:
|
RenderSprites:
|
||||||
|
WithWallSpriteBody:
|
||||||
|
AutoSelectionSize:
|
||||||
AutoTargetIgnore:
|
AutoTargetIgnore:
|
||||||
Sellable:
|
Sellable:
|
||||||
SellSounds: CHUNG.WAV
|
SellSounds: CHUNG.WAV
|
||||||
@@ -637,7 +640,7 @@ repair:
|
|||||||
FinishRepairingNotification: UnitRepaired
|
FinishRepairingNotification: UnitRepaired
|
||||||
RallyPoint:
|
RallyPoint:
|
||||||
Offset: 1,3
|
Offset: 1,3
|
||||||
RenderBuilding:
|
RenderSprites:
|
||||||
Image: repair.harkonnen
|
Image: repair.harkonnen
|
||||||
FactionImages:
|
FactionImages:
|
||||||
atreides: repair.atreides
|
atreides: repair.atreides
|
||||||
@@ -676,7 +679,7 @@ hightech:
|
|||||||
Type: Wood
|
Type: Wood
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 4c0
|
Range: 4c0
|
||||||
RenderBuilding:
|
RenderSprites:
|
||||||
Image: hightech.harkonnen
|
Image: hightech.harkonnen
|
||||||
FactionImages:
|
FactionImages:
|
||||||
atreides: hightech.atreides
|
atreides: hightech.atreides
|
||||||
@@ -737,7 +740,7 @@ research:
|
|||||||
Type: Wood
|
Type: Wood
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 4c0
|
Range: 4c0
|
||||||
RenderBuilding:
|
RenderSprites:
|
||||||
Image: research.harkonnen
|
Image: research.harkonnen
|
||||||
FactionImages:
|
FactionImages:
|
||||||
atreides: research.atreides
|
atreides: research.atreides
|
||||||
@@ -774,7 +777,7 @@ palace:
|
|||||||
Type: Wood
|
Type: Wood
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 8c0
|
Range: 8c0
|
||||||
RenderBuilding:
|
RenderSprites:
|
||||||
Image: palace.harkonnen
|
Image: palace.harkonnen
|
||||||
FactionImages:
|
FactionImages:
|
||||||
atreides: palace.atreides
|
atreides: palace.atreides
|
||||||
@@ -805,6 +808,7 @@ palace:
|
|||||||
DisplayBeacon: True
|
DisplayBeacon: True
|
||||||
DisplayRadarPing: True
|
DisplayRadarPing: True
|
||||||
CameraActor: camera
|
CameraActor: camera
|
||||||
|
ActivationSequence:
|
||||||
CanPowerDown:
|
CanPowerDown:
|
||||||
DisabledOverlay:
|
DisabledOverlay:
|
||||||
RequiresPower:
|
RequiresPower:
|
||||||
@@ -818,7 +822,7 @@ conyard.atreides:
|
|||||||
BuildPaletteOrder: 1000
|
BuildPaletteOrder: 1000
|
||||||
Prerequisites: ~disabled
|
Prerequisites: ~disabled
|
||||||
ForceFaction: atreides
|
ForceFaction: atreides
|
||||||
RenderBuilding:
|
RenderSprites:
|
||||||
Image: conyard.atreides
|
Image: conyard.atreides
|
||||||
-FactionImages:
|
-FactionImages:
|
||||||
|
|
||||||
@@ -829,7 +833,7 @@ conyard.harkonnen:
|
|||||||
BuildPaletteOrder: 1000
|
BuildPaletteOrder: 1000
|
||||||
Prerequisites: ~disabled
|
Prerequisites: ~disabled
|
||||||
ForceFaction: harkonnen
|
ForceFaction: harkonnen
|
||||||
RenderBuilding:
|
RenderSprites:
|
||||||
Image: conyard.harkonnen
|
Image: conyard.harkonnen
|
||||||
-FactionImages:
|
-FactionImages:
|
||||||
|
|
||||||
@@ -840,7 +844,7 @@ conyard.ordos:
|
|||||||
BuildPaletteOrder: 1000
|
BuildPaletteOrder: 1000
|
||||||
Prerequisites: ~disabled
|
Prerequisites: ~disabled
|
||||||
ForceFaction: ordos
|
ForceFaction: ordos
|
||||||
RenderBuilding:
|
RenderSprites:
|
||||||
Image: conyard.ordos
|
Image: conyard.ordos
|
||||||
-FactionImages:
|
-FactionImages:
|
||||||
|
|
||||||
|
|||||||
@@ -82,11 +82,13 @@ conyard.atreides:
|
|||||||
Length: 14
|
Length: 14
|
||||||
Offset: -48,64
|
Offset: -48,64
|
||||||
Tick: 80
|
Tick: 80
|
||||||
|
ZOffset: 1023
|
||||||
damaged-crane-overlay: DATA.R8
|
damaged-crane-overlay: DATA.R8
|
||||||
Start: 4436
|
Start: 4436
|
||||||
Length: 14
|
Length: 14
|
||||||
Offset: -48,64
|
Offset: -48,64
|
||||||
Tick: 80
|
Tick: 80
|
||||||
|
ZOffset: 1023
|
||||||
bib: BLOXBASE.R8
|
bib: BLOXBASE.R8
|
||||||
Frames: 611, 612, 613, 631, 632, 633
|
Frames: 611, 612, 613, 631, 632, 633
|
||||||
Length: 6
|
Length: 6
|
||||||
@@ -590,6 +592,7 @@ light.atreides:
|
|||||||
Offset: -48,64
|
Offset: -48,64
|
||||||
Tick: 200
|
Tick: 200
|
||||||
BlendMode: Additive
|
BlendMode: Additive
|
||||||
|
ZOffset: 1023
|
||||||
bib: BLOXBASE.R8
|
bib: BLOXBASE.R8
|
||||||
Frames: 611, 612, 613, 631, 632, 633
|
Frames: 611, 612, 613, 631, 632, 633
|
||||||
Length: 6
|
Length: 6
|
||||||
@@ -632,6 +635,7 @@ heavy.atreides:
|
|||||||
Offset: -48,80
|
Offset: -48,80
|
||||||
Tick: 200
|
Tick: 200
|
||||||
BlendMode: Additive
|
BlendMode: Additive
|
||||||
|
ZOffset: 511
|
||||||
bib: BLOXBASE.R8
|
bib: BLOXBASE.R8
|
||||||
Frames: 611, 612, 613, 631, 632, 633
|
Frames: 611, 612, 613, 631, 632, 633
|
||||||
Length: 6
|
Length: 6
|
||||||
@@ -665,11 +669,13 @@ conyard.harkonnen:
|
|||||||
Length: 14
|
Length: 14
|
||||||
Offset: -48,64
|
Offset: -48,64
|
||||||
Tick: 80
|
Tick: 80
|
||||||
|
ZOffset: 1023
|
||||||
damaged-crane-overlay: DATA.R8
|
damaged-crane-overlay: DATA.R8
|
||||||
Start: 4450
|
Start: 4450
|
||||||
Length: 14
|
Length: 14
|
||||||
Offset: -48,64
|
Offset: -48,64
|
||||||
Tick: 80
|
Tick: 80
|
||||||
|
ZOffset: 1023
|
||||||
bib: BLOXBASE.R8
|
bib: BLOXBASE.R8
|
||||||
Frames: 611, 612, 613, 631, 632, 633
|
Frames: 611, 612, 613, 631, 632, 633
|
||||||
Length: 6
|
Length: 6
|
||||||
@@ -983,6 +989,7 @@ light.harkonnen:
|
|||||||
Offset: -48,64
|
Offset: -48,64
|
||||||
Tick: 200
|
Tick: 200
|
||||||
BlendMode: Additive
|
BlendMode: Additive
|
||||||
|
ZOffset: 1023
|
||||||
bib: BLOXBASE.R8
|
bib: BLOXBASE.R8
|
||||||
Frames: 611, 612, 613, 631, 632, 633
|
Frames: 611, 612, 613, 631, 632, 633
|
||||||
Length: 6
|
Length: 6
|
||||||
@@ -1025,6 +1032,7 @@ heavy.harkonnen:
|
|||||||
Offset: -48,80
|
Offset: -48,80
|
||||||
Tick: 200
|
Tick: 200
|
||||||
BlendMode: Additive
|
BlendMode: Additive
|
||||||
|
ZOffset: 511
|
||||||
bib: BLOXBASE.R8
|
bib: BLOXBASE.R8
|
||||||
Frames: 611, 612, 613, 631, 632, 633
|
Frames: 611, 612, 613, 631, 632, 633
|
||||||
Length: 6
|
Length: 6
|
||||||
@@ -1058,11 +1066,13 @@ conyard.ordos:
|
|||||||
Length: 14
|
Length: 14
|
||||||
Offset: -48,64
|
Offset: -48,64
|
||||||
Tick: 80
|
Tick: 80
|
||||||
|
ZOffset: 1023
|
||||||
damaged-crane-overlay: DATA.R8
|
damaged-crane-overlay: DATA.R8
|
||||||
Start: 4464
|
Start: 4464
|
||||||
Length: 14
|
Length: 14
|
||||||
Offset: -48,64
|
Offset: -48,64
|
||||||
Tick: 80
|
Tick: 80
|
||||||
|
ZOffset: 1023
|
||||||
bib: BLOXBASE.R8
|
bib: BLOXBASE.R8
|
||||||
Frames: 611, 612, 613, 631, 632, 633
|
Frames: 611, 612, 613, 631, 632, 633
|
||||||
Length: 6
|
Length: 6
|
||||||
@@ -1368,6 +1378,7 @@ light.ordos:
|
|||||||
Offset: -48,64
|
Offset: -48,64
|
||||||
Tick: 200
|
Tick: 200
|
||||||
BlendMode: Additive
|
BlendMode: Additive
|
||||||
|
ZOffset: 1023
|
||||||
bib: BLOXBASE.R8
|
bib: BLOXBASE.R8
|
||||||
Frames: 611, 612, 613, 631, 632, 633
|
Frames: 611, 612, 613, 631, 632, 633
|
||||||
Length: 6
|
Length: 6
|
||||||
@@ -1410,6 +1421,7 @@ heavy.ordos:
|
|||||||
Offset: -48,80
|
Offset: -48,80
|
||||||
Tick: 200
|
Tick: 200
|
||||||
BlendMode: Additive
|
BlendMode: Additive
|
||||||
|
ZOffset: 511
|
||||||
bib: BLOXBASE.R8
|
bib: BLOXBASE.R8
|
||||||
Frames: 611, 612, 613, 631, 632, 633
|
Frames: 611, 612, 613, 631, 632, 633
|
||||||
Length: 6
|
Length: 6
|
||||||
|
|||||||
@@ -1729,14 +1729,14 @@ Rules:
|
|||||||
Turreted:
|
Turreted:
|
||||||
ROT: 15
|
ROT: 15
|
||||||
InitialFacing: 224
|
InitialFacing: 224
|
||||||
RenderBuildingTurreted:
|
RenderSprites:
|
||||||
Image: AGUN
|
Image: AGUN
|
||||||
|
WithTurretedSpriteBody:
|
||||||
Armament:
|
Armament:
|
||||||
Weapon: MissionColt
|
Weapon: MissionColt
|
||||||
LocalOffset: 432,150,-30, 432,-150,-30
|
LocalOffset: 432,150,-30, 432,-150,-30
|
||||||
AttackTurreted:
|
AttackTurreted:
|
||||||
AutoTarget:
|
AutoTarget:
|
||||||
-RenderBuilding:
|
|
||||||
-Selectable:
|
-Selectable:
|
||||||
E1.Autotarget:
|
E1.Autotarget:
|
||||||
Inherits: E1
|
Inherits: E1
|
||||||
|
|||||||
@@ -877,6 +877,7 @@ Rules:
|
|||||||
EndChargeSound: ironrdy1.aud
|
EndChargeSound: ironrdy1.aud
|
||||||
Range: 1
|
Range: 1
|
||||||
Upgrades: invulnerability
|
Upgrades: invulnerability
|
||||||
|
GrantUpgradeSequence: idle
|
||||||
Power:
|
Power:
|
||||||
Amount: 0
|
Amount: 0
|
||||||
MINVV:
|
MINVV:
|
||||||
@@ -893,9 +894,10 @@ Rules:
|
|||||||
Cost: 30
|
Cost: 30
|
||||||
Health:
|
Health:
|
||||||
HP: 200
|
HP: 200
|
||||||
RenderBuilding:
|
RenderSprites:
|
||||||
Image: miner
|
Image: miner
|
||||||
HasMakeAnimation: false
|
WithSpriteBody:
|
||||||
|
AutoSelectionSize:
|
||||||
Tooltip:
|
Tooltip:
|
||||||
Name: Bomb
|
Name: Bomb
|
||||||
Description: Bomb (Hotkey B)
|
Description: Bomb (Hotkey B)
|
||||||
@@ -943,6 +945,7 @@ Rules:
|
|||||||
EndChargeSound: ironrdy1.aud
|
EndChargeSound: ironrdy1.aud
|
||||||
Range: 1
|
Range: 1
|
||||||
Upgrades: invulnerability
|
Upgrades: invulnerability
|
||||||
|
GrantUpgradeSequence: idle
|
||||||
|
|
||||||
Sequences:
|
Sequences:
|
||||||
miner:
|
miner:
|
||||||
|
|||||||
@@ -891,13 +891,13 @@ Rules:
|
|||||||
Inherits: OILB
|
Inherits: OILB
|
||||||
Health:
|
Health:
|
||||||
HP: 6000
|
HP: 6000
|
||||||
RenderBuilding:
|
RenderSprites:
|
||||||
Image: OILB
|
Image: OILB
|
||||||
OILB.Weak:
|
OILB.Weak:
|
||||||
Inherits: OILB
|
Inherits: OILB
|
||||||
Health:
|
Health:
|
||||||
HP: 900
|
HP: 900
|
||||||
RenderBuilding:
|
RenderSprites:
|
||||||
Image: OILB
|
Image: OILB
|
||||||
|
|
||||||
Sequences:
|
Sequences:
|
||||||
|
|||||||
@@ -2238,7 +2238,7 @@ Rules:
|
|||||||
Inherits: DOME
|
Inherits: DOME
|
||||||
Buildable:
|
Buildable:
|
||||||
Prerequisites: ~disabled
|
Prerequisites: ~disabled
|
||||||
RenderBuilding:
|
RenderSprites:
|
||||||
Image: DOME
|
Image: DOME
|
||||||
-InfiltrateForExploration:
|
-InfiltrateForExploration:
|
||||||
TargetableBuilding:
|
TargetableBuilding:
|
||||||
|
|||||||
@@ -721,7 +721,7 @@ Rules:
|
|||||||
Prerequisites: ~disabled
|
Prerequisites: ~disabled
|
||||||
DOME.IGNORE:
|
DOME.IGNORE:
|
||||||
Inherits: DOME
|
Inherits: DOME
|
||||||
RenderBuilding:
|
RenderSprites:
|
||||||
Image: DOME
|
Image: DOME
|
||||||
AutoTargetIgnore:
|
AutoTargetIgnore:
|
||||||
Buildable:
|
Buildable:
|
||||||
|
|||||||
@@ -1273,7 +1273,7 @@ Rules:
|
|||||||
-ParatroopersPower@paratroopers:
|
-ParatroopersPower@paratroopers:
|
||||||
-AirstrikePower@parabombs:
|
-AirstrikePower@parabombs:
|
||||||
-SupportPowerChargeBar:
|
-SupportPowerChargeBar:
|
||||||
RenderBuilding:
|
RenderSprites:
|
||||||
Image: AFLD
|
Image: AFLD
|
||||||
ATEK.mission:
|
ATEK.mission:
|
||||||
Inherits: ATEK
|
Inherits: ATEK
|
||||||
@@ -1285,7 +1285,7 @@ Rules:
|
|||||||
-TargetableBuilding:
|
-TargetableBuilding:
|
||||||
-GivesBuildableArea:
|
-GivesBuildableArea:
|
||||||
-Huntable:
|
-Huntable:
|
||||||
RenderBuilding:
|
RenderSprites:
|
||||||
Image: ATEK
|
Image: ATEK
|
||||||
GUN:
|
GUN:
|
||||||
Valued:
|
Valued:
|
||||||
|
|||||||
@@ -232,7 +232,6 @@ V19.Husk:
|
|||||||
ExcludeTilesets: DESERT
|
ExcludeTilesets: DESERT
|
||||||
Tooltip:
|
Tooltip:
|
||||||
Name: Husk (Oil Pump)
|
Name: Husk (Oil Pump)
|
||||||
-RenderBuilding:
|
|
||||||
AutoSelectionSize:
|
AutoSelectionSize:
|
||||||
RenderSprites:
|
RenderSprites:
|
||||||
BodyOrientation:
|
BodyOrientation:
|
||||||
@@ -628,7 +627,7 @@ SNOWHUT:
|
|||||||
Building:
|
Building:
|
||||||
Footprint: x x
|
Footprint: x x
|
||||||
Dimensions: 1,2
|
Dimensions: 1,2
|
||||||
RenderBuilding:
|
RenderSprites:
|
||||||
Scale: 0.7
|
Scale: 0.7
|
||||||
|
|
||||||
LHUS:
|
LHUS:
|
||||||
|
|||||||
@@ -396,7 +396,9 @@
|
|||||||
DamagedSounds: kaboom1.aud
|
DamagedSounds: kaboom1.aud
|
||||||
DestroyedSounds: kaboom22.aud
|
DestroyedSounds: kaboom22.aud
|
||||||
QuantizeFacingsFromSequence:
|
QuantizeFacingsFromSequence:
|
||||||
RenderBuilding:
|
RenderSprites:
|
||||||
|
AutoSelectionSize:
|
||||||
|
WithSpriteBody:
|
||||||
WithBuildingExplosion:
|
WithBuildingExplosion:
|
||||||
CaptureNotification:
|
CaptureNotification:
|
||||||
ShakeOnDeath:
|
ShakeOnDeath:
|
||||||
@@ -462,8 +464,9 @@
|
|||||||
Types: wall
|
Types: wall
|
||||||
TargetableBuilding:
|
TargetableBuilding:
|
||||||
TargetTypes: Ground, DetonateAttack, Wall
|
TargetTypes: Ground, DetonateAttack, Wall
|
||||||
RenderBuildingWall:
|
RenderSprites:
|
||||||
Palette: effect
|
Palette: effect
|
||||||
|
WithWallSpriteBody:
|
||||||
GivesExperience:
|
GivesExperience:
|
||||||
AutoTargetIgnore:
|
AutoTargetIgnore:
|
||||||
ProximityCaptor:
|
ProximityCaptor:
|
||||||
@@ -520,7 +523,7 @@
|
|||||||
|
|
||||||
^CivBuilding:
|
^CivBuilding:
|
||||||
Inherits: ^TechBuilding
|
Inherits: ^TechBuilding
|
||||||
RenderBuilding:
|
RenderSprites:
|
||||||
Palette: terrain
|
Palette: terrain
|
||||||
EditorTilesetFilter:
|
EditorTilesetFilter:
|
||||||
ExcludeTilesets: INTERIOR
|
ExcludeTilesets: INTERIOR
|
||||||
@@ -664,7 +667,7 @@
|
|||||||
|
|
||||||
^DesertCivBuilding:
|
^DesertCivBuilding:
|
||||||
Inherits: ^CivBuilding
|
Inherits: ^CivBuilding
|
||||||
RenderBuilding:
|
RenderSprites:
|
||||||
Palette: terrain
|
Palette: terrain
|
||||||
EditorTilesetFilter:
|
EditorTilesetFilter:
|
||||||
RequireTilesets: DESERT
|
RequireTilesets: DESERT
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ FACF:
|
|||||||
Footprint: xxx xxx xxx
|
Footprint: xxx xxx xxx
|
||||||
Dimensions: 3,3
|
Dimensions: 3,3
|
||||||
Bib:
|
Bib:
|
||||||
RenderBuilding:
|
RenderSprites:
|
||||||
Image: FACT
|
Image: FACT
|
||||||
Valued:
|
Valued:
|
||||||
Cost: 250
|
Cost: 250
|
||||||
@@ -37,7 +37,7 @@ WEAF:
|
|||||||
Footprint: xxx xxx
|
Footprint: xxx xxx
|
||||||
Dimensions: 3,2
|
Dimensions: 3,2
|
||||||
Bib:
|
Bib:
|
||||||
RenderBuilding:
|
RenderSprites:
|
||||||
Image: WEAP
|
Image: WEAP
|
||||||
WithProductionDoorOverlay:
|
WithProductionDoorOverlay:
|
||||||
Sequence: build-top
|
Sequence: build-top
|
||||||
@@ -64,7 +64,7 @@ SYRF:
|
|||||||
Dimensions: 3,3
|
Dimensions: 3,3
|
||||||
Adjacent: 8
|
Adjacent: 8
|
||||||
TerrainTypes: Water
|
TerrainTypes: Water
|
||||||
RenderBuilding:
|
RenderSprites:
|
||||||
Image: SYRD
|
Image: SYRD
|
||||||
Valued:
|
Valued:
|
||||||
Cost: 100
|
Cost: 100
|
||||||
@@ -91,7 +91,7 @@ SPEF:
|
|||||||
Dimensions: 3,3
|
Dimensions: 3,3
|
||||||
Adjacent: 8
|
Adjacent: 8
|
||||||
TerrainTypes: Water
|
TerrainTypes: Water
|
||||||
RenderBuilding:
|
RenderSprites:
|
||||||
Image: SPEN
|
Image: SPEN
|
||||||
Valued:
|
Valued:
|
||||||
Cost: 100
|
Cost: 100
|
||||||
@@ -115,7 +115,7 @@ DOMF:
|
|||||||
Footprint: xx xx
|
Footprint: xx xx
|
||||||
Dimensions: 2,2
|
Dimensions: 2,2
|
||||||
Bib:
|
Bib:
|
||||||
RenderBuilding:
|
RenderSprites:
|
||||||
Image: DOME
|
Image: DOME
|
||||||
Valued:
|
Valued:
|
||||||
Cost: 180
|
Cost: 180
|
||||||
@@ -139,7 +139,7 @@ ATEF:
|
|||||||
Footprint: xx xx
|
Footprint: xx xx
|
||||||
Dimensions: 2,2
|
Dimensions: 2,2
|
||||||
Bib:
|
Bib:
|
||||||
RenderBuilding:
|
RenderSprites:
|
||||||
Image: ATEK
|
Image: ATEK
|
||||||
Valued:
|
Valued:
|
||||||
Cost: 150
|
Cost: 150
|
||||||
@@ -163,7 +163,7 @@ PDOF:
|
|||||||
Building:
|
Building:
|
||||||
Footprint: xx xx
|
Footprint: xx xx
|
||||||
Dimensions: 2,2
|
Dimensions: 2,2
|
||||||
RenderBuilding:
|
RenderSprites:
|
||||||
Image: PDOX
|
Image: PDOX
|
||||||
Bib:
|
Bib:
|
||||||
HasMinibib: Yes
|
HasMinibib: Yes
|
||||||
@@ -189,7 +189,7 @@ MSLF:
|
|||||||
Building:
|
Building:
|
||||||
Footprint: xx
|
Footprint: xx
|
||||||
Dimensions: 2,1
|
Dimensions: 2,1
|
||||||
RenderBuilding:
|
RenderSprites:
|
||||||
Image: MSLO
|
Image: MSLO
|
||||||
Valued:
|
Valued:
|
||||||
Cost: 250
|
Cost: 250
|
||||||
|
|||||||
@@ -415,7 +415,7 @@ waypoint:
|
|||||||
|
|
||||||
^fact.colorpicker:
|
^fact.colorpicker:
|
||||||
Inherits: FACT
|
Inherits: FACT
|
||||||
RenderBuilding:
|
RenderSprites:
|
||||||
Image: fact
|
Image: fact
|
||||||
Palette: colorpicker
|
Palette: colorpicker
|
||||||
|
|
||||||
|
|||||||
@@ -69,8 +69,8 @@ GAP:
|
|||||||
RequiresPower:
|
RequiresPower:
|
||||||
CanPowerDown:
|
CanPowerDown:
|
||||||
DisabledOverlay:
|
DisabledOverlay:
|
||||||
RenderBuilding:
|
WithSpriteBody:
|
||||||
PauseOnLowPower: yes
|
PauseAnimationWhenDisabled: true
|
||||||
Health:
|
Health:
|
||||||
HP: 1000
|
HP: 1000
|
||||||
Armor:
|
Armor:
|
||||||
@@ -401,7 +401,7 @@ TSLA:
|
|||||||
Range: 8c0
|
Range: 8c0
|
||||||
Bib:
|
Bib:
|
||||||
HasMinibib: Yes
|
HasMinibib: Yes
|
||||||
RenderBuildingCharge:
|
WithChargeAnimation:
|
||||||
Armament:
|
Armament:
|
||||||
Weapon: TeslaZap
|
Weapon: TeslaZap
|
||||||
LocalOffset: 0,0,427
|
LocalOffset: 0,0,427
|
||||||
@@ -409,7 +409,6 @@ TSLA:
|
|||||||
ChargeAudio: tslachg2.aud
|
ChargeAudio: tslachg2.aud
|
||||||
MaxCharges: 3
|
MaxCharges: 3
|
||||||
ReloadTime: 120
|
ReloadTime: 120
|
||||||
-RenderBuilding:
|
|
||||||
Power:
|
Power:
|
||||||
Amount: -100
|
Amount: -100
|
||||||
DetectCloaked:
|
DetectCloaked:
|
||||||
@@ -448,14 +447,14 @@ AGUN:
|
|||||||
Turreted:
|
Turreted:
|
||||||
ROT: 15
|
ROT: 15
|
||||||
InitialFacing: 224
|
InitialFacing: 224
|
||||||
RenderBuildingTurreted:
|
-WithSpriteBody:
|
||||||
|
WithTurretedSpriteBody:
|
||||||
Armament:
|
Armament:
|
||||||
Weapon: ZSU-23
|
Weapon: ZSU-23
|
||||||
LocalOffset: 432,150,-30, 432,-150,-30
|
LocalOffset: 432,150,-30, 432,-150,-30
|
||||||
MuzzleSequence: muzzle
|
MuzzleSequence: muzzle
|
||||||
AttackTurreted:
|
AttackTurreted:
|
||||||
WithMuzzleFlash:
|
WithMuzzleFlash:
|
||||||
-RenderBuilding:
|
|
||||||
RenderRangeCircle:
|
RenderRangeCircle:
|
||||||
RangeCircleType: aa
|
RangeCircleType: aa
|
||||||
Power:
|
Power:
|
||||||
@@ -607,14 +606,14 @@ GUN:
|
|||||||
Turreted:
|
Turreted:
|
||||||
ROT: 12
|
ROT: 12
|
||||||
InitialFacing: 50
|
InitialFacing: 50
|
||||||
RenderBuildingTurreted:
|
-WithSpriteBody:
|
||||||
|
WithTurretedSpriteBody:
|
||||||
Armament:
|
Armament:
|
||||||
Weapon: TurretGun
|
Weapon: TurretGun
|
||||||
LocalOffset: 512,0,112
|
LocalOffset: 512,0,112
|
||||||
MuzzleSequence: muzzle
|
MuzzleSequence: muzzle
|
||||||
AttackTurreted:
|
AttackTurreted:
|
||||||
WithMuzzleFlash:
|
WithMuzzleFlash:
|
||||||
-RenderBuilding:
|
|
||||||
Power:
|
Power:
|
||||||
Amount: -40
|
Amount: -40
|
||||||
DetectCloaked:
|
DetectCloaked:
|
||||||
@@ -683,13 +682,13 @@ SAM:
|
|||||||
Turreted:
|
Turreted:
|
||||||
ROT: 30
|
ROT: 30
|
||||||
InitialFacing: 0
|
InitialFacing: 0
|
||||||
RenderBuildingTurreted:
|
-WithSpriteBody:
|
||||||
|
WithTurretedSpriteBody:
|
||||||
Armament:
|
Armament:
|
||||||
Weapon: Nike
|
Weapon: Nike
|
||||||
MuzzleSequence: muzzle
|
MuzzleSequence: muzzle
|
||||||
AttackTurreted:
|
AttackTurreted:
|
||||||
WithMuzzleFlash:
|
WithMuzzleFlash:
|
||||||
-RenderBuilding:
|
|
||||||
RenderRangeCircle:
|
RenderRangeCircle:
|
||||||
RangeCircleType: aa
|
RangeCircleType: aa
|
||||||
Power:
|
Power:
|
||||||
@@ -979,11 +978,10 @@ SILO:
|
|||||||
Range: 4c0
|
Range: 4c0
|
||||||
Bib:
|
Bib:
|
||||||
HasMinibib: Yes
|
HasMinibib: Yes
|
||||||
RenderBuildingSilo:
|
WithSiloAnimation:
|
||||||
StoresResources:
|
StoresResources:
|
||||||
PipCount: 5
|
PipCount: 5
|
||||||
Capacity: 1500
|
Capacity: 1500
|
||||||
-RenderBuilding:
|
|
||||||
-EmitInfantryOnSell:
|
-EmitInfantryOnSell:
|
||||||
Power:
|
Power:
|
||||||
Amount: -10
|
Amount: -10
|
||||||
@@ -1502,7 +1500,7 @@ SBAG:
|
|||||||
NodeTypes: sandbag
|
NodeTypes: sandbag
|
||||||
LineBuildNode:
|
LineBuildNode:
|
||||||
Types: sandbag
|
Types: sandbag
|
||||||
RenderBuildingWall:
|
WithWallSpriteBody:
|
||||||
Type: sandbag
|
Type: sandbag
|
||||||
|
|
||||||
FENC:
|
FENC:
|
||||||
@@ -1527,7 +1525,7 @@ FENC:
|
|||||||
NodeTypes: fence
|
NodeTypes: fence
|
||||||
LineBuildNode:
|
LineBuildNode:
|
||||||
Types: fence
|
Types: fence
|
||||||
RenderBuildingWall:
|
WithWallSpriteBody:
|
||||||
Type: fence
|
Type: fence
|
||||||
|
|
||||||
BRIK:
|
BRIK:
|
||||||
@@ -1557,7 +1555,7 @@ BRIK:
|
|||||||
NodeTypes: concrete
|
NodeTypes: concrete
|
||||||
LineBuildNode:
|
LineBuildNode:
|
||||||
Types: concrete
|
Types: concrete
|
||||||
RenderBuildingWall:
|
WithWallSpriteBody:
|
||||||
Type: concrete
|
Type: concrete
|
||||||
|
|
||||||
CYCL:
|
CYCL:
|
||||||
@@ -1572,7 +1570,7 @@ CYCL:
|
|||||||
NodeTypes: chain
|
NodeTypes: chain
|
||||||
LineBuildNode:
|
LineBuildNode:
|
||||||
Types: chain
|
Types: chain
|
||||||
RenderBuildingWall:
|
WithWallSpriteBody:
|
||||||
Type: chain
|
Type: chain
|
||||||
|
|
||||||
BARB:
|
BARB:
|
||||||
@@ -1587,7 +1585,7 @@ BARB:
|
|||||||
NodeTypes: barbwire
|
NodeTypes: barbwire
|
||||||
LineBuildNode:
|
LineBuildNode:
|
||||||
Types: barbwire
|
Types: barbwire
|
||||||
RenderBuildingWall:
|
WithWallSpriteBody:
|
||||||
Type: barbwire
|
Type: barbwire
|
||||||
|
|
||||||
WOOD:
|
WOOD:
|
||||||
@@ -1602,7 +1600,7 @@ WOOD:
|
|||||||
NodeTypes: woodfence
|
NodeTypes: woodfence
|
||||||
LineBuildNode:
|
LineBuildNode:
|
||||||
Types: woodfence
|
Types: woodfence
|
||||||
RenderBuildingWall:
|
WithWallSpriteBody:
|
||||||
Type: woodfence
|
Type: woodfence
|
||||||
|
|
||||||
BARRACKS:
|
BARRACKS:
|
||||||
|
|||||||
@@ -261,7 +261,7 @@ AMMOCRAT:
|
|||||||
Type: none
|
Type: none
|
||||||
Health:
|
Health:
|
||||||
HP: 1
|
HP: 1
|
||||||
RenderBuilding:
|
RenderSprites:
|
||||||
Palette: player
|
Palette: player
|
||||||
|
|
||||||
BBOARD01:
|
BBOARD01:
|
||||||
@@ -625,7 +625,7 @@ CAARAY:
|
|||||||
Type: concrete
|
Type: concrete
|
||||||
Health:
|
Health:
|
||||||
HP: 400
|
HP: 400
|
||||||
RenderBuilding:
|
RenderSprites:
|
||||||
Palette: player
|
Palette: player
|
||||||
|
|
||||||
CAARMR:
|
CAARMR:
|
||||||
@@ -639,7 +639,7 @@ CAARMR:
|
|||||||
Type: concrete
|
Type: concrete
|
||||||
Health:
|
Health:
|
||||||
HP: 800
|
HP: 800
|
||||||
RenderBuilding:
|
RenderSprites:
|
||||||
Palette: player
|
Palette: player
|
||||||
ProvidesPrerequisite:
|
ProvidesPrerequisite:
|
||||||
Prerequisite: barracks.upgraded
|
Prerequisite: barracks.upgraded
|
||||||
@@ -655,7 +655,7 @@ CABHUT:
|
|||||||
Dimensions: 1, 1
|
Dimensions: 1, 1
|
||||||
Health:
|
Health:
|
||||||
HP: 2000
|
HP: 2000
|
||||||
RenderBuilding:
|
RenderSprites:
|
||||||
Palette: player
|
Palette: player
|
||||||
|
|
||||||
CACRSH01:
|
CACRSH01:
|
||||||
@@ -729,7 +729,7 @@ CAHOSP:
|
|||||||
Type: concrete
|
Type: concrete
|
||||||
Health:
|
Health:
|
||||||
HP: 800
|
HP: 800
|
||||||
RenderBuilding:
|
RenderSprites:
|
||||||
Palette: player
|
Palette: player
|
||||||
|
|
||||||
CAPYR01:
|
CAPYR01:
|
||||||
@@ -1130,7 +1130,7 @@ GAKODK:
|
|||||||
Type: heavy
|
Type: heavy
|
||||||
Health:
|
Health:
|
||||||
HP: 1500
|
HP: 1500
|
||||||
RenderBuilding:
|
RenderSprites:
|
||||||
Palette: player
|
Palette: player
|
||||||
WithIdleOverlay@LARGELIGHTS:
|
WithIdleOverlay@LARGELIGHTS:
|
||||||
Sequence: large-lights
|
Sequence: large-lights
|
||||||
@@ -1150,7 +1150,7 @@ GAOLDCC1:
|
|||||||
Type: heavy
|
Type: heavy
|
||||||
Health:
|
Health:
|
||||||
HP: 400
|
HP: 400
|
||||||
RenderBuilding:
|
RenderSprites:
|
||||||
Palette: player
|
Palette: player
|
||||||
|
|
||||||
GAOLDCC2:
|
GAOLDCC2:
|
||||||
@@ -1164,7 +1164,7 @@ GAOLDCC2:
|
|||||||
Type: heavy
|
Type: heavy
|
||||||
Health:
|
Health:
|
||||||
HP: 400
|
HP: 400
|
||||||
RenderBuilding:
|
RenderSprites:
|
||||||
Palette: player
|
Palette: player
|
||||||
|
|
||||||
GAOLDCC3:
|
GAOLDCC3:
|
||||||
@@ -1178,7 +1178,7 @@ GAOLDCC3:
|
|||||||
Type: heavy
|
Type: heavy
|
||||||
Health:
|
Health:
|
||||||
HP: 400
|
HP: 400
|
||||||
RenderBuilding:
|
RenderSprites:
|
||||||
Palette: player
|
Palette: player
|
||||||
|
|
||||||
GAOLDCC4:
|
GAOLDCC4:
|
||||||
@@ -1192,7 +1192,7 @@ GAOLDCC4:
|
|||||||
Type: heavy
|
Type: heavy
|
||||||
Health:
|
Health:
|
||||||
HP: 400
|
HP: 400
|
||||||
RenderBuilding:
|
RenderSprites:
|
||||||
Palette: player
|
Palette: player
|
||||||
|
|
||||||
GAOLDCC5:
|
GAOLDCC5:
|
||||||
@@ -1206,7 +1206,7 @@ GAOLDCC5:
|
|||||||
Type: heavy
|
Type: heavy
|
||||||
Health:
|
Health:
|
||||||
HP: 400
|
HP: 400
|
||||||
RenderBuilding:
|
RenderSprites:
|
||||||
Palette: player
|
Palette: player
|
||||||
|
|
||||||
GAOLDCC6:
|
GAOLDCC6:
|
||||||
@@ -1220,7 +1220,7 @@ GAOLDCC6:
|
|||||||
Type: heavy
|
Type: heavy
|
||||||
Health:
|
Health:
|
||||||
HP: 400
|
HP: 400
|
||||||
RenderBuilding:
|
RenderSprites:
|
||||||
Palette: player
|
Palette: player
|
||||||
|
|
||||||
GASAND:
|
GASAND:
|
||||||
@@ -1247,7 +1247,7 @@ GASAND:
|
|||||||
NodeTypes: sandbags
|
NodeTypes: sandbags
|
||||||
LineBuildNode:
|
LineBuildNode:
|
||||||
Types: sandbags
|
Types: sandbags
|
||||||
RenderBuildingWall:
|
WithWallSpriteBody:
|
||||||
Type: sandbags
|
Type: sandbags
|
||||||
|
|
||||||
GASPOT:
|
GASPOT:
|
||||||
@@ -1283,7 +1283,7 @@ GALITE:
|
|||||||
Cost: 200
|
Cost: 200
|
||||||
Tooltip:
|
Tooltip:
|
||||||
Name: Light Post
|
Name: Light Post
|
||||||
RenderBuilding:
|
RenderSprites:
|
||||||
Palette: terraindecoration
|
Palette: terraindecoration
|
||||||
-WithMakeAnimation:
|
-WithMakeAnimation:
|
||||||
-WithDeathAnimation:
|
-WithDeathAnimation:
|
||||||
@@ -1340,7 +1340,7 @@ NAMNTK:
|
|||||||
Type: heavy
|
Type: heavy
|
||||||
Health:
|
Health:
|
||||||
HP: 1500
|
HP: 1500
|
||||||
RenderBuilding:
|
RenderSprites:
|
||||||
Palette: player
|
Palette: player
|
||||||
WithIdleOverlay@LIGHTS:
|
WithIdleOverlay@LIGHTS:
|
||||||
Sequence: idle-lights
|
Sequence: idle-lights
|
||||||
@@ -1358,7 +1358,7 @@ NTPYRA:
|
|||||||
Type: heavy
|
Type: heavy
|
||||||
Health:
|
Health:
|
||||||
HP: 1500
|
HP: 1500
|
||||||
RenderBuilding:
|
RenderSprites:
|
||||||
Palette: player
|
Palette: player
|
||||||
WithIdleOverlay@LIGHTS:
|
WithIdleOverlay@LIGHTS:
|
||||||
Sequence: idle-lights
|
Sequence: idle-lights
|
||||||
@@ -1368,7 +1368,7 @@ UFO:
|
|||||||
Building:
|
Building:
|
||||||
Dimensions: 6, 4
|
Dimensions: 6, 4
|
||||||
Footprint: xxxxxx xxxxxx xxxxxx xxxxxx
|
Footprint: xxxxxx xxxxxx xxxxxx xxxxxx
|
||||||
RenderBuilding:
|
RenderSprites:
|
||||||
Palette: terraindecoration
|
Palette: terraindecoration
|
||||||
Selectable:
|
Selectable:
|
||||||
Bounds: 144, 72, 0, 0
|
Bounds: 144, 72, 0, 0
|
||||||
|
|||||||
@@ -84,7 +84,9 @@
|
|||||||
DamagedSounds: expnew01.aud
|
DamagedSounds: expnew01.aud
|
||||||
DestroyedSounds: crmble2.aud
|
DestroyedSounds: crmble2.aud
|
||||||
QuantizeFacingsFromSequence:
|
QuantizeFacingsFromSequence:
|
||||||
RenderBuilding:
|
RenderSprites:
|
||||||
|
WithSpriteBody:
|
||||||
|
AutoSelectionSize:
|
||||||
WithBuildingExplosion:
|
WithBuildingExplosion:
|
||||||
Sequences: building, large_bang, large_brnl, verylarge_clsn, large_tumu
|
Sequences: building, large_bang, large_brnl, verylarge_clsn, large_tumu
|
||||||
EngineerRepairable:
|
EngineerRepairable:
|
||||||
@@ -136,7 +138,7 @@
|
|||||||
Range: 4c0
|
Range: 4c0
|
||||||
Tooltip:
|
Tooltip:
|
||||||
Description: Civilian Building
|
Description: Civilian Building
|
||||||
RenderBuilding:
|
RenderSprites:
|
||||||
Palette: terraindecoration
|
Palette: terraindecoration
|
||||||
|
|
||||||
^CivBillboard:
|
^CivBillboard:
|
||||||
@@ -187,7 +189,9 @@
|
|||||||
Types: wall
|
Types: wall
|
||||||
TargetableBuilding:
|
TargetableBuilding:
|
||||||
TargetTypes: Ground, Wall, C4
|
TargetTypes: Ground, Wall, C4
|
||||||
RenderBuildingWall:
|
RenderSprites:
|
||||||
|
AutoSelectionSize:
|
||||||
|
WithWallSpriteBody:
|
||||||
Type: wall
|
Type: wall
|
||||||
GivesExperience:
|
GivesExperience:
|
||||||
AutoTargetIgnore:
|
AutoTargetIgnore:
|
||||||
@@ -532,8 +536,10 @@
|
|||||||
^BlossomTree:
|
^BlossomTree:
|
||||||
Tooltip:
|
Tooltip:
|
||||||
Name: Blossom Tree
|
Name: Blossom Tree
|
||||||
RenderBuilding:
|
RenderSprites:
|
||||||
Palette: player
|
Palette: player
|
||||||
|
WithSpriteBody:
|
||||||
|
AutoSelectionSize:
|
||||||
Building:
|
Building:
|
||||||
Footprint: x
|
Footprint: x
|
||||||
Dimensions: 1,1
|
Dimensions: 1,1
|
||||||
@@ -638,7 +644,9 @@
|
|||||||
Dimensions: 1,1
|
Dimensions: 1,1
|
||||||
Footprint: x
|
Footprint: x
|
||||||
TerrainTypes: Clear, Road, DirtRoad, Rough
|
TerrainTypes: Clear, Road, DirtRoad, Rough
|
||||||
RenderBuilding:
|
RenderSprites:
|
||||||
|
WithSpriteBody:
|
||||||
|
AutoSelectionSize:
|
||||||
WithMakeAnimation:
|
WithMakeAnimation:
|
||||||
SelectionDecorations:
|
SelectionDecorations:
|
||||||
Palette: pips
|
Palette: pips
|
||||||
|
|||||||
@@ -247,7 +247,7 @@ GADEPT:
|
|||||||
ProvidesPrerequisite@buildingname:
|
ProvidesPrerequisite@buildingname:
|
||||||
SelectionDecorations:
|
SelectionDecorations:
|
||||||
VisualBounds: 98, 68, -6, -6
|
VisualBounds: 98, 68, -6, -6
|
||||||
RenderBuilding:
|
RenderSprites:
|
||||||
Image: gadept.gdi
|
Image: gadept.gdi
|
||||||
FactionImages:
|
FactionImages:
|
||||||
gdi: gadept.gdi
|
gdi: gadept.gdi
|
||||||
@@ -348,7 +348,6 @@ GAPLUG:
|
|||||||
CanPowerDown:
|
CanPowerDown:
|
||||||
IndicatorPalette: mouse
|
IndicatorPalette: mouse
|
||||||
DisabledOverlay:
|
DisabledOverlay:
|
||||||
RenderBuilding:
|
|
||||||
WithIdleOverlay@DISH:
|
WithIdleOverlay@DISH:
|
||||||
Sequence: idle-dish
|
Sequence: idle-dish
|
||||||
WithIdleOverlay@LIGHTS:
|
WithIdleOverlay@LIGHTS:
|
||||||
|
|||||||
@@ -25,6 +25,9 @@ GAWALL:
|
|||||||
|
|
||||||
GACTWR:
|
GACTWR:
|
||||||
Inherits: ^Defense
|
Inherits: ^Defense
|
||||||
|
-WithSpriteBody:
|
||||||
|
WithWallSpriteBody:
|
||||||
|
Type: wall
|
||||||
Valued:
|
Valued:
|
||||||
Cost: 600
|
Cost: 600
|
||||||
Tooltip:
|
Tooltip:
|
||||||
@@ -102,9 +105,6 @@ GACTWR:
|
|||||||
Sequence: idle-lights
|
Sequence: idle-lights
|
||||||
LineBuildNode:
|
LineBuildNode:
|
||||||
Types: turret
|
Types: turret
|
||||||
-RenderBuilding:
|
|
||||||
RenderBuildingWall:
|
|
||||||
Type: wall
|
|
||||||
Power@base:
|
Power@base:
|
||||||
Amount: -10
|
Amount: -10
|
||||||
Power@turrets:
|
Power@turrets:
|
||||||
|
|||||||
@@ -206,7 +206,6 @@ GAARTY:
|
|||||||
MuzzleSequence: muzzle
|
MuzzleSequence: muzzle
|
||||||
BodyOrientation:
|
BodyOrientation:
|
||||||
QuantizedFacings: 32
|
QuantizedFacings: 32
|
||||||
RenderBuilding:
|
|
||||||
RenderVoxels:
|
RenderVoxels:
|
||||||
LightAmbientColor: 0.4, 0.4, 0.4
|
LightAmbientColor: 0.4, 0.4, 0.4
|
||||||
WithVoxelBarrel:
|
WithVoxelBarrel:
|
||||||
|
|||||||
@@ -97,7 +97,7 @@ PROC:
|
|||||||
ProvidesPrerequisite@buildingname:
|
ProvidesPrerequisite@buildingname:
|
||||||
SelectionDecorations:
|
SelectionDecorations:
|
||||||
VisualBounds: 134, 122, 0, -18
|
VisualBounds: 134, 122, 0, -18
|
||||||
RenderBuilding:
|
RenderSprites:
|
||||||
Image: proc.gdi
|
Image: proc.gdi
|
||||||
FactionImages:
|
FactionImages:
|
||||||
gdi: proc.gdi
|
gdi: proc.gdi
|
||||||
@@ -126,12 +126,13 @@ GASILO:
|
|||||||
Type: Wood
|
Type: Wood
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 4c0
|
Range: 4c0
|
||||||
-RenderBuilding:
|
RenderSprites:
|
||||||
RenderBuildingSilo:
|
|
||||||
Image: gasilo.gdi
|
Image: gasilo.gdi
|
||||||
FactionImages:
|
FactionImages:
|
||||||
gdi: gasilo.gdi
|
gdi: gasilo.gdi
|
||||||
nod: gasilo.nod
|
nod: gasilo.nod
|
||||||
|
WithSpriteBody:
|
||||||
|
WithSiloAnimation:
|
||||||
WithIdleOverlay@UNDERLAY:
|
WithIdleOverlay@UNDERLAY:
|
||||||
Sequence: idle-underlay
|
Sequence: idle-underlay
|
||||||
WithIdleOverlay@LIGHTS:
|
WithIdleOverlay@LIGHTS:
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ NAPULS:
|
|||||||
Amount: -150
|
Amount: -150
|
||||||
SelectionDecorations:
|
SelectionDecorations:
|
||||||
VisualBounds: 78, 54, 0, -12
|
VisualBounds: 78, 54, 0, -12
|
||||||
RenderBuilding:
|
RenderSprites:
|
||||||
Image: napuls.gdi
|
Image: napuls.gdi
|
||||||
FactionImages:
|
FactionImages:
|
||||||
gdi: napuls.gdi
|
gdi: napuls.gdi
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ BIGBLUE:
|
|||||||
Inherits: ^BlossomTree
|
Inherits: ^BlossomTree
|
||||||
Tooltip:
|
Tooltip:
|
||||||
Name: Large Blue Tiberium Crystal
|
Name: Large Blue Tiberium Crystal
|
||||||
RenderBuilding:
|
RenderSprites:
|
||||||
Palette: bluetiberium
|
Palette: bluetiberium
|
||||||
RadarColorFromTerrain:
|
RadarColorFromTerrain:
|
||||||
Terrain: BlueTiberium
|
Terrain: BlueTiberium
|
||||||
|
|||||||
@@ -16,11 +16,14 @@ gacnst:
|
|||||||
ShadowStart: 24
|
ShadowStart: 24
|
||||||
crane-overlay: gtcnst_d
|
crane-overlay: gtcnst_d
|
||||||
Length: 20
|
Length: 20
|
||||||
|
ZOffset: 1023
|
||||||
damaged-crane-overlay: gtcnst_d
|
damaged-crane-overlay: gtcnst_d
|
||||||
Length: 20
|
Length: 20
|
||||||
|
ZOffset: 1023
|
||||||
critical-crane-overlay: gtcnst_d
|
critical-crane-overlay: gtcnst_d
|
||||||
Start: 20
|
Start: 20
|
||||||
Length: 20
|
Length: 20
|
||||||
|
ZOffset: 1023
|
||||||
idle-top: gtcnst_c
|
idle-top: gtcnst_c
|
||||||
Length: 15
|
Length: 15
|
||||||
Tick: 200
|
Tick: 200
|
||||||
@@ -109,10 +112,12 @@ gapile:
|
|||||||
production-lights: gtpile_a
|
production-lights: gtpile_a
|
||||||
Length: 7
|
Length: 7
|
||||||
Tick: 200
|
Tick: 200
|
||||||
|
ZOffset: 1023
|
||||||
damaged-production-lights: gtpile_a
|
damaged-production-lights: gtpile_a
|
||||||
Start:7
|
Start:7
|
||||||
Length: 7
|
Length: 7
|
||||||
Tick: 200
|
Tick: 200
|
||||||
|
ZOffset: 1023
|
||||||
idle-light: gtpile_b
|
idle-light: gtpile_b
|
||||||
Length: 7
|
Length: 7
|
||||||
Tick: 200
|
Tick: 200
|
||||||
@@ -273,10 +278,12 @@ nahand:
|
|||||||
production-light: nthand_a
|
production-light: nthand_a
|
||||||
Length: 5
|
Length: 5
|
||||||
Tick: 100
|
Tick: 100
|
||||||
|
ZOffset: 1023
|
||||||
damaged-production-light: nthand_a
|
damaged-production-light: nthand_a
|
||||||
Start: 5
|
Start: 5
|
||||||
Length: 5
|
Length: 5
|
||||||
Tick: 100
|
Tick: 100
|
||||||
|
ZOffset: 1023
|
||||||
idle-lights: nthand_b
|
idle-lights: nthand_b
|
||||||
Length: 8
|
Length: 8
|
||||||
Tick: 200
|
Tick: 200
|
||||||
@@ -1163,10 +1170,10 @@ namisl:
|
|||||||
make: ntmislmk
|
make: ntmislmk
|
||||||
Length: 18
|
Length: 18
|
||||||
ShadowStart: 18
|
ShadowStart: 18
|
||||||
active: ntmisl_a
|
active: ntmisl_a # TODO: This is an overlay, but currently used as animation
|
||||||
Length: 10
|
Length: 10
|
||||||
Tick: 80
|
Tick: 80
|
||||||
damaged-active: ntmisl_a
|
damaged-active: ntmisl_a # TODO: This is an overlay, but currently used as animation
|
||||||
Start: 10
|
Start: 10
|
||||||
Length: 10
|
Length: 10
|
||||||
Tick: 80
|
Tick: 80
|
||||||
|
|||||||
Reference in New Issue
Block a user