Merge pull request #7639 from reaperrr/projectile-cleanup

Remove TurboBoost and various other Projectile cleanups
This commit is contained in:
Pavel Penev
2015-03-27 01:46:54 -07:00
30 changed files with 293 additions and 178 deletions

View File

@@ -46,8 +46,6 @@ namespace OpenRA.GameRules
public readonly bool Charges = false; public readonly bool Charges = false;
public readonly string Palette = "effect";
[Desc("What types of targets are affected.")] [Desc("What types of targets are affected.")]
public readonly string[] ValidTargets = { "Ground", "Water" }; public readonly string[] ValidTargets = { "Ground", "Water" };

View File

@@ -270,7 +270,7 @@ namespace OpenRA.Traits
public interface INotifyBecomingIdle { void OnBecomingIdle(Actor self); } public interface INotifyBecomingIdle { void OnBecomingIdle(Actor self); }
public interface INotifyIdle { void TickIdle(Actor self); } public interface INotifyIdle { void TickIdle(Actor self); }
public interface IBlocksBullets { } public interface IBlocksProjectiles { }
public interface IRenderInfantrySequenceModifier public interface IRenderInfantrySequenceModifier
{ {
bool IsModifyingSequence { get; } bool IsModifyingSequence { get; }

View File

@@ -22,18 +22,22 @@ namespace OpenRA.Mods.Common.Effects
{ {
public class BulletInfo : IProjectileInfo public class BulletInfo : IProjectileInfo
{ {
[Desc("Projectile speed in WRange / tick, two values indicate variable velocity")] [Desc("Projectile speed in WRange / tick, two values indicate variable velocity.")]
public readonly WRange[] Speed = { new WRange(17) }; public readonly WRange[] Speed = { new WRange(17) };
public readonly string Trail = null; [Desc("Maximum offset at the maximum range.")]
[Desc("Maximum offset at the maximum range")]
public readonly WRange Inaccuracy = WRange.Zero; public readonly WRange Inaccuracy = WRange.Zero;
public readonly string Image = null; public readonly string Image = null;
[Desc("Check for whether an actor with BlocksBullets: trait blocks fire")] public readonly string Palette = "effect";
public readonly bool High = false;
public readonly bool Shadow = false; public readonly bool Shadow = false;
[Desc("Trail animation.")]
public readonly string Trail = null;
[Desc("Is this blocked by actors with BlocksProjectiles trait.")]
public readonly bool Blockable = true;
[Desc("Arc in WAngles, two values indicate variable arc.")] [Desc("Arc in WAngles, two values indicate variable arc.")]
public readonly WAngle[] Angle = { WAngle.Zero }; public readonly WAngle[] Angle = { WAngle.Zero };
[Desc("Interval in ticks between each spawned Trail animation.")]
public readonly int TrailInterval = 2; public readonly int TrailInterval = 2;
[Desc("Delay in ticks until trail animaion is spawned.")]
public readonly int TrailDelay = 1; public readonly int TrailDelay = 1;
public readonly int ContrailLength = 0; public readonly int ContrailLength = 0;
public readonly Color ContrailColor = Color.White; public readonly Color ContrailColor = Color.White;
@@ -47,11 +51,11 @@ namespace OpenRA.Mods.Common.Effects
{ {
readonly BulletInfo info; readonly BulletInfo info;
readonly ProjectileArgs args; readonly ProjectileArgs args;
readonly Animation anim;
[Sync] readonly WAngle angle; [Sync] readonly WAngle angle;
[Sync] readonly WRange speed; [Sync] readonly WRange speed;
ContrailRenderable trail; ContrailRenderable contrail;
Animation anim;
[Sync] WPos pos, target; [Sync] WPos pos, target;
[Sync] int length; [Sync] int length;
@@ -68,16 +72,15 @@ namespace OpenRA.Mods.Common.Effects
var world = args.SourceActor.World; var world = args.SourceActor.World;
if (info.Angle.Length > 1 && info.Speed.Length > 1) if (info.Angle.Length > 1)
{
angle = new WAngle(world.SharedRandom.Next(info.Angle[0].Angle, info.Angle[1].Angle)); angle = new WAngle(world.SharedRandom.Next(info.Angle[0].Angle, info.Angle[1].Angle));
speed = new WRange(world.SharedRandom.Next(info.Speed[0].Range, info.Speed[1].Range));
}
else else
{
angle = info.Angle[0]; angle = info.Angle[0];
if (info.Speed.Length > 1)
speed = new WRange(world.SharedRandom.Next(info.Speed[0].Range, info.Speed[1].Range));
else
speed = info.Speed[0]; speed = info.Speed[0];
}
target = args.PassiveTarget; target = args.PassiveTarget;
if (info.Inaccuracy.Range > 0) if (info.Inaccuracy.Range > 0)
@@ -99,7 +102,7 @@ namespace OpenRA.Mods.Common.Effects
if (info.ContrailLength > 0) if (info.ContrailLength > 0)
{ {
var color = info.ContrailUsePlayerColor ? ContrailRenderable.ChooseColor(args.SourceActor) : info.ContrailColor; var color = info.ContrailUsePlayerColor ? ContrailRenderable.ChooseColor(args.SourceActor) : info.ContrailColor;
trail = new ContrailRenderable(world, color, info.ContrailLength, info.ContrailDelay, 0); contrail = new ContrailRenderable(world, color, info.ContrailLength, info.ContrailDelay, 0);
} }
smokeTicks = info.TrailDelay; smokeTicks = info.TrailDelay;
@@ -133,17 +136,17 @@ namespace OpenRA.Mods.Common.Effects
} }
if (info.ContrailLength > 0) if (info.ContrailLength > 0)
trail.Update(pos); contrail.Update(pos);
if (ticks++ >= length || (!info.High && world.ActorMap if (ticks++ >= length || (info.Blockable && world.ActorMap
.GetUnitsAt(world.Map.CellContaining(pos)).Any(a => a.HasTrait<IBlocksBullets>()))) .GetUnitsAt(world.Map.CellContaining(pos)).Any(a => a.HasTrait<IBlocksProjectiles>())))
Explode(world); Explode(world);
} }
public IEnumerable<IRenderable> Render(WorldRenderer wr) public IEnumerable<IRenderable> Render(WorldRenderer wr)
{ {
if (info.ContrailLength > 0) if (info.ContrailLength > 0)
yield return trail; yield return contrail;
if (anim == null || ticks >= length) if (anim == null || ticks >= length)
yield break; yield break;
@@ -158,7 +161,7 @@ namespace OpenRA.Mods.Common.Effects
yield return r; yield return r;
} }
var palette = wr.Palette(args.Weapon.Palette); var palette = wr.Palette(info.Palette);
foreach (var r in anim.Render(pos, palette)) foreach (var r in anim.Render(pos, palette))
yield return r; yield return r;
} }
@@ -167,7 +170,7 @@ namespace OpenRA.Mods.Common.Effects
void Explode(World world) void Explode(World world)
{ {
if (info.ContrailLength > 0) if (info.ContrailLength > 0)
world.AddFrameEndTask(w => w.Add(new ContrailFader(pos, trail))); world.AddFrameEndTask(w => w.Add(new ContrailFader(pos, contrail)));
world.AddFrameEndTask(w => w.Remove(this)); world.AddFrameEndTask(w => w.Remove(this));

View File

@@ -16,11 +16,11 @@ namespace OpenRA.Mods.Common.Effects
{ {
public class Explosion : IEffect public class Explosion : IEffect
{ {
World world; readonly World world;
readonly string palette;
readonly Animation anim;
WPos pos; WPos pos;
CPos cell; CPos cell;
string palette;
Animation anim;
public Explosion(World world, WPos pos, string sequence, string palette) public Explosion(World world, WPos pos, string sequence, string palette)
{ {

View File

@@ -19,8 +19,10 @@ namespace OpenRA.Mods.Common.Effects
public class GravityBombInfo : IProjectileInfo public class GravityBombInfo : IProjectileInfo
{ {
public readonly string Image = null; public readonly string Image = null;
public readonly string Palette = "effect";
public readonly bool Shadow = false; public readonly bool Shadow = false;
public readonly WRange Velocity = WRange.Zero; public readonly WRange Velocity = WRange.Zero;
[Desc("Value added to velocity every tick.")]
public readonly WRange Acceleration = new WRange(15); public readonly WRange Acceleration = new WRange(15);
public IEffect Create(ProjectileArgs args) { return new GravityBomb(this, args); } public IEffect Create(ProjectileArgs args) { return new GravityBomb(this, args); }
@@ -28,11 +30,12 @@ namespace OpenRA.Mods.Common.Effects
public class GravityBomb : IEffect public class GravityBomb : IEffect
{ {
GravityBombInfo info; readonly GravityBombInfo info;
Animation anim; readonly Animation anim;
ProjectileArgs args; readonly ProjectileArgs args;
WVec velocity; [Sync] WVec velocity;
WPos pos; [Sync] WPos pos;
[Sync] WVec acceleration;
public GravityBomb(GravityBombInfo info, ProjectileArgs args) public GravityBomb(GravityBombInfo info, ProjectileArgs args)
{ {
@@ -40,6 +43,7 @@ namespace OpenRA.Mods.Common.Effects
this.args = args; this.args = args;
pos = args.Source; pos = args.Source;
velocity = new WVec(WRange.Zero, WRange.Zero, -info.Velocity); velocity = new WVec(WRange.Zero, WRange.Zero, -info.Velocity);
acceleration = new WVec(WRange.Zero, WRange.Zero, info.Acceleration);
anim = new Animation(args.SourceActor.World, info.Image); anim = new Animation(args.SourceActor.World, info.Image);
if (anim.HasSequence("open")) if (anim.HasSequence("open"))
@@ -50,7 +54,7 @@ namespace OpenRA.Mods.Common.Effects
public void Tick(World world) public void Tick(World world)
{ {
velocity -= new WVec(WRange.Zero, WRange.Zero, info.Acceleration); velocity -= acceleration;
pos += velocity; pos += velocity;
if (pos.Z <= args.PassiveTarget.Z) if (pos.Z <= args.PassiveTarget.Z)
@@ -60,6 +64,7 @@ namespace OpenRA.Mods.Common.Effects
args.Weapon.Impact(Target.FromPos(pos), args.SourceActor, args.DamageModifiers); args.Weapon.Impact(Target.FromPos(pos), args.SourceActor, args.DamageModifiers);
} }
if (anim != null)
anim.Tick(); anim.Tick();
} }
@@ -75,7 +80,7 @@ namespace OpenRA.Mods.Common.Effects
yield return r; yield return r;
} }
var palette = wr.Palette(args.Weapon.Palette); var palette = wr.Palette(info.Palette);
foreach (var r in anim.Render(pos, palette)) foreach (var r in anim.Render(pos, palette))
yield return r; yield return r;
} }

View File

@@ -39,13 +39,13 @@ namespace OpenRA.Mods.Common.Effects
class LaserZap : IEffect class LaserZap : IEffect
{ {
ProjectileArgs args; readonly ProjectileArgs args;
LaserZapInfo info; readonly LaserZapInfo info;
readonly Animation hitanim;
int ticks = 0; int ticks = 0;
Color color; Color color;
bool doneDamage; bool doneDamage;
bool animationComplete; bool animationComplete;
Animation hitanim;
WPos target; WPos target;
public LaserZap(ProjectileArgs args, LaserZapInfo info, Color color) public LaserZap(ProjectileArgs args, LaserZapInfo info, Color color)

View File

@@ -22,32 +22,34 @@ namespace OpenRA.Mods.Common.Effects
{ {
class MissileInfo : IProjectileInfo class MissileInfo : IProjectileInfo
{ {
public readonly string Image = null;
public readonly string Palette = "effect";
public readonly bool Shadow = false;
[Desc("Projectile speed in WRange / tick")] [Desc("Projectile speed in WRange / tick")]
public readonly WRange Speed = new WRange(8); public readonly WRange Speed = new WRange(8);
[Desc("Maximum vertical pitch when changing altitude.")] [Desc("Maximum vertical pitch when changing altitude.")]
public readonly WAngle MaximumPitch = WAngle.FromDegrees(30); public readonly WAngle MaximumPitch = WAngle.FromDegrees(30);
[Desc("How many ticks before this missile is armed and can explode.")] [Desc("How many ticks before this missile is armed and can explode.")]
public readonly int Arm = 0; public readonly int Arm = 0;
[Desc("Check for whether an actor with BlocksBullets: trait blocks fire")] [Desc("Is the missile blocked by actors with BlocksProjectiles: trait.")]
public readonly bool High = false; public readonly bool Blockable = true;
public readonly bool Shadow = false;
public readonly string Trail = null;
[Desc("Maximum offset at the maximum range")] [Desc("Maximum offset at the maximum range")]
public readonly WRange Inaccuracy = WRange.Zero; public readonly WRange Inaccuracy = WRange.Zero;
[Desc("Probability of locking onto and following target.")] [Desc("Probability of locking onto and following target.")]
public readonly int LockOnProbability = 100; public readonly int LockOnProbability = 100;
public readonly string Image = null; [Desc("In n/256 per tick.")]
[Desc("Rate of Turning")] public readonly int RateOfTurn = 5;
public readonly int ROT = 5; [Desc("Explode when following the target longer than this many ticks.")]
[Desc("Explode when following the target longer than this.")]
public readonly int RangeLimit = 0; public readonly int RangeLimit = 0;
[Desc("If fired at aircraft, increase speed by 50%.")] [Desc("Trail animation.")]
public readonly bool TurboBoost = false; public readonly string Trail = null;
[Desc("Interval in ticks between each spawned Trail animation.")]
public readonly int TrailInterval = 2; public readonly int TrailInterval = 2;
public readonly int ContrailLength = 0; public readonly int ContrailLength = 0;
public readonly Color ContrailColor = Color.White; public readonly Color ContrailColor = Color.White;
public readonly bool ContrailUsePlayerColor = false; public readonly bool ContrailUsePlayerColor = false;
public readonly int ContrailDelay = 1; public readonly int ContrailDelay = 1;
[Desc("Should missile targeting be thrown off by nearby actors with JamsMissiles.")]
public readonly bool Jammable = true; public readonly bool Jammable = true;
[Desc("Explodes when leaving the following terrain type, e.g., Water for torpedoes.")] [Desc("Explodes when leaving the following terrain type, e.g., Water for torpedoes.")]
public readonly string BoundToTerrainType = ""; public readonly string BoundToTerrainType = "";
@@ -66,7 +68,7 @@ namespace OpenRA.Mods.Common.Effects
readonly Animation anim; readonly Animation anim;
int ticksToNextSmoke; int ticksToNextSmoke;
ContrailRenderable trail; ContrailRenderable contrail;
[Sync] WPos pos; [Sync] WPos pos;
[Sync] int facing; [Sync] int facing;
@@ -110,7 +112,7 @@ namespace OpenRA.Mods.Common.Effects
if (info.ContrailLength > 0) if (info.ContrailLength > 0)
{ {
var color = info.ContrailUsePlayerColor ? ContrailRenderable.ChooseColor(args.SourceActor) : info.ContrailColor; var color = info.ContrailUsePlayerColor ? ContrailRenderable.ChooseColor(args.SourceActor) : info.ContrailColor;
trail = new ContrailRenderable(world, color, info.ContrailLength, info.ContrailDelay, 0); contrail = new ContrailRenderable(world, color, info.ContrailLength, info.ContrailDelay, 0);
} }
} }
@@ -128,6 +130,7 @@ namespace OpenRA.Mods.Common.Effects
public void Tick(World world) public void Tick(World world)
{ {
ticks++; ticks++;
if (anim != null)
anim.Tick(); anim.Tick();
// Missile tracks target // Missile tracks target
@@ -147,10 +150,8 @@ namespace OpenRA.Mods.Common.Effects
else if (!args.GuidedTarget.IsValidFor(args.SourceActor)) else if (!args.GuidedTarget.IsValidFor(args.SourceActor))
desiredFacing = facing; desiredFacing = facing;
facing = OpenRA.Traits.Util.TickFacing(facing, desiredFacing, info.ROT); facing = OpenRA.Traits.Util.TickFacing(facing, desiredFacing, info.RateOfTurn);
var move = new WVec(0, -1024, 0).Rotate(WRot.FromFacing(facing)) * info.Speed.Range / 1024; var move = new WVec(0, -1024, 0).Rotate(WRot.FromFacing(facing)) * info.Speed.Range / 1024;
if (targetPosition.Z > 0 && info.TurboBoost)
move = (move * 3) / 2;
if (pos.Z != desiredAltitude) if (pos.Z != desiredAltitude)
{ {
@@ -168,14 +169,14 @@ namespace OpenRA.Mods.Common.Effects
} }
if (info.ContrailLength > 0) if (info.ContrailLength > 0)
trail.Update(pos); contrail.Update(pos);
var cell = world.Map.CellContaining(pos); var cell = world.Map.CellContaining(pos);
var shouldExplode = (pos.Z < 0) // Hit the ground var shouldExplode = (pos.Z < 0) // Hit the ground
|| (dist.LengthSquared < info.CloseEnough.Range * info.CloseEnough.Range) // Within range || (dist.LengthSquared < info.CloseEnough.Range * info.CloseEnough.Range) // Within range
|| (info.RangeLimit != 0 && ticks > info.RangeLimit) // Ran out of fuel || (info.RangeLimit != 0 && ticks > info.RangeLimit) // Ran out of fuel
|| (!info.High && world.ActorMap.GetUnitsAt(cell).Any(a => a.HasTrait<IBlocksBullets>())) // Hit a wall || (info.Blockable && world.ActorMap.GetUnitsAt(cell).Any(a => a.HasTrait<IBlocksProjectiles>())) // Hit a wall or other blocking obstacle
|| !world.Map.Contains(cell) // This also avoids an IndexOutOfRangeException in GetTerrainInfo below. || !world.Map.Contains(cell) // This also avoids an IndexOutOfRangeException in GetTerrainInfo below.
|| (!string.IsNullOrEmpty(info.BoundToTerrainType) && world.Map.GetTerrainInfo(cell).Type != info.BoundToTerrainType); // Hit incompatible terrain || (!string.IsNullOrEmpty(info.BoundToTerrainType) && world.Map.GetTerrainInfo(cell).Type != info.BoundToTerrainType); // Hit incompatible terrain
@@ -186,7 +187,7 @@ namespace OpenRA.Mods.Common.Effects
void Explode(World world) void Explode(World world)
{ {
if (info.ContrailLength > 0) if (info.ContrailLength > 0)
world.AddFrameEndTask(w => w.Add(new ContrailFader(pos, trail))); world.AddFrameEndTask(w => w.Add(new ContrailFader(pos, contrail)));
world.AddFrameEndTask(w => w.Remove(this)); world.AddFrameEndTask(w => w.Remove(this));
@@ -200,7 +201,7 @@ namespace OpenRA.Mods.Common.Effects
public IEnumerable<IRenderable> Render(WorldRenderer wr) public IEnumerable<IRenderable> Render(WorldRenderer wr)
{ {
if (info.ContrailLength > 0) if (info.ContrailLength > 0)
yield return trail; yield return contrail;
if (!args.SourceActor.World.FogObscures(wr.World.Map.CellContaining(pos))) if (!args.SourceActor.World.FogObscures(wr.World.Map.CellContaining(pos)))
{ {
@@ -211,7 +212,7 @@ namespace OpenRA.Mods.Common.Effects
yield return r; yield return r;
} }
var palette = wr.Palette(args.Weapon.Palette); var palette = wr.Palette(info.Palette);
foreach (var r in anim.Render(pos, palette)) foreach (var r in anim.Render(pos, palette))
yield return r; yield return r;
} }

View File

@@ -246,7 +246,7 @@
<Compile Include="Traits\Attack\AttackWander.cs" /> <Compile Include="Traits\Attack\AttackWander.cs" />
<Compile Include="Traits\AutoHeal.cs" /> <Compile Include="Traits\AutoHeal.cs" />
<Compile Include="Traits\AutoTarget.cs" /> <Compile Include="Traits\AutoTarget.cs" />
<Compile Include="Traits\BlocksBullets.cs" /> <Compile Include="Traits\BlocksProjectiles.cs" />
<Compile Include="Traits\Buildable.cs" /> <Compile Include="Traits\Buildable.cs" />
<Compile Include="Traits\Buildings\BaseBuilding.cs" /> <Compile Include="Traits\Buildings\BaseBuilding.cs" />
<Compile Include="Traits\Buildings\BaseProvider.cs" /> <Compile Include="Traits\Buildings\BaseProvider.cs" />

View File

@@ -14,7 +14,7 @@ using OpenRA.Traits;
namespace OpenRA.Mods.Common.Traits namespace OpenRA.Mods.Common.Traits
{ {
// TODO: Add functionality like a customizable Height that is compared to projectile altitude // TODO: Add functionality like a customizable Height that is compared to projectile altitude
[Desc("This actor blocks bullets and missiles without 'High' property.")] [Desc("This actor blocks bullets and missiles with 'Blockable' property.")]
public class BlocksBulletsInfo : TraitInfo<BlocksBullets> { } public class BlocksProjectilesInfo : TraitInfo<BlocksProjectiles> { }
public class BlocksBullets : IBlocksBullets { } public class BlocksProjectiles : IBlocksProjectiles { }
} }

View File

@@ -829,6 +829,13 @@ namespace OpenRA.Mods.Common.UtilityCommands
node.Key = "AmmoPool"; node.Key = "AmmoPool";
} }
if (engineVersion < 20150326)
{
// Rename BlocksBullets to BlocksProjectiles
if (node.Key == "BlocksBullets")
node.Key = "BlocksProjectiles";
}
UpgradeActorRules(engineVersion, ref node.Value.Nodes, node, depth + 1); UpgradeActorRules(engineVersion, ref node.Value.Nodes, node, depth + 1);
} }
} }
@@ -1169,6 +1176,51 @@ namespace OpenRA.Mods.Common.UtilityCommands
} }
} }
if (engineVersion < 20150326)
{
// Remove TurboBoost from missiles
if (depth == 1 && node.Key == "Projectile" && node.Value.Nodes.Exists(n => n.Key == "TurboBoost"))
{
node.Value.Nodes.RemoveAll(n => n.Key == "TurboBoost");
Console.WriteLine("'TurboBoost' has been removed.");
Console.WriteLine("If you want to reproduce its behavior, create a duplicate");
Console.WriteLine("of the weapon in question, change it to be anti-air only,");
Console.WriteLine("increase its speed, make the original weapon anti-ground only,");
Console.WriteLine("and add the new weapon as additional armament to the actor.");
}
// Rename ROT to RateOfTurn
if (depth == 2 && node.Key == "ROT")
node.Key = "RateOfTurn";
// Rename High to Blockable
if (depth == 2 && parentKey == "Projectile" && node.Key == "High")
{
var highField = node.Value.Value != null ? FieldLoader.GetValue<bool>("High", node.Value.Value) : false;
var blockable = !highField;
node.Value.Value = blockable.ToString().ToLowerInvariant();
node.Key = "Blockable";
}
// Move Palette from weapon to projectiles
if (depth == 0)
{
var weapons = node.Value.Nodes;
var palette = weapons.FirstOrDefault(p => p.Key == "Palette");
var projectile = weapons.FirstOrDefault(r => r.Key == "Projectile");
if (palette != null)
{
var projectileFields = projectile.Value.Nodes;
var paletteName = palette.Value.Value != null ? FieldLoader.GetValue<string>("Palette", palette.Value.Value) : "effect";
projectileFields.Add(new MiniYamlNode("Palette", paletteName.ToString()));
weapons.Remove(palette);
}
}
}
UpgradeWeaponRules(engineVersion, ref node.Value.Nodes, node, depth + 1); UpgradeWeaponRules(engineVersion, ref node.Value.Nodes, node, depth + 1);
} }
} }

View File

@@ -531,7 +531,7 @@
Crushable: Crushable:
CrushClasses: wall CrushClasses: wall
CrushSound: sandbag2.aud CrushSound: sandbag2.aud
BlocksBullets: BlocksProjectiles:
LineBuild: LineBuild:
Range: 8 Range: 8
NodeTypes: wall NodeTypes: wall

View File

@@ -70,3 +70,4 @@ LST:
MaxWeight: 5 MaxWeight: 5
PipCount: 5 PipCount: 5
PassengerFacing: 0 PassengerFacing: 0

View File

@@ -83,3 +83,4 @@ Napalm.Crate:
Warhead@3Eff: CreateEffect Warhead@3Eff: CreateEffect
Explosion: med_napalm Explosion: med_napalm
ImpactSound: flamer2.aud ImpactSound: flamer2.aud

View File

@@ -120,7 +120,7 @@ ArtilleryShell:
Report: TNKFIRE2.AUD Report: TNKFIRE2.AUD
Projectile: Bullet Projectile: Bullet
Speed: 204 Speed: 204
High: yes Blockable: false
Angle: 56 Angle: 56
Inaccuracy: 1c256 Inaccuracy: 1c256
ContrailLength: 30 ContrailLength: 30
@@ -139,3 +139,4 @@ ArtilleryShell:
Warhead@3Eff: CreateEffect Warhead@3Eff: CreateEffect
Explosion: poof Explosion: poof
ImpactSound: XPLOSML2.AUD ImpactSound: XPLOSML2.AUD

View File

@@ -6,10 +6,10 @@ Rockets:
ValidTargets: Ground, Air ValidTargets: Ground, Air
Projectile: Missile Projectile: Missile
Arm: 0 Arm: 0
High: yes Blockable: false
Inaccuracy: 128 Inaccuracy: 128
Image: DRAGON Image: DRAGON
ROT: 15 RateOfTurn: 15
Trail: smokey Trail: smokey
ContrailLength: 8 ContrailLength: 8
Speed: 298 Speed: 298
@@ -40,10 +40,10 @@ BikeRockets:
BurstDelay: 10 BurstDelay: 10
Projectile: Missile Projectile: Missile
Arm: 0 Arm: 0
High: yes Blockable: false
Inaccuracy: 128 Inaccuracy: 128
Image: DRAGON Image: DRAGON
ROT: 10 RateOfTurn: 10
Trail: smokey Trail: smokey
ContrailLength: 8 ContrailLength: 8
Speed: 213 Speed: 213
@@ -74,10 +74,10 @@ OrcaAGMissiles:
ValidTargets: Ground ValidTargets: Ground
Projectile: Missile Projectile: Missile
Arm: 0 Arm: 0
High: yes Blockable: false
Inaccuracy: 128 Inaccuracy: 128
Image: DRAGON Image: DRAGON
ROT: 20 RateOfTurn: 20
Trail: smokey Trail: smokey
ContrailLength: 8 ContrailLength: 8
Speed: 298 Speed: 298
@@ -107,10 +107,10 @@ OrcaAAMissiles:
ValidTargets: Air ValidTargets: Air
Projectile: Missile Projectile: Missile
Arm: 0 Arm: 0
High: yes Blockable: false
Inaccuracy: 128 Inaccuracy: 128
Image: DRAGON Image: DRAGON
ROT: 20 RateOfTurn: 20
Trail: smokey Trail: smokey
ContrailLength: 8 ContrailLength: 8
Speed: 298 Speed: 298
@@ -138,10 +138,10 @@ MammothMissiles:
BurstDelay: 15 BurstDelay: 15
Projectile: Missile Projectile: Missile
Arm: 0 Arm: 0
High: yes Blockable: false
Inaccuracy: 128 Inaccuracy: 128
Image: DRAGON Image: DRAGON
ROT: 20 RateOfTurn: 20
Trail: smokey Trail: smokey
ContrailLength: 8 ContrailLength: 8
Speed: 341 Speed: 341
@@ -177,12 +177,12 @@ MammothMissiles:
ValidTargets: Ground ValidTargets: Ground
Projectile: Bullet Projectile: Bullet
Arm: 5 Arm: 5
High: yes Blockable: false
Shadow: true Shadow: true
Inaccuracy: 853 Inaccuracy: 853
Angle: 62 Angle: 62
Image: DRAGON Image: DRAGON
ROT: 2 RateOfTurn: 2
ContrailLength: 10 ContrailLength: 10
Trail: smokey Trail: smokey
Speed: 341 Speed: 341
@@ -211,10 +211,10 @@ MammothMissiles:
ValidTargets: Ground, Air ValidTargets: Ground, Air
Projectile: Missile Projectile: Missile
Arm: 0 Arm: 0
High: yes Blockable: false
Inaccuracy: 213 Inaccuracy: 213
Image: DRAGON Image: DRAGON
ROT: 10 RateOfTurn: 10
Trail: smokey Trail: smokey
ContrailLength: 8 ContrailLength: 8
Speed: 213 Speed: 213
@@ -243,10 +243,10 @@ BoatMissile:
Report: ROCKET2.AUD Report: ROCKET2.AUD
Projectile: Missile Projectile: Missile
Arm: 0 Arm: 0
High: yes Blockable: false
Inaccuracy: 213 Inaccuracy: 213
Image: DRAGON Image: DRAGON
ROT: 10 RateOfTurn: 10
Trail: smokey Trail: smokey
ContrailLength: 8 ContrailLength: 8
Speed: 170 Speed: 170
@@ -278,10 +278,10 @@ TowerMissle:
ValidTargets: Ground ValidTargets: Ground
Projectile: Missile Projectile: Missile
Arm: 0 Arm: 0
High: yes Blockable: false
Inaccuracy: 128 Inaccuracy: 128
Image: DRAGON Image: DRAGON
ROT: 20 RateOfTurn: 20
Trail: smokey Trail: smokey
ContrailLength: 8 ContrailLength: 8
Speed: 298 Speed: 298
@@ -309,9 +309,9 @@ SAMMissile:
ValidTargets: Air ValidTargets: Air
Projectile: Missile Projectile: Missile
Arm: 0 Arm: 0
High: yes Blockable: false
Image: MISSILE Image: MISSILE
ROT: 20 RateOfTurn: 20
Speed: 426 Speed: 426
RangeLimit: 35 RangeLimit: 35
Trail: smokey Trail: smokey
@@ -338,7 +338,7 @@ HonestJohn:
Report: ROCKET1.AUD Report: ROCKET1.AUD
Projectile: Bullet Projectile: Bullet
Arm: 10 Arm: 10
High: yes Blockable: false
Shadow: true Shadow: true
Inaccuracy: 213 Inaccuracy: 213
Image: patriot Image: patriot
@@ -368,11 +368,11 @@ Patriot:
Report: ROCKET2.AUD Report: ROCKET2.AUD
ValidTargets: Air ValidTargets: Air
Projectile: Missile Projectile: Missile
High: yes Blockable: false
Image: patriot Image: patriot
Trail: smokey Trail: smokey
ContrailLength: 8 ContrailLength: 8
ROT: 20 RateOfTurn: 20
Speed: 341 Speed: 341
RangeLimit: 30 RangeLimit: 30
Angle: 88 Angle: 88
@@ -391,3 +391,4 @@ Patriot:
Warhead@3Eff: CreateEffect Warhead@3Eff: CreateEffect
Explosion: poof Explosion: poof
ImpactSound: xplos.aud ImpactSound: xplos.aud

View File

@@ -1,4 +1,3 @@
Flamethrower: Flamethrower:
ReloadDelay: 55 ReloadDelay: 55
Range: 2c512 Range: 2c512
@@ -74,7 +73,7 @@ Grenade:
Report: toss1.aud Report: toss1.aud
Projectile: Bullet Projectile: Bullet
Speed: 119 Speed: 119
High: yes Blockable: false
Angle: 62 Angle: 62
Inaccuracy: 213 Inaccuracy: 213
Image: BOMB Image: BOMB
@@ -236,3 +235,4 @@ Demolish:
Warhead@2Eff: CreateEffect Warhead@2Eff: CreateEffect
Explosion: building Explosion: building
ImpactSound: xplobig6.aud ImpactSound: xplobig6.aud

View File

@@ -38,7 +38,7 @@ HeliAGGun:
Report: gun5.aud Report: gun5.aud
Projectile: Bullet Projectile: Bullet
Speed: 1c682 Speed: 1c682
High: True Blockable: false
Warhead@1Dam: SpreadDamage Warhead@1Dam: SpreadDamage
Spread: 256 Spread: 256
Damage: 20 Damage: 20
@@ -61,7 +61,7 @@ HeliAAGun:
Report: gun5.aud Report: gun5.aud
Projectile: Bullet Projectile: Bullet
Speed: 1c682 Speed: 1c682
High: True Blockable: false
Warhead@1Dam: SpreadDamage Warhead@1Dam: SpreadDamage
Spread: 128 Spread: 128
Damage: 20 Damage: 20
@@ -183,7 +183,7 @@ APCGun.AA:
ValidTargets: Air ValidTargets: Air
Projectile: Bullet Projectile: Bullet
Speed: 1c682 Speed: 1c682
High: true Blockable: false
Warhead@1Dam: SpreadDamage Warhead@1Dam: SpreadDamage
Spread: 128 Spread: 128
Damage: 25 Damage: 25
@@ -192,3 +192,4 @@ APCGun.AA:
Heavy: 50 Heavy: 50
Warhead@2Eff: CreateEffect Warhead@2Eff: CreateEffect
Explosion: small_frag Explosion: small_frag

View File

@@ -97,3 +97,4 @@ IonCannon:
SmudgeType: Scorch SmudgeType: Scorch
Size: 2,1 Size: 2,1
Delay: 6 Delay: 6

View File

@@ -486,7 +486,7 @@ wall:
Type: Concrete Type: Concrete
Crushable: Crushable:
CrushClasses: Concretewall CrushClasses: Concretewall
BlocksBullets: BlocksProjectiles:
LineBuild: LineBuild:
Range: 8 Range: 8
NodeTypes: wall, turret NodeTypes: wall, turret

View File

@@ -32,7 +32,7 @@ Bazooka:
ContrailLength: 10 ContrailLength: 10
Inaccuracy: 96 Inaccuracy: 96
Image: RPG Image: RPG
ROT: 5 RateOfTurn: 5
RangeLimit: 35 RangeLimit: 35
Warhead@1Dam: SpreadDamage Warhead@1Dam: SpreadDamage
Spread: 96 Spread: 96
@@ -104,7 +104,7 @@ Slung:
ValidTargets: Ground ValidTargets: Ground
Projectile: Bullet Projectile: Bullet
Speed: 320 Speed: 320
High: true Blockable: false
Shadow: yes Shadow: yes
Angle: 88 Angle: 88
Inaccuracy: 384 Inaccuracy: 384
@@ -183,7 +183,7 @@ QuadRockets:
Arm: 0 Arm: 0
Inaccuracy: 96 Inaccuracy: 96
Image: RPG Image: RPG
ROT: 10 RateOfTurn: 10
Speed: 256 Speed: 256
RangeLimit: 40 RangeLimit: 40
Warhead@1Dam: SpreadDamage Warhead@1Dam: SpreadDamage
@@ -209,7 +209,7 @@ TurretGun:
Report: TURRET1.WAV Report: TURRET1.WAV
Projectile: Bullet Projectile: Bullet
Speed: 704 Speed: 704
High: yes Blockable: false
Shadow: no Shadow: no
Inaccuracy: 288 Inaccuracy: 288
Image: 120mm Image: 120mm
@@ -238,11 +238,11 @@ TowerMissile:
BurstDelay: 15 BurstDelay: 15
Projectile: Bullet Projectile: Bullet
Arm: 0 Arm: 0
High: yes Blockable: false
Shadow: yes Shadow: yes
Inaccuracy: 384 Inaccuracy: 384
Image: MISSILE2 Image: MISSILE2
ROT: 10 RateOfTurn: 10
Speed: 256 Speed: 256
RangeLimit: 50 RangeLimit: 50
Angle: 110 Angle: 110
@@ -342,12 +342,12 @@ DevBullet:
Projectile: Bullet Projectile: Bullet
Speed: 358 Speed: 358
Arm: 5 Arm: 5
High: yes Blockable: false
Shadow: yes Shadow: yes
Inaccuracy: 1c416 Inaccuracy: 1c416
Angle: 110 Angle: 110
Image: MISSILE2 Image: MISSILE2
ROT: 5 RateOfTurn: 5
ContrailLength: 5 ContrailLength: 5
Warhead@1Dam: SpreadDamage Warhead@1Dam: SpreadDamage
Spread: 384 Spread: 384
@@ -373,7 +373,7 @@ NerveGasMissile:
Report: MISSLE1.WAV Report: MISSLE1.WAV
Projectile: Bullet Projectile: Bullet
Speed: 448 Speed: 448
High: true Blockable: false
Shadow: yes Shadow: yes
Angle: 110 Angle: 110
Inaccuracy: 1c96 Inaccuracy: 1c96
@@ -403,7 +403,7 @@ NerveGasMissile:
Report: MORTAR1.WAV Report: MORTAR1.WAV
Projectile: Bullet Projectile: Bullet
Speed: 256 Speed: 256
High: true Blockable: false
Shadow: yes Shadow: yes
Angle: 62 Angle: 62
Inaccuracy: 1c256 Inaccuracy: 1c256
@@ -451,7 +451,7 @@ ChainGun:
Report: 20MMGUN1.WAV Report: 20MMGUN1.WAV
Projectile: Bullet Projectile: Bullet
Speed: 1c256 Speed: 1c256
High: true Blockable: false
Warhead@1Dam: SpreadDamage Warhead@1Dam: SpreadDamage
Spread: 96 Spread: 96
Damage: 20 Damage: 20
@@ -659,7 +659,7 @@ Grenade:
Report: Report:
Projectile: Bullet Projectile: Bullet
Speed: 204 Speed: 204
High: true Blockable: false
Angle: 62 Angle: 62
Inaccuracy: 416 Inaccuracy: 416
Image: BOMBS Image: BOMBS
@@ -689,7 +689,7 @@ Shrapnel:
Report: Report:
Projectile: Bullet Projectile: Bullet
Speed: 50, 125 Speed: 50, 125
High: true Blockable: false
Angle: 91, 264 Angle: 91, 264
Inaccuracy: 416 Inaccuracy: 416
Image: bombs Image: bombs

View File

@@ -462,7 +462,7 @@
DestroyedSounds: sandbag2.aud DestroyedSounds: sandbag2.aud
Crushable: Crushable:
CrushClasses: wall CrushClasses: wall
BlocksBullets: BlocksProjectiles:
LineBuild: LineBuild:
Range: 8 Range: 8
NodeTypes: wall NodeTypes: wall

View File

@@ -134,6 +134,10 @@ DD:
Weapon: DepthCharge Weapon: DepthCharge
LocalOffset: 0,-100,0, 0,100,0 LocalOffset: 0,-100,0, 0,100,0
LocalYaw: 80, -80 LocalYaw: 80, -80
Armament@TERTIARY:
Weapon: StingerAA
LocalOffset: 0,-100,0, 0,100,0
LocalYaw: 64, -64
AttackTurreted: AttackTurreted:
Selectable: Selectable:
Bounds: 38,38 Bounds: 38,38

View File

@@ -251,3 +251,4 @@ OreExplosion:
Warhead@3Eff: CreateEffect Warhead@3Eff: CreateEffect
Explosion: med_explosion Explosion: med_explosion
ImpactSound: kaboom25.aud ImpactSound: kaboom25.aud

View File

@@ -143,7 +143,7 @@ TurretGun:
Report: TANK5.AUD Report: TANK5.AUD
Projectile: Bullet Projectile: Bullet
Speed: 204 Speed: 204
High: true Blockable: false
Angle: 62 Angle: 62
Inaccuracy: 1c682 Inaccuracy: 1c682
Image: 120MM Image: 120MM
@@ -176,7 +176,7 @@ TurretGun:
Report: TURRET1.AUD Report: TURRET1.AUD
Projectile: Bullet Projectile: Bullet
Speed: 204 Speed: 204
High: true Blockable: false
Angle: 62 Angle: 62
Inaccuracy: 2c938 Inaccuracy: 2c938
Image: 120MM Image: 120MM
@@ -228,3 +228,4 @@ TurretGun:
Explosion: small_splash Explosion: small_splash
ImpactSound: splash9.aud ImpactSound: splash9.aud
ValidImpactTypes: Water ValidImpactTypes: Water

View File

@@ -9,11 +9,11 @@ Maverick:
Projectile: Missile Projectile: Missile
Speed: 256 Speed: 256
Arm: 2 Arm: 2
High: true Blockable: false
ContrailLength: 10 ContrailLength: 10
Inaccuracy: 512 Inaccuracy: 512
Image: DRAGON Image: DRAGON
ROT: 5 RateOfTurn: 5
RangeLimit: 60 RangeLimit: 60
Warhead@1Dam: SpreadDamage Warhead@1Dam: SpreadDamage
Spread: 128 Spread: 128
@@ -45,12 +45,12 @@ Dragon:
Projectile: Missile Projectile: Missile
Speed: 213 Speed: 213
Arm: 2 Arm: 2
High: true Blockable: false
Trail: smokey Trail: smokey
ContrailLength: 10 ContrailLength: 10
Inaccuracy: 128 Inaccuracy: 128
Image: DRAGON Image: DRAGON
ROT: 5 RateOfTurn: 5
RangeLimit: 35 RangeLimit: 35
Warhead@1Dam: SpreadDamage Warhead@1Dam: SpreadDamage
Spread: 128 Spread: 128
@@ -83,11 +83,11 @@ HellfireAG:
Projectile: Missile Projectile: Missile
Speed: 256 Speed: 256
Arm: 2 Arm: 2
High: true Blockable: false
ContrailLength: 10 ContrailLength: 10
Inaccuracy: 128 Inaccuracy: 128
Image: DRAGON Image: DRAGON
ROT: 10 RateOfTurn: 10
RangeLimit: 20 RangeLimit: 20
Warhead@1Dam: SpreadDamage Warhead@1Dam: SpreadDamage
Spread: 128 Spread: 128
@@ -120,11 +120,11 @@ HellfireAA:
Projectile: Missile Projectile: Missile
Speed: 384 Speed: 384
Arm: 2 Arm: 2
High: true Blockable: false
ContrailLength: 10 ContrailLength: 10
Inaccuracy: 128 Inaccuracy: 128
Image: DRAGON Image: DRAGON
ROT: 10 RateOfTurn: 10
RangeLimit: 20 RangeLimit: 20
Warhead@1Dam: SpreadDamage Warhead@1Dam: SpreadDamage
Spread: 128 Spread: 128
@@ -156,11 +156,11 @@ MammothTusk:
Projectile: Missile Projectile: Missile
Speed: 341 Speed: 341
Arm: 2 Arm: 2
High: true Blockable: false
ContrailLength: 10 ContrailLength: 10
Inaccuracy: 128 Inaccuracy: 128
Image: DRAGON Image: DRAGON
ROT: 15 RateOfTurn: 15
RangeLimit: 40 RangeLimit: 40
Warhead@1Dam: SpreadDamage Warhead@1Dam: SpreadDamage
Spread: 256 Spread: 256
@@ -194,10 +194,10 @@ Nike:
ValidTargets: Air ValidTargets: Air
Projectile: Missile Projectile: Missile
Arm: 3 Arm: 3
High: true Blockable: false
ContrailLength: 10 ContrailLength: 10
Image: MISSILE Image: MISSILE
ROT: 25 RateOfTurn: 25
RangeLimit: 50 RangeLimit: 50
Speed: 341 Speed: 341
Warhead@1Dam: SpreadDamage Warhead@1Dam: SpreadDamage
@@ -224,10 +224,10 @@ RedEye:
ValidTargets: Air ValidTargets: Air
Projectile: Missile Projectile: Missile
Arm: 3 Arm: 3
High: true Blockable: false
ContrailLength: 10 ContrailLength: 10
Image: MISSILE Image: MISSILE
ROT: 20 RateOfTurn: 20
RangeLimit: 30 RangeLimit: 30
Speed: 298 Speed: 298
Warhead@1Dam: SpreadDamage Warhead@1Dam: SpreadDamage
@@ -253,7 +253,7 @@ SubMissile:
Report: MISSILE6.AUD Report: MISSILE6.AUD
Projectile: Bullet Projectile: Bullet
Speed: 102 Speed: 102
High: true Blockable: false
Angle: 165 Angle: 165
Inaccuracy: 2c938 Inaccuracy: 2c938
Image: MISSILE Image: MISSILE
@@ -285,15 +285,14 @@ Stinger:
Report: MISSILE6.AUD Report: MISSILE6.AUD
Burst: 2 Burst: 2
BurstDelay: 0 BurstDelay: 0
ValidTargets: Air, Ground, Water ValidTargets: Ground, Water
Projectile: Missile Projectile: Missile
Arm: 3 Arm: 3
High: true Blockable: false
ContrailLength: 10 ContrailLength: 10
Image: DRAGON Image: DRAGON
ROT: 20 RateOfTurn: 20
RangeLimit: 50 RangeLimit: 50
TurboBoost: true
Speed: 170 Speed: 170
Warhead@1Dam: SpreadDamage Warhead@1Dam: SpreadDamage
Spread: 128 Spread: 128
@@ -320,12 +319,51 @@ Stinger:
ImpactSound: splash9.aud ImpactSound: splash9.aud
ValidImpactTypes: Water ValidImpactTypes: Water
StingerAA:
ReloadDelay: 60
Range: 9c0
Report: MISSILE6.AUD
Burst: 2
BurstDelay: 0
ValidTargets: Air
Projectile: Missile
Arm: 3
Blockable: false
ContrailLength: 10
Image: DRAGON
RateOfTurn: 20
RangeLimit: 50
Speed: 255
Warhead@1Dam: SpreadDamage
Spread: 128
Damage: 30
DeathType: 4
ValidTargets: Air, Ground, Water
Versus:
None: 30
Wood: 75
Light: 75
Concrete: 50
Warhead@2Smu: LeaveSmudge
SmudgeType: Crater
Warhead@3Eff: CreateEffect
Explosion: med_explosion
ImpactSound: kaboom25.aud
InvalidImpactTypes: Water, Air, AirHit
Warhead@5EffAir: CreateEffect
Explosion: med_explosion_air
ImpactSound: kaboom25.aud
ValidImpactTypes: Air, AirHit
Warhead@4EffWater: CreateEffect
Explosion: med_splash
ImpactSound: splash9.aud
ValidImpactTypes: Water
TorpTube: TorpTube:
ReloadDelay: 100 ReloadDelay: 100
Range: 9c0 Range: 9c0
Report: TORPEDO1.AUD Report: TORPEDO1.AUD
ValidTargets: Water, Underwater, Bridge ValidTargets: Water, Underwater, Bridge
Palette: shadow
Burst: 2 Burst: 2
BurstDelay: 20 BurstDelay: 20
Projectile: Missile Projectile: Missile
@@ -333,9 +371,10 @@ TorpTube:
Arm: 3 Arm: 3
Speed: 85 Speed: 85
Trail: bubbles Trail: bubbles
ROT: 1 RateOfTurn: 1
RangeLimit: 160 RangeLimit: 160
BoundToTerrainType: Water BoundToTerrainType: Water
Palette: shadow
Warhead@1Dam: SpreadDamage Warhead@1Dam: SpreadDamage
Spread: 426 Spread: 426
Damage: 180 Damage: 180
@@ -368,7 +407,7 @@ SCUD:
Report: MISSILE1.AUD Report: MISSILE1.AUD
Projectile: Bullet Projectile: Bullet
Speed: 170 Speed: 170
High: true Blockable: false
Shadow: false Shadow: false
Trail: smokey Trail: smokey
TrailDelay: 5 TrailDelay: 5
@@ -404,12 +443,12 @@ APTusk:
Projectile: Missile Projectile: Missile
Speed: 298 Speed: 298
Arm: 2 Arm: 2
High: true Blockable: false
Trail: smokey Trail: smokey
ContrailLength: 10 ContrailLength: 10
Inaccuracy: 128 Inaccuracy: 128
Image: DRAGON Image: DRAGON
ROT: 10 RateOfTurn: 10
RangeLimit: 22 RangeLimit: 22
Warhead@1Dam: SpreadDamage Warhead@1Dam: SpreadDamage
Spread: 128 Spread: 128
@@ -431,3 +470,4 @@ APTusk:
Explosion: med_splash Explosion: med_splash
ImpactSound: splash9.aud ImpactSound: splash9.aud
ValidImpactTypes: Water ValidImpactTypes: Water

View File

@@ -56,7 +56,7 @@ Napalm:
Projectile: Bullet Projectile: Bullet
Image: BOMBLET Image: BOMBLET
Speed: 85 Speed: 85
High: yes Blockable: false
Warhead@1Dam: SpreadDamage Warhead@1Dam: SpreadDamage
Spread: 170 Spread: 170
Damage: 100 Damage: 100
@@ -83,7 +83,7 @@ Grenade:
Report: grenade1.aud Report: grenade1.aud
Projectile: Bullet Projectile: Bullet
Speed: 136 Speed: 136
High: true Blockable: false
Angle: 62 Angle: 62
Inaccuracy: 554 Inaccuracy: 554
Image: BOMB Image: BOMB
@@ -115,7 +115,7 @@ DepthCharge:
Speed: 85 Speed: 85
Image: BOMB Image: BOMB
Angle: 62 Angle: 62
High: true Blockable: false
Inaccuracy: 128 Inaccuracy: 128
Warhead@1Dam: SpreadDamage Warhead@1Dam: SpreadDamage
Spread: 128 Spread: 128
@@ -295,3 +295,4 @@ MADTankDetonate:
Warhead@3Eff: CreateEffect Warhead@3Eff: CreateEffect
Explosion: med_explosion Explosion: med_explosion
ImpactSound: mineblo1.aud ImpactSound: mineblo1.aud

View File

@@ -30,7 +30,7 @@ ZSU-23:
ValidTargets: Air ValidTargets: Air
Projectile: Bullet Projectile: Bullet
Speed: 3c340 Speed: 3c340
High: true Blockable: false
Warhead@1Dam: SpreadDamage Warhead@1Dam: SpreadDamage
Spread: 213 Spread: 213
Damage: 12 Damage: 12
@@ -162,7 +162,7 @@ ChainGun:
Report: GUN13.AUD Report: GUN13.AUD
Projectile: Bullet Projectile: Bullet
Speed: 1c682 Speed: 1c682
High: true Blockable: false
Warhead@1Dam: SpreadDamage Warhead@1Dam: SpreadDamage
Spread: 128 Spread: 128
Damage: 30 Damage: 30
@@ -187,7 +187,7 @@ ChainGun.Yak:
Report: GUN13.AUD Report: GUN13.AUD
Projectile: Bullet Projectile: Bullet
Speed: 1c682 Speed: 1c682
High: true Blockable: false
Warhead@1Dam: SpreadDamage Warhead@1Dam: SpreadDamage
Spread: 128 Spread: 128
Damage: 40 Damage: 40
@@ -300,7 +300,7 @@ FLAK-23:
ValidTargets: Air, Ground, Water ValidTargets: Air, Ground, Water
Projectile: Bullet Projectile: Bullet
Speed: 1c682 Speed: 1c682
High: true Blockable: false
Warhead@1Dam: SpreadDamage Warhead@1Dam: SpreadDamage
Spread: 213 Spread: 213
Damage: 20 Damage: 20
@@ -337,3 +337,4 @@ Sniper:
Light: 0 Light: 0
Heavy: 0 Heavy: 0
Concrete: 0 Concrete: 0

View File

@@ -111,3 +111,4 @@ Atomic:
SmudgeType: Scorch SmudgeType: Scorch
Size: 5 Size: 5
Delay: 20 Delay: 20

View File

@@ -110,7 +110,7 @@
DestroyedSounds: crmble2.aud DestroyedSounds: crmble2.aud
Crushable: Crushable:
CrushClasses: wall CrushClasses: wall
BlocksBullets: BlocksProjectiles:
LineBuild: LineBuild:
Range: 8 Range: 8
NodeTypes: wall NodeTypes: wall

View File

@@ -55,7 +55,7 @@ Grenade:
Range: 4c512 Range: 4c512
Projectile: Bullet Projectile: Bullet
Speed: 85 Speed: 85
High: yes Blockable: false
Shadow: true Shadow: true
Angle: 62 Angle: 62
Inaccuracy: 554 Inaccuracy: 554
@@ -88,18 +88,18 @@ Bazooka:
MinRange: 0c512 MinRange: 0c512
Report: RKETINF1.AUD Report: RKETINF1.AUD
ValidTargets: Ground, Air ValidTargets: Ground, Air
Palette: ra
Projectile: Missile Projectile: Missile
Speed: 213 Speed: 213
Arm: 3 Arm: 3
High: true Blockable: false
Shadow: true Shadow: true
Inaccuracy: 128 Inaccuracy: 128
Image: DRAGON Image: DRAGON
ROT: 8 RateOfTurn: 8
RangeLimit: 50 RangeLimit: 50
CloseEnough: 256 CloseEnough: 256
LockOnProbability: 80 LockOnProbability: 80
Palette: ra
Warhead@1Dam: SpreadDamage Warhead@1Dam: SpreadDamage
Spread: 128 Spread: 128
Damage: 35 Damage: 35
@@ -131,16 +131,16 @@ MultiCluster:
Range: 6c0 Range: 6c0
Report: MISL1.AUD Report: MISL1.AUD
ValidTargets: Ground ValidTargets: Ground
Palette: ra
Projectile: Missile Projectile: Missile
Speed: 170 Speed: 170
Arm: 2 Arm: 2
High: yes Blockable: false
Shadow: true Shadow: true
Inaccuracy: 128 Inaccuracy: 128
Image: DRAGON Image: DRAGON
ROT: 8 RateOfTurn: 8
RangeLimit: 35 RangeLimit: 35
Palette: ra
Warhead@1Dam: SpreadDamage Warhead@1Dam: SpreadDamage
Spread: 128 Spread: 128
Damage: 65 Damage: 65
@@ -249,7 +249,7 @@ CyCannon:
ValidTargets: Ground ValidTargets: Ground
Projectile: Bullet Projectile: Bullet
Speed: 192 Speed: 192
High: yes Blockable: false
Shadow: true Shadow: true
Image: TORPEDO Image: TORPEDO
Warhead@1Dam: SpreadDamage Warhead@1Dam: SpreadDamage
@@ -352,13 +352,13 @@ FiendShard:
Burst: 3 Burst: 3
Range: 5c0 Range: 5c0
Report: FIEND2.AUD Report: FIEND2.AUD
Palette: greentiberium
Projectile: Bullet Projectile: Bullet
Speed: 213 Speed: 213
Image: CRYSTAL4 Image: CRYSTAL4
Inaccuracy: 512 Inaccuracy: 512
Shadow: true Shadow: true
Angle: 88 Angle: 88
Palette: greentiberium
Warhead@1Dam: SpreadDamage Warhead@1Dam: SpreadDamage
Damage: 35 Damage: 35
DeathType: 1 DeathType: 1
@@ -403,16 +403,16 @@ HoverMissile:
Range: 8c0 Range: 8c0
Report: HOVRMIS1.AUD Report: HOVRMIS1.AUD
ValidTargets: Ground, Air ValidTargets: Ground, Air
Palette: ra
Projectile: Missile Projectile: Missile
Speed: 213 Speed: 213
Arm: 2 Arm: 2
High: yes Blockable: false
Shadow: true Shadow: true
Inaccuracy: 128 Inaccuracy: 128
Image: DRAGON Image: DRAGON
ROT: 8 RateOfTurn: 8
RangeLimit: 35 RangeLimit: 35
Palette: ra
Warhead@1Dam: SpreadDamage Warhead@1Dam: SpreadDamage
Spread: 128 Spread: 128
Damage: 30 Damage: 30
@@ -445,12 +445,12 @@ HoverMissile:
Report: 120MMF.AUD Report: 120MMF.AUD
Burst: 2 Burst: 2
BurstDelay: 5 BurstDelay: 5
Palette: ra
Projectile: Bullet Projectile: Bullet
Speed: 682 Speed: 682
Image: 120mm Image: 120mm
Shadow: true Shadow: true
Angle: 62 Angle: 62
Palette: ra
Warhead@1Dam: SpreadDamage Warhead@1Dam: SpreadDamage
Spread: 128 Spread: 128
Damage: 50 Damage: 50
@@ -478,16 +478,16 @@ MammothTusk:
Report: MISL1.AUD Report: MISL1.AUD
ValidTargets: Air ValidTargets: Air
Burst: 2 Burst: 2
Palette: ra
Projectile: Missile Projectile: Missile
Arm: 0 Arm: 0
High: yes Blockable: false
Shadow: true Shadow: true
Inaccuracy: 128 Inaccuracy: 128
Image: DRAGON Image: DRAGON
ROT: 10 RateOfTurn: 10
Speed: 170 Speed: 170
RangeLimit: 35 RangeLimit: 35
Palette: ra
Warhead@1Dam: SpreadDamage Warhead@1Dam: SpreadDamage
Spread: 171 Spread: 171
Damage: 40 Damage: 40
@@ -638,16 +638,16 @@ BikeMissile:
Range: 5c0 Range: 5c0
Report: MISL1.AUD Report: MISL1.AUD
ValidTargets: Ground ValidTargets: Ground
Palette: ra
Projectile: Missile Projectile: Missile
Arm: 2 Arm: 2
High: yes Blockable: false
Shadow: true Shadow: true
Inaccuracy: 128 Inaccuracy: 128
Image: DRAGON Image: DRAGON
ROT: 8 RateOfTurn: 8
Speed: 213 Speed: 213
RangeLimit: 35 RangeLimit: 35
Palette: ra
Warhead@1Dam: SpreadDamage Warhead@1Dam: SpreadDamage
Spread: 256 Spread: 256
Damage: 40 Damage: 40
@@ -742,16 +742,16 @@ Dragon:
Burst: 2 Burst: 2
Report: MISL1.AUD Report: MISL1.AUD
ValidTargets: Ground, Air ValidTargets: Ground, Air
Palette: ra
Projectile: Missile Projectile: Missile
Speed: 213 Speed: 213
Arm: 2 Arm: 2
High: yes Blockable: false
Shadow: true Shadow: true
Inaccuracy: 128 Inaccuracy: 128
Image: DRAGON Image: DRAGON
ROT: 8 RateOfTurn: 8
RangeLimit: 35 RangeLimit: 35
Palette: ra
Warhead@1Dam: SpreadDamage Warhead@1Dam: SpreadDamage
Spread: 128 Spread: 128
Damage: 30 Damage: 30
@@ -782,12 +782,12 @@ Dragon:
ReloadDelay: 50 ReloadDelay: 50
Range: 6c768 Range: 6c768
Report: 120MMF.AUD Report: 120MMF.AUD
Palette: ra
Projectile: Bullet Projectile: Bullet
Speed: 682 Speed: 682
Image: 120mm Image: 120mm
Shadow: true Shadow: true
Angle: 62 Angle: 62
Palette: ra
Warhead@1Dam: SpreadDamage Warhead@1Dam: SpreadDamage
Spread: 128 Spread: 128
Damage: 36 Damage: 36
@@ -813,13 +813,13 @@ Dragon:
ReloadDelay: 110 ReloadDelay: 110
Range: 18c0 Range: 18c0
Report: 120MMF.AUD Report: 120MMF.AUD
Palette: ra
Projectile: Bullet Projectile: Bullet
Speed: 170 Speed: 170
Image: 120mm Image: 120mm
Angle: 165 Angle: 165
Shadow: true Shadow: true
High: yes Blockable: false
Palette: ra
MinRange: 5c0 MinRange: 5c0
Warhead@1Dam: SpreadDamage Warhead@1Dam: SpreadDamage
Spread: 298 Spread: 298
@@ -849,16 +849,16 @@ Hellfire:
Report: ORCAMIS1.AUD Report: ORCAMIS1.AUD
Burst: 2 Burst: 2
ValidTargets: Ground, Air ValidTargets: Ground, Air
Palette: ra
Projectile: Missile Projectile: Missile
Speed: 256 Speed: 256
Arm: 2 Arm: 2
High: yes Blockable: false
Shadow: true Shadow: true
Inaccuracy: 128 Inaccuracy: 128
Image: DRAGON Image: DRAGON
ROT: 8 RateOfTurn: 8
RangeLimit: 35 RangeLimit: 35
Palette: ra
Warhead@1Dam: SpreadDamage Warhead@1Dam: SpreadDamage
Spread: 85 Spread: 85
Damage: 30 Damage: 30
@@ -888,11 +888,11 @@ Hellfire:
Bomb: Bomb:
ReloadDelay: 10 ReloadDelay: 10
Range: 5c0 Range: 5c0
Palette: player
Projectile: Bullet Projectile: Bullet
Speed: 170 Speed: 170
Image: canister Image: canister
Shadow: true Shadow: true
Palette: player
Warhead@1Dam: SpreadDamage Warhead@1Dam: SpreadDamage
Spread: 298 Spread: 298
Damage: 160 Damage: 160
@@ -924,11 +924,11 @@ Proton:
Projectile: Missile Projectile: Missile
Speed: 256 Speed: 256
Arm: 2 Arm: 2
High: yes Blockable: false
Shadow: true Shadow: true
Inaccuracy: 128 Inaccuracy: 128
Image: TORPEDO Image: TORPEDO
ROT: 1 RateOfTurn: 1
RangeLimit: 35 RangeLimit: 35
Warhead@1Dam: SpreadDamage Warhead@1Dam: SpreadDamage
Spread: 128 Spread: 128
@@ -1064,13 +1064,13 @@ RPGTower:
ReloadDelay: 80 ReloadDelay: 80
Range: 8c0 Range: 8c0
Report: GLNCH4.AUD Report: GLNCH4.AUD
Palette: player
Projectile: Bullet Projectile: Bullet
Speed: 384 Speed: 384
High: yes Blockable: false
Shadow: true Shadow: true
Angle: 62 Angle: 62
Image: canister Image: canister
Palette: player
Warhead@1Dam: SpreadDamage Warhead@1Dam: SpreadDamage
Spread: 128 Spread: 128
Damage: 110 Damage: 110
@@ -1098,16 +1098,16 @@ SAMTower:
Range: 15c0 Range: 15c0
Report: SAMSHOT1.AUD Report: SAMSHOT1.AUD
ValidTargets: Air ValidTargets: Air
Palette: ra
Projectile: Missile Projectile: Missile
Speed: 298 Speed: 298
Arm: 2 Arm: 2
High: yes Blockable: false
Shadow: true Shadow: true
Inaccuracy: 128 Inaccuracy: 128
Image: DRAGON Image: DRAGON
ROT: 5 RateOfTurn: 5
RangeLimit: 60 RangeLimit: 60
Palette: ra
Warhead@1Dam: SpreadDamage Warhead@1Dam: SpreadDamage
Spread: 128 Spread: 128
Damage: 33 Damage: 33
@@ -1149,7 +1149,7 @@ EMPulseCannon:
Report: PLSECAN2.AUD Report: PLSECAN2.AUD
Projectile: Bullet Projectile: Bullet
Speed: 425 Speed: 425
High: yes Blockable: false
Shadow: true Shadow: true
Angle: 62 Angle: 62
Image: pulsball Image: pulsball
@@ -1266,3 +1266,4 @@ ClusterMissile:
SmudgeType: SmallScorch SmudgeType: SmallScorch
Size: 5 Size: 5
Delay: 20 Delay: 20