Merge pull request #2770 from pchote/turret-cleanup

Weapon / Turret refactoring
This commit is contained in:
Matthias Mailänder
2013-03-26 14:38:56 -07:00
81 changed files with 4023 additions and 820 deletions

View File

@@ -9,6 +9,7 @@
#endregion
using System;
using System.Linq;
using OpenRA.Graphics;
using OpenRA.Traits;
@@ -26,7 +27,7 @@ namespace OpenRA.Mods.RA.Render
string lastDamage = "";
public RenderGunboat(Actor self)
: base(self, () => self.HasTrait<Turreted>() ? self.Trait<Turreted>().turretFacing : 0)
: base(self, () => self.HasTrait<Turreted>() ? self.TraitsImplementing<Turreted>().First().turretFacing : 0)
{
facing = self.Trait<IFacing>();
anim.Play("left");

View File

@@ -200,9 +200,10 @@ namespace OpenRA.Mods.RA.AI
return RelativeValue(own, enemy, 100, SumOfValues<AttackBase>, (Actor a) =>
{
int sumOfDamage = 0;
foreach (var weap in a.Trait<AttackBase>().Weapons)
if (weap.Info.Warheads[0] != null)
sumOfDamage += weap.Info.Warheads[0].Damage;
var arms = a.TraitsImplementing<Armament>();
foreach (var arm in arms)
if (arm.Weapon.Warheads[0] != null)
sumOfDamage += arm.Weapon.Warheads[0].Damage;
return sumOfDamage;
});
}

View File

@@ -230,12 +230,13 @@ namespace OpenRA.Mods.RA.AI
if (!target.HasTrait<TargetableUnit<TargetableUnitInfo>>() &&
!target.HasTrait<TargetableBuilding>()) return false;
foreach (var weap in a.Trait<AttackBase>().Weapons)
var arms = a.TraitsImplementing<Armament>();
foreach (var arm in arms)
if (target.HasTrait<TargetableUnit<TargetableUnitInfo>>() &&
weap.Info.ValidTargets.Intersect(target.Trait<TargetableUnit<TargetableUnitInfo>>().TargetTypes) != null)
arm.Weapon.ValidTargets.Intersect(target.Trait<TargetableUnit<TargetableUnitInfo>>().TargetTypes) != null)
return true;
else if (target.HasTrait<TargetableBuilding>() &&
weap.Info.ValidTargets.Intersect(target.Trait<TargetableBuilding>().TargetTypes) != null)
arm.Weapon.ValidTargets.Intersect(target.Trait<TargetableBuilding>().TargetTypes) != null)
return true;
return false;
}
@@ -253,12 +254,15 @@ namespace OpenRA.Mods.RA.AI
foreach (var unit in units)
if (unit != null && unit.HasTrait<AttackBase>() && !unit.HasTrait<Aircraft>()
&& !unit.IsDisabled())
foreach (var weap in unit.Trait<AttackBase>().Weapons)
if (weap.Info.ValidTargets.Contains("Air"))
{
var arms = unit.TraitsImplementing<Armament>();
foreach (var a in arms)
if (a.Weapon.ValidTargets.Contains("Air"))
{
missileUnitsCount++;
break;
}
}
return missileUnitsCount;
}

198
OpenRA.Mods.RA/Armament.cs Executable file
View File

@@ -0,0 +1,198 @@
#region Copyright & License Information
/*
* Copyright 2007-2011 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation. For more information,
* see COPYING.
*/
#endregion
using System;
using System.Collections.Generic;
using System.Linq;
using OpenRA.FileFormats;
using OpenRA.GameRules;
using OpenRA.Mods.RA.Render;
using OpenRA.Traits;
namespace OpenRA.Mods.RA
{
public class Barrel
{
public PVecInt TurretSpaceOffset; // position in turret space
public PVecInt ScreenSpaceOffset; // screen-space hack to make things line up good.
public int Facing; // deviation from turret facing
}
public class ArmamentInfo : ITraitInfo, Requires<AttackBaseInfo>
{
[WeaponReference]
[Desc("Has to be defined here and in weapons.yaml.")]
public readonly string Weapon = null;
public readonly string Turret = "primary";
public readonly int Recoil = 0;
public readonly int FireDelay = 0;
public readonly float RecoilRecovery = 0.2f;
public readonly int[] LocalOffset = { };
public object Create(ActorInitializer init) { return new Armament(init.self, this); }
}
public class Armament : ITick
{
public readonly ArmamentInfo Info;
public readonly WeaponInfo Weapon;
public readonly Barrel[] Barrels;
Lazy<Turreted> Turret;
public float Recoil { get; private set; }
public int FireDelay { get; private set; }
public int Burst { get; private set; }
public Armament(Actor self, ArmamentInfo info)
{
Info = info;
// We can't soft-depend on TraitInfo, so we have to wait
// until runtime to cache this
Turret = Lazy.New(() => self.TraitsImplementing<Turreted>().FirstOrDefault(t => t.info.Turret == info.Turret));
Weapon = Rules.Weapons[info.Weapon.ToLowerInvariant()];
Burst = Weapon.Burst;
var barrels = new List<Barrel>();
for (var i = 0; i < info.LocalOffset.Length / 5; i++)
barrels.Add(new Barrel
{
TurretSpaceOffset = new PVecInt(info.LocalOffset[5 * i], info.LocalOffset[5 * i + 1]),
ScreenSpaceOffset = new PVecInt(info.LocalOffset[5 * i + 2], info.LocalOffset[5 * i + 3]),
Facing = info.LocalOffset[5 * i + 4],
});
// if no barrels specified, the default is "turret position; turret facing".
if (barrels.Count == 0)
barrels.Add(new Barrel { TurretSpaceOffset = PVecInt.Zero, ScreenSpaceOffset = PVecInt.Zero, Facing = 0 });
Barrels = barrels.ToArray();
}
public void Tick(Actor self)
{
if (FireDelay > 0)
--FireDelay;
Recoil = Math.Max(0f, Recoil - Info.RecoilRecovery);
}
public void CheckFire(Actor self, AttackBase attack, IMove move, IFacing facing, Target target)
{
if (FireDelay > 0) return;
var limitedAmmo = self.TraitOrDefault<LimitedAmmo>();
if (limitedAmmo != null && !limitedAmmo.HasAmmo())
return;
if (!Combat.IsInRange(self.CenterLocation, Weapon.Range, target)) return;
if (Combat.IsInRange(self.CenterLocation, Weapon.MinRange, target)) return;
if (!IsValidAgainst(self.World, target)) return;
var barrel = Barrels[Burst % Barrels.Length];
var destMove = target.IsActor ? target.Actor.TraitOrDefault<IMove>() : null;
var args = new ProjectileArgs
{
weapon = Weapon,
firedBy = self,
target = target,
src = (self.CenterLocation + (PVecInt)MuzzlePxPosition(self, facing, barrel).ToInt2()),
srcAltitude = move != null ? move.Altitude : 0,
dest = target.CenterLocation,
destAltitude = destMove != null ? destMove.Altitude : 0,
facing = barrel.Facing +
(Turret.Value != null ? Turret.Value.turretFacing :
facing != null ? facing.Facing : Util.GetFacing(target.CenterLocation - self.CenterLocation, 0)),
firepowerModifier = self.TraitsImplementing<IFirepowerModifier>()
.Select(a => a.GetFirepowerModifier())
.Product()
};
attack.ScheduleDelayedAction(Info.FireDelay, () =>
{
if (args.weapon.Projectile != null)
{
var projectile = args.weapon.Projectile.Create(args);
if (projectile != null)
self.World.Add(projectile);
if (args.weapon.Report != null && args.weapon.Report.Any())
Sound.Play(args.weapon.Report.Random(self.World.SharedRandom) + ".aud", self.CenterLocation);
}
});
foreach (var na in self.TraitsImplementing<INotifyAttack>())
na.Attacking(self, target);
Recoil = Info.Recoil;
if (--Burst > 0)
FireDelay = Weapon.BurstDelay;
else
{
FireDelay = Weapon.ROF;
Burst = Weapon.Burst;
}
}
public bool IsValidAgainst(World world, Target target)
{
if (target.IsActor)
return Combat.WeaponValidForTarget(Weapon, target.Actor);
else
return Combat.WeaponValidForTarget(Weapon, world, target.CenterLocation.ToCPos());
}
public bool IsReloading { get { return FireDelay > 0; } }
PVecFloat GetUnitspaceBarrelOffset(Actor self, IFacing facing, Barrel b)
{
if (Turret.Value == null && facing == null)
return PVecFloat.Zero;
var turretFacing = Turret.Value != null ? Turret.Value.turretFacing : facing.Facing;
return (PVecFloat)Util.RotateVectorByFacing(b.TurretSpaceOffset.ToFloat2(), turretFacing, .7f);
}
public PVecFloat MuzzlePxPosition(Actor self, IFacing facing, Barrel b)
{
PVecFloat pos = b.ScreenSpaceOffset;
// local facing offset doesn't make sense for actors that don't rotate
if (Turret.Value == null && facing == null)
return pos;
if (Turret.Value != null)
pos += Turret.Value.PxPosition(self, facing);
// Add local unitspace/turretspace offset
var f = Turret.Value != null ? Turret.Value.turretFacing : facing.Facing;
// This is going away, so no point adding unnecessary usings
var ru = self.TraitOrDefault<RenderUnit>();
var numDirs = (ru != null) ? ru.anim.CurrentSequence.Facings : 8;
var quantizedFacing = Util.QuantizeFacing(f, numDirs) * (256 / numDirs);
pos += (PVecFloat)Util.RotateVectorByFacing(b.TurretSpaceOffset.ToFloat2(), quantizedFacing, .7f);
return pos;
}
public PVecFloat RecoilPxOffset(Actor self, int facing)
{
var localRecoil = new float2(0, Recoil);
return (PVecFloat)Util.RotateVectorByFacing(localRecoil, facing, .7f);
}
}
}

View File

@@ -19,70 +19,34 @@ namespace OpenRA.Mods.RA
{
public abstract class AttackBaseInfo : ITraitInfo
{
[WeaponReference]
[Desc("Has to be defined here and in weapons.yaml.")]
public readonly string PrimaryWeapon = null;
[WeaponReference]
public readonly string SecondaryWeapon = null;
public readonly int PrimaryRecoil = 0;
public readonly int SecondaryRecoil = 0;
public readonly float PrimaryRecoilRecovery = 0.2f;
public readonly float SecondaryRecoilRecovery = 0.2f;
public readonly int[] PrimaryLocalOffset = { };
public readonly int[] SecondaryLocalOffset = { };
public readonly int[] PrimaryOffset = { 0, 0 };
public readonly int[] SecondaryOffset = null;
public readonly int FireDelay = 0;
public readonly bool AlignIdleTurrets = false;
public readonly bool CanAttackGround = true;
public readonly int MinimumScanTimeInterval = 30;
public readonly int MaximumScanTimeInterval = 60;
public abstract object Create(ActorInitializer init);
public float GetMaximumRange()
{
var priRange = PrimaryWeapon != null ? Rules.Weapons[PrimaryWeapon.ToLowerInvariant()].Range : 0;
var secRange = SecondaryWeapon != null ? Rules.Weapons[SecondaryWeapon.ToLowerInvariant()].Range : 0;
return Math.Max(priRange, secRange);
}
}
public abstract class AttackBase : IIssueOrder, IResolveOrder, ITick, IExplodeModifier, IOrderVoice, ISync
{
[Sync] public bool IsAttacking { get; internal set; }
public List<Weapon> Weapons = new List<Weapon>();
public List<Turret> Turrets = new List<Turret>();
readonly Actor self;
Lazy<IEnumerable<Armament>> armaments;
protected IEnumerable<Armament> Armaments { get { return armaments.Value; } }
public AttackBase(Actor self)
{
this.self = self;
var info = self.Info.Traits.Get<AttackBaseInfo>();
Turrets.Add(new Turret(info.PrimaryOffset, info.PrimaryRecoilRecovery));
if (info.SecondaryOffset != null)
Turrets.Add(new Turret(info.SecondaryOffset, info.SecondaryRecoilRecovery));
if (info.PrimaryWeapon != null)
Weapons.Add(new Weapon(info.PrimaryWeapon,
Turrets[0], info.PrimaryLocalOffset, info.PrimaryRecoil));
if (info.SecondaryWeapon != null)
Weapons.Add(new Weapon(info.SecondaryWeapon,
info.SecondaryOffset != null ? Turrets[1] : Turrets[0], info.SecondaryLocalOffset, info.SecondaryRecoil));
armaments = Lazy.New(() => self.TraitsImplementing<Armament>());
}
protected virtual bool CanAttack(Actor self, Target target)
{
if (!self.IsInWorld) return false;
if (!target.IsValid) return false;
if (Weapons.All(w => w.IsReloading)) return false;
if (Armaments.All(a => a.IsReloading)) return false;
if (self.IsDisabled()) return false;
if (target.IsActor && target.Actor.HasTrait<ITargetable>() &&
@@ -94,15 +58,12 @@ namespace OpenRA.Mods.RA
public bool ShouldExplode(Actor self) { return !IsReloading(); }
public bool IsReloading() { return Weapons.Any(w => w.IsReloading); }
public bool IsReloading() { return Armaments.Any(a => a.IsReloading); }
List<Pair<int, Action>> delayedActions = new List<Pair<int, Action>>();
public virtual void Tick(Actor self)
{
foreach (var w in Weapons)
w.Tick();
for (var i = 0; i < delayedActions.Count; i++)
{
var x = delayedActions[i];
@@ -127,20 +88,20 @@ namespace OpenRA.Mods.RA
var move = self.TraitOrDefault<IMove>();
var facing = self.TraitOrDefault<IFacing>();
foreach (var w in Weapons)
w.CheckFire(self, this, move, facing, target);
foreach (var a in Armaments)
a.CheckFire(self, this, move, facing, target);
}
public virtual int FireDelay( Actor self, Target target, AttackBaseInfo info )
{
return info.FireDelay;
}
bool IsHeal { get { return Weapons[ 0 ].Info.Warheads[ 0 ].Damage < 0; } }
public IEnumerable<IOrderTargeter> Orders
{
get { yield return new AttackOrderTargeter( "Attack", 6, IsHeal ); }
get
{
if (Armaments.Count() == 0)
yield break;
bool isHeal = Armaments.First().Weapon.Warheads[0].Damage < 0;
yield return new AttackOrderTargeter("Attack", 6, isHeal);
}
}
public Order IssueOrder( Actor self, IOrderTargeter order, Target target, bool queued )
@@ -163,12 +124,6 @@ namespace OpenRA.Mods.RA
self.SetTargetLine(target, Color.Red);
AttackTarget(target, order.Queued, order.OrderString == "Attack");
}
else
{
/* hack */
if (self.HasTrait<Turreted>() && self.Info.Traits.Get<AttackBaseInfo>().AlignIdleTurrets)
self.Trait<Turreted>().desiredFacing = null;
}
}
public string VoicePhraseForOrder(Actor self, Order order)
@@ -178,10 +133,10 @@ namespace OpenRA.Mods.RA
public abstract Activity GetAttackActivity(Actor self, Target newTarget, bool allowMove);
public bool HasAnyValidWeapons(Target t) { return Weapons.Any(w => w.IsValidAgainst(self.World, t)); }
public float GetMaximumRange() { return Weapons.Max(w => w.Info.Range); }
public bool HasAnyValidWeapons(Target t) { return Armaments.Any(a => a.IsValidAgainst(self.World, t)); }
public float GetMaximumRange() { return Armaments.Select(a => a.Weapon.Range).Aggregate(0f, Math.Max); }
public Weapon ChooseWeaponForTarget(Target t) { return Weapons.FirstOrDefault(w => w.IsValidAgainst(self.World, t)); }
public Armament ChooseArmamentForTarget(Target t) { return Armaments.FirstOrDefault(a => a.IsValidAgainst(self.World, t)); }
public void AttackTarget( Target target, bool queued, bool allowMove )
{

View File

@@ -42,10 +42,10 @@ namespace OpenRA.Mods.RA
public override Activity GetAttackActivity(Actor self, Target newTarget, bool allowMove)
{
var weapon = ChooseWeaponForTarget(newTarget);
var weapon = ChooseArmamentForTarget(newTarget);
if (weapon == null)
return null;
return new Activities.Attack(newTarget, Math.Max(0, (int)weapon.Info.Range), allowMove);
return new Activities.Attack(newTarget, Math.Max(0, (int)weapon.Weapon.Range), allowMove);
}
}
}

View File

@@ -9,6 +9,7 @@
#endregion
using System;
using System.Linq;
using OpenRA.Mods.RA.Activities;
using OpenRA.Traits;
@@ -28,10 +29,15 @@ namespace OpenRA.Mods.RA
public override void DoAttack(Actor self, Target target)
{
if( !CanAttack( self, target ) ) return;
if (!CanAttack(self, target))
return;
var weapon = Weapons[0].Info;
if( !Combat.IsInRange( self.CenterLocation, weapon.Range, target ) ) return;
var a = ChooseArmamentForTarget(target);
if (a == null)
return;
if (!Combat.IsInRange(self.CenterLocation, a.Weapon.Range, target))
return;
self.CancelActivity();
self.QueueActivity(new Leap(self, target));
@@ -39,10 +45,10 @@ namespace OpenRA.Mods.RA
public override Activity GetAttackActivity(Actor self, Target newTarget, bool allowMove)
{
var weapon = ChooseWeaponForTarget(newTarget);
if( weapon == null )
var a = ChooseArmamentForTarget(newTarget);
if (a == null)
return null;
return new Activities.Attack(newTarget, Math.Max(0, (int)weapon.Info.Range), allowMove);
return new Activities.Attack(newTarget, Math.Max(0, (int)a.Weapon.Range), allowMove);
}
}
}

View File

@@ -9,6 +9,7 @@
#endregion
using System;
using System.Linq;
using OpenRA.Traits;
using OpenRA.Mods.RA.Activities;
@@ -28,13 +29,17 @@ namespace OpenRA.Mods.RA
{
if (!CanAttack(self, target)) return;
var weapon = Weapons[0].Info;
if (!Combat.IsInRange(self.CenterLocation, weapon.Range, target)) return;
var arm = Armaments.FirstOrDefault();
if (arm == null)
return;
if (!Combat.IsInRange(self.CenterLocation, arm.Weapon.Range, target))
return;
var move = self.TraitOrDefault<IMove>();
var facing = self.TraitOrDefault<IFacing>();
foreach (var w in Weapons)
w.CheckFire(self, this, move, facing, target);
foreach (var a in Armaments)
a.CheckFire(self, this, move, facing, target);
if (target.Actor != null)
target.Actor.ChangeOwner(self.Owner);

View File

@@ -29,10 +29,10 @@ namespace OpenRA.Mods.RA
public override Activity GetAttackActivity(Actor self, Target newTarget, bool allowMove)
{
var weapon = ChooseWeaponForTarget(newTarget);
var weapon = ChooseArmamentForTarget(newTarget);
if (weapon == null)
return null;
return new Activities.Heal(newTarget, Math.Max(0, (int)weapon.Info.Range), allowMove);
return new Activities.Heal(newTarget, Math.Max(0, (int)weapon.Weapon.Range), allowMove);
}
}
}

View File

@@ -8,6 +8,7 @@
*/
#endregion
using System.Linq;
using OpenRA.GameRules;
using OpenRA.Mods.RA.Buildings;
using OpenRA.Mods.RA.Render;
@@ -30,11 +31,13 @@ namespace OpenRA.Mods.RA
AttackPopupTurretedInfo Info;
int IdleTicks = 0;
PopupState State = PopupState.Open;
Turreted turret;
public AttackPopupTurreted(ActorInitializer init, AttackPopupTurretedInfo info) : base(init.self)
{
Info = info;
buildComplete = init.Contains<SkipMakeAnimsInit>();
turret = turrets.FirstOrDefault();
}
protected override bool CanAttack( Actor self, Target target )

View File

@@ -9,6 +9,7 @@
#endregion
using System;
using System.Collections.Generic;
using System.Linq;
using OpenRA.Mods.RA.Activities;
using OpenRA.Mods.RA.Buildings;
@@ -25,12 +26,12 @@ namespace OpenRA.Mods.RA
class AttackTurreted : AttackBase, INotifyBuildComplete, ISync
{
protected Target target;
protected Turreted turret;
protected IEnumerable<Turreted> turrets;
[Sync] protected bool buildComplete;
public AttackTurreted(Actor self) : base(self)
{
turret = self.Trait<Turreted>();
turrets = self.TraitsImplementing<Turreted>();
}
protected override bool CanAttack( Actor self, Target target )
@@ -39,7 +40,12 @@ namespace OpenRA.Mods.RA
return false;
if (!target.IsValid) return false;
if (!turret.FaceTarget(self, target)) return false;
bool canAttack = false;
foreach (var t in turrets)
if (t.FaceTarget(self, target))
canAttack = true;
if (!canAttack) return false;
return base.CanAttack( self, target );
}
@@ -85,7 +91,7 @@ namespace OpenRA.Mods.RA
var attack = self.Trait<AttackTurreted>();
const int RangeTolerance = 1; /* how far inside our maximum range we should try to sit */
var weapon = attack.ChooseWeaponForTarget(target);
var weapon = attack.ChooseArmamentForTarget(target);
if (weapon != null)
{
@@ -93,7 +99,7 @@ namespace OpenRA.Mods.RA
if (allowMove && self.HasTrait<Mobile>() && !self.Info.Traits.Get<MobileInfo>().OnRails)
return Util.SequenceActivities(
new Follow( target, Math.Max( 0, (int)weapon.Info.Range - RangeTolerance ) ),
new Follow( target, Math.Max( 0, (int)weapon.Weapon.Range - RangeTolerance ) ),
this );
}

View File

@@ -208,48 +208,6 @@ namespace OpenRA.Mods.RA
return false;
}
static PVecFloat GetRecoil(Actor self, float recoil)
{
if (!self.HasTrait<RenderUnitTurreted>())
return PVecFloat.Zero;
var facing = self.Trait<Turreted>().turretFacing;
var localRecoil = new float2(0, recoil); // vector in turret-space.
return (PVecFloat)Util.RotateVectorByFacing(localRecoil, facing, .7f);
}
public static PVecFloat GetTurretPosition(Actor self, IFacing facing, Turret turret)
{
if (facing == null) return turret.ScreenSpacePosition; /* things that don't have a rotating base don't need the turrets repositioned */
var ru = self.TraitOrDefault<RenderUnit>();
var numDirs = (ru != null) ? ru.anim.CurrentSequence.Facings : 8;
var bodyFacing = facing.Facing;
var quantizedFacing = Util.QuantizeFacing(bodyFacing, numDirs) * (256 / numDirs);
return (PVecFloat)Util.RotateVectorByFacing(turret.UnitSpacePosition.ToFloat2(), quantizedFacing, .7f)
+ GetRecoil(self, turret.Recoil)
+ (PVecFloat)turret.ScreenSpacePosition.ToFloat2();
}
static PVecFloat GetUnitspaceBarrelOffset(Actor self, IFacing facing, Turret turret, Barrel barrel)
{
var turreted = self.TraitOrDefault<Turreted>();
if (turreted == null && facing == null)
return PVecFloat.Zero;
var turretFacing = turreted != null ? turreted.turretFacing : facing.Facing;
return (PVecFloat)Util.RotateVectorByFacing(barrel.TurretSpaceOffset.ToFloat2(), turretFacing, .7f);
}
// gets the screen-space position of a barrel.
public static PVecFloat GetBarrelPosition(Actor self, IFacing facing, Turret turret, Barrel barrel)
{
return GetTurretPosition(self, facing, turret) + barrel.ScreenSpaceOffset
+ GetUnitspaceBarrelOffset(self, facing, turret, barrel);
}
public static bool IsInRange( PPos attackOrigin, float range, Actor target )
{
var rsq = range * range * Game.CellSize * Game.CellSize;

View File

@@ -45,7 +45,7 @@ namespace OpenRA.Mods.RA
public void Tick(Actor self)
{
history.Tick(self.CenterLocation - new PVecInt(0, move.Altitude) - (PVecInt)Combat.GetTurretPosition(self, facing, contrailTurret).ToInt2());
history.Tick(self.CenterLocation - new PVecInt(0, move.Altitude) - (PVecInt)contrailTurret.PxPosition(self, facing).ToInt2());
}
public void RenderAfterWorld(WorldRenderer wr, Actor self) { history.Render(self); }

View File

@@ -55,7 +55,9 @@ namespace OpenRA.Mods.RA
if (facing != null)
td.Add(new FacingInit( facing.Facing ));
var turreted = self.TraitOrDefault<Turreted>();
// TODO: This will only take the first turret if there are multiple
// This isn't a problem with the current units, but may be a problem for mods
var turreted = self.TraitsImplementing<Turreted>().FirstOrDefault();
if (turreted != null)
td.Add( new TurretFacingInit(turreted.turretFacing) );

View File

@@ -368,7 +368,6 @@
<Compile Include="Turreted.cs" />
<Compile Include="Valued.cs" />
<Compile Include="WaterPaletteRotation.cs" />
<Compile Include="Weapon.cs" />
<Compile Include="Widgets\BuildPaletteWidget.cs" />
<Compile Include="Widgets\Logic\ModBrowserLogic.cs" />
<Compile Include="Widgets\Logic\ColorPickerLogic.cs" />
@@ -420,6 +419,7 @@
<Compile Include="Widgets\ColorPreviewManagerWidget.cs" />
<Compile Include="FogPalette.cs" />
<Compile Include="Infiltrates.cs" />
<Compile Include="Armament.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\OpenRA.FileFormats\OpenRA.FileFormats.csproj">

View File

@@ -24,19 +24,17 @@ namespace OpenRA.Mods.RA.Render
public RenderBuildingSeparateTurret(ActorInitializer init, RenderBuildingInfo info)
: base(init, info)
{
var turreted = init.self.Trait<Turreted>();
var attack = init.self.Trait<AttackBase>();
var self = init.self;
var turreted = self.TraitsImplementing<Turreted>();
var turretAnim = new Animation(GetImage(init.self), () => turreted.turretFacing);
turretAnim.Play("turret");
for( var i = 0; i < attack.Turrets.Count; i++ )
var i = 0;
foreach (var t in turreted)
{
var turret = attack.Turrets[i];
anims.Add( "turret_{0}".F(i),
new AnimationWithOffset(turretAnim,
() => Combat.GetTurretPosition(init.self, null, turret).ToFloat2(),
null));
var anim = new Animation(GetImage(self), () => t.turretFacing);
anim.Play("turret");
anims.Add("turret_{0}".F(i++), new AnimationWithOffset(anim,
() => t.PxPosition(self, null).ToFloat2(), null));
}
}
}

View File

@@ -9,6 +9,7 @@
#endregion
using System;
using System.Linq;
using OpenRA.Mods.RA.Buildings;
using OpenRA.Traits;
@@ -26,7 +27,8 @@ namespace OpenRA.Mods.RA.Render
static Func<int> MakeTurretFacingFunc(Actor self)
{
var turreted = self.Trait<Turreted>();
// Turret artwork is baked into the sprite, so only the first turret makes sense.
var turreted = self.TraitsImplementing<Turreted>().FirstOrDefault();
return () => turreted.turretFacing;
}
}

View File

@@ -31,9 +31,10 @@ namespace OpenRA.Mods.RA.Render
spinnerAnim.PlayRepeating("spinner");
var turret = new Turret(info.Offset);
anims.Add("spinner", new AnimationWithOffset(
spinnerAnim,
() => Combat.GetTurretPosition( self, facing, new Turret(info.Offset)).ToFloat2(),
() => turret.PxPosition(self, facing).ToFloat2(),
null ) { ZOffset = 1 } );
}
}

View File

@@ -8,6 +8,8 @@
*/
#endregion
using System;
using System.Linq;
using OpenRA.Graphics;
using OpenRA.Traits;
@@ -24,20 +26,30 @@ namespace OpenRA.Mods.RA.Render
: base(self)
{
var facing = self.Trait<IFacing>();
var turreted = self.Trait<Turreted>();
var attack = self.Trait<AttackBase>();
var turreted = self.TraitsImplementing<Turreted>();
var turretAnim = new Animation(GetImage(self), () => turreted.turretFacing );
turretAnim.Play( "turret" );
for( var i = 0; i < attack.Turrets.Count; i++ )
var i = 0;
foreach (var t in turreted)
{
var turret = attack.Turrets[i];
anims.Add( "turret_{0}".F(i),
new AnimationWithOffset( turretAnim,
() => Combat.GetTurretPosition( self, facing, turret ).ToFloat2(),
null));
}
var turret = t;
var anim = new Animation(GetImage(self), () => turret.turretFacing);
anim.Play("turret");
anims.Add("turret_{0}".F(i++), new AnimationWithOffset(anim,
() => turret.PxPosition(self, facing).ToFloat2() + RecoilOffset(self, turret), null));
}
}
float2 RecoilOffset(Actor self, Turreted t)
{
var a = self.TraitsImplementing<Armament>()
.OrderByDescending(w => w.Recoil)
.FirstOrDefault(w => w.Info.Turret == t.info.Turret);
if (a == null)
return float2.Zero;
return a.RecoilPxOffset(self, t.turretFacing).ToFloat2();
}
}
}

View File

@@ -8,10 +8,12 @@
*/
#endregion
using System;
using System.Collections.Generic;
using System.Linq;
using OpenRA.Graphics;
using OpenRA.Traits;
using System;
using OpenRA.Mods.RA;
namespace OpenRA.Mods.RA.Render
{
@@ -27,25 +29,25 @@ namespace OpenRA.Mods.RA.Render
public WithMuzzleFlash(Actor self)
{
var attack = self.Trait<AttackBase>();
var render = self.Trait<RenderSimple>();
var facing = self.TraitOrDefault<IFacing>();
var turreted = self.TraitOrDefault<Turreted>();
var getFacing = turreted != null ? () => turreted.turretFacing :
facing != null ? (Func<int>)(() => facing.Facing) : () => 0;
foreach (var w in attack.Weapons)
foreach( var b in w.Barrels )
var arms = self.TraitsImplementing<Armament>();
foreach (var a in arms)
foreach(var b in a.Barrels)
{
var barrel = b;
var turret = w.Turret;
var turreted = self.TraitsImplementing<Turreted>()
.FirstOrDefault(t => t.info.Turret == a.Info.Turret);
var getFacing = turreted != null ? () => turreted.turretFacing :
facing != null ? (Func<int>)(() => facing.Facing) : () => 0;
var muzzleFlash = new Animation(render.GetImage(self), getFacing);
muzzleFlash.Play("muzzle");
muzzleFlashes.Add("muzzle{0}".F(muzzleFlashes.Count), new AnimationWithOffset(
muzzleFlash,
() => Combat.GetBarrelPosition(self, facing, turret, barrel).ToFloat2(),
() => a.MuzzlePxPosition(self, facing, barrel).ToFloat2(),
() => !isShowing));
}
}

View File

@@ -30,9 +30,10 @@ namespace OpenRA.Mods.RA.Render
rotorAnim = new Animation(rs.GetImage(self));
rotorAnim.PlayRepeating("rotor");
var turret = new Turret(info.Offset);
rs.anims.Add(info.Id, new AnimationWithOffset(
rotorAnim,
() => Combat.GetTurretPosition( self, facing, new Turret(info.Offset)).ToFloat2(),
() => turret.PxPosition(self, facing).ToFloat2(),
null ) { ZOffset = 1 } );
}

View File

@@ -9,6 +9,7 @@
#endregion
using System.Drawing;
using System.Linq;
using OpenRA.Graphics;
using OpenRA.Traits;
@@ -26,11 +27,11 @@ namespace OpenRA.Mods.RA
public void Render(WorldRenderer wr, World w, ActorInfo ai, PPos centerLocation)
{
wr.DrawRangeCircleWithContrast(
Color.FromArgb(128, Color.Yellow),
centerLocation.ToFloat2(),
ai.Traits.Get<AttackBaseInfo>().GetMaximumRange(),
Color.FromArgb(96, Color.Black),
1);
Color.FromArgb(128, Color.Yellow), centerLocation.ToFloat2(),
ai.Traits.WithInterface<ArmamentInfo>()
.Select(a => Rules.Weapons[a.Weapon.ToLowerInvariant()].Range).Max(),
Color.FromArgb(96, Color.Black), 1
);
foreach (var a in w.ActorsWithTrait<RenderRangeCircle>())
if (a.Actor.Owner == a.Actor.World.LocalPlayer)

View File

@@ -43,7 +43,7 @@ namespace OpenRA.Mods.RA
{
var facing = self.Trait<IFacing>();
var altitude = new PVecInt(0, move.Altitude);
position = (self.CenterLocation - (PVecInt)Combat.GetTurretPosition(self, facing, smokeTurret).ToInt2());
position = (self.CenterLocation - (PVecInt)smokeTurret.PxPosition(self, facing).ToInt2());
if (self.World.RenderedShroud.IsVisible(position.ToCPos()))
self.World.AddFrameEndTask(

View File

@@ -14,23 +14,24 @@ using OpenRA.Traits;
namespace OpenRA.Mods.RA
{
public class TakeCoverInfo : ITraitInfo
public class TakeCoverInfo : TurretedInfo
{
public readonly int ProneTime = 100; /* ticks, =4s */
public readonly float ProneDamage = .5f;
public readonly decimal ProneSpeed = .5m;
public readonly int[] BarrelOffset = null;
public readonly int[] ProneOffset = {0,-2,0,4};
public object Create(ActorInitializer init) { return new TakeCover(this); }
public override object Create(ActorInitializer init) { return new TakeCover(init, this); }
}
// Infantry prone behavior
public class TakeCover : ITick, INotifyDamage, IDamageModifier, ISpeedModifier, ISync
public class TakeCover : Turreted, ITick, INotifyDamage, IDamageModifier, ISpeedModifier, ISync
{
TakeCoverInfo Info;
[Sync] int remainingProneTime = 0;
public TakeCover(TakeCoverInfo info)
public TakeCover(ActorInitializer init, TakeCoverInfo info)
: base(init, info)
{
Info = info;
}
@@ -42,36 +43,16 @@ namespace OpenRA.Mods.RA
if (e.Damage > 0 && (e.Warhead == null || !e.Warhead.PreventProne)) /* Don't go prone when healed */
{
if (!IsProne)
ApplyBarrelOffset(self, true);
turret = new Turret(Info.ProneOffset);
remainingProneTime = Info.ProneTime;
}
}
public void Tick(Actor self)
public override void Tick(Actor self)
{
if (IsProne)
{
if (--remainingProneTime == 0)
ApplyBarrelOffset(self, false);
}
}
public void ApplyBarrelOffset(Actor self, bool isProne)
{
if (Info.BarrelOffset == null)
return;
var ab = self.TraitOrDefault<AttackBase>();
if (ab == null)
return;
var sign = isProne ? 1 : -1;
foreach (var w in ab.Weapons)
foreach (var b in w.Barrels)
{
b.TurretSpaceOffset += sign * new PVecInt(Info.BarrelOffset[0], Info.BarrelOffset[1]);
b.ScreenSpaceOffset += sign * new PVecInt(Info.BarrelOffset[2], Info.BarrelOffset[3]);
}
base.Tick(self);
if (IsProne && --remainingProneTime == 0)
turret = new Turret(Info.Offset);
}
public float GetDamageModifier(Actor attacker, WarheadInfo warhead )

View File

@@ -46,7 +46,7 @@ namespace OpenRA.Mods.RA
alt = 0;
facing = Turreted.GetInitialTurretFacing( init, 0 );
pos = Combat.GetTurretPosition(self, ifacing, new Turret(info.Offset)).ToFloat2();
pos = new Turret(info.Offset).PxPosition(self, ifacing).ToFloat2();
v = Game.CosmeticRandom.Gauss2D(1) * info.Spread.RelOffset();
dfacing = Game.CosmeticRandom.Gauss1D(2) * info.ROT;

View File

@@ -8,23 +8,29 @@
*/
#endregion
using System.Collections.Generic;
using OpenRA.Mods.RA.Render;
using OpenRA.Traits;
namespace OpenRA.Mods.RA
{
public class TurretedInfo : ITraitInfo, UsesInit<TurretFacingInit>
{
public readonly string Turret = "primary";
public readonly int ROT = 255;
public readonly int InitialFacing = 128;
public readonly int[] Offset = {0,0};
public readonly bool AlignWhenIdle = false;
public object Create(ActorInitializer init) { return new Turreted(init, this); }
public virtual object Create(ActorInitializer init) { return new Turreted(init, this); }
}
public class Turreted : ITick, ISync
public class Turreted : ITick, ISync, IResolveOrder
{
[Sync] public int turretFacing = 0;
public int? desiredFacing;
TurretedInfo info;
public TurretedInfo info;
protected Turret turret;
IFacing facing;
public static int GetInitialTurretFacing(ActorInitializer init, int def)
@@ -43,9 +49,10 @@ namespace OpenRA.Mods.RA
this.info = info;
turretFacing = GetInitialTurretFacing(init, info.InitialFacing);
facing = init.self.TraitOrDefault<IFacing>();
turret = new Turret(info.Offset);
}
public void Tick(Actor self)
public virtual void Tick(Actor self)
{
var df = desiredFacing ?? ( facing != null ? facing.Facing : turretFacing );
turretFacing = Util.TickFacing(turretFacing, df, info.ROT);
@@ -56,5 +63,42 @@ namespace OpenRA.Mods.RA
desiredFacing = Util.GetFacing( target.CenterLocation - self.CenterLocation, turretFacing );
return turretFacing == desiredFacing;
}
public virtual void ResolveOrder(Actor self, Order order)
{
if (info.AlignWhenIdle && order.OrderString != "Attack" && order.OrderString != "AttackHold")
desiredFacing = null;
}
public PVecFloat PxPosition(Actor self, IFacing facing)
{
return turret.PxPosition(self, facing);
}
}
public class Turret
{
public PVecInt UnitSpacePosition; // where, in the unit's local space.
public PVecInt ScreenSpacePosition; // screen-space hack to make things line up good.
public Turret(int[] offset)
{
ScreenSpacePosition = (PVecInt) offset.AbsOffset().ToInt2();
UnitSpacePosition = (PVecInt) offset.RelOffset().ToInt2();
}
public PVecFloat PxPosition(Actor self, IFacing facing)
{
// Things that don't have a rotating base don't need the turrets repositioned
if (facing == null) return ScreenSpacePosition;
var ru = self.TraitOrDefault<RenderUnit>();
var numDirs = (ru != null) ? ru.anim.CurrentSequence.Facings : 8;
var bodyFacing = facing.Facing;
var quantizedFacing = Util.QuantizeFacing(bodyFacing, numDirs) * (256 / numDirs);
return (PVecFloat)Util.RotateVectorByFacing(UnitSpacePosition.ToFloat2(), quantizedFacing, .7f)
+ (PVecFloat)ScreenSpacePosition.ToFloat2();
}
}
}

View File

@@ -1,162 +0,0 @@
#region Copyright & License Information
/*
* Copyright 2007-2011 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation. For more information,
* see COPYING.
*/
#endregion
using System;
using System.Collections.Generic;
using System.Linq;
using OpenRA.GameRules;
using OpenRA.Traits;
namespace OpenRA.Mods.RA
{
public class Barrel
{
public PVecInt TurretSpaceOffset; // position in turret space
public PVecInt ScreenSpaceOffset; // screen-space hack to make things line up good.
public int Facing; // deviation from turret facing
}
public class Turret
{
public float Recoil = 0.0f; // remaining recoil
public float RecoilRecovery = 0.2f; // recoil recovery rate
public PVecInt UnitSpacePosition; // where, in the unit's local space.
public PVecInt ScreenSpacePosition; // screen-space hack to make things line up good.
public Turret(int[] offset, float recoilRecovery)
{
ScreenSpacePosition = (PVecInt) offset.AbsOffset().ToInt2();
UnitSpacePosition = (PVecInt) offset.RelOffset().ToInt2();
RecoilRecovery = recoilRecovery;
}
public Turret(int[] offset) : this(offset, 0) {}
}
public class Weapon
{
public WeaponInfo Info;
public int FireDelay = 0; // time (in frames) until the weapon can fire again
public int Burst = 0; // burst counter
public int Recoil = 0;
public Barrel[] Barrels; // where projectiles are spawned, in local turret space.
public Turret Turret; // where this weapon is mounted -- possibly shared
public Weapon(string weaponName, Turret turret, int[] localOffset, int recoil)
{
Info = Rules.Weapons[weaponName.ToLowerInvariant()];
Burst = Info.Burst;
Turret = turret;
Recoil = recoil;
var barrels = new List<Barrel>();
for (var i = 0; i < localOffset.Length / 5; i++)
barrels.Add(new Barrel
{
TurretSpaceOffset = new PVecInt(localOffset[5 * i], localOffset[5 * i + 1]),
ScreenSpaceOffset = new PVecInt(localOffset[5 * i + 2], localOffset[5 * i + 3]),
Facing = localOffset[5 * i + 4]
});
// if no barrels specified, the default is "turret position; turret facing".
if (barrels.Count == 0)
barrels.Add(new Barrel { TurretSpaceOffset = PVecInt.Zero, ScreenSpaceOffset = PVecInt.Zero, Facing = 0 });
Barrels = barrels.ToArray();
}
public bool IsReloading { get { return FireDelay > 0; } }
public void Tick()
{
if (FireDelay > 0) --FireDelay;
Turret.Recoil = Math.Max(0f, Turret.Recoil - Turret.RecoilRecovery);
}
public bool IsValidAgainst(World world, Target target)
{
if( target.IsActor )
return Combat.WeaponValidForTarget( Info, target.Actor );
else
return Combat.WeaponValidForTarget( Info, world, target.CenterLocation.ToCPos() );
}
public void FiredShot()
{
Turret.Recoil = this.Recoil;
if (--Burst > 0)
FireDelay = Info.BurstDelay;
else
{
FireDelay = Info.ROF;
Burst = Info.Burst;
}
}
public void CheckFire(Actor self, AttackBase attack, IMove move, IFacing facing, Target target)
{
if (FireDelay > 0) return;
var limitedAmmo = self.TraitOrDefault<LimitedAmmo>();
if (limitedAmmo != null && !limitedAmmo.HasAmmo())
return;
if (!Combat.IsInRange(self.CenterLocation, Info.Range, target)) return;
if (Combat.IsInRange(self.CenterLocation, Info.MinRange, target)) return;
if (!IsValidAgainst(self.World, target)) return;
var barrel = Barrels[Burst % Barrels.Length];
var destMove = target.IsActor ? target.Actor.TraitOrDefault<IMove>() : null;
var turreted = self.TraitOrDefault<Turreted>();
var args = new ProjectileArgs
{
weapon = Info,
firedBy = self,
target = target,
src = (self.CenterLocation + (PVecInt)Combat.GetBarrelPosition(self, facing, Turret, barrel).ToInt2()),
srcAltitude = move != null ? move.Altitude : 0,
dest = target.CenterLocation,
destAltitude = destMove != null ? destMove.Altitude : 0,
facing = barrel.Facing +
(turreted != null ? turreted.turretFacing :
facing != null ? facing.Facing : Util.GetFacing(target.CenterLocation - self.CenterLocation, 0)),
firepowerModifier = self.TraitsImplementing<IFirepowerModifier>()
.Select(a => a.GetFirepowerModifier())
.Product()
};
attack.ScheduleDelayedAction( attack.FireDelay( self, target, self.Info.Traits.Get<AttackBaseInfo>() ), () =>
{
if (args.weapon.Projectile != null)
{
var projectile = args.weapon.Projectile.Create(args);
if (projectile != null)
self.World.Add(projectile);
if (args.weapon.Report != null && args.weapon.Report.Any())
Sound.Play(args.weapon.Report.Random(self.World.SharedRandom) + ".aud", self.CenterLocation);
}
});
foreach (var na in self.TraitsImplementing<INotifyAttack>())
na.Attacking(self, target);
FiredShot();
}
}
}

View File

@@ -63,10 +63,10 @@ HELI:
Type: Light
RevealsShroud:
Range: 8
Armament:
Weapon: HeliAGGun
LocalOffset: -5,-3,0,2,0, 5,-3,0,2,0
AttackHeli:
PrimaryWeapon: HeliAGGun
PrimaryOffset: 0,-3,0,2
PrimaryLocalOffset: -5,0,0,0,0, 5,0,0,0,0
FacingTolerance: 20
LimitedAmmo:
Ammo: 10
@@ -105,10 +105,10 @@ ORCA:
Type: Light
RevealsShroud:
Range: 8
Armament:
Weapon: OrcaAGMissiles
LocalOffset: -4,-10,0,5,0, 4,-10,0,5,0
AttackHeli:
PrimaryWeapon: OrcaAGMissiles
PrimaryOffset: 0,-10,0,5
PrimaryLocalOffset: -4,0,0,0,0, 4,0,0,0,0
FacingTolerance: 20
LimitedAmmo:
Ammo: 10

View File

@@ -247,8 +247,9 @@ VICE:
Cost: 1000
Tooltip:
Name: Viceroid
Armament:
Weapon: Chemspray
AttackFrontal:
PrimaryWeapon: Chemspray
AttackWander:
RenderUnit:
WithMuzzleFlash:

View File

@@ -151,8 +151,9 @@
RevealsShroud:
Range: 3 #arbitrary. Assuming it should be 1, like infantry.
# In practice, it seems that OpenRA renders vision range differently. Assuming it should be 1 for this unit.
Armament:
Weapon: Pistol
AttackFrontal:
PrimaryWeapon: Pistol
ActorLostNotification:
Notification: civdead1.aud
NotifyAll: true

View File

@@ -15,8 +15,9 @@ E1:
Speed: 4
Health:
HP: 50
Armament:
Weapon: M16
AttackFrontal:
PrimaryWeapon: M16
RenderInfantryProne:
IdleAnimations: idle1,idle2,idle3,idle4
@@ -38,10 +39,11 @@ E2:
Speed: 5
Health:
HP: 50
AttackFrontal:
PrimaryWeapon: Grenade
PrimaryOffset: 0,0,0,-10
Armament:
Weapon: Grenade
LocalOffset: 0,0,0,-10,0
FireDelay: 15
AttackFrontal:
RenderInfantryProne:
IdleAnimations: idle1,idle2
Explodes:
@@ -77,10 +79,11 @@ E3:
RevealsShroud:
Range: 3
# range value is 1 in C&C, but OpenRA renders vision slightly differently
AttackFrontal:
PrimaryWeapon: Rockets
PrimaryOffset: 1,-6,0,-8
Armament:
Weapon: Rockets
LocalOffset: 1,-6,0,-8,0
FireDelay: 5
AttackFrontal:
RenderInfantryProne:
IdleAnimations: idle1,idle2
@@ -102,10 +105,11 @@ E4:
Speed: 5
Health:
HP: 70
AttackFrontal:
PrimaryWeapon: Flamethrower
PrimaryOffset: 0,-2,2,-4
Armament:
Weapon: Flamethrower
LocalOffset: 0,-2,2,-4,0
FireDelay: 3
AttackFrontal:
WithMuzzleFlash:
RenderInfantryProne:
IdleAnimations: idle1,idle2
@@ -134,10 +138,11 @@ E5:
PathingCost: 100
Health:
HP: 70
AttackFrontal:
PrimaryWeapon: Chemspray
PrimaryOffset: 0,-2,2,-9
Armament:
Weapon: Chemspray
LocalOffset: 0,-2,2,-9
FireDelay: 3
AttackFrontal:
WithMuzzleFlash:
-PoisonedByTiberium:
RenderInfantryProne:
@@ -202,8 +207,9 @@ RMBO:
ScanRadius: 5
C4Demolition:
C4Delay: 45
Armament:
Weapon: Sniper
AttackFrontal:
PrimaryWeapon: Sniper
RenderInfantryProne:
IdleAnimations: idle1,idle2,idle3
AnnounceOnBuild:

View File

@@ -18,10 +18,11 @@ BOAT:
Range: 7
Turreted:
ROT: 7
Offset: 0,-15,0,-4
Armament:
Weapon: BoatMissile
LocalOffset: -3,-5,0,0,0, 3,-5,0,0,0, 0,-5,0,0,0
AttackTurreted:
PrimaryWeapon: BoatMissile
PrimaryOffset: 0,-15,0,-4
PrimaryLocalOffset: -3,-5,0,0,0, 3,-5,0,0,0, 0,-5,0,0,0
RenderGunboat:
AutoTarget:
AllowMovement: false

View File

@@ -556,12 +556,13 @@ OBLI:
# (Range of Obelisk laser is 7.5)
RenderBuildingCharge:
ChargeAudio: obelpowr.aud
AttackTurreted:
PrimaryWeapon: Laser
PrimaryOffset: 0,0,-2,-17
FireDelay: 8
Turreted:
ROT:255
Offset: 0,0,-2,-17
Armament:
Weapon: Laser
FireDelay: 8
AttackTurreted:
AutoTarget:
-RenderBuilding:
RenderRangeCircle:
@@ -663,9 +664,10 @@ GUN:
ROT: 12
InitialFacing: 50
RenderBuildingTurreted:
Armament:
Weapon: TurretGun
LocalOffset: 0,4,0,-2,0
AttackTurreted:
PrimaryWeapon: TurretGun
PrimaryLocalOffset: 0,4,0,-2,0
AutoTarget:
-AutoTargetIgnore:
-RenderBuilding:
@@ -706,8 +708,9 @@ SAM:
ROT: 7
InitialFacing: 0
RenderBuildingTurreted:
Armament:
Weapon: SAMMissile
AttackPopupTurreted:
PrimaryWeapon: SAMMissile
WithMuzzleFlash:
AutoTarget:
-RenderBuilding:
@@ -736,10 +739,10 @@ GTWR:
Range: 6
# Range: 3
# RevealShroud range was set to equal 1 + its weapon range (due to possible rendering issues with shroud for OpenRA)
Armament:
Weapon: HighV
LocalOffset: 0,-6,0,0,0
AttackTurreted:
PrimaryWeapon: HighV
PrimaryOffset: 0,0,0,-6
PrimaryLocalOffset: 0,-6,0,0,0
AutoTarget:
-AutoTargetIgnore:
DetectCloaked:
@@ -749,6 +752,7 @@ GTWR:
WithMuzzleFlash:
Turreted:
ROT:255
Offset: 0,0,0,-6
ATWR:
Inherits: ^Building
@@ -777,12 +781,13 @@ ATWR:
Range: 7
# Range: 4
# RevealShroud range was set to equal its weapon range +1 (due to possible rendering issues with shroud for OpenRA)
AttackTurreted:
PrimaryWeapon: TowerMissle
PrimaryOffset: 0,0,5,2
PrimaryLocalOffset: 7,-7,0,0,-25, -7,-7,0,0,25
Turreted:
ROT:255
Offset: 0,0,5,2
Armament:
Weapon: TowerMissle
LocalOffset: 7,-7,0,0,-25, -7,-7,0,0,25
AttackTurreted:
AutoTarget:
-AutoTargetIgnore:
DetectCloaked:

View File

@@ -99,9 +99,10 @@ JEEP:
# In practice, it seems that OpenRA renders vision range differently. Will set at +2 from C&C Gold values for now to properly emulate.
Turreted:
ROT: 10
Offset: 0,2,0,-4
Armament:
Weapon: MachineGun
AttackTurreted:
PrimaryWeapon: MachineGun
PrimaryOffset: 0,2,0,-4
WithMuzzleFlash:
RenderUnitTurreted:
AutoTarget:
@@ -131,9 +132,9 @@ APC:
# In practice, it seems that OpenRA renders vision range differently. Will set at +2 from C&C Gold values for now to properly emulate.
Turreted:
ROT: 10
Armament:
Weapon: MachineGun
AttackTurreted:
PrimaryWeapon: MachineGun
PrimaryOffset: 0,0,0,0
WithMuzzleFlash:
RenderUnitTurreted:
AutoTarget:
@@ -168,9 +169,10 @@ BGGY:
# In practice, it seems that OpenRA renders vision range differently. Will set at +2 from C&C Gold values for now to properly emulate.
Turreted:
ROT: 10
Offset: 0,1,0,-3
Armament:
Weapon: MachineGun
AttackTurreted:
PrimaryWeapon: MachineGun
PrimaryOffset: 0,1,0,-3
WithMuzzleFlash:
RenderUnitTurreted:
AutoTarget:
@@ -198,10 +200,10 @@ BIKE:
Range: 4
# Range: 2
# In practice, it seems that OpenRA renders vision range differently. Will set at +2 from C&C Gold values for now to properly emulate.
Armament:
Weapon: BikeRockets
LocalOffset: -4,0,0,-2,25, 4,0,0,-2,-25
AttackFrontal:
PrimaryWeapon: BikeRockets
PrimaryOffset: 0,0,0,-2
PrimaryLocalOffset: -4,0,0,0,25, 4,0,0,0,-25
RenderUnit:
AutoTarget:
@@ -228,9 +230,10 @@ ARTY:
Range: 6
# Range: 4
# In practice, it seems that OpenRA renders vision range differently. Will set at +2 from C&C Gold values for now to properly emulate.
Armament:
Weapon: ArtilleryShell
LocalOffset: 0,-7,0,-3,0
AttackFrontal:
PrimaryWeapon: ArtilleryShell
PrimaryOffset: 0,-7,0,-3
RenderUnit:
AutoTarget:
Explodes:
@@ -260,10 +263,10 @@ FTNK:
Range: 6
# Range: 4
# In practice, it seems that OpenRA renders vision range differently. Will set at +2 from C&C Gold values for now to properly emulate.
Armament:
Weapon: BigFlamer
LocalOffset: 2,-5,3,2,0, -2,-5,3,2,0
AttackFrontal:
PrimaryWeapon: BigFlamer
PrimaryOffset: 0,-5,3,2
PrimaryLocalOffset: 2,0,0,0,0, -2,0,0,0,0
RenderUnit:
AutoTarget:
WithMuzzleFlash:
@@ -295,11 +298,12 @@ LTNK:
# In practice, it seems that OpenRA renders vision range differently. Will set at +2 from C&C Gold values for now to properly emulate.
Turreted:
ROT: 5
Armament:
Weapon: 70mm
Recoil: 2
RecoilRecovery: 0.4
LocalOffset: 0,3,0,-2,0
AttackTurreted:
PrimaryWeapon: 70mm
PrimaryRecoil: 2
PrimaryRecoilRecovery: 0.4
PrimaryLocalOffset: 0,3,0,-2,0
RenderUnitTurreted:
AutoTarget:
@@ -327,12 +331,13 @@ MTNK:
# In practice, it seems that OpenRA renders vision range differently. Will set at +2 from C&C Gold values for now to properly emulate.
Turreted:
ROT: 5
Armament:
# Weapon: 120mm
Weapon: 105mm
Recoil: 3
RecoilRecovery: 0.6
LocalOffset: 0,0,0,-1,0
AttackTurreted:
# PrimaryWeapon: 120mm
PrimaryWeapon: 105mm
PrimaryRecoil: 3
PrimaryRecoilRecovery: 0.6
PrimaryLocalOffset: 0,0,0,-1,0
RenderUnitTurreted:
AutoTarget:
Selectable:
@@ -363,14 +368,16 @@ HTNK:
# In practice, it seems that OpenRA renders vision range differently. Will set at +2 from C&C Gold values for now to properly emulate.
Turreted:
ROT: 2
Armament@PRIMARY:
Weapon: 120mmDual
LocalOffset: -5,-5,0,-10,0, 5,-5,0,-10,0
Recoil: 4
RecoilRecovery: 1
Armament@SECONDARY:
Weapon: MammothMissiles
LocalOffset: -9,2,0,0,25, 9,2,0,0,-25
Recoil: 1
AttackTurreted:
PrimaryWeapon: 120mmDual
SecondaryWeapon: MammothMissiles
PrimaryLocalOffset: -5,-5,0,-10,0, 5,-5,0,-10,0
SecondaryLocalOffset: -9,2,0,0,25, 9,2,0,0,-25
PrimaryRecoil: 4
SecondaryRecoil: 1
PrimaryRecoilRecovery: 1
RenderUnitTurreted:
AutoTarget:
SelfHealing:
@@ -405,10 +412,11 @@ MSAM:
# In practice, it seems that OpenRA renders vision range differently. Will set at +2 from C&C Gold values for now to properly emulate.
Turreted:
ROT: 255
Offset: 0,6,0,-3
Armament:
Weapon: 227mm
LocalOffset: 3,-5,0,0,0, -3,-5,0,0,0
AttackFrontal:
PrimaryWeapon: 227mm
PrimaryOffset: 0,6,0,-3
PrimaryLocalOffset: 3,-5,0,0,0, -3,-5,0,0,0
RenderUnitTurretedAim:
AutoTarget:
Explodes:
@@ -438,13 +446,15 @@ MLRS:
# In practice, it seems that OpenRA renders vision range differently. Will set at +2 from C&C Gold values for now to properly emulate.
Turreted:
ROT: 5
Offset: 0,3,0,-3
# AlignWhenIdle: true
Armament@PRIMARY:
Weapon: HonestJohn
LocalOffset: -4,0,0,0,0
Armament@SECONDARY:
Weapon: HonestJohn
LocalOffset: 4,0,0,0,0
AttackFrontal:
PrimaryWeapon: HonestJohn
SecondaryWeapon: HonestJohn
PrimaryOffset: 0,3,0,-3
PrimaryLocalOffset: -4,0,0,0,0
SecondaryLocalOffset: 4,0,0,0,0
# AlignIdleTurrets: true
RenderUnitTurretedAim:
AutoTarget:
Explodes:
@@ -478,10 +488,10 @@ STNK:
CloakDelay: 125
CloakSound: trans1.aud
UncloakSound: appear1.aud
Armament:
Weapon: 227mm.stnk
LocalOffset: 1,-5,0,-3,0, -1,-5,0,-3,0
AttackFrontal:
PrimaryWeapon: 227mm.stnk
PrimaryOffset: 0,-5,0,-3
PrimaryLocalOffset: 1,0,0,0,0, -1,0,0,0,0
RenderUnit:
AutoTarget:
InitialStance: HoldFire

View File

@@ -68,13 +68,13 @@ HELI:
Type: Light
RevealsShroud:
Range: 8
Armament@PRIMARY:
Weapon: HeliAGGun
LocalOffset: -5,-3,0,2,0, 5,-3,0,2,0
Armament@SECONDARY:
Weapon: HeliAGGun
LocalOffset: -5,-3,0,2,0, 5,-3,0,2,0
AttackHeli:
PrimaryWeapon: HeliAGGun
PrimaryOffset: 0,-3,0,2
PrimaryLocalOffset: -5,0,0,0,0, 5,0,0,0,0
SecondaryWeapon: HeliAAGun
SecondaryOffset: 0,-3,0,2
SecondaryLocalOffset: -5,0,0,0,0, 5,0,0,0,0
FacingTolerance: 20
LimitedAmmo:
Ammo: 10
@@ -119,13 +119,13 @@ ORCA:
Type: Light
RevealsShroud:
Range: 8
Armament@PRIMARY:
Weapon: OrcaAGMissiles
LocalOffset: -4,-10,0,5,0, 4,-10,0,5,0
Armament@SECONDARY:
Weapon: OrcaAAMissiles
LocalOffset: -4,-10,0,5,0, 4,-10,0,5,0
AttackHeli:
PrimaryWeapon: OrcaAGMissiles
PrimaryOffset: 0,-10,0,5
PrimaryLocalOffset: -4,0,0,0,0, 4,0,0,0,0
SecondaryWeapon: OrcaAAMissiles
SecondaryOffset: 0,-10,0,5
SecondaryLocalOffset: -4,0,0,0,0, 4,0,0,0,0
FacingTolerance: 20
LimitedAmmo:
Ammo: 10

View File

@@ -404,8 +404,9 @@ VICE:
Cost: 1000
Tooltip:
Name: Viceroid
Armament:
Weapon: Chemspray
AttackFrontal:
PrimaryWeapon: Chemspray
AttackWander:
RenderUnit:
WithMuzzleFlash:

View File

@@ -124,7 +124,7 @@
Buildable:
Queue: Infantry
TakeCover:
BarrelOffset: 0,-2,0,4
ProneOffset: 0,-2,0,4
RenderInfantryProne:
AttackMove:
Passenger:
@@ -164,8 +164,9 @@
HP: 25
RevealsShroud:
Range: 2
Armament:
Weapon: Pistol
AttackFrontal:
PrimaryWeapon: Pistol
ActorLostNotification:
Notification: civdead1.aud
NotifyAll: true

View File

@@ -15,8 +15,9 @@ E1:
Speed: 4
Health:
HP: 50
Armament:
Weapon: M16
AttackFrontal:
PrimaryWeapon: M16
RenderInfantryProne:
IdleAnimations: idle1,idle2,idle3,idle4
DetectCloaked:
@@ -40,10 +41,11 @@ E2:
Speed: 5
Health:
HP: 50
AttackFrontal:
PrimaryWeapon: Grenade
PrimaryOffset: 0,0,0,-10
Armament:
Weapon: Grenade
LocalOffset: 0,0,0,-10,0
FireDelay: 15
AttackFrontal:
RenderInfantryProne:
IdleAnimations: idle1,idle2
Explodes:
@@ -70,10 +72,11 @@ E3:
Speed: 3
Health:
HP: 45
AttackFrontal:
PrimaryWeapon: Rockets
PrimaryOffset: 1,-6,0,-8
Armament:
Weapon: Rockets
LocalOffset: 1,-6,0,-8,0
FireDelay: 5
AttackFrontal:
RenderInfantryProne:
IdleAnimations: idle1,idle2
DetectCloaked:
@@ -97,10 +100,11 @@ E4:
Speed: 5
Health:
HP: 90
AttackFrontal:
PrimaryWeapon: Flamethrower
PrimaryOffset: 0,-2,2,-4
Armament:
Weapon: Flamethrower
LocalOffset: 0,-2,2,-4,0
FireDelay: 3
AttackFrontal:
WithMuzzleFlash:
RenderInfantryProne:
IdleAnimations: idle1,idle2
@@ -130,10 +134,11 @@ E5:
PathingCost: 80
Health:
HP: 90
AttackFrontal:
PrimaryWeapon: Chemspray
PrimaryOffset: 0,-2,2,-9
Armament:
Weapon: Chemspray
LocalOffset: 0,-2,2,-9,0
FireDelay: 3
AttackFrontal:
WithMuzzleFlash:
-PoisonedByTiberium:
RenderInfantryProne:
@@ -197,8 +202,9 @@ RMBO:
ScanRadius: 5
C4Demolition:
C4Delay: 45
Armament:
Weapon: Sniper
AttackFrontal:
PrimaryWeapon: Sniper
RenderInfantryProne:
IdleAnimations: idle1,idle2,idle3
AnnounceOnBuild:

View File

@@ -18,10 +18,11 @@ BOAT:
Range: 7
Turreted:
ROT: 7
Offset: 0,-15,0,-4
Armament:
Weapon: BoatMissile
LocalOffset: -3,-5,0,0,0, 3,-5,0,0,0, 0,-5,0,0,0
AttackTurreted:
PrimaryWeapon: BoatMissile
PrimaryOffset: 0,-15,0,-4
PrimaryLocalOffset: -3,-5,0,0,0, 3,-5,0,0,0, 0,-5,0,0,0
RenderGunboat:
AutoTarget:
AllowMovement: false

View File

@@ -510,9 +510,10 @@ GUN:
ROT: 12
InitialFacing: 50
RenderBuildingTurreted:
Armament:
Weapon: TurretGun
LocalOffset: 0,4,0,-2,0
AttackTurreted:
PrimaryWeapon: TurretGun
PrimaryLocalOffset: 0,4,0,-2,0
AutoTarget:
-AutoTargetIgnore:
-RenderBuilding:
@@ -551,8 +552,9 @@ SAM:
ROT: 7
InitialFacing: 0
RenderBuildingTurreted:
Armament:
Weapon: SAMMissile
AttackPopupTurreted:
PrimaryWeapon: SAMMissile
WithMuzzleFlash:
AutoTarget:
-RenderBuilding:
@@ -585,10 +587,11 @@ OBLI:
Range: 8
RenderBuildingCharge:
ChargeAudio: obelpowr.aud
AttackTurreted:
PrimaryWeapon: Laser
PrimaryOffset: 0,0,-2,-17
Armament:
Weapon: Laser
LocalOffset: 0,0,-2,-17,0
FireDelay: 8
AttackTurreted:
Turreted:
ROT:255
AutoTarget:
@@ -620,10 +623,10 @@ GTWR:
HP: 600
RevealsShroud:
Range: 7
Armament:
Weapon: HighV
LocalOffset: 0,-6,0,-6,0
AttackTurreted:
PrimaryWeapon: HighV
PrimaryOffset: 0,0,0,-6
PrimaryLocalOffset: 0,-6,0,0,0
AutoTarget:
-AutoTargetIgnore:
DetectCloaked:
@@ -659,10 +662,10 @@ ATWR:
Type: Heavy
RevealsShroud:
Range: 9
Armament:
Weapon: TowerMissle
LocalOffset: 7,-7,5,2,-25, -7,-7,5,2,25
AttackTurreted:
PrimaryWeapon: TowerMissle
PrimaryOffset: 0,0,5,2
PrimaryLocalOffset: 7,-7,0,0,-25, -7,-7,0,0,25
Turreted:
ROT:255
AutoTarget:

View File

@@ -100,13 +100,13 @@ APC:
Range: 7
Turreted:
ROT: 10
Armament@PRIMARY:
Weapon: APCGun
LocalOffset: 2,-2,0,-7,0, -2,-2,0,-7,0
Armament@SECONDARY:
Weapon: APCGun.AA
LocalOffset: 2,-2,0,-7,0, -2,-2,0,-7,0
AttackTurreted:
PrimaryWeapon: APCGun
PrimaryOffset: 0,0,0,0
PrimaryLocalOffset: 2,-2,0,-7,0, -2,-2,0,-7,0
SecondaryWeapon: APCGun.AA
SecondaryOffset: 0,0,0,0
SecondaryLocalOffset: 2,-2,0,-7,0, -2,-2,0,-7,0
WithMuzzleFlash:
RenderUnitTurreted:
AutoTarget:
@@ -139,9 +139,10 @@ ARTY:
Type: Light
RevealsShroud:
Range: 9
Armament:
Weapon: ArtilleryShell
LocalOffset: 0,-7,0,-3,0
AttackFrontal:
PrimaryWeapon: ArtilleryShell
PrimaryOffset: 0,-7,0,-3
RenderUnit:
Explodes:
AutoTarget:
@@ -170,10 +171,10 @@ FTNK:
Type: Light
RevealsShroud:
Range: 5
Armament:
Weapon: BigFlamer
LocalOffset: 5,-5,3,2,0, -5,-5,3,2,0
AttackFrontal:
PrimaryWeapon: BigFlamer
PrimaryOffset: 0,-5,3,2
PrimaryLocalOffset: 5,0,0,0,0, -5,0,0,0,0
RenderUnit:
AutoTarget:
WithMuzzleFlash:
@@ -206,9 +207,10 @@ BGGY:
Range: 7
Turreted:
ROT: 10
Offset: 0,1,0,-3
Armament:
Weapon: MachineGun
AttackTurreted:
PrimaryWeapon: MachineGun
PrimaryOffset: 0,1,0,-3
WithMuzzleFlash:
RenderUnitTurreted:
AutoTarget:
@@ -243,10 +245,10 @@ BIKE:
Type: Light
RevealsShroud:
Range: 8
Armament:
Weapon: BikeRockets
LocalOffset: -4,0,0,-2,25, 4,0,0,-2,-25
AttackFrontal:
PrimaryWeapon: BikeRockets
PrimaryOffset: 0,0,0,-2
PrimaryLocalOffset: -4,0,0,0,25, 4,0,0,0,-25
RenderUnit:
AutoTarget:
LeavesHusk:
@@ -275,9 +277,10 @@ JEEP:
Range: 8
Turreted:
ROT: 10
Offset: 0,2,0,-4
Armament:
Weapon: MachineGun
AttackTurreted:
PrimaryWeapon: MachineGun
PrimaryOffset: 0,2,0,-4
WithMuzzleFlash:
RenderUnitTurreted:
AutoTarget:
@@ -307,11 +310,12 @@ LTNK:
Range: 6
Turreted:
ROT: 5
Armament:
Weapon: 70mm
Recoil: 2
RecoilRecovery: 0.4
LocalOffset: 0,3,0,-2,0
AttackTurreted:
PrimaryWeapon: 70mm
PrimaryRecoil: 2
PrimaryRecoilRecovery: 0.4
PrimaryLocalOffset: 0,3,0,-2,0
RenderUnitTurreted:
AutoTarget:
LeavesHusk:
@@ -333,7 +337,6 @@ MTNK:
Prerequisites: hq
Owner: gdi
Mobile:
Speed: 6
Health:
HP: 400
@@ -343,11 +346,12 @@ MTNK:
Range: 6
Turreted:
ROT: 5
Armament:
Weapon: 120mm
Recoil: 3
RecoilRecovery: 0.6
LocalOffset: 0,0,0,-1,0
AttackTurreted:
PrimaryWeapon: 120mm
PrimaryRecoil: 3
PrimaryRecoilRecovery: 0.6
PrimaryLocalOffset: 0,0,0,-1,0
RenderUnitTurreted:
AutoTarget:
LeavesHusk:
@@ -381,14 +385,16 @@ HTNK:
Range: 6
Turreted:
ROT: 2
Armament@PRIMARY:
Weapon: 120mmDual
LocalOffset: -5,-5,0,-10,0, 5,-5,0,-10,0
Recoil: 4
RecoilRecovery: 1
Armament@SECONDARY:
Weapon: MammothMissiles
LocalOffset: -9,2,0,0,25, 9,2,0,0,-25
Recoil: 1
AttackTurreted:
PrimaryWeapon: 120mmDual
SecondaryWeapon: MammothMissiles
PrimaryLocalOffset: -5,-5,0,-10,0, 5,-5,0,-10,0
SecondaryLocalOffset: -9,2,0,0,25, 9,2,0,0,-25
PrimaryRecoil: 4
SecondaryRecoil: 1
PrimaryRecoilRecovery: 1
RenderUnitTurreted:
AutoTarget:
SelfHealing:
@@ -425,10 +431,11 @@ MSAM:
Range: 10
Turreted:
ROT: 255
Offset: 0,6,0,-3
Armament:
Weapon: 227mm
LocalOffset: 3,-5,0,0,0, -3,-5,0,0,0
AttackFrontal:
PrimaryWeapon: 227mm
PrimaryOffset: 0,6,0,-3
PrimaryLocalOffset: 3,-5,0,0,0, -3,-5,0,0,0
RenderUnitTurretedAim:
AutoTarget:
LeavesHusk:
@@ -456,11 +463,15 @@ MLRS:
Range: 10
Turreted:
ROT: 5
Offset: 0,3,0,-3
AlignWhenIdle: true
Armament@PRIMARY:
Weapon: Patriot
LocalOffset: -4,0,0,0,0
Armament@SECONDARY:
Weapon: Patriot
LocalOffset: 4,0,0,0,0
AttackTurreted:
PrimaryWeapon: Patriot
PrimaryOffset: 0,3,0,-3
PrimaryLocalOffset: -4,0,0,0,0, 4,0,0,0,0
AlignIdleTurrets: true
RenderUnitTurretedAim:
AutoTarget:
Explodes:
@@ -497,10 +508,10 @@ STNK:
CloakDelay: 80
CloakSound: trans1.aud
UncloakSound: trans1.aud
Armament:
Weapon: 227mm.stnk
LocalOffset: 1,-5,0,-3,0, -1,-5,0,-3,0
AttackFrontal:
PrimaryWeapon: 227mm.stnk
PrimaryOffset: 0,-5,0,-3
PrimaryLocalOffset: 1,0,0,0,0, -1,0,0,0,0
RenderUnit:
AutoTarget:
InitialStance: HoldFire

View File

@@ -82,9 +82,10 @@ ORNI:
Type: Light
RevealsShroud:
Range: 10
Armament:
Weapon: ChainGun
LocalOffset: -5,-2,0,2,0
AttackHeli:
PrimaryWeapon: ChainGun
PrimaryOffset: -5,-2,0,2
FacingTolerance: 20
Helicopter:
LandWhenIdle: false

View File

@@ -143,11 +143,12 @@ COMBATA:
Prerequisites: heavya
Owner: atreides
BuiltAt: heavya
Armament:
Weapon: 90mma
Recoil: 4
RecoilRecovery: 0.8
LocalOffset: 0,-2,0,-3,0
AttackTurreted:
PrimaryWeapon: 90mma
PrimaryRecoil: 4
PrimaryRecoilRecovery: 0.8
PrimaryLocalOffset: 0,-2,0,-3,0
RenderUnitTurreted:
Image: COMBATA
LeavesHusk:
@@ -196,9 +197,10 @@ SONICTANK:
Range: 6
RenderUnit:
Image: SONICTANK
Armament:
Weapon: TTankZap
LocalOffset: 0,-15,0,-10,0
AttackFrontal:
PrimaryWeapon: TTankZap
PrimaryLocalOffset: 0,-15,0,-10,0
AutoTarget:
InitialStance: Defend
Explodes:
@@ -239,8 +241,9 @@ FREMEN:
Range: 7
AutoTarget:
ScanRadius: 7
Armament:
Weapon: Sniper
AttackFrontal:
PrimaryWeapon: Sniper
RenderInfantryProne:
-RenderInfantry:
TakeCover:

View File

@@ -38,9 +38,10 @@ REFH:
# Mobile:
# ROT: 9
# Speed: 11
# Armament:
# Weapon: M60mg
# LocalOffset: 0,-1,0,-3,0
# AttackFrontal:
# PrimaryWeapon: M60mg
# PrimaryLocalOffset: 0,-1,0,-3,0
# RenderUnit:
# Image: QUAD
@@ -213,9 +214,10 @@ DEVAST:
RevealsShroud:
Range: 7
RenderUnit:
Armament:
Weapon: 120mm
LocalOffset: 5,-16,0,-2,0, -4,-16,0,-2,0
AttackFrontal:
PrimaryWeapon: 120mm
PrimaryLocalOffset: 5,-16,0,-2,0, -4,-16,0,-2,0
AutoTarget:
InitialStance: Defend
Explodes:
@@ -260,6 +262,8 @@ SARDAUKAR:
TakeCover:
-RenderInfantry:
RenderInfantryProne:
Armament@PRIMARY:
Weapon: Vulcan
Armament@SECONDARY:
Weapon: Slung
AttackFrontal:
PrimaryWeapon: Vulcan
SecondaryWeapon: Slung

View File

@@ -16,8 +16,9 @@ RIFLE:
HP: 50
Mobile:
Speed: 5
Armament:
Weapon: M1Carbine
AttackFrontal:
PrimaryWeapon: M1Carbine
TakeCover:
-RenderInfantry:
RenderInfantryProne:
@@ -69,10 +70,13 @@ BAZOOKA:
HP: 45
Mobile:
Speed: 4
Armament@PRIMARY:
Weapon: RedEye
LocalOffset: 0,0,0,-13,0
Armament@SECONDARY:
Weapon: Dragon
LocalOffset: 0,0,0,-13,0
AttackFrontal:
PrimaryWeapon: RedEye
SecondaryWeapon: Dragon
PrimaryOffset: 0,0,0,-13
TakeCover:
-RenderInfantry:
RenderInfantryProne:
@@ -100,8 +104,9 @@ MEDIC:
Mobile:
Speed: 4
AutoHeal:
Armament:
Weapon: Heal
AttackMedic:
PrimaryWeapon: Heal
Passenger:
PipType: Blue
-AutoTarget:

View File

@@ -158,10 +158,10 @@ TRIKEO:
Speed: 14
RenderUnit:
Image: RAIDER
Armament:
Weapon: M60mgo
LocalOffset: 0,-6,0,-3,0
AttackFrontal:
PrimaryWeapon: M60mgo
PrimaryOffset: 0,-6,0,-3
#PrimaryLocalOffset: 1,0,0,-3,0, -1,0,0,-3,0
@@ -212,9 +212,10 @@ DEVIATORTANK:
RevealsShroud:
Range: 5
RenderUnit:
Armament:
Weapon: FakeMissile
LocalOffset: 0,7,0,-2,0 #7
AttackLoyalty:
PrimaryWeapon: FakeMissile
PrimaryLocalOffset: 0,7,0,-2,0 #7
AutoTarget:
InitialStance: Defend
Explodes:

View File

@@ -474,9 +474,10 @@ GUNTOWER:
Turreted:
ROT: 6
InitialFacing: 128
Armament:
Weapon: TurretGun
LocalOffset: 0,-11,0,-7,0
AttackTurreted:
PrimaryWeapon: TurretGun
PrimaryLocalOffset: 0,-11,0,-7,0
AutoTarget:
LeavesHusk:
HuskActor: Guntower.Husk
@@ -529,9 +530,10 @@ ROCKETTOWER:
#-AutoTargetIgnore:
RenderBuildingSeparateTurret:
# HasMakeAnimation: false
Armament:
Weapon: TowerMissile
LocalOffset: 14,-2,0,-11,0, -14,-2,0,-11,0
AttackTurreted:
PrimaryWeapon: TowerMissile
PrimaryLocalOffset: 14,-2,0,-11,0, -14,-2,0,-11,0
Turreted:
ROT: 8
InitialFacing: 128

View File

@@ -541,8 +541,9 @@ SPICEBLOOM:
# AttackMove:
# JustMove: true
# AttackWander:
# Armament:
# Weapon: WormJaw
# AttackLeap:
# PrimaryWeapon: WormJaw
# CanAttackGround: no
# RenderInfantry:
# BelowUnits:

View File

@@ -131,10 +131,10 @@ HARVESTER.starport:
Range: 8
RenderUnit:
WithMuzzleFlash:
Armament:
Weapon: M60mg
LocalOffset: 0,-6,0,-3, 0
AttackFrontal:
PrimaryWeapon: M60mg
PrimaryOffset: 0,-6,0,-3
#PrimaryLocalOffset: 1,-1,0,-3,0, -1,-1,0,-3,0
AutoTarget:
InitialStance: Defend
Explodes:
@@ -172,9 +172,10 @@ QUAD:
Range: 7
RenderUnit:
Image: QUAD
Armament:
Weapon: QuadRockets
LocalOffset: 0,-3,0,-2,0 #-4
AttackFrontal:
PrimaryWeapon: QuadRockets
PrimaryLocalOffset: 0,-3,0,-2,0 #-4
AutoTarget:
InitialStance: Defend
Explodes:
@@ -213,12 +214,13 @@ QUAD.starport:
Range: 6
Turreted:
ROT: 6
AlignWhenIdle: true
Armament:
Weapon: 90mm
Recoil: 4
RecoilRecovery: 0.8
LocalOffset: 0,-2,0,-3,0
AttackTurreted:
AlignIdleTurrets: true
PrimaryWeapon: 90mm
PrimaryRecoil: 4
PrimaryRecoilRecovery: 0.8
PrimaryLocalOffset: 0,-2,0,-3,0
RenderUnitTurreted:
AutoTarget:
InitialStance: Defend
@@ -265,11 +267,12 @@ SIEGETANK:
Range: 5
Turreted:
ROT: 3
Armament:
Weapon: 155mm
Recoil: 7
RecoilRecovery: 0.45
LocalOffset: 0,-4,0,-7,0
AttackFrontal:
PrimaryWeapon: 155mm
PrimaryRecoil: 7
PrimaryRecoilRecovery: 0.45
PrimaryLocalOffset: 0,-4,0,-7,0
RenderUnitTurreted:
Image: SIEGETANK
Explodes:
@@ -328,9 +331,10 @@ MISSILETANK:
Range: 6
RenderUnit:
Image: MISSILETANK
Armament:
Weapon: 227mm
LocalOffset: 3,5,0,-4,0, -6,5,0,-4,0
AttackFrontal:
PrimaryWeapon: 227mm
PrimaryLocalOffset: 3,5,0,-4,0, -6,5,0,-4,0
AutoTarget:
InitialStance: Defend
Explodes:

View File

@@ -83,9 +83,10 @@ MIG:
Type: Light
RevealsShroud:
Range: 12
Armament:
Weapon: Maverick
LocalOffset: -15,0,0,0,-10, 15,0,0,0,6
AttackPlane:
PrimaryWeapon: Maverick
PrimaryLocalOffset: -15,0,0,0,-10, 15,0,0,0,6
FacingTolerance: 20
Plane:
InitialFacing: 192
@@ -127,11 +128,13 @@ YAK:
Type: Light
RevealsShroud:
Range: 10
Armament@PRIMARY:
Weapon: ChainGun
LocalOffset: -5,-6,0,0,0
Armament@SECONDARY:
Weapon: ChainGun
LocalOffset: 5,-6,0,0,0
AttackPlane:
PrimaryWeapon: ChainGun
SecondaryWeapon: ChainGun
PrimaryOffset: -5,-6,0,0
SecondaryOffset: 5,-6,0,0
FacingTolerance: 20
Plane:
RearmBuildings: afld
@@ -215,9 +218,10 @@ HELI:
Type: Heavy
RevealsShroud:
Range: 12
Armament:
Weapon: HellfireAG
LocalOffset: -5,0,0,2,0
AttackHeli:
PrimaryWeapon: HellfireAG
PrimaryOffset: -5,0,0,2
FacingTolerance: 20
Helicopter:
RearmBuildings: hpad
@@ -256,11 +260,13 @@ HIND:
Type: Heavy
RevealsShroud:
Range: 10
Armament@PRIMARY:
Weapon: ChainGun
LocalOffset: -5,-2,0,2,0
Armament@SECONDARY:
Weapon: ChainGun
LocalOffset: 5,-2,0,2,0
AttackHeli:
PrimaryWeapon: ChainGun
SecondaryWeapon: ChainGun
PrimaryOffset: -5,-2,0,2
SecondaryOffset: 5,-2,0,2
FacingTolerance: 20
Helicopter:
RearmBuildings: hpad

View File

@@ -249,8 +249,9 @@
Speed: 4
RevealsShroud:
Range: 2
Armament:
Weapon: Pistol
AttackFrontal:
PrimaryWeapon: Pistol
ProximityCaptor:
Types:CivilianInfantry
-RenderInfantry:

View File

@@ -20,8 +20,9 @@ DOG:
RevealsShroud:
Range: 5
AutoTarget:
Armament:
Weapon: DogJaw
AttackLeap:
PrimaryWeapon: DogJaw
CanAttackGround: no
RenderInfantry:
IdleAnimations: idle1,idle2
@@ -44,8 +45,9 @@ E1:
HP: 50
Mobile:
Speed: 4
Armament:
Weapon: M1Carbine
AttackFrontal:
PrimaryWeapon: M1Carbine
TakeCover:
-RenderInfantry:
RenderInfantryProne:
@@ -69,10 +71,11 @@ E2:
HP: 50
Mobile:
Speed: 5
AttackFrontal:
PrimaryWeapon: Grenade
PrimaryOffset: 0,0,0,-13
Armament:
Weapon: Grenade
LocalOffset: 0,0,0,-13,0
FireDelay: 15
AttackFrontal:
TakeCover:
-RenderInfantry:
RenderInfantryProne:
@@ -98,10 +101,13 @@ E3:
HP: 45
Mobile:
Speed: 3
Armament@PRIMARY:
Weapon: RedEye
LocalOffset: 0,0,0,-13,0
Armament@SECONDARY:
Weapon: Dragon
LocalOffset: 0,0,0,-13,0
AttackFrontal:
PrimaryWeapon: RedEye
SecondaryWeapon: Dragon
PrimaryOffset: 0,0,0,-13
TakeCover:
-RenderInfantry:
RenderInfantryProne:
@@ -125,10 +131,11 @@ E4:
HP: 40
Mobile:
Speed: 3
AttackFrontal:
PrimaryWeapon: Flamer
PrimaryOffset: 0,-10,0,-8
Armament:
Weapon: Flamer
LocalOffset: 0,-10,0,-8,0
FireDelay: 8
AttackFrontal:
TakeCover:
-RenderInfantry:
RenderInfantryProne:
@@ -254,9 +261,11 @@ E7:
C4Delay: 45
Passenger:
PipType: Red
Armament@PRIMARY:
Weapon: Colt45
Armament@SECONDARY:
Weapon: Colt45
AttackFrontal:
PrimaryWeapon: Colt45
SecondaryWeapon: Colt45
TakeCover:
-RenderInfantry:
RenderInfantryProne:
@@ -286,8 +295,9 @@ MEDI:
Passenger:
PipType: Yellow
AutoHeal:
Armament:
Weapon: Heal
AttackMedic:
PrimaryWeapon: Heal
TakeCover:
-AutoTarget:
AttackMove:
@@ -320,8 +330,9 @@ MECH:
Passenger:
PipType: Yellow
AutoHeal:
Armament:
Weapon: Repair
AttackMedic:
PrimaryWeapon: Repair
TakeCover:
-AutoTarget:
AttackMove:
@@ -371,9 +382,10 @@ SHOK:
Speed: 3
RevealsShroud:
Range: 4
Armament:
Weapon: PortaTesla
LocalOffset: 0,-10,0,-8,0
AttackFrontal:
PrimaryWeapon: PortaTesla
PrimaryOffset: 0,-10,0,-8
TakeCover:
-RenderInfantry:
RenderInfantryProne:

View File

@@ -30,10 +30,11 @@ SS:
CloakDelay: 50
CloakSound: subshow1.aud
UncloakSound: subshow1.aud
AttackFrontal:
PrimaryWeapon: TorpTube
PrimaryLocalOffset: -4,0,0,0,0, 4,0,0,0,0
Armament:
Weapon: TorpTube
LocalOffset: -4,0,0,0,0, 4,0,0,0,0
FireDelay: 2
AttackFrontal:
Selectable:
Bounds: 38,38
Chronoshiftable:
@@ -76,9 +77,10 @@ MSUB:
CloakDelay: 100
CloakSound: subshow1.aud
UncloakSound: subshow1.aud
AttackFrontal:
PrimaryWeapon: SubMissile
Armament:
Weapon: SubMissile
FireDelay: 2
AttackFrontal:
Selectable:
Bounds: 44,44
Chronoshiftable:
@@ -113,11 +115,14 @@ DD:
Range: 6
Turreted:
ROT: 7
Offset: 0,-8,0,-3
Armament@PRIMARY:
Weapon: Stinger
LocalOffset: -4,0,0,0,-20, 4,0,0,0,20
Armament@SECONDARY:
Weapon: DepthCharge
LocalOffset: -4,0,0,0,-20, 4,0,0,0,20
AttackTurreted:
PrimaryWeapon: Stinger
SecondaryWeapon: DepthCharge
PrimaryOffset: 0,-8,0,-3
PrimaryLocalOffset: -4,0,0,0,-20, 4,0,0,0,20
Selectable:
Bounds: 38,38
RenderUnitTurreted:
@@ -151,19 +156,27 @@ CA:
Speed: 4
RevealsShroud:
Range: 7
Turreted:
Turreted@PRIMARY:
Turret: primary
Offset: 0,17,0,-2
ROT: 3
Turreted@SECONDARY:
Turret: secondary
Offset: 0,-17,0,-2
ROT: 3
Armament@PRIMARY:
Turret: primary
Weapon: 8Inch
LocalOffset: -4,-5,0,0,0, 4,-5,0,0,0
Recoil: 4
RecoilRecovery: 0.8
Armament@SECONDARY:
Turret: secondary
Weapon: 8Inch
LocalOffset: -4,-5,0,0,0, 4,-5,0,0,0
Recoil: 4
RecoilRecovery: 0.8
AttackTurreted:
PrimaryWeapon: 8Inch
SecondaryWeapon: 8Inch
PrimaryOffset: 0,17,0,-2
SecondaryOffset: 0,-17,0,-2
PrimaryLocalOffset: -4,-5,0,0,0, 4,-5,0,0,0
SecondaryLocalOffset: -4,-5,0,0,0, 4,-5,0,0,0
PrimaryRecoil: 4
SecondaryRecoil: 4
PrimaryRecoilRecovery: 0.8
SecondaryRecoilRecovery: 0.8
Selectable:
Bounds: 44,44
RenderUnitTurreted:
@@ -226,10 +239,12 @@ PT:
Range: 7
Turreted:
ROT: 7
Offset: 0,-6,0,-1
Armament@PRIMARY:
Weapon: 2Inch
Armament@SECONDARY:
Weapon: DepthCharge
AttackTurreted:
PrimaryWeapon: 2Inch
SecondaryWeapon: DepthCharge
PrimaryOffset: 0,-6,0,-1
Selectable:
Bounds: 32,32
RenderUnitTurreted:

View File

@@ -315,10 +315,11 @@ TSLA:
RevealsShroud:
Range: 8
RenderBuildingCharge:
Armament:
Weapon: TeslaZap
LocalOffset: 0,0,0,-10,0
AttackTesla:
PrimaryWeapon: TeslaZap
ReloadTime: 120
PrimaryOffset: 0,0,0,-10
AutoTarget:
IronCurtainable:
-RenderBuilding:
@@ -354,9 +355,11 @@ AGUN:
ROT: 15
InitialFacing: 224
RenderBuildingTurreted:
Armament@PRIMARY:
Weapon: ZSU-23
Armament@SECONDARY:
Weapon: ZSU-23
AttackTurreted:
PrimaryWeapon: ZSU-23
SecondaryWeapon: ZSU-23
AutoTarget:
IronCurtainable:
-RenderBuilding:
@@ -419,9 +422,10 @@ PBOX:
IronCurtainable:
RenderRangeCircle:
AutoTarget:
Armament:
Weapon: Vulcan
LocalOffset: 0,-11,0,0,0
AttackTurreted:
PrimaryWeapon: Vulcan
PrimaryLocalOffset: 0,-11,0,0,0
WithMuzzleFlash:
Turreted:
ROT: 255
@@ -452,9 +456,10 @@ HBOX:
IronCurtainable:
RenderRangeCircle:
AutoTarget:
Armament:
Weapon: Vulcan
LocalOffset: 0,-11,0,0,0
AttackTurreted:
PrimaryWeapon: Vulcan
PrimaryLocalOffset: 0,-11,0,0,0
WithMuzzleFlash:
Turreted:
ROT: 255
@@ -485,8 +490,9 @@ GUN:
ROT: 12
InitialFacing: 50
RenderBuildingTurreted:
Armament:
Weapon: TurretGun
AttackTurreted:
PrimaryWeapon: TurretGun
AutoTarget:
IronCurtainable:
-RenderBuilding:
@@ -516,10 +522,11 @@ FTUR:
Range: 6
Turreted:
ROT: 255
Offset: 0,0,0,-2
Armament:
Weapon: FireballLauncher
LocalOffset: 0,-12,0,0,0
AttackTurreted:
PrimaryWeapon: FireballLauncher
PrimaryOffset: 0,0,0,-2
PrimaryLocalOffset: 0,-12,0,0,0
AutoTarget:
IronCurtainable:
RenderRangeCircle:
@@ -552,8 +559,9 @@ SAM:
ROT: 30
InitialFacing: 0
RenderBuildingTurreted:
Armament:
Weapon: Nike
AttackTurreted:
PrimaryWeapon: Nike
WithMuzzleFlash:
AutoTarget:
IronCurtainable:

View File

@@ -18,8 +18,9 @@ V2RL:
Speed: 7
RevealsShroud:
Range: 5
Armament:
Weapon: SCUD
AttackFrontal:
PrimaryWeapon: SCUD
RenderUnitReload:
AutoTarget:
Explodes:
@@ -48,10 +49,11 @@ V2RL:
Range: 4
Turreted:
ROT: 5
Armament:
Weapon: 25mm
Recoil: 2
RecoilRecovery: 0.5
AttackTurreted:
PrimaryWeapon: 25mm
PrimaryRecoil: 2
PrimaryRecoilRecovery: 0.5
RenderUnitTurreted:
AutoTarget:
Explodes:
@@ -80,10 +82,11 @@ V2RL:
Range: 5
Turreted:
ROT: 5
Armament:
Weapon: 90mm
Recoil: 3
RecoilRecovery: 0.9
AttackTurreted:
PrimaryWeapon: 90mm
PrimaryRecoil: 3
PrimaryRecoilRecovery: 0.9
RenderUnitTurreted:
AutoTarget:
Explodes:
@@ -114,11 +117,12 @@ V2RL:
Range: 5
Turreted:
ROT: 5
Armament:
Weapon: 105mm
Recoil: 3
RecoilRecovery: 0.9
LocalOffset: 2,0,0,0,0, -2,0,0,0,0
AttackTurreted:
PrimaryWeapon: 105mm
PrimaryRecoil: 3
PrimaryRecoilRecovery: 0.9
PrimaryLocalOffset: 2,0,0,0,0, -2,0,0,0,0
RenderUnitTurreted:
AutoTarget:
Explodes:
@@ -150,13 +154,15 @@ V2RL:
Range: 6
Turreted:
ROT: 2
Armament@PRIMARY:
Weapon: 120mm
LocalOffset: -4,-5,0,0,0, 4,-5,0,0,0
Recoil: 4
RecoilRecovery: 0.7
Armament@SECONDARY:
Weapon: MammothTusk
LocalOffset: -7,2,0,0,25, 7,2,0,0,-25
AttackTurreted:
PrimaryWeapon: 120mm
SecondaryWeapon: MammothTusk
PrimaryLocalOffset: -4,-5,0,0,0, 4,-5,0,0,0
SecondaryLocalOffset: -7,2,0,0,25, 7,2,0,0,-25
PrimaryRecoil: 4
PrimaryRecoilRecovery: 0.7
RenderUnitTurreted:
AutoTarget:
Explodes:
@@ -190,8 +196,9 @@ ARTY:
Speed: 6
RevealsShroud:
Range: 5
Armament:
Weapon: 155mm
AttackFrontal:
PrimaryWeapon: 155mm
RenderUnit:
Explodes:
Weapon: UnitExplode
@@ -298,9 +305,10 @@ JEEP:
Range: 6
Turreted:
ROT: 10
Offset: 0,0,0,-2
Armament:
Weapon: M60mg
AttackTurreted:
PrimaryWeapon: M60mg
PrimaryOffset: 0,0,0,-2
WithMuzzleFlash:
RenderUnitTurreted:
Explodes:
@@ -328,9 +336,10 @@ APC:
Crushes: wall, atmine, crate, infantry
RevealsShroud:
Range: 5
Armament:
Weapon: M60mg
LocalOffset: 0,0,0,-4,0
AttackFrontal:
PrimaryWeapon: M60mg
PrimaryOffset: 0,0,0,-4
RenderUnit:
WithMuzzleFlash:
AutoTarget:
@@ -434,9 +443,10 @@ TTNK:
Crushes: wall, atmine, crate, infantry
RevealsShroud:
Range: 7
Armament:
Weapon: TTankZap
LocalOffset: 0,0,0,-5,0
AttackFrontal:
PrimaryWeapon: TTankZap
PrimaryOffset: 0,0,0,-5
RenderUnitSpinner:
Selectable:
Bounds: 28,28,0,0
@@ -500,10 +510,12 @@ CTNK:
Range: 6
RenderUnit:
AutoTarget:
Armament@PRIMARY:
Weapon: ChronoTusk
LocalOffset: -4,0,0,0,0, -4,0,0,0,0
Armament@SECONDARY:
Weapon: ChronoTusk
LocalOffset: 4,0,0,0,25, 4,0,0,0,-25
AttackFrontal:
PrimaryWeapon: ChronoTusk
SecondaryWeapon: ChronoTusk
PrimaryLocalOffset: -4,0,0,0,0, -4,0,0,0,0
SecondaryLocalOffset: 4,0,0,0,25, 4,0,0,0,-25
ChronoshiftDeploy:
EmptyWeapon: UnitExplodeSmall

Binary file not shown.

Binary file not shown.

BIN
mods/ra/maps/bomber-john/jmin.shp Executable file

Binary file not shown.

BIN
mods/ra/maps/bomber-john/map.bin Executable file

Binary file not shown.

959
mods/ra/maps/bomber-john/map.yaml Executable file
View File

@@ -0,0 +1,959 @@
Selectable: True
MapFormat: 5
Title: Bomber John
Description: Lay mines, wait for them to explode, kill your enemies.
Author: Holloweye
Tileset: TEMPERAT
MapSize: 56,56
Bounds: 16,16,24,24
UseAsShellmap: False
Type: Minigame
Players:
PlayerReference@Neutral:
Name: Neutral
OwnsWorld: True
NonCombatant: True
Race: allies
PlayerReference@Creeps:
Name: Creeps
NonCombatant: True
Race: allies
Enemies: Multi0,Multi1,Multi2,Multi3,Multi4,Multi5,Multi6,Multi17
PlayerReference@Multi0:
Name: Multi0
Playable: True
LockRace: True
Race: soviet
Enemies: Multi1,Multi2,Multi3,Multi4,Multi5,Multi6,Multi17
PlayerReference@Multi1:
Name: Multi1
Playable: True
LockRace: True
Race: soviet
Enemies: Multi0,Multi2,Multi3,Multi4,Multi5,Multi6,Multi17
PlayerReference@Multi2:
Name: Multi2
Playable: True
LockRace: True
Race: soviet
Enemies: Multi0,Multi1,Multi3,Multi4,Multi5,Multi6,Multi17
PlayerReference@Multi3:
Name: Multi3
Playable: True
LockRace: True
Race: soviet
Enemies: Multi0,Multi1,Multi2,Multi4,Multi5,Multi6,Multi17
PlayerReference@Multi4:
Name: Multi4
Playable: True
LockRace: True
Race: soviet
Enemies: Multi0,Multi1,Multi2,Multi3,Multi5,Multi6,Multi17
PlayerReference@Multi5:
Name: Multi5
Playable: True
LockRace: True
Race: soviet
Enemies: Multi0,Multi2,Multi3,Multi4,Multi1,Multi6,Multi17
PlayerReference@Multi6:
Name: Multi6
Playable: True
LockRace: True
Race: soviet
Enemies: Multi0,Multi2,Multi3,Multi4,Multi5,Multi1,Multi17
PlayerReference@Multi7:
Name: Multi7
Playable: True
LockRace: True
Race: soviet
Enemies: Multi0,Multi2,Multi3,Multi4,Multi5,Multi6,Multi11
Actors:
Actor69: ftur
Location: 39,16
Owner: Creeps
Actor1: T17
Location: 16,17
Owner: Neutral
Actor2: T17
Location: 16,18
Owner: Neutral
Actor3: T17
Location: 16,19
Owner: Neutral
Actor4: T17
Location: 16,20
Owner: Neutral
Actor5: T17
Location: 16,21
Owner: Neutral
Actor6: T17
Location: 16,22
Owner: Neutral
Actor7: T17
Location: 16,23
Owner: Neutral
Actor8: T17
Location: 16,24
Owner: Neutral
Actor9: T17
Location: 16,25
Owner: Neutral
Actor10: T17
Location: 16,26
Owner: Neutral
Actor11: T17
Location: 16,27
Owner: Neutral
Actor12: T17
Location: 16,28
Owner: Neutral
Actor13: T17
Location: 16,29
Owner: Neutral
Actor14: T17
Location: 16,30
Owner: Neutral
Actor15: T17
Location: 16,31
Owner: Neutral
Actor16: T17
Location: 16,32
Owner: Neutral
Actor17: T17
Location: 16,33
Owner: Neutral
Actor18: T17
Location: 16,34
Owner: Neutral
Actor19: T17
Location: 16,35
Owner: Neutral
Actor20: T17
Location: 16,36
Owner: Neutral
Actor21: T17
Location: 16,37
Owner: Neutral
Actor22: T17
Location: 16,38
Owner: Neutral
Actor46: ftur
Location: 39,39
Owner: Creeps
Actor24: T17
Location: 17,39
Owner: Neutral
Actor25: T17
Location: 18,39
Owner: Neutral
Actor26: T17
Location: 19,39
Owner: Neutral
Actor27: T17
Location: 20,39
Owner: Neutral
Actor28: T17
Location: 21,39
Owner: Neutral
Actor29: T17
Location: 22,39
Owner: Neutral
Actor30: T17
Location: 23,39
Owner: Neutral
Actor31: T17
Location: 24,39
Owner: Neutral
Actor32: T17
Location: 25,39
Owner: Neutral
Actor33: T17
Location: 26,39
Owner: Neutral
Actor34: T17
Location: 27,39
Owner: Neutral
Actor35: T17
Location: 28,39
Owner: Neutral
Actor36: T17
Location: 29,39
Owner: Neutral
Actor37: T17
Location: 30,39
Owner: Neutral
Actor38: T17
Location: 31,39
Owner: Neutral
Actor39: T17
Location: 32,39
Owner: Neutral
Actor40: T17
Location: 33,39
Owner: Neutral
Actor41: T17
Location: 34,39
Owner: Neutral
Actor42: T17
Location: 35,39
Owner: Neutral
Actor43: T17
Location: 36,39
Owner: Neutral
Actor44: T17
Location: 37,39
Owner: Neutral
Actor45: T17
Location: 38,39
Owner: Neutral
Actor23: ftur
Location: 16,39
Owner: Creeps
Actor47: T17
Location: 39,38
Owner: Neutral
Actor48: T17
Location: 39,37
Owner: Neutral
Actor49: T17
Location: 39,36
Owner: Neutral
Actor50: T17
Location: 39,35
Owner: Neutral
Actor51: T17
Location: 39,34
Owner: Neutral
Actor52: T17
Location: 39,33
Owner: Neutral
Actor53: T17
Location: 39,32
Owner: Neutral
Actor54: T17
Location: 39,31
Owner: Neutral
Actor55: T17
Location: 39,30
Owner: Neutral
Actor56: T17
Location: 39,29
Owner: Neutral
Actor57: T17
Location: 39,28
Owner: Neutral
Actor58: T17
Location: 39,27
Owner: Neutral
Actor59: T17
Location: 39,26
Owner: Neutral
Actor60: T17
Location: 39,25
Owner: Neutral
Actor61: T17
Location: 39,24
Owner: Neutral
Actor62: T17
Location: 39,23
Owner: Neutral
Actor63: T17
Location: 39,22
Owner: Neutral
Actor64: T17
Location: 39,21
Owner: Neutral
Actor65: T17
Location: 39,20
Owner: Neutral
Actor66: T17
Location: 39,19
Owner: Neutral
Actor67: T17
Location: 39,18
Owner: Neutral
Actor68: T17
Location: 39,17
Owner: Neutral
Actor0: ftur
Location: 16,16
Owner: Creeps
Actor70: T17
Location: 38,16
Owner: Neutral
Actor71: T17
Location: 37,16
Owner: Neutral
Actor72: T17
Location: 36,16
Owner: Neutral
Actor73: T17
Location: 35,16
Owner: Neutral
Actor74: T17
Location: 34,16
Owner: Neutral
Actor75: T17
Location: 33,16
Owner: Neutral
Actor76: T17
Location: 32,16
Owner: Neutral
Actor77: T17
Location: 31,16
Owner: Neutral
Actor78: T17
Location: 30,16
Owner: Neutral
Actor79: T17
Location: 29,16
Owner: Neutral
Actor80: T17
Location: 28,16
Owner: Neutral
Actor81: T17
Location: 27,16
Owner: Neutral
Actor82: T17
Location: 26,16
Owner: Neutral
Actor83: T17
Location: 25,16
Owner: Neutral
Actor84: T17
Location: 24,16
Owner: Neutral
Actor85: T17
Location: 23,16
Owner: Neutral
Actor86: T17
Location: 22,16
Owner: Neutral
Actor87: T17
Location: 21,16
Owner: Neutral
Actor88: T17
Location: 20,16
Owner: Neutral
Actor89: T17
Location: 19,16
Owner: Neutral
Actor90: T17
Location: 18,16
Owner: Neutral
Actor91: T17
Location: 17,16
Owner: Neutral
Actor92: T17
Location: 18,18
Owner: Neutral
Actor93: T17
Location: 18,20
Owner: Neutral
Actor94: T17
Location: 18,22
Owner: Neutral
Actor95: T17
Location: 18,24
Owner: Neutral
Actor96: T17
Location: 18,26
Owner: Neutral
Actor97: T17
Location: 18,28
Owner: Neutral
Actor98: T17
Location: 18,30
Owner: Neutral
Actor99: T17
Location: 18,32
Owner: Neutral
Actor100: T17
Location: 18,34
Owner: Neutral
Actor101: T17
Location: 18,36
Owner: Neutral
Actor102: T17
Location: 18,38
Owner: Neutral
Actor103: T17
Location: 20,37
Owner: Neutral
Actor104: T17
Location: 20,35
Owner: Neutral
Actor105: T17
Location: 20,33
Owner: Neutral
Actor106: T17
Location: 20,31
Owner: Neutral
Actor107: T17
Location: 20,29
Owner: Neutral
Actor108: T17
Location: 20,27
Owner: Neutral
Actor109: T17
Location: 20,25
Owner: Neutral
Actor110: T17
Location: 20,23
Owner: Neutral
Actor111: T17
Location: 20,21
Owner: Neutral
Actor112: T17
Location: 20,19
Owner: Neutral
Actor113: T17
Location: 20,17
Owner: Neutral
Actor114: T17
Location: 22,18
Owner: Neutral
Actor115: T17
Location: 22,20
Owner: Neutral
Actor116: T17
Location: 22,22
Owner: Neutral
Actor117: T17
Location: 22,24
Owner: Neutral
Actor118: T17
Location: 22,26
Owner: Neutral
Actor119: T17
Location: 22,28
Owner: Neutral
Actor120: T17
Location: 22,30
Owner: Neutral
Actor121: T17
Location: 22,32
Owner: Neutral
Actor122: T17
Location: 22,34
Owner: Neutral
Actor123: T17
Location: 22,36
Owner: Neutral
Actor124: T17
Location: 22,38
Owner: Neutral
Actor125: T17
Location: 24,37
Owner: Neutral
Actor126: T17
Location: 24,35
Owner: Neutral
Actor127: T17
Location: 24,33
Owner: Neutral
Actor128: T17
Location: 24,31
Owner: Neutral
Actor129: T17
Location: 24,29
Owner: Neutral
Actor130: T17
Location: 24,27
Owner: Neutral
Actor131: T17
Location: 24,25
Owner: Neutral
Actor132: T17
Location: 24,23
Owner: Neutral
Actor133: T17
Location: 24,21
Owner: Neutral
Actor134: T17
Location: 24,19
Owner: Neutral
Actor135: T17
Location: 24,17
Owner: Neutral
Actor136: T17
Location: 26,18
Owner: Neutral
Actor137: T17
Location: 26,20
Owner: Neutral
Actor138: T17
Location: 26,22
Owner: Neutral
Actor139: T17
Location: 26,24
Owner: Neutral
Actor162: mpspawn
Location: 36,26
Owner: Neutral
Actor153: mpspawn
Location: 36,36
Owner: Neutral
Actor142: T17
Location: 26,30
Owner: Neutral
Actor143: T17
Location: 26,32
Owner: Neutral
Actor144: T17
Location: 26,34
Owner: Neutral
Actor145: T17
Location: 26,36
Owner: Neutral
Actor146: T17
Location: 26,38
Owner: Neutral
Actor147: T17
Location: 28,37
Owner: Neutral
Actor148: T17
Location: 28,35
Owner: Neutral
Actor149: T17
Location: 28,33
Owner: Neutral
Actor150: T17
Location: 28,31
Owner: Neutral
Actor152: mpspawn
Location: 28,36
Owner: Neutral
Actor163: mpspawn
Location: 36,18
Owner: Neutral
Actor141: mpspawn
Location: 19,27
Owner: Neutral
Actor154: T17
Location: 28,23
Owner: Neutral
Actor155: T17
Location: 28,21
Owner: Neutral
Actor156: T17
Location: 28,19
Owner: Neutral
Actor157: T17
Location: 28,17
Owner: Neutral
Actor158: T17
Location: 30,18
Owner: Neutral
Actor159: T17
Location: 30,20
Owner: Neutral
Actor160: T17
Location: 30,22
Owner: Neutral
Actor161: T17
Location: 30,24
Owner: Neutral
Actor140: mpspawn
Location: 19,19
Owner: Neutral
Actor151: mpspawn
Location: 19,36
Owner: Neutral
Actor164: T17
Location: 30,30
Owner: Neutral
Actor165: T17
Location: 30,32
Owner: Neutral
Actor166: T17
Location: 30,34
Owner: Neutral
Actor167: T17
Location: 30,36
Owner: Neutral
Actor168: T17
Location: 30,38
Owner: Neutral
Actor169: T17
Location: 32,37
Owner: Neutral
Actor170: T17
Location: 32,35
Owner: Neutral
Actor171: T17
Location: 32,33
Owner: Neutral
Actor172: T17
Location: 32,31
Owner: Neutral
Actor173: T17
Location: 32,29
Owner: Neutral
Actor174: T17
Location: 32,27
Owner: Neutral
Actor175: T17
Location: 32,25
Owner: Neutral
Actor176: T17
Location: 32,23
Owner: Neutral
Actor177: T17
Location: 32,21
Owner: Neutral
Actor178: T17
Location: 32,19
Owner: Neutral
Actor179: T17
Location: 32,17
Owner: Neutral
Actor180: T17
Location: 34,18
Owner: Neutral
Actor181: T17
Location: 34,20
Owner: Neutral
Actor182: T17
Location: 34,22
Owner: Neutral
Actor183: T17
Location: 34,24
Owner: Neutral
Actor184: T17
Location: 34,26
Owner: Neutral
Actor185: T17
Location: 34,28
Owner: Neutral
Actor186: T17
Location: 34,30
Owner: Neutral
Actor187: T17
Location: 34,32
Owner: Neutral
Actor188: T17
Location: 34,34
Owner: Neutral
Actor189: T17
Location: 34,36
Owner: Neutral
Actor190: T17
Location: 34,38
Owner: Neutral
Actor191: T17
Location: 36,37
Owner: Neutral
Actor192: T17
Location: 36,35
Owner: Neutral
Actor193: T17
Location: 36,33
Owner: Neutral
Actor194: T17
Location: 36,31
Owner: Neutral
Actor195: T17
Location: 36,29
Owner: Neutral
Actor196: T17
Location: 36,27
Owner: Neutral
Actor197: T17
Location: 36,25
Owner: Neutral
Actor198: T17
Location: 36,23
Owner: Neutral
Actor199: T17
Location: 36,21
Owner: Neutral
Actor200: T17
Location: 36,19
Owner: Neutral
Actor201: T17
Location: 36,17
Owner: Neutral
Actor202: T17
Location: 38,18
Owner: Neutral
Actor203: T17
Location: 38,20
Owner: Multi0
Actor204: T17
Location: 38,22
Owner: Multi1
Actor205: T17
Location: 38,24
Owner: Multi2
Actor206: T17
Location: 38,26
Owner: Multi3
Actor207: T17
Location: 38,28
Owner: Multi4
Actor208: T17
Location: 38,30
Owner: Multi5
Actor209: T17
Location: 38,32
Owner: Multi6
Actor210: T17
Location: 38,34
Owner: Multi7
Actor211: T17
Location: 38,36
Owner: Neutral
Actor212: T17
Location: 38,38
Owner: Neutral
Actor213: mpspawn
Location: 28,18
Owner: Neutral
Actor214: mnlyr
Location: 19,20
Owner: Multi0
Actor215: mnlyr
Location: 19,28
Owner: Multi1
Actor216: mnlyr
Location: 20,36
Owner: Multi2
Actor217: mnlyr
Location: 29,36
Owner: Multi3
Actor218: mnlyr
Location: 37,35
Owner: Multi4
Actor219: mnlyr
Location: 37,25
Owner: Multi5
Actor220: mnlyr
Location: 34,18
Owner: Multi6
Actor221: mnlyr
Location: 27,18
Owner: Multi7
Smudges:
Rules:
World:
-CrateDrop:
SpawnMPUnits:
InitialUnit: mnlyr
APWR:
Buildable:
Owner: a
STEK:
Buildable:
Owner: a
BARR:
Buildable:
Owner: a
FIX:
Buildable:
Owner: a
POWR:
Buildable:
Owner: a
AFLD:
Buildable:
Owner: a
PROC:
Buildable:
Owner: a
WEAP:
Buildable:
Owner: a
DOME:
Buildable:
Owner: a
SPEN:
Buildable:
Owner: a
SILO:
Buildable:
Owner: a
Player:
ClassicProductionQueue@Building:
BuildSpeed: 0.4
PlayerResources:
InitialCash: 60
MNLYR:
Inherits: ^Tank
Buildable:
Queue: Vehicle
BuildPaletteOrder: 30
Prerequisites: fix
Owner: allies
Valued:
Cost: 800
Tooltip:
Name: Bomber
Icon: MNLYICON
Description: Lays mines to destroy unwary enemy units.\n Unarmed
Health:
HP: 500
Armor:
Type: Heavy
Mobile:
Speed: 9
WaitAverage: 1
WaitSpread: 1
ROT: 900
RevealsShroud:
Range: 40
RenderUnit:
Image: MNLY
AttackMove:
JustMove: true
MustBeDestroyed:
Transforms:
IntoActor: ftur
Offset:0,0
Facing: 96
CashTrickler:
Period: 150
Amount: 20
FTUR:
Health:
HP: 1000
Transforms:
IntoActor: mnlyr
Offset:0,0
Facing: 96
MustBeDestroyed:
Building:
Power: 0
CashTrickler:
Period: 150
Amount: 30
ChronoshiftPower:
Image: warpicon
ChargeTime: 60
Description: Chronoshift
LongDesc: Teleport a group of vehicles across\nthe map.
SelectTargetSound: slcttgt1.aud
BeginChargeSound: chrochr1.aud
EndChargeSound: chrordy1.aud
Duration: 999999
KillCargo: yes
Range: 3
IronCurtainPower:
Image: infxicon
ChargeTime: 30
Description: Invulnerability
LongDesc: Makes a unit invulnerable\nfor 3 seconds.
Duration: 3
SelectTargetSound: slcttgt1.aud
BeginChargeSound: ironchg1.aud
EndChargeSound: ironrdy1.aud
Range: 1
MINVV:
Building:
Adjacent: 99
TerrainTypes: Clear,Road
ProvidesCustomPrerequisite:
Prerequisite: MNLYVV
Buildable:
Queue: Building
BuildPaletteOrder: 30
#Prerequisites: MNLYR
Owner: allies, soviet
Hotkey: b
Valued:
Cost: 30
Health:
HP: 200
RenderBuilding:
Image: miner
HasMakeAnimation: false
BelowUnits:
Tooltip:
Name: Bomb
Icon: jmin
Description: Bomb (Hotkey B)
ProximityCaptor:
Types: Mine
SelfHealing:
Step: -1
Ticks: 1
HealIfBelow: 101%
DamageCooldown: 0
Armament:
Weapon: CrateNuke
LocalOffset: 0,0,0,-4,0
AttackFrontal:
Explodes:
DemoTruck:
T17:
Health:
HP: 999999999
Building:
Adjacent: 99
GivesBuildableArea:
Production:
Produces: Building
BaseBuilding:
#RenderBuilding:
# Image: brick
Tooltip:
Name: Tree
ChronoshiftPower:
Image: warpicon
ChargeTime: 60
Description: Chronoshift
LongDesc: Teleport a group of vehicles across\nthe map.
SelectTargetSound: slcttgt1.aud
BeginChargeSound: chrochr1.aud
EndChargeSound: chrordy1.aud
Duration: 999999
KillCargo: yes
Range: 3
IronCurtainPower:
Image: infxicon
ChargeTime: 30
Description: Invulnerability
LongDesc: Makes a unit invulnerable\nfor 3 seconds.
Duration: 3
SelectTargetSound: slcttgt1.aud
BeginChargeSound: ironchg1.aud
EndChargeSound: ironrdy1.aud
Range: 1
Sequences:
miner:
idle:
Start: 0
Length: 1
damaged-idle:
Start: 1
Length: *
damaged-build:
Start: 1
Length: *
brick:
idle:
Start: 0
Length: *
Weapons:
Voices:

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,341 @@
Selectable: True
MapFormat: 5
Title: Drop Zone - Battle of Tikiaki
Description: Pick up the crates with the APC to get units to kill the other players; Using Holloweye's .yaml
Author: Knivesron
Tileset: TEMPERAT
MapSize: 64,64
Bounds: 16,16,32,32
UseAsShellmap: False
Type: Minigame
Players:
PlayerReference@Neutral:
Name: Neutral
OwnsWorld: True
NonCombatant: True
Race: allies
PlayerReference@Creeps:
Name: Creeps
NonCombatant: True
Race: allies
PlayerReference@Multi0:
Name: Multi0
Playable: True
LockRace: True
Race: soviet
Enemies: Multi1,Multi2,Multi3,Multi4,Multi5,Multi6,Multi17
PlayerReference@Multi1:
Name: Multi1
Playable: True
LockRace: True
Race: soviet
Enemies: Multi0,Multi2,Multi3,Multi4,Multi5,Multi6,Multi17
PlayerReference@Multi2:
Name: Multi2
Playable: True
LockRace: True
Race: soviet
Enemies: Multi0,Multi1,Multi3,Multi4,Multi5,Multi6,Multi17
PlayerReference@Multi3:
Name: Multi3
Playable: True
LockRace: True
Race: soviet
Enemies: Multi0,Multi1,Multi2,Multi4,Multi5,Multi6,Multi17
PlayerReference@Multi4:
Name: Multi4
Playable: True
LockRace: True
Race: soviet
Enemies: Multi0,Multi1,Multi2,Multi3,Multi5,Multi6,Multi17
PlayerReference@Multi5:
Name: Multi5
Playable: True
LockRace: True
Race: soviet
Enemies: Multi0,Multi2,Multi3,Multi4,Multi1,Multi6,Multi17
PlayerReference@Multi6:
Name: Multi6
Playable: True
LockRace: True
Race: soviet
Enemies: Multi0,Multi2,Multi3,Multi4,Multi5,Multi1,Multi17
PlayerReference@Multi7:
Name: Multi7
Playable: True
LockRace: True
Race: soviet
Enemies: Multi0,Multi2,Multi3,Multi4,Multi5,Multi6,Multi11
Actors:
Actor0: apc
Location: 28,28
Owner: Multi0
Actor1: apc
Location: 30,28
Owner: Multi1
Actor2: apc
Location: 32,28
Owner: Multi2
Actor3: apc
Location: 32,30
Owner: Multi3
Actor4: apc
Location: 32,32
Owner: Multi4
Actor5: apc
Location: 30,32
Owner: Multi5
Actor6: apc
Location: 28,32
Owner: Multi6
Actor7: apc
Location: 28,30
Owner: Multi7
Actor10: v08
Location: 42,40
Owner: Neutral
Actor17: v17
Location: 37,41
Owner: Neutral
Actor13: v14
Location: 37,39
Owner: Neutral
Actor14: v15
Location: 38,39
Owner: Neutral
Actor15: v17
Location: 37,40
Owner: Neutral
Actor16: v17
Location: 38,40
Owner: Neutral
Actor19: brl3
Location: 43,45
Owner: Neutral
Actor12: v07
Location: 37,38
Owner: Neutral
Actor9: v08
Location: 44,40
Owner: Neutral
Actor11: v03
Location: 43,43
Owner: Neutral
Actor18: brl3
Location: 42,38
Owner: Neutral
Actor20: brl3
Location: 37,44
Owner: Neutral
Actor8: mpspawn
Location: 29,29
Owner: Neutral
Actor21: mpspawn
Location: 29,30
Owner: Neutral
Actor22: mpspawn
Location: 29,31
Owner: Neutral
Actor23: mpspawn
Location: 30,31
Owner: Neutral
Actor24: mpspawn
Location: 31,31
Owner: Neutral
Actor25: mpspawn
Location: 31,30
Owner: Neutral
Actor26: mpspawn
Location: 31,29
Owner: Neutral
Actor27: mpspawn
Location: 30,29
Owner: Neutral
Actor28: barl
Location: 37,43
Owner: Neutral
Actor29: barl
Location: 44,38
Owner: Neutral
Actor30: barl
Location: 43,38
Owner: Neutral
Actor31: t15
Location: 43,41
Owner: Neutral
Actor32: t15
Location: 34,17
Owner: Neutral
Actor33: t12
Location: 37,17
Owner: Neutral
Actor34: t10
Location: 40,17
Owner: Neutral
Actor35: t10
Location: 42,17
Owner: Neutral
Actor36: t10
Location: 43,17
Owner: Neutral
Actor37: t16
Location: 44,18
Owner: Neutral
Actor38: t16
Location: 43,18
Owner: Neutral
Actor39: t08
Location: 43,19
Owner: Neutral
Actor40: t08
Location: 35,18
Owner: Neutral
Actor41: t08
Location: 37,18
Owner: Neutral
Actor42: t08
Location: 36,18
Owner: Neutral
Actor43: syrf
Location: 47,24
Owner: Neutral
Actor44: syrf
Location: 14,25
Owner: Neutral
Actor45: spef
Location: 28,15
Owner: Neutral
Actor46: spef
Location: 23,47
Owner: Neutral
Actor47: sbag
Location: 38,35
Owner: Neutral
Actor48: sbag
Location: 37,35
Owner: Neutral
Actor49: sbag
Location: 36,35
Owner: Neutral
Actor50: sbag
Location: 35,35
Owner: Neutral
Actor51: sbag
Location: 34,35
Owner: Neutral
Actor52: sbag
Location: 40,35
Owner: Neutral
Actor53: sbag
Location: 40,34
Owner: Neutral
Actor54: sbag
Location: 40,33
Owner: Neutral
Actor55: sbag
Location: 41,33
Owner: Neutral
Actor56: sbag
Location: 34,43
Owner: Neutral
Actor57: sbag
Location: 34,44
Owner: Neutral
Actor58: sbag
Location: 34,45
Owner: Neutral
Actor59: sbag
Location: 34,41
Owner: Neutral
Actor60: sbag
Location: 34,40
Owner: Neutral
Actor62: t05
Location: 20,18
Owner: Neutral
Actor61: t05
Location: 41,17
Owner: Neutral
Smudges:
Rules:
World:
CrateDrop:
Maximum: 3
SpawnInterval: 5
-SpawnMPUnits:
-MPStartLocations:
CRATE:
-LevelUpCrateAction:
-GiveMcvCrateAction:
-RevealMapCrateAction:
-HideMapCrateAction:
-ExplodeCrateAction@nuke:
-ExplodeCrateAction@boom:
-ExplodeCrateAction@fire:
-SupportPowerCrateAction@parabombs:
-GiveCashCrateAction:
GiveUnitCrateAction@ttnk:
SelectionShares: 4
Unit: ttnk
GiveUnitCrateAction@ftrk:
SelectionShares: 6
Unit: ftrk
GiveUnitCrateAction@harv:
SelectionShares: 1
Unit: harv
GiveUnitCrateAction@shok:
SelectionShares: 1
Unit: shok
GiveUnitCrateAction@dog:
SelectionShares: 1
Unit: dog
APC:
Health:
HP: 1000
RevealsShroud:
Range: 40
MustBeDestroyed:
-AttackMove:
HARV:
Tooltip:
Name: Bomb Truck
Description: Explodes like a damn nuke!
Health:
HP: 100
Explodes:
Weapon: CrateNuke
EmptyWeapon:
SHOK:
Health:
HP: 800
DOG:
Health:
HP: 120
Mobile:
Speed: 7
Sequences:
Weapons:
PortaTesla:
ROF: 20
Range: 10
Warhead:
Spread: 1
InfDeath: 5
Damage: 80
Voices:

Binary file not shown.

BIN
mods/ra/maps/drop-zone-w/map.bin Executable file

Binary file not shown.

333
mods/ra/maps/drop-zone-w/map.yaml Executable file
View File

@@ -0,0 +1,333 @@
Selectable: True
MapFormat: 5
Title: Drop Zone W
Description: Pick up the crates with the naval mobile HQ to get units to kill the other players. v0.2
Author: riderr3
Tileset: SNOW
MapSize: 64,64
Bounds: 16,16,32,32
UseAsShellmap: False
Type: Minigame
Players:
PlayerReference@Neutral:
Name: Neutral
OwnsWorld: True
NonCombatant: True
Race: allies
PlayerReference@Creeps:
Name: Creeps
NonCombatant: True
Race: allies
Enemies: Multi0,Multi1,Multi2,Multi3,Multi4,Multi5,Multi6,Multi7
PlayerReference@Multi0:
Name: Multi0
Playable: True
LockRace: True
Race: allies
LockSpawn: True
Enemies: Creeps
PlayerReference@Multi1:
Name: Multi1
Playable: True
LockRace: True
Race: allies
LockSpawn: True
Enemies: Creeps
PlayerReference@Multi2:
Name: Multi2
Playable: True
LockRace: True
Race: allies
LockSpawn: True
Enemies: Creeps
PlayerReference@Multi3:
Name: Multi3
Playable: True
LockRace: True
Race: allies
LockSpawn: True
Enemies: Creeps
PlayerReference@Multi4:
Name: Multi4
Playable: True
LockRace: True
Race: allies
LockSpawn: True
Enemies: Creeps
PlayerReference@Multi5:
Name: Multi5
Playable: True
LockRace: True
Race: allies
LockSpawn: True
Enemies: Creeps
PlayerReference@Multi6:
Name: Multi6
Playable: True
LockRace: True
Race: allies
LockSpawn: True
Enemies: Creeps
PlayerReference@Multi7:
Name: Multi7
Playable: True
LockRace: True
Race: allies
LockSpawn: True
Enemies: Creeps
Actors:
Actor2: mpspawn
Location: 34,30
Owner: Neutral
Actor4: mpspawn
Location: 30,32
Owner: Neutral
Actor6: mpspawn
Location: 32,34
Owner: Neutral
Actor0: mpspawn
Location: 30,30
Owner: Neutral
Actor12: lst
Location: 35,29
Owner: Multi0
Actor14: lst
Location: 29,29
Owner: Multi1
Actor8: lst
Location: 29,35
Owner: Multi2
Actor10: lst
Location: 35,35
Owner: Multi3
Actor9: lst
Location: 32,35
Owner: Multi4
Actor13: lst
Location: 32,29
Owner: Multi5
Actor11: lst
Location: 35,32
Owner: Multi6
Actor15: lst
Location: 29,32
Owner: Multi7
Actor7: mpspawn
Location: 34,34
Owner: Neutral
Actor3: mpspawn
Location: 34,32
Owner: Neutral
Actor1: mpspawn
Location: 32,30
Owner: Neutral
Actor5: mpspawn
Location: 30,34
Owner: Neutral
Actor16: v12
Location: 37,24
Owner: Neutral
Actor17: v11
Location: 38,23
Owner: Neutral
Actor18: v17
Location: 38,25
Owner: Neutral
Actor19: brl3
Location: 47,21
Owner: Neutral
Actor20: v15
Location: 39,22
Owner: Neutral
Actor21: t12
Location: 39,20
Owner: Neutral
Actor22: t08
Location: 29,47
Owner: Neutral
Actor23: tc02
Location: 15,46
Owner: Neutral
Actor24: t07
Location: 16,44
Owner: Neutral
Actor25: tc05
Location: 14,38
Owner: Neutral
Actor26: t07
Location: 36,25
Owner: Neutral
Actor28: v14
Location: 38,24
Owner: Neutral
Actor27: t08
Location: 37,25
Owner: Neutral
Actor30: t10
Location: 21,36
Owner: Neutral
Actor31: t01
Location: 23,34
Owner: Neutral
Smudges:
Rules:
World:
CrateDrop:
Maximum: 3
SpawnInterval: 5
WaterChance: 1
-SpawnMPUnits:
-MPStartLocations:
CRATE:
-LevelUpCrateAction:
-GiveMcvCrateAction:
-GiveUnitCrateAction@jeep:
-GiveUnitCrateAction@arty:
-GiveUnitCrateAction@v2rl:
-GiveUnitCrateAction@1tnk:
-GiveUnitCrateAction@2tnk:
-GiveUnitCrateAction@3tnk:
-GiveUnitCrateAction@4tnk:
-RevealMapCrateAction:
-HideMapCrateAction:
-ExplodeCrateAction@nuke:
-ExplodeCrateAction@boom:
-ExplodeCrateAction@fire:
-SupportPowerCrateAction@parabombs:
-GiveCashCrateAction:
GiveUnitCrateAction@pt:
SelectionShares: 7
Unit: pt
GiveUnitCrateAction@dd:
SelectionShares: 6
Unit: dd
GiveUnitCrateAction@ca:
SelectionShares: 4
Unit: ca
GiveUnitCrateAction@ss:
SelectionShares: 6
Unit: ss
GiveUnitCrateAction@msub:
SelectionShares: 4
Unit: msub
LST:
Buildable:
Queue: Ship
BuildPaletteOrder: 30
Owner: allies
Tooltip:
Name: Naval Mobile HQ
Description: Naval mobile HQ.\n Protect it at all costs.
Health:
HP: 1000
Mobile:
Speed: 12
RevealsShroud:
Range: 50
Armament@PRIMARY:
Weapon:M60mg
Armament@SECONDARY:
Weapon:M60mg
AttackFrontal:
WithMuzzleFlash:
MustBeDestroyed:
-GivesBounty:
PT:
Buildable:
Owner: allies
-GivesBounty:
DD:
Buildable:
Owner: allies
-GivesBounty:
CA:
Buildable:
Owner: allies
-GivesBounty:
SS:
Buildable:
Owner: allies
-GivesBounty:
MSUB:
Buildable:
Owner: allies
-GivesBounty:
Sequences:
lst:
muzzle: minigun
Start: 0
Length: 6
Facings: 8
turret: mgun
Start: 0
Facings: 32
Weapons:
8Inch:
ROF: 200
Range: 32
Burst: 4
Report: TURRET1
Projectile: Bullet
Speed: 32
High: true
Angle: .1
Inaccuracy: 80
Image: 120MM
ContrailLength: 30
Warhead:
Spread: 3
Versus:
None: 60%
Wood: 75%
Light: 60%
Heavy: 25%
Explosion: large_explosion
WaterExplosion: large_splash
InfDeath: 2
SmudgeType: Crater
Damage: 250
ImpactSound: kaboom12
WaterImpactSound: splash9
SubMissile:
ROF: 250
Range: 32
Burst: 4
Report: MISSILE6
Projectile: Bullet
Speed: 24
High: true
Angle: .1
Inaccuracy: 70
Image: MISSILE
Trail: smokey
ContrailLength: 30
Warhead:
Spread: 10
Versus:
None: 40%,
Light: 30%
Heavy: 30%
Explosion: large_explosion
WaterExplosion: large_splash
InfDeath: 2
SmudgeType: Crater
Damage: 400
ImpactSound: kaboom12
WaterImpactSound: splash9
Voices:

Binary file not shown.

BIN
mods/ra/maps/drop-zone/map.bin Executable file

Binary file not shown.

236
mods/ra/maps/drop-zone/map.yaml Executable file
View File

@@ -0,0 +1,236 @@
Selectable: True
MapFormat: 5
Title: Drop Zone
Description: Pick up the crates with the APC to get units to kill the other players.
Author: Holloweye
Tileset: TEMPERAT
MapSize: 64,64
Bounds: 16,16,32,32
UseAsShellmap: False
Type: Minigame
Players:
PlayerReference@Neutral:
Name: Neutral
OwnsWorld: True
NonCombatant: True
Race: allies
PlayerReference@Creeps:
Name: Creeps
NonCombatant: True
Race: allies
PlayerReference@Multi0:
Name: Multi0
Playable: True
LockRace: True
Race: soviet
Enemies: Multi1,Multi2,Multi3,Multi4,Multi5,Multi6,Multi17
PlayerReference@Multi1:
Name: Multi1
Playable: True
LockRace: True
Race: soviet
Enemies: Multi0,Multi2,Multi3,Multi4,Multi5,Multi6,Multi17
PlayerReference@Multi2:
Name: Multi2
Playable: True
LockRace: True
Race: soviet
Enemies: Multi0,Multi1,Multi3,Multi4,Multi5,Multi6,Multi17
PlayerReference@Multi3:
Name: Multi3
Playable: True
LockRace: True
Race: soviet
Enemies: Multi0,Multi1,Multi2,Multi4,Multi5,Multi6,Multi17
PlayerReference@Multi4:
Name: Multi4
Playable: True
LockRace: True
Race: soviet
Enemies: Multi0,Multi1,Multi2,Multi3,Multi5,Multi6,Multi17
PlayerReference@Multi5:
Name: Multi5
Playable: True
LockRace: True
Race: soviet
Enemies: Multi0,Multi2,Multi3,Multi4,Multi1,Multi6,Multi17
PlayerReference@Multi6:
Name: Multi6
Playable: True
LockRace: True
Race: soviet
Enemies: Multi0,Multi2,Multi3,Multi4,Multi5,Multi1,Multi17
PlayerReference@Multi7:
Name: Multi7
Playable: True
LockRace: True
Race: soviet
Enemies: Multi0,Multi2,Multi3,Multi4,Multi5,Multi6,Multi11
Actors:
Actor0: apc
Location: 28,28
Owner: Multi0
Actor1: apc
Location: 30,28
Owner: Multi1
Actor2: apc
Location: 32,28
Owner: Multi2
Actor3: apc
Location: 32,30
Owner: Multi3
Actor4: apc
Location: 32,32
Owner: Multi4
Actor5: apc
Location: 30,32
Owner: Multi5
Actor6: apc
Location: 28,32
Owner: Multi6
Actor7: apc
Location: 28,30
Owner: Multi7
Actor9: tc04
Location: 18,43
Owner: Neutral
Actor10: tc02
Location: 44,44
Owner: Neutral
Actor11: t10
Location: 23,24
Owner: Neutral
Actor12: t08
Location: 34,23
Owner: Neutral
Actor13: t12
Location: 38,27
Owner: Neutral
Actor14: t12
Location: 35,35
Owner: Neutral
Actor15: tc04
Location: 43,18
Owner: Neutral
Actor16: tc05
Location: 18,18
Owner: Neutral
Actor17: t12
Location: 22,35
Owner: Neutral
Actor18: t07
Location: 18,28
Owner: Neutral
Actor19: t07
Location: 45,39
Owner: Neutral
Actor20: t07
Location: 40,18
Owner: Neutral
Actor8: mpspawn
Location: 29,29
Owner: Neutral
Actor21: mpspawn
Location: 29,30
Owner: Neutral
Actor22: mpspawn
Location: 29,31
Owner: Neutral
Actor23: mpspawn
Location: 30,31
Owner: Neutral
Actor24: mpspawn
Location: 31,31
Owner: Neutral
Actor25: mpspawn
Location: 31,30
Owner: Neutral
Actor26: mpspawn
Location: 31,29
Owner: Neutral
Actor27: mpspawn
Location: 30,29
Owner: Neutral
Smudges:
Rules:
World:
CrateDrop:
Maximum: 3
SpawnInterval: 5
-SpawnMPUnits:
-MPStartLocations:
CRATE:
-LevelUpCrateAction:
-GiveMcvCrateAction:
-RevealMapCrateAction:
-HideMapCrateAction:
-ExplodeCrateAction@nuke:
-ExplodeCrateAction@boom:
-ExplodeCrateAction@fire:
-SupportPowerCrateAction@parabombs:
-GiveCashCrateAction:
GiveUnitCrateAction@ttnk:
SelectionShares: 4
Unit: ttnk
GiveUnitCrateAction@ftrk:
SelectionShares: 6
Unit: ftrk
GiveUnitCrateAction@harv:
SelectionShares: 1
Unit: harv
GiveUnitCrateAction@shok:
SelectionShares: 1
Unit: shok
GiveUnitCrateAction@dog:
SelectionShares: 1
Unit: dog
APC:
Health:
HP: 1000
RevealsShroud:
Range: 40
MustBeDestroyed:
-AttackMove:
HARV:
Tooltip:
Name: Bomb Truck
Description: Explodes like a damn nuke!
Health:
HP: 100
Explodes:
Weapon: CrateNuke
EmptyWeapon:
SHOK:
Health:
HP: 800
DOG:
Health:
HP: 120
Mobile:
Speed: 7
Sequences:
Weapons:
PortaTesla:
ROF: 20
Range: 10
Warhead:
Spread: 1
InfDeath: 5
Damage: 80
Voices:

View File

@@ -2568,13 +2568,16 @@ Rules:
Range: 6
Turreted:
ROT: 1
Armament@PRIMARY:
Weapon: SuperTankPrimary
LocalOffset: -4,-5,0,0,0, 4,-5,0,0,0
Recoil: 4
RecoilRecovery: 0.7
Armament@SECONDARY:
Weapon: MammothTusk
LocalOffset: -7,2,0,0,25, 7,2,0,0,-25
Recoil: 1
AttackTurreted:
PrimaryWeapon: SuperTankPrimary
SecondaryWeapon: MammothTusk
PrimaryLocalOffset: -4,-5,0,0,0, 4,-5,0,0,0
SecondaryLocalOffset: -7,2,0,0,25, 7,2,0,0,-25
PrimaryRecoil: 4
PrimaryRecoilRecovery: 0.7
RenderUnitTurreted:
Image: 4TNK
AutoTarget:

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@@ -95,9 +95,10 @@ MIG:
Type: Light
RevealsShroud:
Range: 12
Armament:
Weapon: Maverick
LocalOffset: -15,0,0,0,-10, 15,0,0,0,6
AttackPlane:
PrimaryWeapon: Maverick
PrimaryLocalOffset: -15,0,0,0,-10, 15,0,0,0,6
FacingTolerance: 20
Plane:
InitialFacing: 192
@@ -144,11 +145,13 @@ YAK:
Type: Light
RevealsShroud:
Range: 10
Armament@PRIMARY:
Weapon: ChainGun.Yak
LocalOffset: -5,-6,0,0,0
Armament@SECONDARY:
Weapon: ChainGun.Yak
LocalOffset: 5,-6,0,0,0
AttackPlane:
PrimaryWeapon: ChainGun.Yak
SecondaryWeapon: ChainGun.Yak
PrimaryOffset: -5,-6,0,0
SecondaryOffset: 5,-6,0,0
FacingTolerance: 20
Plane:
RearmBuildings: afld
@@ -250,11 +253,13 @@ HELI:
Type: Light
RevealsShroud:
Range: 12
Armament@PRIMARY:
Weapon: HellfireAA
LocalOffset: -5,0,0,2,0
Armament@SECONDARY:
Weapon: HellfireAG
Offset: 5,0,0,2,0
AttackHeli:
PrimaryWeapon: HellfireAG
SecondaryWeapon: HellfireAA
PrimaryOffset: -5,0,0,2
SecondaryOffset: 5,0,0,2
FacingTolerance: 20
Helicopter:
RearmBuildings: hpad
@@ -294,11 +299,13 @@ HIND:
Type: Light
RevealsShroud:
Range: 10
Armament@PRIMARY:
Weapon: ChainGun
LocalOffset: -5,-2,0,2,0
Armament@SECONDARY:
Weapon: ChainGun
LocalOffset: -5,-2,0,2,0
AttackHeli:
PrimaryWeapon: ChainGun
SecondaryWeapon: ChainGun
PrimaryOffset: -5,-2,0,2
SecondaryOffset: 5,-2,0,2
FacingTolerance: 20
Helicopter:
RearmBuildings: hpad

View File

@@ -103,9 +103,10 @@ V01.SNIPER:
AutoTarget:
Turreted:
ROT: 255
Armament:
Weapon: Sniper
LocalOffset: 0,-11,0,0,0
AttackTurreted:
PrimaryWeapon: Sniper
PrimaryLocalOffset: 0,-11,0,0,0
Cargo:
InitialUnits: sniper
Types: Infantry

View File

@@ -289,8 +289,9 @@
Speed: 4
RevealsShroud:
Range: 2
Armament:
Weapon: Pistol
AttackFrontal:
PrimaryWeapon: Pistol
ProximityCaptor:
Types:CivilianInfantry
-RenderInfantry:

View File

@@ -20,9 +20,9 @@ DOG:
Speed: 7
RevealsShroud:
Range: 5
AutoTarget:
Armament:
Weapon: DogJaw
AttackLeap:
PrimaryWeapon: DogJaw
CanAttackGround: no
RenderInfantry:
IdleAnimations: idle1,idle2
@@ -46,8 +46,9 @@ E1:
HP: 50
Mobile:
Speed: 4
Armament:
Weapon: M1Carbine
AttackFrontal:
PrimaryWeapon: M1Carbine
TakeCover:
-RenderInfantry:
RenderInfantryProne:
@@ -72,10 +73,11 @@ E2:
HP: 50
Mobile:
Speed: 5
AttackFrontal:
PrimaryWeapon: Grenade
PrimaryOffset: 0,0,0,-13
Armament:
Weapon: Grenade
LocalOffset: 0,0,0,-13,0
FireDelay: 15
AttackFrontal:
TakeCover:
-RenderInfantry:
RenderInfantryProne:
@@ -102,10 +104,13 @@ E3:
HP: 45
Mobile:
Speed: 3
Armament@PRIMARY:
Weapon: RedEye
LocalOffset: 0,0,0,-13,0
Armament@SECONDARY:
Weapon: Dragon
LocalOffset: 0,0,0,-13,0
AttackFrontal:
PrimaryWeapon: RedEye
SecondaryWeapon: Dragon
PrimaryOffset: 0,0,0,-13
TakeCover:
-RenderInfantry:
RenderInfantryProne:
@@ -130,10 +135,11 @@ E4:
HP: 40
Mobile:
Speed: 3
AttackFrontal:
PrimaryWeapon: Flamer
PrimaryOffset: 0,-10,0,-8
Armament:
Weapon: Flamer
LocalOffset: 0,-10,0,-8,0
FireDelay: 8
AttackFrontal:
TakeCover:
-RenderInfantry:
RenderInfantryProne:
@@ -204,8 +210,9 @@ SPY:
-RenderInfantry:
RenderSpy:
IdleAnimations: idle1,idle2
Armament:
Weapon: SilencedPPK
AttackFrontal:
PrimaryWeapon: SilencedPPK
E7:
Inherits: ^Infantry
@@ -234,9 +241,11 @@ E7:
C4Delay: 45
Passenger:
PipType: Red
Armament@PRIMARY:
Weapon: Colt45
Armament@SECONDARY:
Weapon: Colt45
AttackFrontal:
PrimaryWeapon: Colt45
SecondaryWeapon: Colt45
TakeCover:
-RenderInfantry:
RenderInfantryProne:
@@ -270,9 +279,11 @@ E8:
Range: 4
Passenger:
PipType: Red
Armament@PRIMARY:
Weapon: VolkAT
Armament@SECONDARY:
Weapon: VolkNapalm
AttackFrontal:
PrimaryWeapon: VolkAT
SecondaryWeapon: VolkNapalm
TakeCover:
-RenderInfantry:
RenderInfantryProne:
@@ -308,8 +319,9 @@ MEDI:
Passenger:
PipType: Yellow
AutoHeal:
Armament:
Weapon: Heal
AttackMedic:
PrimaryWeapon: Heal
TakeCover:
-AutoTarget:
AttackMove:
@@ -343,8 +355,9 @@ MECH:
Passenger:
PipType: Yellow
AutoHeal:
Armament:
Weapon: Repair
AttackMedic:
PrimaryWeapon: Repair
TakeCover:
-AutoTarget:
AttackMove:
@@ -457,9 +470,10 @@ SHOK:
Speed: 3
RevealsShroud:
Range: 4
Armament:
Weapon: PortaTesla
LocalOffset: 0,-10,0,-8,0
AttackFrontal:
PrimaryWeapon: PortaTesla
PrimaryOffset: 0,-10,0,-8
TakeCover:
-RenderInfantry:
RenderInfantryProne:
@@ -492,8 +506,9 @@ SNIPER:
Range: 6
AutoTarget:
InitialStance: HoldFire
Armament:
Weapon: Sniper
AttackFrontal:
PrimaryWeapon: Sniper
TakeCover:
-RenderInfantry:
RenderInfantryProne:

View File

@@ -31,10 +31,11 @@ SS:
CloakDelay: 50
CloakSound: subshow1.aud
UncloakSound: subshow1.aud
AttackFrontal:
PrimaryWeapon: TorpTube
PrimaryLocalOffset: -4,0,0,0,0, 4,0,0,0,0
Armament:
Weapon: TorpTube
LocalOffset: -4,0,0,0,0, 4,0,0,0,0
FireDelay: 2
AttackFrontal:
Selectable:
Bounds: 38,38
Chronoshiftable:
@@ -78,9 +79,10 @@ MSUB:
CloakDelay: 100
CloakSound: subshow1.aud
UncloakSound: subshow1.aud
AttackFrontal:
PrimaryWeapon: SubMissile
Armament:
Weapon: SubMissile
FireDelay: 2
AttackFrontal:
Selectable:
Bounds: 44,44
Chronoshiftable:
@@ -116,11 +118,13 @@ DD:
Range: 6
Turreted:
ROT: 7
Offset: 0,-8,0,-3
Armament@PRIMARY:
Weapon: Stinger
LocalOffset: -4,0,0,0,-20, 4,0,0,0,20
Armament@SECONDARY:
Weapon: DepthCharge
AttackTurreted:
PrimaryWeapon: Stinger
SecondaryWeapon: DepthCharge
PrimaryOffset: 0,-8,0,-3
PrimaryLocalOffset: -4,0,0,0,-20, 4,0,0,0,20
Selectable:
Bounds: 38,38
RenderUnitTurreted:
@@ -155,19 +159,27 @@ CA:
Speed: 2
RevealsShroud:
Range: 7
Turreted:
Turreted@PRIMARY:
Turret: primary
Offset: 0,17,0,-2
ROT: 3
Turreted@SECONDARY:
Turret: secondary
Offset: 0,-17,0,-2
ROT: 3
Armament@PRIMARY:
Turret: primary
Weapon: 8Inch
LocalOffset: -4,-5,0,0,0, 4,-5,0,0,0
Recoil: 4
RecoilRecovery: 0.8
Armament@SECONDARY:
Turret: secondary
Weapon: 8Inch
LocalOffset: -4,-5,0,0,0, 4,-5,0,0,0
Recoil: 4
RecoilRecovery: 0.8
AttackTurreted:
PrimaryWeapon: 8Inch
SecondaryWeapon: 8Inch
PrimaryOffset: 0,17,0,-2
SecondaryOffset: 0,-17,0,-2
PrimaryLocalOffset: -4,-5,0,0,0, 4,-5,0,0,0
SecondaryLocalOffset: -4,-5,0,0,0, 4,-5,0,0,0
PrimaryRecoil: 4
SecondaryRecoil: 4
PrimaryRecoilRecovery: 0.8
SecondaryRecoilRecovery: 0.8
Selectable:
Bounds: 44,44
RenderUnitTurreted:
@@ -232,10 +244,12 @@ PT:
Range: 7
Turreted:
ROT: 7
Offset: 0,-6,0,-1
Armament@PRIMARY:
Weapon: 2Inch
Armament@SECONDARY:
Weapon: DepthCharge
AttackTurreted:
PrimaryWeapon: 2Inch
SecondaryWeapon: DepthCharge
PrimaryOffset: 0,-6,0,-1
Selectable:
Bounds: 32,32
RenderUnitTurreted:

View File

@@ -282,10 +282,11 @@ TSLA:
RevealsShroud:
Range: 8
RenderBuildingCharge:
Armament:
Weapon: TeslaZap
LocalOffset: 0,0,0,-10,0
AttackTesla:
PrimaryWeapon: TeslaZap
ReloadTime: 120
PrimaryOffset: 0,0,0,-10
AutoTarget:
IronCurtainable:
-RenderBuilding:
@@ -323,9 +324,11 @@ AGUN:
ROT: 15
InitialFacing: 224
RenderBuildingTurreted:
Armament@PRIMARY:
Weapon: ZSU-23
Armament@SECONDARY:
Weapon: ZSU-23
AttackTurreted:
PrimaryWeapon: ZSU-23
SecondaryWeapon: ZSU-23
AutoTarget:
IronCurtainable:
-RenderBuilding:
@@ -442,9 +445,10 @@ PBOX.E1:
Image: PBOX
RenderRangeCircle:
AutoTarget:
Armament:
Weapon: Vulcan
LocalOffset: 0,-11,0,0,0
AttackTurreted:
PrimaryWeapon: Vulcan
PrimaryLocalOffset: 0,-11,0,0,0
WithMuzzleFlash:
Cargo:
InitialUnits: e1
@@ -464,9 +468,10 @@ PBOX.E3:
Image: PBOX
RenderRangeCircle:
AutoTarget:
Armament:
Weapon: Dragon
LocalOffset: 0,-11,0,0,0
AttackTurreted:
PrimaryWeapon: Dragon
PrimaryLocalOffset: 0,-11,0,0,0
PBOX.E4:
Inherits: PBOX
@@ -476,9 +481,10 @@ PBOX.E4:
Image: PBOX
RenderRangeCircle:
AutoTarget:
Armament:
Weapon: Flamer
LocalOffset: 0,-11,0,0,0
AttackTurreted:
PrimaryWeapon: Flamer
PrimaryLocalOffset: 0,-11,0,0,0
PBOX.E7:
Inherits: PBOX
@@ -488,9 +494,10 @@ PBOX.E7:
Image: PBOX
RenderRangeCircle:
AutoTarget:
Armament:
Weapon: Colt45
LocalOffset: 0,-11,0,0,0
AttackTurreted:
PrimaryWeapon: Colt45
PrimaryLocalOffset: 0,-11,0,0,0
PBOX.SHOK:
Inherits: PBOX
@@ -500,9 +507,10 @@ PBOX.SHOK:
Image: PBOX
RenderRangeCircle:
AutoTarget:
Armament:
Weapon: PortaTesla
LocalOffset: 0,-11,0,0,0
AttackTurreted:
PrimaryWeapon: PortaTesla
PrimaryLocalOffset: 0,-11,0,0,0
PBOX.SNIPER:
Inherits: PBOX
@@ -512,9 +520,10 @@ PBOX.SNIPER:
Image: PBOX
RenderRangeCircle:
AutoTarget:
Armament:
Weapon: Sniper
LocalOffset: 0,-11,0,0,0
AttackTurreted:
PrimaryWeapon: Sniper
PrimaryLocalOffset: 0,-11,0,0,0
HBOX:
Inherits: ^Building
@@ -599,9 +608,10 @@ HBOX.E1:
Image: HBOX
RenderRangeCircle:
AutoTarget:
Armament:
Weapon: Vulcan
LocalOffset: 0,-11,0,0,0
AttackTurreted:
PrimaryWeapon: Vulcan
PrimaryLocalOffset: 0,-11,0,0,0
WithMuzzleFlash:
Cargo:
InitialUnits: e1
@@ -621,9 +631,10 @@ HBOX.E3:
Image: HBOX
RenderRangeCircle:
AutoTarget:
Armament:
Weapon: Dragon
LocalOffset: 0,-11,0,0,0
AttackTurreted:
PrimaryWeapon: Dragon
PrimaryLocalOffset: 0,-11,0,0,0
HBOX.E4:
Inherits: HBOX
@@ -633,9 +644,10 @@ HBOX.E4:
Image: HBOX
RenderRangeCircle:
AutoTarget:
Armament:
Weapon: Flamer
LocalOffset: 0,-11,0,0,0
AttackTurreted:
PrimaryWeapon: Flamer
PrimaryLocalOffset: 0,-11,0,0,0
HBOX.E7:
Inherits: HBOX
@@ -645,9 +657,10 @@ HBOX.E7:
Image: HBOX
RenderRangeCircle:
AutoTarget:
Armament:
Weapon: Colt45
LocalOffset: 0,-11,0,0,0
AttackTurreted:
PrimaryWeapon: Colt45
PrimaryLocalOffset: 0,-11,0,0,0
HBOX.SHOK:
Inherits: HBOX
@@ -657,9 +670,10 @@ HBOX.SHOK:
Image: HBOX
RenderRangeCircle:
AutoTarget:
Armament:
Weapon: PortaTesla
LocalOffset: 0,-11,0,0,0
AttackTurreted:
PrimaryWeapon: PortaTesla
PrimaryLocalOffset: 0,-11,0,0,0
HBOX.SNIPER:
Inherits: HBOX
@@ -669,9 +683,10 @@ HBOX.SNIPER:
Image: HBOX
RenderRangeCircle:
AutoTarget:
Armament:
Weapon: Sniper
LocalOffset: 0,-11,0,0,0
AttackTurreted:
PrimaryWeapon: Sniper
PrimaryLocalOffset: 0,-11,0,0,0
GUN:
Inherits: ^Building
@@ -699,8 +714,9 @@ GUN:
ROT: 12
InitialFacing: 50
RenderBuildingTurreted:
Armament:
Weapon: TurretGun
AttackTurreted:
PrimaryWeapon: TurretGun
AutoTarget:
IronCurtainable:
-RenderBuilding:
@@ -732,10 +748,11 @@ FTUR:
Range: 6
Turreted:
ROT: 255
Offset: 0,0,0,-2
Armament:
Weapon: FireballLauncher
LocalOffset: 0,-12,0,0,0
AttackTurreted:
PrimaryWeapon: FireballLauncher
PrimaryOffset: 0,0,0,-2
PrimaryLocalOffset: 0,-12,0,0,0
AutoTarget:
IronCurtainable:
RenderRangeCircle:
@@ -770,8 +787,9 @@ SAM:
ROT: 30
InitialFacing: 0
RenderBuildingTurreted:
Armament:
Weapon: Nike
AttackTurreted:
PrimaryWeapon: Nike
WithMuzzleFlash:
AutoTarget:
IronCurtainable:

View File

@@ -19,8 +19,9 @@ V2RL:
Speed: 7
RevealsShroud:
Range: 5
Armament:
Weapon: SCUD
AttackFrontal:
PrimaryWeapon: SCUD
RenderUnitReload:
AutoTarget:
Explodes:
@@ -49,10 +50,11 @@ V2RL:
Range: 4
Turreted:
ROT: 5
Armament:
Weapon: 25mm
Recoil: 2
RecoilRecovery: 0.5
AttackTurreted:
PrimaryWeapon: 25mm
PrimaryRecoil: 2
PrimaryRecoilRecovery: 0.5
RenderUnitTurreted:
AutoTarget:
Explodes:
@@ -85,10 +87,11 @@ V2RL:
Range: 5
Turreted:
ROT: 5
Armament:
Weapon: 90mm
Recoil: 3
RecoilRecovery: 0.9
AttackTurreted:
PrimaryWeapon: 90mm
PrimaryRecoil: 3
PrimaryRecoilRecovery: 0.9
RenderUnitTurreted:
AutoTarget:
Explodes:
@@ -123,11 +126,12 @@ V2RL:
Range: 5
Turreted:
ROT: 5
Armament:
Weapon: 105mm
Recoil: 3
RecoilRecovery: 0.9
LocalOffset: 2,0,0,0,0, -2,0,0,0,0
AttackTurreted:
PrimaryWeapon: 105mm
PrimaryRecoil: 3
PrimaryRecoilRecovery: 0.9
PrimaryLocalOffset: 2,0,0,0,0, -2,0,0,0,0
RenderUnitTurreted:
AutoTarget:
Explodes:
@@ -162,14 +166,16 @@ V2RL:
Range: 6
Turreted:
ROT: 1
Armament@PRIMARY:
Weapon: 120mm
LocalOffset: -4,-5,0,0,0, 4,-5,0,0,0
Recoil: 4
RecoilRecovery: 0.7
Armament@SECONDARY:
Weapon: MammothTusk
LocalOffset: -7,2,0,0,25, 7,2,0,0,-25
Recoil: 1
AttackTurreted:
PrimaryWeapon: 120mm
SecondaryWeapon: MammothTusk
PrimaryLocalOffset: -4,-5,0,0,0, 4,-5,0,0,0
SecondaryLocalOffset: -7,2,0,0,25, 7,2,0,0,-25
PrimaryRecoil: 4
PrimaryRecoilRecovery: 0.7
SecondaryRecoil: 1
RenderUnitTurreted:
AutoTarget:
Explodes:
@@ -207,8 +213,9 @@ ARTY:
Speed: 6
RevealsShroud:
Range: 5
Armament:
Weapon: 155mm
AttackFrontal:
PrimaryWeapon: 155mm
RenderUnit:
Explodes:
Weapon: UnitExplode
@@ -319,9 +326,10 @@ JEEP:
Range: 8
Turreted:
ROT: 10
Offset: 0,0,0,-2
Armament:
Weapon: M60mg
AttackTurreted:
PrimaryWeapon: M60mg
PrimaryOffset: 0,0,0,-2
WithMuzzleFlash:
RenderUnitTurreted:
AutoTarget:
@@ -351,9 +359,10 @@ APC:
Speed: 10
RevealsShroud:
Range: 5
Armament:
Weapon: M60mg
LocalOffset: 0,0,0,-4,0
AttackFrontal:
PrimaryWeapon: M60mg
PrimaryOffset: 0,0,0,-4
RenderUnit:
WithMuzzleFlash:
AutoTarget:
@@ -614,9 +623,10 @@ TTNK:
Crushes: wall, atmine, crate, infantry
RevealsShroud:
Range: 7
Armament:
Weapon: TTankZap
LocalOffset: 0,0,0,-5,0
AttackFrontal:
PrimaryWeapon: TTankZap
PrimaryOffset: 0,0,0,-5
RenderUnitSpinner:
Selectable:
Bounds: 28,28,0,0
@@ -645,10 +655,11 @@ FTRK:
Range: 4
Turreted:
ROT: 5
Offset: 0,5,0,-4
Armament:
Weapon: FLAK-23
Recoil: 2
AttackTurreted:
PrimaryWeapon: FLAK-23
PrimaryOffset: 0,5,0,-4
PrimaryRecoil: 2
RenderUnitTurreted:
AutoTarget:
Explodes:
@@ -714,9 +725,11 @@ CTNK:
Range: 6
RenderUnit:
AutoTarget:
Armament@PRIMARY:
Weapon: ChronoTusk
LocalOffset: -4,0,0,0,0, -4,0,0,0,0
Armament@SECONDARY:
Weapon: ChronoTusk
LocalOffset: 4,0,0,0,25, 4,0,0,0,-25
AttackFrontal:
PrimaryWeapon: ChronoTusk
SecondaryWeapon: ChronoTusk
PrimaryLocalOffset: -4,0,0,0,0, -4,0,0,0,0
SecondaryLocalOffset: 4,0,0,0,25, 4,0,0,0,-25
ChronoshiftDeploy: