Move weapon/turret definitions out of AttackBase.

Weapons are now defined with the Armament trait
and turret parameters live in Turreted.
This has the side effect of allowing any number
and distribution of weapons and turrets.
This commit is contained in:
Paul Chote
2013-03-14 03:55:34 +13:00
parent aa6f12f0a1
commit 0167bbfbaa
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);
if( weapon == null )
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;
@@ -26,15 +27,19 @@ 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 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);
if( weapon == null )
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:
AttackFrontal:
PrimaryWeapon: Vulcan
SecondaryWeapon: Slung
Armament@PRIMARY:
Weapon: Vulcan
Armament@SECONDARY:
Weapon: Slung
AttackFrontal:

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: