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"))
|
||||
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
|
||||
{
|
||||
Image = template.Bitmap,
|
||||
|
||||
@@ -46,9 +46,9 @@ namespace OpenRA.Editor
|
||||
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))
|
||||
{
|
||||
var shp = new ShpTDSprite(s);
|
||||
|
||||
@@ -42,6 +42,11 @@ namespace OpenRA.Graphics
|
||||
return seq;
|
||||
}
|
||||
|
||||
public bool HasSequence(string unitName)
|
||||
{
|
||||
return sequences.Value.ContainsKey(unitName);
|
||||
}
|
||||
|
||||
public bool HasSequence(string unitName, string sequenceName)
|
||||
{
|
||||
UnitSequences unitSeq;
|
||||
|
||||
@@ -102,4 +102,14 @@ namespace OpenRA
|
||||
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 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
|
||||
.WithInterface<CountryInfo>().Where(c => c.Selectable)
|
||||
.WithInterface<CountryInfo>().Where(c => !requireSelectable || c.Selectable)
|
||||
.ToList();
|
||||
|
||||
return selectableCountries.FirstOrDefault(c => c.Race == name)
|
||||
@@ -82,7 +82,7 @@ namespace OpenRA
|
||||
Playable = pr.Playable;
|
||||
Spectating = pr.Spectating;
|
||||
botType = pr.Bot;
|
||||
Country = ChooseCountry(world, pr.Race);
|
||||
Country = ChooseCountry(world, pr.Race, false);
|
||||
}
|
||||
|
||||
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));
|
||||
}
|
||||
|
||||
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
|
||||
@@ -50,9 +50,11 @@ namespace OpenRA.Traits
|
||||
|
||||
[Sync] public int QuantizedFacings { get { return quantizedFacings.Value; } }
|
||||
|
||||
public BodyOrientation(Actor self, BodyOrientationInfo info)
|
||||
public BodyOrientation(ActorInitializer init, BodyOrientationInfo info)
|
||||
{
|
||||
this.info = info;
|
||||
var self = init.Self;
|
||||
var race = init.Contains<RaceInit>() ? init.Get<RaceInit, string>() : self.Owner.Country.Race;
|
||||
|
||||
quantizedFacings = Exts.Lazy(() =>
|
||||
{
|
||||
@@ -64,7 +66,7 @@ namespace OpenRA.Traits
|
||||
if (qboi == null)
|
||||
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);
|
||||
}
|
||||
|
||||
public interface IQuantizeBodyOrientationInfo { int QuantizedBodyFacings(SequenceProvider sequenceProvider, ActorInfo ai); }
|
||||
public interface IQuantizeBodyOrientationInfo { int QuantizedBodyFacings(ActorInfo ai, SequenceProvider sequenceProvider, string race); }
|
||||
|
||||
public interface ITargetableInfo
|
||||
{
|
||||
@@ -334,6 +334,6 @@ namespace OpenRA.Traits
|
||||
public interface ILegacyEditorRenderInfo
|
||||
{
|
||||
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.")]
|
||||
[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
|
||||
{
|
||||
public ProductionAirdrop(ProductionAirdropInfo info, Actor self)
|
||||
: base(info, self) { }
|
||||
public ProductionAirdrop(ActorInitializer init, ProductionAirdropInfo info)
|
||||
: base(init, info) { }
|
||||
|
||||
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 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;
|
||||
}
|
||||
@@ -38,27 +38,27 @@ namespace OpenRA.Mods.Cnc.Traits
|
||||
{
|
||||
Animation left, right;
|
||||
|
||||
public RenderGunboat(Actor self, RenderGunboatInfo info)
|
||||
: base(self)
|
||||
public RenderGunboat(ActorInitializer init, RenderGunboatInfo info)
|
||||
: base(init, info)
|
||||
{
|
||||
var name = GetImage(self);
|
||||
var facing = self.Trait<IFacing>();
|
||||
var turret = self.TraitsImplementing<Turreted>()
|
||||
var name = GetImage(init.Self);
|
||||
var facing = init.Self.Trait<IFacing>();
|
||||
var turret = init.Self.TraitsImplementing<Turreted>()
|
||||
.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);
|
||||
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);
|
||||
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);
|
||||
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);
|
||||
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 int Facing = 96;
|
||||
public string[] Sounds = { };
|
||||
public string Notification = null;
|
||||
public int ForceHealthPercentage = 0;
|
||||
public bool SkipMakeAnims = false;
|
||||
public string Race = null;
|
||||
@@ -51,6 +52,8 @@ namespace OpenRA.Mods.Common.Activities
|
||||
foreach (var s in Sounds)
|
||||
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
|
||||
{
|
||||
new LocationInit(self.Location + Offset),
|
||||
|
||||
@@ -15,7 +15,6 @@ using OpenRA.Graphics;
|
||||
using OpenRA.Mods.Common.Graphics;
|
||||
using OpenRA.Mods.Common.Traits;
|
||||
using OpenRA.Primitives;
|
||||
using OpenRA.Traits;
|
||||
|
||||
namespace OpenRA.Mods.Common.Orders
|
||||
{
|
||||
@@ -24,10 +23,12 @@ namespace OpenRA.Mods.Common.Orders
|
||||
readonly Actor producer;
|
||||
readonly string building;
|
||||
readonly BuildingInfo buildingInfo;
|
||||
readonly string race;
|
||||
readonly Sprite buildOk;
|
||||
readonly Sprite buildBlocked;
|
||||
IActorPreview[] preview;
|
||||
|
||||
Sprite buildOk, buildBlocked;
|
||||
bool initialized = false;
|
||||
bool initialized;
|
||||
|
||||
public PlaceBuildingOrderGenerator(ProductionQueue queue, string name)
|
||||
{
|
||||
@@ -40,7 +41,12 @@ namespace OpenRA.Mods.Common.Orders
|
||||
|
||||
var map = producer.World.Map;
|
||||
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);
|
||||
buildBlocked = map.SequenceProvider.GetSequence("overlay", "build-invalid").GetSprite(0);
|
||||
@@ -122,7 +128,12 @@ namespace OpenRA.Mods.Common.Orders
|
||||
{
|
||||
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>()
|
||||
.SelectMany(rpi => rpi.RenderPreview(init))
|
||||
.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.")]
|
||||
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
|
||||
public readonly int BuildPaletteOrder = 9999;
|
||||
}
|
||||
|
||||
@@ -74,6 +74,16 @@ namespace OpenRA.Mods.Common.Traits
|
||||
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)
|
||||
{
|
||||
// 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()))
|
||||
{
|
||||
if (p.Trait.Produce(p.Actor, ai, Race))
|
||||
if (p.Trait.Produce(p.Actor, ai, p.Trait.Race))
|
||||
{
|
||||
FinishProduction();
|
||||
return true;
|
||||
|
||||
@@ -38,8 +38,14 @@ namespace OpenRA.Mods.Common.Traits
|
||||
if (queue == null)
|
||||
return;
|
||||
|
||||
var producer = queue.MostLikelyProducer();
|
||||
var race = producer.Trait != null ? producer.Trait.Race : self.Owner.Country.Race;
|
||||
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")
|
||||
{
|
||||
var playSounds = true;
|
||||
@@ -49,7 +55,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
{
|
||||
new LocationInit(t),
|
||||
new OwnerInit(order.Player),
|
||||
new RaceInit(queue.Race)
|
||||
new RaceInit(race)
|
||||
});
|
||||
|
||||
if (playSounds)
|
||||
@@ -69,14 +75,16 @@ namespace OpenRA.Mods.Common.Traits
|
||||
{
|
||||
new LocationInit(order.TargetLocation),
|
||||
new OwnerInit(order.Player),
|
||||
new RaceInit(queue.Race),
|
||||
new RaceInit(race),
|
||||
});
|
||||
|
||||
foreach (var s in buildingInfo.BuildSounds)
|
||||
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();
|
||||
|
||||
@@ -84,9 +92,9 @@ namespace OpenRA.Mods.Common.Traits
|
||||
{
|
||||
// May be null if the build anywhere cheat is active
|
||||
// BuildingInfo.IsCloseEnoughToBase has already verified that this is a valid build location
|
||||
var producer = buildingInfo.FindBaseProvider(w, self.Owner, order.TargetLocation);
|
||||
if (producer != null)
|
||||
producer.Trait<BaseProvider>().BeginCooldown();
|
||||
var provider = buildingInfo.FindBaseProvider(w, self.Owner, order.TargetLocation);
|
||||
if (provider != null)
|
||||
provider.Trait<BaseProvider>().BeginCooldown();
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
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>()
|
||||
.Where(a => a.Actor.Owner == p)
|
||||
|
||||
@@ -79,7 +79,6 @@ namespace OpenRA.Mods.Common.Traits
|
||||
Dictionary<ActorInfo, ProductionState> produceable;
|
||||
List<ProductionItem> queue = new List<ProductionItem>();
|
||||
|
||||
// A list of things we are currently building
|
||||
public Actor Actor { get { return self; } }
|
||||
|
||||
[Sync] public int QueueLength { get { return queue.Count; } }
|
||||
@@ -361,6 +360,13 @@ namespace OpenRA.Mods.Common.Traits
|
||||
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)
|
||||
// Returns false if the unit can't be built
|
||||
protected virtual bool BuildUnit(string name)
|
||||
|
||||
@@ -74,14 +74,4 @@ namespace OpenRA.Mods.Common.Traits
|
||||
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")]
|
||||
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
|
||||
{
|
||||
Lazy<RallyPoint> rp;
|
||||
readonly Lazy<RallyPoint> rp;
|
||||
|
||||
public ProductionInfo Info;
|
||||
public Production(ProductionInfo info, Actor self)
|
||||
public string Race { get; private set; }
|
||||
|
||||
public Production(ActorInitializer init, ProductionInfo 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)
|
||||
@@ -50,6 +53,10 @@ namespace OpenRA.Mods.Common.Traits
|
||||
var exitLocation = rp.Value != null ? rp.Value.Location : exit;
|
||||
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 =>
|
||||
{
|
||||
var td = new TypeDictionary
|
||||
@@ -86,7 +93,6 @@ namespace OpenRA.Mods.Common.Traits
|
||||
foreach (var notify in notifyOthers)
|
||||
notify.Trait.UnitProducedByOther(notify.Actor, self, newUnit);
|
||||
|
||||
var bi = newUnit.Info.Traits.GetOrDefault<BuildableInfo>();
|
||||
if (bi != null && bi.InitialActivity != null)
|
||||
newUnit.QueueActivity(Game.CreateObject<Activity>(bi.InitialActivity));
|
||||
|
||||
|
||||
@@ -41,7 +41,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
: this(init, info, () => 0) { }
|
||||
|
||||
public RenderBuilding(ActorInitializer init, RenderBuildingInfo info, Func<int> baseFacing)
|
||||
: base(init.Self, baseFacing)
|
||||
: base(init, info, baseFacing)
|
||||
{
|
||||
var self = init.Self;
|
||||
this.info = info;
|
||||
|
||||
@@ -16,12 +16,13 @@ namespace OpenRA.Mods.Common.Traits
|
||||
[Desc("Invisible during games.")]
|
||||
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
|
||||
{
|
||||
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; }
|
||||
}
|
||||
|
||||
@@ -12,13 +12,13 @@ namespace OpenRA.Mods.Common.Traits
|
||||
{
|
||||
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
|
||||
{
|
||||
public RenderFlare(Actor self)
|
||||
: base(self, () => 0)
|
||||
public RenderFlare(ActorInitializer init, RenderFlareInfo info)
|
||||
: base(init, info, () => 0)
|
||||
{
|
||||
DefaultAnimation.PlayThen("open", () => DefaultAnimation.PlayRepeating("idle"));
|
||||
}
|
||||
|
||||
@@ -17,7 +17,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
class RenderHarvesterInfo : RenderUnitInfo, Requires<HarvesterInfo>
|
||||
{
|
||||
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
|
||||
@@ -25,15 +25,15 @@ namespace OpenRA.Mods.Common.Traits
|
||||
Harvester harv;
|
||||
RenderHarvesterInfo info;
|
||||
|
||||
public RenderHarvester(Actor self, RenderHarvesterInfo info)
|
||||
: base(self)
|
||||
public RenderHarvester(ActorInitializer init, RenderHarvesterInfo info)
|
||||
: base(init, info)
|
||||
{
|
||||
this.info = info;
|
||||
harv = self.Trait<Harvester>();
|
||||
harv = init.Self.Trait<Harvester>();
|
||||
|
||||
// HACK: Force images to be loaded up-front
|
||||
foreach (var image in info.ImagesByFullness)
|
||||
new Animation(self.World, image);
|
||||
new Animation(init.World, image);
|
||||
}
|
||||
|
||||
public override void Tick(Actor self)
|
||||
|
||||
@@ -25,7 +25,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
public readonly string[] IdleAnimations = { };
|
||||
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)
|
||||
{
|
||||
@@ -39,9 +39,9 @@ namespace OpenRA.Mods.Common.Traits
|
||||
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 wasModifying;
|
||||
|
||||
public RenderInfantry(Actor self, RenderInfantryInfo info)
|
||||
: base(self, MakeFacingFunc(self))
|
||||
public RenderInfantry(ActorInitializer init, RenderInfantryInfo info)
|
||||
: base(init, info, MakeFacingFunc(init.Self))
|
||||
{
|
||||
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;
|
||||
move = self.Trait<IMove>();
|
||||
rsm = self.TraitOrDefault<IRenderInfantrySequenceModifier>();
|
||||
move = init.Self.Trait<IMove>();
|
||||
rsm = init.Self.TraitOrDefault<IRenderInfantrySequenceModifier>();
|
||||
}
|
||||
|
||||
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 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)
|
||||
{
|
||||
@@ -30,30 +30,30 @@ namespace OpenRA.Mods.Common.Traits
|
||||
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 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 readonly Animation DefaultAnimation;
|
||||
|
||||
public RenderSimple(Actor self, Func<int> baseFacing)
|
||||
: base(self)
|
||||
public RenderSimple(ActorInitializer init, RenderSimpleInfo info, Func<int> baseFacing)
|
||||
: base(init, info)
|
||||
{
|
||||
DefaultAnimation = new Animation(self.World, GetImage(self), baseFacing);
|
||||
DefaultAnimation = new Animation(init.World, GetImage(init.Self), baseFacing);
|
||||
Add("", DefaultAnimation);
|
||||
}
|
||||
|
||||
public RenderSimple(Actor self)
|
||||
: this(self, MakeFacingFunc(self))
|
||||
public RenderSimple(ActorInitializer init, RenderSimpleInfo info)
|
||||
: 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); }
|
||||
|
||||
@@ -22,33 +22,62 @@ namespace OpenRA.Mods.Common.Traits
|
||||
|
||||
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;
|
||||
|
||||
[FieldLoader.LoadUsing("LoadRaceImages")]
|
||||
[Desc("A dictionary of race-specific image overrides.")]
|
||||
public readonly Dictionary<string, string> RaceImages = null;
|
||||
|
||||
[Desc("Custom palette name")]
|
||||
public readonly string Palette = null;
|
||||
|
||||
[Desc("Custom PlayerColorPalette: BaseName")]
|
||||
public readonly string PlayerPalette = "player";
|
||||
|
||||
[Desc("Change the sprite image size.")]
|
||||
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)
|
||||
{
|
||||
var sequenceProvider = init.World.Map.SequenceProvider;
|
||||
var image = RenderSprites.GetImage(init.Actor);
|
||||
var palette = init.WorldRenderer.Palette(Palette ?? (init.Owner != null ? PlayerPalette + init.Owner.InternalName : null));
|
||||
var race = init.Contains<RaceInit>() ? init.Get<RaceInit, string>() : init.Owner.Country.Race;
|
||||
var image = GetImage(init.Actor, sequenceProvider, race);
|
||||
var palette = init.WorldRenderer.Palette(Palette ?? PlayerPalette + init.Owner.InternalName);
|
||||
|
||||
var facings = 0;
|
||||
var body = init.Actor.Traits.GetOrDefault<BodyOrientationInfo>();
|
||||
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 preview in spi.RenderPreviewSprites(init, this, image, facings, palette))
|
||||
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
|
||||
@@ -88,9 +117,10 @@ namespace OpenRA.Mods.Common.Traits
|
||||
}
|
||||
}
|
||||
|
||||
readonly string race;
|
||||
readonly RenderSpritesInfo info;
|
||||
string cachedImage = null;
|
||||
Dictionary<string, AnimationWrapper> anims = new Dictionary<string, AnimationWrapper>();
|
||||
readonly Dictionary<string, AnimationWrapper> anims = new Dictionary<string, AnimationWrapper>();
|
||||
string cachedImage;
|
||||
|
||||
public static Func<int> MakeFacingFunc(Actor self)
|
||||
{
|
||||
@@ -99,15 +129,10 @@ namespace OpenRA.Mods.Common.Traits
|
||||
return () => facing.Facing;
|
||||
}
|
||||
|
||||
public RenderSprites(Actor self)
|
||||
public RenderSprites(ActorInitializer init, RenderSpritesInfo info)
|
||||
{
|
||||
info = self.Info.Traits.Get<RenderSpritesInfo>();
|
||||
}
|
||||
|
||||
public static string GetImage(ActorInfo actor)
|
||||
{
|
||||
var info = actor.Traits.Get<RenderSpritesInfo>();
|
||||
return (info.Image ?? actor.Name).ToLowerInvariant();
|
||||
this.info = info;
|
||||
race = init.Contains<RaceInit>() ? init.Get<RaceInit, string>() : init.Self.Owner.Country.Race;
|
||||
}
|
||||
|
||||
public string GetImage(Actor self)
|
||||
@@ -115,7 +140,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
if (cachedImage != null)
|
||||
return cachedImage;
|
||||
|
||||
return cachedImage = GetImage(self.Info);
|
||||
return cachedImage = info.GetImage(self.Info, self.World.Map.SequenceProvider, race);
|
||||
}
|
||||
|
||||
protected void UpdatePalette()
|
||||
|
||||
@@ -15,13 +15,13 @@ namespace OpenRA.Mods.Common.Traits
|
||||
{
|
||||
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 RenderUnit(Actor self)
|
||||
: base(self) { }
|
||||
public RenderUnit(ActorInitializer init, RenderUnitInfo info)
|
||||
: base(init, info) { }
|
||||
|
||||
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.")]
|
||||
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;
|
||||
|
||||
[Desc("Facing that the actor must face before transforming.")]
|
||||
public readonly int Facing = 96;
|
||||
|
||||
[Desc("Sounds to play when transforming.")]
|
||||
public readonly string[] TransformSounds = { };
|
||||
|
||||
[Desc("Sounds to play when the transformation is blocked.")]
|
||||
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); }
|
||||
}
|
||||
|
||||
@@ -78,6 +93,8 @@ namespace OpenRA.Mods.Common.Traits
|
||||
foreach (var s in info.NoTransformSounds)
|
||||
Sound.PlayToPlayer(self.Owner, s);
|
||||
|
||||
Sound.PlayNotification(self.World.Map.Rules, self.Owner, "Speech", info.NoTransformNotification, self.Owner.Country.Race);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -90,7 +107,15 @@ namespace OpenRA.Mods.Common.Traits
|
||||
foreach (var nt in self.TraitsImplementing<INotifyTransform>())
|
||||
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>();
|
||||
if (makeAnimation != null)
|
||||
makeAnimation.Reverse(self, transform);
|
||||
|
||||
@@ -67,11 +67,13 @@ namespace OpenRA.Mods.Common.Widgets
|
||||
if (current == null)
|
||||
continue;
|
||||
|
||||
var race = queue.Trait.Actor.Owner.Country.Race;
|
||||
var actor = queue.Trait.AllItems().FirstOrDefault(a => a.Name == current.Item);
|
||||
if (actor == null)
|
||||
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);
|
||||
var location = new float2(RenderBounds.Location) + new float2(queue.i * (IconWidth + IconSpacing), 0);
|
||||
WidgetUtils.DrawSHPCentered(icon.Image, location + 0.5f * iconSize, worldRenderer, 0.5f);
|
||||
|
||||
@@ -252,7 +252,8 @@ namespace OpenRA.Mods.Common.Widgets
|
||||
public void RefreshIcons()
|
||||
{
|
||||
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)
|
||||
{
|
||||
@@ -268,13 +269,16 @@ namespace OpenRA.Mods.Common.Widgets
|
||||
|
||||
var ks = Game.Settings.Keys;
|
||||
var rb = RenderBounds;
|
||||
var race = producer.Trait.Race;
|
||||
|
||||
foreach (var item in AllBuildables.Skip(IconRowOffset * Columns).Take(MaxIconRowOffset * Columns))
|
||||
{
|
||||
var x = 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 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);
|
||||
|
||||
var pi = new ProductionIcon()
|
||||
|
||||
@@ -152,7 +152,8 @@ namespace OpenRA.Mods.D2k.Traits
|
||||
isCarrying = true;
|
||||
|
||||
// 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.IsDecoration = true;
|
||||
}
|
||||
|
||||
@@ -32,225 +32,225 @@ namespace OpenRA.Mods.D2k.UtilityCommands
|
||||
{ 45, Pair.New("spicebloom", "Neutral") },
|
||||
|
||||
// Atreides:
|
||||
{ 4, Pair.New("WALLA", "Atreides") },
|
||||
{ 5, Pair.New("PWRA", "Atreides") },
|
||||
{ 8, Pair.New("CONYARDA", "Atreides") },
|
||||
{ 11, Pair.New("BARRA", "Atreides") },
|
||||
{ 14, Pair.New("REFA", "Atreides") },
|
||||
{ 17, Pair.New("RADARA", "Atreides") },
|
||||
{ 63, Pair.New("LIGHTA", "Atreides") },
|
||||
{ 69, Pair.New("SILOA", "Atreides") },
|
||||
{ 72, Pair.New("HEAVYA", "Atreides") },
|
||||
{ 75, Pair.New("REPAIRA", "Atreides") },
|
||||
{ 78, Pair.New("GUNTOWERA", "Atreides") },
|
||||
{ 120, Pair.New("HIGHTECHA", "Atreides") },
|
||||
{ 123, Pair.New("ROCKETTOWERA", "Atreides") },
|
||||
{ 126, Pair.New("RESEARCHA", "Atreides") },
|
||||
{ 129, Pair.New("STARPORTA", "Atreides") },
|
||||
{ 132, Pair.New("PALACEA", "Atreides") },
|
||||
{ 180, Pair.New("RIFLE", "Atreides") },
|
||||
{ 181, Pair.New("BAZOOKA", "Atreides") },
|
||||
{ 182, Pair.New("FREMEN", "Atreides") },
|
||||
{ 183, Pair.New("SARDAUKAR", "Atreides") },
|
||||
{ 184, Pair.New("ENGINEER", "Atreides") },
|
||||
{ 185, Pair.New("HARVESTER", "Atreides") },
|
||||
{ 186, Pair.New("MCVA", "Atreides") },
|
||||
{ 187, Pair.New("TRIKE", "Atreides") },
|
||||
{ 188, Pair.New("QUAD", "Atreides") },
|
||||
{ 189, Pair.New("COMBATA", "Atreides") },
|
||||
{ 190, Pair.New("MISSILETANK", "Atreides") },
|
||||
{ 191, Pair.New("SIEGETANK", "Atreides") },
|
||||
{ 192, Pair.New("CARRYALLA", "Atreides") },
|
||||
{ 194, Pair.New("SONICTANK", "Atreides") },
|
||||
{ 4, Pair.New("wall", "Atreides") },
|
||||
{ 5, Pair.New("power", "Atreides") },
|
||||
{ 8, Pair.New("conyard", "Atreides") },
|
||||
{ 11, Pair.New("barracks", "Atreides") },
|
||||
{ 14, Pair.New("refinery", "Atreides") },
|
||||
{ 17, Pair.New("radar", "Atreides") },
|
||||
{ 63, Pair.New("light", "Atreides") },
|
||||
{ 69, Pair.New("silo", "Atreides") },
|
||||
{ 72, Pair.New("heavy", "Atreides") },
|
||||
{ 75, Pair.New("repair", "Atreides") },
|
||||
{ 78, Pair.New("guntower", "Atreides") },
|
||||
{ 120, Pair.New("hightech", "Atreides") },
|
||||
{ 123, Pair.New("rockettower", "Atreides") },
|
||||
{ 126, Pair.New("research", "Atreides") },
|
||||
{ 129, Pair.New("starport", "Atreides") },
|
||||
{ 132, Pair.New("palace", "Atreides") },
|
||||
{ 180, Pair.New("rifle", "Atreides") },
|
||||
{ 181, Pair.New("bazooka", "Atreides") },
|
||||
{ 182, Pair.New("fremen", "Atreides") },
|
||||
{ 183, Pair.New("sardaukar", "Atreides") },
|
||||
{ 184, Pair.New("engineer", "Atreides") },
|
||||
{ 185, Pair.New("harvester", "Atreides") },
|
||||
{ 186, Pair.New("mcv", "Atreides") },
|
||||
{ 187, Pair.New("trike", "Atreides") },
|
||||
{ 188, Pair.New("quad", "Atreides") },
|
||||
{ 189, Pair.New("combata", "Atreides") },
|
||||
{ 190, Pair.New("missiletank", "Atreides") },
|
||||
{ 191, Pair.New("siegetank", "Atreides") },
|
||||
{ 192, Pair.New("carryall", "Atreides") },
|
||||
{ 194, Pair.New("sonictank", "Atreides") },
|
||||
|
||||
// Harkonnen:
|
||||
{ 204, Pair.New("WALLH", "Harkonnen") },
|
||||
{ 205, Pair.New("PWRH", "Harkonnen") },
|
||||
{ 208, Pair.New("CONYARDH", "Harkonnen") },
|
||||
{ 211, Pair.New("BARRH", "Harkonnen") },
|
||||
{ 214, Pair.New("REFH", "Harkonnen") },
|
||||
{ 217, Pair.New("RADARH", "Harkonnen") },
|
||||
{ 263, Pair.New("LIGHTH", "Harkonnen") },
|
||||
{ 269, Pair.New("SILOH", "Harkonnen") },
|
||||
{ 272, Pair.New("HEAVYH", "Harkonnen") },
|
||||
{ 275, Pair.New("REPAIRH", "Harkonnen") },
|
||||
{ 278, Pair.New("GUNTOWERH", "Harkonnen") },
|
||||
{ 320, Pair.New("HIGHTECHH", "Harkonnen") },
|
||||
{ 323, Pair.New("ROCKETTOWERH", "Harkonnen") },
|
||||
{ 326, Pair.New("RESEARCHH", "Harkonnen") },
|
||||
{ 329, Pair.New("STARPORTH", "Harkonnen") },
|
||||
{ 332, Pair.New("PALACEH", "Harkonnen") },
|
||||
{ 360, Pair.New("RIFLE", "Harkonnen") },
|
||||
{ 361, Pair.New("BAZOOKA", "Harkonnen") },
|
||||
{ 362, Pair.New("FREMEN", "Harkonnen") },
|
||||
{ 363, Pair.New("SARDAUKAR", "Harkonnen") },
|
||||
{ 364, Pair.New("ENGINEER", "Harkonnen") },
|
||||
{ 365, Pair.New("HARVESTER", "Harkonnen") },
|
||||
{ 366, Pair.New("MCVH", "Harkonnen") },
|
||||
{ 367, Pair.New("TRIKE", "Harkonnen") },
|
||||
{ 368, Pair.New("QUAD", "Harkonnen") },
|
||||
{ 369, Pair.New("COMBATH", "Harkonnen") },
|
||||
{ 370, Pair.New("MISSILETANK", "Harkonnen") },
|
||||
{ 371, Pair.New("SIEGETANK", "Harkonnen") },
|
||||
{ 372, Pair.New("CARRYALLH", "Harkonnen") },
|
||||
{ 374, Pair.New("DEVAST", "Harkonnen") },
|
||||
{ 204, Pair.New("wall", "Harkonnen") },
|
||||
{ 205, Pair.New("power", "Harkonnen") },
|
||||
{ 208, Pair.New("conyard", "Harkonnen") },
|
||||
{ 211, Pair.New("barracks", "Harkonnen") },
|
||||
{ 214, Pair.New("refinery", "Harkonnen") },
|
||||
{ 217, Pair.New("radar", "Harkonnen") },
|
||||
{ 263, Pair.New("light", "Harkonnen") },
|
||||
{ 269, Pair.New("silo", "Harkonnen") },
|
||||
{ 272, Pair.New("heavy", "Harkonnen") },
|
||||
{ 275, Pair.New("repair", "Harkonnen") },
|
||||
{ 278, Pair.New("guntower", "Harkonnen") },
|
||||
{ 320, Pair.New("hightech", "Harkonnen") },
|
||||
{ 323, Pair.New("rockettower", "Harkonnen") },
|
||||
{ 326, Pair.New("research", "Harkonnen") },
|
||||
{ 329, Pair.New("starport", "Harkonnen") },
|
||||
{ 332, Pair.New("palace", "Harkonnen") },
|
||||
{ 360, Pair.New("rifle", "Harkonnen") },
|
||||
{ 361, Pair.New("bazooka", "Harkonnen") },
|
||||
{ 362, Pair.New("fremen", "Harkonnen") },
|
||||
{ 363, Pair.New("sardaukar", "Harkonnen") },
|
||||
{ 364, Pair.New("engineer", "Harkonnen") },
|
||||
{ 365, Pair.New("harvester", "Harkonnen") },
|
||||
{ 366, Pair.New("mcv", "Harkonnen") },
|
||||
{ 367, Pair.New("trike", "Harkonnen") },
|
||||
{ 368, Pair.New("quad", "Harkonnen") },
|
||||
{ 369, Pair.New("combath", "Harkonnen") },
|
||||
{ 370, Pair.New("missiletank", "Harkonnen") },
|
||||
{ 371, Pair.New("siegetank", "Harkonnen") },
|
||||
{ 372, Pair.New("carryall", "Harkonnen") },
|
||||
{ 374, Pair.New("devast", "Harkonnen") },
|
||||
|
||||
// Ordos:
|
||||
{ 404, Pair.New("WALLO", "Ordos") },
|
||||
{ 405, Pair.New("PWRO", "Ordos") },
|
||||
{ 408, Pair.New("CONYARDO", "Ordos") },
|
||||
{ 411, Pair.New("BARRO", "Ordos") },
|
||||
{ 414, Pair.New("REFO", "Ordos") },
|
||||
{ 417, Pair.New("RADARO", "Ordos") },
|
||||
{ 463, Pair.New("LIGHTO", "Ordos") },
|
||||
{ 469, Pair.New("SILOO", "Ordos") },
|
||||
{ 472, Pair.New("HEAVYO", "Ordos") },
|
||||
{ 475, Pair.New("REPAIRO", "Ordos") },
|
||||
{ 478, Pair.New("GUNTOWERO", "Ordos") },
|
||||
{ 520, Pair.New("HIGHTECHO", "Ordos") },
|
||||
{ 523, Pair.New("ROCKETTOWERO", "Ordos") },
|
||||
{ 526, Pair.New("RESEARCHO", "Ordos") },
|
||||
{ 529, Pair.New("STARPORTO", "Ordos") },
|
||||
{ 532, Pair.New("PALACEO", "Ordos") },
|
||||
{ 560, Pair.New("RIFLE", "Ordos") },
|
||||
{ 561, Pair.New("BAZOOKA", "Ordos") },
|
||||
{ 562, Pair.New("SABOTEUR", "Ordos") },
|
||||
{ 563, Pair.New("SARDAUKAR", "Ordos") },
|
||||
{ 564, Pair.New("ENGINEER", "Ordos") },
|
||||
{ 565, Pair.New("HARVESTER", "Ordos") },
|
||||
{ 566, Pair.New("MCVO", "Ordos") },
|
||||
{ 567, Pair.New("RAIDER", "Ordos") },
|
||||
{ 568, Pair.New("QUAD", "Ordos") },
|
||||
{ 569, Pair.New("COMBATO", "Ordos") },
|
||||
{ 570, Pair.New("MISSILETANK", "Ordos") },
|
||||
{ 571, Pair.New("SIEGETANK", "Ordos") },
|
||||
{ 572, Pair.New("CARRYALLO", "Ordos") },
|
||||
{ 574, Pair.New("DEVIATORTANK", "Ordos") },
|
||||
{ 404, Pair.New("wall", "Ordos") },
|
||||
{ 405, Pair.New("power", "Ordos") },
|
||||
{ 408, Pair.New("conyard", "Ordos") },
|
||||
{ 411, Pair.New("barracks", "Ordos") },
|
||||
{ 414, Pair.New("refinery", "Ordos") },
|
||||
{ 417, Pair.New("radar", "Ordos") },
|
||||
{ 463, Pair.New("light", "Ordos") },
|
||||
{ 469, Pair.New("silo", "Ordos") },
|
||||
{ 472, Pair.New("heavy", "Ordos") },
|
||||
{ 475, Pair.New("repair", "Ordos") },
|
||||
{ 478, Pair.New("guntower", "Ordos") },
|
||||
{ 520, Pair.New("hightech", "Ordos") },
|
||||
{ 523, Pair.New("rockettower", "Ordos") },
|
||||
{ 526, Pair.New("research", "Ordos") },
|
||||
{ 529, Pair.New("starport", "Ordos") },
|
||||
{ 532, Pair.New("palace", "Ordos") },
|
||||
{ 560, Pair.New("rifle", "Ordos") },
|
||||
{ 561, Pair.New("bazooka", "Ordos") },
|
||||
{ 562, Pair.New("saboteur", "Ordos") },
|
||||
{ 563, Pair.New("sardaukar", "Ordos") },
|
||||
{ 564, Pair.New("engineer", "Ordos") },
|
||||
{ 565, Pair.New("harvester", "Ordos") },
|
||||
{ 566, Pair.New("mcv", "Ordos") },
|
||||
{ 567, Pair.New("raider", "Ordos") },
|
||||
{ 568, Pair.New("quad", "Ordos") },
|
||||
{ 569, Pair.New("combato", "Ordos") },
|
||||
{ 570, Pair.New("missiletank", "Ordos") },
|
||||
{ 571, Pair.New("siegetank", "Ordos") },
|
||||
{ 572, Pair.New("carryall", "Ordos") },
|
||||
{ 574, Pair.New("deviatortank", "Ordos") },
|
||||
|
||||
// Corrino:
|
||||
{ 580, Pair.New("WALLH", "Corrino") },
|
||||
{ 581, Pair.New("PWRH", "Corrino") },
|
||||
{ 582, Pair.New("CONYARDC", "Corrino") },
|
||||
{ 583, Pair.New("BARRH", "Corrino") },
|
||||
{ 584, Pair.New("REFH", "Corrino") },
|
||||
{ 585, Pair.New("RADARH", "Corrino") },
|
||||
{ 587, Pair.New("LIGHTH", "Corrino") },
|
||||
{ 588, Pair.New("PALACEC", "Corrino") },
|
||||
{ 589, Pair.New("SILOH", "Corrino") },
|
||||
{ 590, Pair.New("HEAVYC", "Corrino") },
|
||||
{ 591, Pair.New("REPAIRH", "Corrino") },
|
||||
{ 592, Pair.New("GUNTOWERH", "Corrino") },
|
||||
{ 593, Pair.New("HIGHTECHH", "Corrino") },
|
||||
{ 594, Pair.New("ROCKETTOWERH", "Corrino") },
|
||||
{ 595, Pair.New("RESEARCHH", "Corrino") },
|
||||
{ 596, Pair.New("STARPORTC", "Corrino") },
|
||||
{ 597, Pair.New("SIETCH", "Corrino") },
|
||||
{ 598, Pair.New("RIFLE", "Corrino") },
|
||||
{ 599, Pair.New("BAZOOKA", "Corrino") },
|
||||
{ 600, Pair.New("SARDAUKAR", "Corrino") },
|
||||
{ 601, Pair.New("FREMEN", "Corrino") },
|
||||
{ 602, Pair.New("ENGINEER", "Corrino") },
|
||||
{ 603, Pair.New("HARVESTER", "Corrino") },
|
||||
{ 604, Pair.New("MCVH", "Corrino") },
|
||||
{ 605, Pair.New("TRIKE", "Corrino") },
|
||||
{ 606, Pair.New("QUAD", "Corrino") },
|
||||
{ 607, Pair.New("COMBATH", "Corrino") },
|
||||
{ 608, Pair.New("MISSILETANK", "Corrino") },
|
||||
{ 609, Pair.New("SIEGETANK", "Corrino") },
|
||||
{ 610, Pair.New("CARRYALLH", "Corrino") },
|
||||
{ 580, Pair.New("wall", "Corrino") },
|
||||
{ 581, Pair.New("power", "Corrino") },
|
||||
{ 582, Pair.New("conyard", "Corrino") },
|
||||
{ 583, Pair.New("barracks", "Corrino") },
|
||||
{ 584, Pair.New("refinery", "Corrino") },
|
||||
{ 585, Pair.New("radar", "Corrino") },
|
||||
{ 587, Pair.New("light", "Corrino") },
|
||||
{ 588, Pair.New("palace", "Corrino") },
|
||||
{ 589, Pair.New("silo", "Corrino") },
|
||||
{ 590, Pair.New("heavy", "Corrino") },
|
||||
{ 591, Pair.New("repair", "Corrino") },
|
||||
{ 592, Pair.New("guntower", "Corrino") },
|
||||
{ 593, Pair.New("hightech", "Corrino") },
|
||||
{ 594, Pair.New("rockettower", "Corrino") },
|
||||
{ 595, Pair.New("research", "Corrino") },
|
||||
{ 596, Pair.New("starport", "Corrino") },
|
||||
{ 597, Pair.New("sietch", "Corrino") },
|
||||
{ 598, Pair.New("rifle", "Corrino") },
|
||||
{ 599, Pair.New("bazooka", "Corrino") },
|
||||
{ 600, Pair.New("sardaukar", "Corrino") },
|
||||
{ 601, Pair.New("fremen", "Corrino") },
|
||||
{ 602, Pair.New("engineer", "Corrino") },
|
||||
{ 603, Pair.New("harvester", "Corrino") },
|
||||
{ 604, Pair.New("mcv", "Corrino") },
|
||||
{ 605, Pair.New("trike", "Corrino") },
|
||||
{ 606, Pair.New("quad", "Corrino") },
|
||||
{ 607, Pair.New("combath", "Corrino") },
|
||||
{ 608, Pair.New("missiletank", "Corrino") },
|
||||
{ 609, Pair.New("siegetank", "Corrino") },
|
||||
{ 610, Pair.New("carryall", "Corrino") },
|
||||
|
||||
// Fremen:
|
||||
{ 620, Pair.New("WALLA", "Fremen") },
|
||||
{ 621, Pair.New("PWRA", "Fremen") },
|
||||
{ 622, Pair.New("CONYARDA", "Fremen") },
|
||||
{ 623, Pair.New("BARRA", "Fremen") },
|
||||
{ 624, Pair.New("REFA", "Fremen") },
|
||||
{ 625, Pair.New("RADARA", "Fremen") },
|
||||
{ 627, Pair.New("LIGHTA", "Fremen") },
|
||||
{ 628, Pair.New("PALACEC", "Fremen") },
|
||||
{ 629, Pair.New("SILOA", "Fremen") },
|
||||
{ 630, Pair.New("HEAVYA", "Fremen") },
|
||||
{ 631, Pair.New("REPAIRA", "Fremen") },
|
||||
{ 632, Pair.New("GUNTOWERA", "Fremen") },
|
||||
{ 633, Pair.New("HIGHTECHA", "Fremen") },
|
||||
{ 634, Pair.New("ROCKETTOWERA", "Fremen") },
|
||||
{ 635, Pair.New("RESEARCHA", "Fremen") },
|
||||
{ 636, Pair.New("STARPORTA", "Fremen") },
|
||||
{ 637, Pair.New("SIETCH", "Fremen") },
|
||||
{ 638, Pair.New("RIFLE", "Fremen") },
|
||||
{ 639, Pair.New("BAZOOKA", "Fremen") },
|
||||
{ 640, Pair.New("FREMEN", "Fremen") },
|
||||
////{ 641, Pair.New("", "Fremen") },// Fremen fremen non-stealth
|
||||
{ 642, Pair.New("ENGINEER", "Fremen") },
|
||||
{ 643, Pair.New("HARVESTER", "Fremen") },
|
||||
{ 644, Pair.New("MCVA", "Fremen") },
|
||||
{ 645, Pair.New("TRIKE", "Fremen") },
|
||||
{ 646, Pair.New("QUAD", "Fremen") },
|
||||
{ 647, Pair.New("COMBATA", "Fremen") },
|
||||
{ 648, Pair.New("MISSILETANK", "Fremen") },
|
||||
{ 649, Pair.New("SIEGETANK", "Fremen") },
|
||||
{ 650, Pair.New("CARRYALLA", "Fremen") },
|
||||
{ 652, Pair.New("SONICTANK", "Fremen") },
|
||||
{ 620, Pair.New("wall", "Fremen") },
|
||||
{ 621, Pair.New("power", "Fremen") },
|
||||
{ 622, Pair.New("conyard", "Fremen") },
|
||||
{ 623, Pair.New("barracks", "Fremen") },
|
||||
{ 624, Pair.New("refinery", "Fremen") },
|
||||
{ 625, Pair.New("radar", "Fremen") },
|
||||
{ 627, Pair.New("light", "Fremen") },
|
||||
{ 628, Pair.New("palacec", "Fremen") },
|
||||
{ 629, Pair.New("silo", "Fremen") },
|
||||
{ 630, Pair.New("heavy", "Fremen") },
|
||||
{ 631, Pair.New("repair", "Fremen") },
|
||||
{ 632, Pair.New("guntower", "Fremen") },
|
||||
{ 633, Pair.New("hightech", "Fremen") },
|
||||
{ 634, Pair.New("rockettower", "Fremen") },
|
||||
{ 635, Pair.New("research", "Fremen") },
|
||||
{ 636, Pair.New("starport", "Fremen") },
|
||||
{ 637, Pair.New("sietch", "Fremen") },
|
||||
{ 638, Pair.New("rifle", "Fremen") },
|
||||
{ 639, Pair.New("bazooka", "Fremen") },
|
||||
{ 640, Pair.New("fremen", "Fremen") },
|
||||
////{ 641, Pair.new("", "Fremen") },// Fremen fremen non-stealth
|
||||
{ 642, Pair.New("engineer", "Fremen") },
|
||||
{ 643, Pair.New("harvester", "Fremen") },
|
||||
{ 644, Pair.New("mcv", "Fremen") },
|
||||
{ 645, Pair.New("trike", "Fremen") },
|
||||
{ 646, Pair.New("quad", "Fremen") },
|
||||
{ 647, Pair.New("combata", "Fremen") },
|
||||
{ 648, Pair.New("missiletank", "Fremen") },
|
||||
{ 649, Pair.New("siegetank", "Fremen") },
|
||||
{ 650, Pair.New("carryall", "Fremen") },
|
||||
{ 652, Pair.New("sonictank", "Fremen") },
|
||||
|
||||
// Smugglers:
|
||||
{ 660, Pair.New("WALLO", "Smugglers") },
|
||||
{ 661, Pair.New("PWRO", "Smugglers") },
|
||||
{ 662, Pair.New("CONYARDO", "Smugglers") },
|
||||
{ 663, Pair.New("BARRO", "Smugglers") },
|
||||
{ 664, Pair.New("REFO", "Smugglers") },
|
||||
{ 666, Pair.New("RADARO", "Smugglers") },
|
||||
{ 667, Pair.New("LIGHTO", "Smugglers") },
|
||||
{ 668, Pair.New("SILOO", "Smugglers") },
|
||||
{ 669, Pair.New("HEAVYO", "Smugglers") },
|
||||
{ 670, Pair.New("REPAIRO", "Smugglers") },
|
||||
{ 671, Pair.New("GUNTOWERO", "Smugglers") },
|
||||
{ 672, Pair.New("HIGHTECHO", "Smugglers") },
|
||||
{ 673, Pair.New("ROCKETTOWERO", "Smugglers") },
|
||||
{ 674, Pair.New("RESEARCHO", "Smugglers") },
|
||||
{ 675, Pair.New("STARPORTO", "Smugglers") },
|
||||
{ 676, Pair.New("PALACEO", "Smugglers") },
|
||||
{ 677, Pair.New("RIFLE", "Smugglers") },
|
||||
{ 678, Pair.New("BAZOOKA", "Smugglers") },
|
||||
{ 679, Pair.New("SABOTEUR", "Smugglers") },
|
||||
{ 680, Pair.New("ENGINEER", "Smugglers") },
|
||||
{ 681, Pair.New("HARVESTER", "Smugglers") },
|
||||
{ 682, Pair.New("MCVO", "Smugglers") },
|
||||
{ 683, Pair.New("TRIKE", "Smugglers") },
|
||||
{ 684, Pair.New("QUAD", "Smugglers") },
|
||||
{ 685, Pair.New("COMBATO", "Smugglers") },
|
||||
{ 686, Pair.New("MISSILETANK", "Smugglers") },
|
||||
{ 687, Pair.New("SIEGETANK", "Smugglers") },
|
||||
{ 688, Pair.New("CARRYALLO", "Smugglers") },
|
||||
{ 660, Pair.New("wall", "Smugglers") },
|
||||
{ 661, Pair.New("power", "Smugglers") },
|
||||
{ 662, Pair.New("conyard", "Smugglers") },
|
||||
{ 663, Pair.New("barracks", "Smugglers") },
|
||||
{ 664, Pair.New("refinery", "Smugglers") },
|
||||
{ 666, Pair.New("radar", "Smugglers") },
|
||||
{ 667, Pair.New("light", "Smugglers") },
|
||||
{ 668, Pair.New("silo", "Smugglers") },
|
||||
{ 669, Pair.New("heavy", "Smugglers") },
|
||||
{ 670, Pair.New("repair", "Smugglers") },
|
||||
{ 671, Pair.New("guntower", "Smugglers") },
|
||||
{ 672, Pair.New("hightech", "Smugglers") },
|
||||
{ 673, Pair.New("rockettower", "Smugglers") },
|
||||
{ 674, Pair.New("research", "Smugglers") },
|
||||
{ 675, Pair.New("starport", "Smugglers") },
|
||||
{ 676, Pair.New("palace", "Smugglers") },
|
||||
{ 677, Pair.New("rifle", "Smugglers") },
|
||||
{ 678, Pair.New("bazooka", "Smugglers") },
|
||||
{ 679, Pair.New("saboteur", "Smugglers") },
|
||||
{ 680, Pair.New("engineer", "Smugglers") },
|
||||
{ 681, Pair.New("harvester", "Smugglers") },
|
||||
{ 682, Pair.New("mcv", "Smugglers") },
|
||||
{ 683, Pair.New("trike", "Smugglers") },
|
||||
{ 684, Pair.New("quad", "Smugglers") },
|
||||
{ 685, Pair.New("combato", "Smugglers") },
|
||||
{ 686, Pair.New("missiletank", "Smugglers") },
|
||||
{ 687, Pair.New("siegetank", "Smugglers") },
|
||||
{ 688, Pair.New("carryall", "Smugglers") },
|
||||
|
||||
// Mercenaries:
|
||||
{ 700, Pair.New("WALLO", "Mercenaries") },
|
||||
{ 701, Pair.New("PWRO", "Mercenaries") },
|
||||
{ 702, Pair.New("CONYARDO", "Mercenaries") },
|
||||
{ 703, Pair.New("BARRO", "Mercenaries") },
|
||||
{ 704, Pair.New("REFO", "Mercenaries") },
|
||||
{ 705, Pair.New("RADARO", "Mercenaries") },
|
||||
{ 707, Pair.New("LIGHTO", "Mercenaries") },
|
||||
{ 708, Pair.New("SILOO", "Mercenaries") },
|
||||
{ 709, Pair.New("HEAVYO", "Mercenaries") },
|
||||
{ 710, Pair.New("REPAIRO", "Mercenaries") },
|
||||
{ 711, Pair.New("GUNTOWERO", "Mercenaries") },
|
||||
{ 712, Pair.New("HIGHTECHO", "Mercenaries") },
|
||||
{ 713, Pair.New("ROCKETTOWERO", "Mercenaries") },
|
||||
{ 714, Pair.New("RESEARCHO", "Mercenaries") },
|
||||
{ 715, Pair.New("STARPORTO", "Mercenaries") },
|
||||
{ 716, Pair.New("PALACEO", "Mercenaries") },
|
||||
{ 717, Pair.New("RIFLE", "Mercenaries") },
|
||||
{ 718, Pair.New("BAZOOKA", "Mercenaries") },
|
||||
{ 719, Pair.New("SABOTEUR", "Mercenaries") },
|
||||
{ 720, Pair.New("HARVESTER", "Mercenaries") },
|
||||
{ 721, Pair.New("HARVESTER", "Mercenaries") },
|
||||
{ 722, Pair.New("MCVO", "Mercenaries") },
|
||||
{ 723, Pair.New("TRIKE", "Mercenaries") },
|
||||
{ 724, Pair.New("QUAD", "Mercenaries") },
|
||||
{ 725, Pair.New("COMBATO", "Mercenaries") },
|
||||
{ 726, Pair.New("MISSILETANK", "Mercenaries") },
|
||||
{ 727, Pair.New("SIEGETANK", "Mercenaries") },
|
||||
{ 728, Pair.New("CARRYALLO", "Mercenaries") },
|
||||
{ 700, Pair.New("wall", "Mercenaries") },
|
||||
{ 701, Pair.New("power", "Mercenaries") },
|
||||
{ 702, Pair.New("conyard", "Mercenaries") },
|
||||
{ 703, Pair.New("barracks", "Mercenaries") },
|
||||
{ 704, Pair.New("refinery", "Mercenaries") },
|
||||
{ 705, Pair.New("radar", "Mercenaries") },
|
||||
{ 707, Pair.New("light", "Mercenaries") },
|
||||
{ 708, Pair.New("silo", "Mercenaries") },
|
||||
{ 709, Pair.New("heavy", "Mercenaries") },
|
||||
{ 710, Pair.New("repair", "Mercenaries") },
|
||||
{ 711, Pair.New("guntower", "Mercenaries") },
|
||||
{ 712, Pair.New("hightech", "Mercenaries") },
|
||||
{ 713, Pair.New("rockettower", "Mercenaries") },
|
||||
{ 714, Pair.New("research", "Mercenaries") },
|
||||
{ 715, Pair.New("starport", "Mercenaries") },
|
||||
{ 716, Pair.New("palace", "Mercenaries") },
|
||||
{ 717, Pair.New("rifle", "Mercenaries") },
|
||||
{ 718, Pair.New("bazooka", "Mercenaries") },
|
||||
{ 719, Pair.New("saboteur", "Mercenaries") },
|
||||
{ 720, Pair.New("harvester", "Mercenaries") },
|
||||
{ 721, Pair.New("harvester", "Mercenaries") },
|
||||
{ 722, Pair.New("mcv", "Mercenaries") },
|
||||
{ 723, Pair.New("trike", "Mercenaries") },
|
||||
{ 724, Pair.New("quad", "Mercenaries") },
|
||||
{ 725, Pair.New("combato", "Mercenaries") },
|
||||
{ 726, Pair.New("missiletank", "Mercenaries") },
|
||||
{ 727, Pair.New("siegetank", "Mercenaries") },
|
||||
{ 728, Pair.New("carryall", "Mercenaries") },
|
||||
};
|
||||
|
||||
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.")]
|
||||
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
|
||||
{
|
||||
readonly ClonesProducedUnitsInfo info;
|
||||
readonly Production production;
|
||||
readonly string race;
|
||||
|
||||
public ClonesProducedUnits(Actor self, ClonesProducedUnitsInfo info)
|
||||
public ClonesProducedUnits(ActorInitializer init, ClonesProducedUnitsInfo 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)
|
||||
@@ -45,7 +47,7 @@ namespace OpenRA.Mods.RA.Traits
|
||||
if (ci == null || !info.CloneableTypes.Intersect(ci.Types).Any())
|
||||
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>
|
||||
{
|
||||
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
|
||||
@@ -24,11 +24,11 @@ namespace OpenRA.Mods.RA.Traits
|
||||
string intendedSprite;
|
||||
Disguise disguise;
|
||||
|
||||
public RenderDisguise(Actor self, RenderDisguiseInfo info)
|
||||
: base(self, info)
|
||||
public RenderDisguise(ActorInitializer init, RenderDisguiseInfo info)
|
||||
: base(init, info)
|
||||
{
|
||||
this.info = info;
|
||||
disguise = self.Trait<Disguise>();
|
||||
disguise = init.Self.Trait<Disguise>();
|
||||
intendedSprite = disguise.AsSprite;
|
||||
}
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@ namespace OpenRA.Mods.RA.Traits
|
||||
public readonly string OpenAnim = "open";
|
||||
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
|
||||
@@ -31,11 +31,11 @@ namespace OpenRA.Mods.RA.Traits
|
||||
readonly IMove move;
|
||||
bool open;
|
||||
|
||||
public RenderLandingCraft(Actor self, RenderLandingCraftInfo info)
|
||||
: base(self)
|
||||
public RenderLandingCraft(ActorInitializer init, RenderLandingCraftInfo info)
|
||||
: base(init, info)
|
||||
{
|
||||
this.info = info;
|
||||
this.self = self;
|
||||
self = init.Self;
|
||||
cargo = self.Trait<Cargo>();
|
||||
move = self.Trait<IMove>();
|
||||
}
|
||||
|
||||
@@ -19,7 +19,7 @@ namespace OpenRA.Mods.RA.Traits
|
||||
[Desc("Armament name")]
|
||||
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
|
||||
@@ -27,11 +27,11 @@ namespace OpenRA.Mods.RA.Traits
|
||||
readonly AttackBase attack;
|
||||
readonly Armament armament;
|
||||
|
||||
public RenderUnitReload(Actor self, RenderUnitReloadInfo info)
|
||||
: base(self)
|
||||
public RenderUnitReload(ActorInitializer init, RenderUnitReloadInfo info)
|
||||
: base(init, info)
|
||||
{
|
||||
attack = self.Trait<AttackBase>();
|
||||
armament = self.TraitsImplementing<Armament>()
|
||||
attack = init.Self.Trait<AttackBase>();
|
||||
armament = init.Self.TraitsImplementing<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 sequenceProvider = init.World.Map.SequenceProvider;
|
||||
var image = Image ?? init.Actor.Name;
|
||||
var facings = body.QuantizedFacings == -1 ? init.Actor.Traits.Get<IQuantizeBodyOrientationInfo>().QuantizedBodyFacings(sequenceProvider, init.Actor) : body.QuantizedFacings;
|
||||
var palette = init.WorldRenderer.Palette(Palette ?? (init.Owner != null ? PlayerPalette + init.Owner.InternalName : null));
|
||||
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 ?? PlayerPalette + init.Owner.InternalName);
|
||||
|
||||
var ifacing = init.Actor.Traits.GetOrDefault<IFacingInfo>();
|
||||
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);
|
||||
}
|
||||
|
||||
public int QuantizedBodyFacings(SequenceProvider sequenceProvider, ActorInfo ai) { return 0; }
|
||||
public int QuantizedBodyFacings(ActorInfo ai, SequenceProvider sequenceProvider, string race) { return 0; }
|
||||
}
|
||||
|
||||
public class WithVoxelBody : IAutoSelectionSize
|
||||
|
||||
@@ -36,7 +36,7 @@ namespace OpenRA.Mods.TS.Traits
|
||||
() => 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
|
||||
|
||||
@@ -20,7 +20,7 @@ namespace OpenRA.Mods.TS.Traits
|
||||
public readonly int TickRate = 5;
|
||||
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
|
||||
|
||||
@@ -1,9 +1,5 @@
|
||||
FACT:
|
||||
Inherits: ^BaseBuilding
|
||||
Buildable:
|
||||
Queue: Building.GDI, Building.Nod
|
||||
BuildPaletteOrder: 1000
|
||||
Prerequisites: ~disabled
|
||||
Valued:
|
||||
Cost: 2000
|
||||
Tooltip:
|
||||
@@ -20,7 +16,7 @@ FACT:
|
||||
Range: 10c0
|
||||
Bib:
|
||||
Production:
|
||||
Produces: Building.GDI, Buildings.Nod, Defence.GDI, Defence.Nod
|
||||
Produces: Building.GDI, Building.Nod, Defence.GDI, Defence.Nod
|
||||
Transforms:
|
||||
IntoActor: mcv
|
||||
Offset: 1,1
|
||||
@@ -77,6 +73,30 @@ FACT:
|
||||
Power:
|
||||
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:
|
||||
Inherits: ^BaseBuilding
|
||||
Valued:
|
||||
|
||||
@@ -25,7 +25,7 @@ MCV:
|
||||
Offset: -1,-1
|
||||
Facing: 108
|
||||
TransformSounds: constru2.aud, hvydoor1.aud
|
||||
NoTransformSounds: deploy1.aud
|
||||
NoTransformNotification: BuildingCannotPlaceAudio
|
||||
RenderUnit:
|
||||
MustBeDestroyed:
|
||||
RequiredForShortGame: true
|
||||
|
||||
@@ -35,6 +35,7 @@ Speech:
|
||||
WormAttack: WATTK
|
||||
EnemyUnitsApproaching: ENEMY
|
||||
UnitRepaired: GANEW
|
||||
CannotDeploy: DPLOY
|
||||
|
||||
Sounds:
|
||||
DefaultVariant: .WAV
|
||||
|
||||
@@ -62,16 +62,16 @@ Actors:
|
||||
Actor29: concretea
|
||||
Location: 54,59
|
||||
Owner: Neutral
|
||||
Actor30: pwra
|
||||
Actor30: power
|
||||
Location: 54,58
|
||||
Owner: Atreides
|
||||
Actor31: concretea
|
||||
Location: 54,62
|
||||
Owner: Neutral
|
||||
Actor32: siloa
|
||||
Actor32: silo
|
||||
Location: 54,62
|
||||
Owner: Atreides
|
||||
Actor33: guntowera
|
||||
Actor33: guntower
|
||||
Location: 54,63
|
||||
Owner: Atreides
|
||||
Actor34: siegetank
|
||||
@@ -87,13 +87,13 @@ Actors:
|
||||
Actor37: concreteb
|
||||
Location: 50,37
|
||||
Owner: Neutral
|
||||
Actor38: palacec
|
||||
Actor38: palace
|
||||
Location: 50,37
|
||||
Owner: Creeps
|
||||
Actor39: barrh
|
||||
Actor39: barracks
|
||||
Location: 48,37
|
||||
Owner: Creeps
|
||||
Actor40: rockettowerh
|
||||
Actor40: rockettower
|
||||
Location: 46,39
|
||||
Owner: Creeps
|
||||
Actor41: sardaukar
|
||||
@@ -108,9 +108,10 @@ Actors:
|
||||
Entry: waypoint
|
||||
Location: 80, 8
|
||||
Owner: Neutral
|
||||
AtreidesSpiceRefinery: refa
|
||||
AtreidesSpiceRefinery: refinery
|
||||
Location: 57,58
|
||||
Owner: Atreides
|
||||
FreeActor: false
|
||||
|
||||
Smudges:
|
||||
|
||||
@@ -126,20 +127,15 @@ Rules:
|
||||
Maximum: 1
|
||||
LuaScript:
|
||||
Scripts: shellmap.lua
|
||||
REFA:
|
||||
-FreeActor:
|
||||
CARRYALLA:
|
||||
-AutoCarryall:
|
||||
carryall.scripted:
|
||||
Helicopter:
|
||||
CruiseAltitude: 2048
|
||||
LandAltitude: 512
|
||||
LandWhenIdle: True
|
||||
Cargo:
|
||||
Types: Vehicle
|
||||
WithCargo:
|
||||
DisplayTypes: Vehicle
|
||||
LocalOffset: 0,0,-256
|
||||
ROCKETTOWERH:
|
||||
rockettower:
|
||||
Power:
|
||||
Amount: 100
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ InitializeHarvester = function(harvester)
|
||||
end
|
||||
|
||||
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]
|
||||
|
||||
Utils.Do(harvesters, function(harvester)
|
||||
|
||||
@@ -30,14 +30,12 @@ Rules:
|
||||
./mods/d2k/rules/world.yaml
|
||||
./mods/d2k/rules/defaults.yaml
|
||||
./mods/d2k/rules/vehicles.yaml
|
||||
./mods/d2k/rules/starport.yaml
|
||||
./mods/d2k/rules/husks.yaml
|
||||
./mods/d2k/rules/structures.yaml
|
||||
./mods/d2k/rules/aircraft.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/corrino.yaml
|
||||
|
||||
Sequences:
|
||||
./mods/d2k/sequences/aircraft.yaml
|
||||
|
||||
@@ -3,84 +3,39 @@ Player:
|
||||
Name: Omnius
|
||||
UnitQueues: Infantry, Vehicle, Armor, Starport
|
||||
BuildingCommonNames:
|
||||
ConstructionYard: conyarda,conyardh,conyardo
|
||||
Refinery: refa,refh,refo
|
||||
Power: pwra,pwrh,pwro
|
||||
Barracks: barra,barrh,barro
|
||||
VehiclesFactory: lighta,lighth,lighto,heavya,heavyh,heavyo
|
||||
Production: lighta,lighth,lighto,heavya,heavyh,heavyo,barra,barrh,barro
|
||||
Silo: siloa, siloh, siloo
|
||||
ConstructionYard: conyard
|
||||
Refinery: refinery
|
||||
Power: power
|
||||
VehiclesFactory: light, heavy, starport
|
||||
Production: light, heavy, barracks, starport
|
||||
Silo: silo
|
||||
UnitsCommonNames:
|
||||
Mcv: mcva,mcvh,mcvo
|
||||
Mcv: mcv
|
||||
BuildingLimits:
|
||||
refa: 4
|
||||
refh: 4
|
||||
refo: 4
|
||||
barra: 1
|
||||
barrh: 1
|
||||
barro: 1
|
||||
lighta: 1
|
||||
lighth: 1
|
||||
lighto: 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
|
||||
refinery: 4
|
||||
barracks: 1
|
||||
light: 1
|
||||
heavy: 1
|
||||
research: 1
|
||||
repair: 1
|
||||
radar: 1
|
||||
hightech: 1
|
||||
palace: 1
|
||||
BuildingFractions:
|
||||
refa: 20.1%
|
||||
refh: 20.1%
|
||||
refo: 20.1%
|
||||
barra: 0.1%
|
||||
barrh: 0.1%
|
||||
barro: 0.1%
|
||||
lighta: 0.1%
|
||||
lighth: 0.1%
|
||||
lighto: 0.1%
|
||||
heavya: 0.1%
|
||||
heavyh: 0.1%
|
||||
heavyo: 0.1%
|
||||
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%
|
||||
refinery: 20.1%
|
||||
barracks: 0.1%
|
||||
light: 0.1%
|
||||
heavy: 0.1%
|
||||
radar: 0.1%
|
||||
hightech: 0.1%
|
||||
starport: 0.1%
|
||||
research: 0.1%
|
||||
repair: 0.1%
|
||||
guntower: 8%
|
||||
rockettower: 6%
|
||||
power: 10%
|
||||
UnitsToBuild:
|
||||
carryalla: 1%
|
||||
carryallh: 1%
|
||||
carryallo: 1%
|
||||
carryall: 1%
|
||||
rifle: 6%
|
||||
bazooka: 5%
|
||||
medic: 1%
|
||||
@@ -165,84 +120,39 @@ Player:
|
||||
Name: Vidious
|
||||
UnitQueues: Infantry, Vehicle, Armor, Starport
|
||||
BuildingCommonNames:
|
||||
ConstructionYard: conyarda,conyardh,conyardo
|
||||
Refinery: refa,refh,refo
|
||||
Power: pwra,pwrh,pwro
|
||||
Barracks: barra,barrh,barro
|
||||
VehiclesFactory: lighta,lighth,lighto,heavya,heavyh,heavyo
|
||||
Production: lighta,lighth,lighto,heavya,heavyh,heavyo,barra,barrh,barro
|
||||
Silo: siloa, siloh, siloo
|
||||
ConstructionYard: conyard
|
||||
Refinery: refinery
|
||||
Power: power
|
||||
VehiclesFactory: light, heavy, starport
|
||||
Production: light, heavy, barracks, starport
|
||||
Silo: silo
|
||||
UnitsCommonNames:
|
||||
Mcv: mcva,mcvh,mcvo
|
||||
Mcv: mcv
|
||||
BuildingLimits:
|
||||
refa: 4
|
||||
refh: 4
|
||||
refo: 4
|
||||
barra: 1
|
||||
barrh: 1
|
||||
barro: 1
|
||||
lighta: 1
|
||||
lighth: 1
|
||||
lighto: 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
|
||||
refinery: 4
|
||||
barracks: 1
|
||||
light: 1
|
||||
heavy: 1
|
||||
research: 1
|
||||
repair: 1
|
||||
radar: 1
|
||||
hightech: 1
|
||||
palace: 1
|
||||
BuildingFractions:
|
||||
refa: 20.1%
|
||||
refh: 20.1%
|
||||
refo: 20.1%
|
||||
barra: 0.1%
|
||||
barrh: 0.1%
|
||||
barro: 0.1%
|
||||
lighta: 0.1%
|
||||
lighth: 0.1%
|
||||
lighto: 0.1%
|
||||
heavya: 0.1%
|
||||
heavyh: 0.1%
|
||||
heavyo: 0.1%
|
||||
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%
|
||||
refinery: 20.1%
|
||||
barracks: 0.1%
|
||||
light: 0.1%
|
||||
heavy: 0.1%
|
||||
radar: 0.1%
|
||||
hightech: 0.1%
|
||||
repair: 0.1%
|
||||
starport: 0.1%
|
||||
palace: 0.1%
|
||||
guntower: 5%
|
||||
rockettower: 10%
|
||||
power: 12%
|
||||
UnitsToBuild:
|
||||
carryalla: 1%
|
||||
carryallh: 1%
|
||||
carryallo: 1%
|
||||
carryall: 1%
|
||||
rifle: 2%
|
||||
bazooka: 2%
|
||||
medic: 0.5%
|
||||
@@ -327,84 +237,39 @@ Player:
|
||||
Name: Gladius
|
||||
UnitQueues: Infantry, Vehicle, Armor, Starport
|
||||
BuildingCommonNames:
|
||||
ConstructionYard: conyarda,conyardh,conyardo
|
||||
Refinery: refa,refh,refo
|
||||
Power: pwra,pwrh,pwro
|
||||
Barracks: barra,barrh,barro
|
||||
VehiclesFactory: lighta,lighth,lighto,heavya,heavyh,heavyo
|
||||
Production: lighta,lighth,lighto,heavya,heavyh,heavyo,barra,barrh,barro
|
||||
Silo: siloa, siloh, siloo
|
||||
ConstructionYard: conyard
|
||||
Refinery: refinery
|
||||
Power: power
|
||||
VehiclesFactory: light, heavy, starport
|
||||
Production: light, heavy, barracks, starport
|
||||
Silo: silo
|
||||
UnitsCommonNames:
|
||||
Mcv: mcva,mcvh,mcvo
|
||||
Mcv: mcv
|
||||
BuildingLimits:
|
||||
refa: 4
|
||||
refh: 4
|
||||
refo: 4
|
||||
barra: 1
|
||||
barrh: 1
|
||||
barro: 1
|
||||
lighta: 1
|
||||
lighth: 1
|
||||
lighto: 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
|
||||
refinery: 4
|
||||
barracks: 1
|
||||
light: 1
|
||||
heavy: 1
|
||||
research: 1
|
||||
repair: 1
|
||||
radar: 1
|
||||
hightech: 1
|
||||
palace: 1
|
||||
BuildingFractions:
|
||||
refa: 20.1%
|
||||
refh: 20.1%
|
||||
refo: 20.1%
|
||||
barra: 0.1%
|
||||
barrh: 0.1%
|
||||
barro: 0.1%
|
||||
lighta: 0.1%
|
||||
lighth: 0.1%
|
||||
lighto: 0.1%
|
||||
heavya: 0.1%
|
||||
heavyh: 0.1%
|
||||
heavyo: 0.1%
|
||||
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%
|
||||
refinery: 20.1%
|
||||
barracks: 0.1%
|
||||
light: 0.1%
|
||||
heavy: 0.1%
|
||||
repair: 0.1%
|
||||
radar: 0.1%
|
||||
hightech: 0.1%
|
||||
research: 0.1%
|
||||
palace: 0.1%
|
||||
guntower: 4%
|
||||
rockettower: 12%
|
||||
power: 10%
|
||||
UnitsToBuild:
|
||||
carryalla: 1%
|
||||
carryallh: 1%
|
||||
carryallo: 1%
|
||||
carryall: 1%
|
||||
rifle: 15%
|
||||
bazooka: 13%
|
||||
medic: 2%
|
||||
@@ -485,4 +350,3 @@ Player:
|
||||
Attractiveness: -10
|
||||
TargetMetric: Value
|
||||
CheckRadius: 7c0
|
||||
|
||||
|
||||
@@ -1,46 +1,98 @@
|
||||
^CARRYALL:
|
||||
carryall.scripted:
|
||||
Inherits: ^Helicopter
|
||||
Valued:
|
||||
Cost: 1200
|
||||
Tooltip:
|
||||
Name: Carryall
|
||||
Description: Large winged, planet-bound ship\n Automatically lifts harvesters.
|
||||
Buildable:
|
||||
Queue: Aircraft
|
||||
BuildPaletteOrder: 120
|
||||
Health:
|
||||
HP: 250
|
||||
Armor:
|
||||
Type: Light
|
||||
Helicopter:
|
||||
CruiseAltitude: 2100
|
||||
CruiseAltitude: 2048
|
||||
InitialFacing: 0
|
||||
ROT: 4
|
||||
Speed: 160
|
||||
LandableTerrainTypes: Sand, Rock, Transition, Spice, Dune
|
||||
RepairBuildings: repaira,repairo,repairh
|
||||
RearmBuildings: starporta,starporto,starporth
|
||||
RepairBuildings: repair
|
||||
RearmBuildings:
|
||||
Repulsable: False
|
||||
LandAltitude: 100
|
||||
LandAltitude: 512
|
||||
LandWhenIdle: False
|
||||
RenderUnit:
|
||||
Image: carryall
|
||||
WithShadow:
|
||||
LeavesHusk:
|
||||
HuskActor: CARRYALL.Husk
|
||||
HuskActor: carryall.husk
|
||||
-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:
|
||||
DropRange: 1c0
|
||||
Inherits: ^Plane
|
||||
Tooltip:
|
||||
Name: Frigate
|
||||
Description: Supply spacecraft
|
||||
Plane:
|
||||
ROT: 5
|
||||
Speed: 350
|
||||
RepairBuildings: repaira,repairo,repairh
|
||||
RearmBuildings: starporta,starporto,starporth
|
||||
RepairBuildings: repair
|
||||
RearmBuildings:
|
||||
Repulsable: False
|
||||
Health:
|
||||
HP: 500
|
||||
@@ -48,8 +100,6 @@ FRIGATE:
|
||||
-AppearsOnRadar:
|
||||
Armor:
|
||||
Type: Heavy
|
||||
RenderUnit:
|
||||
Image: frigate
|
||||
WithShadow:
|
||||
Cargo:
|
||||
MaxWeight: 20
|
||||
@@ -60,7 +110,7 @@ FRIGATE:
|
||||
FlyAwayOnIdle:
|
||||
RejectsOrders:
|
||||
|
||||
ORNI:
|
||||
orni:
|
||||
Inherits: ^Helicopter
|
||||
Valued:
|
||||
Cost: 1000
|
||||
@@ -83,16 +133,16 @@ ORNI:
|
||||
InitialFacing: 20
|
||||
ROT: 6
|
||||
Speed: 280
|
||||
RepairBuildings: repaira,repairo,repairh
|
||||
RearmBuildings: starporta,starporto,starporth
|
||||
RepairBuildings: repair
|
||||
RearmBuildings:
|
||||
RenderUnit:
|
||||
WithShadow:
|
||||
Selectable:
|
||||
Bounds: 38,32,0,0
|
||||
LeavesHusk:
|
||||
HuskActor: ORNI.Husk
|
||||
HuskActor: orni.husk
|
||||
|
||||
ORNI.bomber:
|
||||
orni.bomber:
|
||||
AttackBomber:
|
||||
Armament:
|
||||
Weapon: Napalm
|
||||
@@ -104,8 +154,8 @@ ORNI.bomber:
|
||||
Plane:
|
||||
ROT: 5
|
||||
Speed: 350
|
||||
RepairBuildings: repaira,repairo,repairh
|
||||
RearmBuildings: starporta,starporto,starporth
|
||||
RepairBuildings: repair
|
||||
RearmBuildings:
|
||||
Repulsable: False
|
||||
LimitedAmmo:
|
||||
Ammo: 5
|
||||
@@ -117,111 +167,44 @@ ORNI.bomber:
|
||||
Tooltip:
|
||||
Name: Ornithopter
|
||||
LeavesHusk:
|
||||
HuskActor: ORNI.bomber.Husk
|
||||
HuskActor: orni.bomber.husk
|
||||
RejectsOrders:
|
||||
|
||||
CARRYALL.infantry:
|
||||
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:
|
||||
orni.husk:
|
||||
Inherits: ^AircraftHusk
|
||||
Tooltip:
|
||||
Name: Ornithopter
|
||||
Helicopter:
|
||||
ROT: 6
|
||||
Speed: 280
|
||||
RepairBuildings: repaira,repairo,repairh
|
||||
RearmBuildings: starporta,starporto,starporth
|
||||
RepairBuildings: repair
|
||||
RearmBuildings:
|
||||
RenderUnit:
|
||||
Image: orni
|
||||
WithShadow:
|
||||
|
||||
ORNI.bomber.Husk:
|
||||
orni.bomber.husk:
|
||||
Inherits: ^AircraftHusk
|
||||
Tooltip:
|
||||
Name: Ornithopter
|
||||
Plane:
|
||||
ROT: 5
|
||||
Speed: 350
|
||||
RepairBuildings: repaira,repairo,repairh
|
||||
RearmBuildings: starporta,starporto,starporth
|
||||
RepairBuildings: repair
|
||||
RearmBuildings:
|
||||
RenderUnit:
|
||||
Image: orni
|
||||
WithShadow:
|
||||
|
||||
CARRYALL.infantry.Husk:
|
||||
carryall.infantry.husk:
|
||||
Inherits: ^AircraftHusk
|
||||
Tooltip:
|
||||
Name: Carryall
|
||||
Plane:
|
||||
ROT: 4
|
||||
Speed: 280
|
||||
RepairBuildings: repaira,repairo,repairh
|
||||
RearmBuildings: starporta,starporto,starporth
|
||||
RepairBuildings: repair
|
||||
RearmBuildings:
|
||||
RenderUnit:
|
||||
Image: carryall
|
||||
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:
|
||||
Building:
|
||||
Footprint: x
|
||||
@@ -19,7 +19,7 @@ SPICEBLOOM:
|
||||
BodyOrientation:
|
||||
WithMakeAnimation:
|
||||
|
||||
SANDWORM:
|
||||
sandworm:
|
||||
Tooltip:
|
||||
Name: Sandworm
|
||||
Description: Attracted by vibrations in the sand.\nWill eat units whole and has a large appetite.
|
||||
@@ -53,4 +53,25 @@ SANDWORM:
|
||||
IgnoresCloak:
|
||||
AnnounceOnSeen:
|
||||
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
|
||||
GivesBounty:
|
||||
Repairable:
|
||||
RepairBuildings: repaira,repairo,repairh
|
||||
RepairBuildings: repair
|
||||
CombatDebugOverlay:
|
||||
Guard:
|
||||
Voice: Guard
|
||||
@@ -83,7 +83,7 @@
|
||||
Types: Tank
|
||||
GivesBounty:
|
||||
Repairable:
|
||||
RepairBuildings: repaira,repairo,repairh
|
||||
RepairBuildings: repair
|
||||
CombatDebugOverlay:
|
||||
Guard:
|
||||
Voice: Guard
|
||||
@@ -135,6 +135,7 @@
|
||||
ForceHealthPercentage: 25
|
||||
DisabledOverlay:
|
||||
ScriptTriggers:
|
||||
RenderUnit:
|
||||
|
||||
^TowerHusk:
|
||||
Health:
|
||||
@@ -271,6 +272,7 @@
|
||||
UpgradeManager:
|
||||
AnnounceOnSeen:
|
||||
Notification: EnemyUnitsApproaching
|
||||
RenderUnit:
|
||||
|
||||
^Helicopter:
|
||||
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
|
||||
Buildable:
|
||||
Queue: Infantry
|
||||
BuildPaletteOrder: 10
|
||||
Prerequisites: ~barracks
|
||||
Valued:
|
||||
Cost: 100
|
||||
Tooltip:
|
||||
@@ -22,12 +21,12 @@ RIFLE:
|
||||
AttractsWorms:
|
||||
Intensity: 120
|
||||
|
||||
ENGINEER:
|
||||
engineer:
|
||||
Inherits: ^Infantry
|
||||
Buildable:
|
||||
Queue: Infantry
|
||||
BuildPaletteOrder: 50
|
||||
Prerequisites: ~barracks, radar, ~techlevel.medium
|
||||
Prerequisites: radar, ~techlevel.medium
|
||||
Valued:
|
||||
Cost: 500
|
||||
Tooltip:
|
||||
@@ -51,12 +50,12 @@ ENGINEER:
|
||||
AttractsWorms:
|
||||
Intensity: 180
|
||||
|
||||
BAZOOKA:
|
||||
bazooka:
|
||||
Inherits: ^Infantry
|
||||
Buildable:
|
||||
Queue: Infantry
|
||||
BuildPaletteOrder: 20
|
||||
Prerequisites: ~barracks, radar, ~techlevel.medium
|
||||
Prerequisites: radar, ~techlevel.medium
|
||||
Valued:
|
||||
Cost: 250
|
||||
Tooltip:
|
||||
@@ -76,12 +75,12 @@ BAZOOKA:
|
||||
AttractsWorms:
|
||||
Intensity: 180
|
||||
|
||||
MEDIC:
|
||||
medic:
|
||||
Inherits: ^Infantry
|
||||
Buildable:
|
||||
Queue: Infantry
|
||||
BuildPaletteOrder: 60
|
||||
Prerequisites: ~medics, ~techlevel.high
|
||||
Prerequisites: ~barracks.medics, ~techlevel.high
|
||||
Valued:
|
||||
Cost: 500
|
||||
Tooltip:
|
||||
@@ -108,3 +107,124 @@ MEDIC:
|
||||
AttractsWorms:
|
||||
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:
|
||||
Name: Crate
|
||||
Crate:
|
||||
@@ -98,21 +98,10 @@ CRATE:
|
||||
Units: deviatortank
|
||||
ValidRaces: ordos
|
||||
Prerequisites: techlevel.high, Research
|
||||
GiveMcvCrateAction@Atreides:
|
||||
GiveMcvCrateAction:
|
||||
SelectionShares: 0
|
||||
NoBaseSelectionShares: 9001
|
||||
Units: mcva
|
||||
ValidRaces: atreides
|
||||
GiveMcvCrateAction@Harkonnen:
|
||||
SelectionShares: 0
|
||||
NoBaseSelectionShares: 9001
|
||||
Units: mcvh
|
||||
ValidRaces: harkonnen
|
||||
GiveMcvCrateAction@Ordos:
|
||||
SelectionShares: 0
|
||||
NoBaseSelectionShares: 9001
|
||||
Units: mcvo
|
||||
ValidRaces: ordos
|
||||
Units: mcv
|
||||
GrantUpgradeCrateAction@cloak:
|
||||
SelectionShares: 5
|
||||
Effect: cloak
|
||||
@@ -141,14 +130,14 @@ waypoint:
|
||||
BodyOrientation:
|
||||
|
||||
^carryall.colorpicker:
|
||||
Inherits: ^CARRYALL
|
||||
Inherits: carryall
|
||||
RenderUnit:
|
||||
Image: carryall
|
||||
Palette: colorpicker
|
||||
Helicopter:
|
||||
InitialFacing: 104
|
||||
|
||||
CAMERA:
|
||||
camera:
|
||||
Immobile:
|
||||
OccupiesSpace: false
|
||||
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:
|
||||
Adjacent: 4
|
||||
TerrainTypes: Rock
|
||||
@@ -13,32 +13,27 @@
|
||||
RenderSprites:
|
||||
KillsSelf:
|
||||
RemoveInstead: true
|
||||
Buildable:
|
||||
Queue: Building
|
||||
BuildPaletteOrder: 10
|
||||
|
||||
CONCRETEA:
|
||||
Inherits: ^CONCRETE
|
||||
concretea:
|
||||
Inherits: ^concrete
|
||||
Building:
|
||||
Footprint: xx xx
|
||||
Dimensions: 2,2
|
||||
Buildable:
|
||||
Queue: Building
|
||||
BuildPaletteOrder: 10
|
||||
Prerequisites: ~conyard
|
||||
Valued:
|
||||
Cost: 20
|
||||
|
||||
CONCRETEB:
|
||||
Inherits: ^CONCRETE
|
||||
concreteb:
|
||||
Inherits: ^concrete
|
||||
Building:
|
||||
Footprint: xxx xxx xxx
|
||||
Dimensions: 3,3
|
||||
Buildable:
|
||||
Queue: Building
|
||||
BuildPaletteOrder: 10
|
||||
Prerequisites: ~conyard
|
||||
Valued:
|
||||
Cost: 50
|
||||
|
||||
^CONYARD:
|
||||
conyard:
|
||||
Inherits: ^Building
|
||||
Building:
|
||||
Footprint: xxx xxx
|
||||
@@ -48,10 +43,6 @@ CONCRETEB:
|
||||
TerrainTypes: Rock
|
||||
Template: 88
|
||||
Bib:
|
||||
Buildable:
|
||||
Queue: Building
|
||||
BuildPaletteOrder: 1000
|
||||
Prerequisites: ~disabled
|
||||
Selectable:
|
||||
Bounds: 96,64
|
||||
Health:
|
||||
@@ -70,17 +61,21 @@ CONCRETEB:
|
||||
Value: 2000
|
||||
BaseBuilding:
|
||||
ProductionBar:
|
||||
ProvidesCustomPrerequisite:
|
||||
Prerequisite: conyard
|
||||
WithBuildingPlacedOverlay:
|
||||
Palette: d2k
|
||||
Power:
|
||||
Amount: 20
|
||||
RenderBuilding:
|
||||
Image: conyard.harkonnen
|
||||
RaceImages:
|
||||
atreides: conyard.atreides
|
||||
ordos: conyard.ordos
|
||||
corrino: conyard.corrino
|
||||
WithBuildingPlacedOverlay:
|
||||
Palette: d2k
|
||||
PrimaryBuilding:
|
||||
|
||||
^POWER:
|
||||
power:
|
||||
Inherits: ^Building
|
||||
Buildable:
|
||||
Prerequisites: ~conyard
|
||||
Queue: Building
|
||||
BuildPaletteOrder: 10
|
||||
Selectable:
|
||||
@@ -100,18 +95,21 @@ CONCRETEB:
|
||||
Type: Wood
|
||||
RevealsShroud:
|
||||
Range: 4c0
|
||||
ProvidesCustomPrerequisite:
|
||||
Prerequisite: power
|
||||
RenderBuilding:
|
||||
Image: power.harkonnen
|
||||
RaceImages:
|
||||
atreides: power.atreides
|
||||
ordos: power.ordos
|
||||
WithIdleOverlay@ZAPS:
|
||||
Sequence: idle-zaps
|
||||
Power:
|
||||
Amount: 100
|
||||
ScalePowerWithHealth:
|
||||
|
||||
^BARRACKS:
|
||||
barracks:
|
||||
Inherits: ^Building
|
||||
Buildable:
|
||||
Prerequisites: ~conyard, power
|
||||
Prerequisites: power
|
||||
Queue: Building
|
||||
BuildPaletteOrder: 40
|
||||
Selectable:
|
||||
@@ -143,15 +141,30 @@ CONCRETEB:
|
||||
Produces: Infantry
|
||||
PrimaryBuilding:
|
||||
ProductionBar:
|
||||
ProvidesCustomPrerequisite:
|
||||
Prerequisite: barracks
|
||||
ProvidesCustomPrerequisite@atreides:
|
||||
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:
|
||||
Amount: -20
|
||||
RenderBuilding:
|
||||
Image: barracks.harkonnen
|
||||
RaceImages:
|
||||
atreides: barracks.atreides
|
||||
ordos: barracks.ordos
|
||||
|
||||
^REFINERY:
|
||||
refinery:
|
||||
Inherits: ^Building
|
||||
Buildable:
|
||||
Prerequisites: ~conyard, ~power
|
||||
Prerequisites: power
|
||||
Queue: Building
|
||||
BuildPaletteOrder: 20
|
||||
Selectable:
|
||||
@@ -182,12 +195,16 @@ CONCRETEB:
|
||||
CustomSellValue:
|
||||
Value: 500
|
||||
FreeActor:
|
||||
Actor: HARVESTER
|
||||
Actor: harvester
|
||||
InitialActivity: FindResources
|
||||
SpawnOffset: 2,1
|
||||
Facing: 160
|
||||
ProvidesCustomPrerequisite:
|
||||
Prerequisite: refinery
|
||||
-RenderBuilding:
|
||||
RenderBuildingWarFactory:
|
||||
Image: refinery.harkonnen
|
||||
RaceImages:
|
||||
atreides: refinery.atreides
|
||||
ordos: refinery.ordos
|
||||
WithDockingOverlay@SMOKE:
|
||||
Sequence: smoke
|
||||
Power:
|
||||
@@ -195,10 +212,10 @@ CONCRETEB:
|
||||
WithIdleOverlay@TOP:
|
||||
Sequence: idle-top
|
||||
|
||||
^SILO:
|
||||
silo:
|
||||
Inherits: ^Building
|
||||
Buildable:
|
||||
Prerequisites: ~conyard, refinery
|
||||
Prerequisites: refinery
|
||||
Queue: Building
|
||||
BuildPaletteOrder: 30
|
||||
Selectable:
|
||||
@@ -219,6 +236,10 @@ CONCRETEB:
|
||||
Range: 4c0
|
||||
-RenderBuilding:
|
||||
RenderBuildingSilo:
|
||||
Image: silo.harkonnen
|
||||
RaceImages:
|
||||
atreides: silo.atreides
|
||||
ordos: silo.ordos
|
||||
StoresResources:
|
||||
PipColor: green
|
||||
PipCount: 5
|
||||
@@ -229,10 +250,10 @@ CONCRETEB:
|
||||
MustBeDestroyed:
|
||||
RequiredForShortGame: false
|
||||
|
||||
^LIGHT:
|
||||
light:
|
||||
Inherits: ^Building
|
||||
Buildable:
|
||||
Prerequisites: ~conyard, refinery
|
||||
Prerequisites: refinery
|
||||
Queue: Building
|
||||
BuildPaletteOrder: 70
|
||||
Selectable:
|
||||
@@ -252,6 +273,11 @@ CONCRETEB:
|
||||
Type: Wood
|
||||
RevealsShroud:
|
||||
Range: 4c0
|
||||
RenderBuilding:
|
||||
Image: light.harkonnen
|
||||
RaceImages:
|
||||
atreides: light.atreides
|
||||
ordos: light.ordos
|
||||
RallyPoint:
|
||||
RallyPoint: 2,2
|
||||
Exit@1:
|
||||
@@ -261,8 +287,18 @@ CONCRETEB:
|
||||
Produces: Vehicle
|
||||
PrimaryBuilding:
|
||||
ProductionBar:
|
||||
ProvidesCustomPrerequisite:
|
||||
Prerequisite: light
|
||||
ProvidesCustomPrerequisite@atreides:
|
||||
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:
|
||||
Sequence: production-welding
|
||||
WithIdleOverlay@TOP:
|
||||
@@ -270,10 +306,10 @@ CONCRETEB:
|
||||
Power:
|
||||
Amount: -20
|
||||
|
||||
^HEAVY:
|
||||
heavy:
|
||||
Inherits: ^Building
|
||||
Buildable:
|
||||
Prerequisites: ~conyard, refinery
|
||||
Prerequisites: refinery
|
||||
Queue: Building
|
||||
BuildPaletteOrder: 100
|
||||
Selectable:
|
||||
@@ -302,8 +338,21 @@ CONCRETEB:
|
||||
Produces: Armor
|
||||
PrimaryBuilding:
|
||||
ProductionBar:
|
||||
ProvidesCustomPrerequisite:
|
||||
Prerequisite: heavy
|
||||
ProvidesCustomPrerequisite@atreides:
|
||||
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:
|
||||
Sequence: production-welding
|
||||
WithIdleOverlay@TOP:
|
||||
@@ -311,13 +360,13 @@ CONCRETEB:
|
||||
Power:
|
||||
Amount: -30
|
||||
|
||||
^RADAR:
|
||||
radar:
|
||||
Inherits: ^Building
|
||||
RequiresPower:
|
||||
CanPowerDown:
|
||||
DisabledOverlay:
|
||||
Buildable:
|
||||
Prerequisites: ~conyard, barracks, ~techlevel.medium
|
||||
Prerequisites: barracks, ~techlevel.medium
|
||||
Queue: Building
|
||||
BuildPaletteOrder: 50
|
||||
Selectable:
|
||||
@@ -341,15 +390,18 @@ CONCRETEB:
|
||||
DetectCloaked:
|
||||
Range: 6
|
||||
RenderDetectionCircle:
|
||||
ProvidesCustomPrerequisite:
|
||||
Prerequisite: radar
|
||||
RenderBuilding:
|
||||
Image: radar.harkonnen
|
||||
RaceImages:
|
||||
atreides: radar.atreides
|
||||
ordos: radar.ordos
|
||||
WithIdleOverlay@DISH:
|
||||
Sequence: idle-dish
|
||||
PauseOnLowPower: yes
|
||||
Power:
|
||||
Amount: -40
|
||||
|
||||
^STARPORT:
|
||||
starport:
|
||||
Inherits: ^Building
|
||||
Valued:
|
||||
Cost: 2000
|
||||
@@ -357,7 +409,7 @@ CONCRETEB:
|
||||
Name: Starport
|
||||
Description: Dropzone for quick reinforcements, at a price.\n Requires power to operate
|
||||
Buildable:
|
||||
Prerequisites: ~conyard, radar, ~techlevel.high
|
||||
Prerequisites: radar, ~techlevel.high
|
||||
Queue: Building
|
||||
BuildPaletteOrder: 80
|
||||
Building:
|
||||
@@ -382,6 +434,12 @@ CONCRETEB:
|
||||
ProductionAirdrop:
|
||||
Produces: Starport
|
||||
ActorType: frigate
|
||||
RenderBuilding:
|
||||
Image: starport.harkonnen
|
||||
RaceImages:
|
||||
atreides: starport.atreides
|
||||
ordos: starport.ordos
|
||||
corrino: starport.corrino
|
||||
WithDeliveryOverlay:
|
||||
Palette: starportlights
|
||||
ProductionBar:
|
||||
@@ -389,15 +447,22 @@ CONCRETEB:
|
||||
RequiresPower:
|
||||
CanPowerDown:
|
||||
DisabledOverlay:
|
||||
ProvidesCustomPrerequisite:
|
||||
Prerequisite: starport
|
||||
ProvidesCustomPrerequisite@atreides:
|
||||
Prerequisite: starport.atreides
|
||||
Race: atreides
|
||||
ProvidesCustomPrerequisite@ordos:
|
||||
Prerequisite: starport.ordos
|
||||
Race: ordos
|
||||
ProvidesCustomPrerequisite@harkonnen:
|
||||
Prerequisite: starport.harkonnen
|
||||
Race: harkonnen
|
||||
Power:
|
||||
Amount: -40
|
||||
|
||||
^WALL:
|
||||
wall:
|
||||
Buildable:
|
||||
Queue: Building
|
||||
Prerequisites: ~conyard, barracks
|
||||
Prerequisites: barracks
|
||||
BuildPaletteOrder: 60
|
||||
SoundOnDamageTransition:
|
||||
DamagedSound:
|
||||
@@ -429,7 +494,6 @@ CONCRETEB:
|
||||
TargetableBuilding:
|
||||
TargetTypes: Ground
|
||||
RenderBuildingWall:
|
||||
Image: walla
|
||||
EditorAppearance:
|
||||
RelativeToTopLeft: yes
|
||||
AutoTargetIgnore:
|
||||
@@ -444,16 +508,11 @@ CONCRETEB:
|
||||
Pieces: 3, 7
|
||||
Range: 2c0, 5c0
|
||||
|
||||
WALL:
|
||||
Inherits: ^WALL
|
||||
Buildable:
|
||||
Prerequisites: ~disabled
|
||||
|
||||
^GUNTOWER:
|
||||
guntower:
|
||||
Inherits: ^Building
|
||||
Buildable:
|
||||
Queue: Building
|
||||
Prerequisites: ~conyard, barracks
|
||||
Prerequisites: barracks
|
||||
BuildPaletteOrder: 90
|
||||
Valued:
|
||||
Cost: 650
|
||||
@@ -504,11 +563,11 @@ WALL:
|
||||
MustBeDestroyed:
|
||||
RequiredForShortGame: false
|
||||
|
||||
^ROCKETTOWER:
|
||||
rockettower:
|
||||
Inherits: ^Building
|
||||
Buildable:
|
||||
Queue: Building
|
||||
Prerequisites: ~conyard, radar, ~techlevel.medium
|
||||
Prerequisites: radar, ~techlevel.medium
|
||||
BuildPaletteOrder: 120
|
||||
Valued:
|
||||
Cost: 850
|
||||
@@ -559,11 +618,11 @@ WALL:
|
||||
MustBeDestroyed:
|
||||
RequiredForShortGame: false
|
||||
|
||||
^REPAIR:
|
||||
repair:
|
||||
Inherits: ^Building
|
||||
Buildable:
|
||||
Queue: Building
|
||||
Prerequisites: ~conyard, heavy, ~techlevel.medium
|
||||
Prerequisites: heavy, ~techlevel.medium
|
||||
BuildPaletteOrder: 130
|
||||
Valued:
|
||||
Cost: 500
|
||||
@@ -586,17 +645,20 @@ WALL:
|
||||
FinishRepairingNotification: UnitRepaired
|
||||
RallyPoint:
|
||||
RallyPoint: 1,3
|
||||
ProvidesCustomPrerequisite:
|
||||
Prerequisite: repair
|
||||
RenderBuilding:
|
||||
Image: repair.harkonnen
|
||||
RaceImages:
|
||||
atreides: repair.atreides
|
||||
ordos: repair.ordos
|
||||
WithRepairOverlay:
|
||||
Palette: repairlights
|
||||
Power:
|
||||
Amount: -10
|
||||
|
||||
^HIGHTECH:
|
||||
hightech:
|
||||
Inherits: ^Building
|
||||
Buildable:
|
||||
Prerequisites: ~conyard, radar, ~techlevel.medium
|
||||
Prerequisites: radar, ~techlevel.medium
|
||||
Queue: Building
|
||||
BuildPaletteOrder: 110
|
||||
Selectable:
|
||||
@@ -621,18 +683,21 @@ WALL:
|
||||
Type: Wood
|
||||
RevealsShroud:
|
||||
Range: 4c0
|
||||
ProvidesCustomPrerequisite:
|
||||
Prerequisite: hightech
|
||||
RenderBuilding:
|
||||
Image: hightech.harkonnen
|
||||
RaceImages:
|
||||
atreides: hightech.atreides
|
||||
ordos: hightech.ordos
|
||||
WithProductionOverlay@WELDING:
|
||||
Sequence: production-welding
|
||||
Power:
|
||||
Amount: -40
|
||||
|
||||
^RESEARCH:
|
||||
research:
|
||||
Inherits: ^Building
|
||||
Buildable:
|
||||
Queue: Building
|
||||
Prerequisites: ~conyard, hightech, ~techlevel.high
|
||||
Prerequisites: hightech, ~techlevel.high
|
||||
BuildPaletteOrder: 140
|
||||
Selectable:
|
||||
Bounds: 96,64
|
||||
@@ -662,17 +727,20 @@ WALL:
|
||||
Type: Wood
|
||||
RevealsShroud:
|
||||
Range: 4c0
|
||||
ProvidesCustomPrerequisite:
|
||||
Prerequisite: research
|
||||
RenderBuilding:
|
||||
Image: research.harkonnen
|
||||
RaceImages:
|
||||
atreides: research.atreides
|
||||
ordos: research.ordos
|
||||
WithIdleOverlay@LIGHTS:
|
||||
Sequence: idle-lights
|
||||
Power:
|
||||
Amount: -40
|
||||
|
||||
^PALACE:
|
||||
palace:
|
||||
Inherits: ^Building
|
||||
Buildable:
|
||||
Prerequisites: ~conyard, research, ~techlevel.high
|
||||
Prerequisites: research, ~techlevel.high
|
||||
Queue: Building
|
||||
BuildPaletteOrder: 150
|
||||
Selectable:
|
||||
@@ -681,7 +749,7 @@ WALL:
|
||||
Cost: 2000
|
||||
Tooltip:
|
||||
Name: Palace
|
||||
Description: Unlocks elite infantry\n Special Ability: Ornithopter Strike
|
||||
Description: Unlocks elite infantry and support powers
|
||||
Building:
|
||||
Footprint: xx= xxx =xx
|
||||
Dimensions: 3,3
|
||||
@@ -693,72 +761,83 @@ WALL:
|
||||
Type: Wood
|
||||
RevealsShroud:
|
||||
Range: 8c0
|
||||
RenderBuilding:
|
||||
Image: palace.harkonnen
|
||||
RaceImages:
|
||||
atreides: palace.atreides
|
||||
ordos: palace.ordos
|
||||
corrino: palace.corrino
|
||||
RenderDetectionCircle:
|
||||
DetectCloaked:
|
||||
Range: 4
|
||||
ProvidesCustomPrerequisite:
|
||||
Prerequisite: palace
|
||||
Power:
|
||||
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:
|
||||
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
|
||||
conyard.atreides:
|
||||
Inherits: conyard
|
||||
Buildable:
|
||||
Queue: Building
|
||||
BuildPaletteOrder: 1000
|
||||
Prerequisites: ~disabled
|
||||
ForceRace: atreides
|
||||
RenderBuilding:
|
||||
Image: conyard.atreides
|
||||
-RaceImages:
|
||||
|
||||
CONYARD:
|
||||
Tooltip:
|
||||
Name: Construction Yard
|
||||
|
||||
BARRACKS:
|
||||
Tooltip:
|
||||
Name: Barracks
|
||||
|
||||
LIGHT:
|
||||
Tooltip:
|
||||
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.harkonnen:
|
||||
Inherits: conyard
|
||||
Buildable:
|
||||
Queue: Building
|
||||
BuildPaletteOrder: 1000
|
||||
Prerequisites: ~disabled
|
||||
ForceRace: harkonnen
|
||||
RenderBuilding:
|
||||
Image: conyard.harkonnen
|
||||
-RaceImages:
|
||||
|
||||
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
|
||||
Buildable:
|
||||
Prerequisites: ~heavy, repair, ~techlevel.medium
|
||||
Prerequisites: repair, ~techlevel.medium
|
||||
Queue: Armor
|
||||
BuildPaletteOrder: 110
|
||||
Valued:
|
||||
@@ -28,26 +28,21 @@
|
||||
Weapon: UnitExplodeScale
|
||||
EmptyWeapon: UnitExplodeScale
|
||||
Transforms:
|
||||
Facing: 16
|
||||
IntoActor: conyard
|
||||
Offset: -1,-1
|
||||
TransformSounds: BUILD1.WAV
|
||||
NoTransformNotification: CannotDeploy
|
||||
LeavesHusk:
|
||||
HuskActor: MCV.Husk
|
||||
HuskActor: mcv.husk
|
||||
AttractsWorms:
|
||||
Intensity: 700
|
||||
|
||||
MCV.Husk:
|
||||
Inherits: ^Husk
|
||||
Health:
|
||||
HP: 175
|
||||
Tooltip:
|
||||
Name: Destroyed Mobile Construction Vehicle
|
||||
RenderUnit:
|
||||
Image: dmcv.destroyed
|
||||
|
||||
HARVESTER:
|
||||
harvester:
|
||||
Inherits: ^Vehicle
|
||||
Buildable:
|
||||
Queue: Armor
|
||||
Prerequisites: ~heavy, refinery
|
||||
Prerequisites: refinery
|
||||
BuildPaletteOrder: 10
|
||||
InitialActivity: FindResources
|
||||
Valued:
|
||||
@@ -74,8 +69,6 @@ HARVESTER:
|
||||
Mobile:
|
||||
Speed: 64
|
||||
Crushes: crate, infantry
|
||||
RenderUnit:
|
||||
Image: HARVESTER
|
||||
RevealsShroud:
|
||||
Range: 4c0
|
||||
Explodes:
|
||||
@@ -87,31 +80,12 @@ HARVESTER:
|
||||
AttractsWorms:
|
||||
Intensity: 700
|
||||
|
||||
HARVESTER.Husk:
|
||||
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:
|
||||
trike:
|
||||
Inherits: ^Vehicle
|
||||
Buildable:
|
||||
Queue: Vehicle
|
||||
BuildPaletteOrder: 10
|
||||
Prerequisites: ~trikes
|
||||
Prerequisites: ~light.regulartrikes
|
||||
Valued:
|
||||
Cost: 250
|
||||
Tooltip:
|
||||
@@ -142,21 +116,11 @@ TRIKE:
|
||||
AttractsWorms:
|
||||
Intensity: 420
|
||||
|
||||
TRIKE.starport:
|
||||
Inherits: TRIKE
|
||||
Buildable:
|
||||
Queue: Starport
|
||||
Prerequisites: starport
|
||||
Valued:
|
||||
Cost: 315
|
||||
RenderUnit:
|
||||
Image: TRIKE
|
||||
|
||||
QUAD:
|
||||
quad:
|
||||
Inherits: ^Vehicle
|
||||
Buildable:
|
||||
Queue: Vehicle
|
||||
Prerequisites: ~light, radar, ~techlevel.medium
|
||||
Prerequisites: radar, ~techlevel.medium
|
||||
BuildPaletteOrder: 20
|
||||
Valued:
|
||||
Cost: 400
|
||||
@@ -185,70 +149,11 @@ QUAD:
|
||||
AttractsWorms:
|
||||
Intensity: 470
|
||||
|
||||
QUAD.starport:
|
||||
Inherits: QUAD
|
||||
Buildable:
|
||||
Prerequisites: starport
|
||||
Queue: Starport
|
||||
Valued:
|
||||
Cost: 500
|
||||
RenderUnit:
|
||||
Image: QUAD
|
||||
|
||||
^COMBAT:
|
||||
siegetank:
|
||||
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: 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
|
||||
Prerequisites: radar, ~techlevel.medium
|
||||
BuildPaletteOrder: 50
|
||||
Valued:
|
||||
Cost: 850
|
||||
@@ -287,29 +192,11 @@ SIEGETANK:
|
||||
Selectable:
|
||||
Bounds: 30,30
|
||||
LeavesHusk:
|
||||
HuskActor: Siegetank.Husk
|
||||
HuskActor: siegetank.husk
|
||||
AttractsWorms:
|
||||
Intensity: 600
|
||||
|
||||
SIEGETANK.Husk:
|
||||
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:
|
||||
missiletank:
|
||||
Inherits: ^Tank
|
||||
Valued:
|
||||
Cost: 1000
|
||||
@@ -318,7 +205,7 @@ MISSILETANK:
|
||||
Description: Rocket Artillery\n Strong vs Vehicles, Buildings\n Weak vs Infantry, Aircraft
|
||||
Buildable:
|
||||
Queue: Armor
|
||||
Prerequisites: ~heavy, hightech, ~techlevel.high
|
||||
Prerequisites: hightech, ~techlevel.high
|
||||
BuildPaletteOrder: 60
|
||||
Mobile:
|
||||
Speed: 64
|
||||
@@ -329,8 +216,6 @@ MISSILETANK:
|
||||
Type: Light
|
||||
RevealsShroud:
|
||||
Range: 9c0
|
||||
RenderUnit:
|
||||
Image: MISSILETANK
|
||||
Armament:
|
||||
Weapon: 227mm
|
||||
LocalOffset: -213,128,171, -213,-256,171
|
||||
@@ -344,22 +229,251 @@ MISSILETANK:
|
||||
Selectable:
|
||||
Bounds: 30,30
|
||||
LeavesHusk:
|
||||
HuskActor: Missiletank.Husk
|
||||
HuskActor: missiletank.husk
|
||||
AttractsWorms:
|
||||
Intensity: 600
|
||||
|
||||
MISSILETANK.Husk:
|
||||
Inherits: ^Husk
|
||||
RenderUnit:
|
||||
Image: missiletank.destroyed
|
||||
TransformOnCapture:
|
||||
IntoActor: missiletank
|
||||
|
||||
MISSILETANK.starport:
|
||||
Inherits: MISSILETANK
|
||||
sonictank:
|
||||
Inherits: ^Vehicle
|
||||
Buildable:
|
||||
Prerequisites: starport
|
||||
Queue: Starport
|
||||
Queue: Armor
|
||||
BuildPaletteOrder: 100
|
||||
Prerequisites: ~heavy.atreides, 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
|
||||
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:
|
||||
Name: Ordos
|
||||
Race: ordos
|
||||
Country@Corrino:
|
||||
Name: Corrino
|
||||
Race: corrino
|
||||
Selectable: false
|
||||
DomainIndex:
|
||||
PathfinderDebugOverlay:
|
||||
TerrainGeometryOverlay:
|
||||
@@ -132,26 +136,16 @@ World:
|
||||
SpawnMapActors:
|
||||
CreateMPPlayers:
|
||||
MPStartLocations:
|
||||
MPStartUnits@mcvatreides:
|
||||
MPStartUnits@mcv:
|
||||
Class: none
|
||||
ClassName: MCV Only
|
||||
Races: atreides
|
||||
BaseActor: mcva
|
||||
MPStartUnits@mcvharkonnen:
|
||||
Class: none
|
||||
Races: harkonnen
|
||||
ClassName: MCV Only
|
||||
BaseActor: mcvh
|
||||
MPStartUnits@mcvordos:
|
||||
Class: none
|
||||
ClassName: MCV Only
|
||||
Races: ordos
|
||||
BaseActor: mcvo
|
||||
BaseActor: mcv
|
||||
Races: atreides, ordos, harkonnen
|
||||
MPStartUnits@lightatreides:
|
||||
Class: light
|
||||
ClassName: Light Support
|
||||
Races: atreides
|
||||
BaseActor: mcva
|
||||
BaseActor: mcv
|
||||
SupportActors: rifle, rifle, rifle, bazooka, grenadier, trike, quad
|
||||
InnerSupportRadius: 3
|
||||
OuterSupportRadius: 5
|
||||
@@ -159,7 +153,7 @@ World:
|
||||
Class: light
|
||||
ClassName: Light Support
|
||||
Races: harkonnen
|
||||
BaseActor: mcvh
|
||||
BaseActor: mcv
|
||||
SupportActors: rifle, rifle, rifle, bazooka, bazooka, trike, quad
|
||||
InnerSupportRadius: 3
|
||||
OuterSupportRadius: 5
|
||||
@@ -167,7 +161,7 @@ World:
|
||||
Class: light
|
||||
ClassName: Light Support
|
||||
Races: ordos
|
||||
BaseActor: mcvo
|
||||
BaseActor: mcv
|
||||
SupportActors: rifle, rifle, rifle, bazooka, engineer, raider, quad
|
||||
InnerSupportRadius: 3
|
||||
OuterSupportRadius: 5
|
||||
@@ -175,7 +169,7 @@ World:
|
||||
Class: heavy
|
||||
ClassName: Heavy Support
|
||||
Races: atreides
|
||||
BaseActor: mcva
|
||||
BaseActor: mcv
|
||||
SupportActors: rifle, rifle, rifle, bazooka, grenadier, trike, combata, missiletank
|
||||
InnerSupportRadius: 3
|
||||
OuterSupportRadius: 5
|
||||
@@ -183,7 +177,7 @@ World:
|
||||
Class: heavy
|
||||
ClassName: Heavy Support
|
||||
Races: harkonnen
|
||||
BaseActor: mcvh
|
||||
BaseActor: mcv
|
||||
SupportActors: rifle, rifle, rifle, bazooka, engineer, quad, combath, siegetank
|
||||
InnerSupportRadius: 3
|
||||
OuterSupportRadius: 5
|
||||
@@ -191,7 +185,7 @@ World:
|
||||
Class: heavy
|
||||
ClassName: Heavy Support
|
||||
Races: ordos
|
||||
BaseActor: mcvo
|
||||
BaseActor: mcv
|
||||
SupportActors: rifle, rifle, rifle, bazooka, engineer, raider, combato, missiletank
|
||||
InnerSupportRadius: 3
|
||||
OuterSupportRadius: 5
|
||||
|
||||
@@ -8,7 +8,7 @@ concreteb:
|
||||
Start:4053
|
||||
Offset: -30,-24
|
||||
|
||||
walla:
|
||||
wall:
|
||||
idle: DATA
|
||||
Frames: 2527, 2530, 2528, 2538, 2531, 2532, 2542, 2535, 2529, 2539, 2533, 2534, 2540, 2536, 2537, 2541
|
||||
Length: 16
|
||||
@@ -21,33 +21,7 @@ walla:
|
||||
Start: 4063
|
||||
Offset: -30,-24
|
||||
|
||||
wallh:
|
||||
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:
|
||||
guntower:
|
||||
idle: DATA
|
||||
Frames: 2573, 2576, 2574, 2584, 2577, 2578, 2588, 2581, 2575, 2585, 2579, 2580, 2586, 2582, 2583, 2587
|
||||
Length: 16
|
||||
@@ -70,53 +44,7 @@ guntowera:
|
||||
Start: 4069
|
||||
Offset: -30,-24
|
||||
|
||||
guntowerh:
|
||||
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:
|
||||
rockettower:
|
||||
idle: DATA
|
||||
Frames: 2573, 2576, 2574, 2584, 2577, 2578, 2588, 2581, 2575, 2585, 2579, 2580, 2586, 2582, 2583, 2587
|
||||
Length: 16
|
||||
@@ -133,41 +61,7 @@ rockettowera:
|
||||
Start: 4075
|
||||
Offset: -30,-24
|
||||
|
||||
rockettowerh:
|
||||
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:
|
||||
conyard.atreides:
|
||||
idle: DATA
|
||||
Start: 2559
|
||||
Offset: -48,64
|
||||
@@ -205,7 +99,7 @@ conyarda:
|
||||
Start: 4046
|
||||
Offset: -30,-24
|
||||
|
||||
repaira:
|
||||
repair.atreides:
|
||||
make: DATA
|
||||
Start: 4370
|
||||
Length: 10
|
||||
@@ -240,7 +134,7 @@ repaira:
|
||||
Start: 4096
|
||||
Offset: -30,-24
|
||||
|
||||
repairh:
|
||||
repair.harkonnen:
|
||||
make: DATA
|
||||
Start: 4370
|
||||
Length: 10
|
||||
@@ -275,7 +169,7 @@ repairh:
|
||||
Start: 4097
|
||||
Offset: -30,-24
|
||||
|
||||
repairo:
|
||||
repair.ordos:
|
||||
make: DATA
|
||||
Start: 4370
|
||||
Length: 10
|
||||
@@ -310,7 +204,7 @@ repairo:
|
||||
Start: 4098
|
||||
Offset: -30,-24
|
||||
|
||||
starporta:
|
||||
starport.atreides:
|
||||
idle: DATA
|
||||
Start: 2671
|
||||
ZOffset: -1c511
|
||||
@@ -354,7 +248,7 @@ starporta:
|
||||
Start: 4092
|
||||
Offset: -30,-24
|
||||
|
||||
pwra:
|
||||
power.atreides:
|
||||
idle: DATA
|
||||
Start: 2523
|
||||
Offset: -32,64
|
||||
@@ -392,7 +286,7 @@ pwra:
|
||||
Start: 4056
|
||||
Offset: -30,-24
|
||||
|
||||
barra:
|
||||
barracks.atreides:
|
||||
idle: DATA
|
||||
Start: 2525
|
||||
Offset: -32,64
|
||||
@@ -420,7 +314,7 @@ barra:
|
||||
Start: 4059
|
||||
Offset: -30,-24
|
||||
|
||||
radara:
|
||||
radar.atreides:
|
||||
idle: DATA
|
||||
Start: 2521
|
||||
Offset: -48,80
|
||||
@@ -452,7 +346,7 @@ radara:
|
||||
Start: 4072
|
||||
Offset: -30,-24
|
||||
|
||||
refa:
|
||||
refinery.atreides:
|
||||
idle: DATA
|
||||
Start: 2561
|
||||
Length: 1
|
||||
@@ -493,7 +387,7 @@ refa:
|
||||
Tick: 200
|
||||
BlendMode: Additive
|
||||
|
||||
siloa:
|
||||
silo.atreides:
|
||||
idle: DATA
|
||||
Start: 2566
|
||||
Length: 4
|
||||
@@ -515,7 +409,7 @@ siloa:
|
||||
Start: 4084
|
||||
Offset: -30,-24
|
||||
|
||||
hightecha:
|
||||
hightech.atreides:
|
||||
idle: DATA
|
||||
Start: 2564
|
||||
Offset: -48,80
|
||||
@@ -549,7 +443,7 @@ hightecha:
|
||||
Start: 4078
|
||||
Offset: -30,-24
|
||||
|
||||
researcha:
|
||||
research.atreides:
|
||||
idle: DATA
|
||||
Start: 2669
|
||||
Offset: -48,80
|
||||
@@ -582,7 +476,7 @@ researcha:
|
||||
Start: 4099
|
||||
Offset: -30,-24
|
||||
|
||||
researchh:
|
||||
research.harkonnen:
|
||||
idle: DATA
|
||||
Start: 2829
|
||||
Offset: -48,80
|
||||
@@ -615,7 +509,7 @@ researchh:
|
||||
Start: 4100
|
||||
Offset: -30,-24
|
||||
|
||||
researcho:
|
||||
research.ordos:
|
||||
idle: DATA
|
||||
Start: 2989
|
||||
Offset: -48,80
|
||||
@@ -648,7 +542,7 @@ researcho:
|
||||
Start: 4101
|
||||
Offset: -30,-24
|
||||
|
||||
palacea:
|
||||
palace.atreides:
|
||||
idle: DATA
|
||||
Start: 2676
|
||||
Offset: -48,48
|
||||
@@ -676,7 +570,7 @@ palacea:
|
||||
Start: 4102
|
||||
Offset: -30,-24
|
||||
|
||||
lighta:
|
||||
light.atreides:
|
||||
idle: DATA
|
||||
Start: 2673
|
||||
Length: 1
|
||||
@@ -718,7 +612,7 @@ lighta:
|
||||
Start: 4081
|
||||
Offset: -30,-24
|
||||
|
||||
heavya:
|
||||
heavy.atreides:
|
||||
idle: DATA
|
||||
Start: 2518
|
||||
Length: 1
|
||||
@@ -761,7 +655,7 @@ heavya:
|
||||
Start: 4087
|
||||
Offset: -30,-24
|
||||
|
||||
conyardh:
|
||||
conyard.harkonnen:
|
||||
idle: DATA
|
||||
Start: 2719
|
||||
Offset: -48,64
|
||||
@@ -799,7 +693,7 @@ conyardh:
|
||||
Start: 4047
|
||||
Offset: -30,-24
|
||||
|
||||
starporth:
|
||||
starport.harkonnen:
|
||||
idle: DATA
|
||||
Start: 2831
|
||||
ZOffset: -1c511
|
||||
@@ -843,7 +737,7 @@ starporth:
|
||||
Start: 4093
|
||||
Offset: -30,-24
|
||||
|
||||
pwrh:
|
||||
power.harkonnen:
|
||||
idle: DATA
|
||||
Start: 2683
|
||||
Offset: -32,64
|
||||
@@ -881,7 +775,7 @@ pwrh:
|
||||
Start: 4057
|
||||
Offset: -30,-24
|
||||
|
||||
barrh:
|
||||
barracks.harkonnen:
|
||||
idle: DATA
|
||||
Start: 2685
|
||||
Offset: -32,64
|
||||
@@ -909,7 +803,7 @@ barrh:
|
||||
Start: 4060
|
||||
Offset: -30,-24
|
||||
|
||||
radarh:
|
||||
radar.harkonnen:
|
||||
idle: DATA
|
||||
Start: 2681
|
||||
Offset: -48,80
|
||||
@@ -941,7 +835,7 @@ radarh:
|
||||
Start: 4073
|
||||
Offset: -30,-24
|
||||
|
||||
refh:
|
||||
refinery.harkonnen:
|
||||
idle: DATA
|
||||
Start: 2721
|
||||
Length: 1
|
||||
@@ -982,7 +876,7 @@ refh:
|
||||
Tick: 200
|
||||
BlendMode: Additive
|
||||
|
||||
siloh:
|
||||
silo.harkonnen:
|
||||
idle: DATA
|
||||
Start: 2726
|
||||
Length: 4
|
||||
@@ -1004,7 +898,7 @@ siloh:
|
||||
Start: 4085
|
||||
Offset: -30,-24
|
||||
|
||||
hightechh:
|
||||
hightech.harkonnen:
|
||||
idle: DATA
|
||||
Start: 2724
|
||||
Offset: -48,80
|
||||
@@ -1038,7 +932,7 @@ hightechh:
|
||||
Start: 4079
|
||||
Offset: -30,-24
|
||||
|
||||
palaceh:
|
||||
palace.harkonnen:
|
||||
idle: DATA
|
||||
Start: 2836
|
||||
Offset: -48,48
|
||||
@@ -1074,7 +968,7 @@ palaceh:
|
||||
Start: 4103
|
||||
Offset: -30,-24
|
||||
|
||||
lighth:
|
||||
light.harkonnen:
|
||||
idle: DATA
|
||||
Start: 2833
|
||||
Length: 1
|
||||
@@ -1116,7 +1010,7 @@ lighth:
|
||||
Start: 4082
|
||||
Offset: -30,-24
|
||||
|
||||
heavyh:
|
||||
heavy.harkonnen:
|
||||
idle: DATA
|
||||
Start: 2678
|
||||
Length: 1
|
||||
@@ -1159,7 +1053,7 @@ heavyh:
|
||||
Start: 4088
|
||||
Offset: -30,-24
|
||||
|
||||
conyardo:
|
||||
conyard.ordos:
|
||||
idle: DATA
|
||||
Start: 2879
|
||||
Offset: -48,64
|
||||
@@ -1197,7 +1091,7 @@ conyardo:
|
||||
Start: 4048
|
||||
Offset: -30,-24
|
||||
|
||||
starporto:
|
||||
starport.ordos:
|
||||
idle: DATA
|
||||
Start: 2991
|
||||
Offset: -48,48
|
||||
@@ -1241,7 +1135,7 @@ starporto:
|
||||
Start: 4094
|
||||
Offset: -30,-24
|
||||
|
||||
pwro:
|
||||
power.ordos:
|
||||
idle: DATA
|
||||
Start: 2843
|
||||
Length: 1
|
||||
@@ -1280,7 +1174,7 @@ pwro:
|
||||
Start: 4058
|
||||
Offset: -30,-24
|
||||
|
||||
barro:
|
||||
barracks.ordos:
|
||||
idle: DATA
|
||||
Start: 2845
|
||||
Offset: -32,64
|
||||
@@ -1308,7 +1202,7 @@ barro:
|
||||
Start: 4061
|
||||
Offset: -30,-24
|
||||
|
||||
radaro:
|
||||
radar.ordos:
|
||||
idle: DATA
|
||||
Start: 2841
|
||||
Offset: -48,80
|
||||
@@ -1340,7 +1234,7 @@ radaro:
|
||||
Start: 4074
|
||||
Offset: -30,-24
|
||||
|
||||
refo:
|
||||
refinery.ordos:
|
||||
idle: DATA
|
||||
Start: 2881
|
||||
Length: 1
|
||||
@@ -1381,7 +1275,7 @@ refo:
|
||||
Tick: 200
|
||||
BlendMode: Additive
|
||||
|
||||
siloo:
|
||||
silo.ordos:
|
||||
idle: DATA
|
||||
Start: 2886
|
||||
Length: 4
|
||||
@@ -1403,7 +1297,7 @@ siloo:
|
||||
Start: 4086
|
||||
Offset: -30,-24
|
||||
|
||||
hightecho:
|
||||
hightech.ordos:
|
||||
idle: DATA
|
||||
Start: 2884
|
||||
Offset: -48,80
|
||||
@@ -1437,7 +1331,7 @@ hightecho:
|
||||
Start: 4080
|
||||
Offset: -30,-24
|
||||
|
||||
palaceo:
|
||||
palace.ordos:
|
||||
idle: DATA
|
||||
Start: 2996
|
||||
Offset: -48,48
|
||||
@@ -1465,7 +1359,7 @@ palaceo:
|
||||
Start: 4104
|
||||
Offset: -30,-24
|
||||
|
||||
lighto:
|
||||
light.ordos:
|
||||
idle: DATA
|
||||
Start: 2993
|
||||
Length: 1
|
||||
@@ -1507,7 +1401,7 @@ lighto:
|
||||
Start: 4083
|
||||
Offset: -30,-24
|
||||
|
||||
heavyo:
|
||||
heavy.ordos:
|
||||
idle: DATA
|
||||
Start: 2838
|
||||
Length: 1
|
||||
@@ -1550,7 +1444,7 @@ heavyo:
|
||||
Start: 4089
|
||||
Offset: -30,-24
|
||||
|
||||
palacec:
|
||||
palace.corrino:
|
||||
idle: DATA
|
||||
Start: 3004
|
||||
Offset: -48,48
|
||||
@@ -1577,7 +1471,7 @@ palacec:
|
||||
Offset: -48,48
|
||||
Tick: 100
|
||||
|
||||
starportc:
|
||||
starport.corrino:
|
||||
idle: DATA
|
||||
Start: 2999
|
||||
Offset: -48,48
|
||||
@@ -1621,7 +1515,7 @@ starportc:
|
||||
Start: 4020
|
||||
Offset: -30,-24
|
||||
|
||||
heavyc:
|
||||
heavy.corrino:
|
||||
idle: DATA
|
||||
Start: 3001
|
||||
Length: 1
|
||||
@@ -1664,44 +1558,6 @@ heavyc:
|
||||
Start: 4020
|
||||
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
|
||||
idle: DATA
|
||||
Start: 3008
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
dmcv:
|
||||
mcv:
|
||||
idle: DATA
|
||||
Start: 1795
|
||||
Facings: -32
|
||||
@@ -6,7 +6,7 @@ dmcv:
|
||||
Start: 4023
|
||||
Offset: -30,-24
|
||||
|
||||
dmcv.destroyed:
|
||||
mcv.husk:
|
||||
idle: DATA
|
||||
Start: 1795
|
||||
Facings: -32
|
||||
@@ -32,7 +32,7 @@ harvester:
|
||||
Start: 4019
|
||||
Offset: -30,-24
|
||||
|
||||
harvester.destroyed:
|
||||
harvester.husk:
|
||||
idle: DATA
|
||||
Start: 1699
|
||||
Facings: -32
|
||||
@@ -80,7 +80,7 @@ siegetank:
|
||||
Start: 4026
|
||||
Offset: -30,-24
|
||||
|
||||
siegetank.destroyed:
|
||||
siegetank.husk:
|
||||
idle: DATA
|
||||
Start: 1763
|
||||
Facings: -32
|
||||
@@ -98,7 +98,7 @@ missiletank:
|
||||
Start: 4024
|
||||
Offset: -30,-24
|
||||
|
||||
missiletank.destroyed:
|
||||
missiletank.husk:
|
||||
idle: DATA
|
||||
Start: 1603
|
||||
Facings: -32
|
||||
@@ -112,7 +112,7 @@ sonictank:
|
||||
Start: 4027
|
||||
Offset: -30,-24
|
||||
|
||||
sonictank.destroyed:
|
||||
sonictank.husk:
|
||||
idle: DATA
|
||||
Start: 1827
|
||||
Facings: -32
|
||||
@@ -134,7 +134,7 @@ combata:
|
||||
Start: 4020
|
||||
Offset: -30,-24
|
||||
|
||||
combata.destroyed:
|
||||
combata.husk:
|
||||
idle: DATA
|
||||
Start: 1731
|
||||
Facings: -32
|
||||
@@ -160,7 +160,7 @@ combath:
|
||||
Start: 4021
|
||||
Offset: -30,-24
|
||||
|
||||
combath.destroyed:
|
||||
combath.husk:
|
||||
idle: DATA
|
||||
Start: 2051
|
||||
Facings: -32
|
||||
@@ -170,25 +170,6 @@ combath.destroyed:
|
||||
Facings: -32
|
||||
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:
|
||||
idle: DATA
|
||||
Start: 2453
|
||||
@@ -205,7 +186,7 @@ combato:
|
||||
Start: 4022
|
||||
Offset: -30,-24
|
||||
|
||||
combato.destroyed:
|
||||
combato.husk:
|
||||
idle: DATA
|
||||
Start: 2453
|
||||
Facings: -32
|
||||
@@ -215,6 +196,25 @@ combato.destroyed:
|
||||
Facings: -32
|
||||
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:
|
||||
idle: DATA
|
||||
Start: 2421
|
||||
@@ -254,7 +254,7 @@ deviatortank:
|
||||
Start: 4025
|
||||
Offset: -30,-24
|
||||
|
||||
deviatortank.destroyed:
|
||||
deviatortank.husk:
|
||||
idle: DATA
|
||||
Start: 2389
|
||||
Facings: -32
|
||||
|
||||
@@ -308,7 +308,7 @@ MCV:
|
||||
Offset: -1,-1
|
||||
Facing: 96
|
||||
TransformSounds: placbldg.aud, build5.aud
|
||||
NoTransformSounds: nodeply1.aud
|
||||
NoTransformNotification: BuildingCannotPlaceAudio
|
||||
RenderUnit:
|
||||
MustBeDestroyed:
|
||||
RequiredForShortGame: true
|
||||
|
||||
Reference in New Issue
Block a user