Merge pull request #7477 from pchote/d2k-raceart
Add race-specific sequence support, and overhaul D2K actor definitions.
This commit is contained in:
@@ -238,7 +238,9 @@ namespace OpenRA.Editor
|
|||||||
if (rsi != null && rsi.EditorPalette != null && rsi.EditorPalette.Contains("terrain"))
|
if (rsi != null && rsi.EditorPalette != null && rsi.EditorPalette.Contains("terrain"))
|
||||||
templatePalette = palette;
|
templatePalette = palette;
|
||||||
|
|
||||||
var template = RenderUtils.RenderActor(info, tileset, templatePalette);
|
var race = Program.Rules.Actors["world"].Traits.WithInterface<CountryInfo>().First().Race;
|
||||||
|
var sequenceProvider = Program.Rules.Sequences[tileset.Id];
|
||||||
|
var template = RenderUtils.RenderActor(info, sequenceProvider, tileset, templatePalette, race);
|
||||||
var ibox = new PictureBox
|
var ibox = new PictureBox
|
||||||
{
|
{
|
||||||
Image = template.Bitmap,
|
Image = template.Bitmap,
|
||||||
|
|||||||
@@ -46,9 +46,9 @@ namespace OpenRA.Editor
|
|||||||
return bitmap;
|
return bitmap;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ActorTemplate RenderActor(ActorInfo info, TileSet tileset, IPalette p)
|
public static ActorTemplate RenderActor(ActorInfo info, SequenceProvider sequenceProvider, TileSet tileset, IPalette p, string race)
|
||||||
{
|
{
|
||||||
var image = info.Traits.Get<ILegacyEditorRenderInfo>().EditorImage(info);
|
var image = info.Traits.Get<ILegacyEditorRenderInfo>().EditorImage(info, sequenceProvider, race);
|
||||||
using (var s = GlobalFileSystem.OpenWithExts(image, tileset.Extensions))
|
using (var s = GlobalFileSystem.OpenWithExts(image, tileset.Extensions))
|
||||||
{
|
{
|
||||||
var shp = new ShpTDSprite(s);
|
var shp = new ShpTDSprite(s);
|
||||||
|
|||||||
@@ -42,6 +42,11 @@ namespace OpenRA.Graphics
|
|||||||
return seq;
|
return seq;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public bool HasSequence(string unitName)
|
||||||
|
{
|
||||||
|
return sequences.Value.ContainsKey(unitName);
|
||||||
|
}
|
||||||
|
|
||||||
public bool HasSequence(string unitName, string sequenceName)
|
public bool HasSequence(string unitName, string sequenceName)
|
||||||
{
|
{
|
||||||
UnitSequences unitSeq;
|
UnitSequences unitSeq;
|
||||||
|
|||||||
@@ -102,4 +102,14 @@ namespace OpenRA
|
|||||||
return world.Players.First(x => x.InternalName == PlayerName);
|
return world.Players.First(x => x.InternalName == PlayerName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Allows maps / transformations to specify the race variant of an actor.
|
||||||
|
public class RaceInit : IActorInit<string>
|
||||||
|
{
|
||||||
|
[FieldFromYamlKey] public readonly string Race;
|
||||||
|
|
||||||
|
public RaceInit() { }
|
||||||
|
public RaceInit(string race) { Race = race; }
|
||||||
|
public string Value(World world) { return Race; }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -46,10 +46,10 @@ namespace OpenRA
|
|||||||
public Shroud Shroud;
|
public Shroud Shroud;
|
||||||
public World World { get; private set; }
|
public World World { get; private set; }
|
||||||
|
|
||||||
static CountryInfo ChooseCountry(World world, string name)
|
static CountryInfo ChooseCountry(World world, string name, bool requireSelectable = true)
|
||||||
{
|
{
|
||||||
var selectableCountries = world.Map.Rules.Actors["world"].Traits
|
var selectableCountries = world.Map.Rules.Actors["world"].Traits
|
||||||
.WithInterface<CountryInfo>().Where(c => c.Selectable)
|
.WithInterface<CountryInfo>().Where(c => !requireSelectable || c.Selectable)
|
||||||
.ToList();
|
.ToList();
|
||||||
|
|
||||||
return selectableCountries.FirstOrDefault(c => c.Race == name)
|
return selectableCountries.FirstOrDefault(c => c.Race == name)
|
||||||
@@ -82,7 +82,7 @@ namespace OpenRA
|
|||||||
Playable = pr.Playable;
|
Playable = pr.Playable;
|
||||||
Spectating = pr.Spectating;
|
Spectating = pr.Spectating;
|
||||||
botType = pr.Bot;
|
botType = pr.Bot;
|
||||||
Country = ChooseCountry(world, pr.Race);
|
Country = ChooseCountry(world, pr.Race, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
PlayerActor = world.CreateActor("Player", new TypeDictionary { new OwnerInit(this) });
|
PlayerActor = world.CreateActor("Player", new TypeDictionary { new OwnerInit(this) });
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ namespace OpenRA.Traits
|
|||||||
return new WRot(WAngle.Zero, WAngle.Zero, WAngle.FromFacing(facing));
|
return new WRot(WAngle.Zero, WAngle.Zero, WAngle.FromFacing(facing));
|
||||||
}
|
}
|
||||||
|
|
||||||
public object Create(ActorInitializer init) { return new BodyOrientation(init.Self, this); }
|
public object Create(ActorInitializer init) { return new BodyOrientation(init, this); }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class BodyOrientation : IBodyOrientation
|
public class BodyOrientation : IBodyOrientation
|
||||||
@@ -50,9 +50,11 @@ namespace OpenRA.Traits
|
|||||||
|
|
||||||
[Sync] public int QuantizedFacings { get { return quantizedFacings.Value; } }
|
[Sync] public int QuantizedFacings { get { return quantizedFacings.Value; } }
|
||||||
|
|
||||||
public BodyOrientation(Actor self, BodyOrientationInfo info)
|
public BodyOrientation(ActorInitializer init, BodyOrientationInfo info)
|
||||||
{
|
{
|
||||||
this.info = info;
|
this.info = info;
|
||||||
|
var self = init.Self;
|
||||||
|
var race = init.Contains<RaceInit>() ? init.Get<RaceInit, string>() : self.Owner.Country.Race;
|
||||||
|
|
||||||
quantizedFacings = Exts.Lazy(() =>
|
quantizedFacings = Exts.Lazy(() =>
|
||||||
{
|
{
|
||||||
@@ -64,7 +66,7 @@ namespace OpenRA.Traits
|
|||||||
if (qboi == null)
|
if (qboi == null)
|
||||||
throw new InvalidOperationException("Actor type '" + self.Info.Name + "' does not define a quantized body orientation.");
|
throw new InvalidOperationException("Actor type '" + self.Info.Name + "' does not define a quantized body orientation.");
|
||||||
|
|
||||||
return qboi.QuantizedBodyFacings(self.World.Map.SequenceProvider, self.Info);
|
return qboi.QuantizedBodyFacings(self.Info, self.World.Map.SequenceProvider, race);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -289,7 +289,7 @@ namespace OpenRA.Traits
|
|||||||
WRot QuantizeOrientation(WRot orientation, int facings);
|
WRot QuantizeOrientation(WRot orientation, int facings);
|
||||||
}
|
}
|
||||||
|
|
||||||
public interface IQuantizeBodyOrientationInfo { int QuantizedBodyFacings(SequenceProvider sequenceProvider, ActorInfo ai); }
|
public interface IQuantizeBodyOrientationInfo { int QuantizedBodyFacings(ActorInfo ai, SequenceProvider sequenceProvider, string race); }
|
||||||
|
|
||||||
public interface ITargetableInfo
|
public interface ITargetableInfo
|
||||||
{
|
{
|
||||||
@@ -334,6 +334,6 @@ namespace OpenRA.Traits
|
|||||||
public interface ILegacyEditorRenderInfo
|
public interface ILegacyEditorRenderInfo
|
||||||
{
|
{
|
||||||
string EditorPalette { get; }
|
string EditorPalette { get; }
|
||||||
string EditorImage(ActorInfo actor);
|
string EditorImage(ActorInfo actor, SequenceProvider sequenceProvider, string race);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,13 +27,13 @@ namespace OpenRA.Mods.Cnc.Traits
|
|||||||
[Desc("Cargo aircraft used.")]
|
[Desc("Cargo aircraft used.")]
|
||||||
[ActorReference] public readonly string ActorType = "c17";
|
[ActorReference] public readonly string ActorType = "c17";
|
||||||
|
|
||||||
public override object Create(ActorInitializer init) { return new ProductionAirdrop(this, init.Self); }
|
public override object Create(ActorInitializer init) { return new ProductionAirdrop(init, this); }
|
||||||
}
|
}
|
||||||
|
|
||||||
class ProductionAirdrop : Production
|
class ProductionAirdrop : Production
|
||||||
{
|
{
|
||||||
public ProductionAirdrop(ProductionAirdropInfo info, Actor self)
|
public ProductionAirdrop(ActorInitializer init, ProductionAirdropInfo info)
|
||||||
: base(info, self) { }
|
: base(init, info) { }
|
||||||
|
|
||||||
public override bool Produce(Actor self, ActorInfo producee, string raceVariant)
|
public override bool Produce(Actor self, ActorInfo producee, string raceVariant)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -26,9 +26,9 @@ namespace OpenRA.Mods.Cnc.Traits
|
|||||||
public readonly string WakeLeftSequence = "wake-left";
|
public readonly string WakeLeftSequence = "wake-left";
|
||||||
public readonly string WakeRightSequence = "wake-right";
|
public readonly string WakeRightSequence = "wake-right";
|
||||||
|
|
||||||
public override object Create(ActorInitializer init) { return new RenderGunboat(init.Self, this); }
|
public override object Create(ActorInitializer init) { return new RenderGunboat(init, this); }
|
||||||
|
|
||||||
public int QuantizedBodyFacings(SequenceProvider sequenceProvider, ActorInfo ai)
|
public int QuantizedBodyFacings(ActorInfo ai, SequenceProvider sequenceProvider, string race)
|
||||||
{
|
{
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
@@ -38,27 +38,27 @@ namespace OpenRA.Mods.Cnc.Traits
|
|||||||
{
|
{
|
||||||
Animation left, right;
|
Animation left, right;
|
||||||
|
|
||||||
public RenderGunboat(Actor self, RenderGunboatInfo info)
|
public RenderGunboat(ActorInitializer init, RenderGunboatInfo info)
|
||||||
: base(self)
|
: base(init, info)
|
||||||
{
|
{
|
||||||
var name = GetImage(self);
|
var name = GetImage(init.Self);
|
||||||
var facing = self.Trait<IFacing>();
|
var facing = init.Self.Trait<IFacing>();
|
||||||
var turret = self.TraitsImplementing<Turreted>()
|
var turret = init.Self.TraitsImplementing<Turreted>()
|
||||||
.First(t => t.Name == info.Turret);
|
.First(t => t.Name == info.Turret);
|
||||||
|
|
||||||
left = new Animation(self.World, name, () => turret.TurretFacing);
|
left = new Animation(init.World, name, () => turret.TurretFacing);
|
||||||
left.Play(info.LeftSequence);
|
left.Play(info.LeftSequence);
|
||||||
Add(info.LeftSequence, new AnimationWithOffset(left, null, () => facing.Facing > 128, 0));
|
Add(info.LeftSequence, new AnimationWithOffset(left, null, () => facing.Facing > 128, 0));
|
||||||
|
|
||||||
right = new Animation(self.World, name, () => turret.TurretFacing);
|
right = new Animation(init.World, name, () => turret.TurretFacing);
|
||||||
right.Play(info.RightSequence);
|
right.Play(info.RightSequence);
|
||||||
Add(info.RightSequence, new AnimationWithOffset(right, null, () => facing.Facing <= 128, 0));
|
Add(info.RightSequence, new AnimationWithOffset(right, null, () => facing.Facing <= 128, 0));
|
||||||
|
|
||||||
var leftWake = new Animation(self.World, name);
|
var leftWake = new Animation(init.World, name);
|
||||||
leftWake.PlayRepeating(info.WakeLeftSequence);
|
leftWake.PlayRepeating(info.WakeLeftSequence);
|
||||||
Add(info.WakeLeftSequence, new AnimationWithOffset(leftWake, null, () => facing.Facing > 128, -87));
|
Add(info.WakeLeftSequence, new AnimationWithOffset(leftWake, null, () => facing.Facing > 128, -87));
|
||||||
|
|
||||||
var rightWake = new Animation(self.World, name);
|
var rightWake = new Animation(init.World, name);
|
||||||
rightWake.PlayRepeating(info.WakeRightSequence);
|
rightWake.PlayRepeating(info.WakeRightSequence);
|
||||||
Add(info.WakeRightSequence, new AnimationWithOffset(rightWake, null, () => facing.Facing <= 128, -87));
|
Add(info.WakeRightSequence, new AnimationWithOffset(rightWake, null, () => facing.Facing <= 128, -87));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ namespace OpenRA.Mods.Common.Activities
|
|||||||
public CVec Offset = CVec.Zero;
|
public CVec Offset = CVec.Zero;
|
||||||
public int Facing = 96;
|
public int Facing = 96;
|
||||||
public string[] Sounds = { };
|
public string[] Sounds = { };
|
||||||
|
public string Notification = null;
|
||||||
public int ForceHealthPercentage = 0;
|
public int ForceHealthPercentage = 0;
|
||||||
public bool SkipMakeAnims = false;
|
public bool SkipMakeAnims = false;
|
||||||
public string Race = null;
|
public string Race = null;
|
||||||
@@ -51,6 +52,8 @@ namespace OpenRA.Mods.Common.Activities
|
|||||||
foreach (var s in Sounds)
|
foreach (var s in Sounds)
|
||||||
Sound.PlayToPlayer(self.Owner, s, self.CenterPosition);
|
Sound.PlayToPlayer(self.Owner, s, self.CenterPosition);
|
||||||
|
|
||||||
|
Sound.PlayNotification(self.World.Map.Rules, self.Owner, "Speech", Notification, self.Owner.Country.Race);
|
||||||
|
|
||||||
var init = new TypeDictionary
|
var init = new TypeDictionary
|
||||||
{
|
{
|
||||||
new LocationInit(self.Location + Offset),
|
new LocationInit(self.Location + Offset),
|
||||||
|
|||||||
@@ -15,7 +15,6 @@ using OpenRA.Graphics;
|
|||||||
using OpenRA.Mods.Common.Graphics;
|
using OpenRA.Mods.Common.Graphics;
|
||||||
using OpenRA.Mods.Common.Traits;
|
using OpenRA.Mods.Common.Traits;
|
||||||
using OpenRA.Primitives;
|
using OpenRA.Primitives;
|
||||||
using OpenRA.Traits;
|
|
||||||
|
|
||||||
namespace OpenRA.Mods.Common.Orders
|
namespace OpenRA.Mods.Common.Orders
|
||||||
{
|
{
|
||||||
@@ -24,10 +23,12 @@ namespace OpenRA.Mods.Common.Orders
|
|||||||
readonly Actor producer;
|
readonly Actor producer;
|
||||||
readonly string building;
|
readonly string building;
|
||||||
readonly BuildingInfo buildingInfo;
|
readonly BuildingInfo buildingInfo;
|
||||||
|
readonly string race;
|
||||||
|
readonly Sprite buildOk;
|
||||||
|
readonly Sprite buildBlocked;
|
||||||
IActorPreview[] preview;
|
IActorPreview[] preview;
|
||||||
|
|
||||||
Sprite buildOk, buildBlocked;
|
bool initialized;
|
||||||
bool initialized = false;
|
|
||||||
|
|
||||||
public PlaceBuildingOrderGenerator(ProductionQueue queue, string name)
|
public PlaceBuildingOrderGenerator(ProductionQueue queue, string name)
|
||||||
{
|
{
|
||||||
@@ -40,7 +41,12 @@ namespace OpenRA.Mods.Common.Orders
|
|||||||
|
|
||||||
var map = producer.World.Map;
|
var map = producer.World.Map;
|
||||||
var tileset = producer.World.TileSet.Id.ToLowerInvariant();
|
var tileset = producer.World.TileSet.Id.ToLowerInvariant();
|
||||||
buildingInfo = map.Rules.Actors[building].Traits.Get<BuildingInfo>();
|
|
||||||
|
var info = map.Rules.Actors[building];
|
||||||
|
buildingInfo = info.Traits.Get<BuildingInfo>();
|
||||||
|
|
||||||
|
var buildableInfo = info.Traits.Get<BuildableInfo>();
|
||||||
|
race = buildableInfo.ForceRace ?? queue.MostLikelyProducer().Trait.Race;
|
||||||
|
|
||||||
buildOk = map.SequenceProvider.GetSequence("overlay", "build-valid-{0}".F(tileset)).GetSprite(0);
|
buildOk = map.SequenceProvider.GetSequence("overlay", "build-valid-{0}".F(tileset)).GetSprite(0);
|
||||||
buildBlocked = map.SequenceProvider.GetSequence("overlay", "build-invalid").GetSprite(0);
|
buildBlocked = map.SequenceProvider.GetSequence("overlay", "build-invalid").GetSprite(0);
|
||||||
@@ -122,7 +128,12 @@ namespace OpenRA.Mods.Common.Orders
|
|||||||
{
|
{
|
||||||
if (!initialized)
|
if (!initialized)
|
||||||
{
|
{
|
||||||
var init = new ActorPreviewInitializer(rules.Actors[building], producer.Owner, wr, new TypeDictionary());
|
var td = new TypeDictionary()
|
||||||
|
{
|
||||||
|
new RaceInit(race)
|
||||||
|
};
|
||||||
|
|
||||||
|
var init = new ActorPreviewInitializer(rules.Actors[building], producer.Owner, wr, td);
|
||||||
preview = rules.Actors[building].Traits.WithInterface<IRenderActorPreviewInfo>()
|
preview = rules.Actors[building].Traits.WithInterface<IRenderActorPreviewInfo>()
|
||||||
.SelectMany(rpi => rpi.RenderPreview(init))
|
.SelectMany(rpi => rpi.RenderPreview(init))
|
||||||
.ToArray();
|
.ToArray();
|
||||||
|
|||||||
@@ -36,6 +36,9 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
[Desc("What the unit should start doing. Warning: If this is not a harvester", "it will break if you use FindResources.")]
|
[Desc("What the unit should start doing. Warning: If this is not a harvester", "it will break if you use FindResources.")]
|
||||||
public readonly string InitialActivity = null;
|
public readonly string InitialActivity = null;
|
||||||
|
|
||||||
|
[Desc("Force a specific race variant, overriding the race of the producing actor.")]
|
||||||
|
public readonly string ForceRace = null;
|
||||||
|
|
||||||
// TODO: UI fluff; doesn't belong here
|
// TODO: UI fluff; doesn't belong here
|
||||||
public readonly int BuildPaletteOrder = 9999;
|
public readonly int BuildPaletteOrder = 9999;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -74,6 +74,16 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
return isActive ? base.BuildableItems() : NoItems;
|
return isActive ? base.BuildableItems() : NoItems;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override TraitPair<Production> MostLikelyProducer()
|
||||||
|
{
|
||||||
|
return self.World.ActorsWithTrait<Production>()
|
||||||
|
.Where(x => x.Actor.Owner == self.Owner
|
||||||
|
&& x.Trait.Info.Produces.Contains(Info.Type))
|
||||||
|
.OrderByDescending(x => x.Actor.IsPrimaryBuilding())
|
||||||
|
.ThenByDescending(x => x.Actor.ActorID)
|
||||||
|
.FirstOrDefault();
|
||||||
|
}
|
||||||
|
|
||||||
protected override bool BuildUnit(string name)
|
protected override bool BuildUnit(string name)
|
||||||
{
|
{
|
||||||
// Find a production structure to build this actor
|
// Find a production structure to build this actor
|
||||||
@@ -97,7 +107,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
|
|
||||||
foreach (var p in producers.Where(p => !p.Actor.IsDisabled()))
|
foreach (var p in producers.Where(p => !p.Actor.IsDisabled()))
|
||||||
{
|
{
|
||||||
if (p.Trait.Produce(p.Actor, ai, Race))
|
if (p.Trait.Produce(p.Actor, ai, p.Trait.Race))
|
||||||
{
|
{
|
||||||
FinishProduction();
|
FinishProduction();
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -38,8 +38,14 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
if (queue == null)
|
if (queue == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
var producer = queue.MostLikelyProducer();
|
||||||
|
var race = producer.Trait != null ? producer.Trait.Race : self.Owner.Country.Race;
|
||||||
var buildingInfo = unit.Traits.Get<BuildingInfo>();
|
var buildingInfo = unit.Traits.Get<BuildingInfo>();
|
||||||
|
|
||||||
|
var buildableInfo = unit.Traits.GetOrDefault<BuildableInfo>();
|
||||||
|
if (buildableInfo != null && buildableInfo.ForceRace != null)
|
||||||
|
race = buildableInfo.ForceRace;
|
||||||
|
|
||||||
if (order.OrderString == "LineBuild")
|
if (order.OrderString == "LineBuild")
|
||||||
{
|
{
|
||||||
var playSounds = true;
|
var playSounds = true;
|
||||||
@@ -49,7 +55,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
{
|
{
|
||||||
new LocationInit(t),
|
new LocationInit(t),
|
||||||
new OwnerInit(order.Player),
|
new OwnerInit(order.Player),
|
||||||
new RaceInit(queue.Race)
|
new RaceInit(race)
|
||||||
});
|
});
|
||||||
|
|
||||||
if (playSounds)
|
if (playSounds)
|
||||||
@@ -69,14 +75,16 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
{
|
{
|
||||||
new LocationInit(order.TargetLocation),
|
new LocationInit(order.TargetLocation),
|
||||||
new OwnerInit(order.Player),
|
new OwnerInit(order.Player),
|
||||||
new RaceInit(queue.Race),
|
new RaceInit(race),
|
||||||
});
|
});
|
||||||
|
|
||||||
foreach (var s in buildingInfo.BuildSounds)
|
foreach (var s in buildingInfo.BuildSounds)
|
||||||
Sound.PlayToPlayer(order.Player, s, building.CenterPosition);
|
Sound.PlayToPlayer(order.Player, s, building.CenterPosition);
|
||||||
}
|
}
|
||||||
|
|
||||||
PlayBuildAnim(self, unit);
|
if (producer.Actor != null)
|
||||||
|
foreach (var nbp in producer.Actor.TraitsImplementing<INotifyBuildingPlaced>())
|
||||||
|
nbp.BuildingPlaced(producer.Actor);
|
||||||
|
|
||||||
queue.FinishProduction();
|
queue.FinishProduction();
|
||||||
|
|
||||||
@@ -84,9 +92,9 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
{
|
{
|
||||||
// May be null if the build anywhere cheat is active
|
// May be null if the build anywhere cheat is active
|
||||||
// BuildingInfo.IsCloseEnoughToBase has already verified that this is a valid build location
|
// BuildingInfo.IsCloseEnoughToBase has already verified that this is a valid build location
|
||||||
var producer = buildingInfo.FindBaseProvider(w, self.Owner, order.TargetLocation);
|
var provider = buildingInfo.FindBaseProvider(w, self.Owner, order.TargetLocation);
|
||||||
if (producer != null)
|
if (provider != null)
|
||||||
producer.Trait<BaseProvider>().BeginCooldown();
|
provider.Trait<BaseProvider>().BeginCooldown();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (GetNumBuildables(self.Owner) > prevItems)
|
if (GetNumBuildables(self.Owner) > prevItems)
|
||||||
@@ -96,30 +104,11 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// finds a construction yard (or equivalent) and runs its "build" animation.
|
|
||||||
static void PlayBuildAnim(Actor self, ActorInfo unit)
|
|
||||||
{
|
|
||||||
var bi = unit.Traits.GetOrDefault<BuildableInfo>();
|
|
||||||
if (bi == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
var producers = self.World.ActorsWithTrait<Production>()
|
|
||||||
.Where(x => x.Actor.Owner == self.Owner
|
|
||||||
&& x.Actor.Info.Traits.Get<ProductionInfo>().Produces.Intersect(bi.Queue).Any())
|
|
||||||
.ToList();
|
|
||||||
var producer = producers.Where(x => x.Actor.IsPrimaryBuilding()).Concat(producers)
|
|
||||||
.FirstOrDefault();
|
|
||||||
|
|
||||||
if (producer.Actor == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
foreach (var nbp in producer.Actor.TraitsImplementing<INotifyBuildingPlaced>())
|
|
||||||
nbp.BuildingPlaced(producer.Actor);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int GetNumBuildables(Player p)
|
static int GetNumBuildables(Player p)
|
||||||
{
|
{
|
||||||
if (p != p.World.LocalPlayer) return 0; // this only matters for local players.
|
// This only matters for local players.
|
||||||
|
if (p != p.World.LocalPlayer)
|
||||||
|
return 0;
|
||||||
|
|
||||||
return p.World.ActorsWithTrait<ProductionQueue>()
|
return p.World.ActorsWithTrait<ProductionQueue>()
|
||||||
.Where(a => a.Actor.Owner == p)
|
.Where(a => a.Actor.Owner == p)
|
||||||
|
|||||||
@@ -79,7 +79,6 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
Dictionary<ActorInfo, ProductionState> produceable;
|
Dictionary<ActorInfo, ProductionState> produceable;
|
||||||
List<ProductionItem> queue = new List<ProductionItem>();
|
List<ProductionItem> queue = new List<ProductionItem>();
|
||||||
|
|
||||||
// A list of things we are currently building
|
|
||||||
public Actor Actor { get { return self; } }
|
public Actor Actor { get { return self; } }
|
||||||
|
|
||||||
[Sync] public int QueueLength { get { return queue.Count; } }
|
[Sync] public int QueueLength { get { return queue.Count; } }
|
||||||
@@ -361,6 +360,13 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
queue.Add(item);
|
queue.Add(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Returns the actor/trait that is most likely (but not necessarily guaranteed) to produce something in this queue
|
||||||
|
public virtual TraitPair<Production> MostLikelyProducer()
|
||||||
|
{
|
||||||
|
var trait = self.TraitsImplementing<Production>().FirstOrDefault(p => p.Info.Produces.Contains(Info.Type));
|
||||||
|
return new TraitPair<Production> { Actor = self, Trait = trait };
|
||||||
|
}
|
||||||
|
|
||||||
// Builds a unit from the actor that holds this queue (1 queue per building)
|
// Builds a unit from the actor that holds this queue (1 queue per building)
|
||||||
// Returns false if the unit can't be built
|
// Returns false if the unit can't be built
|
||||||
protected virtual bool BuildUnit(string name)
|
protected virtual bool BuildUnit(string name)
|
||||||
|
|||||||
@@ -74,14 +74,4 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
enabled = owner.PlayerActor.Trait<TechTree>().HasPrerequisites(info.RequiresPrerequisites);
|
enabled = owner.PlayerActor.Trait<TechTree>().HasPrerequisites(info.RequiresPrerequisites);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Allows maps / transformations to specify the race variant of an actor.
|
|
||||||
public class RaceInit : IActorInit<string>
|
|
||||||
{
|
|
||||||
[FieldFromYamlKey] public readonly string Race;
|
|
||||||
|
|
||||||
public RaceInit() { }
|
|
||||||
public RaceInit(string race) { Race = race; }
|
|
||||||
public string Value(World world) { return Race; }
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,18 +24,21 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
[Desc("e.g. Infantry, Vehicles, Aircraft, Buildings")]
|
[Desc("e.g. Infantry, Vehicles, Aircraft, Buildings")]
|
||||||
public readonly string[] Produces = { };
|
public readonly string[] Produces = { };
|
||||||
|
|
||||||
public virtual object Create(ActorInitializer init) { return new Production(this, init.Self); }
|
public virtual object Create(ActorInitializer init) { return new Production(init, this); }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class Production
|
public class Production
|
||||||
{
|
{
|
||||||
Lazy<RallyPoint> rp;
|
readonly Lazy<RallyPoint> rp;
|
||||||
|
|
||||||
public ProductionInfo Info;
|
public ProductionInfo Info;
|
||||||
public Production(ProductionInfo info, Actor self)
|
public string Race { get; private set; }
|
||||||
|
|
||||||
|
public Production(ActorInitializer init, ProductionInfo info)
|
||||||
{
|
{
|
||||||
Info = info;
|
Info = info;
|
||||||
rp = Exts.Lazy(() => self.IsDead ? null : self.TraitOrDefault<RallyPoint>());
|
rp = Exts.Lazy(() => init.Self.IsDead ? null : init.Self.TraitOrDefault<RallyPoint>());
|
||||||
|
Race = init.Contains<RaceInit>() ? init.Get<RaceInit, string>() : init.Self.Owner.Country.Race;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void DoProduction(Actor self, ActorInfo producee, ExitInfo exitinfo, string raceVariant)
|
public void DoProduction(Actor self, ActorInfo producee, ExitInfo exitinfo, string raceVariant)
|
||||||
@@ -50,6 +53,10 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
var exitLocation = rp.Value != null ? rp.Value.Location : exit;
|
var exitLocation = rp.Value != null ? rp.Value.Location : exit;
|
||||||
var target = Target.FromCell(self.World, exitLocation);
|
var target = Target.FromCell(self.World, exitLocation);
|
||||||
|
|
||||||
|
var bi = producee.Traits.GetOrDefault<BuildableInfo>();
|
||||||
|
if (bi != null && bi.ForceRace != null)
|
||||||
|
raceVariant = bi.ForceRace;
|
||||||
|
|
||||||
self.World.AddFrameEndTask(w =>
|
self.World.AddFrameEndTask(w =>
|
||||||
{
|
{
|
||||||
var td = new TypeDictionary
|
var td = new TypeDictionary
|
||||||
@@ -86,7 +93,6 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
foreach (var notify in notifyOthers)
|
foreach (var notify in notifyOthers)
|
||||||
notify.Trait.UnitProducedByOther(notify.Actor, self, newUnit);
|
notify.Trait.UnitProducedByOther(notify.Actor, self, newUnit);
|
||||||
|
|
||||||
var bi = newUnit.Info.Traits.GetOrDefault<BuildableInfo>();
|
|
||||||
if (bi != null && bi.InitialActivity != null)
|
if (bi != null && bi.InitialActivity != null)
|
||||||
newUnit.QueueActivity(Game.CreateObject<Activity>(bi.InitialActivity));
|
newUnit.QueueActivity(Game.CreateObject<Activity>(bi.InitialActivity));
|
||||||
|
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
: this(init, info, () => 0) { }
|
: this(init, info, () => 0) { }
|
||||||
|
|
||||||
public RenderBuilding(ActorInitializer init, RenderBuildingInfo info, Func<int> baseFacing)
|
public RenderBuilding(ActorInitializer init, RenderBuildingInfo info, Func<int> baseFacing)
|
||||||
: base(init.Self, baseFacing)
|
: base(init, info, baseFacing)
|
||||||
{
|
{
|
||||||
var self = init.Self;
|
var self = init.Self;
|
||||||
this.info = info;
|
this.info = info;
|
||||||
|
|||||||
@@ -16,12 +16,13 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
[Desc("Invisible during games.")]
|
[Desc("Invisible during games.")]
|
||||||
class RenderEditorOnlyInfo : RenderSimpleInfo
|
class RenderEditorOnlyInfo : RenderSimpleInfo
|
||||||
{
|
{
|
||||||
public override object Create(ActorInitializer init) { return new RenderEditorOnly(init.Self); }
|
public override object Create(ActorInitializer init) { return new RenderEditorOnly(init, this); }
|
||||||
}
|
}
|
||||||
|
|
||||||
class RenderEditorOnly : RenderSimple
|
class RenderEditorOnly : RenderSimple
|
||||||
{
|
{
|
||||||
public RenderEditorOnly(Actor self) : base(self, () => 0) { }
|
public RenderEditorOnly(ActorInitializer init, RenderEditorOnlyInfo info)
|
||||||
|
: base(init, info, () => 0) { }
|
||||||
|
|
||||||
public override IEnumerable<IRenderable> Render(Actor self, WorldRenderer wr) { return SpriteRenderable.None; }
|
public override IEnumerable<IRenderable> Render(Actor self, WorldRenderer wr) { return SpriteRenderable.None; }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,13 +12,13 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
{
|
{
|
||||||
class RenderFlareInfo : RenderSimpleInfo
|
class RenderFlareInfo : RenderSimpleInfo
|
||||||
{
|
{
|
||||||
public override object Create(ActorInitializer init) { return new RenderFlare(init.Self); }
|
public override object Create(ActorInitializer init) { return new RenderFlare(init, this); }
|
||||||
}
|
}
|
||||||
|
|
||||||
class RenderFlare : RenderSimple
|
class RenderFlare : RenderSimple
|
||||||
{
|
{
|
||||||
public RenderFlare(Actor self)
|
public RenderFlare(ActorInitializer init, RenderFlareInfo info)
|
||||||
: base(self, () => 0)
|
: base(init, info, () => 0)
|
||||||
{
|
{
|
||||||
DefaultAnimation.PlayThen("open", () => DefaultAnimation.PlayRepeating("idle"));
|
DefaultAnimation.PlayThen("open", () => DefaultAnimation.PlayRepeating("idle"));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
class RenderHarvesterInfo : RenderUnitInfo, Requires<HarvesterInfo>
|
class RenderHarvesterInfo : RenderUnitInfo, Requires<HarvesterInfo>
|
||||||
{
|
{
|
||||||
public readonly string[] ImagesByFullness = { "harv" };
|
public readonly string[] ImagesByFullness = { "harv" };
|
||||||
public override object Create(ActorInitializer init) { return new RenderHarvester(init.Self, this); }
|
public override object Create(ActorInitializer init) { return new RenderHarvester(init, this); }
|
||||||
}
|
}
|
||||||
|
|
||||||
class RenderHarvester : RenderUnit, INotifyHarvesterAction
|
class RenderHarvester : RenderUnit, INotifyHarvesterAction
|
||||||
@@ -25,15 +25,15 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
Harvester harv;
|
Harvester harv;
|
||||||
RenderHarvesterInfo info;
|
RenderHarvesterInfo info;
|
||||||
|
|
||||||
public RenderHarvester(Actor self, RenderHarvesterInfo info)
|
public RenderHarvester(ActorInitializer init, RenderHarvesterInfo info)
|
||||||
: base(self)
|
: base(init, info)
|
||||||
{
|
{
|
||||||
this.info = info;
|
this.info = info;
|
||||||
harv = self.Trait<Harvester>();
|
harv = init.Self.Trait<Harvester>();
|
||||||
|
|
||||||
// HACK: Force images to be loaded up-front
|
// HACK: Force images to be loaded up-front
|
||||||
foreach (var image in info.ImagesByFullness)
|
foreach (var image in info.ImagesByFullness)
|
||||||
new Animation(self.World, image);
|
new Animation(init.World, image);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void Tick(Actor self)
|
public override void Tick(Actor self)
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
public readonly string[] IdleAnimations = { };
|
public readonly string[] IdleAnimations = { };
|
||||||
public readonly string[] StandAnimations = { "stand" };
|
public readonly string[] StandAnimations = { "stand" };
|
||||||
|
|
||||||
public override object Create(ActorInitializer init) { return new RenderInfantry(init.Self, this); }
|
public override object Create(ActorInitializer init) { return new RenderInfantry(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,9 +39,9 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
yield return new SpriteActorPreview(anim, WVec.Zero, 0, p, rs.Scale);
|
yield return new SpriteActorPreview(anim, WVec.Zero, 0, p, rs.Scale);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override int QuantizedBodyFacings(SequenceProvider sequenceProvider, ActorInfo ai)
|
public override int QuantizedBodyFacings(ActorInfo ai, SequenceProvider sequenceProvider, string race)
|
||||||
{
|
{
|
||||||
return sequenceProvider.GetSequence(RenderSprites.GetImage(ai), StandAnimations.First()).Facings;
|
return sequenceProvider.GetSequence(GetImage(ai, sequenceProvider, race), StandAnimations.First()).Facings;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -58,14 +58,14 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
bool IsModifyingSequence { get { return rsm != null && rsm.IsModifyingSequence; } }
|
bool IsModifyingSequence { get { return rsm != null && rsm.IsModifyingSequence; } }
|
||||||
bool wasModifying;
|
bool wasModifying;
|
||||||
|
|
||||||
public RenderInfantry(Actor self, RenderInfantryInfo info)
|
public RenderInfantry(ActorInitializer init, RenderInfantryInfo info)
|
||||||
: base(self, MakeFacingFunc(self))
|
: base(init, info, MakeFacingFunc(init.Self))
|
||||||
{
|
{
|
||||||
this.info = info;
|
this.info = info;
|
||||||
DefaultAnimation.PlayFetchIndex(NormalizeInfantrySequence(self, info.StandAnimations.Random(Game.CosmeticRandom)), () => 0);
|
DefaultAnimation.PlayFetchIndex(NormalizeInfantrySequence(init.Self, info.StandAnimations.Random(Game.CosmeticRandom)), () => 0);
|
||||||
state = AnimationState.Waiting;
|
state = AnimationState.Waiting;
|
||||||
move = self.Trait<IMove>();
|
move = init.Self.Trait<IMove>();
|
||||||
rsm = self.TraitOrDefault<IRenderInfantrySequenceModifier>();
|
rsm = init.Self.TraitOrDefault<IRenderInfantrySequenceModifier>();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected virtual string NormalizeInfantrySequence(Actor self, string baseSequence)
|
protected virtual string NormalizeInfantrySequence(Actor self, string baseSequence)
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
{
|
{
|
||||||
public class RenderSimpleInfo : RenderSpritesInfo, IRenderActorPreviewSpritesInfo, IQuantizeBodyOrientationInfo, ILegacyEditorRenderInfo, Requires<IBodyOrientationInfo>
|
public class RenderSimpleInfo : RenderSpritesInfo, IRenderActorPreviewSpritesInfo, IQuantizeBodyOrientationInfo, ILegacyEditorRenderInfo, Requires<IBodyOrientationInfo>
|
||||||
{
|
{
|
||||||
public override object Create(ActorInitializer init) { return new RenderSimple(init.Self); }
|
public override object Create(ActorInitializer init) { return new RenderSimple(init, this); }
|
||||||
|
|
||||||
public virtual IEnumerable<IActorPreview> RenderPreviewSprites(ActorPreviewInitializer init, RenderSpritesInfo rs, string image, int facings, PaletteReference p)
|
public virtual IEnumerable<IActorPreview> RenderPreviewSprites(ActorPreviewInitializer init, RenderSpritesInfo rs, string image, int facings, PaletteReference p)
|
||||||
{
|
{
|
||||||
@@ -30,30 +30,30 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
yield return new SpriteActorPreview(anim, WVec.Zero, 0, p, rs.Scale);
|
yield return new SpriteActorPreview(anim, WVec.Zero, 0, p, rs.Scale);
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual int QuantizedBodyFacings(SequenceProvider sequenceProvider, ActorInfo ai)
|
public virtual int QuantizedBodyFacings(ActorInfo ai, SequenceProvider sequenceProvider, string race)
|
||||||
{
|
{
|
||||||
return sequenceProvider.GetSequence(RenderSprites.GetImage(ai), "idle").Facings;
|
return sequenceProvider.GetSequence(GetImage(ai, sequenceProvider, race), "idle").Facings;
|
||||||
}
|
}
|
||||||
|
|
||||||
public string EditorPalette { get { return Palette; } }
|
public string EditorPalette { get { return Palette; } }
|
||||||
public string EditorImage(ActorInfo actor) { return RenderSimple.GetImage(actor); }
|
public string EditorImage(ActorInfo actor, SequenceProvider sequenceProvider, string race) { return GetImage(actor, sequenceProvider, race); }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class RenderSimple : RenderSprites, IAutoSelectionSize
|
public class RenderSimple : RenderSprites, IAutoSelectionSize
|
||||||
{
|
{
|
||||||
public readonly Animation DefaultAnimation;
|
public readonly Animation DefaultAnimation;
|
||||||
|
|
||||||
public RenderSimple(Actor self, Func<int> baseFacing)
|
public RenderSimple(ActorInitializer init, RenderSimpleInfo info, Func<int> baseFacing)
|
||||||
: base(self)
|
: base(init, info)
|
||||||
{
|
{
|
||||||
DefaultAnimation = new Animation(self.World, GetImage(self), baseFacing);
|
DefaultAnimation = new Animation(init.World, GetImage(init.Self), baseFacing);
|
||||||
Add("", DefaultAnimation);
|
Add("", DefaultAnimation);
|
||||||
}
|
}
|
||||||
|
|
||||||
public RenderSimple(Actor self)
|
public RenderSimple(ActorInitializer init, RenderSimpleInfo info)
|
||||||
: this(self, MakeFacingFunc(self))
|
: this(init, info, MakeFacingFunc(init.Self))
|
||||||
{
|
{
|
||||||
DefaultAnimation.PlayRepeating(NormalizeSequence(self, "idle"));
|
DefaultAnimation.PlayRepeating(NormalizeSequence(init.Self, "idle"));
|
||||||
}
|
}
|
||||||
|
|
||||||
public int2 SelectionSize(Actor self) { return AutoSelectionSize(self); }
|
public int2 SelectionSize(Actor self) { return AutoSelectionSize(self); }
|
||||||
|
|||||||
@@ -22,33 +22,62 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
|
|
||||||
public class RenderSpritesInfo : IRenderActorPreviewInfo, ITraitInfo
|
public class RenderSpritesInfo : IRenderActorPreviewInfo, ITraitInfo
|
||||||
{
|
{
|
||||||
[Desc("Defaults to the actor name.")]
|
[Desc("The sequence name that defines the actor sprites. Defaults to the actor name.")]
|
||||||
public readonly string Image = null;
|
public readonly string Image = null;
|
||||||
|
|
||||||
|
[FieldLoader.LoadUsing("LoadRaceImages")]
|
||||||
|
[Desc("A dictionary of race-specific image overrides.")]
|
||||||
|
public readonly Dictionary<string, string> RaceImages = null;
|
||||||
|
|
||||||
[Desc("Custom palette name")]
|
[Desc("Custom palette name")]
|
||||||
public readonly string Palette = null;
|
public readonly string Palette = null;
|
||||||
|
|
||||||
[Desc("Custom PlayerColorPalette: BaseName")]
|
[Desc("Custom PlayerColorPalette: BaseName")]
|
||||||
public readonly string PlayerPalette = "player";
|
public readonly string PlayerPalette = "player";
|
||||||
|
|
||||||
[Desc("Change the sprite image size.")]
|
[Desc("Change the sprite image size.")]
|
||||||
public readonly float Scale = 1f;
|
public readonly float Scale = 1f;
|
||||||
|
|
||||||
public virtual object Create(ActorInitializer init) { return new RenderSprites(init.Self); }
|
protected static object LoadRaceImages(MiniYaml y)
|
||||||
|
{
|
||||||
|
MiniYaml images;
|
||||||
|
|
||||||
|
if (!y.ToDictionary().TryGetValue("RaceImages", out images))
|
||||||
|
return null;
|
||||||
|
|
||||||
|
return images.Nodes.ToDictionary(kv => kv.Key, kv => kv.Value.Value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public virtual object Create(ActorInitializer init) { return new RenderSprites(init, this); }
|
||||||
|
|
||||||
public IEnumerable<IActorPreview> RenderPreview(ActorPreviewInitializer init)
|
public IEnumerable<IActorPreview> RenderPreview(ActorPreviewInitializer init)
|
||||||
{
|
{
|
||||||
var sequenceProvider = init.World.Map.SequenceProvider;
|
var sequenceProvider = init.World.Map.SequenceProvider;
|
||||||
var image = RenderSprites.GetImage(init.Actor);
|
var race = init.Contains<RaceInit>() ? init.Get<RaceInit, string>() : init.Owner.Country.Race;
|
||||||
var palette = init.WorldRenderer.Palette(Palette ?? (init.Owner != null ? PlayerPalette + init.Owner.InternalName : null));
|
var image = GetImage(init.Actor, sequenceProvider, race);
|
||||||
|
var palette = init.WorldRenderer.Palette(Palette ?? PlayerPalette + init.Owner.InternalName);
|
||||||
|
|
||||||
var facings = 0;
|
var facings = 0;
|
||||||
var body = init.Actor.Traits.GetOrDefault<BodyOrientationInfo>();
|
var body = init.Actor.Traits.GetOrDefault<BodyOrientationInfo>();
|
||||||
if (body != null)
|
if (body != null)
|
||||||
facings = body.QuantizedFacings == -1 ? init.Actor.Traits.Get<IQuantizeBodyOrientationInfo>().QuantizedBodyFacings(sequenceProvider, init.Actor) : body.QuantizedFacings;
|
facings = body.QuantizedFacings == -1 ? init.Actor.Traits.Get<IQuantizeBodyOrientationInfo>().QuantizedBodyFacings(init.Actor, sequenceProvider, init.Owner.Country.Race) : body.QuantizedFacings;
|
||||||
|
|
||||||
foreach (var spi in init.Actor.Traits.WithInterface<IRenderActorPreviewSpritesInfo>())
|
foreach (var spi in init.Actor.Traits.WithInterface<IRenderActorPreviewSpritesInfo>())
|
||||||
foreach (var preview in spi.RenderPreviewSprites(init, this, image, facings, palette))
|
foreach (var preview in spi.RenderPreviewSprites(init, this, image, facings, palette))
|
||||||
yield return preview;
|
yield return preview;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public string GetImage(ActorInfo actor, SequenceProvider sequenceProvider, string race)
|
||||||
|
{
|
||||||
|
if (RaceImages != null)
|
||||||
|
{
|
||||||
|
string raceImage = null;
|
||||||
|
if (RaceImages.TryGetValue(race, out raceImage) && sequenceProvider.HasSequence(raceImage))
|
||||||
|
return raceImage;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (Image ?? actor.Name).ToLowerInvariant();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public class RenderSprites : IRender, ITick, INotifyOwnerChanged, INotifyEffectiveOwnerChanged
|
public class RenderSprites : IRender, ITick, INotifyOwnerChanged, INotifyEffectiveOwnerChanged
|
||||||
@@ -88,9 +117,10 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
readonly string race;
|
||||||
readonly RenderSpritesInfo info;
|
readonly RenderSpritesInfo info;
|
||||||
string cachedImage = null;
|
readonly Dictionary<string, AnimationWrapper> anims = new Dictionary<string, AnimationWrapper>();
|
||||||
Dictionary<string, AnimationWrapper> anims = new Dictionary<string, AnimationWrapper>();
|
string cachedImage;
|
||||||
|
|
||||||
public static Func<int> MakeFacingFunc(Actor self)
|
public static Func<int> MakeFacingFunc(Actor self)
|
||||||
{
|
{
|
||||||
@@ -99,15 +129,10 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
return () => facing.Facing;
|
return () => facing.Facing;
|
||||||
}
|
}
|
||||||
|
|
||||||
public RenderSprites(Actor self)
|
public RenderSprites(ActorInitializer init, RenderSpritesInfo info)
|
||||||
{
|
{
|
||||||
info = self.Info.Traits.Get<RenderSpritesInfo>();
|
this.info = info;
|
||||||
}
|
race = init.Contains<RaceInit>() ? init.Get<RaceInit, string>() : init.Self.Owner.Country.Race;
|
||||||
|
|
||||||
public static string GetImage(ActorInfo actor)
|
|
||||||
{
|
|
||||||
var info = actor.Traits.Get<RenderSpritesInfo>();
|
|
||||||
return (info.Image ?? actor.Name).ToLowerInvariant();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public string GetImage(Actor self)
|
public string GetImage(Actor self)
|
||||||
@@ -115,7 +140,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
if (cachedImage != null)
|
if (cachedImage != null)
|
||||||
return cachedImage;
|
return cachedImage;
|
||||||
|
|
||||||
return cachedImage = GetImage(self.Info);
|
return cachedImage = info.GetImage(self.Info, self.World.Map.SequenceProvider, race);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void UpdatePalette()
|
protected void UpdatePalette()
|
||||||
|
|||||||
@@ -15,13 +15,13 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
{
|
{
|
||||||
public class RenderUnitInfo : RenderSimpleInfo, Requires<IFacingInfo>
|
public class RenderUnitInfo : RenderSimpleInfo, Requires<IFacingInfo>
|
||||||
{
|
{
|
||||||
public override object Create(ActorInitializer init) { return new RenderUnit(init.Self); }
|
public override object Create(ActorInitializer init) { return new RenderUnit(init, this); }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class RenderUnit : RenderSimple
|
public class RenderUnit : RenderSimple
|
||||||
{
|
{
|
||||||
public RenderUnit(Actor self)
|
public RenderUnit(ActorInitializer init, RenderUnitInfo info)
|
||||||
: base(self) { }
|
: base(init, info) { }
|
||||||
|
|
||||||
public void PlayCustomAnimation(Actor self, string newAnim, Action after)
|
public void PlayCustomAnimation(Actor self, string newAnim, Action after)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -18,12 +18,27 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
[Desc("Actor becomes a specified actor type when this trait is triggered.")]
|
[Desc("Actor becomes a specified actor type when this trait is triggered.")]
|
||||||
public class TransformsInfo : ITraitInfo
|
public class TransformsInfo : ITraitInfo
|
||||||
{
|
{
|
||||||
[ActorReference] public readonly string IntoActor = null;
|
[Desc("Actor to transform into."), ActorReference]
|
||||||
|
public readonly string IntoActor = null;
|
||||||
|
|
||||||
|
[Desc("Offset to spawn the transformed actor relative to the current cell.")]
|
||||||
public readonly CVec Offset = CVec.Zero;
|
public readonly CVec Offset = CVec.Zero;
|
||||||
|
|
||||||
|
[Desc("Facing that the actor must face before transforming.")]
|
||||||
public readonly int Facing = 96;
|
public readonly int Facing = 96;
|
||||||
|
|
||||||
|
[Desc("Sounds to play when transforming.")]
|
||||||
public readonly string[] TransformSounds = { };
|
public readonly string[] TransformSounds = { };
|
||||||
|
|
||||||
|
[Desc("Sounds to play when the transformation is blocked.")]
|
||||||
public readonly string[] NoTransformSounds = { };
|
public readonly string[] NoTransformSounds = { };
|
||||||
|
|
||||||
|
[Desc("Notification to play when transforming.")]
|
||||||
|
public readonly string TransformNotification = null;
|
||||||
|
|
||||||
|
[Desc("Notification to play when the transformation is blocked.")]
|
||||||
|
public readonly string NoTransformNotification = null;
|
||||||
|
|
||||||
public virtual object Create(ActorInitializer init) { return new Transforms(init, this); }
|
public virtual object Create(ActorInitializer init) { return new Transforms(init, this); }
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -78,6 +93,8 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
foreach (var s in info.NoTransformSounds)
|
foreach (var s in info.NoTransformSounds)
|
||||||
Sound.PlayToPlayer(self.Owner, s);
|
Sound.PlayToPlayer(self.Owner, s);
|
||||||
|
|
||||||
|
Sound.PlayNotification(self.World.Map.Rules, self.Owner, "Speech", info.NoTransformNotification, self.Owner.Country.Race);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -90,7 +107,15 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
foreach (var nt in self.TraitsImplementing<INotifyTransform>())
|
foreach (var nt in self.TraitsImplementing<INotifyTransform>())
|
||||||
nt.BeforeTransform(self);
|
nt.BeforeTransform(self);
|
||||||
|
|
||||||
var transform = new Transform(self, info.IntoActor) { Offset = info.Offset, Facing = info.Facing, Sounds = info.TransformSounds, Race = race };
|
var transform = new Transform(self, info.IntoActor)
|
||||||
|
{
|
||||||
|
Offset = info.Offset,
|
||||||
|
Facing = info.Facing,
|
||||||
|
Sounds = info.TransformSounds,
|
||||||
|
Notification = info.TransformNotification,
|
||||||
|
Race = race
|
||||||
|
};
|
||||||
|
|
||||||
var makeAnimation = self.TraitOrDefault<WithMakeAnimation>();
|
var makeAnimation = self.TraitOrDefault<WithMakeAnimation>();
|
||||||
if (makeAnimation != null)
|
if (makeAnimation != null)
|
||||||
makeAnimation.Reverse(self, transform);
|
makeAnimation.Reverse(self, transform);
|
||||||
|
|||||||
@@ -67,11 +67,13 @@ namespace OpenRA.Mods.Common.Widgets
|
|||||||
if (current == null)
|
if (current == null)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
var race = queue.Trait.Actor.Owner.Country.Race;
|
||||||
var actor = queue.Trait.AllItems().FirstOrDefault(a => a.Name == current.Item);
|
var actor = queue.Trait.AllItems().FirstOrDefault(a => a.Name == current.Item);
|
||||||
if (actor == null)
|
if (actor == null)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
var icon = new Animation(world, RenderSimple.GetImage(actor));
|
var rsi = actor.Traits.Get<RenderSpritesInfo>();
|
||||||
|
var icon = new Animation(world, rsi.GetImage(actor, world.Map.SequenceProvider, race));
|
||||||
icon.Play(actor.Traits.Get<TooltipInfo>().Icon);
|
icon.Play(actor.Traits.Get<TooltipInfo>().Icon);
|
||||||
var location = new float2(RenderBounds.Location) + new float2(queue.i * (IconWidth + IconSpacing), 0);
|
var location = new float2(RenderBounds.Location) + new float2(queue.i * (IconWidth + IconSpacing), 0);
|
||||||
WidgetUtils.DrawSHPCentered(icon.Image, location + 0.5f * iconSize, worldRenderer, 0.5f);
|
WidgetUtils.DrawSHPCentered(icon.Image, location + 0.5f * iconSize, worldRenderer, 0.5f);
|
||||||
|
|||||||
@@ -252,7 +252,8 @@ namespace OpenRA.Mods.Common.Widgets
|
|||||||
public void RefreshIcons()
|
public void RefreshIcons()
|
||||||
{
|
{
|
||||||
icons = new Dictionary<Rectangle, ProductionIcon>();
|
icons = new Dictionary<Rectangle, ProductionIcon>();
|
||||||
if (CurrentQueue == null)
|
var producer = CurrentQueue != null ? CurrentQueue.MostLikelyProducer() : default(TraitPair<Production>);
|
||||||
|
if (CurrentQueue == null || producer.Trait == null)
|
||||||
{
|
{
|
||||||
if (DisplayedIconCount != 0)
|
if (DisplayedIconCount != 0)
|
||||||
{
|
{
|
||||||
@@ -268,13 +269,16 @@ namespace OpenRA.Mods.Common.Widgets
|
|||||||
|
|
||||||
var ks = Game.Settings.Keys;
|
var ks = Game.Settings.Keys;
|
||||||
var rb = RenderBounds;
|
var rb = RenderBounds;
|
||||||
|
var race = producer.Trait.Race;
|
||||||
|
|
||||||
foreach (var item in AllBuildables.Skip(IconRowOffset * Columns).Take(MaxIconRowOffset * Columns))
|
foreach (var item in AllBuildables.Skip(IconRowOffset * Columns).Take(MaxIconRowOffset * Columns))
|
||||||
{
|
{
|
||||||
var x = DisplayedIconCount % Columns;
|
var x = DisplayedIconCount % Columns;
|
||||||
var y = DisplayedIconCount / Columns;
|
var y = DisplayedIconCount / Columns;
|
||||||
var rect = new Rectangle(rb.X + x * (IconSize.X + IconMargin.X), rb.Y + y * (IconSize.Y + IconMargin.Y), IconSize.X, IconSize.Y);
|
var rect = new Rectangle(rb.X + x * (IconSize.X + IconMargin.X), rb.Y + y * (IconSize.Y + IconMargin.Y), IconSize.X, IconSize.Y);
|
||||||
var icon = new Animation(World, RenderSimple.GetImage(item));
|
|
||||||
|
var rsi = item.Traits.Get<RenderSpritesInfo>();
|
||||||
|
var icon = new Animation(World, rsi.GetImage(item, World.Map.SequenceProvider, race));
|
||||||
icon.Play(item.Traits.Get<TooltipInfo>().Icon);
|
icon.Play(item.Traits.Get<TooltipInfo>().Icon);
|
||||||
|
|
||||||
var pi = new ProductionIcon()
|
var pi = new ProductionIcon()
|
||||||
|
|||||||
@@ -152,7 +152,8 @@ namespace OpenRA.Mods.D2k.Traits
|
|||||||
isCarrying = true;
|
isCarrying = true;
|
||||||
|
|
||||||
// Create a new animation for our carryable unit
|
// Create a new animation for our carryable unit
|
||||||
anim = new Animation(self.World, RenderSprites.GetImage(carryable.Info), RenderSprites.MakeFacingFunc(self));
|
var rs = carryable.Trait<RenderSprites>();
|
||||||
|
anim = new Animation(self.World, rs.GetImage(carryable), RenderSprites.MakeFacingFunc(self));
|
||||||
anim.PlayRepeating("idle");
|
anim.PlayRepeating("idle");
|
||||||
anim.IsDecoration = true;
|
anim.IsDecoration = true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,225 +32,225 @@ namespace OpenRA.Mods.D2k.UtilityCommands
|
|||||||
{ 45, Pair.New("spicebloom", "Neutral") },
|
{ 45, Pair.New("spicebloom", "Neutral") },
|
||||||
|
|
||||||
// Atreides:
|
// Atreides:
|
||||||
{ 4, Pair.New("WALLA", "Atreides") },
|
{ 4, Pair.New("wall", "Atreides") },
|
||||||
{ 5, Pair.New("PWRA", "Atreides") },
|
{ 5, Pair.New("power", "Atreides") },
|
||||||
{ 8, Pair.New("CONYARDA", "Atreides") },
|
{ 8, Pair.New("conyard", "Atreides") },
|
||||||
{ 11, Pair.New("BARRA", "Atreides") },
|
{ 11, Pair.New("barracks", "Atreides") },
|
||||||
{ 14, Pair.New("REFA", "Atreides") },
|
{ 14, Pair.New("refinery", "Atreides") },
|
||||||
{ 17, Pair.New("RADARA", "Atreides") },
|
{ 17, Pair.New("radar", "Atreides") },
|
||||||
{ 63, Pair.New("LIGHTA", "Atreides") },
|
{ 63, Pair.New("light", "Atreides") },
|
||||||
{ 69, Pair.New("SILOA", "Atreides") },
|
{ 69, Pair.New("silo", "Atreides") },
|
||||||
{ 72, Pair.New("HEAVYA", "Atreides") },
|
{ 72, Pair.New("heavy", "Atreides") },
|
||||||
{ 75, Pair.New("REPAIRA", "Atreides") },
|
{ 75, Pair.New("repair", "Atreides") },
|
||||||
{ 78, Pair.New("GUNTOWERA", "Atreides") },
|
{ 78, Pair.New("guntower", "Atreides") },
|
||||||
{ 120, Pair.New("HIGHTECHA", "Atreides") },
|
{ 120, Pair.New("hightech", "Atreides") },
|
||||||
{ 123, Pair.New("ROCKETTOWERA", "Atreides") },
|
{ 123, Pair.New("rockettower", "Atreides") },
|
||||||
{ 126, Pair.New("RESEARCHA", "Atreides") },
|
{ 126, Pair.New("research", "Atreides") },
|
||||||
{ 129, Pair.New("STARPORTA", "Atreides") },
|
{ 129, Pair.New("starport", "Atreides") },
|
||||||
{ 132, Pair.New("PALACEA", "Atreides") },
|
{ 132, Pair.New("palace", "Atreides") },
|
||||||
{ 180, Pair.New("RIFLE", "Atreides") },
|
{ 180, Pair.New("rifle", "Atreides") },
|
||||||
{ 181, Pair.New("BAZOOKA", "Atreides") },
|
{ 181, Pair.New("bazooka", "Atreides") },
|
||||||
{ 182, Pair.New("FREMEN", "Atreides") },
|
{ 182, Pair.New("fremen", "Atreides") },
|
||||||
{ 183, Pair.New("SARDAUKAR", "Atreides") },
|
{ 183, Pair.New("sardaukar", "Atreides") },
|
||||||
{ 184, Pair.New("ENGINEER", "Atreides") },
|
{ 184, Pair.New("engineer", "Atreides") },
|
||||||
{ 185, Pair.New("HARVESTER", "Atreides") },
|
{ 185, Pair.New("harvester", "Atreides") },
|
||||||
{ 186, Pair.New("MCVA", "Atreides") },
|
{ 186, Pair.New("mcv", "Atreides") },
|
||||||
{ 187, Pair.New("TRIKE", "Atreides") },
|
{ 187, Pair.New("trike", "Atreides") },
|
||||||
{ 188, Pair.New("QUAD", "Atreides") },
|
{ 188, Pair.New("quad", "Atreides") },
|
||||||
{ 189, Pair.New("COMBATA", "Atreides") },
|
{ 189, Pair.New("combata", "Atreides") },
|
||||||
{ 190, Pair.New("MISSILETANK", "Atreides") },
|
{ 190, Pair.New("missiletank", "Atreides") },
|
||||||
{ 191, Pair.New("SIEGETANK", "Atreides") },
|
{ 191, Pair.New("siegetank", "Atreides") },
|
||||||
{ 192, Pair.New("CARRYALLA", "Atreides") },
|
{ 192, Pair.New("carryall", "Atreides") },
|
||||||
{ 194, Pair.New("SONICTANK", "Atreides") },
|
{ 194, Pair.New("sonictank", "Atreides") },
|
||||||
|
|
||||||
// Harkonnen:
|
// Harkonnen:
|
||||||
{ 204, Pair.New("WALLH", "Harkonnen") },
|
{ 204, Pair.New("wall", "Harkonnen") },
|
||||||
{ 205, Pair.New("PWRH", "Harkonnen") },
|
{ 205, Pair.New("power", "Harkonnen") },
|
||||||
{ 208, Pair.New("CONYARDH", "Harkonnen") },
|
{ 208, Pair.New("conyard", "Harkonnen") },
|
||||||
{ 211, Pair.New("BARRH", "Harkonnen") },
|
{ 211, Pair.New("barracks", "Harkonnen") },
|
||||||
{ 214, Pair.New("REFH", "Harkonnen") },
|
{ 214, Pair.New("refinery", "Harkonnen") },
|
||||||
{ 217, Pair.New("RADARH", "Harkonnen") },
|
{ 217, Pair.New("radar", "Harkonnen") },
|
||||||
{ 263, Pair.New("LIGHTH", "Harkonnen") },
|
{ 263, Pair.New("light", "Harkonnen") },
|
||||||
{ 269, Pair.New("SILOH", "Harkonnen") },
|
{ 269, Pair.New("silo", "Harkonnen") },
|
||||||
{ 272, Pair.New("HEAVYH", "Harkonnen") },
|
{ 272, Pair.New("heavy", "Harkonnen") },
|
||||||
{ 275, Pair.New("REPAIRH", "Harkonnen") },
|
{ 275, Pair.New("repair", "Harkonnen") },
|
||||||
{ 278, Pair.New("GUNTOWERH", "Harkonnen") },
|
{ 278, Pair.New("guntower", "Harkonnen") },
|
||||||
{ 320, Pair.New("HIGHTECHH", "Harkonnen") },
|
{ 320, Pair.New("hightech", "Harkonnen") },
|
||||||
{ 323, Pair.New("ROCKETTOWERH", "Harkonnen") },
|
{ 323, Pair.New("rockettower", "Harkonnen") },
|
||||||
{ 326, Pair.New("RESEARCHH", "Harkonnen") },
|
{ 326, Pair.New("research", "Harkonnen") },
|
||||||
{ 329, Pair.New("STARPORTH", "Harkonnen") },
|
{ 329, Pair.New("starport", "Harkonnen") },
|
||||||
{ 332, Pair.New("PALACEH", "Harkonnen") },
|
{ 332, Pair.New("palace", "Harkonnen") },
|
||||||
{ 360, Pair.New("RIFLE", "Harkonnen") },
|
{ 360, Pair.New("rifle", "Harkonnen") },
|
||||||
{ 361, Pair.New("BAZOOKA", "Harkonnen") },
|
{ 361, Pair.New("bazooka", "Harkonnen") },
|
||||||
{ 362, Pair.New("FREMEN", "Harkonnen") },
|
{ 362, Pair.New("fremen", "Harkonnen") },
|
||||||
{ 363, Pair.New("SARDAUKAR", "Harkonnen") },
|
{ 363, Pair.New("sardaukar", "Harkonnen") },
|
||||||
{ 364, Pair.New("ENGINEER", "Harkonnen") },
|
{ 364, Pair.New("engineer", "Harkonnen") },
|
||||||
{ 365, Pair.New("HARVESTER", "Harkonnen") },
|
{ 365, Pair.New("harvester", "Harkonnen") },
|
||||||
{ 366, Pair.New("MCVH", "Harkonnen") },
|
{ 366, Pair.New("mcv", "Harkonnen") },
|
||||||
{ 367, Pair.New("TRIKE", "Harkonnen") },
|
{ 367, Pair.New("trike", "Harkonnen") },
|
||||||
{ 368, Pair.New("QUAD", "Harkonnen") },
|
{ 368, Pair.New("quad", "Harkonnen") },
|
||||||
{ 369, Pair.New("COMBATH", "Harkonnen") },
|
{ 369, Pair.New("combath", "Harkonnen") },
|
||||||
{ 370, Pair.New("MISSILETANK", "Harkonnen") },
|
{ 370, Pair.New("missiletank", "Harkonnen") },
|
||||||
{ 371, Pair.New("SIEGETANK", "Harkonnen") },
|
{ 371, Pair.New("siegetank", "Harkonnen") },
|
||||||
{ 372, Pair.New("CARRYALLH", "Harkonnen") },
|
{ 372, Pair.New("carryall", "Harkonnen") },
|
||||||
{ 374, Pair.New("DEVAST", "Harkonnen") },
|
{ 374, Pair.New("devast", "Harkonnen") },
|
||||||
|
|
||||||
// Ordos:
|
// Ordos:
|
||||||
{ 404, Pair.New("WALLO", "Ordos") },
|
{ 404, Pair.New("wall", "Ordos") },
|
||||||
{ 405, Pair.New("PWRO", "Ordos") },
|
{ 405, Pair.New("power", "Ordos") },
|
||||||
{ 408, Pair.New("CONYARDO", "Ordos") },
|
{ 408, Pair.New("conyard", "Ordos") },
|
||||||
{ 411, Pair.New("BARRO", "Ordos") },
|
{ 411, Pair.New("barracks", "Ordos") },
|
||||||
{ 414, Pair.New("REFO", "Ordos") },
|
{ 414, Pair.New("refinery", "Ordos") },
|
||||||
{ 417, Pair.New("RADARO", "Ordos") },
|
{ 417, Pair.New("radar", "Ordos") },
|
||||||
{ 463, Pair.New("LIGHTO", "Ordos") },
|
{ 463, Pair.New("light", "Ordos") },
|
||||||
{ 469, Pair.New("SILOO", "Ordos") },
|
{ 469, Pair.New("silo", "Ordos") },
|
||||||
{ 472, Pair.New("HEAVYO", "Ordos") },
|
{ 472, Pair.New("heavy", "Ordos") },
|
||||||
{ 475, Pair.New("REPAIRO", "Ordos") },
|
{ 475, Pair.New("repair", "Ordos") },
|
||||||
{ 478, Pair.New("GUNTOWERO", "Ordos") },
|
{ 478, Pair.New("guntower", "Ordos") },
|
||||||
{ 520, Pair.New("HIGHTECHO", "Ordos") },
|
{ 520, Pair.New("hightech", "Ordos") },
|
||||||
{ 523, Pair.New("ROCKETTOWERO", "Ordos") },
|
{ 523, Pair.New("rockettower", "Ordos") },
|
||||||
{ 526, Pair.New("RESEARCHO", "Ordos") },
|
{ 526, Pair.New("research", "Ordos") },
|
||||||
{ 529, Pair.New("STARPORTO", "Ordos") },
|
{ 529, Pair.New("starport", "Ordos") },
|
||||||
{ 532, Pair.New("PALACEO", "Ordos") },
|
{ 532, Pair.New("palace", "Ordos") },
|
||||||
{ 560, Pair.New("RIFLE", "Ordos") },
|
{ 560, Pair.New("rifle", "Ordos") },
|
||||||
{ 561, Pair.New("BAZOOKA", "Ordos") },
|
{ 561, Pair.New("bazooka", "Ordos") },
|
||||||
{ 562, Pair.New("SABOTEUR", "Ordos") },
|
{ 562, Pair.New("saboteur", "Ordos") },
|
||||||
{ 563, Pair.New("SARDAUKAR", "Ordos") },
|
{ 563, Pair.New("sardaukar", "Ordos") },
|
||||||
{ 564, Pair.New("ENGINEER", "Ordos") },
|
{ 564, Pair.New("engineer", "Ordos") },
|
||||||
{ 565, Pair.New("HARVESTER", "Ordos") },
|
{ 565, Pair.New("harvester", "Ordos") },
|
||||||
{ 566, Pair.New("MCVO", "Ordos") },
|
{ 566, Pair.New("mcv", "Ordos") },
|
||||||
{ 567, Pair.New("RAIDER", "Ordos") },
|
{ 567, Pair.New("raider", "Ordos") },
|
||||||
{ 568, Pair.New("QUAD", "Ordos") },
|
{ 568, Pair.New("quad", "Ordos") },
|
||||||
{ 569, Pair.New("COMBATO", "Ordos") },
|
{ 569, Pair.New("combato", "Ordos") },
|
||||||
{ 570, Pair.New("MISSILETANK", "Ordos") },
|
{ 570, Pair.New("missiletank", "Ordos") },
|
||||||
{ 571, Pair.New("SIEGETANK", "Ordos") },
|
{ 571, Pair.New("siegetank", "Ordos") },
|
||||||
{ 572, Pair.New("CARRYALLO", "Ordos") },
|
{ 572, Pair.New("carryall", "Ordos") },
|
||||||
{ 574, Pair.New("DEVIATORTANK", "Ordos") },
|
{ 574, Pair.New("deviatortank", "Ordos") },
|
||||||
|
|
||||||
// Corrino:
|
// Corrino:
|
||||||
{ 580, Pair.New("WALLH", "Corrino") },
|
{ 580, Pair.New("wall", "Corrino") },
|
||||||
{ 581, Pair.New("PWRH", "Corrino") },
|
{ 581, Pair.New("power", "Corrino") },
|
||||||
{ 582, Pair.New("CONYARDC", "Corrino") },
|
{ 582, Pair.New("conyard", "Corrino") },
|
||||||
{ 583, Pair.New("BARRH", "Corrino") },
|
{ 583, Pair.New("barracks", "Corrino") },
|
||||||
{ 584, Pair.New("REFH", "Corrino") },
|
{ 584, Pair.New("refinery", "Corrino") },
|
||||||
{ 585, Pair.New("RADARH", "Corrino") },
|
{ 585, Pair.New("radar", "Corrino") },
|
||||||
{ 587, Pair.New("LIGHTH", "Corrino") },
|
{ 587, Pair.New("light", "Corrino") },
|
||||||
{ 588, Pair.New("PALACEC", "Corrino") },
|
{ 588, Pair.New("palace", "Corrino") },
|
||||||
{ 589, Pair.New("SILOH", "Corrino") },
|
{ 589, Pair.New("silo", "Corrino") },
|
||||||
{ 590, Pair.New("HEAVYC", "Corrino") },
|
{ 590, Pair.New("heavy", "Corrino") },
|
||||||
{ 591, Pair.New("REPAIRH", "Corrino") },
|
{ 591, Pair.New("repair", "Corrino") },
|
||||||
{ 592, Pair.New("GUNTOWERH", "Corrino") },
|
{ 592, Pair.New("guntower", "Corrino") },
|
||||||
{ 593, Pair.New("HIGHTECHH", "Corrino") },
|
{ 593, Pair.New("hightech", "Corrino") },
|
||||||
{ 594, Pair.New("ROCKETTOWERH", "Corrino") },
|
{ 594, Pair.New("rockettower", "Corrino") },
|
||||||
{ 595, Pair.New("RESEARCHH", "Corrino") },
|
{ 595, Pair.New("research", "Corrino") },
|
||||||
{ 596, Pair.New("STARPORTC", "Corrino") },
|
{ 596, Pair.New("starport", "Corrino") },
|
||||||
{ 597, Pair.New("SIETCH", "Corrino") },
|
{ 597, Pair.New("sietch", "Corrino") },
|
||||||
{ 598, Pair.New("RIFLE", "Corrino") },
|
{ 598, Pair.New("rifle", "Corrino") },
|
||||||
{ 599, Pair.New("BAZOOKA", "Corrino") },
|
{ 599, Pair.New("bazooka", "Corrino") },
|
||||||
{ 600, Pair.New("SARDAUKAR", "Corrino") },
|
{ 600, Pair.New("sardaukar", "Corrino") },
|
||||||
{ 601, Pair.New("FREMEN", "Corrino") },
|
{ 601, Pair.New("fremen", "Corrino") },
|
||||||
{ 602, Pair.New("ENGINEER", "Corrino") },
|
{ 602, Pair.New("engineer", "Corrino") },
|
||||||
{ 603, Pair.New("HARVESTER", "Corrino") },
|
{ 603, Pair.New("harvester", "Corrino") },
|
||||||
{ 604, Pair.New("MCVH", "Corrino") },
|
{ 604, Pair.New("mcv", "Corrino") },
|
||||||
{ 605, Pair.New("TRIKE", "Corrino") },
|
{ 605, Pair.New("trike", "Corrino") },
|
||||||
{ 606, Pair.New("QUAD", "Corrino") },
|
{ 606, Pair.New("quad", "Corrino") },
|
||||||
{ 607, Pair.New("COMBATH", "Corrino") },
|
{ 607, Pair.New("combath", "Corrino") },
|
||||||
{ 608, Pair.New("MISSILETANK", "Corrino") },
|
{ 608, Pair.New("missiletank", "Corrino") },
|
||||||
{ 609, Pair.New("SIEGETANK", "Corrino") },
|
{ 609, Pair.New("siegetank", "Corrino") },
|
||||||
{ 610, Pair.New("CARRYALLH", "Corrino") },
|
{ 610, Pair.New("carryall", "Corrino") },
|
||||||
|
|
||||||
// Fremen:
|
// Fremen:
|
||||||
{ 620, Pair.New("WALLA", "Fremen") },
|
{ 620, Pair.New("wall", "Fremen") },
|
||||||
{ 621, Pair.New("PWRA", "Fremen") },
|
{ 621, Pair.New("power", "Fremen") },
|
||||||
{ 622, Pair.New("CONYARDA", "Fremen") },
|
{ 622, Pair.New("conyard", "Fremen") },
|
||||||
{ 623, Pair.New("BARRA", "Fremen") },
|
{ 623, Pair.New("barracks", "Fremen") },
|
||||||
{ 624, Pair.New("REFA", "Fremen") },
|
{ 624, Pair.New("refinery", "Fremen") },
|
||||||
{ 625, Pair.New("RADARA", "Fremen") },
|
{ 625, Pair.New("radar", "Fremen") },
|
||||||
{ 627, Pair.New("LIGHTA", "Fremen") },
|
{ 627, Pair.New("light", "Fremen") },
|
||||||
{ 628, Pair.New("PALACEC", "Fremen") },
|
{ 628, Pair.New("palacec", "Fremen") },
|
||||||
{ 629, Pair.New("SILOA", "Fremen") },
|
{ 629, Pair.New("silo", "Fremen") },
|
||||||
{ 630, Pair.New("HEAVYA", "Fremen") },
|
{ 630, Pair.New("heavy", "Fremen") },
|
||||||
{ 631, Pair.New("REPAIRA", "Fremen") },
|
{ 631, Pair.New("repair", "Fremen") },
|
||||||
{ 632, Pair.New("GUNTOWERA", "Fremen") },
|
{ 632, Pair.New("guntower", "Fremen") },
|
||||||
{ 633, Pair.New("HIGHTECHA", "Fremen") },
|
{ 633, Pair.New("hightech", "Fremen") },
|
||||||
{ 634, Pair.New("ROCKETTOWERA", "Fremen") },
|
{ 634, Pair.New("rockettower", "Fremen") },
|
||||||
{ 635, Pair.New("RESEARCHA", "Fremen") },
|
{ 635, Pair.New("research", "Fremen") },
|
||||||
{ 636, Pair.New("STARPORTA", "Fremen") },
|
{ 636, Pair.New("starport", "Fremen") },
|
||||||
{ 637, Pair.New("SIETCH", "Fremen") },
|
{ 637, Pair.New("sietch", "Fremen") },
|
||||||
{ 638, Pair.New("RIFLE", "Fremen") },
|
{ 638, Pair.New("rifle", "Fremen") },
|
||||||
{ 639, Pair.New("BAZOOKA", "Fremen") },
|
{ 639, Pair.New("bazooka", "Fremen") },
|
||||||
{ 640, Pair.New("FREMEN", "Fremen") },
|
{ 640, Pair.New("fremen", "Fremen") },
|
||||||
////{ 641, Pair.New("", "Fremen") },// Fremen fremen non-stealth
|
////{ 641, Pair.new("", "Fremen") },// Fremen fremen non-stealth
|
||||||
{ 642, Pair.New("ENGINEER", "Fremen") },
|
{ 642, Pair.New("engineer", "Fremen") },
|
||||||
{ 643, Pair.New("HARVESTER", "Fremen") },
|
{ 643, Pair.New("harvester", "Fremen") },
|
||||||
{ 644, Pair.New("MCVA", "Fremen") },
|
{ 644, Pair.New("mcv", "Fremen") },
|
||||||
{ 645, Pair.New("TRIKE", "Fremen") },
|
{ 645, Pair.New("trike", "Fremen") },
|
||||||
{ 646, Pair.New("QUAD", "Fremen") },
|
{ 646, Pair.New("quad", "Fremen") },
|
||||||
{ 647, Pair.New("COMBATA", "Fremen") },
|
{ 647, Pair.New("combata", "Fremen") },
|
||||||
{ 648, Pair.New("MISSILETANK", "Fremen") },
|
{ 648, Pair.New("missiletank", "Fremen") },
|
||||||
{ 649, Pair.New("SIEGETANK", "Fremen") },
|
{ 649, Pair.New("siegetank", "Fremen") },
|
||||||
{ 650, Pair.New("CARRYALLA", "Fremen") },
|
{ 650, Pair.New("carryall", "Fremen") },
|
||||||
{ 652, Pair.New("SONICTANK", "Fremen") },
|
{ 652, Pair.New("sonictank", "Fremen") },
|
||||||
|
|
||||||
// Smugglers:
|
// Smugglers:
|
||||||
{ 660, Pair.New("WALLO", "Smugglers") },
|
{ 660, Pair.New("wall", "Smugglers") },
|
||||||
{ 661, Pair.New("PWRO", "Smugglers") },
|
{ 661, Pair.New("power", "Smugglers") },
|
||||||
{ 662, Pair.New("CONYARDO", "Smugglers") },
|
{ 662, Pair.New("conyard", "Smugglers") },
|
||||||
{ 663, Pair.New("BARRO", "Smugglers") },
|
{ 663, Pair.New("barracks", "Smugglers") },
|
||||||
{ 664, Pair.New("REFO", "Smugglers") },
|
{ 664, Pair.New("refinery", "Smugglers") },
|
||||||
{ 666, Pair.New("RADARO", "Smugglers") },
|
{ 666, Pair.New("radar", "Smugglers") },
|
||||||
{ 667, Pair.New("LIGHTO", "Smugglers") },
|
{ 667, Pair.New("light", "Smugglers") },
|
||||||
{ 668, Pair.New("SILOO", "Smugglers") },
|
{ 668, Pair.New("silo", "Smugglers") },
|
||||||
{ 669, Pair.New("HEAVYO", "Smugglers") },
|
{ 669, Pair.New("heavy", "Smugglers") },
|
||||||
{ 670, Pair.New("REPAIRO", "Smugglers") },
|
{ 670, Pair.New("repair", "Smugglers") },
|
||||||
{ 671, Pair.New("GUNTOWERO", "Smugglers") },
|
{ 671, Pair.New("guntower", "Smugglers") },
|
||||||
{ 672, Pair.New("HIGHTECHO", "Smugglers") },
|
{ 672, Pair.New("hightech", "Smugglers") },
|
||||||
{ 673, Pair.New("ROCKETTOWERO", "Smugglers") },
|
{ 673, Pair.New("rockettower", "Smugglers") },
|
||||||
{ 674, Pair.New("RESEARCHO", "Smugglers") },
|
{ 674, Pair.New("research", "Smugglers") },
|
||||||
{ 675, Pair.New("STARPORTO", "Smugglers") },
|
{ 675, Pair.New("starport", "Smugglers") },
|
||||||
{ 676, Pair.New("PALACEO", "Smugglers") },
|
{ 676, Pair.New("palace", "Smugglers") },
|
||||||
{ 677, Pair.New("RIFLE", "Smugglers") },
|
{ 677, Pair.New("rifle", "Smugglers") },
|
||||||
{ 678, Pair.New("BAZOOKA", "Smugglers") },
|
{ 678, Pair.New("bazooka", "Smugglers") },
|
||||||
{ 679, Pair.New("SABOTEUR", "Smugglers") },
|
{ 679, Pair.New("saboteur", "Smugglers") },
|
||||||
{ 680, Pair.New("ENGINEER", "Smugglers") },
|
{ 680, Pair.New("engineer", "Smugglers") },
|
||||||
{ 681, Pair.New("HARVESTER", "Smugglers") },
|
{ 681, Pair.New("harvester", "Smugglers") },
|
||||||
{ 682, Pair.New("MCVO", "Smugglers") },
|
{ 682, Pair.New("mcv", "Smugglers") },
|
||||||
{ 683, Pair.New("TRIKE", "Smugglers") },
|
{ 683, Pair.New("trike", "Smugglers") },
|
||||||
{ 684, Pair.New("QUAD", "Smugglers") },
|
{ 684, Pair.New("quad", "Smugglers") },
|
||||||
{ 685, Pair.New("COMBATO", "Smugglers") },
|
{ 685, Pair.New("combato", "Smugglers") },
|
||||||
{ 686, Pair.New("MISSILETANK", "Smugglers") },
|
{ 686, Pair.New("missiletank", "Smugglers") },
|
||||||
{ 687, Pair.New("SIEGETANK", "Smugglers") },
|
{ 687, Pair.New("siegetank", "Smugglers") },
|
||||||
{ 688, Pair.New("CARRYALLO", "Smugglers") },
|
{ 688, Pair.New("carryall", "Smugglers") },
|
||||||
|
|
||||||
// Mercenaries:
|
// Mercenaries:
|
||||||
{ 700, Pair.New("WALLO", "Mercenaries") },
|
{ 700, Pair.New("wall", "Mercenaries") },
|
||||||
{ 701, Pair.New("PWRO", "Mercenaries") },
|
{ 701, Pair.New("power", "Mercenaries") },
|
||||||
{ 702, Pair.New("CONYARDO", "Mercenaries") },
|
{ 702, Pair.New("conyard", "Mercenaries") },
|
||||||
{ 703, Pair.New("BARRO", "Mercenaries") },
|
{ 703, Pair.New("barracks", "Mercenaries") },
|
||||||
{ 704, Pair.New("REFO", "Mercenaries") },
|
{ 704, Pair.New("refinery", "Mercenaries") },
|
||||||
{ 705, Pair.New("RADARO", "Mercenaries") },
|
{ 705, Pair.New("radar", "Mercenaries") },
|
||||||
{ 707, Pair.New("LIGHTO", "Mercenaries") },
|
{ 707, Pair.New("light", "Mercenaries") },
|
||||||
{ 708, Pair.New("SILOO", "Mercenaries") },
|
{ 708, Pair.New("silo", "Mercenaries") },
|
||||||
{ 709, Pair.New("HEAVYO", "Mercenaries") },
|
{ 709, Pair.New("heavy", "Mercenaries") },
|
||||||
{ 710, Pair.New("REPAIRO", "Mercenaries") },
|
{ 710, Pair.New("repair", "Mercenaries") },
|
||||||
{ 711, Pair.New("GUNTOWERO", "Mercenaries") },
|
{ 711, Pair.New("guntower", "Mercenaries") },
|
||||||
{ 712, Pair.New("HIGHTECHO", "Mercenaries") },
|
{ 712, Pair.New("hightech", "Mercenaries") },
|
||||||
{ 713, Pair.New("ROCKETTOWERO", "Mercenaries") },
|
{ 713, Pair.New("rockettower", "Mercenaries") },
|
||||||
{ 714, Pair.New("RESEARCHO", "Mercenaries") },
|
{ 714, Pair.New("research", "Mercenaries") },
|
||||||
{ 715, Pair.New("STARPORTO", "Mercenaries") },
|
{ 715, Pair.New("starport", "Mercenaries") },
|
||||||
{ 716, Pair.New("PALACEO", "Mercenaries") },
|
{ 716, Pair.New("palace", "Mercenaries") },
|
||||||
{ 717, Pair.New("RIFLE", "Mercenaries") },
|
{ 717, Pair.New("rifle", "Mercenaries") },
|
||||||
{ 718, Pair.New("BAZOOKA", "Mercenaries") },
|
{ 718, Pair.New("bazooka", "Mercenaries") },
|
||||||
{ 719, Pair.New("SABOTEUR", "Mercenaries") },
|
{ 719, Pair.New("saboteur", "Mercenaries") },
|
||||||
{ 720, Pair.New("HARVESTER", "Mercenaries") },
|
{ 720, Pair.New("harvester", "Mercenaries") },
|
||||||
{ 721, Pair.New("HARVESTER", "Mercenaries") },
|
{ 721, Pair.New("harvester", "Mercenaries") },
|
||||||
{ 722, Pair.New("MCVO", "Mercenaries") },
|
{ 722, Pair.New("mcv", "Mercenaries") },
|
||||||
{ 723, Pair.New("TRIKE", "Mercenaries") },
|
{ 723, Pair.New("trike", "Mercenaries") },
|
||||||
{ 724, Pair.New("QUAD", "Mercenaries") },
|
{ 724, Pair.New("quad", "Mercenaries") },
|
||||||
{ 725, Pair.New("COMBATO", "Mercenaries") },
|
{ 725, Pair.New("combato", "Mercenaries") },
|
||||||
{ 726, Pair.New("MISSILETANK", "Mercenaries") },
|
{ 726, Pair.New("missiletank", "Mercenaries") },
|
||||||
{ 727, Pair.New("SIEGETANK", "Mercenaries") },
|
{ 727, Pair.New("siegetank", "Mercenaries") },
|
||||||
{ 728, Pair.New("CARRYALLO", "Mercenaries") },
|
{ 728, Pair.New("carryall", "Mercenaries") },
|
||||||
};
|
};
|
||||||
|
|
||||||
readonly Ruleset rules;
|
readonly Ruleset rules;
|
||||||
|
|||||||
@@ -21,18 +21,20 @@ namespace OpenRA.Mods.RA.Traits
|
|||||||
[Desc("Uses the \"Cloneable\" trait to determine whether or not we should clone a produced unit.")]
|
[Desc("Uses the \"Cloneable\" trait to determine whether or not we should clone a produced unit.")]
|
||||||
public readonly string[] CloneableTypes = { };
|
public readonly string[] CloneableTypes = { };
|
||||||
|
|
||||||
public object Create(ActorInitializer init) { return new ClonesProducedUnits(init.Self, this); }
|
public object Create(ActorInitializer init) { return new ClonesProducedUnits(init, this); }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class ClonesProducedUnits : INotifyOtherProduction
|
public class ClonesProducedUnits : INotifyOtherProduction
|
||||||
{
|
{
|
||||||
readonly ClonesProducedUnitsInfo info;
|
readonly ClonesProducedUnitsInfo info;
|
||||||
readonly Production production;
|
readonly Production production;
|
||||||
|
readonly string race;
|
||||||
|
|
||||||
public ClonesProducedUnits(Actor self, ClonesProducedUnitsInfo info)
|
public ClonesProducedUnits(ActorInitializer init, ClonesProducedUnitsInfo info)
|
||||||
{
|
{
|
||||||
this.info = info;
|
this.info = info;
|
||||||
production = self.Trait<Production>();
|
production = init.Self.Trait<Production>();
|
||||||
|
race = init.Contains<RaceInit>() ? init.Get<RaceInit, string>() : init.Self.Owner.Country.Race;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void UnitProducedByOther(Actor self, Actor producer, Actor produced)
|
public void UnitProducedByOther(Actor self, Actor producer, Actor produced)
|
||||||
@@ -45,7 +47,7 @@ namespace OpenRA.Mods.RA.Traits
|
|||||||
if (ci == null || !info.CloneableTypes.Intersect(ci.Types).Any())
|
if (ci == null || !info.CloneableTypes.Intersect(ci.Types).Any())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
production.Produce(self, produced.Info, self.Owner.Country.Race);
|
production.Produce(self, produced.Info, race);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ namespace OpenRA.Mods.RA.Traits
|
|||||||
{
|
{
|
||||||
class RenderDisguiseInfo : RenderInfantryInfo, Requires<DisguiseInfo>
|
class RenderDisguiseInfo : RenderInfantryInfo, Requires<DisguiseInfo>
|
||||||
{
|
{
|
||||||
public override object Create(ActorInitializer init) { return new RenderDisguise(init.Self, this); }
|
public override object Create(ActorInitializer init) { return new RenderDisguise(init, this); }
|
||||||
}
|
}
|
||||||
|
|
||||||
class RenderDisguise : RenderInfantry
|
class RenderDisguise : RenderInfantry
|
||||||
@@ -24,11 +24,11 @@ namespace OpenRA.Mods.RA.Traits
|
|||||||
string intendedSprite;
|
string intendedSprite;
|
||||||
Disguise disguise;
|
Disguise disguise;
|
||||||
|
|
||||||
public RenderDisguise(Actor self, RenderDisguiseInfo info)
|
public RenderDisguise(ActorInitializer init, RenderDisguiseInfo info)
|
||||||
: base(self, info)
|
: base(init, info)
|
||||||
{
|
{
|
||||||
this.info = info;
|
this.info = info;
|
||||||
disguise = self.Trait<Disguise>();
|
disguise = init.Self.Trait<Disguise>();
|
||||||
intendedSprite = disguise.AsSprite;
|
intendedSprite = disguise.AsSprite;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ namespace OpenRA.Mods.RA.Traits
|
|||||||
public readonly string OpenAnim = "open";
|
public readonly string OpenAnim = "open";
|
||||||
public readonly string UnloadAnim = "unload";
|
public readonly string UnloadAnim = "unload";
|
||||||
|
|
||||||
public override object Create(ActorInitializer init) { return new RenderLandingCraft(init.Self, this); }
|
public override object Create(ActorInitializer init) { return new RenderLandingCraft(init, this); }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class RenderLandingCraft : RenderUnit
|
public class RenderLandingCraft : RenderUnit
|
||||||
@@ -31,11 +31,11 @@ namespace OpenRA.Mods.RA.Traits
|
|||||||
readonly IMove move;
|
readonly IMove move;
|
||||||
bool open;
|
bool open;
|
||||||
|
|
||||||
public RenderLandingCraft(Actor self, RenderLandingCraftInfo info)
|
public RenderLandingCraft(ActorInitializer init, RenderLandingCraftInfo info)
|
||||||
: base(self)
|
: base(init, info)
|
||||||
{
|
{
|
||||||
this.info = info;
|
this.info = info;
|
||||||
this.self = self;
|
self = init.Self;
|
||||||
cargo = self.Trait<Cargo>();
|
cargo = self.Trait<Cargo>();
|
||||||
move = self.Trait<IMove>();
|
move = self.Trait<IMove>();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ namespace OpenRA.Mods.RA.Traits
|
|||||||
[Desc("Armament name")]
|
[Desc("Armament name")]
|
||||||
public readonly string Armament = "primary";
|
public readonly string Armament = "primary";
|
||||||
|
|
||||||
public override object Create(ActorInitializer init) { return new RenderUnitReload(init.Self, this); }
|
public override object Create(ActorInitializer init) { return new RenderUnitReload(init, this); }
|
||||||
}
|
}
|
||||||
|
|
||||||
class RenderUnitReload : RenderUnit
|
class RenderUnitReload : RenderUnit
|
||||||
@@ -27,11 +27,11 @@ namespace OpenRA.Mods.RA.Traits
|
|||||||
readonly AttackBase attack;
|
readonly AttackBase attack;
|
||||||
readonly Armament armament;
|
readonly Armament armament;
|
||||||
|
|
||||||
public RenderUnitReload(Actor self, RenderUnitReloadInfo info)
|
public RenderUnitReload(ActorInitializer init, RenderUnitReloadInfo info)
|
||||||
: base(self)
|
: base(init, info)
|
||||||
{
|
{
|
||||||
attack = self.Trait<AttackBase>();
|
attack = init.Self.Trait<AttackBase>();
|
||||||
armament = self.TraitsImplementing<Armament>()
|
armament = init.Self.TraitsImplementing<Armament>()
|
||||||
.Single(a => a.Info.Name == info.Armament);
|
.Single(a => a.Info.Name == info.Armament);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -46,8 +46,8 @@ namespace OpenRA.Mods.TS.Traits
|
|||||||
var body = init.Actor.Traits.Get<BodyOrientationInfo>();
|
var body = init.Actor.Traits.Get<BodyOrientationInfo>();
|
||||||
var sequenceProvider = init.World.Map.SequenceProvider;
|
var sequenceProvider = init.World.Map.SequenceProvider;
|
||||||
var image = Image ?? init.Actor.Name;
|
var image = Image ?? init.Actor.Name;
|
||||||
var facings = body.QuantizedFacings == -1 ? init.Actor.Traits.Get<IQuantizeBodyOrientationInfo>().QuantizedBodyFacings(sequenceProvider, init.Actor) : body.QuantizedFacings;
|
var facings = body.QuantizedFacings == -1 ? init.Actor.Traits.Get<IQuantizeBodyOrientationInfo>().QuantizedBodyFacings(init.Actor, sequenceProvider, init.Owner.Country.Race) : body.QuantizedFacings;
|
||||||
var palette = init.WorldRenderer.Palette(Palette ?? (init.Owner != null ? PlayerPalette + init.Owner.InternalName : null));
|
var palette = init.WorldRenderer.Palette(Palette ?? PlayerPalette + init.Owner.InternalName);
|
||||||
|
|
||||||
var ifacing = init.Actor.Traits.GetOrDefault<IFacingInfo>();
|
var ifacing = init.Actor.Traits.GetOrDefault<IFacingInfo>();
|
||||||
var facing = ifacing != null ? init.Contains<FacingInit>() ? init.Get<FacingInit, int>() : ifacing.GetInitialFacing() : 0;
|
var facing = ifacing != null ? init.Contains<FacingInit>() ? init.Get<FacingInit, int>() : ifacing.GetInitialFacing() : 0;
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ namespace OpenRA.Mods.TS.Traits
|
|||||||
() => false, () => 0);
|
() => false, () => 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
public int QuantizedBodyFacings(SequenceProvider sequenceProvider, ActorInfo ai) { return 0; }
|
public int QuantizedBodyFacings(ActorInfo ai, SequenceProvider sequenceProvider, string race) { return 0; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class WithVoxelBody : IAutoSelectionSize
|
public class WithVoxelBody : IAutoSelectionSize
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ namespace OpenRA.Mods.TS.Traits
|
|||||||
() => false, () => 0);
|
() => false, () => 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
public int QuantizedBodyFacings(SequenceProvider sequenceProvider, ActorInfo ai) { return 0; }
|
public int QuantizedBodyFacings(ActorInfo ai, SequenceProvider sequenceProvider, string race) { return 0; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class WithVoxelUnloadBody : IAutoSelectionSize
|
public class WithVoxelUnloadBody : IAutoSelectionSize
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ namespace OpenRA.Mods.TS.Traits
|
|||||||
public readonly int TickRate = 5;
|
public readonly int TickRate = 5;
|
||||||
public object Create(ActorInitializer init) { return new WithVoxelWalkerBody(init.Self, this); }
|
public object Create(ActorInitializer init) { return new WithVoxelWalkerBody(init.Self, this); }
|
||||||
|
|
||||||
public int QuantizedBodyFacings(SequenceProvider sequenceProvider, ActorInfo ai) { return 0; }
|
public int QuantizedBodyFacings(ActorInfo ai, SequenceProvider sequenceProvider, string race) { return 0; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class WithVoxelWalkerBody : IAutoSelectionSize, ITick
|
public class WithVoxelWalkerBody : IAutoSelectionSize, ITick
|
||||||
|
|||||||
@@ -1,9 +1,5 @@
|
|||||||
FACT:
|
FACT:
|
||||||
Inherits: ^BaseBuilding
|
Inherits: ^BaseBuilding
|
||||||
Buildable:
|
|
||||||
Queue: Building.GDI, Building.Nod
|
|
||||||
BuildPaletteOrder: 1000
|
|
||||||
Prerequisites: ~disabled
|
|
||||||
Valued:
|
Valued:
|
||||||
Cost: 2000
|
Cost: 2000
|
||||||
Tooltip:
|
Tooltip:
|
||||||
@@ -20,7 +16,7 @@ FACT:
|
|||||||
Range: 10c0
|
Range: 10c0
|
||||||
Bib:
|
Bib:
|
||||||
Production:
|
Production:
|
||||||
Produces: Building.GDI, Buildings.Nod, Defence.GDI, Defence.Nod
|
Produces: Building.GDI, Building.Nod, Defence.GDI, Defence.Nod
|
||||||
Transforms:
|
Transforms:
|
||||||
IntoActor: mcv
|
IntoActor: mcv
|
||||||
Offset: 1,1
|
Offset: 1,1
|
||||||
@@ -77,6 +73,30 @@ FACT:
|
|||||||
Power:
|
Power:
|
||||||
Amount: 0
|
Amount: 0
|
||||||
|
|
||||||
|
FACT.GDI:
|
||||||
|
Inherits: FACT
|
||||||
|
RenderBuilding:
|
||||||
|
Image: fact
|
||||||
|
Buildable:
|
||||||
|
Queue: Building.GDI, Building.Nod
|
||||||
|
BuildPaletteOrder: 1000
|
||||||
|
Prerequisites: ~disabled
|
||||||
|
ForceRace: gdi
|
||||||
|
Tooltip:
|
||||||
|
Name: Construction Yard (GDI)
|
||||||
|
|
||||||
|
FACT.NOD:
|
||||||
|
Inherits: FACT
|
||||||
|
RenderBuilding:
|
||||||
|
Image: fact
|
||||||
|
Buildable:
|
||||||
|
Queue: Building.GDI, Building.Nod
|
||||||
|
BuildPaletteOrder: 1000
|
||||||
|
Prerequisites: ~disabled
|
||||||
|
ForceRace: nod
|
||||||
|
Tooltip:
|
||||||
|
Name: Construction Yard (Nod)
|
||||||
|
|
||||||
NUKE:
|
NUKE:
|
||||||
Inherits: ^BaseBuilding
|
Inherits: ^BaseBuilding
|
||||||
Valued:
|
Valued:
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ MCV:
|
|||||||
Offset: -1,-1
|
Offset: -1,-1
|
||||||
Facing: 108
|
Facing: 108
|
||||||
TransformSounds: constru2.aud, hvydoor1.aud
|
TransformSounds: constru2.aud, hvydoor1.aud
|
||||||
NoTransformSounds: deploy1.aud
|
NoTransformNotification: BuildingCannotPlaceAudio
|
||||||
RenderUnit:
|
RenderUnit:
|
||||||
MustBeDestroyed:
|
MustBeDestroyed:
|
||||||
RequiredForShortGame: true
|
RequiredForShortGame: true
|
||||||
|
|||||||
@@ -35,6 +35,7 @@ Speech:
|
|||||||
WormAttack: WATTK
|
WormAttack: WATTK
|
||||||
EnemyUnitsApproaching: ENEMY
|
EnemyUnitsApproaching: ENEMY
|
||||||
UnitRepaired: GANEW
|
UnitRepaired: GANEW
|
||||||
|
CannotDeploy: DPLOY
|
||||||
|
|
||||||
Sounds:
|
Sounds:
|
||||||
DefaultVariant: .WAV
|
DefaultVariant: .WAV
|
||||||
|
|||||||
@@ -62,16 +62,16 @@ Actors:
|
|||||||
Actor29: concretea
|
Actor29: concretea
|
||||||
Location: 54,59
|
Location: 54,59
|
||||||
Owner: Neutral
|
Owner: Neutral
|
||||||
Actor30: pwra
|
Actor30: power
|
||||||
Location: 54,58
|
Location: 54,58
|
||||||
Owner: Atreides
|
Owner: Atreides
|
||||||
Actor31: concretea
|
Actor31: concretea
|
||||||
Location: 54,62
|
Location: 54,62
|
||||||
Owner: Neutral
|
Owner: Neutral
|
||||||
Actor32: siloa
|
Actor32: silo
|
||||||
Location: 54,62
|
Location: 54,62
|
||||||
Owner: Atreides
|
Owner: Atreides
|
||||||
Actor33: guntowera
|
Actor33: guntower
|
||||||
Location: 54,63
|
Location: 54,63
|
||||||
Owner: Atreides
|
Owner: Atreides
|
||||||
Actor34: siegetank
|
Actor34: siegetank
|
||||||
@@ -87,13 +87,13 @@ Actors:
|
|||||||
Actor37: concreteb
|
Actor37: concreteb
|
||||||
Location: 50,37
|
Location: 50,37
|
||||||
Owner: Neutral
|
Owner: Neutral
|
||||||
Actor38: palacec
|
Actor38: palace
|
||||||
Location: 50,37
|
Location: 50,37
|
||||||
Owner: Creeps
|
Owner: Creeps
|
||||||
Actor39: barrh
|
Actor39: barracks
|
||||||
Location: 48,37
|
Location: 48,37
|
||||||
Owner: Creeps
|
Owner: Creeps
|
||||||
Actor40: rockettowerh
|
Actor40: rockettower
|
||||||
Location: 46,39
|
Location: 46,39
|
||||||
Owner: Creeps
|
Owner: Creeps
|
||||||
Actor41: sardaukar
|
Actor41: sardaukar
|
||||||
@@ -108,9 +108,10 @@ Actors:
|
|||||||
Entry: waypoint
|
Entry: waypoint
|
||||||
Location: 80, 8
|
Location: 80, 8
|
||||||
Owner: Neutral
|
Owner: Neutral
|
||||||
AtreidesSpiceRefinery: refa
|
AtreidesSpiceRefinery: refinery
|
||||||
Location: 57,58
|
Location: 57,58
|
||||||
Owner: Atreides
|
Owner: Atreides
|
||||||
|
FreeActor: false
|
||||||
|
|
||||||
Smudges:
|
Smudges:
|
||||||
|
|
||||||
@@ -126,20 +127,15 @@ Rules:
|
|||||||
Maximum: 1
|
Maximum: 1
|
||||||
LuaScript:
|
LuaScript:
|
||||||
Scripts: shellmap.lua
|
Scripts: shellmap.lua
|
||||||
REFA:
|
carryall.scripted:
|
||||||
-FreeActor:
|
|
||||||
CARRYALLA:
|
|
||||||
-AutoCarryall:
|
|
||||||
Helicopter:
|
Helicopter:
|
||||||
CruiseAltitude: 2048
|
|
||||||
LandAltitude: 512
|
|
||||||
LandWhenIdle: True
|
LandWhenIdle: True
|
||||||
Cargo:
|
Cargo:
|
||||||
Types: Vehicle
|
Types: Vehicle
|
||||||
WithCargo:
|
WithCargo:
|
||||||
DisplayTypes: Vehicle
|
DisplayTypes: Vehicle
|
||||||
LocalOffset: 0,0,-256
|
LocalOffset: 0,0,-256
|
||||||
ROCKETTOWERH:
|
rockettower:
|
||||||
Power:
|
Power:
|
||||||
Amount: 100
|
Amount: 100
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ InitializeHarvester = function(harvester)
|
|||||||
end
|
end
|
||||||
|
|
||||||
InsertHarvester = function()
|
InsertHarvester = function()
|
||||||
local harvesters = Reinforcements.ReinforceWithTransport(atreides, "carryalla", { "harvester" },
|
local harvesters = Reinforcements.ReinforceWithTransport(atreides, "carryall.scripted", { "harvester" },
|
||||||
{ Entry.Location, AtreidesSpiceRefinery.Location + CVec.New(2, 3) }, { Entry.Location })[2]
|
{ Entry.Location, AtreidesSpiceRefinery.Location + CVec.New(2, 3) }, { Entry.Location })[2]
|
||||||
|
|
||||||
Utils.Do(harvesters, function(harvester)
|
Utils.Do(harvesters, function(harvester)
|
||||||
|
|||||||
@@ -30,14 +30,12 @@ Rules:
|
|||||||
./mods/d2k/rules/world.yaml
|
./mods/d2k/rules/world.yaml
|
||||||
./mods/d2k/rules/defaults.yaml
|
./mods/d2k/rules/defaults.yaml
|
||||||
./mods/d2k/rules/vehicles.yaml
|
./mods/d2k/rules/vehicles.yaml
|
||||||
|
./mods/d2k/rules/starport.yaml
|
||||||
|
./mods/d2k/rules/husks.yaml
|
||||||
./mods/d2k/rules/structures.yaml
|
./mods/d2k/rules/structures.yaml
|
||||||
./mods/d2k/rules/aircraft.yaml
|
./mods/d2k/rules/aircraft.yaml
|
||||||
./mods/d2k/rules/infantry.yaml
|
./mods/d2k/rules/infantry.yaml
|
||||||
./mods/d2k/rules/atreides.yaml
|
|
||||||
./mods/d2k/rules/harkonnen.yaml
|
|
||||||
./mods/d2k/rules/ordos.yaml
|
|
||||||
./mods/d2k/rules/arrakis.yaml
|
./mods/d2k/rules/arrakis.yaml
|
||||||
./mods/d2k/rules/corrino.yaml
|
|
||||||
|
|
||||||
Sequences:
|
Sequences:
|
||||||
./mods/d2k/sequences/aircraft.yaml
|
./mods/d2k/sequences/aircraft.yaml
|
||||||
|
|||||||
@@ -3,84 +3,39 @@ Player:
|
|||||||
Name: Omnius
|
Name: Omnius
|
||||||
UnitQueues: Infantry, Vehicle, Armor, Starport
|
UnitQueues: Infantry, Vehicle, Armor, Starport
|
||||||
BuildingCommonNames:
|
BuildingCommonNames:
|
||||||
ConstructionYard: conyarda,conyardh,conyardo
|
ConstructionYard: conyard
|
||||||
Refinery: refa,refh,refo
|
Refinery: refinery
|
||||||
Power: pwra,pwrh,pwro
|
Power: power
|
||||||
Barracks: barra,barrh,barro
|
VehiclesFactory: light, heavy, starport
|
||||||
VehiclesFactory: lighta,lighth,lighto,heavya,heavyh,heavyo
|
Production: light, heavy, barracks, starport
|
||||||
Production: lighta,lighth,lighto,heavya,heavyh,heavyo,barra,barrh,barro
|
Silo: silo
|
||||||
Silo: siloa, siloh, siloo
|
|
||||||
UnitsCommonNames:
|
UnitsCommonNames:
|
||||||
Mcv: mcva,mcvh,mcvo
|
Mcv: mcv
|
||||||
BuildingLimits:
|
BuildingLimits:
|
||||||
refa: 4
|
refinery: 4
|
||||||
refh: 4
|
barracks: 1
|
||||||
refo: 4
|
light: 1
|
||||||
barra: 1
|
heavy: 1
|
||||||
barrh: 1
|
research: 1
|
||||||
barro: 1
|
repair: 1
|
||||||
lighta: 1
|
radar: 1
|
||||||
lighth: 1
|
hightech: 1
|
||||||
lighto: 1
|
palace: 1
|
||||||
heavya: 1
|
|
||||||
heavyh: 1
|
|
||||||
heavyo: 1
|
|
||||||
researcha: 1
|
|
||||||
researchh: 1
|
|
||||||
researcho: 1
|
|
||||||
repaira: 1
|
|
||||||
repairh: 1
|
|
||||||
repairo: 1
|
|
||||||
radara: 1
|
|
||||||
radaro: 1
|
|
||||||
radarh: 1
|
|
||||||
hightecha: 1
|
|
||||||
hightechh: 1
|
|
||||||
hightecho: 1
|
|
||||||
palacea: 1
|
|
||||||
palaceh: 1
|
|
||||||
palaceo: 1
|
|
||||||
BuildingFractions:
|
BuildingFractions:
|
||||||
refa: 20.1%
|
refinery: 20.1%
|
||||||
refh: 20.1%
|
barracks: 0.1%
|
||||||
refo: 20.1%
|
light: 0.1%
|
||||||
barra: 0.1%
|
heavy: 0.1%
|
||||||
barrh: 0.1%
|
radar: 0.1%
|
||||||
barro: 0.1%
|
hightech: 0.1%
|
||||||
lighta: 0.1%
|
starport: 0.1%
|
||||||
lighth: 0.1%
|
research: 0.1%
|
||||||
lighto: 0.1%
|
repair: 0.1%
|
||||||
heavya: 0.1%
|
guntower: 8%
|
||||||
heavyh: 0.1%
|
rockettower: 6%
|
||||||
heavyo: 0.1%
|
power: 10%
|
||||||
radara: 0.1%
|
|
||||||
radaro: 0.1%
|
|
||||||
radarh: 0.1%
|
|
||||||
hightecha: 0.1%
|
|
||||||
hightechh: 0.1%
|
|
||||||
hightecho: 0.1%
|
|
||||||
starporta: 0.1%
|
|
||||||
starporth: 0.1%
|
|
||||||
starporto: 0.1%
|
|
||||||
researcha: 0.1%
|
|
||||||
researchh: 0.1%
|
|
||||||
researcho: 0.1%
|
|
||||||
repaira: 0.1%
|
|
||||||
repairh: 0.1%
|
|
||||||
repairo: 0.1%
|
|
||||||
guntowera: 8%
|
|
||||||
guntowerh: 8%
|
|
||||||
guntowero: 8%
|
|
||||||
rockettowera: 6%
|
|
||||||
rockettowerh: 6%
|
|
||||||
rockettowero: 6%
|
|
||||||
pwra: 10%
|
|
||||||
pwrh: 10%
|
|
||||||
pwro: 10%
|
|
||||||
UnitsToBuild:
|
UnitsToBuild:
|
||||||
carryalla: 1%
|
carryall: 1%
|
||||||
carryallh: 1%
|
|
||||||
carryallo: 1%
|
|
||||||
rifle: 6%
|
rifle: 6%
|
||||||
bazooka: 5%
|
bazooka: 5%
|
||||||
medic: 1%
|
medic: 1%
|
||||||
@@ -165,84 +120,39 @@ Player:
|
|||||||
Name: Vidious
|
Name: Vidious
|
||||||
UnitQueues: Infantry, Vehicle, Armor, Starport
|
UnitQueues: Infantry, Vehicle, Armor, Starport
|
||||||
BuildingCommonNames:
|
BuildingCommonNames:
|
||||||
ConstructionYard: conyarda,conyardh,conyardo
|
ConstructionYard: conyard
|
||||||
Refinery: refa,refh,refo
|
Refinery: refinery
|
||||||
Power: pwra,pwrh,pwro
|
Power: power
|
||||||
Barracks: barra,barrh,barro
|
VehiclesFactory: light, heavy, starport
|
||||||
VehiclesFactory: lighta,lighth,lighto,heavya,heavyh,heavyo
|
Production: light, heavy, barracks, starport
|
||||||
Production: lighta,lighth,lighto,heavya,heavyh,heavyo,barra,barrh,barro
|
Silo: silo
|
||||||
Silo: siloa, siloh, siloo
|
|
||||||
UnitsCommonNames:
|
UnitsCommonNames:
|
||||||
Mcv: mcva,mcvh,mcvo
|
Mcv: mcv
|
||||||
BuildingLimits:
|
BuildingLimits:
|
||||||
refa: 4
|
refinery: 4
|
||||||
refh: 4
|
barracks: 1
|
||||||
refo: 4
|
light: 1
|
||||||
barra: 1
|
heavy: 1
|
||||||
barrh: 1
|
research: 1
|
||||||
barro: 1
|
repair: 1
|
||||||
lighta: 1
|
radar: 1
|
||||||
lighth: 1
|
hightech: 1
|
||||||
lighto: 1
|
palace: 1
|
||||||
heavya: 1
|
|
||||||
heavyh: 1
|
|
||||||
heavyo: 1
|
|
||||||
researcha: 1
|
|
||||||
researchh: 1
|
|
||||||
researcho: 1
|
|
||||||
repaira: 1
|
|
||||||
repairh: 1
|
|
||||||
repairo: 1
|
|
||||||
radara: 1
|
|
||||||
radaro: 1
|
|
||||||
radarh: 1
|
|
||||||
hightecha: 1
|
|
||||||
hightechh: 1
|
|
||||||
hightecho: 1
|
|
||||||
palacea: 1
|
|
||||||
palaceh: 1
|
|
||||||
palaceo: 1
|
|
||||||
BuildingFractions:
|
BuildingFractions:
|
||||||
refa: 20.1%
|
refinery: 20.1%
|
||||||
refh: 20.1%
|
barracks: 0.1%
|
||||||
refo: 20.1%
|
light: 0.1%
|
||||||
barra: 0.1%
|
heavy: 0.1%
|
||||||
barrh: 0.1%
|
radar: 0.1%
|
||||||
barro: 0.1%
|
hightech: 0.1%
|
||||||
lighta: 0.1%
|
repair: 0.1%
|
||||||
lighth: 0.1%
|
starport: 0.1%
|
||||||
lighto: 0.1%
|
palace: 0.1%
|
||||||
heavya: 0.1%
|
guntower: 5%
|
||||||
heavyh: 0.1%
|
rockettower: 10%
|
||||||
heavyo: 0.1%
|
power: 12%
|
||||||
radara: 0.1%
|
|
||||||
radaro: 0.1%
|
|
||||||
radarh: 0.1%
|
|
||||||
hightecha: 0.1%
|
|
||||||
hightechh: 0.1%
|
|
||||||
hightecho: 0.1%
|
|
||||||
repaira: 0.1%
|
|
||||||
repairh: 0.1%
|
|
||||||
repairo: 0.1%
|
|
||||||
starporta: 0.1%
|
|
||||||
starporth: 0.1%
|
|
||||||
starporto: 0.1%
|
|
||||||
palacea: 0.1%
|
|
||||||
palaceh: 0.1%
|
|
||||||
palaceo: 0.1%
|
|
||||||
guntowera: 5%
|
|
||||||
guntowerh: 5%
|
|
||||||
guntowero: 5%
|
|
||||||
rockettowera: 10%
|
|
||||||
rockettowerh: 10%
|
|
||||||
rockettowero: 10%
|
|
||||||
pwra: 12%
|
|
||||||
pwrh: 12%
|
|
||||||
pwro: 12%
|
|
||||||
UnitsToBuild:
|
UnitsToBuild:
|
||||||
carryalla: 1%
|
carryall: 1%
|
||||||
carryallh: 1%
|
|
||||||
carryallo: 1%
|
|
||||||
rifle: 2%
|
rifle: 2%
|
||||||
bazooka: 2%
|
bazooka: 2%
|
||||||
medic: 0.5%
|
medic: 0.5%
|
||||||
@@ -327,84 +237,39 @@ Player:
|
|||||||
Name: Gladius
|
Name: Gladius
|
||||||
UnitQueues: Infantry, Vehicle, Armor, Starport
|
UnitQueues: Infantry, Vehicle, Armor, Starport
|
||||||
BuildingCommonNames:
|
BuildingCommonNames:
|
||||||
ConstructionYard: conyarda,conyardh,conyardo
|
ConstructionYard: conyard
|
||||||
Refinery: refa,refh,refo
|
Refinery: refinery
|
||||||
Power: pwra,pwrh,pwro
|
Power: power
|
||||||
Barracks: barra,barrh,barro
|
VehiclesFactory: light, heavy, starport
|
||||||
VehiclesFactory: lighta,lighth,lighto,heavya,heavyh,heavyo
|
Production: light, heavy, barracks, starport
|
||||||
Production: lighta,lighth,lighto,heavya,heavyh,heavyo,barra,barrh,barro
|
Silo: silo
|
||||||
Silo: siloa, siloh, siloo
|
|
||||||
UnitsCommonNames:
|
UnitsCommonNames:
|
||||||
Mcv: mcva,mcvh,mcvo
|
Mcv: mcv
|
||||||
BuildingLimits:
|
BuildingLimits:
|
||||||
refa: 4
|
refinery: 4
|
||||||
refh: 4
|
barracks: 1
|
||||||
refo: 4
|
light: 1
|
||||||
barra: 1
|
heavy: 1
|
||||||
barrh: 1
|
research: 1
|
||||||
barro: 1
|
repair: 1
|
||||||
lighta: 1
|
radar: 1
|
||||||
lighth: 1
|
hightech: 1
|
||||||
lighto: 1
|
palace: 1
|
||||||
heavya: 1
|
|
||||||
heavyh: 1
|
|
||||||
heavyo: 1
|
|
||||||
researcha: 1
|
|
||||||
researchh: 1
|
|
||||||
researcho: 1
|
|
||||||
repaira: 1
|
|
||||||
repairh: 1
|
|
||||||
repairo: 1
|
|
||||||
radara: 1
|
|
||||||
radaro: 1
|
|
||||||
radarh: 1
|
|
||||||
hightecha: 1
|
|
||||||
hightechh: 1
|
|
||||||
hightecho: 1
|
|
||||||
palacea: 1
|
|
||||||
palaceh: 1
|
|
||||||
palaceo: 1
|
|
||||||
BuildingFractions:
|
BuildingFractions:
|
||||||
refa: 20.1%
|
refinery: 20.1%
|
||||||
refh: 20.1%
|
barracks: 0.1%
|
||||||
refo: 20.1%
|
light: 0.1%
|
||||||
barra: 0.1%
|
heavy: 0.1%
|
||||||
barrh: 0.1%
|
repair: 0.1%
|
||||||
barro: 0.1%
|
radar: 0.1%
|
||||||
lighta: 0.1%
|
hightech: 0.1%
|
||||||
lighth: 0.1%
|
research: 0.1%
|
||||||
lighto: 0.1%
|
palace: 0.1%
|
||||||
heavya: 0.1%
|
guntower: 4%
|
||||||
heavyh: 0.1%
|
rockettower: 12%
|
||||||
heavyo: 0.1%
|
power: 10%
|
||||||
repaira: 0.1%
|
|
||||||
repairh: 0.1%
|
|
||||||
repairo: 0.1%
|
|
||||||
radara: 0.1%
|
|
||||||
radaro: 0.1%
|
|
||||||
radarh: 0.1%
|
|
||||||
hightecha: 0.1%
|
|
||||||
hightechh: 0.1%
|
|
||||||
hightecho: 0.1%
|
|
||||||
researcha: 0.1%
|
|
||||||
researchh: 0.1%
|
|
||||||
researcho: 0.1%
|
|
||||||
palacea: 0.1%
|
|
||||||
palaceh: 0.1%
|
|
||||||
palaceo: 0.1%
|
|
||||||
guntowera: 4%
|
|
||||||
guntowerh: 4%
|
|
||||||
guntowero: 4%
|
|
||||||
rockettowera: 12%
|
|
||||||
rockettowerh: 12%
|
|
||||||
rockettowero: 12%
|
|
||||||
pwra: 10%
|
|
||||||
pwrh: 10%
|
|
||||||
pwro: 10%
|
|
||||||
UnitsToBuild:
|
UnitsToBuild:
|
||||||
carryalla: 1%
|
carryall: 1%
|
||||||
carryallh: 1%
|
|
||||||
carryallo: 1%
|
|
||||||
rifle: 15%
|
rifle: 15%
|
||||||
bazooka: 13%
|
bazooka: 13%
|
||||||
medic: 2%
|
medic: 2%
|
||||||
@@ -485,4 +350,3 @@ Player:
|
|||||||
Attractiveness: -10
|
Attractiveness: -10
|
||||||
TargetMetric: Value
|
TargetMetric: Value
|
||||||
CheckRadius: 7c0
|
CheckRadius: 7c0
|
||||||
|
|
||||||
|
|||||||
@@ -1,46 +1,98 @@
|
|||||||
^CARRYALL:
|
carryall.scripted:
|
||||||
Inherits: ^Helicopter
|
Inherits: ^Helicopter
|
||||||
Valued:
|
Valued:
|
||||||
Cost: 1200
|
Cost: 1200
|
||||||
Tooltip:
|
Tooltip:
|
||||||
Name: Carryall
|
Name: Carryall
|
||||||
Description: Large winged, planet-bound ship\n Automatically lifts harvesters.
|
Description: Large winged, planet-bound ship\n Automatically lifts harvesters.
|
||||||
Buildable:
|
|
||||||
Queue: Aircraft
|
|
||||||
BuildPaletteOrder: 120
|
|
||||||
Health:
|
Health:
|
||||||
HP: 250
|
HP: 250
|
||||||
Armor:
|
Armor:
|
||||||
Type: Light
|
Type: Light
|
||||||
Helicopter:
|
Helicopter:
|
||||||
CruiseAltitude: 2100
|
CruiseAltitude: 2048
|
||||||
InitialFacing: 0
|
InitialFacing: 0
|
||||||
ROT: 4
|
ROT: 4
|
||||||
Speed: 160
|
Speed: 160
|
||||||
LandableTerrainTypes: Sand, Rock, Transition, Spice, Dune
|
LandableTerrainTypes: Sand, Rock, Transition, Spice, Dune
|
||||||
RepairBuildings: repaira,repairo,repairh
|
RepairBuildings: repair
|
||||||
RearmBuildings: starporta,starporto,starporth
|
RearmBuildings:
|
||||||
Repulsable: False
|
Repulsable: False
|
||||||
LandAltitude: 100
|
LandAltitude: 512
|
||||||
LandWhenIdle: False
|
LandWhenIdle: False
|
||||||
|
RenderUnit:
|
||||||
|
Image: carryall
|
||||||
WithShadow:
|
WithShadow:
|
||||||
LeavesHusk:
|
LeavesHusk:
|
||||||
HuskActor: CARRYALL.Husk
|
HuskActor: carryall.husk
|
||||||
-Selectable:
|
-Selectable:
|
||||||
AutoCarryall:
|
|
||||||
|
|
||||||
FRIGATE:
|
carryall:
|
||||||
|
Inherits: carryall.scripted
|
||||||
|
AutoCarryall:
|
||||||
|
Buildable:
|
||||||
|
Queue: Aircraft
|
||||||
|
BuildPaletteOrder: 120
|
||||||
|
Helicopter:
|
||||||
|
CruiseAltitude: 2100
|
||||||
|
LandAltitude: 100
|
||||||
|
|
||||||
|
carryall.infantry:
|
||||||
|
Inherits: ^Plane
|
||||||
|
ParaDrop:
|
||||||
|
DropRange: 5c0
|
||||||
|
ChuteSound:
|
||||||
|
Health:
|
||||||
|
HP: 200
|
||||||
|
Armor:
|
||||||
|
Type: Light
|
||||||
|
RevealsShroud:
|
||||||
|
Range: 12c0
|
||||||
|
Plane:
|
||||||
|
ROT: 4
|
||||||
|
Speed: 280
|
||||||
|
RepairBuildings: repair
|
||||||
|
RearmBuildings:
|
||||||
|
Repulsable: False
|
||||||
|
RenderUnit:
|
||||||
|
Image: carryall
|
||||||
|
WithShadow:
|
||||||
|
Cargo:
|
||||||
|
MaxWeight: 5
|
||||||
|
Types: Infantry
|
||||||
|
-Selectable:
|
||||||
|
-GainsExperience:
|
||||||
|
Tooltip:
|
||||||
|
Name: Carryall
|
||||||
|
LeavesHusk:
|
||||||
|
HuskActor: carryall.infantry.husk
|
||||||
|
RejectsOrders:
|
||||||
|
|
||||||
|
carryall.husk:
|
||||||
|
Inherits: ^AircraftHusk
|
||||||
|
Tooltip:
|
||||||
|
Name: Carryall
|
||||||
|
Helicopter:
|
||||||
|
ROT: 4
|
||||||
|
Speed: 210
|
||||||
|
RepairBuildings: repair
|
||||||
|
RearmBuildings:
|
||||||
|
RenderUnit:
|
||||||
|
Image: carryall
|
||||||
|
WithShadow:
|
||||||
|
|
||||||
|
frigate:
|
||||||
|
Inherits: ^Plane
|
||||||
ParaDrop:
|
ParaDrop:
|
||||||
DropRange: 1c0
|
DropRange: 1c0
|
||||||
Inherits: ^Plane
|
|
||||||
Tooltip:
|
Tooltip:
|
||||||
Name: Frigate
|
Name: Frigate
|
||||||
Description: Supply spacecraft
|
Description: Supply spacecraft
|
||||||
Plane:
|
Plane:
|
||||||
ROT: 5
|
ROT: 5
|
||||||
Speed: 350
|
Speed: 350
|
||||||
RepairBuildings: repaira,repairo,repairh
|
RepairBuildings: repair
|
||||||
RearmBuildings: starporta,starporto,starporth
|
RearmBuildings:
|
||||||
Repulsable: False
|
Repulsable: False
|
||||||
Health:
|
Health:
|
||||||
HP: 500
|
HP: 500
|
||||||
@@ -48,8 +100,6 @@ FRIGATE:
|
|||||||
-AppearsOnRadar:
|
-AppearsOnRadar:
|
||||||
Armor:
|
Armor:
|
||||||
Type: Heavy
|
Type: Heavy
|
||||||
RenderUnit:
|
|
||||||
Image: frigate
|
|
||||||
WithShadow:
|
WithShadow:
|
||||||
Cargo:
|
Cargo:
|
||||||
MaxWeight: 20
|
MaxWeight: 20
|
||||||
@@ -60,7 +110,7 @@ FRIGATE:
|
|||||||
FlyAwayOnIdle:
|
FlyAwayOnIdle:
|
||||||
RejectsOrders:
|
RejectsOrders:
|
||||||
|
|
||||||
ORNI:
|
orni:
|
||||||
Inherits: ^Helicopter
|
Inherits: ^Helicopter
|
||||||
Valued:
|
Valued:
|
||||||
Cost: 1000
|
Cost: 1000
|
||||||
@@ -83,16 +133,16 @@ ORNI:
|
|||||||
InitialFacing: 20
|
InitialFacing: 20
|
||||||
ROT: 6
|
ROT: 6
|
||||||
Speed: 280
|
Speed: 280
|
||||||
RepairBuildings: repaira,repairo,repairh
|
RepairBuildings: repair
|
||||||
RearmBuildings: starporta,starporto,starporth
|
RearmBuildings:
|
||||||
RenderUnit:
|
RenderUnit:
|
||||||
WithShadow:
|
WithShadow:
|
||||||
Selectable:
|
Selectable:
|
||||||
Bounds: 38,32,0,0
|
Bounds: 38,32,0,0
|
||||||
LeavesHusk:
|
LeavesHusk:
|
||||||
HuskActor: ORNI.Husk
|
HuskActor: orni.husk
|
||||||
|
|
||||||
ORNI.bomber:
|
orni.bomber:
|
||||||
AttackBomber:
|
AttackBomber:
|
||||||
Armament:
|
Armament:
|
||||||
Weapon: Napalm
|
Weapon: Napalm
|
||||||
@@ -104,8 +154,8 @@ ORNI.bomber:
|
|||||||
Plane:
|
Plane:
|
||||||
ROT: 5
|
ROT: 5
|
||||||
Speed: 350
|
Speed: 350
|
||||||
RepairBuildings: repaira,repairo,repairh
|
RepairBuildings: repair
|
||||||
RearmBuildings: starporta,starporto,starporth
|
RearmBuildings:
|
||||||
Repulsable: False
|
Repulsable: False
|
||||||
LimitedAmmo:
|
LimitedAmmo:
|
||||||
Ammo: 5
|
Ammo: 5
|
||||||
@@ -117,111 +167,44 @@ ORNI.bomber:
|
|||||||
Tooltip:
|
Tooltip:
|
||||||
Name: Ornithopter
|
Name: Ornithopter
|
||||||
LeavesHusk:
|
LeavesHusk:
|
||||||
HuskActor: ORNI.bomber.Husk
|
HuskActor: orni.bomber.husk
|
||||||
RejectsOrders:
|
RejectsOrders:
|
||||||
|
|
||||||
CARRYALL.infantry:
|
orni.husk:
|
||||||
ParaDrop:
|
|
||||||
DropRange: 5c0
|
|
||||||
ChuteSound:
|
|
||||||
Inherits: ^Plane
|
|
||||||
Health:
|
|
||||||
HP: 200
|
|
||||||
Armor:
|
|
||||||
Type: Light
|
|
||||||
RevealsShroud:
|
|
||||||
Range: 12c0
|
|
||||||
Plane:
|
|
||||||
ROT: 4
|
|
||||||
Speed: 280
|
|
||||||
RepairBuildings: repaira,repairo,repairh
|
|
||||||
RearmBuildings: starporta,starporto,starporth
|
|
||||||
Repulsable: False
|
|
||||||
RenderUnit:
|
|
||||||
Image: carryall
|
|
||||||
WithShadow:
|
|
||||||
Cargo:
|
|
||||||
MaxWeight: 5
|
|
||||||
Types: Infantry
|
|
||||||
-Selectable:
|
|
||||||
-GainsExperience:
|
|
||||||
Tooltip:
|
|
||||||
Name: Carryall
|
|
||||||
LeavesHusk:
|
|
||||||
HuskActor: CARRYALL.infantry.Husk
|
|
||||||
RejectsOrders:
|
|
||||||
|
|
||||||
BADR:
|
|
||||||
Inherits: CARRYALL.infantry
|
|
||||||
ParaDrop:
|
|
||||||
DropRange: 4c0
|
|
||||||
Tooltip:
|
|
||||||
Name: Crate Carryall
|
|
||||||
LeavesHusk:
|
|
||||||
HuskActor: BADR.Husk
|
|
||||||
|
|
||||||
CARRYALL.Husk:
|
|
||||||
Inherits: ^AircraftHusk
|
|
||||||
Tooltip:
|
|
||||||
Name: Carryall
|
|
||||||
Helicopter:
|
|
||||||
ROT: 4
|
|
||||||
Speed: 210
|
|
||||||
RepairBuildings: repaira,repairo,repairh
|
|
||||||
RearmBuildings: starporta,starporto,starporth
|
|
||||||
RenderUnit:
|
|
||||||
Image: carryall
|
|
||||||
WithShadow:
|
|
||||||
|
|
||||||
ORNI.Husk:
|
|
||||||
Inherits: ^AircraftHusk
|
Inherits: ^AircraftHusk
|
||||||
Tooltip:
|
Tooltip:
|
||||||
Name: Ornithopter
|
Name: Ornithopter
|
||||||
Helicopter:
|
Helicopter:
|
||||||
ROT: 6
|
ROT: 6
|
||||||
Speed: 280
|
Speed: 280
|
||||||
RepairBuildings: repaira,repairo,repairh
|
RepairBuildings: repair
|
||||||
RearmBuildings: starporta,starporto,starporth
|
RearmBuildings:
|
||||||
RenderUnit:
|
RenderUnit:
|
||||||
Image: orni
|
Image: orni
|
||||||
WithShadow:
|
WithShadow:
|
||||||
|
|
||||||
ORNI.bomber.Husk:
|
orni.bomber.husk:
|
||||||
Inherits: ^AircraftHusk
|
Inherits: ^AircraftHusk
|
||||||
Tooltip:
|
Tooltip:
|
||||||
Name: Ornithopter
|
Name: Ornithopter
|
||||||
Plane:
|
Plane:
|
||||||
ROT: 5
|
ROT: 5
|
||||||
Speed: 350
|
Speed: 350
|
||||||
RepairBuildings: repaira,repairo,repairh
|
RepairBuildings: repair
|
||||||
RearmBuildings: starporta,starporto,starporth
|
RearmBuildings:
|
||||||
RenderUnit:
|
RenderUnit:
|
||||||
Image: orni
|
Image: orni
|
||||||
WithShadow:
|
WithShadow:
|
||||||
|
|
||||||
CARRYALL.infantry.Husk:
|
carryall.infantry.husk:
|
||||||
Inherits: ^AircraftHusk
|
Inherits: ^AircraftHusk
|
||||||
Tooltip:
|
Tooltip:
|
||||||
Name: Carryall
|
Name: Carryall
|
||||||
Plane:
|
Plane:
|
||||||
ROT: 4
|
ROT: 4
|
||||||
Speed: 280
|
Speed: 280
|
||||||
RepairBuildings: repaira,repairo,repairh
|
RepairBuildings: repair
|
||||||
RearmBuildings: starporta,starporto,starporth
|
RearmBuildings:
|
||||||
RenderUnit:
|
RenderUnit:
|
||||||
Image: carryall
|
Image: carryall
|
||||||
WithShadow:
|
WithShadow:
|
||||||
|
|
||||||
BADR.Husk:
|
|
||||||
Inherits: ^AircraftHusk
|
|
||||||
Tooltip:
|
|
||||||
Name: Crate Carryall
|
|
||||||
Plane:
|
|
||||||
ROT: 4
|
|
||||||
Speed: 280
|
|
||||||
RepairBuildings: repaira,repairo,repairh
|
|
||||||
RearmBuildings: starporta,starporto,starporth
|
|
||||||
RenderUnit:
|
|
||||||
Image: carryall
|
|
||||||
WithShadow:
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
SPICEBLOOM:
|
spicebloom:
|
||||||
RenderBuilding:
|
RenderBuilding:
|
||||||
Building:
|
Building:
|
||||||
Footprint: x
|
Footprint: x
|
||||||
@@ -19,7 +19,7 @@ SPICEBLOOM:
|
|||||||
BodyOrientation:
|
BodyOrientation:
|
||||||
WithMakeAnimation:
|
WithMakeAnimation:
|
||||||
|
|
||||||
SANDWORM:
|
sandworm:
|
||||||
Tooltip:
|
Tooltip:
|
||||||
Name: Sandworm
|
Name: Sandworm
|
||||||
Description: Attracted by vibrations in the sand.\nWill eat units whole and has a large appetite.
|
Description: Attracted by vibrations in the sand.\nWill eat units whole and has a large appetite.
|
||||||
@@ -54,3 +54,24 @@ SANDWORM:
|
|||||||
AnnounceOnSeen:
|
AnnounceOnSeen:
|
||||||
Notification: WormSign
|
Notification: WormSign
|
||||||
PingRadar: True
|
PingRadar: True
|
||||||
|
|
||||||
|
sietch:
|
||||||
|
Inherits: ^Building
|
||||||
|
Tooltip:
|
||||||
|
Name: Fremen Sietch
|
||||||
|
Building:
|
||||||
|
Footprint: xx xx
|
||||||
|
Dimensions: 2,2
|
||||||
|
TerrainTypes: Cliff
|
||||||
|
Health:
|
||||||
|
HP: 400
|
||||||
|
Armor:
|
||||||
|
Type: Concrete
|
||||||
|
RevealsShroud:
|
||||||
|
Range: 10c0
|
||||||
|
-GivesBuildableArea:
|
||||||
|
-Sellable:
|
||||||
|
-ExternalCapturable:
|
||||||
|
-ExternalCapturableBar:
|
||||||
|
Power:
|
||||||
|
Amount: 0
|
||||||
@@ -1,282 +0,0 @@
|
|||||||
CONYARDA:
|
|
||||||
Inherits: ^CONYARD
|
|
||||||
|
|
||||||
PWRA:
|
|
||||||
Inherits: ^POWER
|
|
||||||
Buildable:
|
|
||||||
Prerequisites: ~conyarda
|
|
||||||
|
|
||||||
WALLA:
|
|
||||||
Inherits: ^WALL
|
|
||||||
Buildable:
|
|
||||||
Prerequisites: ~conyarda, barracks
|
|
||||||
|
|
||||||
GUNTOWERA:
|
|
||||||
Inherits: ^GUNTOWER
|
|
||||||
Buildable:
|
|
||||||
Prerequisites: ~conyarda, barracks
|
|
||||||
|
|
||||||
ROCKETTOWERA:
|
|
||||||
Inherits: ^ROCKETTOWER
|
|
||||||
Buildable:
|
|
||||||
Prerequisites: ~conyarda, radar
|
|
||||||
|
|
||||||
REFA:
|
|
||||||
Inherits: ^REFINERY
|
|
||||||
Buildable:
|
|
||||||
Prerequisites: ~conyarda, power
|
|
||||||
|
|
||||||
BARRA:
|
|
||||||
Inherits: ^BARRACKS
|
|
||||||
Buildable:
|
|
||||||
Prerequisites: ~conyarda, power
|
|
||||||
ProvidesCustomPrerequisite@MEDICS:
|
|
||||||
Prerequisite: medics
|
|
||||||
ProvidesCustomPrerequisite@BARRACKS:
|
|
||||||
Prerequisite: barracks
|
|
||||||
|
|
||||||
REPAIRA:
|
|
||||||
Inherits: ^REPAIR
|
|
||||||
Buildable:
|
|
||||||
Prerequisites: ~conyarda, heavy
|
|
||||||
|
|
||||||
RESEARCHA:
|
|
||||||
Inherits: ^RESEARCH
|
|
||||||
Buildable:
|
|
||||||
Prerequisites: ~conyarda, hightech
|
|
||||||
|
|
||||||
HIGHTECHA:
|
|
||||||
Inherits: ^HIGHTECH
|
|
||||||
Buildable:
|
|
||||||
Prerequisites: ~conyarda, radar
|
|
||||||
|
|
||||||
PALACEA:
|
|
||||||
Inherits: ^PALACE
|
|
||||||
Buildable:
|
|
||||||
Prerequisites: ~conyarda, research
|
|
||||||
AirstrikePower:
|
|
||||||
Icon: ornistrike
|
|
||||||
Prerequisites: ~techlevel.superweapons
|
|
||||||
Description: Air Strike
|
|
||||||
SquadSize: 3
|
|
||||||
ChargeTime: 180
|
|
||||||
LongDesc: Ornithopter drops a load of parachuted\nbombs on your target
|
|
||||||
UnitType: orni.bomber
|
|
||||||
SelectTargetSound:
|
|
||||||
DisplayBeacon: True
|
|
||||||
CameraActor: camera
|
|
||||||
CanPowerDown:
|
|
||||||
DisabledOverlay:
|
|
||||||
RequiresPower:
|
|
||||||
SupportPowerChargeBar:
|
|
||||||
|
|
||||||
SILOA:
|
|
||||||
Inherits: ^SILO
|
|
||||||
Buildable:
|
|
||||||
Prerequisites: ~conyarda, refinery
|
|
||||||
|
|
||||||
LIGHTA:
|
|
||||||
Inherits: ^LIGHT
|
|
||||||
Buildable:
|
|
||||||
Prerequisites: ~conyarda, refinery
|
|
||||||
ProvidesCustomPrerequisite@TRIKES:
|
|
||||||
Prerequisite: trikes
|
|
||||||
ProvidesCustomPrerequisite@LIGHT:
|
|
||||||
Prerequisite: light
|
|
||||||
|
|
||||||
HEAVYA:
|
|
||||||
Inherits: ^HEAVY
|
|
||||||
Buildable:
|
|
||||||
Prerequisites: ~conyarda, refinery
|
|
||||||
|
|
||||||
RADARA:
|
|
||||||
Inherits: ^RADAR
|
|
||||||
Buildable:
|
|
||||||
Prerequisites: ~conyarda, barracks
|
|
||||||
|
|
||||||
STARPORTA:
|
|
||||||
Inherits: ^STARPORT
|
|
||||||
Buildable:
|
|
||||||
Prerequisites: ~conyarda, radar
|
|
||||||
|
|
||||||
MCVA:
|
|
||||||
Inherits: ^MCV
|
|
||||||
Buildable:
|
|
||||||
Prerequisites: ~heavya, repair
|
|
||||||
Transforms:
|
|
||||||
Facing: 16
|
|
||||||
IntoActor: conyarda
|
|
||||||
Offset: -1,-1
|
|
||||||
NoTransformSounds: AI_DPLOY.AUD
|
|
||||||
RenderUnit:
|
|
||||||
Image: DMCV
|
|
||||||
|
|
||||||
MCVA.starport:
|
|
||||||
Inherits: MCVA
|
|
||||||
Buildable:
|
|
||||||
Prerequisites: ~starporta, repair
|
|
||||||
Queue: Starport
|
|
||||||
Valued:
|
|
||||||
Cost: 2500
|
|
||||||
|
|
||||||
CARRYALLA:
|
|
||||||
Inherits: ^CARRYALL
|
|
||||||
RenderUnit:
|
|
||||||
Image: CARRYALL
|
|
||||||
Buildable:
|
|
||||||
Prerequisites: refinery, ~hightecha
|
|
||||||
|
|
||||||
CARRYALLA.starport:
|
|
||||||
Inherits: CARRYALLA
|
|
||||||
Valued:
|
|
||||||
Cost: 1500
|
|
||||||
Buildable:
|
|
||||||
Prerequisites: ~starporta
|
|
||||||
Queue: Starport
|
|
||||||
|
|
||||||
COMBATA:
|
|
||||||
Inherits: ^COMBAT
|
|
||||||
Buildable:
|
|
||||||
Prerequisites: ~heavya
|
|
||||||
RevealsShroud:
|
|
||||||
Range: 8c0
|
|
||||||
Turreted:
|
|
||||||
ROT: 6
|
|
||||||
Armament:
|
|
||||||
Weapon: 90mma
|
|
||||||
Recoil: 128
|
|
||||||
RecoilRecovery: 32
|
|
||||||
LocalOffset: 256,0,0
|
|
||||||
AttackTurreted:
|
|
||||||
RenderUnit:
|
|
||||||
Image: COMBATA
|
|
||||||
WithTurret:
|
|
||||||
LeavesHusk:
|
|
||||||
HuskActor: Combata.Husk
|
|
||||||
|
|
||||||
COMBATA.Husk:
|
|
||||||
Inherits: ^COMBAT.Husk
|
|
||||||
RenderUnit:
|
|
||||||
Image: combata.destroyed
|
|
||||||
TransformOnCapture:
|
|
||||||
IntoActor: combata
|
|
||||||
|
|
||||||
COMBATA.starport:
|
|
||||||
Inherits: COMBATA
|
|
||||||
Buildable:
|
|
||||||
Prerequisites: ~starporta
|
|
||||||
Queue: Starport
|
|
||||||
Valued:
|
|
||||||
Cost: 875
|
|
||||||
|
|
||||||
SONICTANK:
|
|
||||||
Inherits: ^Vehicle
|
|
||||||
Buildable:
|
|
||||||
Queue: Armor
|
|
||||||
BuildPaletteOrder: 100
|
|
||||||
Prerequisites: ~heavya, research, ~techlevel.high
|
|
||||||
Valued:
|
|
||||||
Cost: 1250
|
|
||||||
Tooltip:
|
|
||||||
Name: Sonic Tank
|
|
||||||
Description: Fires sonic shocks\n Strong vs Infantry, Vehicles\n Weak vs Artillery, Aircraft
|
|
||||||
Selectable:
|
|
||||||
Bounds: 30,30
|
|
||||||
Health:
|
|
||||||
HP: 130
|
|
||||||
Armor:
|
|
||||||
Type: Light
|
|
||||||
Mobile:
|
|
||||||
ROT: 3
|
|
||||||
Speed: 74
|
|
||||||
RevealsShroud:
|
|
||||||
Range: 6c0
|
|
||||||
RenderUnit:
|
|
||||||
Image: SONICTANK
|
|
||||||
Armament:
|
|
||||||
Weapon: Sound
|
|
||||||
LocalOffset: 640,0,427
|
|
||||||
AttackFrontal:
|
|
||||||
AutoTarget:
|
|
||||||
Explodes:
|
|
||||||
Weapon: UnitExplodeSmall
|
|
||||||
EmptyWeapon: UnitExplodeSmall
|
|
||||||
LeavesHusk:
|
|
||||||
HuskActor: Sonictank.Husk
|
|
||||||
AttractsWorms:
|
|
||||||
Intensity: 600
|
|
||||||
|
|
||||||
SONICTANK.Husk:
|
|
||||||
Inherits: ^Husk
|
|
||||||
RenderUnit:
|
|
||||||
Image: sonictank.destroyed
|
|
||||||
TransformOnCapture:
|
|
||||||
IntoActor: sonictank
|
|
||||||
|
|
||||||
FREMEN:
|
|
||||||
Inherits: ^Infantry
|
|
||||||
Valued:
|
|
||||||
Cost: 800
|
|
||||||
Tooltip:
|
|
||||||
Name: Fremen
|
|
||||||
Description: Elite sniper infantry unit\n Strong vs Infantry\n Weak vs Vehicles\n Special Ability: Invisibility
|
|
||||||
Buildable:
|
|
||||||
Queue: Infantry
|
|
||||||
BuildPaletteOrder: 85
|
|
||||||
Prerequisites: ~barra, palace, ~techlevel.high
|
|
||||||
Selectable:
|
|
||||||
Bounds: 12,17,0,0
|
|
||||||
Voice: FremenVoice
|
|
||||||
Mobile:
|
|
||||||
Speed: 53
|
|
||||||
Health:
|
|
||||||
HP: 70
|
|
||||||
Passenger:
|
|
||||||
RevealsShroud:
|
|
||||||
Range: 7c0
|
|
||||||
AutoTarget:
|
|
||||||
ScanRadius: 7
|
|
||||||
Armament@PRIMARY:
|
|
||||||
Weapon: Sniper
|
|
||||||
Armament@SECONDARY:
|
|
||||||
Weapon: Slung
|
|
||||||
AttackFrontal:
|
|
||||||
TakeCover:
|
|
||||||
Cloak:
|
|
||||||
InitialDelay: 250
|
|
||||||
CloakDelay: 250
|
|
||||||
CloakSound: STEALTH1.WAV
|
|
||||||
UncloakSound: STEALTH2.WAV
|
|
||||||
-MustBeDestroyed:
|
|
||||||
|
|
||||||
GRENADIER:
|
|
||||||
Inherits: ^Infantry
|
|
||||||
Buildable:
|
|
||||||
Queue: Infantry
|
|
||||||
BuildPaletteOrder: 10
|
|
||||||
Prerequisites: ~barra, ~techlevel.medium
|
|
||||||
Valued:
|
|
||||||
Cost: 160
|
|
||||||
Tooltip:
|
|
||||||
Name: Grenadier
|
|
||||||
Description: Infantry armed with grenades. \n Strong vs Buildings, Infantry\n Weak vs Vehicles
|
|
||||||
Selectable:
|
|
||||||
Bounds: 12,17,0,0
|
|
||||||
Health:
|
|
||||||
HP: 50
|
|
||||||
Mobile:
|
|
||||||
Speed: 53
|
|
||||||
Armament:
|
|
||||||
Weapon: Grenade
|
|
||||||
LocalOffset: 0,0,555
|
|
||||||
FireDelay: 15
|
|
||||||
AttackFrontal:
|
|
||||||
TakeCover:
|
|
||||||
RenderInfantry:
|
|
||||||
IdleAnimations: idle
|
|
||||||
Explodes:
|
|
||||||
Weapon: UnitExplodeSmall
|
|
||||||
Chance: 100
|
|
||||||
AttractsWorms:
|
|
||||||
Intensity: 180
|
|
||||||
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
CONYARDC:
|
|
||||||
Inherits: ^CONYARD
|
|
||||||
|
|
||||||
STARPORTC:
|
|
||||||
Inherits: ^STARPORT
|
|
||||||
-Buildable:
|
|
||||||
|
|
||||||
PALACEC:
|
|
||||||
Inherits: ^PALACE
|
|
||||||
-Buildable:
|
|
||||||
Building:
|
|
||||||
Footprint: =x= xxx xxx
|
|
||||||
Dimensions: 3,3
|
|
||||||
RenderBuilding:
|
|
||||||
|
|
||||||
HEAVYC:
|
|
||||||
Inherits: ^HEAVY
|
|
||||||
-Buildable:
|
|
||||||
@@ -28,7 +28,7 @@
|
|||||||
Types: Vehicle
|
Types: Vehicle
|
||||||
GivesBounty:
|
GivesBounty:
|
||||||
Repairable:
|
Repairable:
|
||||||
RepairBuildings: repaira,repairo,repairh
|
RepairBuildings: repair
|
||||||
CombatDebugOverlay:
|
CombatDebugOverlay:
|
||||||
Guard:
|
Guard:
|
||||||
Voice: Guard
|
Voice: Guard
|
||||||
@@ -83,7 +83,7 @@
|
|||||||
Types: Tank
|
Types: Tank
|
||||||
GivesBounty:
|
GivesBounty:
|
||||||
Repairable:
|
Repairable:
|
||||||
RepairBuildings: repaira,repairo,repairh
|
RepairBuildings: repair
|
||||||
CombatDebugOverlay:
|
CombatDebugOverlay:
|
||||||
Guard:
|
Guard:
|
||||||
Voice: Guard
|
Voice: Guard
|
||||||
@@ -135,6 +135,7 @@
|
|||||||
ForceHealthPercentage: 25
|
ForceHealthPercentage: 25
|
||||||
DisabledOverlay:
|
DisabledOverlay:
|
||||||
ScriptTriggers:
|
ScriptTriggers:
|
||||||
|
RenderUnit:
|
||||||
|
|
||||||
^TowerHusk:
|
^TowerHusk:
|
||||||
Health:
|
Health:
|
||||||
@@ -271,6 +272,7 @@
|
|||||||
UpgradeManager:
|
UpgradeManager:
|
||||||
AnnounceOnSeen:
|
AnnounceOnSeen:
|
||||||
Notification: EnemyUnitsApproaching
|
Notification: EnemyUnitsApproaching
|
||||||
|
RenderUnit:
|
||||||
|
|
||||||
^Helicopter:
|
^Helicopter:
|
||||||
Inherits: ^Plane
|
Inherits: ^Plane
|
||||||
|
|||||||
@@ -1,248 +0,0 @@
|
|||||||
CONYARDH:
|
|
||||||
Inherits: ^CONYARD
|
|
||||||
|
|
||||||
PWRH:
|
|
||||||
Inherits: ^POWER
|
|
||||||
Buildable:
|
|
||||||
Prerequisites: ~conyardh
|
|
||||||
|
|
||||||
WALLH:
|
|
||||||
Inherits: ^WALL
|
|
||||||
Buildable:
|
|
||||||
Prerequisites: ~conyardh, barracks
|
|
||||||
|
|
||||||
GUNTOWERH:
|
|
||||||
Inherits: ^GUNTOWER
|
|
||||||
Buildable:
|
|
||||||
Prerequisites: ~conyardh, barracks
|
|
||||||
|
|
||||||
ROCKETTOWERH:
|
|
||||||
Inherits: ^ROCKETTOWER
|
|
||||||
Buildable:
|
|
||||||
Prerequisites: ~conyardh, radar
|
|
||||||
|
|
||||||
REFH:
|
|
||||||
Inherits: ^REFINERY
|
|
||||||
Buildable:
|
|
||||||
Prerequisites: ~conyardh, power
|
|
||||||
|
|
||||||
BARRH:
|
|
||||||
Inherits: ^BARRACKS
|
|
||||||
Buildable:
|
|
||||||
Prerequisites: ~conyardh, power
|
|
||||||
|
|
||||||
REPAIRH:
|
|
||||||
Inherits: ^REPAIR
|
|
||||||
Buildable:
|
|
||||||
Prerequisites: ~conyardh, heavy
|
|
||||||
|
|
||||||
RESEARCHH:
|
|
||||||
Inherits: ^RESEARCH
|
|
||||||
Buildable:
|
|
||||||
Prerequisites: ~conyardh, hightech
|
|
||||||
|
|
||||||
SILOH:
|
|
||||||
Inherits: ^SILO
|
|
||||||
Buildable:
|
|
||||||
Prerequisites: ~conyardh, refinery
|
|
||||||
|
|
||||||
LIGHTH:
|
|
||||||
Inherits: ^LIGHT
|
|
||||||
Buildable:
|
|
||||||
Prerequisites: ~conyardh, refinery
|
|
||||||
ProvidesCustomPrerequisite@TRIKES:
|
|
||||||
Prerequisite: trikes
|
|
||||||
ProvidesCustomPrerequisite@LIGHT:
|
|
||||||
Prerequisite: light
|
|
||||||
|
|
||||||
HEAVYH:
|
|
||||||
Inherits: ^HEAVY
|
|
||||||
Buildable:
|
|
||||||
Prerequisites: ~conyardh, refinery
|
|
||||||
|
|
||||||
RADARH:
|
|
||||||
Inherits: ^RADAR
|
|
||||||
Buildable:
|
|
||||||
Prerequisites: ~conyardh, barracks
|
|
||||||
|
|
||||||
STARPORTH:
|
|
||||||
Inherits: ^STARPORT
|
|
||||||
Buildable:
|
|
||||||
Prerequisites: ~conyardh, radar
|
|
||||||
|
|
||||||
HIGHTECHH:
|
|
||||||
Inherits: ^HIGHTECH
|
|
||||||
Buildable:
|
|
||||||
Prerequisites: ~conyardh, radar
|
|
||||||
|
|
||||||
PALACEH:
|
|
||||||
Inherits: ^PALACE
|
|
||||||
Buildable:
|
|
||||||
Prerequisites: ~conyardh, research
|
|
||||||
Tooltip:
|
|
||||||
Description: Provides elite infantry\n Special Ability: Death Hand Missile
|
|
||||||
NukePower:
|
|
||||||
Icon: deathhand
|
|
||||||
ChargeTime: 300
|
|
||||||
Description: Death Hand
|
|
||||||
Prerequisites: ~techlevel.superweapons
|
|
||||||
LongDesc: Launches a nuclear missile at a target location
|
|
||||||
BeginChargeSound: HI_PREP.AUD
|
|
||||||
EndChargeSound: HI_DHRDY.AUD
|
|
||||||
SelectTargetSound:
|
|
||||||
LaunchSound:
|
|
||||||
IncomingSound:
|
|
||||||
MissileWeapon: atomic
|
|
||||||
SpawnOffset: -512,1c171,0
|
|
||||||
DisplayBeacon: True
|
|
||||||
DisplayRadarPing: True
|
|
||||||
CameraActor: camera
|
|
||||||
CanPowerDown:
|
|
||||||
DisabledOverlay:
|
|
||||||
RequiresPower:
|
|
||||||
SupportPowerChargeBar:
|
|
||||||
|
|
||||||
MCVH:
|
|
||||||
Inherits: ^MCV
|
|
||||||
Buildable:
|
|
||||||
Prerequisites: ~heavyh, repair
|
|
||||||
Transforms:
|
|
||||||
Facing: 16
|
|
||||||
IntoActor: conyardh
|
|
||||||
Offset: -1,-1
|
|
||||||
NoTransformSounds: HI_DPLOY.AUD
|
|
||||||
RenderUnit:
|
|
||||||
Image: DMCV
|
|
||||||
|
|
||||||
MCVH.starport:
|
|
||||||
Inherits: MCVH
|
|
||||||
Buildable:
|
|
||||||
Prerequisites: ~starporth, repair
|
|
||||||
Queue: Starport
|
|
||||||
Valued:
|
|
||||||
Cost: 2500
|
|
||||||
|
|
||||||
CARRYALLH:
|
|
||||||
Inherits: ^CARRYALL
|
|
||||||
RenderUnit:
|
|
||||||
Image: CARRYALL
|
|
||||||
Buildable:
|
|
||||||
Prerequisites: refinery, ~hightechh
|
|
||||||
|
|
||||||
CARRYALLH.starport:
|
|
||||||
Inherits: CARRYALLH
|
|
||||||
Valued:
|
|
||||||
Cost: 1500
|
|
||||||
Buildable:
|
|
||||||
Prerequisites: ~starporth
|
|
||||||
Queue: Starport
|
|
||||||
|
|
||||||
COMBATH:
|
|
||||||
Inherits: ^COMBAT
|
|
||||||
Buildable:
|
|
||||||
Prerequisites: ~heavyh
|
|
||||||
Mobile:
|
|
||||||
Speed: 53
|
|
||||||
ROT: 4
|
|
||||||
Turreted:
|
|
||||||
ROT: 5
|
|
||||||
Health:
|
|
||||||
HP: 440
|
|
||||||
RenderUnit:
|
|
||||||
Image: COMBATH
|
|
||||||
WithTurret:
|
|
||||||
LeavesHusk:
|
|
||||||
HuskActor: Combath.Husk
|
|
||||||
|
|
||||||
COMBATH.Husk:
|
|
||||||
Inherits: ^COMBAT.Husk
|
|
||||||
RenderUnit:
|
|
||||||
Image: combath.destroyed
|
|
||||||
TransformOnCapture:
|
|
||||||
IntoActor: combath
|
|
||||||
|
|
||||||
COMBATH.starport:
|
|
||||||
Inherits: COMBATH
|
|
||||||
Buildable:
|
|
||||||
Prerequisites: ~starporth
|
|
||||||
Queue: Starport
|
|
||||||
Valued:
|
|
||||||
Cost: 875
|
|
||||||
|
|
||||||
DEVAST:
|
|
||||||
Inherits: ^Tank
|
|
||||||
Buildable:
|
|
||||||
Queue: Armor
|
|
||||||
BuildPaletteOrder: 100
|
|
||||||
Prerequisites: ~heavyh, research, ~techlevel.high
|
|
||||||
Valued:
|
|
||||||
Cost: 1200
|
|
||||||
Tooltip:
|
|
||||||
Name: Devastator
|
|
||||||
Description: Super Heavy Tank\n Strong vs Tanks\n Weak vs Artillery, Aircraft
|
|
||||||
Health:
|
|
||||||
HP: 650
|
|
||||||
Armor:
|
|
||||||
Type: Heavy
|
|
||||||
Mobile:
|
|
||||||
ROT: 3
|
|
||||||
Speed: 42
|
|
||||||
Crushes: crate, infantry
|
|
||||||
RevealsShroud:
|
|
||||||
Range: 7c0
|
|
||||||
RenderUnit:
|
|
||||||
Armament:
|
|
||||||
Weapon: DevBullet
|
|
||||||
LocalOffset: 256,0,32
|
|
||||||
MuzzleSequence: muzzle
|
|
||||||
AttackFrontal:
|
|
||||||
WithMuzzleFlash:
|
|
||||||
AutoTarget:
|
|
||||||
Explodes:
|
|
||||||
Weapon: UnitExplodeScale
|
|
||||||
EmptyWeapon: UnitExplodeScale
|
|
||||||
Selectable:
|
|
||||||
Bounds: 44,38,0,0
|
|
||||||
LeavesHusk:
|
|
||||||
HuskActor: Devast.Husk
|
|
||||||
AttractsWorms:
|
|
||||||
Intensity: 700
|
|
||||||
|
|
||||||
DEVAST.Husk:
|
|
||||||
Inherits: ^Husk
|
|
||||||
Health:
|
|
||||||
HP: 125
|
|
||||||
RenderUnit:
|
|
||||||
Image: devast.destroyed
|
|
||||||
TransformOnCapture:
|
|
||||||
IntoActor: devast
|
|
||||||
|
|
||||||
SARDAUKAR:
|
|
||||||
Inherits: ^Infantry
|
|
||||||
Buildable:
|
|
||||||
Queue: Infantry
|
|
||||||
BuildPaletteOrder: 80
|
|
||||||
Prerequisites: ~barrh, palace, ~techlevel.high
|
|
||||||
Valued:
|
|
||||||
Cost: 400
|
|
||||||
Tooltip:
|
|
||||||
Name: Sardaukar
|
|
||||||
Description: Elite asssault infantry\n Strong vs Infantry, Vehicles\n Weak vs Artillery
|
|
||||||
Selectable:
|
|
||||||
Bounds: 12,17,0,0
|
|
||||||
Voice: GenericVoice
|
|
||||||
Health:
|
|
||||||
HP: 100
|
|
||||||
Mobile:
|
|
||||||
Speed: 42
|
|
||||||
RevealsShroud:
|
|
||||||
Range: 6c0
|
|
||||||
TakeCover:
|
|
||||||
Armament@PRIMARY:
|
|
||||||
Weapon: Vulcan
|
|
||||||
Armament@SECONDARY:
|
|
||||||
Weapon: Slung
|
|
||||||
AttackFrontal:
|
|
||||||
AttractsWorms:
|
|
||||||
Intensity: 180
|
|
||||||
|
|
||||||
68
mods/d2k/rules/husks.yaml
Normal file
68
mods/d2k/rules/husks.yaml
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
mcv.husk:
|
||||||
|
Inherits: ^Husk
|
||||||
|
Health:
|
||||||
|
HP: 175
|
||||||
|
Tooltip:
|
||||||
|
Name: Destroyed Mobile Construction Vehicle
|
||||||
|
|
||||||
|
harvester.husk:
|
||||||
|
Inherits: ^Husk
|
||||||
|
Health:
|
||||||
|
HP: 150
|
||||||
|
Tooltip:
|
||||||
|
Name: Destroyed Spice Harvester
|
||||||
|
TransformOnCapture:
|
||||||
|
IntoActor: harvester
|
||||||
|
|
||||||
|
siegetank.husk:
|
||||||
|
Inherits: ^Husk
|
||||||
|
Tooltip:
|
||||||
|
ThrowsParticle@turret:
|
||||||
|
Anim: turret
|
||||||
|
TransformOnCapture:
|
||||||
|
IntoActor: siegetank
|
||||||
|
|
||||||
|
missiletank.husk:
|
||||||
|
Inherits: ^Husk
|
||||||
|
RenderUnit:
|
||||||
|
TransformOnCapture:
|
||||||
|
IntoActor: missiletank
|
||||||
|
|
||||||
|
sonictank.husk:
|
||||||
|
Inherits: ^Husk
|
||||||
|
TransformOnCapture:
|
||||||
|
IntoActor: sonictank
|
||||||
|
|
||||||
|
devast.husk:
|
||||||
|
Inherits: ^Husk
|
||||||
|
Health:
|
||||||
|
HP: 125
|
||||||
|
TransformOnCapture:
|
||||||
|
IntoActor: devast
|
||||||
|
|
||||||
|
deviatortank.husk:
|
||||||
|
Inherits: ^Husk
|
||||||
|
TransformOnCapture:
|
||||||
|
IntoActor: deviatortank
|
||||||
|
|
||||||
|
^combat.husk:
|
||||||
|
Inherits: ^Husk
|
||||||
|
Health:
|
||||||
|
HP: 100
|
||||||
|
ThrowsParticle@turret:
|
||||||
|
Anim: turret
|
||||||
|
|
||||||
|
combata.husk:
|
||||||
|
Inherits: ^combat.husk
|
||||||
|
TransformOnCapture:
|
||||||
|
IntoActor: combata
|
||||||
|
|
||||||
|
combath.husk:
|
||||||
|
Inherits: ^combat.husk
|
||||||
|
TransformOnCapture:
|
||||||
|
IntoActor: combath
|
||||||
|
|
||||||
|
combato.husk:
|
||||||
|
Inherits: ^combat.husk
|
||||||
|
TransformOnCapture:
|
||||||
|
IntoActor: combato
|
||||||
@@ -1,9 +1,8 @@
|
|||||||
RIFLE:
|
rifle:
|
||||||
Inherits: ^Infantry
|
Inherits: ^Infantry
|
||||||
Buildable:
|
Buildable:
|
||||||
Queue: Infantry
|
Queue: Infantry
|
||||||
BuildPaletteOrder: 10
|
BuildPaletteOrder: 10
|
||||||
Prerequisites: ~barracks
|
|
||||||
Valued:
|
Valued:
|
||||||
Cost: 100
|
Cost: 100
|
||||||
Tooltip:
|
Tooltip:
|
||||||
@@ -22,12 +21,12 @@ RIFLE:
|
|||||||
AttractsWorms:
|
AttractsWorms:
|
||||||
Intensity: 120
|
Intensity: 120
|
||||||
|
|
||||||
ENGINEER:
|
engineer:
|
||||||
Inherits: ^Infantry
|
Inherits: ^Infantry
|
||||||
Buildable:
|
Buildable:
|
||||||
Queue: Infantry
|
Queue: Infantry
|
||||||
BuildPaletteOrder: 50
|
BuildPaletteOrder: 50
|
||||||
Prerequisites: ~barracks, radar, ~techlevel.medium
|
Prerequisites: radar, ~techlevel.medium
|
||||||
Valued:
|
Valued:
|
||||||
Cost: 500
|
Cost: 500
|
||||||
Tooltip:
|
Tooltip:
|
||||||
@@ -51,12 +50,12 @@ ENGINEER:
|
|||||||
AttractsWorms:
|
AttractsWorms:
|
||||||
Intensity: 180
|
Intensity: 180
|
||||||
|
|
||||||
BAZOOKA:
|
bazooka:
|
||||||
Inherits: ^Infantry
|
Inherits: ^Infantry
|
||||||
Buildable:
|
Buildable:
|
||||||
Queue: Infantry
|
Queue: Infantry
|
||||||
BuildPaletteOrder: 20
|
BuildPaletteOrder: 20
|
||||||
Prerequisites: ~barracks, radar, ~techlevel.medium
|
Prerequisites: radar, ~techlevel.medium
|
||||||
Valued:
|
Valued:
|
||||||
Cost: 250
|
Cost: 250
|
||||||
Tooltip:
|
Tooltip:
|
||||||
@@ -76,12 +75,12 @@ BAZOOKA:
|
|||||||
AttractsWorms:
|
AttractsWorms:
|
||||||
Intensity: 180
|
Intensity: 180
|
||||||
|
|
||||||
MEDIC:
|
medic:
|
||||||
Inherits: ^Infantry
|
Inherits: ^Infantry
|
||||||
Buildable:
|
Buildable:
|
||||||
Queue: Infantry
|
Queue: Infantry
|
||||||
BuildPaletteOrder: 60
|
BuildPaletteOrder: 60
|
||||||
Prerequisites: ~medics, ~techlevel.high
|
Prerequisites: ~barracks.medics, ~techlevel.high
|
||||||
Valued:
|
Valued:
|
||||||
Cost: 500
|
Cost: 500
|
||||||
Tooltip:
|
Tooltip:
|
||||||
@@ -108,3 +107,124 @@ MEDIC:
|
|||||||
AttractsWorms:
|
AttractsWorms:
|
||||||
Intensity: 180
|
Intensity: 180
|
||||||
|
|
||||||
|
fremen:
|
||||||
|
Inherits: ^Infantry
|
||||||
|
Valued:
|
||||||
|
Cost: 800
|
||||||
|
Tooltip:
|
||||||
|
Name: Fremen
|
||||||
|
Description: Elite sniper infantry unit\n Strong vs Infantry\n Weak vs Vehicles\n Special Ability: Invisibility
|
||||||
|
Buildable:
|
||||||
|
Queue: Infantry
|
||||||
|
BuildPaletteOrder: 85
|
||||||
|
Prerequisites: ~barracks.atreides, palace, ~techlevel.high
|
||||||
|
Selectable:
|
||||||
|
Bounds: 12,17,0,0
|
||||||
|
Voice: FremenVoice
|
||||||
|
Mobile:
|
||||||
|
Speed: 53
|
||||||
|
Health:
|
||||||
|
HP: 70
|
||||||
|
Passenger:
|
||||||
|
RevealsShroud:
|
||||||
|
Range: 7c0
|
||||||
|
AutoTarget:
|
||||||
|
ScanRadius: 7
|
||||||
|
Armament@PRIMARY:
|
||||||
|
Weapon: Sniper
|
||||||
|
Armament@SECONDARY:
|
||||||
|
Weapon: Slung
|
||||||
|
AttackFrontal:
|
||||||
|
TakeCover:
|
||||||
|
Cloak:
|
||||||
|
InitialDelay: 250
|
||||||
|
CloakDelay: 250
|
||||||
|
CloakSound: STEALTH1.WAV
|
||||||
|
UncloakSound: STEALTH2.WAV
|
||||||
|
-MustBeDestroyed:
|
||||||
|
|
||||||
|
grenadier:
|
||||||
|
Inherits: ^Infantry
|
||||||
|
Buildable:
|
||||||
|
Queue: Infantry
|
||||||
|
BuildPaletteOrder: 10
|
||||||
|
Prerequisites: ~barracks.atreides, ~techlevel.medium
|
||||||
|
Valued:
|
||||||
|
Cost: 160
|
||||||
|
Tooltip:
|
||||||
|
Name: Grenadier
|
||||||
|
Description: Infantry armed with grenades. \n Strong vs Buildings, Infantry\n Weak vs Vehicles
|
||||||
|
Selectable:
|
||||||
|
Bounds: 12,17,0,0
|
||||||
|
Health:
|
||||||
|
HP: 50
|
||||||
|
Mobile:
|
||||||
|
Speed: 53
|
||||||
|
Armament:
|
||||||
|
Weapon: Grenade
|
||||||
|
LocalOffset: 0,0,555
|
||||||
|
FireDelay: 15
|
||||||
|
AttackFrontal:
|
||||||
|
TakeCover:
|
||||||
|
RenderInfantry:
|
||||||
|
IdleAnimations: idle
|
||||||
|
Explodes:
|
||||||
|
Weapon: UnitExplodeSmall
|
||||||
|
Chance: 100
|
||||||
|
AttractsWorms:
|
||||||
|
Intensity: 180
|
||||||
|
|
||||||
|
sardaukar:
|
||||||
|
Inherits: ^Infantry
|
||||||
|
Buildable:
|
||||||
|
Queue: Infantry
|
||||||
|
BuildPaletteOrder: 80
|
||||||
|
Prerequisites: ~barracks.harkonnen, palace, ~techlevel.high
|
||||||
|
Valued:
|
||||||
|
Cost: 400
|
||||||
|
Tooltip:
|
||||||
|
Name: Sardaukar
|
||||||
|
Description: Elite asssault infantry\n Strong vs Infantry, Vehicles\n Weak vs Artillery
|
||||||
|
Selectable:
|
||||||
|
Bounds: 12,17,0,0
|
||||||
|
Voice: GenericVoice
|
||||||
|
Health:
|
||||||
|
HP: 100
|
||||||
|
Mobile:
|
||||||
|
Speed: 42
|
||||||
|
RevealsShroud:
|
||||||
|
Range: 6c0
|
||||||
|
TakeCover:
|
||||||
|
Armament@PRIMARY:
|
||||||
|
Weapon: Vulcan
|
||||||
|
Armament@SECONDARY:
|
||||||
|
Weapon: Slung
|
||||||
|
AttackFrontal:
|
||||||
|
AttractsWorms:
|
||||||
|
Intensity: 180
|
||||||
|
|
||||||
|
saboteur:
|
||||||
|
Inherits: ^Infantry
|
||||||
|
Buildable:
|
||||||
|
Queue: Infantry
|
||||||
|
BuildPaletteOrder: 100
|
||||||
|
Prerequisites: ~barracks.ordos, palace, ~techlevel.high
|
||||||
|
Valued:
|
||||||
|
Cost: 800
|
||||||
|
Tooltip:
|
||||||
|
Name: Saboteur
|
||||||
|
Description: Sneaky infantry, armed with explosives\n Strong vs Buildings\n Weak vs Everything\n Special Ability: destroy buildings
|
||||||
|
Selectable:
|
||||||
|
Voice: SaboteurVoice
|
||||||
|
Bounds: 12,17,0,0
|
||||||
|
Health:
|
||||||
|
HP: 100
|
||||||
|
Mobile:
|
||||||
|
Speed: 64
|
||||||
|
RevealsShroud:
|
||||||
|
Range: 7c0
|
||||||
|
C4Demolition:
|
||||||
|
C4Delay: 45
|
||||||
|
-AutoTarget:
|
||||||
|
AttractsWorms:
|
||||||
|
Intensity: 120
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
CRATE:
|
crate:
|
||||||
Tooltip:
|
Tooltip:
|
||||||
Name: Crate
|
Name: Crate
|
||||||
Crate:
|
Crate:
|
||||||
@@ -98,21 +98,10 @@ CRATE:
|
|||||||
Units: deviatortank
|
Units: deviatortank
|
||||||
ValidRaces: ordos
|
ValidRaces: ordos
|
||||||
Prerequisites: techlevel.high, Research
|
Prerequisites: techlevel.high, Research
|
||||||
GiveMcvCrateAction@Atreides:
|
GiveMcvCrateAction:
|
||||||
SelectionShares: 0
|
SelectionShares: 0
|
||||||
NoBaseSelectionShares: 9001
|
NoBaseSelectionShares: 9001
|
||||||
Units: mcva
|
Units: mcv
|
||||||
ValidRaces: atreides
|
|
||||||
GiveMcvCrateAction@Harkonnen:
|
|
||||||
SelectionShares: 0
|
|
||||||
NoBaseSelectionShares: 9001
|
|
||||||
Units: mcvh
|
|
||||||
ValidRaces: harkonnen
|
|
||||||
GiveMcvCrateAction@Ordos:
|
|
||||||
SelectionShares: 0
|
|
||||||
NoBaseSelectionShares: 9001
|
|
||||||
Units: mcvo
|
|
||||||
ValidRaces: ordos
|
|
||||||
GrantUpgradeCrateAction@cloak:
|
GrantUpgradeCrateAction@cloak:
|
||||||
SelectionShares: 5
|
SelectionShares: 5
|
||||||
Effect: cloak
|
Effect: cloak
|
||||||
@@ -141,14 +130,14 @@ waypoint:
|
|||||||
BodyOrientation:
|
BodyOrientation:
|
||||||
|
|
||||||
^carryall.colorpicker:
|
^carryall.colorpicker:
|
||||||
Inherits: ^CARRYALL
|
Inherits: carryall
|
||||||
RenderUnit:
|
RenderUnit:
|
||||||
Image: carryall
|
Image: carryall
|
||||||
Palette: colorpicker
|
Palette: colorpicker
|
||||||
Helicopter:
|
Helicopter:
|
||||||
InitialFacing: 104
|
InitialFacing: 104
|
||||||
|
|
||||||
CAMERA:
|
camera:
|
||||||
Immobile:
|
Immobile:
|
||||||
OccupiesSpace: false
|
OccupiesSpace: false
|
||||||
Health:
|
Health:
|
||||||
|
|||||||
@@ -1,290 +0,0 @@
|
|||||||
CONYARDO:
|
|
||||||
Inherits: ^CONYARD
|
|
||||||
|
|
||||||
PWRO:
|
|
||||||
Inherits: ^POWER
|
|
||||||
Buildable:
|
|
||||||
Prerequisites: ~conyardo
|
|
||||||
|
|
||||||
WALLO:
|
|
||||||
Inherits: ^WALL
|
|
||||||
Buildable:
|
|
||||||
Prerequisites: ~conyardo, barracks
|
|
||||||
|
|
||||||
GUNTOWERO:
|
|
||||||
Inherits: ^GUNTOWER
|
|
||||||
Buildable:
|
|
||||||
Prerequisites: ~conyardo, barracks
|
|
||||||
|
|
||||||
ROCKETTOWERO:
|
|
||||||
Inherits: ^ROCKETTOWER
|
|
||||||
Buildable:
|
|
||||||
Prerequisites: ~conyardo, radar
|
|
||||||
|
|
||||||
REFO:
|
|
||||||
Inherits: ^REFINERY
|
|
||||||
Buildable:
|
|
||||||
Prerequisites: ~conyardo, power
|
|
||||||
|
|
||||||
BARRO:
|
|
||||||
Inherits: ^BARRACKS
|
|
||||||
Buildable:
|
|
||||||
Prerequisites: ~conyardo, power
|
|
||||||
ProvidesCustomPrerequisite@MEDICS:
|
|
||||||
Prerequisite: medics
|
|
||||||
ProvidesCustomPrerequisite@BARRACKS:
|
|
||||||
Prerequisite: barracks
|
|
||||||
|
|
||||||
REPAIRO:
|
|
||||||
Inherits: ^REPAIR
|
|
||||||
Buildable:
|
|
||||||
Prerequisites: ~conyardo, heavy
|
|
||||||
|
|
||||||
RESEARCHO:
|
|
||||||
Inherits: ^RESEARCH
|
|
||||||
Buildable:
|
|
||||||
Prerequisites: ~conyardo, hightech
|
|
||||||
|
|
||||||
SILOO:
|
|
||||||
Inherits: ^SILO
|
|
||||||
Buildable:
|
|
||||||
Prerequisites: ~conyardo, refinery
|
|
||||||
|
|
||||||
LIGHTO:
|
|
||||||
Inherits: ^LIGHT
|
|
||||||
Buildable:
|
|
||||||
Prerequisites: ~conyardo, refinery
|
|
||||||
|
|
||||||
HEAVYO:
|
|
||||||
Inherits: ^HEAVY
|
|
||||||
Buildable:
|
|
||||||
Prerequisites: ~conyardo, refinery
|
|
||||||
|
|
||||||
RADARO:
|
|
||||||
Inherits: ^RADAR
|
|
||||||
Buildable:
|
|
||||||
Prerequisites: ~conyardo, barracks
|
|
||||||
|
|
||||||
STARPORTO:
|
|
||||||
Inherits: ^STARPORT
|
|
||||||
Buildable:
|
|
||||||
Prerequisites: ~conyardo, radar
|
|
||||||
|
|
||||||
HIGHTECHO:
|
|
||||||
Inherits: ^HIGHTECH
|
|
||||||
Buildable:
|
|
||||||
Prerequisites: ~conyardo, radar
|
|
||||||
|
|
||||||
PALACEO:
|
|
||||||
Inherits: ^PALACE
|
|
||||||
Buildable:
|
|
||||||
Prerequisites: ~conyardo, research
|
|
||||||
AirstrikePower:
|
|
||||||
Icon: ornistrike
|
|
||||||
Prerequisites: ~techlevel.superweapons
|
|
||||||
SquadSize: 3
|
|
||||||
Description: Air Strike
|
|
||||||
ChargeTime: 180
|
|
||||||
LongDesc: Ornithopter drops a load of parachuted\nbombs on your target
|
|
||||||
UnitType: orni.bomber
|
|
||||||
SelectTargetSound:
|
|
||||||
DisplayBeacon: True
|
|
||||||
CameraActor: camera
|
|
||||||
CanPowerDown:
|
|
||||||
DisabledOverlay:
|
|
||||||
RequiresPower:
|
|
||||||
SupportPowerChargeBar:
|
|
||||||
|
|
||||||
MCVO:
|
|
||||||
Inherits: ^MCV
|
|
||||||
Buildable:
|
|
||||||
Prerequisites: ~heavyo, repair
|
|
||||||
Transforms:
|
|
||||||
Facing: 16
|
|
||||||
IntoActor: conyardo
|
|
||||||
Offset: -1,-1
|
|
||||||
NoTransformSounds: OI_DPLOY.AUD
|
|
||||||
RenderUnit:
|
|
||||||
Image: DMCV
|
|
||||||
|
|
||||||
MCVO.starport:
|
|
||||||
Inherits: MCVO
|
|
||||||
Buildable:
|
|
||||||
Prerequisites: ~starporto, repair
|
|
||||||
Queue: Starport
|
|
||||||
Valued:
|
|
||||||
Cost: 2500
|
|
||||||
|
|
||||||
COMBATO:
|
|
||||||
Inherits: ^COMBAT
|
|
||||||
Buildable:
|
|
||||||
Prerequisites: ~heavyo
|
|
||||||
RevealsShroud:
|
|
||||||
Range: 8c0
|
|
||||||
Turreted:
|
|
||||||
ROT: 8
|
|
||||||
Mobile:
|
|
||||||
Speed: 96
|
|
||||||
ROT: 8
|
|
||||||
Crushes: crate, infantry
|
|
||||||
RenderUnit:
|
|
||||||
Image: COMBATO
|
|
||||||
WithTurret:
|
|
||||||
LeavesHusk:
|
|
||||||
HuskActor: Combato.Husk
|
|
||||||
|
|
||||||
COMBATO.Husk:
|
|
||||||
Inherits: ^COMBAT.Husk
|
|
||||||
RenderUnit:
|
|
||||||
Image: combato.destroyed
|
|
||||||
TransformOnCapture:
|
|
||||||
IntoActor: combato
|
|
||||||
|
|
||||||
COMBATO.starport:
|
|
||||||
Inherits: COMBATO
|
|
||||||
Buildable:
|
|
||||||
Prerequisites: ~starporto
|
|
||||||
Queue: Starport
|
|
||||||
Valued:
|
|
||||||
Cost: 875
|
|
||||||
|
|
||||||
RAIDER:
|
|
||||||
Inherits: ^Vehicle
|
|
||||||
Buildable:
|
|
||||||
Queue: Vehicle
|
|
||||||
BuildPaletteOrder: 10
|
|
||||||
Prerequisites: ~lighto
|
|
||||||
Valued:
|
|
||||||
Cost: 300
|
|
||||||
Tooltip:
|
|
||||||
Name: Raider Trike
|
|
||||||
Description: Improved Scout\n Strong vs Infantry, Light Vehicles
|
|
||||||
Selectable:
|
|
||||||
Bounds: 24,24
|
|
||||||
Health:
|
|
||||||
HP: 110
|
|
||||||
Armor:
|
|
||||||
Type: Light
|
|
||||||
Mobile:
|
|
||||||
ROT: 10
|
|
||||||
Speed: 149
|
|
||||||
RevealsShroud:
|
|
||||||
Range: 7c0
|
|
||||||
RenderUnit:
|
|
||||||
WithMuzzleFlash:
|
|
||||||
Armament:
|
|
||||||
Weapon: HMGo
|
|
||||||
LocalOffset: 256,0,128
|
|
||||||
MuzzleSequence: muzzle
|
|
||||||
AttackFrontal:
|
|
||||||
AutoTarget:
|
|
||||||
Explodes:
|
|
||||||
Weapon: UnitExplodeTiny
|
|
||||||
EmptyWeapon: UnitExplodeTiny
|
|
||||||
AttractsWorms:
|
|
||||||
Intensity: 420
|
|
||||||
|
|
||||||
STEALTHRAIDER:
|
|
||||||
Inherits: RAIDER
|
|
||||||
Buildable:
|
|
||||||
Prerequisites: ~lighto, hightech, ~techlevel.medium
|
|
||||||
BuildPaletteOrder: 30
|
|
||||||
Valued:
|
|
||||||
Cost: 400
|
|
||||||
Tooltip:
|
|
||||||
Name: Stealth Raider Trike
|
|
||||||
Description: Invisible Raider Trike\n Strong vs Infantry, Light Vehicles
|
|
||||||
Cloak:
|
|
||||||
InitialDelay: 45
|
|
||||||
CloakDelay: 90
|
|
||||||
CloakSound: STEALTH1.WAV
|
|
||||||
UncloakSound: STEALTH2.WAV
|
|
||||||
AutoTarget:
|
|
||||||
InitialStance: HoldFire
|
|
||||||
-MustBeDestroyed:
|
|
||||||
|
|
||||||
CARRYALLO:
|
|
||||||
Inherits: ^CARRYALL
|
|
||||||
RenderUnit:
|
|
||||||
Image: CARRYALL
|
|
||||||
Buildable:
|
|
||||||
Prerequisites: refinery, ~hightecho
|
|
||||||
|
|
||||||
CARRYALLO.starport:
|
|
||||||
Inherits: CARRYALLO
|
|
||||||
Valued:
|
|
||||||
Cost: 1500
|
|
||||||
Buildable:
|
|
||||||
Prerequisites: ~starporto
|
|
||||||
Queue: Starport
|
|
||||||
|
|
||||||
DEVIATORTANK:
|
|
||||||
Inherits: ^Tank
|
|
||||||
Valued:
|
|
||||||
Cost: 1000
|
|
||||||
Tooltip:
|
|
||||||
Name: Deviator
|
|
||||||
Description: Fires a warhead which changes\nthe allegiance of enemy vehicles
|
|
||||||
Buildable:
|
|
||||||
Queue: Armor
|
|
||||||
BuildPaletteOrder: 50
|
|
||||||
Prerequisites: ~heavyo, research, ~techlevel.high
|
|
||||||
Mobile:
|
|
||||||
ROT: 3
|
|
||||||
Speed: 64
|
|
||||||
Health:
|
|
||||||
HP: 125
|
|
||||||
Armor:
|
|
||||||
Type: Light
|
|
||||||
RevealsShroud:
|
|
||||||
Range: 5c0
|
|
||||||
RenderUnit:
|
|
||||||
Armament:
|
|
||||||
Weapon: NerveGasMissile
|
|
||||||
LocalOffset: -299,0,85
|
|
||||||
AttackFrontal:
|
|
||||||
AutoTarget:
|
|
||||||
InitialStance: Defend
|
|
||||||
Explodes:
|
|
||||||
Weapon: UnitExplodeSmall
|
|
||||||
EmptyWeapon: UnitExplodeSmall
|
|
||||||
Selectable:
|
|
||||||
Bounds: 30,30
|
|
||||||
LeavesHusk:
|
|
||||||
HuskActor: Deviatortank.Husk
|
|
||||||
AttractsWorms:
|
|
||||||
Intensity: 600
|
|
||||||
|
|
||||||
DEVIATORTANK.Husk:
|
|
||||||
Inherits: ^Husk
|
|
||||||
RenderUnit:
|
|
||||||
Image: deviatortank.destroyed
|
|
||||||
TransformOnCapture:
|
|
||||||
IntoActor: deviatortank
|
|
||||||
|
|
||||||
SABOTEUR:
|
|
||||||
Inherits: ^Infantry
|
|
||||||
Buildable:
|
|
||||||
Queue: Infantry
|
|
||||||
BuildPaletteOrder: 100
|
|
||||||
Prerequisites: ~barro, palace, ~techlevel.high
|
|
||||||
Valued:
|
|
||||||
Cost: 800
|
|
||||||
Tooltip:
|
|
||||||
Name: Saboteur
|
|
||||||
Description: Sneaky infantry, armed with explosives\n Strong vs Buildings\n Weak vs Everything\n Special Ability: destroy buildings
|
|
||||||
Selectable:
|
|
||||||
Voice: SaboteurVoice
|
|
||||||
Bounds: 12,17,0,0
|
|
||||||
Health:
|
|
||||||
HP: 100
|
|
||||||
Mobile:
|
|
||||||
Speed: 64
|
|
||||||
RevealsShroud:
|
|
||||||
Range: 7c0
|
|
||||||
C4Demolition:
|
|
||||||
C4Delay: 45
|
|
||||||
-AutoTarget:
|
|
||||||
AttractsWorms:
|
|
||||||
Intensity: 120
|
|
||||||
|
|
||||||
84
mods/d2k/rules/starport.yaml
Normal file
84
mods/d2k/rules/starport.yaml
Normal file
@@ -0,0 +1,84 @@
|
|||||||
|
mcv.starport:
|
||||||
|
Inherits: mcv
|
||||||
|
Buildable:
|
||||||
|
Prerequisites: repair
|
||||||
|
Queue: Starport
|
||||||
|
Valued:
|
||||||
|
Cost: 2500
|
||||||
|
RenderUnit:
|
||||||
|
Image: mcv
|
||||||
|
|
||||||
|
harvester.starport:
|
||||||
|
Inherits: harvester
|
||||||
|
Buildable:
|
||||||
|
Queue: Starport
|
||||||
|
Valued:
|
||||||
|
Cost: 1500
|
||||||
|
RenderUnit:
|
||||||
|
Image: harvester
|
||||||
|
|
||||||
|
trike.starport:
|
||||||
|
Inherits: trike
|
||||||
|
Buildable:
|
||||||
|
Queue: Starport
|
||||||
|
Valued:
|
||||||
|
Cost: 315
|
||||||
|
RenderUnit:
|
||||||
|
Image: trike
|
||||||
|
|
||||||
|
quad.starport:
|
||||||
|
Inherits: quad
|
||||||
|
Buildable:
|
||||||
|
Queue: Starport
|
||||||
|
Valued:
|
||||||
|
Cost: 500
|
||||||
|
RenderUnit:
|
||||||
|
Image: quad
|
||||||
|
|
||||||
|
siegetank.starport:
|
||||||
|
Inherits: siegetank
|
||||||
|
Buildable:
|
||||||
|
Queue: Starport
|
||||||
|
Valued:
|
||||||
|
Cost: 1075
|
||||||
|
RenderUnit:
|
||||||
|
Image: siegetank
|
||||||
|
|
||||||
|
missiletank.starport:
|
||||||
|
Inherits: missiletank
|
||||||
|
Buildable:
|
||||||
|
Queue: Starport
|
||||||
|
Valued:
|
||||||
|
Cost: 1250
|
||||||
|
RenderUnit:
|
||||||
|
Image: missiletank
|
||||||
|
|
||||||
|
combata.starport:
|
||||||
|
Inherits: combata
|
||||||
|
Buildable:
|
||||||
|
Prerequisites: ~starport.atreides
|
||||||
|
Queue: Starport
|
||||||
|
Valued:
|
||||||
|
Cost: 875
|
||||||
|
RenderUnit:
|
||||||
|
Image: combata
|
||||||
|
|
||||||
|
combath.starport:
|
||||||
|
Inherits: combath
|
||||||
|
Buildable:
|
||||||
|
Prerequisites: ~starport.harkonnen
|
||||||
|
Queue: Starport
|
||||||
|
Valued:
|
||||||
|
Cost: 875
|
||||||
|
RenderUnit:
|
||||||
|
Image: combath
|
||||||
|
|
||||||
|
combato.starport:
|
||||||
|
Inherits: combato
|
||||||
|
Buildable:
|
||||||
|
Prerequisites: ~starport.ordos
|
||||||
|
Queue: Starport
|
||||||
|
Valued:
|
||||||
|
Cost: 875
|
||||||
|
RenderUnit:
|
||||||
|
Image: combato
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
^CONCRETE:
|
^concrete:
|
||||||
Building:
|
Building:
|
||||||
Adjacent: 4
|
Adjacent: 4
|
||||||
TerrainTypes: Rock
|
TerrainTypes: Rock
|
||||||
@@ -13,32 +13,27 @@
|
|||||||
RenderSprites:
|
RenderSprites:
|
||||||
KillsSelf:
|
KillsSelf:
|
||||||
RemoveInstead: true
|
RemoveInstead: true
|
||||||
|
Buildable:
|
||||||
|
Queue: Building
|
||||||
|
BuildPaletteOrder: 10
|
||||||
|
|
||||||
CONCRETEA:
|
concretea:
|
||||||
Inherits: ^CONCRETE
|
Inherits: ^concrete
|
||||||
Building:
|
Building:
|
||||||
Footprint: xx xx
|
Footprint: xx xx
|
||||||
Dimensions: 2,2
|
Dimensions: 2,2
|
||||||
Buildable:
|
|
||||||
Queue: Building
|
|
||||||
BuildPaletteOrder: 10
|
|
||||||
Prerequisites: ~conyard
|
|
||||||
Valued:
|
Valued:
|
||||||
Cost: 20
|
Cost: 20
|
||||||
|
|
||||||
CONCRETEB:
|
concreteb:
|
||||||
Inherits: ^CONCRETE
|
Inherits: ^concrete
|
||||||
Building:
|
Building:
|
||||||
Footprint: xxx xxx xxx
|
Footprint: xxx xxx xxx
|
||||||
Dimensions: 3,3
|
Dimensions: 3,3
|
||||||
Buildable:
|
|
||||||
Queue: Building
|
|
||||||
BuildPaletteOrder: 10
|
|
||||||
Prerequisites: ~conyard
|
|
||||||
Valued:
|
Valued:
|
||||||
Cost: 50
|
Cost: 50
|
||||||
|
|
||||||
^CONYARD:
|
conyard:
|
||||||
Inherits: ^Building
|
Inherits: ^Building
|
||||||
Building:
|
Building:
|
||||||
Footprint: xxx xxx
|
Footprint: xxx xxx
|
||||||
@@ -48,10 +43,6 @@ CONCRETEB:
|
|||||||
TerrainTypes: Rock
|
TerrainTypes: Rock
|
||||||
Template: 88
|
Template: 88
|
||||||
Bib:
|
Bib:
|
||||||
Buildable:
|
|
||||||
Queue: Building
|
|
||||||
BuildPaletteOrder: 1000
|
|
||||||
Prerequisites: ~disabled
|
|
||||||
Selectable:
|
Selectable:
|
||||||
Bounds: 96,64
|
Bounds: 96,64
|
||||||
Health:
|
Health:
|
||||||
@@ -70,17 +61,21 @@ CONCRETEB:
|
|||||||
Value: 2000
|
Value: 2000
|
||||||
BaseBuilding:
|
BaseBuilding:
|
||||||
ProductionBar:
|
ProductionBar:
|
||||||
ProvidesCustomPrerequisite:
|
|
||||||
Prerequisite: conyard
|
|
||||||
WithBuildingPlacedOverlay:
|
|
||||||
Palette: d2k
|
|
||||||
Power:
|
Power:
|
||||||
Amount: 20
|
Amount: 20
|
||||||
|
RenderBuilding:
|
||||||
|
Image: conyard.harkonnen
|
||||||
|
RaceImages:
|
||||||
|
atreides: conyard.atreides
|
||||||
|
ordos: conyard.ordos
|
||||||
|
corrino: conyard.corrino
|
||||||
|
WithBuildingPlacedOverlay:
|
||||||
|
Palette: d2k
|
||||||
|
PrimaryBuilding:
|
||||||
|
|
||||||
^POWER:
|
power:
|
||||||
Inherits: ^Building
|
Inherits: ^Building
|
||||||
Buildable:
|
Buildable:
|
||||||
Prerequisites: ~conyard
|
|
||||||
Queue: Building
|
Queue: Building
|
||||||
BuildPaletteOrder: 10
|
BuildPaletteOrder: 10
|
||||||
Selectable:
|
Selectable:
|
||||||
@@ -100,18 +95,21 @@ CONCRETEB:
|
|||||||
Type: Wood
|
Type: Wood
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 4c0
|
Range: 4c0
|
||||||
ProvidesCustomPrerequisite:
|
RenderBuilding:
|
||||||
Prerequisite: power
|
Image: power.harkonnen
|
||||||
|
RaceImages:
|
||||||
|
atreides: power.atreides
|
||||||
|
ordos: power.ordos
|
||||||
WithIdleOverlay@ZAPS:
|
WithIdleOverlay@ZAPS:
|
||||||
Sequence: idle-zaps
|
Sequence: idle-zaps
|
||||||
Power:
|
Power:
|
||||||
Amount: 100
|
Amount: 100
|
||||||
ScalePowerWithHealth:
|
ScalePowerWithHealth:
|
||||||
|
|
||||||
^BARRACKS:
|
barracks:
|
||||||
Inherits: ^Building
|
Inherits: ^Building
|
||||||
Buildable:
|
Buildable:
|
||||||
Prerequisites: ~conyard, power
|
Prerequisites: power
|
||||||
Queue: Building
|
Queue: Building
|
||||||
BuildPaletteOrder: 40
|
BuildPaletteOrder: 40
|
||||||
Selectable:
|
Selectable:
|
||||||
@@ -143,15 +141,30 @@ CONCRETEB:
|
|||||||
Produces: Infantry
|
Produces: Infantry
|
||||||
PrimaryBuilding:
|
PrimaryBuilding:
|
||||||
ProductionBar:
|
ProductionBar:
|
||||||
ProvidesCustomPrerequisite:
|
ProvidesCustomPrerequisite@atreides:
|
||||||
Prerequisite: barracks
|
Prerequisite: barracks.atreides
|
||||||
|
Race: atreides
|
||||||
|
ProvidesCustomPrerequisite@ordos:
|
||||||
|
Prerequisite: barracks.ordos
|
||||||
|
Race: ordos
|
||||||
|
ProvidesCustomPrerequisite@harkonnen:
|
||||||
|
Prerequisite: barracks.harkonnen
|
||||||
|
Race: harkonnen
|
||||||
|
ProvidesCustomPrerequisite@medics:
|
||||||
|
Prerequisite: barracks.medics
|
||||||
|
Race: atreides, ordos
|
||||||
Power:
|
Power:
|
||||||
Amount: -20
|
Amount: -20
|
||||||
|
RenderBuilding:
|
||||||
|
Image: barracks.harkonnen
|
||||||
|
RaceImages:
|
||||||
|
atreides: barracks.atreides
|
||||||
|
ordos: barracks.ordos
|
||||||
|
|
||||||
^REFINERY:
|
refinery:
|
||||||
Inherits: ^Building
|
Inherits: ^Building
|
||||||
Buildable:
|
Buildable:
|
||||||
Prerequisites: ~conyard, ~power
|
Prerequisites: power
|
||||||
Queue: Building
|
Queue: Building
|
||||||
BuildPaletteOrder: 20
|
BuildPaletteOrder: 20
|
||||||
Selectable:
|
Selectable:
|
||||||
@@ -182,12 +195,16 @@ CONCRETEB:
|
|||||||
CustomSellValue:
|
CustomSellValue:
|
||||||
Value: 500
|
Value: 500
|
||||||
FreeActor:
|
FreeActor:
|
||||||
Actor: HARVESTER
|
Actor: harvester
|
||||||
InitialActivity: FindResources
|
InitialActivity: FindResources
|
||||||
SpawnOffset: 2,1
|
SpawnOffset: 2,1
|
||||||
Facing: 160
|
Facing: 160
|
||||||
ProvidesCustomPrerequisite:
|
-RenderBuilding:
|
||||||
Prerequisite: refinery
|
RenderBuildingWarFactory:
|
||||||
|
Image: refinery.harkonnen
|
||||||
|
RaceImages:
|
||||||
|
atreides: refinery.atreides
|
||||||
|
ordos: refinery.ordos
|
||||||
WithDockingOverlay@SMOKE:
|
WithDockingOverlay@SMOKE:
|
||||||
Sequence: smoke
|
Sequence: smoke
|
||||||
Power:
|
Power:
|
||||||
@@ -195,10 +212,10 @@ CONCRETEB:
|
|||||||
WithIdleOverlay@TOP:
|
WithIdleOverlay@TOP:
|
||||||
Sequence: idle-top
|
Sequence: idle-top
|
||||||
|
|
||||||
^SILO:
|
silo:
|
||||||
Inherits: ^Building
|
Inherits: ^Building
|
||||||
Buildable:
|
Buildable:
|
||||||
Prerequisites: ~conyard, refinery
|
Prerequisites: refinery
|
||||||
Queue: Building
|
Queue: Building
|
||||||
BuildPaletteOrder: 30
|
BuildPaletteOrder: 30
|
||||||
Selectable:
|
Selectable:
|
||||||
@@ -219,6 +236,10 @@ CONCRETEB:
|
|||||||
Range: 4c0
|
Range: 4c0
|
||||||
-RenderBuilding:
|
-RenderBuilding:
|
||||||
RenderBuildingSilo:
|
RenderBuildingSilo:
|
||||||
|
Image: silo.harkonnen
|
||||||
|
RaceImages:
|
||||||
|
atreides: silo.atreides
|
||||||
|
ordos: silo.ordos
|
||||||
StoresResources:
|
StoresResources:
|
||||||
PipColor: green
|
PipColor: green
|
||||||
PipCount: 5
|
PipCount: 5
|
||||||
@@ -229,10 +250,10 @@ CONCRETEB:
|
|||||||
MustBeDestroyed:
|
MustBeDestroyed:
|
||||||
RequiredForShortGame: false
|
RequiredForShortGame: false
|
||||||
|
|
||||||
^LIGHT:
|
light:
|
||||||
Inherits: ^Building
|
Inherits: ^Building
|
||||||
Buildable:
|
Buildable:
|
||||||
Prerequisites: ~conyard, refinery
|
Prerequisites: refinery
|
||||||
Queue: Building
|
Queue: Building
|
||||||
BuildPaletteOrder: 70
|
BuildPaletteOrder: 70
|
||||||
Selectable:
|
Selectable:
|
||||||
@@ -252,6 +273,11 @@ CONCRETEB:
|
|||||||
Type: Wood
|
Type: Wood
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 4c0
|
Range: 4c0
|
||||||
|
RenderBuilding:
|
||||||
|
Image: light.harkonnen
|
||||||
|
RaceImages:
|
||||||
|
atreides: light.atreides
|
||||||
|
ordos: light.ordos
|
||||||
RallyPoint:
|
RallyPoint:
|
||||||
RallyPoint: 2,2
|
RallyPoint: 2,2
|
||||||
Exit@1:
|
Exit@1:
|
||||||
@@ -261,8 +287,18 @@ CONCRETEB:
|
|||||||
Produces: Vehicle
|
Produces: Vehicle
|
||||||
PrimaryBuilding:
|
PrimaryBuilding:
|
||||||
ProductionBar:
|
ProductionBar:
|
||||||
ProvidesCustomPrerequisite:
|
ProvidesCustomPrerequisite@atreides:
|
||||||
Prerequisite: light
|
Prerequisite: light.atreides
|
||||||
|
Race: atreides
|
||||||
|
ProvidesCustomPrerequisite@ordos:
|
||||||
|
Prerequisite: light.ordos
|
||||||
|
Race: ordos
|
||||||
|
ProvidesCustomPrerequisite@harkonnen:
|
||||||
|
Prerequisite: light.harkonnen
|
||||||
|
Race: harkonnen
|
||||||
|
ProvidesCustomPrerequisite@TRIKES:
|
||||||
|
Prerequisite: light.regulartrikes
|
||||||
|
Race: atreides, harkonnen
|
||||||
WithProductionOverlay@WELDING:
|
WithProductionOverlay@WELDING:
|
||||||
Sequence: production-welding
|
Sequence: production-welding
|
||||||
WithIdleOverlay@TOP:
|
WithIdleOverlay@TOP:
|
||||||
@@ -270,10 +306,10 @@ CONCRETEB:
|
|||||||
Power:
|
Power:
|
||||||
Amount: -20
|
Amount: -20
|
||||||
|
|
||||||
^HEAVY:
|
heavy:
|
||||||
Inherits: ^Building
|
Inherits: ^Building
|
||||||
Buildable:
|
Buildable:
|
||||||
Prerequisites: ~conyard, refinery
|
Prerequisites: refinery
|
||||||
Queue: Building
|
Queue: Building
|
||||||
BuildPaletteOrder: 100
|
BuildPaletteOrder: 100
|
||||||
Selectable:
|
Selectable:
|
||||||
@@ -302,8 +338,21 @@ CONCRETEB:
|
|||||||
Produces: Armor
|
Produces: Armor
|
||||||
PrimaryBuilding:
|
PrimaryBuilding:
|
||||||
ProductionBar:
|
ProductionBar:
|
||||||
ProvidesCustomPrerequisite:
|
ProvidesCustomPrerequisite@atreides:
|
||||||
Prerequisite: heavy
|
Prerequisite: heavy.atreides
|
||||||
|
Race: atreides
|
||||||
|
ProvidesCustomPrerequisite@ordos:
|
||||||
|
Prerequisite: heavy.ordos
|
||||||
|
Race: ordos
|
||||||
|
ProvidesCustomPrerequisite@harkonnen:
|
||||||
|
Prerequisite: heavy.harkonnen
|
||||||
|
Race: harkonnen
|
||||||
|
RenderBuilding:
|
||||||
|
Image: heavy.harkonnen
|
||||||
|
RaceImages:
|
||||||
|
atreides: heavy.atreides
|
||||||
|
ordos: heavy.ordos
|
||||||
|
corrino: heavy.corrino
|
||||||
WithProductionOverlay@WELDING:
|
WithProductionOverlay@WELDING:
|
||||||
Sequence: production-welding
|
Sequence: production-welding
|
||||||
WithIdleOverlay@TOP:
|
WithIdleOverlay@TOP:
|
||||||
@@ -311,13 +360,13 @@ CONCRETEB:
|
|||||||
Power:
|
Power:
|
||||||
Amount: -30
|
Amount: -30
|
||||||
|
|
||||||
^RADAR:
|
radar:
|
||||||
Inherits: ^Building
|
Inherits: ^Building
|
||||||
RequiresPower:
|
RequiresPower:
|
||||||
CanPowerDown:
|
CanPowerDown:
|
||||||
DisabledOverlay:
|
DisabledOverlay:
|
||||||
Buildable:
|
Buildable:
|
||||||
Prerequisites: ~conyard, barracks, ~techlevel.medium
|
Prerequisites: barracks, ~techlevel.medium
|
||||||
Queue: Building
|
Queue: Building
|
||||||
BuildPaletteOrder: 50
|
BuildPaletteOrder: 50
|
||||||
Selectable:
|
Selectable:
|
||||||
@@ -341,15 +390,18 @@ CONCRETEB:
|
|||||||
DetectCloaked:
|
DetectCloaked:
|
||||||
Range: 6
|
Range: 6
|
||||||
RenderDetectionCircle:
|
RenderDetectionCircle:
|
||||||
ProvidesCustomPrerequisite:
|
RenderBuilding:
|
||||||
Prerequisite: radar
|
Image: radar.harkonnen
|
||||||
|
RaceImages:
|
||||||
|
atreides: radar.atreides
|
||||||
|
ordos: radar.ordos
|
||||||
WithIdleOverlay@DISH:
|
WithIdleOverlay@DISH:
|
||||||
Sequence: idle-dish
|
Sequence: idle-dish
|
||||||
PauseOnLowPower: yes
|
PauseOnLowPower: yes
|
||||||
Power:
|
Power:
|
||||||
Amount: -40
|
Amount: -40
|
||||||
|
|
||||||
^STARPORT:
|
starport:
|
||||||
Inherits: ^Building
|
Inherits: ^Building
|
||||||
Valued:
|
Valued:
|
||||||
Cost: 2000
|
Cost: 2000
|
||||||
@@ -357,7 +409,7 @@ CONCRETEB:
|
|||||||
Name: Starport
|
Name: Starport
|
||||||
Description: Dropzone for quick reinforcements, at a price.\n Requires power to operate
|
Description: Dropzone for quick reinforcements, at a price.\n Requires power to operate
|
||||||
Buildable:
|
Buildable:
|
||||||
Prerequisites: ~conyard, radar, ~techlevel.high
|
Prerequisites: radar, ~techlevel.high
|
||||||
Queue: Building
|
Queue: Building
|
||||||
BuildPaletteOrder: 80
|
BuildPaletteOrder: 80
|
||||||
Building:
|
Building:
|
||||||
@@ -382,6 +434,12 @@ CONCRETEB:
|
|||||||
ProductionAirdrop:
|
ProductionAirdrop:
|
||||||
Produces: Starport
|
Produces: Starport
|
||||||
ActorType: frigate
|
ActorType: frigate
|
||||||
|
RenderBuilding:
|
||||||
|
Image: starport.harkonnen
|
||||||
|
RaceImages:
|
||||||
|
atreides: starport.atreides
|
||||||
|
ordos: starport.ordos
|
||||||
|
corrino: starport.corrino
|
||||||
WithDeliveryOverlay:
|
WithDeliveryOverlay:
|
||||||
Palette: starportlights
|
Palette: starportlights
|
||||||
ProductionBar:
|
ProductionBar:
|
||||||
@@ -389,15 +447,22 @@ CONCRETEB:
|
|||||||
RequiresPower:
|
RequiresPower:
|
||||||
CanPowerDown:
|
CanPowerDown:
|
||||||
DisabledOverlay:
|
DisabledOverlay:
|
||||||
ProvidesCustomPrerequisite:
|
ProvidesCustomPrerequisite@atreides:
|
||||||
Prerequisite: starport
|
Prerequisite: starport.atreides
|
||||||
|
Race: atreides
|
||||||
|
ProvidesCustomPrerequisite@ordos:
|
||||||
|
Prerequisite: starport.ordos
|
||||||
|
Race: ordos
|
||||||
|
ProvidesCustomPrerequisite@harkonnen:
|
||||||
|
Prerequisite: starport.harkonnen
|
||||||
|
Race: harkonnen
|
||||||
Power:
|
Power:
|
||||||
Amount: -40
|
Amount: -40
|
||||||
|
|
||||||
^WALL:
|
wall:
|
||||||
Buildable:
|
Buildable:
|
||||||
Queue: Building
|
Queue: Building
|
||||||
Prerequisites: ~conyard, barracks
|
Prerequisites: barracks
|
||||||
BuildPaletteOrder: 60
|
BuildPaletteOrder: 60
|
||||||
SoundOnDamageTransition:
|
SoundOnDamageTransition:
|
||||||
DamagedSound:
|
DamagedSound:
|
||||||
@@ -429,7 +494,6 @@ CONCRETEB:
|
|||||||
TargetableBuilding:
|
TargetableBuilding:
|
||||||
TargetTypes: Ground
|
TargetTypes: Ground
|
||||||
RenderBuildingWall:
|
RenderBuildingWall:
|
||||||
Image: walla
|
|
||||||
EditorAppearance:
|
EditorAppearance:
|
||||||
RelativeToTopLeft: yes
|
RelativeToTopLeft: yes
|
||||||
AutoTargetIgnore:
|
AutoTargetIgnore:
|
||||||
@@ -444,16 +508,11 @@ CONCRETEB:
|
|||||||
Pieces: 3, 7
|
Pieces: 3, 7
|
||||||
Range: 2c0, 5c0
|
Range: 2c0, 5c0
|
||||||
|
|
||||||
WALL:
|
guntower:
|
||||||
Inherits: ^WALL
|
|
||||||
Buildable:
|
|
||||||
Prerequisites: ~disabled
|
|
||||||
|
|
||||||
^GUNTOWER:
|
|
||||||
Inherits: ^Building
|
Inherits: ^Building
|
||||||
Buildable:
|
Buildable:
|
||||||
Queue: Building
|
Queue: Building
|
||||||
Prerequisites: ~conyard, barracks
|
Prerequisites: barracks
|
||||||
BuildPaletteOrder: 90
|
BuildPaletteOrder: 90
|
||||||
Valued:
|
Valued:
|
||||||
Cost: 650
|
Cost: 650
|
||||||
@@ -504,11 +563,11 @@ WALL:
|
|||||||
MustBeDestroyed:
|
MustBeDestroyed:
|
||||||
RequiredForShortGame: false
|
RequiredForShortGame: false
|
||||||
|
|
||||||
^ROCKETTOWER:
|
rockettower:
|
||||||
Inherits: ^Building
|
Inherits: ^Building
|
||||||
Buildable:
|
Buildable:
|
||||||
Queue: Building
|
Queue: Building
|
||||||
Prerequisites: ~conyard, radar, ~techlevel.medium
|
Prerequisites: radar, ~techlevel.medium
|
||||||
BuildPaletteOrder: 120
|
BuildPaletteOrder: 120
|
||||||
Valued:
|
Valued:
|
||||||
Cost: 850
|
Cost: 850
|
||||||
@@ -559,11 +618,11 @@ WALL:
|
|||||||
MustBeDestroyed:
|
MustBeDestroyed:
|
||||||
RequiredForShortGame: false
|
RequiredForShortGame: false
|
||||||
|
|
||||||
^REPAIR:
|
repair:
|
||||||
Inherits: ^Building
|
Inherits: ^Building
|
||||||
Buildable:
|
Buildable:
|
||||||
Queue: Building
|
Queue: Building
|
||||||
Prerequisites: ~conyard, heavy, ~techlevel.medium
|
Prerequisites: heavy, ~techlevel.medium
|
||||||
BuildPaletteOrder: 130
|
BuildPaletteOrder: 130
|
||||||
Valued:
|
Valued:
|
||||||
Cost: 500
|
Cost: 500
|
||||||
@@ -586,17 +645,20 @@ WALL:
|
|||||||
FinishRepairingNotification: UnitRepaired
|
FinishRepairingNotification: UnitRepaired
|
||||||
RallyPoint:
|
RallyPoint:
|
||||||
RallyPoint: 1,3
|
RallyPoint: 1,3
|
||||||
ProvidesCustomPrerequisite:
|
RenderBuilding:
|
||||||
Prerequisite: repair
|
Image: repair.harkonnen
|
||||||
|
RaceImages:
|
||||||
|
atreides: repair.atreides
|
||||||
|
ordos: repair.ordos
|
||||||
WithRepairOverlay:
|
WithRepairOverlay:
|
||||||
Palette: repairlights
|
Palette: repairlights
|
||||||
Power:
|
Power:
|
||||||
Amount: -10
|
Amount: -10
|
||||||
|
|
||||||
^HIGHTECH:
|
hightech:
|
||||||
Inherits: ^Building
|
Inherits: ^Building
|
||||||
Buildable:
|
Buildable:
|
||||||
Prerequisites: ~conyard, radar, ~techlevel.medium
|
Prerequisites: radar, ~techlevel.medium
|
||||||
Queue: Building
|
Queue: Building
|
||||||
BuildPaletteOrder: 110
|
BuildPaletteOrder: 110
|
||||||
Selectable:
|
Selectable:
|
||||||
@@ -621,18 +683,21 @@ WALL:
|
|||||||
Type: Wood
|
Type: Wood
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 4c0
|
Range: 4c0
|
||||||
ProvidesCustomPrerequisite:
|
RenderBuilding:
|
||||||
Prerequisite: hightech
|
Image: hightech.harkonnen
|
||||||
|
RaceImages:
|
||||||
|
atreides: hightech.atreides
|
||||||
|
ordos: hightech.ordos
|
||||||
WithProductionOverlay@WELDING:
|
WithProductionOverlay@WELDING:
|
||||||
Sequence: production-welding
|
Sequence: production-welding
|
||||||
Power:
|
Power:
|
||||||
Amount: -40
|
Amount: -40
|
||||||
|
|
||||||
^RESEARCH:
|
research:
|
||||||
Inherits: ^Building
|
Inherits: ^Building
|
||||||
Buildable:
|
Buildable:
|
||||||
Queue: Building
|
Queue: Building
|
||||||
Prerequisites: ~conyard, hightech, ~techlevel.high
|
Prerequisites: hightech, ~techlevel.high
|
||||||
BuildPaletteOrder: 140
|
BuildPaletteOrder: 140
|
||||||
Selectable:
|
Selectable:
|
||||||
Bounds: 96,64
|
Bounds: 96,64
|
||||||
@@ -662,17 +727,20 @@ WALL:
|
|||||||
Type: Wood
|
Type: Wood
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 4c0
|
Range: 4c0
|
||||||
ProvidesCustomPrerequisite:
|
RenderBuilding:
|
||||||
Prerequisite: research
|
Image: research.harkonnen
|
||||||
|
RaceImages:
|
||||||
|
atreides: research.atreides
|
||||||
|
ordos: research.ordos
|
||||||
WithIdleOverlay@LIGHTS:
|
WithIdleOverlay@LIGHTS:
|
||||||
Sequence: idle-lights
|
Sequence: idle-lights
|
||||||
Power:
|
Power:
|
||||||
Amount: -40
|
Amount: -40
|
||||||
|
|
||||||
^PALACE:
|
palace:
|
||||||
Inherits: ^Building
|
Inherits: ^Building
|
||||||
Buildable:
|
Buildable:
|
||||||
Prerequisites: ~conyard, research, ~techlevel.high
|
Prerequisites: research, ~techlevel.high
|
||||||
Queue: Building
|
Queue: Building
|
||||||
BuildPaletteOrder: 150
|
BuildPaletteOrder: 150
|
||||||
Selectable:
|
Selectable:
|
||||||
@@ -681,7 +749,7 @@ WALL:
|
|||||||
Cost: 2000
|
Cost: 2000
|
||||||
Tooltip:
|
Tooltip:
|
||||||
Name: Palace
|
Name: Palace
|
||||||
Description: Unlocks elite infantry\n Special Ability: Ornithopter Strike
|
Description: Unlocks elite infantry and support powers
|
||||||
Building:
|
Building:
|
||||||
Footprint: xx= xxx =xx
|
Footprint: xx= xxx =xx
|
||||||
Dimensions: 3,3
|
Dimensions: 3,3
|
||||||
@@ -693,72 +761,83 @@ WALL:
|
|||||||
Type: Wood
|
Type: Wood
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 8c0
|
Range: 8c0
|
||||||
|
RenderBuilding:
|
||||||
|
Image: palace.harkonnen
|
||||||
|
RaceImages:
|
||||||
|
atreides: palace.atreides
|
||||||
|
ordos: palace.ordos
|
||||||
|
corrino: palace.corrino
|
||||||
RenderDetectionCircle:
|
RenderDetectionCircle:
|
||||||
DetectCloaked:
|
DetectCloaked:
|
||||||
Range: 4
|
Range: 4
|
||||||
ProvidesCustomPrerequisite:
|
|
||||||
Prerequisite: palace
|
|
||||||
Power:
|
Power:
|
||||||
Amount: -50
|
Amount: -50
|
||||||
|
ProvidesCustomPrerequisite@airstrike:
|
||||||
|
Prerequisite: palace.airstrike
|
||||||
|
Race: atreides, ordos
|
||||||
|
ProvidesCustomPrerequisite@nuke:
|
||||||
|
Prerequisite: palace.nuke
|
||||||
|
Race: harkonnen
|
||||||
|
AirstrikePower:
|
||||||
|
Icon: ornistrike
|
||||||
|
Prerequisites: ~techlevel.superweapons, ~palace.airstrike
|
||||||
|
Description: Air Strike
|
||||||
|
ChargeTime: 180
|
||||||
|
LongDesc: Ornithopter drops a load of parachuted\nbombs on your target
|
||||||
|
UnitType: orni.bomber
|
||||||
|
SelectTargetSound:
|
||||||
|
DisplayBeacon: True
|
||||||
|
CameraActor: camera
|
||||||
|
NukePower:
|
||||||
|
Icon: deathhand
|
||||||
|
Prerequisites: ~techlevel.superweapons, ~palace.nuke
|
||||||
|
ChargeTime: 300
|
||||||
|
Description: Death Hand
|
||||||
|
LongDesc: Launches a nuclear missile at a target location
|
||||||
|
BeginChargeSound: HI_PREP.AUD
|
||||||
|
EndChargeSound: HI_DHRDY.AUD
|
||||||
|
SelectTargetSound:
|
||||||
|
LaunchSound:
|
||||||
|
IncomingSound:
|
||||||
|
MissileWeapon: atomic
|
||||||
|
SpawnOffset: -512,1c171,0
|
||||||
|
DisplayBeacon: True
|
||||||
|
DisplayRadarPing: True
|
||||||
|
CameraActor: camera
|
||||||
|
CanPowerDown:
|
||||||
|
DisabledOverlay:
|
||||||
|
RequiresPower:
|
||||||
|
SupportPowerChargeBar:
|
||||||
|
|
||||||
SIETCH:
|
conyard.atreides:
|
||||||
Inherits: ^Building
|
Inherits: conyard
|
||||||
Tooltip:
|
Buildable:
|
||||||
Name: Fremen Sietch
|
Queue: Building
|
||||||
Building:
|
BuildPaletteOrder: 1000
|
||||||
Footprint: xx xx
|
Prerequisites: ~disabled
|
||||||
Dimensions: 2,2
|
ForceRace: atreides
|
||||||
TerrainTypes: Cliff
|
RenderBuilding:
|
||||||
Health:
|
Image: conyard.atreides
|
||||||
HP: 400
|
-RaceImages:
|
||||||
Armor:
|
|
||||||
Type: Concrete
|
|
||||||
RevealsShroud:
|
|
||||||
Range: 10c0
|
|
||||||
-GivesBuildableArea:
|
|
||||||
-Sellable:
|
|
||||||
-ExternalCapturable:
|
|
||||||
-ExternalCapturableBar:
|
|
||||||
Power:
|
|
||||||
Amount: 0
|
|
||||||
|
|
||||||
CONYARD:
|
conyard.harkonnen:
|
||||||
Tooltip:
|
Inherits: conyard
|
||||||
Name: Construction Yard
|
Buildable:
|
||||||
|
Queue: Building
|
||||||
BARRACKS:
|
BuildPaletteOrder: 1000
|
||||||
Tooltip:
|
Prerequisites: ~disabled
|
||||||
Name: Barracks
|
ForceRace: harkonnen
|
||||||
|
RenderBuilding:
|
||||||
LIGHT:
|
Image: conyard.harkonnen
|
||||||
Tooltip:
|
-RaceImages:
|
||||||
Name: Light Factory
|
|
||||||
|
|
||||||
HEAVY:
|
|
||||||
Tooltip:
|
|
||||||
Name: Heavy Factory
|
|
||||||
|
|
||||||
HIGHTECH:
|
|
||||||
Tooltip:
|
|
||||||
Name: High-Tech Facility
|
|
||||||
|
|
||||||
REPAIR:
|
|
||||||
Tooltip:
|
|
||||||
Name: Repair Pad
|
|
||||||
|
|
||||||
RESEARCH:
|
|
||||||
Tooltip:
|
|
||||||
Name: Ix Lab
|
|
||||||
|
|
||||||
RADAR:
|
|
||||||
Tooltip:
|
|
||||||
Name: Outpost
|
|
||||||
|
|
||||||
POWER:
|
|
||||||
Tooltip:
|
|
||||||
Name: Windtrap
|
|
||||||
|
|
||||||
REFINERY:
|
|
||||||
Tooltip:
|
|
||||||
Name: Spice Refinery
|
|
||||||
|
|
||||||
|
conyard.ordos:
|
||||||
|
Inherits: conyard
|
||||||
|
Buildable:
|
||||||
|
Queue: Building
|
||||||
|
BuildPaletteOrder: 1000
|
||||||
|
Prerequisites: ~disabled
|
||||||
|
ForceRace: ordos
|
||||||
|
RenderBuilding:
|
||||||
|
Image: conyard.ordos
|
||||||
|
-RaceImages:
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
^MCV:
|
mcv:
|
||||||
Inherits: ^Vehicle
|
Inherits: ^Vehicle
|
||||||
Buildable:
|
Buildable:
|
||||||
Prerequisites: ~heavy, repair, ~techlevel.medium
|
Prerequisites: repair, ~techlevel.medium
|
||||||
Queue: Armor
|
Queue: Armor
|
||||||
BuildPaletteOrder: 110
|
BuildPaletteOrder: 110
|
||||||
Valued:
|
Valued:
|
||||||
@@ -28,26 +28,21 @@
|
|||||||
Weapon: UnitExplodeScale
|
Weapon: UnitExplodeScale
|
||||||
EmptyWeapon: UnitExplodeScale
|
EmptyWeapon: UnitExplodeScale
|
||||||
Transforms:
|
Transforms:
|
||||||
|
Facing: 16
|
||||||
|
IntoActor: conyard
|
||||||
|
Offset: -1,-1
|
||||||
TransformSounds: BUILD1.WAV
|
TransformSounds: BUILD1.WAV
|
||||||
|
NoTransformNotification: CannotDeploy
|
||||||
LeavesHusk:
|
LeavesHusk:
|
||||||
HuskActor: MCV.Husk
|
HuskActor: mcv.husk
|
||||||
AttractsWorms:
|
AttractsWorms:
|
||||||
Intensity: 700
|
Intensity: 700
|
||||||
|
|
||||||
MCV.Husk:
|
harvester:
|
||||||
Inherits: ^Husk
|
|
||||||
Health:
|
|
||||||
HP: 175
|
|
||||||
Tooltip:
|
|
||||||
Name: Destroyed Mobile Construction Vehicle
|
|
||||||
RenderUnit:
|
|
||||||
Image: dmcv.destroyed
|
|
||||||
|
|
||||||
HARVESTER:
|
|
||||||
Inherits: ^Vehicle
|
Inherits: ^Vehicle
|
||||||
Buildable:
|
Buildable:
|
||||||
Queue: Armor
|
Queue: Armor
|
||||||
Prerequisites: ~heavy, refinery
|
Prerequisites: refinery
|
||||||
BuildPaletteOrder: 10
|
BuildPaletteOrder: 10
|
||||||
InitialActivity: FindResources
|
InitialActivity: FindResources
|
||||||
Valued:
|
Valued:
|
||||||
@@ -74,8 +69,6 @@ HARVESTER:
|
|||||||
Mobile:
|
Mobile:
|
||||||
Speed: 64
|
Speed: 64
|
||||||
Crushes: crate, infantry
|
Crushes: crate, infantry
|
||||||
RenderUnit:
|
|
||||||
Image: HARVESTER
|
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 4c0
|
Range: 4c0
|
||||||
Explodes:
|
Explodes:
|
||||||
@@ -87,31 +80,12 @@ HARVESTER:
|
|||||||
AttractsWorms:
|
AttractsWorms:
|
||||||
Intensity: 700
|
Intensity: 700
|
||||||
|
|
||||||
HARVESTER.Husk:
|
trike:
|
||||||
Inherits: ^Husk
|
|
||||||
Health:
|
|
||||||
HP: 150
|
|
||||||
Tooltip:
|
|
||||||
Name: Destroyed Spice Harvester
|
|
||||||
RenderUnit:
|
|
||||||
Image: harvester.destroyed
|
|
||||||
TransformOnCapture:
|
|
||||||
IntoActor: harvester
|
|
||||||
|
|
||||||
HARVESTER.starport:
|
|
||||||
Inherits: HARVESTER
|
|
||||||
Buildable:
|
|
||||||
Prerequisites: ~starport
|
|
||||||
Queue: Starport
|
|
||||||
Valued:
|
|
||||||
Cost: 1500
|
|
||||||
|
|
||||||
TRIKE:
|
|
||||||
Inherits: ^Vehicle
|
Inherits: ^Vehicle
|
||||||
Buildable:
|
Buildable:
|
||||||
Queue: Vehicle
|
Queue: Vehicle
|
||||||
BuildPaletteOrder: 10
|
BuildPaletteOrder: 10
|
||||||
Prerequisites: ~trikes
|
Prerequisites: ~light.regulartrikes
|
||||||
Valued:
|
Valued:
|
||||||
Cost: 250
|
Cost: 250
|
||||||
Tooltip:
|
Tooltip:
|
||||||
@@ -142,21 +116,11 @@ TRIKE:
|
|||||||
AttractsWorms:
|
AttractsWorms:
|
||||||
Intensity: 420
|
Intensity: 420
|
||||||
|
|
||||||
TRIKE.starport:
|
quad:
|
||||||
Inherits: TRIKE
|
|
||||||
Buildable:
|
|
||||||
Queue: Starport
|
|
||||||
Prerequisites: starport
|
|
||||||
Valued:
|
|
||||||
Cost: 315
|
|
||||||
RenderUnit:
|
|
||||||
Image: TRIKE
|
|
||||||
|
|
||||||
QUAD:
|
|
||||||
Inherits: ^Vehicle
|
Inherits: ^Vehicle
|
||||||
Buildable:
|
Buildable:
|
||||||
Queue: Vehicle
|
Queue: Vehicle
|
||||||
Prerequisites: ~light, radar, ~techlevel.medium
|
Prerequisites: radar, ~techlevel.medium
|
||||||
BuildPaletteOrder: 20
|
BuildPaletteOrder: 20
|
||||||
Valued:
|
Valued:
|
||||||
Cost: 400
|
Cost: 400
|
||||||
@@ -185,70 +149,11 @@ QUAD:
|
|||||||
AttractsWorms:
|
AttractsWorms:
|
||||||
Intensity: 470
|
Intensity: 470
|
||||||
|
|
||||||
QUAD.starport:
|
siegetank:
|
||||||
Inherits: QUAD
|
|
||||||
Buildable:
|
|
||||||
Prerequisites: starport
|
|
||||||
Queue: Starport
|
|
||||||
Valued:
|
|
||||||
Cost: 500
|
|
||||||
RenderUnit:
|
|
||||||
Image: QUAD
|
|
||||||
|
|
||||||
^COMBAT:
|
|
||||||
Inherits: ^Tank
|
Inherits: ^Tank
|
||||||
Buildable:
|
Buildable:
|
||||||
Queue: Armor
|
Queue: Armor
|
||||||
BuildPaletteOrder: 40
|
Prerequisites: radar, ~techlevel.medium
|
||||||
Valued:
|
|
||||||
Cost: 700
|
|
||||||
Tooltip:
|
|
||||||
Name: Combat Tank
|
|
||||||
Description: Main Battle Tank\n Strong vs Tanks\n Weak vs Infantry, Aircraft\n \n Atreides: +Range\n Harkonnen: +Health\n Ordos: +Speed
|
|
||||||
Health:
|
|
||||||
HP: 350
|
|
||||||
Armor:
|
|
||||||
Type: Heavy
|
|
||||||
Mobile:
|
|
||||||
Speed: 64
|
|
||||||
ROT: 6
|
|
||||||
Crushes: crate, infantry
|
|
||||||
RevealsShroud:
|
|
||||||
Range: 7c0
|
|
||||||
Turreted:
|
|
||||||
ROT: 6
|
|
||||||
RealignDelay: 0
|
|
||||||
Armament:
|
|
||||||
Weapon: 90mm
|
|
||||||
Recoil: 128
|
|
||||||
RecoilRecovery: 32
|
|
||||||
LocalOffset: 256,0,0
|
|
||||||
MuzzleSequence: muzzle
|
|
||||||
AttackTurreted:
|
|
||||||
WithMuzzleFlash:
|
|
||||||
RenderUnit:
|
|
||||||
WithTurret:
|
|
||||||
AutoTarget:
|
|
||||||
Explodes:
|
|
||||||
Weapon: UnitExplodeSmall
|
|
||||||
EmptyWeapon: UnitExplodeSmall
|
|
||||||
Selectable:
|
|
||||||
Bounds: 30,30
|
|
||||||
AttractsWorms:
|
|
||||||
Intensity: 520
|
|
||||||
|
|
||||||
^COMBAT.Husk:
|
|
||||||
Inherits: ^Husk
|
|
||||||
Health:
|
|
||||||
HP: 100
|
|
||||||
ThrowsParticle@turret:
|
|
||||||
Anim: turret
|
|
||||||
|
|
||||||
SIEGETANK:
|
|
||||||
Inherits: ^Tank
|
|
||||||
Buildable:
|
|
||||||
Queue: Armor
|
|
||||||
Prerequisites: ~heavy, radar, ~techlevel.medium
|
|
||||||
BuildPaletteOrder: 50
|
BuildPaletteOrder: 50
|
||||||
Valued:
|
Valued:
|
||||||
Cost: 850
|
Cost: 850
|
||||||
@@ -287,29 +192,11 @@ SIEGETANK:
|
|||||||
Selectable:
|
Selectable:
|
||||||
Bounds: 30,30
|
Bounds: 30,30
|
||||||
LeavesHusk:
|
LeavesHusk:
|
||||||
HuskActor: Siegetank.Husk
|
HuskActor: siegetank.husk
|
||||||
AttractsWorms:
|
AttractsWorms:
|
||||||
Intensity: 600
|
Intensity: 600
|
||||||
|
|
||||||
SIEGETANK.Husk:
|
missiletank:
|
||||||
Inherits: ^Husk
|
|
||||||
Tooltip:
|
|
||||||
ThrowsParticle@turret:
|
|
||||||
Anim: turret
|
|
||||||
RenderUnit:
|
|
||||||
Image: siegetank.destroyed
|
|
||||||
TransformOnCapture:
|
|
||||||
IntoActor: siegetank
|
|
||||||
|
|
||||||
SIEGETANK.starport:
|
|
||||||
Inherits: SIEGETANK
|
|
||||||
Buildable:
|
|
||||||
Prerequisites: starport
|
|
||||||
Queue: Starport
|
|
||||||
Valued:
|
|
||||||
Cost: 1075
|
|
||||||
|
|
||||||
MISSILETANK:
|
|
||||||
Inherits: ^Tank
|
Inherits: ^Tank
|
||||||
Valued:
|
Valued:
|
||||||
Cost: 1000
|
Cost: 1000
|
||||||
@@ -318,7 +205,7 @@ MISSILETANK:
|
|||||||
Description: Rocket Artillery\n Strong vs Vehicles, Buildings\n Weak vs Infantry, Aircraft
|
Description: Rocket Artillery\n Strong vs Vehicles, Buildings\n Weak vs Infantry, Aircraft
|
||||||
Buildable:
|
Buildable:
|
||||||
Queue: Armor
|
Queue: Armor
|
||||||
Prerequisites: ~heavy, hightech, ~techlevel.high
|
Prerequisites: hightech, ~techlevel.high
|
||||||
BuildPaletteOrder: 60
|
BuildPaletteOrder: 60
|
||||||
Mobile:
|
Mobile:
|
||||||
Speed: 64
|
Speed: 64
|
||||||
@@ -329,8 +216,6 @@ MISSILETANK:
|
|||||||
Type: Light
|
Type: Light
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 9c0
|
Range: 9c0
|
||||||
RenderUnit:
|
|
||||||
Image: MISSILETANK
|
|
||||||
Armament:
|
Armament:
|
||||||
Weapon: 227mm
|
Weapon: 227mm
|
||||||
LocalOffset: -213,128,171, -213,-256,171
|
LocalOffset: -213,128,171, -213,-256,171
|
||||||
@@ -344,22 +229,251 @@ MISSILETANK:
|
|||||||
Selectable:
|
Selectable:
|
||||||
Bounds: 30,30
|
Bounds: 30,30
|
||||||
LeavesHusk:
|
LeavesHusk:
|
||||||
HuskActor: Missiletank.Husk
|
HuskActor: missiletank.husk
|
||||||
AttractsWorms:
|
AttractsWorms:
|
||||||
Intensity: 600
|
Intensity: 600
|
||||||
|
|
||||||
MISSILETANK.Husk:
|
sonictank:
|
||||||
Inherits: ^Husk
|
Inherits: ^Vehicle
|
||||||
RenderUnit:
|
|
||||||
Image: missiletank.destroyed
|
|
||||||
TransformOnCapture:
|
|
||||||
IntoActor: missiletank
|
|
||||||
|
|
||||||
MISSILETANK.starport:
|
|
||||||
Inherits: MISSILETANK
|
|
||||||
Buildable:
|
Buildable:
|
||||||
Prerequisites: starport
|
Queue: Armor
|
||||||
Queue: Starport
|
BuildPaletteOrder: 100
|
||||||
|
Prerequisites: ~heavy.atreides, research, ~techlevel.high
|
||||||
Valued:
|
Valued:
|
||||||
Cost: 1250
|
Cost: 1250
|
||||||
|
Tooltip:
|
||||||
|
Name: Sonic Tank
|
||||||
|
Description: Fires sonic shocks\n Strong vs Infantry, Vehicles\n Weak vs Artillery, Aircraft
|
||||||
|
Selectable:
|
||||||
|
Bounds: 30,30
|
||||||
|
Health:
|
||||||
|
HP: 130
|
||||||
|
Armor:
|
||||||
|
Type: Light
|
||||||
|
Mobile:
|
||||||
|
ROT: 3
|
||||||
|
Speed: 74
|
||||||
|
RevealsShroud:
|
||||||
|
Range: 6c0
|
||||||
|
Armament:
|
||||||
|
Weapon: Sound
|
||||||
|
LocalOffset: 640,0,427
|
||||||
|
AttackFrontal:
|
||||||
|
AutoTarget:
|
||||||
|
Explodes:
|
||||||
|
Weapon: UnitExplodeSmall
|
||||||
|
EmptyWeapon: UnitExplodeSmall
|
||||||
|
LeavesHusk:
|
||||||
|
HuskActor: sonictank.husk
|
||||||
|
AttractsWorms:
|
||||||
|
Intensity: 600
|
||||||
|
|
||||||
|
devast:
|
||||||
|
Inherits: ^Tank
|
||||||
|
Buildable:
|
||||||
|
Queue: Armor
|
||||||
|
BuildPaletteOrder: 100
|
||||||
|
Prerequisites: ~heavy.harkonnen, research, ~techlevel.high
|
||||||
|
Valued:
|
||||||
|
Cost: 1200
|
||||||
|
Tooltip:
|
||||||
|
Name: Devastator
|
||||||
|
Description: Super Heavy Tank\n Strong vs Tanks\n Weak vs Artillery, Aircraft
|
||||||
|
Health:
|
||||||
|
HP: 650
|
||||||
|
Armor:
|
||||||
|
Type: Heavy
|
||||||
|
Mobile:
|
||||||
|
ROT: 3
|
||||||
|
Speed: 42
|
||||||
|
Crushes: crate, infantry
|
||||||
|
RevealsShroud:
|
||||||
|
Range: 7c0
|
||||||
|
RenderUnit:
|
||||||
|
Armament:
|
||||||
|
Weapon: DevBullet
|
||||||
|
LocalOffset: 256,0,32
|
||||||
|
MuzzleSequence: muzzle
|
||||||
|
AttackFrontal:
|
||||||
|
WithMuzzleFlash:
|
||||||
|
AutoTarget:
|
||||||
|
Explodes:
|
||||||
|
Weapon: UnitExplodeScale
|
||||||
|
EmptyWeapon: UnitExplodeScale
|
||||||
|
Selectable:
|
||||||
|
Bounds: 44,38,0,0
|
||||||
|
LeavesHusk:
|
||||||
|
HuskActor: devast.husk
|
||||||
|
AttractsWorms:
|
||||||
|
Intensity: 700
|
||||||
|
|
||||||
|
raider:
|
||||||
|
Inherits: ^Vehicle
|
||||||
|
Buildable:
|
||||||
|
Queue: Vehicle
|
||||||
|
BuildPaletteOrder: 10
|
||||||
|
Prerequisites: ~light.ordos
|
||||||
|
Valued:
|
||||||
|
Cost: 300
|
||||||
|
Tooltip:
|
||||||
|
Name: Raider Trike
|
||||||
|
Description: Improved Scout\n Strong vs Infantry, Light Vehicles
|
||||||
|
Selectable:
|
||||||
|
Bounds: 24,24
|
||||||
|
Health:
|
||||||
|
HP: 110
|
||||||
|
Armor:
|
||||||
|
Type: Light
|
||||||
|
Mobile:
|
||||||
|
ROT: 10
|
||||||
|
Speed: 149
|
||||||
|
RevealsShroud:
|
||||||
|
Range: 7c0
|
||||||
|
WithMuzzleFlash:
|
||||||
|
Armament:
|
||||||
|
Weapon: HMGo
|
||||||
|
LocalOffset: 256,0,128
|
||||||
|
MuzzleSequence: muzzle
|
||||||
|
AttackFrontal:
|
||||||
|
AutoTarget:
|
||||||
|
Explodes:
|
||||||
|
Weapon: UnitExplodeTiny
|
||||||
|
EmptyWeapon: UnitExplodeTiny
|
||||||
|
AttractsWorms:
|
||||||
|
Intensity: 420
|
||||||
|
|
||||||
|
stealthraider:
|
||||||
|
Inherits: raider
|
||||||
|
Buildable:
|
||||||
|
Prerequisites: ~light.ordos, hightech, ~techlevel.medium
|
||||||
|
BuildPaletteOrder: 30
|
||||||
|
Valued:
|
||||||
|
Cost: 400
|
||||||
|
Tooltip:
|
||||||
|
Name: Stealth Raider Trike
|
||||||
|
Description: Invisible Raider Trike\n Strong vs Infantry, Light Vehicles
|
||||||
|
Cloak:
|
||||||
|
InitialDelay: 45
|
||||||
|
CloakDelay: 90
|
||||||
|
CloakSound: STEALTH1.WAV
|
||||||
|
UncloakSound: STEALTH2.WAV
|
||||||
|
AutoTarget:
|
||||||
|
InitialStance: HoldFire
|
||||||
|
-MustBeDestroyed:
|
||||||
|
|
||||||
|
deviatortank:
|
||||||
|
Inherits: ^Tank
|
||||||
|
Valued:
|
||||||
|
Cost: 1000
|
||||||
|
Tooltip:
|
||||||
|
Name: Deviator
|
||||||
|
Description: Fires a warhead which changes\nthe allegiance of enemy vehicles
|
||||||
|
Buildable:
|
||||||
|
Queue: Armor
|
||||||
|
BuildPaletteOrder: 50
|
||||||
|
Prerequisites: ~heavy.ordos, research, ~techlevel.high
|
||||||
|
Mobile:
|
||||||
|
ROT: 3
|
||||||
|
Speed: 64
|
||||||
|
Health:
|
||||||
|
HP: 125
|
||||||
|
Armor:
|
||||||
|
Type: Light
|
||||||
|
RevealsShroud:
|
||||||
|
Range: 5c0
|
||||||
|
RenderUnit:
|
||||||
|
Armament:
|
||||||
|
Weapon: NerveGasMissile
|
||||||
|
LocalOffset: -299,0,85
|
||||||
|
AttackFrontal:
|
||||||
|
AutoTarget:
|
||||||
|
InitialStance: Defend
|
||||||
|
Explodes:
|
||||||
|
Weapon: UnitExplodeSmall
|
||||||
|
EmptyWeapon: UnitExplodeSmall
|
||||||
|
Selectable:
|
||||||
|
Bounds: 30,30
|
||||||
|
LeavesHusk:
|
||||||
|
HuskActor: deviatortank.husk
|
||||||
|
AttractsWorms:
|
||||||
|
Intensity: 600
|
||||||
|
|
||||||
|
^combat:
|
||||||
|
Inherits: ^Tank
|
||||||
|
Buildable:
|
||||||
|
Queue: Armor
|
||||||
|
BuildPaletteOrder: 40
|
||||||
|
Valued:
|
||||||
|
Cost: 700
|
||||||
|
Tooltip:
|
||||||
|
Name: Combat Tank
|
||||||
|
Description: Main Battle Tank\n Strong vs Tanks\n Weak vs Infantry, Aircraft\n \n Atreides: +Range\n Harkonnen: +Health\n Ordos: +Speed
|
||||||
|
Health:
|
||||||
|
HP: 350
|
||||||
|
Armor:
|
||||||
|
Type: Heavy
|
||||||
|
Mobile:
|
||||||
|
Speed: 64
|
||||||
|
ROT: 6
|
||||||
|
Crushes: crate, infantry
|
||||||
|
RevealsShroud:
|
||||||
|
Range: 8c0
|
||||||
|
Turreted:
|
||||||
|
ROT: 6
|
||||||
|
RealignDelay: 0
|
||||||
|
Armament:
|
||||||
|
Weapon: 90mm
|
||||||
|
Recoil: 128
|
||||||
|
RecoilRecovery: 32
|
||||||
|
LocalOffset: 256,0,0
|
||||||
|
MuzzleSequence: muzzle
|
||||||
|
AttackTurreted:
|
||||||
|
WithMuzzleFlash:
|
||||||
|
RenderUnit:
|
||||||
|
WithTurret:
|
||||||
|
AutoTarget:
|
||||||
|
Explodes:
|
||||||
|
Weapon: UnitExplodeSmall
|
||||||
|
EmptyWeapon: UnitExplodeSmall
|
||||||
|
Selectable:
|
||||||
|
Bounds: 30,30
|
||||||
|
AttractsWorms:
|
||||||
|
Intensity: 520
|
||||||
|
|
||||||
|
combata:
|
||||||
|
Inherits: ^combat
|
||||||
|
Buildable:
|
||||||
|
Prerequisites: ~heavy.atreides
|
||||||
|
Armament:
|
||||||
|
Weapon: 90mma
|
||||||
|
LeavesHusk:
|
||||||
|
HuskActor: combata.husk
|
||||||
|
|
||||||
|
combath:
|
||||||
|
Inherits: ^combat
|
||||||
|
Buildable:
|
||||||
|
Prerequisites: ~heavy.harkonnen
|
||||||
|
Mobile:
|
||||||
|
Speed: 53
|
||||||
|
ROT: 4
|
||||||
|
Turreted:
|
||||||
|
ROT: 5
|
||||||
|
RevealsShroud:
|
||||||
|
Range: 7c0
|
||||||
|
Health:
|
||||||
|
HP: 440
|
||||||
|
LeavesHusk:
|
||||||
|
HuskActor: combath.husk
|
||||||
|
|
||||||
|
combato:
|
||||||
|
Inherits: ^combat
|
||||||
|
Buildable:
|
||||||
|
Prerequisites: ~heavy.ordos
|
||||||
|
Turreted:
|
||||||
|
ROT: 8
|
||||||
|
Mobile:
|
||||||
|
Speed: 96
|
||||||
|
ROT: 8
|
||||||
|
Crushes: crate, infantry
|
||||||
|
LeavesHusk:
|
||||||
|
HuskActor: combato.husk
|
||||||
|
|||||||
@@ -103,6 +103,10 @@ World:
|
|||||||
Country@Ordos:
|
Country@Ordos:
|
||||||
Name: Ordos
|
Name: Ordos
|
||||||
Race: ordos
|
Race: ordos
|
||||||
|
Country@Corrino:
|
||||||
|
Name: Corrino
|
||||||
|
Race: corrino
|
||||||
|
Selectable: false
|
||||||
DomainIndex:
|
DomainIndex:
|
||||||
PathfinderDebugOverlay:
|
PathfinderDebugOverlay:
|
||||||
TerrainGeometryOverlay:
|
TerrainGeometryOverlay:
|
||||||
@@ -132,26 +136,16 @@ World:
|
|||||||
SpawnMapActors:
|
SpawnMapActors:
|
||||||
CreateMPPlayers:
|
CreateMPPlayers:
|
||||||
MPStartLocations:
|
MPStartLocations:
|
||||||
MPStartUnits@mcvatreides:
|
MPStartUnits@mcv:
|
||||||
Class: none
|
Class: none
|
||||||
ClassName: MCV Only
|
ClassName: MCV Only
|
||||||
Races: atreides
|
BaseActor: mcv
|
||||||
BaseActor: mcva
|
Races: atreides, ordos, harkonnen
|
||||||
MPStartUnits@mcvharkonnen:
|
|
||||||
Class: none
|
|
||||||
Races: harkonnen
|
|
||||||
ClassName: MCV Only
|
|
||||||
BaseActor: mcvh
|
|
||||||
MPStartUnits@mcvordos:
|
|
||||||
Class: none
|
|
||||||
ClassName: MCV Only
|
|
||||||
Races: ordos
|
|
||||||
BaseActor: mcvo
|
|
||||||
MPStartUnits@lightatreides:
|
MPStartUnits@lightatreides:
|
||||||
Class: light
|
Class: light
|
||||||
ClassName: Light Support
|
ClassName: Light Support
|
||||||
Races: atreides
|
Races: atreides
|
||||||
BaseActor: mcva
|
BaseActor: mcv
|
||||||
SupportActors: rifle, rifle, rifle, bazooka, grenadier, trike, quad
|
SupportActors: rifle, rifle, rifle, bazooka, grenadier, trike, quad
|
||||||
InnerSupportRadius: 3
|
InnerSupportRadius: 3
|
||||||
OuterSupportRadius: 5
|
OuterSupportRadius: 5
|
||||||
@@ -159,7 +153,7 @@ World:
|
|||||||
Class: light
|
Class: light
|
||||||
ClassName: Light Support
|
ClassName: Light Support
|
||||||
Races: harkonnen
|
Races: harkonnen
|
||||||
BaseActor: mcvh
|
BaseActor: mcv
|
||||||
SupportActors: rifle, rifle, rifle, bazooka, bazooka, trike, quad
|
SupportActors: rifle, rifle, rifle, bazooka, bazooka, trike, quad
|
||||||
InnerSupportRadius: 3
|
InnerSupportRadius: 3
|
||||||
OuterSupportRadius: 5
|
OuterSupportRadius: 5
|
||||||
@@ -167,7 +161,7 @@ World:
|
|||||||
Class: light
|
Class: light
|
||||||
ClassName: Light Support
|
ClassName: Light Support
|
||||||
Races: ordos
|
Races: ordos
|
||||||
BaseActor: mcvo
|
BaseActor: mcv
|
||||||
SupportActors: rifle, rifle, rifle, bazooka, engineer, raider, quad
|
SupportActors: rifle, rifle, rifle, bazooka, engineer, raider, quad
|
||||||
InnerSupportRadius: 3
|
InnerSupportRadius: 3
|
||||||
OuterSupportRadius: 5
|
OuterSupportRadius: 5
|
||||||
@@ -175,7 +169,7 @@ World:
|
|||||||
Class: heavy
|
Class: heavy
|
||||||
ClassName: Heavy Support
|
ClassName: Heavy Support
|
||||||
Races: atreides
|
Races: atreides
|
||||||
BaseActor: mcva
|
BaseActor: mcv
|
||||||
SupportActors: rifle, rifle, rifle, bazooka, grenadier, trike, combata, missiletank
|
SupportActors: rifle, rifle, rifle, bazooka, grenadier, trike, combata, missiletank
|
||||||
InnerSupportRadius: 3
|
InnerSupportRadius: 3
|
||||||
OuterSupportRadius: 5
|
OuterSupportRadius: 5
|
||||||
@@ -183,7 +177,7 @@ World:
|
|||||||
Class: heavy
|
Class: heavy
|
||||||
ClassName: Heavy Support
|
ClassName: Heavy Support
|
||||||
Races: harkonnen
|
Races: harkonnen
|
||||||
BaseActor: mcvh
|
BaseActor: mcv
|
||||||
SupportActors: rifle, rifle, rifle, bazooka, engineer, quad, combath, siegetank
|
SupportActors: rifle, rifle, rifle, bazooka, engineer, quad, combath, siegetank
|
||||||
InnerSupportRadius: 3
|
InnerSupportRadius: 3
|
||||||
OuterSupportRadius: 5
|
OuterSupportRadius: 5
|
||||||
@@ -191,7 +185,7 @@ World:
|
|||||||
Class: heavy
|
Class: heavy
|
||||||
ClassName: Heavy Support
|
ClassName: Heavy Support
|
||||||
Races: ordos
|
Races: ordos
|
||||||
BaseActor: mcvo
|
BaseActor: mcv
|
||||||
SupportActors: rifle, rifle, rifle, bazooka, engineer, raider, combato, missiletank
|
SupportActors: rifle, rifle, rifle, bazooka, engineer, raider, combato, missiletank
|
||||||
InnerSupportRadius: 3
|
InnerSupportRadius: 3
|
||||||
OuterSupportRadius: 5
|
OuterSupportRadius: 5
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ concreteb:
|
|||||||
Start:4053
|
Start:4053
|
||||||
Offset: -30,-24
|
Offset: -30,-24
|
||||||
|
|
||||||
walla:
|
wall:
|
||||||
idle: DATA
|
idle: DATA
|
||||||
Frames: 2527, 2530, 2528, 2538, 2531, 2532, 2542, 2535, 2529, 2539, 2533, 2534, 2540, 2536, 2537, 2541
|
Frames: 2527, 2530, 2528, 2538, 2531, 2532, 2542, 2535, 2529, 2539, 2533, 2534, 2540, 2536, 2537, 2541
|
||||||
Length: 16
|
Length: 16
|
||||||
@@ -21,33 +21,7 @@ walla:
|
|||||||
Start: 4063
|
Start: 4063
|
||||||
Offset: -30,-24
|
Offset: -30,-24
|
||||||
|
|
||||||
wallh:
|
guntower:
|
||||||
idle: DATA
|
|
||||||
Frames: 2687, 2690, 2688, 2698, 2691, 2692, 2702, 2695, 2689, 2699, 2693, 2694, 2700, 2696, 2697, 2701
|
|
||||||
Length: 16
|
|
||||||
Offset: -16,16
|
|
||||||
damaged-idle: DATA
|
|
||||||
Frames: 2703, 2706, 2704, 2714, 2707, 2708, 2718, 2711, 2705, 2715, 2709, 2710, 2716, 2712, 2713, 2717
|
|
||||||
Length: 16
|
|
||||||
Offset: -16,16
|
|
||||||
icon: DATA
|
|
||||||
Start: 4064
|
|
||||||
Offset: -30,-24
|
|
||||||
|
|
||||||
wallo:
|
|
||||||
idle: DATA
|
|
||||||
Frames: 2847, 2850, 2848, 2858, 2851, 2852, 2862, 2855, 2849, 2859, 2853, 2854, 2860, 2856, 2857, 2861
|
|
||||||
Length: 16
|
|
||||||
Offset: -16,16
|
|
||||||
damaged-idle: DATA
|
|
||||||
Frames: 2863, 2866, 2864, 2874, 2867, 2868, 2878, 2871, 2865, 2875, 2869, 2870, 2876, 2872, 2873, 2877
|
|
||||||
Length: 16
|
|
||||||
Offset: -16,16
|
|
||||||
icon: DATA
|
|
||||||
Start: 4065
|
|
||||||
Offset: -30,-24
|
|
||||||
|
|
||||||
guntowera:
|
|
||||||
idle: DATA
|
idle: DATA
|
||||||
Frames: 2573, 2576, 2574, 2584, 2577, 2578, 2588, 2581, 2575, 2585, 2579, 2580, 2586, 2582, 2583, 2587
|
Frames: 2573, 2576, 2574, 2584, 2577, 2578, 2588, 2581, 2575, 2585, 2579, 2580, 2586, 2582, 2583, 2587
|
||||||
Length: 16
|
Length: 16
|
||||||
@@ -70,53 +44,7 @@ guntowera:
|
|||||||
Start: 4069
|
Start: 4069
|
||||||
Offset: -30,-24
|
Offset: -30,-24
|
||||||
|
|
||||||
guntowerh:
|
rockettower:
|
||||||
idle: DATA
|
|
||||||
Frames: 2733, 2736, 2734, 2744, 2737, 2738, 2748, 2741, 2735, 2745, 2739, 2740, 2746, 2742, 2743, 2747
|
|
||||||
Length: 16
|
|
||||||
Offset: -24,16
|
|
||||||
damaged-idle: DATA
|
|
||||||
Frames: 2781, 2784, 2782, 2792, 2785, 2786, 2796, 2789, 2783, 2793, 2787, 2788, 2794, 2790, 2791, 2795
|
|
||||||
Length: 16
|
|
||||||
Offset: -24,16
|
|
||||||
turret: DATA
|
|
||||||
Start: 2749
|
|
||||||
Facings: -32
|
|
||||||
Offset: -24,16
|
|
||||||
muzzle: DATA
|
|
||||||
Frames: 3839, 3839, 3840, 3840, 3841, 3841, 3842, 3842, 3843, 3843, 3844, 3844, 3845, 3845, 3846, 3846, 3847, 3847, 3848, 3848, 3849, 3849, 3850, 3850, 3851, 3851, 3852, 3852, 3853, 3853, 3854, 3854, 3855, 3855, 3856, 3856, 3857, 3857, 3858, 3858, 3859, 3859, 3860, 3860, 3861, 3861, 3862, 3862, 3863, 3863, 3864, 3864, 3865, 3865, 3866, 3866, 3867, 3867, 3868, 3868, 3869, 3869, 3870, 3870
|
|
||||||
Facings: -32
|
|
||||||
Length: 2
|
|
||||||
Offset: 0,-12
|
|
||||||
BlendMode: Additive
|
|
||||||
icon: DATA
|
|
||||||
Frames: 4070
|
|
||||||
Offset: -30,-24
|
|
||||||
|
|
||||||
guntowero:
|
|
||||||
idle: DATA
|
|
||||||
Frames: 2893, 2896, 2894, 2904, 2897, 2898, 2908, 2901, 2895, 2905, 2899, 2900, 2906, 2902, 2903, 2907
|
|
||||||
Length: 16
|
|
||||||
Offset: -24,16
|
|
||||||
damaged-idle: DATA
|
|
||||||
Frames: 2941, 2944, 2942, 2952, 2945, 2946, 2956, 2949, 2943, 2953, 2947, 2948, 2954, 2950, 2951, 2955
|
|
||||||
Length: 16
|
|
||||||
Offset: -24,16
|
|
||||||
turret: DATA
|
|
||||||
Start: 2909
|
|
||||||
Facings: -32
|
|
||||||
Offset: -24,16
|
|
||||||
muzzle: DATA
|
|
||||||
Frames: 3839, 3839, 3840, 3840, 3841, 3841, 3842, 3842, 3843, 3843, 3844, 3844, 3845, 3845, 3846, 3846, 3847, 3847, 3848, 3848, 3849, 3849, 3850, 3850, 3851, 3851, 3852, 3852, 3853, 3853, 3854, 3854, 3855, 3855, 3856, 3856, 3857, 3857, 3858, 3858, 3859, 3859, 3860, 3860, 3861, 3861, 3862, 3862, 3863, 3863, 3864, 3864, 3865, 3865, 3866, 3866, 3867, 3867, 3868, 3868, 3869, 3869, 3870, 3870
|
|
||||||
Facings: -32
|
|
||||||
Length: 2
|
|
||||||
Offset: 0,-12
|
|
||||||
BlendMode: Additive
|
|
||||||
icon: DATA
|
|
||||||
Start: 4071
|
|
||||||
Offset: -30,-24
|
|
||||||
|
|
||||||
rockettowera:
|
|
||||||
idle: DATA
|
idle: DATA
|
||||||
Frames: 2573, 2576, 2574, 2584, 2577, 2578, 2588, 2581, 2575, 2585, 2579, 2580, 2586, 2582, 2583, 2587
|
Frames: 2573, 2576, 2574, 2584, 2577, 2578, 2588, 2581, 2575, 2585, 2579, 2580, 2586, 2582, 2583, 2587
|
||||||
Length: 16
|
Length: 16
|
||||||
@@ -133,41 +61,7 @@ rockettowera:
|
|||||||
Start: 4075
|
Start: 4075
|
||||||
Offset: -30,-24
|
Offset: -30,-24
|
||||||
|
|
||||||
rockettowerh:
|
conyard.atreides:
|
||||||
idle: DATA
|
|
||||||
Frames: 2733, 2736, 2734, 2744, 2737, 2738, 2748, 2741, 2735, 2745, 2739, 2740, 2746, 2742, 2743, 2747
|
|
||||||
Length: 16
|
|
||||||
Offset: -24,16
|
|
||||||
damaged-idle: DATA
|
|
||||||
Frames: 2781, 2784, 2782, 2792, 2785, 2786, 2796, 2789, 2783, 2793, 2787, 2788, 2794, 2790, 2791, 2795
|
|
||||||
Length: 16
|
|
||||||
Offset: -24,16
|
|
||||||
turret: DATA
|
|
||||||
Start: 2797
|
|
||||||
Facings: -32
|
|
||||||
Offset: -24,16
|
|
||||||
icon: DATA
|
|
||||||
Start: 4076
|
|
||||||
Offset: -30,-24
|
|
||||||
|
|
||||||
rockettowero:
|
|
||||||
idle: DATA
|
|
||||||
Frames: 2893, 2896, 2894, 2904, 2897, 2898, 2908, 2901, 2895, 2905, 2899, 2900, 2906, 2902, 2903, 2907
|
|
||||||
Length: 16
|
|
||||||
Offset: -24,16
|
|
||||||
damaged-idle: DATA
|
|
||||||
Frames: 2941, 2944, 2942, 2952, 2945, 2946, 2956, 2949, 2943, 2953, 2947, 2948, 2954, 2950, 2951, 2955
|
|
||||||
Length: 16
|
|
||||||
Offset: -24,16
|
|
||||||
turret: DATA
|
|
||||||
Start: 2957
|
|
||||||
Facings: -32
|
|
||||||
Offset: -24,16
|
|
||||||
icon: DATA
|
|
||||||
Start: 4077
|
|
||||||
Offset: -30,-24
|
|
||||||
|
|
||||||
conyarda:
|
|
||||||
idle: DATA
|
idle: DATA
|
||||||
Start: 2559
|
Start: 2559
|
||||||
Offset: -48,64
|
Offset: -48,64
|
||||||
@@ -205,7 +99,7 @@ conyarda:
|
|||||||
Start: 4046
|
Start: 4046
|
||||||
Offset: -30,-24
|
Offset: -30,-24
|
||||||
|
|
||||||
repaira:
|
repair.atreides:
|
||||||
make: DATA
|
make: DATA
|
||||||
Start: 4370
|
Start: 4370
|
||||||
Length: 10
|
Length: 10
|
||||||
@@ -240,7 +134,7 @@ repaira:
|
|||||||
Start: 4096
|
Start: 4096
|
||||||
Offset: -30,-24
|
Offset: -30,-24
|
||||||
|
|
||||||
repairh:
|
repair.harkonnen:
|
||||||
make: DATA
|
make: DATA
|
||||||
Start: 4370
|
Start: 4370
|
||||||
Length: 10
|
Length: 10
|
||||||
@@ -275,7 +169,7 @@ repairh:
|
|||||||
Start: 4097
|
Start: 4097
|
||||||
Offset: -30,-24
|
Offset: -30,-24
|
||||||
|
|
||||||
repairo:
|
repair.ordos:
|
||||||
make: DATA
|
make: DATA
|
||||||
Start: 4370
|
Start: 4370
|
||||||
Length: 10
|
Length: 10
|
||||||
@@ -310,7 +204,7 @@ repairo:
|
|||||||
Start: 4098
|
Start: 4098
|
||||||
Offset: -30,-24
|
Offset: -30,-24
|
||||||
|
|
||||||
starporta:
|
starport.atreides:
|
||||||
idle: DATA
|
idle: DATA
|
||||||
Start: 2671
|
Start: 2671
|
||||||
ZOffset: -1c511
|
ZOffset: -1c511
|
||||||
@@ -354,7 +248,7 @@ starporta:
|
|||||||
Start: 4092
|
Start: 4092
|
||||||
Offset: -30,-24
|
Offset: -30,-24
|
||||||
|
|
||||||
pwra:
|
power.atreides:
|
||||||
idle: DATA
|
idle: DATA
|
||||||
Start: 2523
|
Start: 2523
|
||||||
Offset: -32,64
|
Offset: -32,64
|
||||||
@@ -392,7 +286,7 @@ pwra:
|
|||||||
Start: 4056
|
Start: 4056
|
||||||
Offset: -30,-24
|
Offset: -30,-24
|
||||||
|
|
||||||
barra:
|
barracks.atreides:
|
||||||
idle: DATA
|
idle: DATA
|
||||||
Start: 2525
|
Start: 2525
|
||||||
Offset: -32,64
|
Offset: -32,64
|
||||||
@@ -420,7 +314,7 @@ barra:
|
|||||||
Start: 4059
|
Start: 4059
|
||||||
Offset: -30,-24
|
Offset: -30,-24
|
||||||
|
|
||||||
radara:
|
radar.atreides:
|
||||||
idle: DATA
|
idle: DATA
|
||||||
Start: 2521
|
Start: 2521
|
||||||
Offset: -48,80
|
Offset: -48,80
|
||||||
@@ -452,7 +346,7 @@ radara:
|
|||||||
Start: 4072
|
Start: 4072
|
||||||
Offset: -30,-24
|
Offset: -30,-24
|
||||||
|
|
||||||
refa:
|
refinery.atreides:
|
||||||
idle: DATA
|
idle: DATA
|
||||||
Start: 2561
|
Start: 2561
|
||||||
Length: 1
|
Length: 1
|
||||||
@@ -493,7 +387,7 @@ refa:
|
|||||||
Tick: 200
|
Tick: 200
|
||||||
BlendMode: Additive
|
BlendMode: Additive
|
||||||
|
|
||||||
siloa:
|
silo.atreides:
|
||||||
idle: DATA
|
idle: DATA
|
||||||
Start: 2566
|
Start: 2566
|
||||||
Length: 4
|
Length: 4
|
||||||
@@ -515,7 +409,7 @@ siloa:
|
|||||||
Start: 4084
|
Start: 4084
|
||||||
Offset: -30,-24
|
Offset: -30,-24
|
||||||
|
|
||||||
hightecha:
|
hightech.atreides:
|
||||||
idle: DATA
|
idle: DATA
|
||||||
Start: 2564
|
Start: 2564
|
||||||
Offset: -48,80
|
Offset: -48,80
|
||||||
@@ -549,7 +443,7 @@ hightecha:
|
|||||||
Start: 4078
|
Start: 4078
|
||||||
Offset: -30,-24
|
Offset: -30,-24
|
||||||
|
|
||||||
researcha:
|
research.atreides:
|
||||||
idle: DATA
|
idle: DATA
|
||||||
Start: 2669
|
Start: 2669
|
||||||
Offset: -48,80
|
Offset: -48,80
|
||||||
@@ -582,7 +476,7 @@ researcha:
|
|||||||
Start: 4099
|
Start: 4099
|
||||||
Offset: -30,-24
|
Offset: -30,-24
|
||||||
|
|
||||||
researchh:
|
research.harkonnen:
|
||||||
idle: DATA
|
idle: DATA
|
||||||
Start: 2829
|
Start: 2829
|
||||||
Offset: -48,80
|
Offset: -48,80
|
||||||
@@ -615,7 +509,7 @@ researchh:
|
|||||||
Start: 4100
|
Start: 4100
|
||||||
Offset: -30,-24
|
Offset: -30,-24
|
||||||
|
|
||||||
researcho:
|
research.ordos:
|
||||||
idle: DATA
|
idle: DATA
|
||||||
Start: 2989
|
Start: 2989
|
||||||
Offset: -48,80
|
Offset: -48,80
|
||||||
@@ -648,7 +542,7 @@ researcho:
|
|||||||
Start: 4101
|
Start: 4101
|
||||||
Offset: -30,-24
|
Offset: -30,-24
|
||||||
|
|
||||||
palacea:
|
palace.atreides:
|
||||||
idle: DATA
|
idle: DATA
|
||||||
Start: 2676
|
Start: 2676
|
||||||
Offset: -48,48
|
Offset: -48,48
|
||||||
@@ -676,7 +570,7 @@ palacea:
|
|||||||
Start: 4102
|
Start: 4102
|
||||||
Offset: -30,-24
|
Offset: -30,-24
|
||||||
|
|
||||||
lighta:
|
light.atreides:
|
||||||
idle: DATA
|
idle: DATA
|
||||||
Start: 2673
|
Start: 2673
|
||||||
Length: 1
|
Length: 1
|
||||||
@@ -718,7 +612,7 @@ lighta:
|
|||||||
Start: 4081
|
Start: 4081
|
||||||
Offset: -30,-24
|
Offset: -30,-24
|
||||||
|
|
||||||
heavya:
|
heavy.atreides:
|
||||||
idle: DATA
|
idle: DATA
|
||||||
Start: 2518
|
Start: 2518
|
||||||
Length: 1
|
Length: 1
|
||||||
@@ -761,7 +655,7 @@ heavya:
|
|||||||
Start: 4087
|
Start: 4087
|
||||||
Offset: -30,-24
|
Offset: -30,-24
|
||||||
|
|
||||||
conyardh:
|
conyard.harkonnen:
|
||||||
idle: DATA
|
idle: DATA
|
||||||
Start: 2719
|
Start: 2719
|
||||||
Offset: -48,64
|
Offset: -48,64
|
||||||
@@ -799,7 +693,7 @@ conyardh:
|
|||||||
Start: 4047
|
Start: 4047
|
||||||
Offset: -30,-24
|
Offset: -30,-24
|
||||||
|
|
||||||
starporth:
|
starport.harkonnen:
|
||||||
idle: DATA
|
idle: DATA
|
||||||
Start: 2831
|
Start: 2831
|
||||||
ZOffset: -1c511
|
ZOffset: -1c511
|
||||||
@@ -843,7 +737,7 @@ starporth:
|
|||||||
Start: 4093
|
Start: 4093
|
||||||
Offset: -30,-24
|
Offset: -30,-24
|
||||||
|
|
||||||
pwrh:
|
power.harkonnen:
|
||||||
idle: DATA
|
idle: DATA
|
||||||
Start: 2683
|
Start: 2683
|
||||||
Offset: -32,64
|
Offset: -32,64
|
||||||
@@ -881,7 +775,7 @@ pwrh:
|
|||||||
Start: 4057
|
Start: 4057
|
||||||
Offset: -30,-24
|
Offset: -30,-24
|
||||||
|
|
||||||
barrh:
|
barracks.harkonnen:
|
||||||
idle: DATA
|
idle: DATA
|
||||||
Start: 2685
|
Start: 2685
|
||||||
Offset: -32,64
|
Offset: -32,64
|
||||||
@@ -909,7 +803,7 @@ barrh:
|
|||||||
Start: 4060
|
Start: 4060
|
||||||
Offset: -30,-24
|
Offset: -30,-24
|
||||||
|
|
||||||
radarh:
|
radar.harkonnen:
|
||||||
idle: DATA
|
idle: DATA
|
||||||
Start: 2681
|
Start: 2681
|
||||||
Offset: -48,80
|
Offset: -48,80
|
||||||
@@ -941,7 +835,7 @@ radarh:
|
|||||||
Start: 4073
|
Start: 4073
|
||||||
Offset: -30,-24
|
Offset: -30,-24
|
||||||
|
|
||||||
refh:
|
refinery.harkonnen:
|
||||||
idle: DATA
|
idle: DATA
|
||||||
Start: 2721
|
Start: 2721
|
||||||
Length: 1
|
Length: 1
|
||||||
@@ -982,7 +876,7 @@ refh:
|
|||||||
Tick: 200
|
Tick: 200
|
||||||
BlendMode: Additive
|
BlendMode: Additive
|
||||||
|
|
||||||
siloh:
|
silo.harkonnen:
|
||||||
idle: DATA
|
idle: DATA
|
||||||
Start: 2726
|
Start: 2726
|
||||||
Length: 4
|
Length: 4
|
||||||
@@ -1004,7 +898,7 @@ siloh:
|
|||||||
Start: 4085
|
Start: 4085
|
||||||
Offset: -30,-24
|
Offset: -30,-24
|
||||||
|
|
||||||
hightechh:
|
hightech.harkonnen:
|
||||||
idle: DATA
|
idle: DATA
|
||||||
Start: 2724
|
Start: 2724
|
||||||
Offset: -48,80
|
Offset: -48,80
|
||||||
@@ -1038,7 +932,7 @@ hightechh:
|
|||||||
Start: 4079
|
Start: 4079
|
||||||
Offset: -30,-24
|
Offset: -30,-24
|
||||||
|
|
||||||
palaceh:
|
palace.harkonnen:
|
||||||
idle: DATA
|
idle: DATA
|
||||||
Start: 2836
|
Start: 2836
|
||||||
Offset: -48,48
|
Offset: -48,48
|
||||||
@@ -1074,7 +968,7 @@ palaceh:
|
|||||||
Start: 4103
|
Start: 4103
|
||||||
Offset: -30,-24
|
Offset: -30,-24
|
||||||
|
|
||||||
lighth:
|
light.harkonnen:
|
||||||
idle: DATA
|
idle: DATA
|
||||||
Start: 2833
|
Start: 2833
|
||||||
Length: 1
|
Length: 1
|
||||||
@@ -1116,7 +1010,7 @@ lighth:
|
|||||||
Start: 4082
|
Start: 4082
|
||||||
Offset: -30,-24
|
Offset: -30,-24
|
||||||
|
|
||||||
heavyh:
|
heavy.harkonnen:
|
||||||
idle: DATA
|
idle: DATA
|
||||||
Start: 2678
|
Start: 2678
|
||||||
Length: 1
|
Length: 1
|
||||||
@@ -1159,7 +1053,7 @@ heavyh:
|
|||||||
Start: 4088
|
Start: 4088
|
||||||
Offset: -30,-24
|
Offset: -30,-24
|
||||||
|
|
||||||
conyardo:
|
conyard.ordos:
|
||||||
idle: DATA
|
idle: DATA
|
||||||
Start: 2879
|
Start: 2879
|
||||||
Offset: -48,64
|
Offset: -48,64
|
||||||
@@ -1197,7 +1091,7 @@ conyardo:
|
|||||||
Start: 4048
|
Start: 4048
|
||||||
Offset: -30,-24
|
Offset: -30,-24
|
||||||
|
|
||||||
starporto:
|
starport.ordos:
|
||||||
idle: DATA
|
idle: DATA
|
||||||
Start: 2991
|
Start: 2991
|
||||||
Offset: -48,48
|
Offset: -48,48
|
||||||
@@ -1241,7 +1135,7 @@ starporto:
|
|||||||
Start: 4094
|
Start: 4094
|
||||||
Offset: -30,-24
|
Offset: -30,-24
|
||||||
|
|
||||||
pwro:
|
power.ordos:
|
||||||
idle: DATA
|
idle: DATA
|
||||||
Start: 2843
|
Start: 2843
|
||||||
Length: 1
|
Length: 1
|
||||||
@@ -1280,7 +1174,7 @@ pwro:
|
|||||||
Start: 4058
|
Start: 4058
|
||||||
Offset: -30,-24
|
Offset: -30,-24
|
||||||
|
|
||||||
barro:
|
barracks.ordos:
|
||||||
idle: DATA
|
idle: DATA
|
||||||
Start: 2845
|
Start: 2845
|
||||||
Offset: -32,64
|
Offset: -32,64
|
||||||
@@ -1308,7 +1202,7 @@ barro:
|
|||||||
Start: 4061
|
Start: 4061
|
||||||
Offset: -30,-24
|
Offset: -30,-24
|
||||||
|
|
||||||
radaro:
|
radar.ordos:
|
||||||
idle: DATA
|
idle: DATA
|
||||||
Start: 2841
|
Start: 2841
|
||||||
Offset: -48,80
|
Offset: -48,80
|
||||||
@@ -1340,7 +1234,7 @@ radaro:
|
|||||||
Start: 4074
|
Start: 4074
|
||||||
Offset: -30,-24
|
Offset: -30,-24
|
||||||
|
|
||||||
refo:
|
refinery.ordos:
|
||||||
idle: DATA
|
idle: DATA
|
||||||
Start: 2881
|
Start: 2881
|
||||||
Length: 1
|
Length: 1
|
||||||
@@ -1381,7 +1275,7 @@ refo:
|
|||||||
Tick: 200
|
Tick: 200
|
||||||
BlendMode: Additive
|
BlendMode: Additive
|
||||||
|
|
||||||
siloo:
|
silo.ordos:
|
||||||
idle: DATA
|
idle: DATA
|
||||||
Start: 2886
|
Start: 2886
|
||||||
Length: 4
|
Length: 4
|
||||||
@@ -1403,7 +1297,7 @@ siloo:
|
|||||||
Start: 4086
|
Start: 4086
|
||||||
Offset: -30,-24
|
Offset: -30,-24
|
||||||
|
|
||||||
hightecho:
|
hightech.ordos:
|
||||||
idle: DATA
|
idle: DATA
|
||||||
Start: 2884
|
Start: 2884
|
||||||
Offset: -48,80
|
Offset: -48,80
|
||||||
@@ -1437,7 +1331,7 @@ hightecho:
|
|||||||
Start: 4080
|
Start: 4080
|
||||||
Offset: -30,-24
|
Offset: -30,-24
|
||||||
|
|
||||||
palaceo:
|
palace.ordos:
|
||||||
idle: DATA
|
idle: DATA
|
||||||
Start: 2996
|
Start: 2996
|
||||||
Offset: -48,48
|
Offset: -48,48
|
||||||
@@ -1465,7 +1359,7 @@ palaceo:
|
|||||||
Start: 4104
|
Start: 4104
|
||||||
Offset: -30,-24
|
Offset: -30,-24
|
||||||
|
|
||||||
lighto:
|
light.ordos:
|
||||||
idle: DATA
|
idle: DATA
|
||||||
Start: 2993
|
Start: 2993
|
||||||
Length: 1
|
Length: 1
|
||||||
@@ -1507,7 +1401,7 @@ lighto:
|
|||||||
Start: 4083
|
Start: 4083
|
||||||
Offset: -30,-24
|
Offset: -30,-24
|
||||||
|
|
||||||
heavyo:
|
heavy.ordos:
|
||||||
idle: DATA
|
idle: DATA
|
||||||
Start: 2838
|
Start: 2838
|
||||||
Length: 1
|
Length: 1
|
||||||
@@ -1550,7 +1444,7 @@ heavyo:
|
|||||||
Start: 4089
|
Start: 4089
|
||||||
Offset: -30,-24
|
Offset: -30,-24
|
||||||
|
|
||||||
palacec:
|
palace.corrino:
|
||||||
idle: DATA
|
idle: DATA
|
||||||
Start: 3004
|
Start: 3004
|
||||||
Offset: -48,48
|
Offset: -48,48
|
||||||
@@ -1577,7 +1471,7 @@ palacec:
|
|||||||
Offset: -48,48
|
Offset: -48,48
|
||||||
Tick: 100
|
Tick: 100
|
||||||
|
|
||||||
starportc:
|
starport.corrino:
|
||||||
idle: DATA
|
idle: DATA
|
||||||
Start: 2999
|
Start: 2999
|
||||||
Offset: -48,48
|
Offset: -48,48
|
||||||
@@ -1621,7 +1515,7 @@ starportc:
|
|||||||
Start: 4020
|
Start: 4020
|
||||||
Offset: -30,-24
|
Offset: -30,-24
|
||||||
|
|
||||||
heavyc:
|
heavy.corrino:
|
||||||
idle: DATA
|
idle: DATA
|
||||||
Start: 3001
|
Start: 3001
|
||||||
Length: 1
|
Length: 1
|
||||||
@@ -1664,44 +1558,6 @@ heavyc:
|
|||||||
Start: 4020
|
Start: 4020
|
||||||
Offset: -30,-24
|
Offset: -30,-24
|
||||||
|
|
||||||
conyardc:
|
|
||||||
idle: DATA
|
|
||||||
Start: 3006
|
|
||||||
Offset: -48,64
|
|
||||||
make: DATA
|
|
||||||
Start: 4109
|
|
||||||
Length: 30
|
|
||||||
Offset: -48,64
|
|
||||||
crumble-overlay: DATA
|
|
||||||
Start: 4139
|
|
||||||
Length: 12
|
|
||||||
Offset: -48,64
|
|
||||||
Tick: 200
|
|
||||||
damaged-idle: DATA
|
|
||||||
Start: 3007
|
|
||||||
Offset: -48,64
|
|
||||||
crane-overlay: DATA
|
|
||||||
Start: 4478
|
|
||||||
Length: 14
|
|
||||||
Offset: -48,64
|
|
||||||
Tick: 80
|
|
||||||
damaged-crane-overlay: DATA
|
|
||||||
Start: 4478
|
|
||||||
Length: 14
|
|
||||||
Offset: -48,64
|
|
||||||
Tick: 80
|
|
||||||
bib: BLOXBASE
|
|
||||||
Frames: 611, 612, 613, 631, 632, 633
|
|
||||||
Length: 6
|
|
||||||
Offset: -16,-16
|
|
||||||
bib-Concrete: BLOXBASE
|
|
||||||
Frames: 643, 644, 645, 663, 664, 665
|
|
||||||
Length: 6
|
|
||||||
Offset: -16,-16
|
|
||||||
icon: DATA
|
|
||||||
Start: 4049
|
|
||||||
Offset: -30,-24
|
|
||||||
|
|
||||||
plates: # TODO: unused
|
plates: # TODO: unused
|
||||||
idle: DATA
|
idle: DATA
|
||||||
Start: 3008
|
Start: 3008
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
dmcv:
|
mcv:
|
||||||
idle: DATA
|
idle: DATA
|
||||||
Start: 1795
|
Start: 1795
|
||||||
Facings: -32
|
Facings: -32
|
||||||
@@ -6,7 +6,7 @@ dmcv:
|
|||||||
Start: 4023
|
Start: 4023
|
||||||
Offset: -30,-24
|
Offset: -30,-24
|
||||||
|
|
||||||
dmcv.destroyed:
|
mcv.husk:
|
||||||
idle: DATA
|
idle: DATA
|
||||||
Start: 1795
|
Start: 1795
|
||||||
Facings: -32
|
Facings: -32
|
||||||
@@ -32,7 +32,7 @@ harvester:
|
|||||||
Start: 4019
|
Start: 4019
|
||||||
Offset: -30,-24
|
Offset: -30,-24
|
||||||
|
|
||||||
harvester.destroyed:
|
harvester.husk:
|
||||||
idle: DATA
|
idle: DATA
|
||||||
Start: 1699
|
Start: 1699
|
||||||
Facings: -32
|
Facings: -32
|
||||||
@@ -80,7 +80,7 @@ siegetank:
|
|||||||
Start: 4026
|
Start: 4026
|
||||||
Offset: -30,-24
|
Offset: -30,-24
|
||||||
|
|
||||||
siegetank.destroyed:
|
siegetank.husk:
|
||||||
idle: DATA
|
idle: DATA
|
||||||
Start: 1763
|
Start: 1763
|
||||||
Facings: -32
|
Facings: -32
|
||||||
@@ -98,7 +98,7 @@ missiletank:
|
|||||||
Start: 4024
|
Start: 4024
|
||||||
Offset: -30,-24
|
Offset: -30,-24
|
||||||
|
|
||||||
missiletank.destroyed:
|
missiletank.husk:
|
||||||
idle: DATA
|
idle: DATA
|
||||||
Start: 1603
|
Start: 1603
|
||||||
Facings: -32
|
Facings: -32
|
||||||
@@ -112,7 +112,7 @@ sonictank:
|
|||||||
Start: 4027
|
Start: 4027
|
||||||
Offset: -30,-24
|
Offset: -30,-24
|
||||||
|
|
||||||
sonictank.destroyed:
|
sonictank.husk:
|
||||||
idle: DATA
|
idle: DATA
|
||||||
Start: 1827
|
Start: 1827
|
||||||
Facings: -32
|
Facings: -32
|
||||||
@@ -134,7 +134,7 @@ combata:
|
|||||||
Start: 4020
|
Start: 4020
|
||||||
Offset: -30,-24
|
Offset: -30,-24
|
||||||
|
|
||||||
combata.destroyed:
|
combata.husk:
|
||||||
idle: DATA
|
idle: DATA
|
||||||
Start: 1731
|
Start: 1731
|
||||||
Facings: -32
|
Facings: -32
|
||||||
@@ -160,7 +160,7 @@ combath:
|
|||||||
Start: 4021
|
Start: 4021
|
||||||
Offset: -30,-24
|
Offset: -30,-24
|
||||||
|
|
||||||
combath.destroyed:
|
combath.husk:
|
||||||
idle: DATA
|
idle: DATA
|
||||||
Start: 2051
|
Start: 2051
|
||||||
Facings: -32
|
Facings: -32
|
||||||
@@ -170,25 +170,6 @@ combath.destroyed:
|
|||||||
Facings: -32
|
Facings: -32
|
||||||
ZOffset: -512
|
ZOffset: -512
|
||||||
|
|
||||||
devast:
|
|
||||||
idle: DATA
|
|
||||||
Start: 2083
|
|
||||||
Facings: -32
|
|
||||||
muzzle: DATA
|
|
||||||
Frames: 3807, 3807, 3808, 3808, 3809, 3809, 3810, 3810, 3810, 3811, 3811, 3812, 3812, 3813, 3813, 3814, 3814, 3815, 3816, 3816, 3817, 3817, 3818, 3819, 3819, 3820, 3820, 3821, 3821, 3822, 3822, 3823, 3823, 3824, 3824, 3825, 3825, 3826, 3826, 3827, 3827, 3828, 3828, 3829, 3829, 3830, 3830, 3831, 3831, 3832, 3832, 3832, 3833, 3833, 3834, 3834, 3835, 3835, 3836, 3836, 3837, 3837, 3838, 3838
|
|
||||||
Facings: -32
|
|
||||||
Length: 2
|
|
||||||
BlendMode: Additive
|
|
||||||
icon: DATA
|
|
||||||
Start: 4028
|
|
||||||
Offset: -30,-24
|
|
||||||
|
|
||||||
devast.destroyed:
|
|
||||||
idle: DATA
|
|
||||||
Start: 2083
|
|
||||||
Facings: -32
|
|
||||||
ZOffset: -512
|
|
||||||
|
|
||||||
combato:
|
combato:
|
||||||
idle: DATA
|
idle: DATA
|
||||||
Start: 2453
|
Start: 2453
|
||||||
@@ -205,7 +186,7 @@ combato:
|
|||||||
Start: 4022
|
Start: 4022
|
||||||
Offset: -30,-24
|
Offset: -30,-24
|
||||||
|
|
||||||
combato.destroyed:
|
combato.husk:
|
||||||
idle: DATA
|
idle: DATA
|
||||||
Start: 2453
|
Start: 2453
|
||||||
Facings: -32
|
Facings: -32
|
||||||
@@ -215,6 +196,25 @@ combato.destroyed:
|
|||||||
Facings: -32
|
Facings: -32
|
||||||
ZOffset: -512
|
ZOffset: -512
|
||||||
|
|
||||||
|
devast:
|
||||||
|
idle: DATA
|
||||||
|
Start: 2083
|
||||||
|
Facings: -32
|
||||||
|
muzzle: DATA
|
||||||
|
Frames: 3807, 3807, 3808, 3808, 3809, 3809, 3810, 3810, 3810, 3811, 3811, 3812, 3812, 3813, 3813, 3814, 3814, 3815, 3816, 3816, 3817, 3817, 3818, 3819, 3819, 3820, 3820, 3821, 3821, 3822, 3822, 3823, 3823, 3824, 3824, 3825, 3825, 3826, 3826, 3827, 3827, 3828, 3828, 3829, 3829, 3830, 3830, 3831, 3831, 3832, 3832, 3832, 3833, 3833, 3834, 3834, 3835, 3835, 3836, 3836, 3837, 3837, 3838, 3838
|
||||||
|
Facings: -32
|
||||||
|
Length: 2
|
||||||
|
BlendMode: Additive
|
||||||
|
icon: DATA
|
||||||
|
Start: 4028
|
||||||
|
Offset: -30,-24
|
||||||
|
|
||||||
|
devast.husk:
|
||||||
|
idle: DATA
|
||||||
|
Start: 2083
|
||||||
|
Facings: -32
|
||||||
|
ZOffset: -512
|
||||||
|
|
||||||
raider:
|
raider:
|
||||||
idle: DATA
|
idle: DATA
|
||||||
Start: 2421
|
Start: 2421
|
||||||
@@ -254,7 +254,7 @@ deviatortank:
|
|||||||
Start: 4025
|
Start: 4025
|
||||||
Offset: -30,-24
|
Offset: -30,-24
|
||||||
|
|
||||||
deviatortank.destroyed:
|
deviatortank.husk:
|
||||||
idle: DATA
|
idle: DATA
|
||||||
Start: 2389
|
Start: 2389
|
||||||
Facings: -32
|
Facings: -32
|
||||||
|
|||||||
@@ -308,7 +308,7 @@ MCV:
|
|||||||
Offset: -1,-1
|
Offset: -1,-1
|
||||||
Facing: 96
|
Facing: 96
|
||||||
TransformSounds: placbldg.aud, build5.aud
|
TransformSounds: placbldg.aud, build5.aud
|
||||||
NoTransformSounds: nodeply1.aud
|
NoTransformNotification: BuildingCannotPlaceAudio
|
||||||
RenderUnit:
|
RenderUnit:
|
||||||
MustBeDestroyed:
|
MustBeDestroyed:
|
||||||
RequiredForShortGame: true
|
RequiredForShortGame: true
|
||||||
|
|||||||
Reference in New Issue
Block a user