Merge pull request #6265 from pchote/warhead-intification
Warhead cleanups
This commit is contained in:
86
OpenRA.Game/GameRules/DamageWarhead.cs
Normal file
86
OpenRA.Game/GameRules/DamageWarhead.cs
Normal file
@@ -0,0 +1,86 @@
|
|||||||
|
#region Copyright & License Information
|
||||||
|
/*
|
||||||
|
* Copyright 2007-2014 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.Effects;
|
||||||
|
using OpenRA.Traits;
|
||||||
|
|
||||||
|
namespace OpenRA.GameRules
|
||||||
|
{
|
||||||
|
public abstract class DamageWarhead : Warhead
|
||||||
|
{
|
||||||
|
[Desc("How much (raw) damage to deal")]
|
||||||
|
public readonly int Damage = 0;
|
||||||
|
|
||||||
|
[Desc("Infantry death animation to use")]
|
||||||
|
public readonly string InfDeath = "1";
|
||||||
|
|
||||||
|
[Desc("Whether we should prevent prone response for infantry.")]
|
||||||
|
public readonly bool PreventProne = false;
|
||||||
|
|
||||||
|
[Desc("By what percentage should damage be modified against prone infantry.")]
|
||||||
|
public readonly int ProneModifier = 50;
|
||||||
|
|
||||||
|
[FieldLoader.LoadUsing("LoadVersus")]
|
||||||
|
[Desc("Damage percentage versus each armortype. 0% = can't target.")]
|
||||||
|
public readonly Dictionary<string, int> Versus;
|
||||||
|
|
||||||
|
public static object LoadVersus(MiniYaml yaml)
|
||||||
|
{
|
||||||
|
var nd = yaml.ToDictionary();
|
||||||
|
return nd.ContainsKey("Versus")
|
||||||
|
? nd["Versus"].ToDictionary(my => FieldLoader.GetValue<int>("(value)", my.Value))
|
||||||
|
: new Dictionary<string, int>();
|
||||||
|
}
|
||||||
|
|
||||||
|
public int DamageVersus(ActorInfo victim)
|
||||||
|
{
|
||||||
|
var armor = victim.Traits.GetOrDefault<ArmorInfo>();
|
||||||
|
if (armor != null && armor.Type != null)
|
||||||
|
{
|
||||||
|
int versus;
|
||||||
|
if (Versus.TryGetValue(armor.Type, out versus))
|
||||||
|
return versus;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 100;
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: This can be removed after the legacy and redundant 0% = not targetable
|
||||||
|
// assumption has been removed from the yaml definitions
|
||||||
|
public override bool CanTargetActor(ActorInfo victim, Actor firedBy)
|
||||||
|
{
|
||||||
|
var health = victim.Traits.GetOrDefault<HealthInfo>();
|
||||||
|
if (health == null)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return DamageVersus(victim) > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void DoImpact(Target target, Actor firedBy, IEnumerable<int> damageModifiers)
|
||||||
|
{
|
||||||
|
// Used by traits that damage a single actor, rather than a position
|
||||||
|
if (target.Type == TargetType.Actor)
|
||||||
|
DoImpact(target.Actor, firedBy, damageModifiers);
|
||||||
|
else
|
||||||
|
DoImpact(target.CenterPosition, firedBy, damageModifiers);
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract void DoImpact(WPos pos, Actor firedBy, IEnumerable<int> damageModifiers);
|
||||||
|
|
||||||
|
public virtual void DoImpact(Actor victim, Actor firedBy, IEnumerable<int> damageModifiers)
|
||||||
|
{
|
||||||
|
var damage = Util.ApplyPercentageModifiers(Damage, damageModifiers.Append(DamageVersus(victim.Info)));
|
||||||
|
victim.InflictDamage(firedBy, damage, this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -27,9 +27,7 @@ namespace OpenRA.GameRules
|
|||||||
[Desc("Delay in ticks before applying the warhead effect.","0 = instant (old model).")]
|
[Desc("Delay in ticks before applying the warhead effect.","0 = instant (old model).")]
|
||||||
public readonly int Delay = 0;
|
public readonly int Delay = 0;
|
||||||
|
|
||||||
public abstract void DoImpact(Target target, Actor firedBy, float firepowerModifier);
|
public abstract void DoImpact(Target target, Actor firedBy, IEnumerable<int> damageModifiers);
|
||||||
|
|
||||||
public virtual float EffectivenessAgainst(ActorInfo ai) { return 0f; }
|
|
||||||
|
|
||||||
public bool IsValidAgainst(Target target, World world, Actor firedBy)
|
public bool IsValidAgainst(Target target, World world, Actor firedBy)
|
||||||
{
|
{
|
||||||
@@ -56,10 +54,13 @@ namespace OpenRA.GameRules
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: This can be removed after the legacy and redundant 0% = not targetable
|
||||||
|
// assumption has been removed from the yaml definitions
|
||||||
|
public virtual bool CanTargetActor(ActorInfo victim, Actor firedBy) { return false; }
|
||||||
|
|
||||||
public bool IsValidAgainst(Actor victim, Actor firedBy)
|
public bool IsValidAgainst(Actor victim, Actor firedBy)
|
||||||
{
|
{
|
||||||
// If this warhead is ineffective against the target, then it is not a valid target
|
if (!CanTargetActor(victim.Info, firedBy))
|
||||||
if (EffectivenessAgainst(victim.Info) <= 0f)
|
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
// A target type is valid if it is in the valid targets list, and not in the invalid targets list.
|
// A target type is valid if it is in the valid targets list, and not in the invalid targets list.
|
||||||
@@ -83,8 +84,7 @@ namespace OpenRA.GameRules
|
|||||||
|
|
||||||
public bool IsValidAgainst(FrozenActor victim, Actor firedBy)
|
public bool IsValidAgainst(FrozenActor victim, Actor firedBy)
|
||||||
{
|
{
|
||||||
// If this warhead is ineffective against the target, then it is not a valid target
|
if (!CanTargetActor(victim.Info, firedBy))
|
||||||
if (EffectivenessAgainst(victim.Info) <= 0f)
|
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
// A target type is valid if it is in the valid targets list, and not in the invalid targets list.
|
// A target type is valid if it is in the valid targets list, and not in the invalid targets list.
|
||||||
|
|||||||
@@ -1,84 +0,0 @@
|
|||||||
#region Copyright & License Information
|
|
||||||
/*
|
|
||||||
* Copyright 2007-2014 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.Effects;
|
|
||||||
using OpenRA.Traits;
|
|
||||||
|
|
||||||
namespace OpenRA.GameRules
|
|
||||||
{
|
|
||||||
public class AbsoluteSpreadDamageWarhead : DamageWarhead
|
|
||||||
{
|
|
||||||
[Desc("Maximum spread of the associated SpreadFactor.")]
|
|
||||||
public readonly WRange[] Spread = { new WRange(43) };
|
|
||||||
|
|
||||||
[Desc("What factor to multiply the Damage by for this spread range.", "Each factor specified must have an associated Spread defined.")]
|
|
||||||
public readonly float[] SpreadFactor = { 1f };
|
|
||||||
|
|
||||||
public override void DoImpact(Target target, Actor firedBy, float firepowerModifier)
|
|
||||||
{
|
|
||||||
// Used by traits that damage a single actor, rather than a position
|
|
||||||
if (target.Type == TargetType.Actor)
|
|
||||||
DoImpact(target.Actor, firedBy, firepowerModifier);
|
|
||||||
else
|
|
||||||
DoImpact(target.CenterPosition, firedBy, firepowerModifier);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void DoImpact(WPos pos, Actor firedBy, float firepowerModifier)
|
|
||||||
{
|
|
||||||
var world = firedBy.World;
|
|
||||||
|
|
||||||
for (var i = 0; i < Spread.Length; i++)
|
|
||||||
{
|
|
||||||
var currentSpread = Spread[i];
|
|
||||||
var currentFactor = SpreadFactor[i];
|
|
||||||
var previousSpread = WRange.Zero;
|
|
||||||
if (i > 0)
|
|
||||||
previousSpread = Spread[i - 1];
|
|
||||||
if (currentFactor <= 0f)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
var hitActors = world.FindActorsInCircle(pos, currentSpread);
|
|
||||||
if (previousSpread.Range > 0)
|
|
||||||
hitActors.Except(world.FindActorsInCircle(pos, previousSpread));
|
|
||||||
|
|
||||||
foreach (var victim in hitActors)
|
|
||||||
if (IsValidAgainst(victim, firedBy))
|
|
||||||
{
|
|
||||||
var damage = GetDamageToInflict(victim, firedBy, firepowerModifier * currentFactor);
|
|
||||||
victim.InflictDamage(firedBy, damage, this);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void DoImpact(Actor victim, Actor firedBy, float firepowerModifier)
|
|
||||||
{
|
|
||||||
if (IsValidAgainst(victim, firedBy))
|
|
||||||
{
|
|
||||||
var currentFactor = SpreadFactor[0];
|
|
||||||
var damage = (int)GetDamageToInflict(victim, firedBy, firepowerModifier * currentFactor);
|
|
||||||
victim.InflictDamage(firedBy, damage, this);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public int GetDamageToInflict(Actor target, Actor firedBy, float modifier)
|
|
||||||
{
|
|
||||||
var healthInfo = target.Info.Traits.GetOrDefault<HealthInfo>();
|
|
||||||
if (healthInfo == null)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
var rawDamage = (float)Damage;
|
|
||||||
|
|
||||||
return (int)(rawDamage * modifier * EffectivenessAgainst(target.Info));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,59 +0,0 @@
|
|||||||
#region Copyright & License Information
|
|
||||||
/*
|
|
||||||
* Copyright 2007-2014 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.Effects;
|
|
||||||
using OpenRA.Traits;
|
|
||||||
|
|
||||||
namespace OpenRA.GameRules
|
|
||||||
{
|
|
||||||
public abstract class DamageWarhead : Warhead
|
|
||||||
{
|
|
||||||
[Desc("How much (raw) damage to deal")]
|
|
||||||
public readonly int Damage = 0;
|
|
||||||
|
|
||||||
[Desc("Infantry death animation to use")]
|
|
||||||
public readonly string InfDeath = "1";
|
|
||||||
|
|
||||||
[Desc("Whether we should prevent prone response for infantry.")]
|
|
||||||
public readonly bool PreventProne = false;
|
|
||||||
|
|
||||||
[Desc("By what percentage should damage be modified against prone infantry.")]
|
|
||||||
public readonly int ProneModifier = 50;
|
|
||||||
|
|
||||||
[FieldLoader.LoadUsing("LoadVersus")]
|
|
||||||
[Desc("Damage vs each armortype. 0% = can't target.")]
|
|
||||||
public readonly Dictionary<string, float> Versus;
|
|
||||||
|
|
||||||
public static object LoadVersus(MiniYaml yaml)
|
|
||||||
{
|
|
||||||
var nd = yaml.ToDictionary();
|
|
||||||
return nd.ContainsKey("Versus")
|
|
||||||
? nd["Versus"].ToDictionary(my => FieldLoader.GetValue<float>("(value)", my.Value))
|
|
||||||
: new Dictionary<string, float>();
|
|
||||||
}
|
|
||||||
|
|
||||||
public override float EffectivenessAgainst(ActorInfo ai)
|
|
||||||
{
|
|
||||||
var health = ai.Traits.GetOrDefault<HealthInfo>();
|
|
||||||
if (health == null)
|
|
||||||
return 0f;
|
|
||||||
|
|
||||||
var armor = ai.Traits.GetOrDefault<ArmorInfo>();
|
|
||||||
if (armor == null || armor.Type == null)
|
|
||||||
return 1f;
|
|
||||||
|
|
||||||
float versus;
|
|
||||||
return Versus.TryGetValue(armor.Type, out versus) ? versus : 1f;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,71 +0,0 @@
|
|||||||
#region Copyright & License Information
|
|
||||||
/*
|
|
||||||
* Copyright 2007-2014 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.Effects;
|
|
||||||
using OpenRA.Traits;
|
|
||||||
|
|
||||||
namespace OpenRA.GameRules
|
|
||||||
{
|
|
||||||
public class HealthPercentageDamageWarhead : DamageWarhead
|
|
||||||
{
|
|
||||||
[Desc("Size of the area. Damage will be applied to this area.", "If two spreads are defined, the area of effect is a ring, where the second value is the inner radius.")]
|
|
||||||
public readonly WRange[] Spread = { new WRange(43), WRange.Zero };
|
|
||||||
|
|
||||||
public override void DoImpact(Target target, Actor firedBy, float firepowerModifier)
|
|
||||||
{
|
|
||||||
// Used by traits that damage a single actor, rather than a position
|
|
||||||
if (target.Type == TargetType.Actor)
|
|
||||||
DoImpact(target.Actor, firedBy, firepowerModifier);
|
|
||||||
else
|
|
||||||
DoImpact(target.CenterPosition, firedBy, firepowerModifier);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void DoImpact(WPos pos, Actor firedBy, float firepowerModifier)
|
|
||||||
{
|
|
||||||
var world = firedBy.World;
|
|
||||||
var range = Spread[0];
|
|
||||||
var hitActors = world.FindActorsInCircle(pos, range);
|
|
||||||
if (Spread.Length > 1 && Spread[1].Range > 0)
|
|
||||||
hitActors.Except(world.FindActorsInCircle(pos, Spread[1]));
|
|
||||||
|
|
||||||
foreach (var victim in hitActors)
|
|
||||||
DoImpact(victim, firedBy, firepowerModifier);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void DoImpact(Actor victim, Actor firedBy, float firepowerModifier)
|
|
||||||
{
|
|
||||||
if (IsValidAgainst(victim, firedBy))
|
|
||||||
{
|
|
||||||
var damage = GetDamageToInflict(victim, firedBy, firepowerModifier);
|
|
||||||
if (damage != 0) // will be 0 if the target doesn't have HealthInfo
|
|
||||||
{
|
|
||||||
var healthInfo = victim.Info.Traits.Get<HealthInfo>();
|
|
||||||
damage = (float)(damage / 100 * healthInfo.HP);
|
|
||||||
}
|
|
||||||
|
|
||||||
victim.InflictDamage(firedBy, (int)damage, this);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public float GetDamageToInflict(Actor target, Actor firedBy, float modifier)
|
|
||||||
{
|
|
||||||
var healthInfo = target.Info.Traits.GetOrDefault<HealthInfo>();
|
|
||||||
if (healthInfo == null)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
var rawDamage = (float)Damage;
|
|
||||||
|
|
||||||
return rawDamage * modifier * EffectivenessAgainst(target.Info);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,65 +0,0 @@
|
|||||||
#region Copyright & License Information
|
|
||||||
/*
|
|
||||||
* Copyright 2007-2014 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.Effects;
|
|
||||||
using OpenRA.Traits;
|
|
||||||
|
|
||||||
namespace OpenRA.GameRules
|
|
||||||
{
|
|
||||||
public class PerCellDamageWarhead : DamageWarhead
|
|
||||||
{
|
|
||||||
[Desc("Size of the area. Damage will be applied to this area.")]
|
|
||||||
public readonly int[] Size = { 0, 0 };
|
|
||||||
|
|
||||||
public override void DoImpact(Target target, Actor firedBy, float firepowerModifier)
|
|
||||||
{
|
|
||||||
// Used by traits that damage a single actor, rather than a position
|
|
||||||
if (target.Type == TargetType.Actor)
|
|
||||||
DoImpact(target.Actor, firedBy, firepowerModifier);
|
|
||||||
else
|
|
||||||
DoImpact(target.CenterPosition, firedBy, firepowerModifier);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void DoImpact(WPos pos, Actor firedBy, float firepowerModifier)
|
|
||||||
{
|
|
||||||
var world = firedBy.World;
|
|
||||||
var targetTile = world.Map.CellContaining(pos);
|
|
||||||
var minRange = (Size.Length > 1 && Size[1] > 0) ? Size[1] : 0;
|
|
||||||
var affectedTiles = world.Map.FindTilesInAnnulus(targetTile, minRange, Size[0]);
|
|
||||||
|
|
||||||
foreach (var t in affectedTiles)
|
|
||||||
foreach (var victim in world.ActorMap.GetUnitsAt(t))
|
|
||||||
DoImpact(victim, firedBy, firepowerModifier);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void DoImpact(Actor victim, Actor firedBy, float firepowerModifier)
|
|
||||||
{
|
|
||||||
if (IsValidAgainst(victim, firedBy))
|
|
||||||
{
|
|
||||||
var damage = GetDamageToInflict(victim, firedBy, firepowerModifier);
|
|
||||||
victim.InflictDamage(firedBy, damage, this);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public int GetDamageToInflict(Actor target, Actor firedBy, float modifier)
|
|
||||||
{
|
|
||||||
var healthInfo = target.Info.Traits.GetOrDefault<HealthInfo>();
|
|
||||||
if (healthInfo == null)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
var rawDamage = (float)Damage;
|
|
||||||
|
|
||||||
return (int)(rawDamage * modifier * EffectivenessAgainst(target.Info));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,83 +0,0 @@
|
|||||||
#region Copyright & License Information
|
|
||||||
/*
|
|
||||||
* Copyright 2007-2014 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.Effects;
|
|
||||||
using OpenRA.Traits;
|
|
||||||
|
|
||||||
namespace OpenRA.GameRules
|
|
||||||
{
|
|
||||||
public class SpreadDamageWarhead : DamageWarhead
|
|
||||||
{
|
|
||||||
[Desc("For Normal DamageModel: Distance from the explosion center at which damage is 1/2.")]
|
|
||||||
public readonly WRange Spread = new WRange(43);
|
|
||||||
|
|
||||||
public override void DoImpact(Target target, Actor firedBy, float firepowerModifier)
|
|
||||||
{
|
|
||||||
// Used by traits that damage a single actor, rather than a position
|
|
||||||
if (target.Type == TargetType.Actor)
|
|
||||||
DoImpact(target.Actor, firedBy, firepowerModifier);
|
|
||||||
else
|
|
||||||
DoImpact(target.CenterPosition, firedBy, firepowerModifier);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void DoImpact(WPos pos, Actor firedBy, float firepowerModifier)
|
|
||||||
{
|
|
||||||
var world = firedBy.World;
|
|
||||||
var maxSpread = new WRange((int)(Spread.Range * (float)Math.Log(Math.Abs(Damage), 2)));
|
|
||||||
var hitActors = world.FindActorsInCircle(pos, maxSpread);
|
|
||||||
|
|
||||||
foreach (var victim in hitActors)
|
|
||||||
if (IsValidAgainst(victim, firedBy))
|
|
||||||
{
|
|
||||||
var damage = (int)GetDamageToInflict(pos, victim, firedBy, firepowerModifier);
|
|
||||||
victim.InflictDamage(firedBy, damage, this);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void DoImpact(Actor victim, Actor firedBy, float firepowerModifier)
|
|
||||||
{
|
|
||||||
if (IsValidAgainst(victim, firedBy))
|
|
||||||
{
|
|
||||||
var damage = GetDamageToInflict(victim.CenterPosition, victim, firedBy, firepowerModifier);
|
|
||||||
victim.InflictDamage(firedBy, damage, this);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public int GetDamageToInflict(WPos pos, Actor target, Actor firedBy, float modifier)
|
|
||||||
{
|
|
||||||
var healthInfo = target.Info.Traits.GetOrDefault<HealthInfo>();
|
|
||||||
if (healthInfo == null)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
var distance = Math.Max(0, (target.CenterPosition - pos).Length - healthInfo.Radius.Range);
|
|
||||||
var falloff = (float)GetDamageFalloff(distance * 1f / Spread.Range);
|
|
||||||
var rawDamage = (float)(falloff * Damage);
|
|
||||||
|
|
||||||
return (int)(rawDamage * modifier * EffectivenessAgainst(target.Info));
|
|
||||||
}
|
|
||||||
|
|
||||||
static readonly float[] falloff =
|
|
||||||
{
|
|
||||||
1f, 0.3678795f, 0.1353353f, 0.04978707f,
|
|
||||||
0.01831564f, 0.006737947f, 0.002478752f, 0.000911882f
|
|
||||||
};
|
|
||||||
|
|
||||||
static float GetDamageFalloff(float x)
|
|
||||||
{
|
|
||||||
var u = (int)x;
|
|
||||||
if (u >= falloff.Length - 1) return 0;
|
|
||||||
var t = x - u;
|
|
||||||
return (falloff[u] * (1 - t)) + (falloff[u + 1] * t);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -19,7 +19,7 @@ namespace OpenRA.GameRules
|
|||||||
public class ProjectileArgs
|
public class ProjectileArgs
|
||||||
{
|
{
|
||||||
public WeaponInfo Weapon;
|
public WeaponInfo Weapon;
|
||||||
public float FirepowerModifier = 1.0f;
|
public IEnumerable<int> DamageModifiers;
|
||||||
public int Facing;
|
public int Facing;
|
||||||
public WPos Source;
|
public WPos Source;
|
||||||
public Actor SourceActor;
|
public Actor SourceActor;
|
||||||
@@ -144,13 +144,13 @@ namespace OpenRA.GameRules
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Impact(WPos pos, Actor firedBy, float damageModifier)
|
public void Impact(WPos pos, Actor firedBy, IEnumerable<int> damageModifiers)
|
||||||
{
|
{
|
||||||
foreach (var wh in Warheads)
|
foreach (var wh in Warheads)
|
||||||
{
|
{
|
||||||
Action a;
|
Action a;
|
||||||
|
|
||||||
a = () => wh.DoImpact(Target.FromPos(pos), firedBy, damageModifier);
|
a = () => wh.DoImpact(Target.FromPos(pos), firedBy, damageModifiers);
|
||||||
if (wh.Delay > 0)
|
if (wh.Delay > 0)
|
||||||
firedBy.World.AddFrameEndTask(
|
firedBy.World.AddFrameEndTask(
|
||||||
w => w.Add(new DelayedAction(wh.Delay, a)));
|
w => w.Add(new DelayedAction(wh.Delay, a)));
|
||||||
|
|||||||
@@ -76,11 +76,6 @@
|
|||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Compile Include="Actor.cs" />
|
<Compile Include="Actor.cs" />
|
||||||
<Compile Include="GameRules\Warhead.cs" />
|
<Compile Include="GameRules\Warhead.cs" />
|
||||||
<Compile Include="GameRules\Warheads\AbsoluteSpreadDamageWarhead.cs" />
|
|
||||||
<Compile Include="GameRules\Warheads\DamageWarhead.cs" />
|
|
||||||
<Compile Include="GameRules\Warheads\HealthPercentageDamageWarhead.cs" />
|
|
||||||
<Compile Include="GameRules\Warheads\PerCellDamageWarhead.cs" />
|
|
||||||
<Compile Include="GameRules\Warheads\SpreadDamageWarhead.cs" />
|
|
||||||
<Compile Include="Graphics\QuadRenderer.cs" />
|
<Compile Include="Graphics\QuadRenderer.cs" />
|
||||||
<Compile Include="Download.cs" />
|
<Compile Include="Download.cs" />
|
||||||
<Compile Include="Effects\DelayedAction.cs" />
|
<Compile Include="Effects\DelayedAction.cs" />
|
||||||
@@ -247,6 +242,7 @@
|
|||||||
<Compile Include="Graphics\SelectionBarsRenderable.cs" />
|
<Compile Include="Graphics\SelectionBarsRenderable.cs" />
|
||||||
<Compile Include="Graphics\TargetLineRenderable.cs" />
|
<Compile Include="Graphics\TargetLineRenderable.cs" />
|
||||||
<Compile Include="Graphics\UISpriteRenderable.cs" />
|
<Compile Include="Graphics\UISpriteRenderable.cs" />
|
||||||
|
<Compile Include="GameRules\DamageWarhead.cs" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Compile Include="FileSystem\D2kSoundResources.cs" />
|
<Compile Include="FileSystem\D2kSoundResources.cs" />
|
||||||
|
|||||||
@@ -9,6 +9,7 @@
|
|||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
using OpenRA.Effects;
|
using OpenRA.Effects;
|
||||||
using OpenRA.GameRules;
|
using OpenRA.GameRules;
|
||||||
using OpenRA.Graphics;
|
using OpenRA.Graphics;
|
||||||
@@ -45,7 +46,7 @@ namespace OpenRA.Mods.Cnc.Effects
|
|||||||
if (!impacted && weaponDelay-- <= 0)
|
if (!impacted && weaponDelay-- <= 0)
|
||||||
{
|
{
|
||||||
var weapon = world.Map.Rules.Weapons[this.weapon.ToLowerInvariant()];
|
var weapon = world.Map.Rules.Weapons[this.weapon.ToLowerInvariant()];
|
||||||
weapon.Impact(target.CenterPosition, firedBy.PlayerActor, 1f);
|
weapon.Impact(target.CenterPosition, firedBy.PlayerActor, Enumerable.Empty<int>());
|
||||||
impacted = true;
|
impacted = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ namespace OpenRA.Mods.Cnc
|
|||||||
if (!info.Resources.Contains(r.Info.Name)) return;
|
if (!info.Resources.Contains(r.Info.Name)) return;
|
||||||
|
|
||||||
var weapon = self.World.Map.Rules.Weapons[info.Weapon.ToLowerInvariant()];
|
var weapon = self.World.Map.Rules.Weapons[info.Weapon.ToLowerInvariant()];
|
||||||
weapon.Impact(self.CenterPosition, self.World.WorldActor, 1f);
|
weapon.Impact(self.CenterPosition, self.World.WorldActor, Enumerable.Empty<int>());
|
||||||
poisonTicks = weapon.ReloadDelay;
|
poisonTicks = weapon.ReloadDelay;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ namespace OpenRA.Mods.D2k
|
|||||||
if (health.HP <= damageThreshold || --damageTicks > 0)
|
if (health.HP <= damageThreshold || --damageTicks > 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
weapon.Impact(self.CenterPosition, self.World.WorldActor, 1f);
|
weapon.Impact(self.CenterPosition, self.World.WorldActor, Enumerable.Empty<int>());
|
||||||
damageTicks = weapon.ReloadDelay;
|
damageTicks = weapon.ReloadDelay;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -49,10 +49,8 @@ namespace OpenRA.Mods.D2k
|
|||||||
Weapon = wep,
|
Weapon = wep,
|
||||||
Facing = self.World.SharedRandom.Next(-1, 255),
|
Facing = self.World.SharedRandom.Next(-1, 255),
|
||||||
|
|
||||||
// TODO: Convert to ints
|
DamageModifiers = self.TraitsImplementing<IFirepowerModifier>()
|
||||||
FirepowerModifier = self.TraitsImplementing<IFirepowerModifier>()
|
.Select(a => a.GetFirepowerModifier()),
|
||||||
.Select(a => a.GetFirepowerModifier() / 100f)
|
|
||||||
.Product(),
|
|
||||||
|
|
||||||
Source = self.CenterPosition,
|
Source = self.CenterPosition,
|
||||||
SourceActor = self,
|
SourceActor = self,
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
*/
|
*/
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
using System.Linq;
|
||||||
using OpenRA.GameRules;
|
using OpenRA.GameRules;
|
||||||
using OpenRA.Traits;
|
using OpenRA.Traits;
|
||||||
|
|
||||||
@@ -54,7 +55,7 @@ namespace OpenRA.Mods.RA.Air
|
|||||||
if (info.Explosion != null)
|
if (info.Explosion != null)
|
||||||
{
|
{
|
||||||
var weapon = self.World.Map.Rules.Weapons[info.Explosion.ToLowerInvariant()];
|
var weapon = self.World.Map.Rules.Weapons[info.Explosion.ToLowerInvariant()];
|
||||||
weapon.Impact(self.CenterPosition, self, 1f);
|
weapon.Impact(self.CenterPosition, self, Enumerable.Empty<int>());
|
||||||
}
|
}
|
||||||
|
|
||||||
self.Destroy();
|
self.Destroy();
|
||||||
|
|||||||
@@ -154,10 +154,8 @@ namespace OpenRA.Mods.RA
|
|||||||
Weapon = Weapon,
|
Weapon = Weapon,
|
||||||
Facing = legacyFacing,
|
Facing = legacyFacing,
|
||||||
|
|
||||||
// TODO: Convert to ints
|
DamageModifiers = self.TraitsImplementing<IFirepowerModifier>()
|
||||||
FirepowerModifier = self.TraitsImplementing<IFirepowerModifier>()
|
.Select(a => a.GetFirepowerModifier()),
|
||||||
.Select(a => a.GetFirepowerModifier() / 100f)
|
|
||||||
.Product(),
|
|
||||||
|
|
||||||
Source = muzzlePosition,
|
Source = muzzlePosition,
|
||||||
SourceActor = self,
|
SourceActor = self,
|
||||||
|
|||||||
@@ -299,7 +299,7 @@ namespace OpenRA.Mods.RA
|
|||||||
self.World.AddFrameEndTask(w =>
|
self.World.AddFrameEndTask(w =>
|
||||||
{
|
{
|
||||||
var weapon = saboteur.World.Map.Rules.Weapons[Info.DemolishWeapon.ToLowerInvariant()];
|
var weapon = saboteur.World.Map.Rules.Weapons[Info.DemolishWeapon.ToLowerInvariant()];
|
||||||
weapon.Impact(self.CenterPosition, saboteur, 1f);
|
weapon.Impact(self.CenterPosition, saboteur, Enumerable.Empty<int>());
|
||||||
self.World.WorldActor.Trait<ScreenShaker>().AddEffect(15, self.CenterPosition, 6);
|
self.World.WorldActor.Trait<ScreenShaker>().AddEffect(15, self.CenterPosition, 6);
|
||||||
self.Kill(saboteur);
|
self.Kill(saboteur);
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
*/
|
*/
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
using System.Linq;
|
||||||
using OpenRA.GameRules;
|
using OpenRA.GameRules;
|
||||||
using OpenRA.Traits;
|
using OpenRA.Traits;
|
||||||
|
|
||||||
@@ -30,7 +31,7 @@ namespace OpenRA.Mods.RA
|
|||||||
public override void Activate(Actor collector)
|
public override void Activate(Actor collector)
|
||||||
{
|
{
|
||||||
var weapon = self.World.Map.Rules.Weapons[((ExplodeCrateActionInfo)info).Weapon.ToLowerInvariant()];
|
var weapon = self.World.Map.Rules.Weapons[((ExplodeCrateActionInfo)info).Weapon.ToLowerInvariant()];
|
||||||
weapon.Impact(collector.CenterPosition, self, 1f);
|
weapon.Impact(collector.CenterPosition, self, Enumerable.Empty<int>());
|
||||||
base.Activate(collector);
|
base.Activate(collector);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -172,7 +172,7 @@ namespace OpenRA.Mods.RA.Effects
|
|||||||
|
|
||||||
world.AddFrameEndTask(w => w.Remove(this));
|
world.AddFrameEndTask(w => w.Remove(this));
|
||||||
|
|
||||||
args.Weapon.Impact(pos, args.SourceActor, args.FirepowerModifier);
|
args.Weapon.Impact(pos, args.SourceActor, args.DamageModifiers);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ namespace OpenRA.Mods.RA.Effects
|
|||||||
{
|
{
|
||||||
pos += new WVec(0, 0, args.PassiveTarget.Z - pos.Z);
|
pos += new WVec(0, 0, args.PassiveTarget.Z - pos.Z);
|
||||||
world.AddFrameEndTask(w => w.Remove(this));
|
world.AddFrameEndTask(w => w.Remove(this));
|
||||||
args.Weapon.Impact(pos, args.SourceActor, args.FirepowerModifier);
|
args.Weapon.Impact(pos, args.SourceActor, args.DamageModifiers);
|
||||||
}
|
}
|
||||||
|
|
||||||
anim.Tick();
|
anim.Tick();
|
||||||
|
|||||||
@@ -69,7 +69,7 @@ namespace OpenRA.Mods.RA.Effects
|
|||||||
if (hitanim != null)
|
if (hitanim != null)
|
||||||
hitanim.PlayThen("idle", () => animationComplete = true);
|
hitanim.PlayThen("idle", () => animationComplete = true);
|
||||||
|
|
||||||
args.Weapon.Impact(target, args.SourceActor, args.FirepowerModifier);
|
args.Weapon.Impact(target, args.SourceActor, args.DamageModifiers);
|
||||||
doneDamage = true;
|
doneDamage = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -180,7 +180,7 @@ namespace OpenRA.Mods.RA.Effects
|
|||||||
if (ticks <= info.Arm)
|
if (ticks <= info.Arm)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
args.Weapon.Impact(pos, args.SourceActor, args.FirepowerModifier);
|
args.Weapon.Impact(pos, args.SourceActor, args.DamageModifiers);
|
||||||
}
|
}
|
||||||
|
|
||||||
public IEnumerable<IRenderable> Render(WorldRenderer wr)
|
public IEnumerable<IRenderable> Render(WorldRenderer wr)
|
||||||
|
|||||||
@@ -81,7 +81,7 @@ namespace OpenRA.Mods.RA.Effects
|
|||||||
{
|
{
|
||||||
world.AddFrameEndTask(w => w.Remove(this));
|
world.AddFrameEndTask(w => w.Remove(this));
|
||||||
var weapon = world.Map.Rules.Weapons[this.weapon.ToLowerInvariant()];
|
var weapon = world.Map.Rules.Weapons[this.weapon.ToLowerInvariant()];
|
||||||
weapon.Impact(pos, firedBy.PlayerActor, 1f);
|
weapon.Impact(pos, firedBy.PlayerActor, Enumerable.Empty<int>());
|
||||||
world.WorldActor.Trait<ScreenShaker>().AddEffect(20, pos, 5);
|
world.WorldActor.Trait<ScreenShaker>().AddEffect(20, pos, 5);
|
||||||
|
|
||||||
foreach (var a in world.ActorsWithTrait<NukePaletteEffect>())
|
foreach (var a in world.ActorsWithTrait<NukePaletteEffect>())
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ namespace OpenRA.Mods.RA.Effects
|
|||||||
if (!doneDamage)
|
if (!doneDamage)
|
||||||
{
|
{
|
||||||
var pos = Args.GuidedTarget.IsValidFor(Args.SourceActor) ? Args.GuidedTarget.CenterPosition : Args.PassiveTarget;
|
var pos = Args.GuidedTarget.IsValidFor(Args.SourceActor) ? Args.GuidedTarget.CenterPosition : Args.PassiveTarget;
|
||||||
Args.Weapon.Impact(pos, Args.SourceActor, Args.FirepowerModifier);
|
Args.Weapon.Impact(pos, Args.SourceActor, Args.DamageModifiers);
|
||||||
doneDamage = true;
|
doneDamage = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ namespace OpenRA.Mods.RA
|
|||||||
if (weapon.Report != null && weapon.Report.Any())
|
if (weapon.Report != null && weapon.Report.Any())
|
||||||
Sound.Play(weapon.Report.Random(e.Attacker.World.SharedRandom), self.CenterPosition);
|
Sound.Play(weapon.Report.Random(e.Attacker.World.SharedRandom), self.CenterPosition);
|
||||||
|
|
||||||
weapon.Impact(self.CenterPosition, e.Attacker, 1f);
|
weapon.Impact(self.CenterPosition, e.Attacker, Enumerable.Empty<int>());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -10,6 +10,7 @@
|
|||||||
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
|
using System.Linq;
|
||||||
using OpenRA.GameRules;
|
using OpenRA.GameRules;
|
||||||
using OpenRA.Mods.RA.Activities;
|
using OpenRA.Mods.RA.Activities;
|
||||||
using OpenRA.Mods.RA.Move;
|
using OpenRA.Mods.RA.Move;
|
||||||
@@ -71,7 +72,7 @@ namespace OpenRA.Mods.RA
|
|||||||
if (info.ThumpDamageWeapon != null)
|
if (info.ThumpDamageWeapon != null)
|
||||||
{
|
{
|
||||||
var weapon = self.World.Map.Rules.Weapons[info.ThumpDamageWeapon.ToLowerInvariant()];
|
var weapon = self.World.Map.Rules.Weapons[info.ThumpDamageWeapon.ToLowerInvariant()];
|
||||||
weapon.Impact(self.CenterPosition, self, 1f);
|
weapon.Impact(self.CenterPosition, self, Enumerable.Empty<int>());
|
||||||
}
|
}
|
||||||
screenShaker.AddEffect(info.ThumpShakeTime, self.CenterPosition, info.ThumpShakeIntensity, info.ThumpShakeMultiplier);
|
screenShaker.AddEffect(info.ThumpShakeTime, self.CenterPosition, info.ThumpShakeIntensity, info.ThumpShakeMultiplier);
|
||||||
tick = 0;
|
tick = 0;
|
||||||
@@ -110,7 +111,7 @@ namespace OpenRA.Mods.RA
|
|||||||
if (info.DetonationWeapon != null)
|
if (info.DetonationWeapon != null)
|
||||||
{
|
{
|
||||||
var weapon = self.World.Map.Rules.Weapons[info.DetonationWeapon.ToLowerInvariant()];
|
var weapon = self.World.Map.Rules.Weapons[info.DetonationWeapon.ToLowerInvariant()];
|
||||||
weapon.Impact(self.CenterPosition, self, 1f);
|
weapon.Impact(self.CenterPosition, self, Enumerable.Empty<int>());
|
||||||
}
|
}
|
||||||
self.Kill(self);
|
self.Kill(self);
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -562,6 +562,9 @@
|
|||||||
<Compile Include="GainsStatUpgrades.cs" />
|
<Compile Include="GainsStatUpgrades.cs" />
|
||||||
<Compile Include="Player\Extensions.cs" />
|
<Compile Include="Player\Extensions.cs" />
|
||||||
<Compile Include="ServerTraits\LobbySettingsNotification.cs" />
|
<Compile Include="ServerTraits\LobbySettingsNotification.cs" />
|
||||||
|
<Compile Include="Warheads\HealthPercentageDamageWarhead.cs" />
|
||||||
|
<Compile Include="Warheads\PerCellDamageWarhead.cs" />
|
||||||
|
<Compile Include="Warheads\SpreadDamageWarhead.cs" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\OpenRA.Game\OpenRA.Game.csproj">
|
<ProjectReference Include="..\OpenRA.Game\OpenRA.Game.csproj">
|
||||||
|
|||||||
@@ -34,11 +34,6 @@ namespace OpenRA.Mods.RA
|
|||||||
[Desc("What impact types should this effect NOT apply to.", "Overrides ValidImpactTypes.")]
|
[Desc("What impact types should this effect NOT apply to.", "Overrides ValidImpactTypes.")]
|
||||||
public readonly ImpactType InvalidImpactTypes = ImpactType.None;
|
public readonly ImpactType InvalidImpactTypes = ImpactType.None;
|
||||||
|
|
||||||
public override void DoImpact(Target target, Actor firedBy, float firepowerModifier)
|
|
||||||
{
|
|
||||||
DoImpact(target.CenterPosition, firedBy, firepowerModifier);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static ImpactType GetImpactType(World world, CPos cell, WPos pos)
|
public static ImpactType GetImpactType(World world, CPos cell, WPos pos)
|
||||||
{
|
{
|
||||||
var isAir = pos.Z > 0;
|
var isAir = pos.Z > 0;
|
||||||
@@ -79,8 +74,9 @@ namespace OpenRA.Mods.RA
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void DoImpact(WPos pos, Actor firedBy, float firepowerModifier)
|
public override void DoImpact(Target target, Actor firedBy, IEnumerable<int> damageModifiers)
|
||||||
{
|
{
|
||||||
|
var pos = target.CenterPosition;
|
||||||
var world = firedBy.World;
|
var world = firedBy.World;
|
||||||
var targetTile = world.Map.CellContaining(pos);
|
var targetTile = world.Map.CellContaining(pos);
|
||||||
var isValid = IsValidImpact(pos, firedBy);
|
var isValid = IsValidImpact(pos, firedBy);
|
||||||
|
|||||||
@@ -26,18 +26,13 @@ namespace OpenRA.Mods.RA
|
|||||||
|
|
||||||
// TODO: Allow maximum resource splatter to be defined. (Per tile, and in total).
|
// TODO: Allow maximum resource splatter to be defined. (Per tile, and in total).
|
||||||
|
|
||||||
public override void DoImpact(Target target, Actor firedBy, float firepowerModifier)
|
public override void DoImpact(Target target, Actor firedBy, IEnumerable<int> damageModifiers)
|
||||||
{
|
|
||||||
DoImpact(target.CenterPosition, firedBy, firepowerModifier);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void DoImpact(WPos pos, Actor firedBy, float firepowerModifier)
|
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(AddsResourceType))
|
if (string.IsNullOrEmpty(AddsResourceType))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
var world = firedBy.World;
|
var world = firedBy.World;
|
||||||
var targetTile = world.Map.CellContaining(pos);
|
var targetTile = world.Map.CellContaining(target.CenterPosition);
|
||||||
var resLayer = world.WorldActor.Trait<ResourceLayer>();
|
var resLayer = world.WorldActor.Trait<ResourceLayer>();
|
||||||
|
|
||||||
var minRange = (Size.Length > 1 && Size[1] > 0) ? Size[1] : 0;
|
var minRange = (Size.Length > 1 && Size[1] > 0) ? Size[1] : 0;
|
||||||
|
|||||||
@@ -23,15 +23,10 @@ namespace OpenRA.Mods.RA
|
|||||||
|
|
||||||
// TODO: Allow maximum resource removal to be defined. (Per tile, and in total).
|
// TODO: Allow maximum resource removal to be defined. (Per tile, and in total).
|
||||||
|
|
||||||
public override void DoImpact(Target target, Actor firedBy, float firepowerModifier)
|
public override void DoImpact(Target target, Actor firedBy, IEnumerable<int> damageModifiers)
|
||||||
{
|
|
||||||
DoImpact(target.CenterPosition, firedBy, firepowerModifier);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void DoImpact(WPos pos, Actor firedBy, float firepowerModifier)
|
|
||||||
{
|
{
|
||||||
var world = firedBy.World;
|
var world = firedBy.World;
|
||||||
var targetTile = world.Map.CellContaining(pos);
|
var targetTile = world.Map.CellContaining(target.CenterPosition);
|
||||||
var resLayer = world.WorldActor.Trait<ResourceLayer>();
|
var resLayer = world.WorldActor.Trait<ResourceLayer>();
|
||||||
|
|
||||||
var minRange = (Size.Length > 1 && Size[1] > 0) ? Size[1] : 0;
|
var minRange = (Size.Length > 1 && Size[1] > 0) ? Size[1] : 0;
|
||||||
|
|||||||
48
OpenRA.Mods.RA/Warheads/HealthPercentageDamageWarhead.cs
Normal file
48
OpenRA.Mods.RA/Warheads/HealthPercentageDamageWarhead.cs
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
#region Copyright & License Information
|
||||||
|
/*
|
||||||
|
* Copyright 2007-2014 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.Effects;
|
||||||
|
using OpenRA.GameRules;
|
||||||
|
using OpenRA.Traits;
|
||||||
|
|
||||||
|
namespace OpenRA.Mods.RA
|
||||||
|
{
|
||||||
|
public class HealthPercentageDamageWarhead : DamageWarhead
|
||||||
|
{
|
||||||
|
[Desc("Size of the area. Damage will be applied to this area.", "If two spreads are defined, the area of effect is a ring, where the second value is the inner radius.")]
|
||||||
|
public readonly WRange[] Spread = { new WRange(43) };
|
||||||
|
|
||||||
|
public override void DoImpact(WPos pos, Actor firedBy, IEnumerable<int> damageModifiers)
|
||||||
|
{
|
||||||
|
var world = firedBy.World;
|
||||||
|
var range = Spread[0];
|
||||||
|
var hitActors = world.FindActorsInCircle(pos, range);
|
||||||
|
if (Spread.Length > 1 && Spread[1].Range > 0)
|
||||||
|
hitActors = hitActors.Except(world.FindActorsInCircle(pos, Spread[1]));
|
||||||
|
|
||||||
|
foreach (var victim in hitActors)
|
||||||
|
DoImpact(victim, firedBy, damageModifiers);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void DoImpact(Actor victim, Actor firedBy, IEnumerable<int> damageModifiers)
|
||||||
|
{
|
||||||
|
var healthInfo = victim.Info.Traits.GetOrDefault<HealthInfo>();
|
||||||
|
if (healthInfo == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
// Damage is measured as a percentage of the target health
|
||||||
|
var damage = Util.ApplyPercentageModifiers(healthInfo.HP, damageModifiers.Append(Damage, DamageVersus(victim.Info)));
|
||||||
|
victim.InflictDamage(firedBy, damage, this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -25,15 +25,10 @@ namespace OpenRA.Mods.RA
|
|||||||
[Desc("Type of smudge to apply to terrain.")]
|
[Desc("Type of smudge to apply to terrain.")]
|
||||||
public readonly string[] SmudgeType = { };
|
public readonly string[] SmudgeType = { };
|
||||||
|
|
||||||
public override void DoImpact(Target target, Actor firedBy, float firepowerModifier)
|
public override void DoImpact(Target target, Actor firedBy, IEnumerable<int> damageModifiers)
|
||||||
{
|
|
||||||
DoImpact(target.CenterPosition, firedBy, firepowerModifier);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void DoImpact(WPos pos, Actor firedBy, float firepowerModifier)
|
|
||||||
{
|
{
|
||||||
var world = firedBy.World;
|
var world = firedBy.World;
|
||||||
var targetTile = world.Map.CellContaining(pos);
|
var targetTile = world.Map.CellContaining(target.CenterPosition);
|
||||||
var smudgeLayers = world.WorldActor.TraitsImplementing<SmudgeLayer>().ToDictionary(x => x.Info.Type);
|
var smudgeLayers = world.WorldActor.TraitsImplementing<SmudgeLayer>().ToDictionary(x => x.Info.Type);
|
||||||
|
|
||||||
var minRange = (Size.Length > 1 && Size[1] > 0) ? Size[1] : 0;
|
var minRange = (Size.Length > 1 && Size[1] > 0) ? Size[1] : 0;
|
||||||
|
|||||||
37
OpenRA.Mods.RA/Warheads/PerCellDamageWarhead.cs
Normal file
37
OpenRA.Mods.RA/Warheads/PerCellDamageWarhead.cs
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
#region Copyright & License Information
|
||||||
|
/*
|
||||||
|
* Copyright 2007-2014 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.Effects;
|
||||||
|
using OpenRA.GameRules;
|
||||||
|
using OpenRA.Traits;
|
||||||
|
|
||||||
|
namespace OpenRA.Mods.RA
|
||||||
|
{
|
||||||
|
public class PerCellDamageWarhead : DamageWarhead
|
||||||
|
{
|
||||||
|
[Desc("Size of the area. Damage will be applied to this area.")]
|
||||||
|
public readonly int[] Size = { 0, 0 };
|
||||||
|
|
||||||
|
public override void DoImpact(WPos pos, Actor firedBy, IEnumerable<int> damageModifiers)
|
||||||
|
{
|
||||||
|
var world = firedBy.World;
|
||||||
|
var targetTile = world.Map.CellContaining(pos);
|
||||||
|
var minRange = (Size.Length > 1 && Size[1] > 0) ? Size[1] : 0;
|
||||||
|
var affectedTiles = world.Map.FindTilesInAnnulus(targetTile, minRange, Size[0]);
|
||||||
|
|
||||||
|
foreach (var t in affectedTiles)
|
||||||
|
foreach (var victim in world.ActorMap.GetUnitsAt(t))
|
||||||
|
DoImpact(victim, firedBy, damageModifiers);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
86
OpenRA.Mods.RA/Warheads/SpreadDamageWarhead.cs
Normal file
86
OpenRA.Mods.RA/Warheads/SpreadDamageWarhead.cs
Normal file
@@ -0,0 +1,86 @@
|
|||||||
|
#region Copyright & License Information
|
||||||
|
/*
|
||||||
|
* Copyright 2007-2014 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.Effects;
|
||||||
|
using OpenRA.GameRules;
|
||||||
|
using OpenRA.Traits;
|
||||||
|
|
||||||
|
namespace OpenRA.Mods.RA
|
||||||
|
{
|
||||||
|
public class SpreadDamageWarhead : DamageWarhead
|
||||||
|
{
|
||||||
|
[Desc("Range between falloff steps.")]
|
||||||
|
public readonly WRange Spread = new WRange(43);
|
||||||
|
|
||||||
|
[Desc("Ranges at which each Falloff step is defined. Overrides Spread.")]
|
||||||
|
public WRange[] Range = null;
|
||||||
|
|
||||||
|
[Desc("Damage percentage at each range step")]
|
||||||
|
public readonly int[] Falloff = { 100, 37, 14, 5, 2, 1, 0 };
|
||||||
|
|
||||||
|
public void InitializeRange()
|
||||||
|
{
|
||||||
|
if (Range != null)
|
||||||
|
{
|
||||||
|
if (Range.Length != 1 && Range.Length != Falloff.Length)
|
||||||
|
throw new InvalidOperationException("Number of range values must be 1 or equal to the number of Falloff values.");
|
||||||
|
|
||||||
|
for (var i = 0; i < Range.Length - 1; i++)
|
||||||
|
if (Range[i] > Range[i + 1])
|
||||||
|
throw new InvalidOperationException("Range values must be specified in an increasing order.");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
Range = Exts.MakeArray(Falloff.Length, i => i * Spread);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void DoImpact(WPos pos, Actor firedBy, IEnumerable<int> damageModifiers)
|
||||||
|
{
|
||||||
|
if (Range == null)
|
||||||
|
InitializeRange();
|
||||||
|
|
||||||
|
var world = firedBy.World;
|
||||||
|
var hitActors = world.FindActorsInCircle(pos, Range[Range.Length - 1]);
|
||||||
|
|
||||||
|
foreach (var victim in hitActors)
|
||||||
|
{
|
||||||
|
if (!IsValidAgainst(victim, firedBy))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
var localModifiers = damageModifiers;
|
||||||
|
var healthInfo = victim.Info.Traits.GetOrDefault<HealthInfo>();
|
||||||
|
if (healthInfo != null)
|
||||||
|
{
|
||||||
|
var distance = Math.Max(0, (victim.CenterPosition - pos).Length - healthInfo.Radius.Range);
|
||||||
|
localModifiers = localModifiers.Append(GetDamageFalloff(distance));
|
||||||
|
}
|
||||||
|
|
||||||
|
DoImpact(victim, firedBy, localModifiers);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int GetDamageFalloff(int distance)
|
||||||
|
{
|
||||||
|
var inner = Range[0].Range;
|
||||||
|
for (var i = 1; i < Range.Length; i++)
|
||||||
|
{
|
||||||
|
var outer = Range[i].Range;
|
||||||
|
if (outer > distance)
|
||||||
|
return int2.Lerp(Falloff[i - 1], Falloff[i], distance - inner, outer - inner);
|
||||||
|
|
||||||
|
inner = outer;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -29,7 +29,7 @@ namespace OpenRA.Utility
|
|||||||
static void ConvertFloatArrayToPercentArray(ref string input)
|
static void ConvertFloatArrayToPercentArray(ref string input)
|
||||||
{
|
{
|
||||||
input = string.Join(", ", input.Split(',')
|
input = string.Join(", ", input.Split(',')
|
||||||
.Select(s => ((int)(float.Parse(s) * 100)).ToString()));
|
.Select(s => ((int)Math.Round(FieldLoader.GetValue<float>("(float value)", s) * 100)).ToString()));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ConvertPxToRange(ref string input)
|
static void ConvertPxToRange(ref string input)
|
||||||
@@ -755,6 +755,13 @@ namespace OpenRA.Utility
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (engineVersion < 20140821)
|
||||||
|
{
|
||||||
|
// Converted versus definitions to integers
|
||||||
|
if (depth == 3 && parentKey == "Versus")
|
||||||
|
ConvertFloatArrayToPercentArray(ref node.Value.Value);
|
||||||
|
}
|
||||||
|
|
||||||
UpgradeWeaponRules(engineVersion, ref node.Value.Nodes, node, depth + 1);
|
UpgradeWeaponRules(engineVersion, ref node.Value.Nodes, node, depth + 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -541,7 +541,7 @@ Weapons:
|
|||||||
BoatMissile:
|
BoatMissile:
|
||||||
Warhead: SpreadDamage
|
Warhead: SpreadDamage
|
||||||
Versus:
|
Versus:
|
||||||
Heavy: 50%
|
Heavy: 50
|
||||||
Damage: 50
|
Damage: 50
|
||||||
|
|
||||||
Voices:
|
Voices:
|
||||||
|
|||||||
@@ -919,7 +919,7 @@ Weapons:
|
|||||||
Rockets:
|
Rockets:
|
||||||
Warhead: SpreadDamage
|
Warhead: SpreadDamage
|
||||||
Versus:
|
Versus:
|
||||||
None: 20%
|
None: 20
|
||||||
|
|
||||||
Voices:
|
Voices:
|
||||||
|
|
||||||
|
|||||||
@@ -26,13 +26,14 @@ HeliExplode:
|
|||||||
UnitExplode:
|
UnitExplode:
|
||||||
Warhead@1Dam: SpreadDamage
|
Warhead@1Dam: SpreadDamage
|
||||||
Spread: 426
|
Spread: 426
|
||||||
Damage: 500
|
Damage: 50
|
||||||
|
Falloff: 1000, 368, 135, 50, 18, 7, 0
|
||||||
InfDeath: 4
|
InfDeath: 4
|
||||||
Versus:
|
Versus:
|
||||||
None: 90%
|
None: 90
|
||||||
Wood: 75%
|
Wood: 75
|
||||||
Light: 60%
|
Light: 60
|
||||||
Heavy: 25%
|
Heavy: 25
|
||||||
Warhead@2Eff: CreateEffect
|
Warhead@2Eff: CreateEffect
|
||||||
Explosion: poof
|
Explosion: poof
|
||||||
ImpactSound: xplobig6.aud
|
ImpactSound: xplobig6.aud
|
||||||
@@ -43,10 +44,10 @@ UnitExplodeSmall:
|
|||||||
Damage: 40
|
Damage: 40
|
||||||
InfDeath: 4
|
InfDeath: 4
|
||||||
Versus:
|
Versus:
|
||||||
None: 90%
|
None: 90
|
||||||
Wood: 75%
|
Wood: 75
|
||||||
Light: 60%
|
Light: 60
|
||||||
Heavy: 25%
|
Heavy: 25
|
||||||
Warhead@2Eff: CreateEffect
|
Warhead@2Eff: CreateEffect
|
||||||
Explosion: big_frag
|
Explosion: big_frag
|
||||||
ImpactSound: xplobig4.aud
|
ImpactSound: xplobig4.aud
|
||||||
@@ -57,10 +58,10 @@ GrenadierExplode:
|
|||||||
Damage: 10
|
Damage: 10
|
||||||
InfDeath: 3
|
InfDeath: 3
|
||||||
Versus:
|
Versus:
|
||||||
None: 90%
|
None: 90
|
||||||
Wood: 75%
|
Wood: 75
|
||||||
Light: 60%
|
Light: 60
|
||||||
Heavy: 25%
|
Heavy: 25
|
||||||
Warhead@2Eff: CreateEffect
|
Warhead@2Eff: CreateEffect
|
||||||
Explosion: poof
|
Explosion: poof
|
||||||
ImpactSound: xplosml2.aud
|
ImpactSound: xplosml2.aud
|
||||||
@@ -70,28 +71,30 @@ Atomic:
|
|||||||
Report: nukemisl.aud
|
Report: nukemisl.aud
|
||||||
Warhead@1Dam_impact: SpreadDamage
|
Warhead@1Dam_impact: SpreadDamage
|
||||||
Spread: 1c0
|
Spread: 1c0
|
||||||
Damage: 1500
|
Damage: 150
|
||||||
|
Falloff: 1000, 368, 135, 50, 18, 7, 0
|
||||||
InfDeath: 5
|
InfDeath: 5
|
||||||
ValidTargets: Ground, Air
|
ValidTargets: Ground, Air
|
||||||
Versus:
|
Versus:
|
||||||
None: 100%
|
None: 100
|
||||||
Wood: 100%
|
Wood: 100
|
||||||
Light: 60%
|
Light: 60
|
||||||
Heavy: 50%
|
Heavy: 50
|
||||||
Warhead@2Eff_impact: CreateEffect
|
Warhead@2Eff_impact: CreateEffect
|
||||||
Explosion: 6
|
Explosion: 6
|
||||||
ImpactSound: nukexplo.aud
|
ImpactSound: nukexplo.aud
|
||||||
Warhead@3Dam_areanukea: SpreadDamage
|
Warhead@3Dam_areanukea: SpreadDamage
|
||||||
Spread: 2c512
|
Spread: 2c512
|
||||||
Damage: 1000
|
Damage: 100
|
||||||
|
Falloff: 1000, 368, 135, 50, 18, 7, 0
|
||||||
InfDeath: 5
|
InfDeath: 5
|
||||||
Delay: 3
|
Delay: 3
|
||||||
ValidTargets: Ground, Air
|
ValidTargets: Ground, Air
|
||||||
Versus:
|
Versus:
|
||||||
None: 100%
|
None: 100
|
||||||
Wood: 100%
|
Wood: 100
|
||||||
Light: 60%
|
Light: 60
|
||||||
Heavy: 50%
|
Heavy: 50
|
||||||
Warhead@4Res_areanukea: DestroyResource
|
Warhead@4Res_areanukea: DestroyResource
|
||||||
Size: 3
|
Size: 3
|
||||||
Delay: 3
|
Delay: 3
|
||||||
@@ -104,15 +107,16 @@ Atomic:
|
|||||||
Delay: 3
|
Delay: 3
|
||||||
Warhead@7Dam_areanukeb: SpreadDamage
|
Warhead@7Dam_areanukeb: SpreadDamage
|
||||||
Spread: 3c768
|
Spread: 3c768
|
||||||
Damage: 500
|
Damage: 50
|
||||||
|
Falloff: 1000, 368, 135, 50, 18, 7, 0
|
||||||
InfDeath: 5
|
InfDeath: 5
|
||||||
Delay: 6
|
Delay: 6
|
||||||
ValidTargets: Ground, Air
|
ValidTargets: Ground, Air
|
||||||
Versus:
|
Versus:
|
||||||
None: 100%
|
None: 100
|
||||||
Wood: 100%
|
Wood: 100
|
||||||
Light: 60%
|
Light: 60
|
||||||
Heavy: 50%
|
Heavy: 50
|
||||||
Warhead@8Res_areanukeb: DestroyResource
|
Warhead@8Res_areanukeb: DestroyResource
|
||||||
Size: 4
|
Size: 4
|
||||||
Delay: 6
|
Delay: 6
|
||||||
@@ -122,15 +126,16 @@ Atomic:
|
|||||||
Delay: 6
|
Delay: 6
|
||||||
Warhead@10Dam_areanukec: SpreadDamage
|
Warhead@10Dam_areanukec: SpreadDamage
|
||||||
Spread: 5c0
|
Spread: 5c0
|
||||||
Damage: 200
|
Damage: 20
|
||||||
|
Falloff: 1000, 368, 135, 50, 18, 7, 0
|
||||||
InfDeath: 5
|
InfDeath: 5
|
||||||
Delay: 9
|
Delay: 9
|
||||||
ValidTargets: Ground, Air
|
ValidTargets: Ground, Air
|
||||||
Versus:
|
Versus:
|
||||||
None: 100%
|
None: 100
|
||||||
Wood: 100%
|
Wood: 100
|
||||||
Light: 60%
|
Light: 60
|
||||||
Heavy: 50%
|
Heavy: 50
|
||||||
Warhead@11Res_areanukec: DestroyResource
|
Warhead@11Res_areanukec: DestroyResource
|
||||||
Size: 5
|
Size: 5
|
||||||
Delay: 9
|
Delay: 9
|
||||||
@@ -143,7 +148,8 @@ IonCannon:
|
|||||||
ValidTargets: Ground, Air
|
ValidTargets: Ground, Air
|
||||||
Warhead@1Dam_impact: SpreadDamage
|
Warhead@1Dam_impact: SpreadDamage
|
||||||
Spread: 1c0
|
Spread: 1c0
|
||||||
Damage: 1000
|
Damage: 100
|
||||||
|
Falloff: 1000, 368, 135, 50, 18, 7, 0
|
||||||
InfDeath: 5
|
InfDeath: 5
|
||||||
ValidTargets: Ground, Air
|
ValidTargets: Ground, Air
|
||||||
Warhead@2Res_impact: DestroyResource
|
Warhead@2Res_impact: DestroyResource
|
||||||
@@ -188,10 +194,10 @@ HighV:
|
|||||||
Damage: 30
|
Damage: 30
|
||||||
InfDeath: 2
|
InfDeath: 2
|
||||||
Versus:
|
Versus:
|
||||||
None: 100%
|
None: 100
|
||||||
Wood: 50%
|
Wood: 50
|
||||||
Light: 70%
|
Light: 70
|
||||||
Heavy: 35%
|
Heavy: 35
|
||||||
Warhead@2Eff: CreateEffect
|
Warhead@2Eff: CreateEffect
|
||||||
Explosion: piffs
|
Explosion: piffs
|
||||||
|
|
||||||
@@ -211,10 +217,10 @@ HeliAGGun:
|
|||||||
InfDeath: 2
|
InfDeath: 2
|
||||||
ValidTargets: Ground
|
ValidTargets: Ground
|
||||||
Versus:
|
Versus:
|
||||||
None: 100%
|
None: 100
|
||||||
Wood: 50%
|
Wood: 50
|
||||||
Light: 75%
|
Light: 75
|
||||||
Heavy: 25%
|
Heavy: 25
|
||||||
Warhead@2Eff: CreateEffect
|
Warhead@2Eff: CreateEffect
|
||||||
Explosion: piffs
|
Explosion: piffs
|
||||||
|
|
||||||
@@ -234,10 +240,10 @@ HeliAAGun:
|
|||||||
InfDeath: 2
|
InfDeath: 2
|
||||||
ValidTargets: Air
|
ValidTargets: Air
|
||||||
Versus:
|
Versus:
|
||||||
None: 100%
|
None: 100
|
||||||
Wood: 50%
|
Wood: 50
|
||||||
Light: 50%
|
Light: 50
|
||||||
Heavy: 25%
|
Heavy: 25
|
||||||
Warhead@2Eff: CreateEffect
|
Warhead@2Eff: CreateEffect
|
||||||
Explosion: piffs
|
Explosion: piffs
|
||||||
|
|
||||||
@@ -254,10 +260,10 @@ Pistol:
|
|||||||
InfDeath: 2
|
InfDeath: 2
|
||||||
InvalidTargets: Wall
|
InvalidTargets: Wall
|
||||||
Versus:
|
Versus:
|
||||||
None: 100%
|
None: 100
|
||||||
Wood: 50%
|
Wood: 50
|
||||||
Light: 50%
|
Light: 50
|
||||||
Heavy: 25%
|
Heavy: 25
|
||||||
Warhead@2Eff: CreateEffect
|
Warhead@2Eff: CreateEffect
|
||||||
Explosion: piff
|
Explosion: piff
|
||||||
|
|
||||||
@@ -274,10 +280,10 @@ M16:
|
|||||||
InfDeath: 2
|
InfDeath: 2
|
||||||
InvalidTargets: Wall
|
InvalidTargets: Wall
|
||||||
Versus:
|
Versus:
|
||||||
None: 100%
|
None: 100
|
||||||
Wood: 25%
|
Wood: 25
|
||||||
Light: 30%
|
Light: 30
|
||||||
Heavy: 10%
|
Heavy: 10
|
||||||
Warhead@2Eff: CreateEffect
|
Warhead@2Eff: CreateEffect
|
||||||
Explosion: piff
|
Explosion: piff
|
||||||
|
|
||||||
@@ -302,11 +308,11 @@ Rockets:
|
|||||||
InfDeath: 4
|
InfDeath: 4
|
||||||
ValidTargets: Ground, Air
|
ValidTargets: Ground, Air
|
||||||
Versus:
|
Versus:
|
||||||
None: 50%
|
None: 50
|
||||||
Wood: 85%
|
Wood: 85
|
||||||
Light: 100%
|
Light: 100
|
||||||
Heavy: 100%
|
Heavy: 100
|
||||||
Concrete: 25%
|
Concrete: 25
|
||||||
Warhead@2Smu: LeaveSmudge
|
Warhead@2Smu: LeaveSmudge
|
||||||
SmudgeType: Crater
|
SmudgeType: Crater
|
||||||
Warhead@3Eff: CreateEffect
|
Warhead@3Eff: CreateEffect
|
||||||
@@ -336,11 +342,11 @@ BikeRockets:
|
|||||||
InfDeath: 4
|
InfDeath: 4
|
||||||
ValidTargets: Ground, Air
|
ValidTargets: Ground, Air
|
||||||
Versus:
|
Versus:
|
||||||
None: 25%
|
None: 25
|
||||||
Wood: 75%
|
Wood: 75
|
||||||
Light: 100%
|
Light: 100
|
||||||
Heavy: 100%
|
Heavy: 100
|
||||||
Concrete: 50%
|
Concrete: 50
|
||||||
Warhead@2Smu: LeaveSmudge
|
Warhead@2Smu: LeaveSmudge
|
||||||
SmudgeType: Crater
|
SmudgeType: Crater
|
||||||
Warhead@3Eff: CreateEffect
|
Warhead@3Eff: CreateEffect
|
||||||
@@ -370,10 +376,10 @@ OrcaAGMissiles:
|
|||||||
InfDeath: 4
|
InfDeath: 4
|
||||||
ValidTargets: Ground
|
ValidTargets: Ground
|
||||||
Versus:
|
Versus:
|
||||||
None: 50%
|
None: 50
|
||||||
Wood: 100%
|
Wood: 100
|
||||||
Light: 100%
|
Light: 100
|
||||||
Heavy: 75%
|
Heavy: 75
|
||||||
Warhead@2Smu: LeaveSmudge
|
Warhead@2Smu: LeaveSmudge
|
||||||
SmudgeType: Crater
|
SmudgeType: Crater
|
||||||
Warhead@3Eff: CreateEffect
|
Warhead@3Eff: CreateEffect
|
||||||
@@ -403,8 +409,8 @@ OrcaAAMissiles:
|
|||||||
InfDeath: 4
|
InfDeath: 4
|
||||||
ValidTargets: Air
|
ValidTargets: Air
|
||||||
Versus:
|
Versus:
|
||||||
Light: 75%
|
Light: 75
|
||||||
Heavy: 50%
|
Heavy: 50
|
||||||
Warhead@2Smu: LeaveSmudge
|
Warhead@2Smu: LeaveSmudge
|
||||||
SmudgeType: Crater
|
SmudgeType: Crater
|
||||||
Warhead@3Eff: CreateEffect
|
Warhead@3Eff: CreateEffect
|
||||||
@@ -424,10 +430,10 @@ Flamethrower:
|
|||||||
InfDeath: 5
|
InfDeath: 5
|
||||||
InvalidTargets: Wall
|
InvalidTargets: Wall
|
||||||
Versus:
|
Versus:
|
||||||
None: 100%
|
None: 100
|
||||||
Wood: 100%
|
Wood: 100
|
||||||
Light: 100%
|
Light: 100
|
||||||
Heavy: 20%
|
Heavy: 20
|
||||||
Warhead@2Smu: LeaveSmudge
|
Warhead@2Smu: LeaveSmudge
|
||||||
SmudgeType: Scorch
|
SmudgeType: Scorch
|
||||||
Warhead@3Eff: CreateEffect
|
Warhead@3Eff: CreateEffect
|
||||||
@@ -449,10 +455,10 @@ BigFlamer:
|
|||||||
InfDeath: 5
|
InfDeath: 5
|
||||||
InvalidTargets: Wall
|
InvalidTargets: Wall
|
||||||
Versus:
|
Versus:
|
||||||
None: 100%
|
None: 100
|
||||||
Wood: 100%
|
Wood: 100
|
||||||
Light: 67%
|
Light: 67
|
||||||
Heavy: 25%
|
Heavy: 25
|
||||||
Warhead@2Smu: LeaveSmudge
|
Warhead@2Smu: LeaveSmudge
|
||||||
SmudgeType: Scorch
|
SmudgeType: Scorch
|
||||||
Warhead@3Eff: CreateEffect
|
Warhead@3Eff: CreateEffect
|
||||||
@@ -470,10 +476,10 @@ Chemspray:
|
|||||||
Damage: 80
|
Damage: 80
|
||||||
InfDeath: 6
|
InfDeath: 6
|
||||||
Versus:
|
Versus:
|
||||||
None: 100%
|
None: 100
|
||||||
Wood: 35%
|
Wood: 35
|
||||||
Light: 75%
|
Light: 75
|
||||||
Heavy: 50%
|
Heavy: 50
|
||||||
Warhead@2Smu: LeaveSmudge
|
Warhead@2Smu: LeaveSmudge
|
||||||
SmudgeType: Scorch
|
SmudgeType: Scorch
|
||||||
Warhead@3Eff: CreateEffect
|
Warhead@3Eff: CreateEffect
|
||||||
@@ -495,10 +501,10 @@ Grenade:
|
|||||||
Damage: 50
|
Damage: 50
|
||||||
InfDeath: 3
|
InfDeath: 3
|
||||||
Versus:
|
Versus:
|
||||||
None: 100%
|
None: 100
|
||||||
Wood: 50%
|
Wood: 50
|
||||||
Light: 75%
|
Light: 75
|
||||||
Heavy: 35%
|
Heavy: 35
|
||||||
Warhead@2Smu: LeaveSmudge
|
Warhead@2Smu: LeaveSmudge
|
||||||
SmudgeType: Crater
|
SmudgeType: Crater
|
||||||
Warhead@3Eff: CreateEffect
|
Warhead@3Eff: CreateEffect
|
||||||
@@ -517,11 +523,11 @@ Grenade:
|
|||||||
Damage: 25
|
Damage: 25
|
||||||
InfDeath: 4
|
InfDeath: 4
|
||||||
Versus:
|
Versus:
|
||||||
None: 25%
|
None: 25
|
||||||
Wood: 75%
|
Wood: 75
|
||||||
Light: 100%
|
Light: 100
|
||||||
Heavy: 100%
|
Heavy: 100
|
||||||
Concrete: 50%
|
Concrete: 50
|
||||||
Warhead@2Smu: LeaveSmudge
|
Warhead@2Smu: LeaveSmudge
|
||||||
SmudgeType: Crater
|
SmudgeType: Crater
|
||||||
Warhead@3Eff: CreateEffect
|
Warhead@3Eff: CreateEffect
|
||||||
@@ -540,10 +546,10 @@ Grenade:
|
|||||||
Damage: 30
|
Damage: 30
|
||||||
InfDeath: 4
|
InfDeath: 4
|
||||||
Versus:
|
Versus:
|
||||||
None: 30%
|
None: 30
|
||||||
Wood: 75%
|
Wood: 75
|
||||||
Light: 75%
|
Light: 75
|
||||||
Heavy: 100%
|
Heavy: 100
|
||||||
Warhead@2Smu: LeaveSmudge
|
Warhead@2Smu: LeaveSmudge
|
||||||
SmudgeType: Crater
|
SmudgeType: Crater
|
||||||
Warhead@3Eff: CreateEffect
|
Warhead@3Eff: CreateEffect
|
||||||
@@ -562,11 +568,11 @@ Grenade:
|
|||||||
Damage: 40
|
Damage: 40
|
||||||
InfDeath: 4
|
InfDeath: 4
|
||||||
Versus:
|
Versus:
|
||||||
None: 25%
|
None: 25
|
||||||
Wood: 100%
|
Wood: 100
|
||||||
Light: 100%
|
Light: 100
|
||||||
Heavy: 100%
|
Heavy: 100
|
||||||
Concrete: 50%
|
Concrete: 50
|
||||||
Warhead@2Smu: LeaveSmudge
|
Warhead@2Smu: LeaveSmudge
|
||||||
SmudgeType: Crater
|
SmudgeType: Crater
|
||||||
Warhead@3Eff: CreateEffect
|
Warhead@3Eff: CreateEffect
|
||||||
@@ -587,11 +593,11 @@ Grenade:
|
|||||||
Damage: 40
|
Damage: 40
|
||||||
InfDeath: 4
|
InfDeath: 4
|
||||||
Versus:
|
Versus:
|
||||||
None: 25%
|
None: 25
|
||||||
Wood: 100%
|
Wood: 100
|
||||||
Light: 100%
|
Light: 100
|
||||||
Heavy: 100%
|
Heavy: 100
|
||||||
Concrete: 100%
|
Concrete: 100
|
||||||
Warhead@2Smu: LeaveSmudge
|
Warhead@2Smu: LeaveSmudge
|
||||||
SmudgeType: Crater
|
SmudgeType: Crater
|
||||||
Warhead@3Eff: CreateEffect
|
Warhead@3Eff: CreateEffect
|
||||||
@@ -610,10 +616,10 @@ TurretGun:
|
|||||||
Damage: 40
|
Damage: 40
|
||||||
InfDeath: 4
|
InfDeath: 4
|
||||||
Versus:
|
Versus:
|
||||||
None: 20%
|
None: 20
|
||||||
Wood: 25%
|
Wood: 25
|
||||||
Light: 100%
|
Light: 100
|
||||||
Heavy: 100%
|
Heavy: 100
|
||||||
Warhead@2Smu: LeaveSmudge
|
Warhead@2Smu: LeaveSmudge
|
||||||
SmudgeType: Crater
|
SmudgeType: Crater
|
||||||
Warhead@3Eff: CreateEffect
|
Warhead@3Eff: CreateEffect
|
||||||
@@ -643,10 +649,10 @@ MammothMissiles:
|
|||||||
InfDeath: 4
|
InfDeath: 4
|
||||||
ValidTargets: Ground, Air
|
ValidTargets: Ground, Air
|
||||||
Versus:
|
Versus:
|
||||||
None: 50%
|
None: 50
|
||||||
Wood: 75%
|
Wood: 75
|
||||||
Light: 100%
|
Light: 100
|
||||||
Heavy: 50%
|
Heavy: 50
|
||||||
Warhead@2Smu: LeaveSmudge
|
Warhead@2Smu: LeaveSmudge
|
||||||
SmudgeType: Crater
|
SmudgeType: Crater
|
||||||
Warhead@3Eff: CreateEffect
|
Warhead@3Eff: CreateEffect
|
||||||
@@ -683,10 +689,10 @@ MammothMissiles:
|
|||||||
InfDeath: 4
|
InfDeath: 4
|
||||||
ValidTargets: Ground
|
ValidTargets: Ground
|
||||||
Versus:
|
Versus:
|
||||||
None: 35%
|
None: 35
|
||||||
Wood: 60%
|
Wood: 60
|
||||||
Light: 100%
|
Light: 100
|
||||||
Heavy: 50%
|
Heavy: 50
|
||||||
Warhead@2Smu: LeaveSmudge
|
Warhead@2Smu: LeaveSmudge
|
||||||
SmudgeType: Crater
|
SmudgeType: Crater
|
||||||
Warhead@3Eff: CreateEffect
|
Warhead@3Eff: CreateEffect
|
||||||
@@ -716,10 +722,10 @@ MammothMissiles:
|
|||||||
InfDeath: 4
|
InfDeath: 4
|
||||||
ValidTargets: Ground, Air
|
ValidTargets: Ground, Air
|
||||||
Versus:
|
Versus:
|
||||||
None: 25%
|
None: 25
|
||||||
Wood: 75%
|
Wood: 75
|
||||||
Light: 100%
|
Light: 100
|
||||||
Heavy: 90%
|
Heavy: 90
|
||||||
Warhead@2Smu: LeaveSmudge
|
Warhead@2Smu: LeaveSmudge
|
||||||
SmudgeType: Crater
|
SmudgeType: Crater
|
||||||
Warhead@3Eff: CreateEffect
|
Warhead@3Eff: CreateEffect
|
||||||
@@ -743,10 +749,10 @@ ArtilleryShell:
|
|||||||
Damage: 150
|
Damage: 150
|
||||||
InfDeath: 3
|
InfDeath: 3
|
||||||
Versus:
|
Versus:
|
||||||
None: 100%
|
None: 100
|
||||||
Wood: 80%
|
Wood: 80
|
||||||
Light: 75%
|
Light: 75
|
||||||
Heavy: 50%
|
Heavy: 50
|
||||||
Warhead@2Smu: LeaveSmudge
|
Warhead@2Smu: LeaveSmudge
|
||||||
SmudgeType: Crater
|
SmudgeType: Crater
|
||||||
Warhead@3Eff: CreateEffect
|
Warhead@3Eff: CreateEffect
|
||||||
@@ -767,11 +773,11 @@ MachineGun:
|
|||||||
InfDeath: 2
|
InfDeath: 2
|
||||||
InvalidTargets: Wall
|
InvalidTargets: Wall
|
||||||
Versus:
|
Versus:
|
||||||
None: 100%
|
None: 100
|
||||||
Wood: 20%
|
Wood: 20
|
||||||
Light: 50%
|
Light: 50
|
||||||
Heavy: 20%
|
Heavy: 20
|
||||||
Concrete: 10%
|
Concrete: 10
|
||||||
Warhead@2Eff: CreateEffect
|
Warhead@2Eff: CreateEffect
|
||||||
Explosion: piffs
|
Explosion: piffs
|
||||||
|
|
||||||
@@ -796,10 +802,10 @@ BoatMissile:
|
|||||||
Damage: 60
|
Damage: 60
|
||||||
InfDeath: 3
|
InfDeath: 3
|
||||||
Versus:
|
Versus:
|
||||||
None: 90%
|
None: 90
|
||||||
Wood: 75%
|
Wood: 75
|
||||||
Light: 60%
|
Light: 60
|
||||||
Heavy: 25%
|
Heavy: 25
|
||||||
Warhead@2Smu: LeaveSmudge
|
Warhead@2Smu: LeaveSmudge
|
||||||
SmudgeType: Crater
|
SmudgeType: Crater
|
||||||
Warhead@3Eff: CreateEffect
|
Warhead@3Eff: CreateEffect
|
||||||
@@ -832,10 +838,10 @@ TowerMissle:
|
|||||||
InfDeath: 3
|
InfDeath: 3
|
||||||
ValidTargets: Ground
|
ValidTargets: Ground
|
||||||
Versus:
|
Versus:
|
||||||
None: 50%
|
None: 50
|
||||||
Wood: 25%
|
Wood: 25
|
||||||
Light: 100%
|
Light: 100
|
||||||
Heavy: 100%
|
Heavy: 100
|
||||||
Warhead@2Smu: LeaveSmudge
|
Warhead@2Smu: LeaveSmudge
|
||||||
SmudgeType: Crater
|
SmudgeType: Crater
|
||||||
Warhead@3Eff: CreateEffect
|
Warhead@3Eff: CreateEffect
|
||||||
@@ -855,10 +861,10 @@ Vulcan:
|
|||||||
InfDeath: 2
|
InfDeath: 2
|
||||||
ValidTargets: Ground, Water
|
ValidTargets: Ground, Water
|
||||||
Versus:
|
Versus:
|
||||||
None: 100%
|
None: 100
|
||||||
Wood: 25%
|
Wood: 25
|
||||||
Light: 100%
|
Light: 100
|
||||||
Heavy: 35%
|
Heavy: 35
|
||||||
Warhead@2Eff: CreateEffect
|
Warhead@2Eff: CreateEffect
|
||||||
Explosion: piffs
|
Explosion: piffs
|
||||||
|
|
||||||
@@ -872,14 +878,15 @@ Napalm:
|
|||||||
Image: BOMBLET
|
Image: BOMBLET
|
||||||
Warhead@1Dam: SpreadDamage
|
Warhead@1Dam: SpreadDamage
|
||||||
Spread: 341
|
Spread: 341
|
||||||
Damage: 300
|
Damage: 30
|
||||||
|
Falloff: 1000, 368, 135, 50, 18, 7, 0
|
||||||
InfDeath: 5
|
InfDeath: 5
|
||||||
ValidTargets: Ground, Water
|
ValidTargets: Ground, Water
|
||||||
Versus:
|
Versus:
|
||||||
None: 100%
|
None: 100
|
||||||
Wood: 100%
|
Wood: 100
|
||||||
Light: 100%
|
Light: 100
|
||||||
Heavy: 80%
|
Heavy: 80
|
||||||
Warhead@2Smu: LeaveSmudge
|
Warhead@2Smu: LeaveSmudge
|
||||||
SmudgeType: Scorch
|
SmudgeType: Scorch
|
||||||
Warhead@3Eff: CreateEffect
|
Warhead@3Eff: CreateEffect
|
||||||
@@ -889,13 +896,14 @@ Napalm:
|
|||||||
Napalm.Crate:
|
Napalm.Crate:
|
||||||
Warhead@1Dam: SpreadDamage
|
Warhead@1Dam: SpreadDamage
|
||||||
Spread: 170
|
Spread: 170
|
||||||
Damage: 500
|
Damage: 50
|
||||||
|
Falloff: 1000, 368, 135, 50, 18, 7, 0
|
||||||
InfDeath: 5
|
InfDeath: 5
|
||||||
Versus:
|
Versus:
|
||||||
None: 90%
|
None: 90
|
||||||
Wood: 100%
|
Wood: 100
|
||||||
Light: 60%
|
Light: 60
|
||||||
Heavy: 25%
|
Heavy: 25
|
||||||
Warhead@2Smu: LeaveSmudge
|
Warhead@2Smu: LeaveSmudge
|
||||||
SmudgeType: Scorch
|
SmudgeType: Scorch
|
||||||
Warhead@3Eff: CreateEffect
|
Warhead@3Eff: CreateEffect
|
||||||
@@ -915,7 +923,7 @@ Laser:
|
|||||||
Damage: 360
|
Damage: 360
|
||||||
InfDeath: 5
|
InfDeath: 5
|
||||||
Versus:
|
Versus:
|
||||||
Wood: 50%
|
Wood: 50
|
||||||
Warhead@2Smu: LeaveSmudge
|
Warhead@2Smu: LeaveSmudge
|
||||||
SmudgeType: Scorch
|
SmudgeType: Scorch
|
||||||
|
|
||||||
@@ -937,10 +945,10 @@ SAMMissile:
|
|||||||
Spread: 682
|
Spread: 682
|
||||||
ValidTargets: Air
|
ValidTargets: Air
|
||||||
Versus:
|
Versus:
|
||||||
None: 100%
|
None: 100
|
||||||
Wood: 100%
|
Wood: 100
|
||||||
Light: 100%
|
Light: 100
|
||||||
Heavy: 75%
|
Heavy: 75
|
||||||
InfDeath: 4
|
InfDeath: 4
|
||||||
Damage: 30
|
Damage: 30
|
||||||
Warhead@2Smu: LeaveSmudge
|
Warhead@2Smu: LeaveSmudge
|
||||||
@@ -968,10 +976,10 @@ HonestJohn:
|
|||||||
Damage: 100
|
Damage: 100
|
||||||
InfDeath: 3
|
InfDeath: 3
|
||||||
Versus:
|
Versus:
|
||||||
None: 90%
|
None: 90
|
||||||
Wood: 75%
|
Wood: 75
|
||||||
Light: 60%
|
Light: 60
|
||||||
Heavy: 25%
|
Heavy: 25
|
||||||
Warhead@2Smu: LeaveSmudge
|
Warhead@2Smu: LeaveSmudge
|
||||||
SmudgeType: Crater
|
SmudgeType: Crater
|
||||||
Warhead@3Eff: CreateEffect
|
Warhead@3Eff: CreateEffect
|
||||||
@@ -992,10 +1000,10 @@ TiberiumExplosion:
|
|||||||
Damage: 10
|
Damage: 10
|
||||||
InfDeath: 3
|
InfDeath: 3
|
||||||
Versus:
|
Versus:
|
||||||
None: 90%
|
None: 90
|
||||||
Wood: 75%
|
Wood: 75
|
||||||
Light: 60%
|
Light: 60
|
||||||
Heavy: 25%
|
Heavy: 25
|
||||||
Warhead@2Res: CreateResource
|
Warhead@2Res: CreateResource
|
||||||
AddsResourceType: Tiberium
|
AddsResourceType: Tiberium
|
||||||
Size: 1,1
|
Size: 1,1
|
||||||
@@ -1022,10 +1030,10 @@ APCGun:
|
|||||||
Damage: 15
|
Damage: 15
|
||||||
ValidTargets: Ground
|
ValidTargets: Ground
|
||||||
Versus:
|
Versus:
|
||||||
None: 50%
|
None: 50
|
||||||
Wood: 50%
|
Wood: 50
|
||||||
Light: 100%
|
Light: 100
|
||||||
Heavy: 50%
|
Heavy: 50
|
||||||
Warhead@2Eff: CreateEffect
|
Warhead@2Eff: CreateEffect
|
||||||
Explosion: small_poof
|
Explosion: small_poof
|
||||||
|
|
||||||
@@ -1042,7 +1050,7 @@ APCGun.AA:
|
|||||||
Damage: 25
|
Damage: 25
|
||||||
ValidTargets: Air
|
ValidTargets: Air
|
||||||
Versus:
|
Versus:
|
||||||
Heavy: 50%
|
Heavy: 50
|
||||||
Warhead@2Eff: CreateEffect
|
Warhead@2Eff: CreateEffect
|
||||||
Explosion: small_frag
|
Explosion: small_frag
|
||||||
|
|
||||||
@@ -1065,10 +1073,10 @@ Patriot:
|
|||||||
Spread: 682
|
Spread: 682
|
||||||
ValidTargets: Air
|
ValidTargets: Air
|
||||||
Versus:
|
Versus:
|
||||||
None: 100%
|
None: 100
|
||||||
Wood: 100%
|
Wood: 100
|
||||||
Light: 100%
|
Light: 100
|
||||||
Heavy: 75%
|
Heavy: 75
|
||||||
InfDeath: 4
|
InfDeath: 4
|
||||||
Damage: 32
|
Damage: 32
|
||||||
Warhead@2Smu: LeaveSmudge
|
Warhead@2Smu: LeaveSmudge
|
||||||
@@ -1087,11 +1095,11 @@ Tail:
|
|||||||
Damage: 180
|
Damage: 180
|
||||||
InfDeath: 1
|
InfDeath: 1
|
||||||
Versus:
|
Versus:
|
||||||
None: 90%
|
None: 90
|
||||||
Wood: 10%
|
Wood: 10
|
||||||
Light: 30%
|
Light: 30
|
||||||
Heavy: 10%
|
Heavy: 10
|
||||||
Concrete: 10%
|
Concrete: 10
|
||||||
|
|
||||||
Horn:
|
Horn:
|
||||||
ReloadDelay: 20
|
ReloadDelay: 20
|
||||||
@@ -1103,11 +1111,11 @@ Horn:
|
|||||||
Damage: 120
|
Damage: 120
|
||||||
InfDeath: 1
|
InfDeath: 1
|
||||||
Versus:
|
Versus:
|
||||||
None: 90%
|
None: 90
|
||||||
Wood: 10%
|
Wood: 10
|
||||||
Light: 30%
|
Light: 30
|
||||||
Heavy: 10%
|
Heavy: 10
|
||||||
Concrete: 10%
|
Concrete: 10
|
||||||
|
|
||||||
Teeth:
|
Teeth:
|
||||||
ReloadDelay: 30
|
ReloadDelay: 30
|
||||||
@@ -1119,11 +1127,11 @@ Teeth:
|
|||||||
Damage: 180
|
Damage: 180
|
||||||
InfDeath: 1
|
InfDeath: 1
|
||||||
Versus:
|
Versus:
|
||||||
None: 90%
|
None: 90
|
||||||
Wood: 10%
|
Wood: 10
|
||||||
Light: 30%
|
Light: 30
|
||||||
Heavy: 10%
|
Heavy: 10
|
||||||
Concrete: 10%
|
Concrete: 10
|
||||||
|
|
||||||
Claw:
|
Claw:
|
||||||
ReloadDelay: 10
|
ReloadDelay: 10
|
||||||
@@ -1135,11 +1143,11 @@ Claw:
|
|||||||
Damage: 60
|
Damage: 60
|
||||||
InfDeath: 1
|
InfDeath: 1
|
||||||
Versus:
|
Versus:
|
||||||
None: 90%
|
None: 90
|
||||||
Wood: 10%
|
Wood: 10
|
||||||
Light: 30%
|
Light: 30
|
||||||
Heavy: 10%
|
Heavy: 10
|
||||||
Concrete: 10%
|
Concrete: 10
|
||||||
|
|
||||||
Demolish:
|
Demolish:
|
||||||
Warhead@1Dam: SpreadDamage
|
Warhead@1Dam: SpreadDamage
|
||||||
|
|||||||
@@ -13,10 +13,10 @@ LMG:
|
|||||||
Damage: 15
|
Damage: 15
|
||||||
InfDeath: 2
|
InfDeath: 2
|
||||||
Versus:
|
Versus:
|
||||||
Wood: 25%
|
Wood: 25
|
||||||
Light: 40%
|
Light: 40
|
||||||
Heavy: 10%
|
Heavy: 10
|
||||||
Concrete: 20%
|
Concrete: 20
|
||||||
Warhead@2Eff: CreateEffect
|
Warhead@2Eff: CreateEffect
|
||||||
Explosion: piffs
|
Explosion: piffs
|
||||||
|
|
||||||
@@ -39,11 +39,11 @@ Bazooka:
|
|||||||
InfDeath: 4
|
InfDeath: 4
|
||||||
ValidTargets: Ground
|
ValidTargets: Ground
|
||||||
Versus:
|
Versus:
|
||||||
None: 10%
|
None: 10
|
||||||
Wood: 75%
|
Wood: 75
|
||||||
Light: 60%
|
Light: 60
|
||||||
Heavy: 90%
|
Heavy: 90
|
||||||
Concrete: 40%
|
Concrete: 40
|
||||||
Warhead@2Smu: LeaveSmudge
|
Warhead@2Smu: LeaveSmudge
|
||||||
SmudgeType: SandCrater, RockCrater
|
SmudgeType: SandCrater, RockCrater
|
||||||
Warhead@3Eff: CreateEffect
|
Warhead@3Eff: CreateEffect
|
||||||
@@ -65,11 +65,11 @@ Sniper:
|
|||||||
Damage: 60
|
Damage: 60
|
||||||
InfDeath: 2
|
InfDeath: 2
|
||||||
Versus:
|
Versus:
|
||||||
None: 100%
|
None: 100
|
||||||
Wood: 0%
|
Wood: 0
|
||||||
Light: 1%
|
Light: 1
|
||||||
Heavy: 0%
|
Heavy: 0
|
||||||
Concrete: 0%
|
Concrete: 0
|
||||||
|
|
||||||
Vulcan:
|
Vulcan:
|
||||||
ReloadDelay: 30
|
ReloadDelay: 30
|
||||||
@@ -88,10 +88,10 @@ Vulcan:
|
|||||||
InfDeath: 2
|
InfDeath: 2
|
||||||
ValidTargets: Ground, Air
|
ValidTargets: Ground, Air
|
||||||
Versus:
|
Versus:
|
||||||
Wood: 0%
|
Wood: 0
|
||||||
Light: 60%
|
Light: 60
|
||||||
Heavy: 10%
|
Heavy: 10
|
||||||
Concrete: 0%
|
Concrete: 0
|
||||||
Warhead@2Eff: CreateEffect
|
Warhead@2Eff: CreateEffect
|
||||||
Explosion: piffs
|
Explosion: piffs
|
||||||
|
|
||||||
@@ -114,11 +114,11 @@ Slung:
|
|||||||
InfDeath: 4
|
InfDeath: 4
|
||||||
ValidTargets: Ground
|
ValidTargets: Ground
|
||||||
Versus:
|
Versus:
|
||||||
None: 0%
|
None: 0
|
||||||
Wood: 75%
|
Wood: 75
|
||||||
Light: 40%
|
Light: 40
|
||||||
Heavy: 90%
|
Heavy: 90
|
||||||
Concrete: 50%
|
Concrete: 50
|
||||||
Warhead@2Eff: CreateEffect
|
Warhead@2Eff: CreateEffect
|
||||||
Explosion: small_explosion
|
Explosion: small_explosion
|
||||||
ImpactSound: EXPLLG5.WAV
|
ImpactSound: EXPLLG5.WAV
|
||||||
@@ -140,10 +140,10 @@ HMG:
|
|||||||
Damage: 30
|
Damage: 30
|
||||||
InfDeath: 2
|
InfDeath: 2
|
||||||
Versus:
|
Versus:
|
||||||
Wood: 15%
|
Wood: 15
|
||||||
Light: 45%
|
Light: 45
|
||||||
Heavy: 20%
|
Heavy: 20
|
||||||
Concrete: 20%
|
Concrete: 20
|
||||||
Warhead@2Eff: CreateEffect
|
Warhead@2Eff: CreateEffect
|
||||||
Explosion: piffs
|
Explosion: piffs
|
||||||
|
|
||||||
@@ -164,10 +164,10 @@ HMGo:
|
|||||||
Damage: 40
|
Damage: 40
|
||||||
InfDeath: 2
|
InfDeath: 2
|
||||||
Versus:
|
Versus:
|
||||||
Wood: 15%
|
Wood: 15
|
||||||
Light: 45%
|
Light: 45
|
||||||
Heavy: 25%
|
Heavy: 25
|
||||||
Concrete: 20%
|
Concrete: 20
|
||||||
Warhead@2Eff: CreateEffect
|
Warhead@2Eff: CreateEffect
|
||||||
Explosion: piffs
|
Explosion: piffs
|
||||||
|
|
||||||
@@ -191,11 +191,11 @@ QuadRockets:
|
|||||||
InfDeath: 4
|
InfDeath: 4
|
||||||
ValidTargets: Ground, Air
|
ValidTargets: Ground, Air
|
||||||
Versus:
|
Versus:
|
||||||
None: 35%
|
None: 35
|
||||||
Wood: 45%
|
Wood: 45
|
||||||
Light: 100%
|
Light: 100
|
||||||
Heavy: 100%
|
Heavy: 100
|
||||||
Concrete: 35%
|
Concrete: 35
|
||||||
Warhead@2Smu: LeaveSmudge
|
Warhead@2Smu: LeaveSmudge
|
||||||
SmudgeType: SandCrater, RockCrater
|
SmudgeType: SandCrater, RockCrater
|
||||||
Warhead@3Eff: CreateEffect
|
Warhead@3Eff: CreateEffect
|
||||||
@@ -217,10 +217,10 @@ TurretGun:
|
|||||||
Damage: 55
|
Damage: 55
|
||||||
InfDeath: 4
|
InfDeath: 4
|
||||||
Versus:
|
Versus:
|
||||||
None: 50%
|
None: 50
|
||||||
Wood: 75%
|
Wood: 75
|
||||||
Light: 100%
|
Light: 100
|
||||||
Concrete: 65%
|
Concrete: 65
|
||||||
Warhead@2Smu: LeaveSmudge
|
Warhead@2Smu: LeaveSmudge
|
||||||
SmudgeType: SandCrater, RockCrater
|
SmudgeType: SandCrater, RockCrater
|
||||||
Warhead@3Eff: CreateEffect
|
Warhead@3Eff: CreateEffect
|
||||||
@@ -251,11 +251,11 @@ TowerMissile:
|
|||||||
InfDeath: 3
|
InfDeath: 3
|
||||||
ValidTargets: Ground, Air
|
ValidTargets: Ground, Air
|
||||||
Versus:
|
Versus:
|
||||||
None: 50%
|
None: 50
|
||||||
Wood: 45%
|
Wood: 45
|
||||||
Light: 100%
|
Light: 100
|
||||||
Heavy: 50%
|
Heavy: 50
|
||||||
Concrete: 35%
|
Concrete: 35
|
||||||
Warhead@2Smu: LeaveSmudge
|
Warhead@2Smu: LeaveSmudge
|
||||||
SmudgeType: SandCrater, RockCrater
|
SmudgeType: SandCrater, RockCrater
|
||||||
Warhead@3Eff: CreateEffect
|
Warhead@3Eff: CreateEffect
|
||||||
@@ -275,10 +275,10 @@ TowerMissile:
|
|||||||
Damage: 40
|
Damage: 40
|
||||||
InfDeath: 4
|
InfDeath: 4
|
||||||
Versus:
|
Versus:
|
||||||
None: 50%
|
None: 50
|
||||||
Wood: 50%
|
Wood: 50
|
||||||
Light: 100%
|
Light: 100
|
||||||
Concrete: 50%
|
Concrete: 50
|
||||||
Warhead@2Smu: LeaveSmudge
|
Warhead@2Smu: LeaveSmudge
|
||||||
SmudgeType: SandCrater, RockCrater
|
SmudgeType: SandCrater, RockCrater
|
||||||
Warhead@3Eff: CreateEffect
|
Warhead@3Eff: CreateEffect
|
||||||
@@ -298,10 +298,10 @@ TowerMissile:
|
|||||||
Damage: 40
|
Damage: 40
|
||||||
InfDeath: 4
|
InfDeath: 4
|
||||||
Versus:
|
Versus:
|
||||||
None: 50%
|
None: 50
|
||||||
Wood: 50%
|
Wood: 50
|
||||||
Light: 100%
|
Light: 100
|
||||||
Concrete: 50%
|
Concrete: 50
|
||||||
Warhead@2Smu: LeaveSmudge
|
Warhead@2Smu: LeaveSmudge
|
||||||
SmudgeType: SandCrater, RockCrater
|
SmudgeType: SandCrater, RockCrater
|
||||||
Warhead@3Eff: CreateEffect
|
Warhead@3Eff: CreateEffect
|
||||||
@@ -320,11 +320,11 @@ DevBullet:
|
|||||||
Damage: 100
|
Damage: 100
|
||||||
InfDeath: 4
|
InfDeath: 4
|
||||||
Versus:
|
Versus:
|
||||||
None: 100%
|
None: 100
|
||||||
Wood: 50%
|
Wood: 50
|
||||||
Light: 100%
|
Light: 100
|
||||||
Heavy: 100%
|
Heavy: 100
|
||||||
Concrete: 80%
|
Concrete: 80
|
||||||
Warhead@2Smu: LeaveSmudge
|
Warhead@2Smu: LeaveSmudge
|
||||||
SmudgeType: SandCrater, RockCrater
|
SmudgeType: SandCrater, RockCrater
|
||||||
Warhead@3Eff: CreateEffect
|
Warhead@3Eff: CreateEffect
|
||||||
@@ -354,11 +354,11 @@ DevBullet:
|
|||||||
InfDeath: 4
|
InfDeath: 4
|
||||||
ValidTargets: Ground
|
ValidTargets: Ground
|
||||||
Versus:
|
Versus:
|
||||||
None: 20%
|
None: 20
|
||||||
Wood: 50%
|
Wood: 50
|
||||||
Light: 100%
|
Light: 100
|
||||||
Heavy: 50%
|
Heavy: 50
|
||||||
Concrete: 80%
|
Concrete: 80
|
||||||
Warhead@2Smu: LeaveSmudge
|
Warhead@2Smu: LeaveSmudge
|
||||||
SmudgeType: SandCrater, RockCrater
|
SmudgeType: SandCrater, RockCrater
|
||||||
Warhead@3Eff: CreateEffect
|
Warhead@3Eff: CreateEffect
|
||||||
@@ -383,9 +383,9 @@ FakeMissile:
|
|||||||
Spread: 96
|
Spread: 96
|
||||||
Damage: 10
|
Damage: 10
|
||||||
Versus:
|
Versus:
|
||||||
None: 0%
|
None: 0
|
||||||
Wood: 0%
|
Wood: 0
|
||||||
Concrete: 0%
|
Concrete: 0
|
||||||
Warhead@2Smu: LeaveSmudge
|
Warhead@2Smu: LeaveSmudge
|
||||||
SmudgeType: SandCrater, RockCrater
|
SmudgeType: SandCrater, RockCrater
|
||||||
Warhead@3Eff: CreateEffect
|
Warhead@3Eff: CreateEffect
|
||||||
@@ -410,11 +410,11 @@ FakeMissile:
|
|||||||
Damage: 100
|
Damage: 100
|
||||||
InfDeath: 3
|
InfDeath: 3
|
||||||
Versus:
|
Versus:
|
||||||
None: 100%
|
None: 100
|
||||||
Wood: 80%
|
Wood: 80
|
||||||
Light: 75%
|
Light: 75
|
||||||
Heavy: 50%
|
Heavy: 50
|
||||||
Concrete: 100%
|
Concrete: 100
|
||||||
Warhead@2Smu: LeaveSmudge
|
Warhead@2Smu: LeaveSmudge
|
||||||
SmudgeType: SandCrater, RockCrater
|
SmudgeType: SandCrater, RockCrater
|
||||||
Warhead@3Eff: CreateEffect
|
Warhead@3Eff: CreateEffect
|
||||||
@@ -435,10 +435,10 @@ Sound:
|
|||||||
Damage: 150
|
Damage: 150
|
||||||
InfDeath: 6
|
InfDeath: 6
|
||||||
Versus:
|
Versus:
|
||||||
None: 60%
|
None: 60
|
||||||
Wood: 85%
|
Wood: 85
|
||||||
Light: 80%
|
Light: 80
|
||||||
Concrete: 75%
|
Concrete: 75
|
||||||
|
|
||||||
ChainGun:
|
ChainGun:
|
||||||
ReloadDelay: 10
|
ReloadDelay: 10
|
||||||
@@ -453,10 +453,10 @@ ChainGun:
|
|||||||
Damage: 20
|
Damage: 20
|
||||||
InfDeath: 2
|
InfDeath: 2
|
||||||
Versus:
|
Versus:
|
||||||
Wood: 50%
|
Wood: 50
|
||||||
Light: 60%
|
Light: 60
|
||||||
Heavy: 25%
|
Heavy: 25
|
||||||
Concrete: 25%
|
Concrete: 25
|
||||||
Warhead@2Eff: CreateEffect
|
Warhead@2Eff: CreateEffect
|
||||||
Explosion: piffs
|
Explosion: piffs
|
||||||
|
|
||||||
@@ -471,10 +471,10 @@ Heal:
|
|||||||
Damage: -50
|
Damage: -50
|
||||||
InfDeath: 1
|
InfDeath: 1
|
||||||
Versus:
|
Versus:
|
||||||
Wood: 0%
|
Wood: 0
|
||||||
Light: 0%
|
Light: 0
|
||||||
Heavy: 0%
|
Heavy: 0
|
||||||
Concrete: 0%
|
Concrete: 0
|
||||||
|
|
||||||
WormJaw:
|
WormJaw:
|
||||||
ReloadDelay: 10
|
ReloadDelay: 10
|
||||||
@@ -484,8 +484,8 @@ WormJaw:
|
|||||||
Spread: 160
|
Spread: 160
|
||||||
Damage: 100
|
Damage: 100
|
||||||
Versus:
|
Versus:
|
||||||
Wood: 0%
|
Wood: 0
|
||||||
Concrete: 0%
|
Concrete: 0
|
||||||
|
|
||||||
ParaBomb:
|
ParaBomb:
|
||||||
ReloadDelay: 10
|
ReloadDelay: 10
|
||||||
@@ -495,13 +495,14 @@ ParaBomb:
|
|||||||
Image: BOMBS
|
Image: BOMBS
|
||||||
Warhead@1Dam: SpreadDamage
|
Warhead@1Dam: SpreadDamage
|
||||||
Spread: 192
|
Spread: 192
|
||||||
Damage: 500
|
Damage: 50
|
||||||
|
Falloff: 1000, 368, 135, 50, 18, 7, 0
|
||||||
InfDeath: 4
|
InfDeath: 4
|
||||||
Versus:
|
Versus:
|
||||||
None: 30%
|
None: 30
|
||||||
Wood: 75%
|
Wood: 75
|
||||||
Light: 75%
|
Light: 75
|
||||||
Concrete: 50%
|
Concrete: 50
|
||||||
Warhead@2Smu: LeaveSmudge
|
Warhead@2Smu: LeaveSmudge
|
||||||
SmudgeType: Crater
|
SmudgeType: Crater
|
||||||
Warhead@3Eff: CreateEffect
|
Warhead@3Eff: CreateEffect
|
||||||
@@ -515,14 +516,15 @@ Napalm:
|
|||||||
Image: BOMBS
|
Image: BOMBS
|
||||||
Warhead@1Dam: SpreadDamage
|
Warhead@1Dam: SpreadDamage
|
||||||
Spread: 640
|
Spread: 640
|
||||||
Damage: 300
|
Damage: 30
|
||||||
|
Falloff: 1000, 368, 135, 50, 18, 7, 0
|
||||||
InfDeath: 4
|
InfDeath: 4
|
||||||
Versus:
|
Versus:
|
||||||
None: 20%
|
None: 20
|
||||||
Wood: 100%
|
Wood: 100
|
||||||
Light: 30%
|
Light: 30
|
||||||
Heavy: 20%
|
Heavy: 20
|
||||||
Concrete: 70%
|
Concrete: 70
|
||||||
Warhead@2Smu: LeaveSmudge
|
Warhead@2Smu: LeaveSmudge
|
||||||
SmudgeType: Crater
|
SmudgeType: Crater
|
||||||
Warhead@3Eff: CreateEffect
|
Warhead@3Eff: CreateEffect
|
||||||
@@ -544,14 +546,15 @@ Demolish:
|
|||||||
Atomic:
|
Atomic:
|
||||||
Warhead@1Dam: SpreadDamage
|
Warhead@1Dam: SpreadDamage
|
||||||
Spread: 2c0
|
Spread: 2c0
|
||||||
Damage: 1800
|
Damage: 180
|
||||||
|
Falloff: 1000, 368, 135, 50, 18, 7, 0
|
||||||
InfDeath: 5
|
InfDeath: 5
|
||||||
Versus:
|
Versus:
|
||||||
None: 100%
|
None: 100
|
||||||
Wood: 100%
|
Wood: 100
|
||||||
Light: 100%
|
Light: 100
|
||||||
Heavy: 50%
|
Heavy: 50
|
||||||
Concrete: 50%
|
Concrete: 50
|
||||||
Warhead@2Eff: CreateEffect
|
Warhead@2Eff: CreateEffect
|
||||||
Explosion: nuke
|
Explosion: nuke
|
||||||
ImpactSound: EXPLLG2.WAV
|
ImpactSound: EXPLLG2.WAV
|
||||||
@@ -559,14 +562,15 @@ Atomic:
|
|||||||
CrateNuke:
|
CrateNuke:
|
||||||
Warhead@1Dam: SpreadDamage
|
Warhead@1Dam: SpreadDamage
|
||||||
Spread: 1c576
|
Spread: 1c576
|
||||||
Damage: 800
|
Damage: 80
|
||||||
|
Falloff: 1000, 368, 135, 50, 18, 7, 0
|
||||||
InfDeath: 5
|
InfDeath: 5
|
||||||
Versus:
|
Versus:
|
||||||
None: 20%
|
None: 20
|
||||||
Wood: 75%
|
Wood: 75
|
||||||
Light: 25%
|
Light: 25
|
||||||
Heavy: 25%
|
Heavy: 25
|
||||||
Concrete: 50%
|
Concrete: 50
|
||||||
Warhead@2Eff: CreateEffect
|
Warhead@2Eff: CreateEffect
|
||||||
Explosion: nuke
|
Explosion: nuke
|
||||||
ImpactSound: EXPLLG2.WAV
|
ImpactSound: EXPLLG2.WAV
|
||||||
@@ -574,13 +578,14 @@ CrateNuke:
|
|||||||
CrateExplosion:
|
CrateExplosion:
|
||||||
Warhead@1Dam: SpreadDamage
|
Warhead@1Dam: SpreadDamage
|
||||||
Spread: 320
|
Spread: 320
|
||||||
Damage: 400
|
Damage: 40
|
||||||
|
Falloff: 1000, 368, 135, 50, 18, 7, 0
|
||||||
InfDeath: 4
|
InfDeath: 4
|
||||||
Versus:
|
Versus:
|
||||||
None: 90%
|
None: 90
|
||||||
Wood: 75%
|
Wood: 75
|
||||||
Light: 60%
|
Light: 60
|
||||||
Heavy: 25%
|
Heavy: 25
|
||||||
Warhead@2Eff: CreateEffect
|
Warhead@2Eff: CreateEffect
|
||||||
Explosion: building
|
Explosion: building
|
||||||
ImpactSound: EXPLSML4.WAV
|
ImpactSound: EXPLSML4.WAV
|
||||||
@@ -588,13 +593,14 @@ CrateExplosion:
|
|||||||
UnitExplode:
|
UnitExplode:
|
||||||
Warhead@1Dam: SpreadDamage
|
Warhead@1Dam: SpreadDamage
|
||||||
Spread: 320
|
Spread: 320
|
||||||
Damage: 500
|
Damage: 50
|
||||||
|
Falloff: 1000, 368, 135, 50, 18, 7, 0
|
||||||
InfDeath: 4
|
InfDeath: 4
|
||||||
Versus:
|
Versus:
|
||||||
None: 90%
|
None: 90
|
||||||
Wood: 75%
|
Wood: 75
|
||||||
Light: 60%
|
Light: 60
|
||||||
Heavy: 25%
|
Heavy: 25
|
||||||
Warhead@2Eff: CreateEffect
|
Warhead@2Eff: CreateEffect
|
||||||
Explosion: building
|
Explosion: building
|
||||||
ImpactSound: EXPLMD1.WAV
|
ImpactSound: EXPLMD1.WAV
|
||||||
@@ -605,10 +611,10 @@ UnitExplodeSmall:
|
|||||||
Damage: 60
|
Damage: 60
|
||||||
InfDeath: 4
|
InfDeath: 4
|
||||||
Versus:
|
Versus:
|
||||||
None: 90%
|
None: 90
|
||||||
Wood: 75%
|
Wood: 75
|
||||||
Light: 60%
|
Light: 60
|
||||||
Heavy: 25%
|
Heavy: 25
|
||||||
Warhead@2Eff: CreateEffect
|
Warhead@2Eff: CreateEffect
|
||||||
Explosion: self_destruct
|
Explosion: self_destruct
|
||||||
ImpactSound: EXPLHG1.WAV, EXPLLG1.WAV, EXPLMD1.WAV, EXPLSML4.WAV
|
ImpactSound: EXPLHG1.WAV, EXPLLG1.WAV, EXPLMD1.WAV, EXPLSML4.WAV
|
||||||
@@ -619,10 +625,10 @@ UnitExplodeTiny:
|
|||||||
Damage: 30
|
Damage: 30
|
||||||
InfDeath: 4
|
InfDeath: 4
|
||||||
Versus:
|
Versus:
|
||||||
None: 90%
|
None: 90
|
||||||
Wood: 75%
|
Wood: 75
|
||||||
Light: 60%
|
Light: 60
|
||||||
Heavy: 25%
|
Heavy: 25
|
||||||
Warhead@2Eff: CreateEffect
|
Warhead@2Eff: CreateEffect
|
||||||
Explosion: med_explosion
|
Explosion: med_explosion
|
||||||
ImpactSound: EXPLMD2.WAV, EXPLSML1.WAV, EXPLSML2.WAV, EXPLSML3.WAV
|
ImpactSound: EXPLMD2.WAV, EXPLSML1.WAV, EXPLSML2.WAV, EXPLSML3.WAV
|
||||||
@@ -633,10 +639,10 @@ UnitExplodeScale:
|
|||||||
Damage: 90
|
Damage: 90
|
||||||
InfDeath: 4
|
InfDeath: 4
|
||||||
Versus:
|
Versus:
|
||||||
None: 90%
|
None: 90
|
||||||
Wood: 75%
|
Wood: 75
|
||||||
Light: 60%
|
Light: 60
|
||||||
Heavy: 25%
|
Heavy: 25
|
||||||
Warhead@2Eff: CreateEffect
|
Warhead@2Eff: CreateEffect
|
||||||
Explosion: building
|
Explosion: building
|
||||||
ImpactSound: EXPLLG2.WAV, EXPLLG3.WAV, EXPLLG5.WAV
|
ImpactSound: EXPLLG2.WAV, EXPLLG3.WAV, EXPLLG5.WAV
|
||||||
@@ -656,10 +662,10 @@ Grenade:
|
|||||||
Damage: 60
|
Damage: 60
|
||||||
InfDeath: 3
|
InfDeath: 3
|
||||||
Versus:
|
Versus:
|
||||||
None: 50%
|
None: 50
|
||||||
Wood: 100%
|
Wood: 100
|
||||||
Light: 25%
|
Light: 25
|
||||||
Heavy: 5%
|
Heavy: 5
|
||||||
Warhead@2Smu: LeaveSmudge
|
Warhead@2Smu: LeaveSmudge
|
||||||
SmudgeType: SandCrater
|
SmudgeType: SandCrater
|
||||||
Warhead@3Eff: CreateEffect
|
Warhead@3Eff: CreateEffect
|
||||||
@@ -686,10 +692,10 @@ Shrapnel:
|
|||||||
Damage: 60
|
Damage: 60
|
||||||
InfDeath: 3
|
InfDeath: 3
|
||||||
Versus:
|
Versus:
|
||||||
None: 50%
|
None: 50
|
||||||
Wood: 100%
|
Wood: 100
|
||||||
Light: 25%
|
Light: 25
|
||||||
Heavy: 5%
|
Heavy: 5
|
||||||
Warhead@2Smu: LeaveSmudge
|
Warhead@2Smu: LeaveSmudge
|
||||||
SmudgeType: SandCrater
|
SmudgeType: SandCrater
|
||||||
Warhead@3Eff: CreateEffect
|
Warhead@3Eff: CreateEffect
|
||||||
@@ -702,10 +708,10 @@ SpiceExplosion:
|
|||||||
Damage: 10
|
Damage: 10
|
||||||
InfDeath: 3
|
InfDeath: 3
|
||||||
Versus:
|
Versus:
|
||||||
None: 90%
|
None: 90
|
||||||
Wood: 75%
|
Wood: 75
|
||||||
Light: 60%
|
Light: 60
|
||||||
Heavy: 25%
|
Heavy: 25
|
||||||
Warhead@2Res: CreateResource
|
Warhead@2Res: CreateResource
|
||||||
AddsResourceType: Spice
|
AddsResourceType: Spice
|
||||||
Size: 2,2
|
Size: 2,2
|
||||||
|
|||||||
@@ -316,10 +316,10 @@ Weapons:
|
|||||||
Warhead: SpreadDamage
|
Warhead: SpreadDamage
|
||||||
Spread: 128
|
Spread: 128
|
||||||
Versus:
|
Versus:
|
||||||
None: 60%
|
None: 60
|
||||||
Wood: 75%
|
Wood: 75
|
||||||
Light: 60%
|
Light: 60
|
||||||
Heavy: 25%
|
Heavy: 25
|
||||||
InfDeath: 2
|
InfDeath: 2
|
||||||
Damage: 250
|
Damage: 250
|
||||||
Warhead@1Eff: CreateEffect
|
Warhead@1Eff: CreateEffect
|
||||||
@@ -345,9 +345,9 @@ Weapons:
|
|||||||
Warhead: SpreadDamage
|
Warhead: SpreadDamage
|
||||||
Spread: 426
|
Spread: 426
|
||||||
Versus:
|
Versus:
|
||||||
None: 40%
|
None: 40
|
||||||
Light: 30%
|
Light: 30
|
||||||
Heavy: 30%
|
Heavy: 30
|
||||||
InfDeath: blownaway
|
InfDeath: blownaway
|
||||||
Damage: 400
|
Damage: 400
|
||||||
Warhead@1Eff: CreateEffect
|
Warhead@1Eff: CreateEffect
|
||||||
|
|||||||
@@ -774,10 +774,10 @@ Weapons:
|
|||||||
Warhead: SpreadDamage
|
Warhead: SpreadDamage
|
||||||
Spread: 256
|
Spread: 256
|
||||||
Versus:
|
Versus:
|
||||||
None: 75%
|
None: 75
|
||||||
Wood: 75%
|
Wood: 75
|
||||||
Light: 75%
|
Light: 75
|
||||||
Concrete: 100%
|
Concrete: 100
|
||||||
InfDeath: 4
|
InfDeath: 4
|
||||||
Damage: 150
|
Damage: 150
|
||||||
Warhead@2Smu: LeaveSmudge
|
Warhead@2Smu: LeaveSmudge
|
||||||
@@ -807,11 +807,11 @@ Weapons:
|
|||||||
Spread: 640
|
Spread: 640
|
||||||
ValidTargets: Ground, Air
|
ValidTargets: Ground, Air
|
||||||
Versus:
|
Versus:
|
||||||
None: 125%
|
None: 125
|
||||||
Wood: 110%
|
Wood: 110
|
||||||
Light: 110%
|
Light: 110
|
||||||
Heavy: 100%
|
Heavy: 100
|
||||||
Concrete: 200%
|
Concrete: 200
|
||||||
InfDeath: 3
|
InfDeath: 3
|
||||||
Damage: 250
|
Damage: 250
|
||||||
Warhead@2Smu: LeaveSmudge
|
Warhead@2Smu: LeaveSmudge
|
||||||
@@ -836,11 +836,11 @@ Weapons:
|
|||||||
Spread: 341
|
Spread: 341
|
||||||
ValidTargets: Ground
|
ValidTargets: Ground
|
||||||
Versus:
|
Versus:
|
||||||
None: 90%
|
None: 90
|
||||||
Wood: 170%
|
Wood: 170
|
||||||
Light: 100%
|
Light: 100
|
||||||
Heavy: 100%
|
Heavy: 100
|
||||||
Concrete: 100%
|
Concrete: 100
|
||||||
InfDeath: 4
|
InfDeath: 4
|
||||||
Damage: 15
|
Damage: 15
|
||||||
Warhead@2Smu: LeaveSmudge
|
Warhead@2Smu: LeaveSmudge
|
||||||
@@ -858,10 +858,10 @@ Weapons:
|
|||||||
Warhead: SpreadDamage
|
Warhead: SpreadDamage
|
||||||
Spread: 426
|
Spread: 426
|
||||||
Versus:
|
Versus:
|
||||||
None: 125%
|
None: 125
|
||||||
Wood: 100%
|
Wood: 100
|
||||||
Light: 60%
|
Light: 60
|
||||||
Concrete: 25%
|
Concrete: 25
|
||||||
InfDeath: 5
|
InfDeath: 5
|
||||||
Damage: 200
|
Damage: 200
|
||||||
Warhead@2Smu: LeaveSmudge
|
Warhead@2Smu: LeaveSmudge
|
||||||
@@ -887,11 +887,11 @@ Weapons:
|
|||||||
Warhead: SpreadDamage
|
Warhead: SpreadDamage
|
||||||
Spread: 426
|
Spread: 426
|
||||||
Versus:
|
Versus:
|
||||||
None: 80%
|
None: 80
|
||||||
Wood: 100%
|
Wood: 100
|
||||||
Light: 60%
|
Light: 60
|
||||||
Heavy: 75%
|
Heavy: 75
|
||||||
Concrete: 35%
|
Concrete: 35
|
||||||
InfDeath: 5
|
InfDeath: 5
|
||||||
Damage: 10
|
Damage: 10
|
||||||
Warhead@2Smu: LeaveSmudge
|
Warhead@2Smu: LeaveSmudge
|
||||||
@@ -912,11 +912,11 @@ Weapons:
|
|||||||
Spread: 213
|
Spread: 213
|
||||||
ValidTargets: Air, Ground
|
ValidTargets: Air, Ground
|
||||||
Versus:
|
Versus:
|
||||||
None: 35%
|
None: 35
|
||||||
Wood: 30%
|
Wood: 30
|
||||||
Light: 30%
|
Light: 30
|
||||||
Heavy: 40%
|
Heavy: 40
|
||||||
Concrete: 30%
|
Concrete: 30
|
||||||
Damage: 25
|
Damage: 25
|
||||||
Warhead@2Smu: LeaveSmudge
|
Warhead@2Smu: LeaveSmudge
|
||||||
SmudgeType: Scorch
|
SmudgeType: Scorch
|
||||||
@@ -940,10 +940,10 @@ Weapons:
|
|||||||
Warhead: SpreadDamage
|
Warhead: SpreadDamage
|
||||||
Spread: 853
|
Spread: 853
|
||||||
Versus:
|
Versus:
|
||||||
None: 100%
|
None: 100
|
||||||
Wood: 90%
|
Wood: 90
|
||||||
Light: 80%
|
Light: 80
|
||||||
Heavy: 70%
|
Heavy: 70
|
||||||
InfDeath: 3
|
InfDeath: 3
|
||||||
Damage: 500
|
Damage: 500
|
||||||
Warhead@2Smu: LeaveSmudge
|
Warhead@2Smu: LeaveSmudge
|
||||||
@@ -962,10 +962,10 @@ Weapons:
|
|||||||
Warhead: SpreadDamage
|
Warhead: SpreadDamage
|
||||||
Spread: 128
|
Spread: 128
|
||||||
Versus:
|
Versus:
|
||||||
Wood: 0%
|
Wood: 0
|
||||||
Light: 0%
|
Light: 0
|
||||||
Heavy: 50%
|
Heavy: 50
|
||||||
Concrete: 0%
|
Concrete: 0
|
||||||
InfDeath: 2
|
InfDeath: 2
|
||||||
Damage: 150
|
Damage: 150
|
||||||
Warhead@2Eff: CreateEffect
|
Warhead@2Eff: CreateEffect
|
||||||
|
|||||||
@@ -1080,10 +1080,10 @@ Weapons:
|
|||||||
Damage: 250
|
Damage: 250
|
||||||
Size: 4
|
Size: 4
|
||||||
Versus:
|
Versus:
|
||||||
None: 90%
|
None: 90
|
||||||
Light: 60%
|
Light: 60
|
||||||
Heavy: 25%
|
Heavy: 25
|
||||||
Concrete: 50%
|
Concrete: 50
|
||||||
Delay: 12
|
Delay: 12
|
||||||
InfDeath: 4
|
InfDeath: 4
|
||||||
Warhead@areanuke2Smu: LeaveSmudge
|
Warhead@areanuke2Smu: LeaveSmudge
|
||||||
@@ -1101,10 +1101,10 @@ Weapons:
|
|||||||
Damage: 250
|
Damage: 250
|
||||||
Size: 3
|
Size: 3
|
||||||
Versus:
|
Versus:
|
||||||
None: 90%
|
None: 90
|
||||||
Light: 60%
|
Light: 60
|
||||||
Heavy: 25%
|
Heavy: 25
|
||||||
Concrete: 50%
|
Concrete: 50
|
||||||
Delay: 24
|
Delay: 24
|
||||||
InfDeath: 4
|
InfDeath: 4
|
||||||
Warhead@areanuke3Smu: LeaveSmudge
|
Warhead@areanuke3Smu: LeaveSmudge
|
||||||
@@ -1121,10 +1121,10 @@ Weapons:
|
|||||||
Warhead@areanuke4: PerCellDamage
|
Warhead@areanuke4: PerCellDamage
|
||||||
Damage: 250
|
Damage: 250
|
||||||
Versus:
|
Versus:
|
||||||
None: 90%
|
None: 90
|
||||||
Light: 60%
|
Light: 60
|
||||||
Heavy: 25%
|
Heavy: 25
|
||||||
Concrete: 50%
|
Concrete: 50
|
||||||
Delay: 36
|
Delay: 36
|
||||||
InfDeath: 4
|
InfDeath: 4
|
||||||
Warhead@areanuke4Smu: LeaveSmudge
|
Warhead@areanuke4Smu: LeaveSmudge
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -1,13 +1,14 @@
|
|||||||
UnitExplode:
|
UnitExplode:
|
||||||
Warhead@1Dam: SpreadDamage
|
Warhead@1Dam: SpreadDamage
|
||||||
Spread: 426
|
Spread: 426
|
||||||
Damage: 500
|
Damage: 50
|
||||||
|
Falloff: 1000, 368, 135, 50, 18, 7, 0
|
||||||
InfDeath: 2
|
InfDeath: 2
|
||||||
Versus:
|
Versus:
|
||||||
None: 90%
|
None: 90
|
||||||
Wood: 75%
|
Wood: 75
|
||||||
Light: 60%
|
Light: 60
|
||||||
Heavy: 25%
|
Heavy: 25
|
||||||
Warhead@2Eff: CreateEffect
|
Warhead@2Eff: CreateEffect
|
||||||
Explosion: large_twlt
|
Explosion: large_twlt
|
||||||
ImpactSound: expnew09.aud
|
ImpactSound: expnew09.aud
|
||||||
@@ -18,10 +19,10 @@ UnitExplodeSmall:
|
|||||||
Damage: 40
|
Damage: 40
|
||||||
InfDeath: 2
|
InfDeath: 2
|
||||||
Versus:
|
Versus:
|
||||||
None: 90%
|
None: 90
|
||||||
Wood: 75%
|
Wood: 75
|
||||||
Light: 60%
|
Light: 60
|
||||||
Heavy: 25%
|
Heavy: 25
|
||||||
Warhead@2Eff: CreateEffect
|
Warhead@2Eff: CreateEffect
|
||||||
Explosion: medium_brnl
|
Explosion: medium_brnl
|
||||||
ImpactSound: expnew13.aud
|
ImpactSound: expnew13.aud
|
||||||
@@ -38,10 +39,10 @@ Minigun:
|
|||||||
InfDeath: 1
|
InfDeath: 1
|
||||||
ProneModifier: 70
|
ProneModifier: 70
|
||||||
Versus:
|
Versus:
|
||||||
Wood: 60%
|
Wood: 60
|
||||||
Light: 40%
|
Light: 40
|
||||||
Heavy: 25%
|
Heavy: 25
|
||||||
Concrete: 10%
|
Concrete: 10
|
||||||
Warhead@2Eff: CreateEffect
|
Warhead@2Eff: CreateEffect
|
||||||
Explosion: piffs
|
Explosion: piffs
|
||||||
InvalidImpactTypes: Water
|
InvalidImpactTypes: Water
|
||||||
@@ -65,11 +66,11 @@ Grenade:
|
|||||||
InfDeath: 3
|
InfDeath: 3
|
||||||
ProneModifier: 70
|
ProneModifier: 70
|
||||||
Versus:
|
Versus:
|
||||||
None: 100%
|
None: 100
|
||||||
Wood: 85%
|
Wood: 85
|
||||||
Light: 70%
|
Light: 70
|
||||||
Heavy: 35%
|
Heavy: 35
|
||||||
Concrete: 28%
|
Concrete: 28
|
||||||
Warhead@2Eff: CreateEffect
|
Warhead@2Eff: CreateEffect
|
||||||
Explosion: large_grey_explosion
|
Explosion: large_grey_explosion
|
||||||
ImpactSound: expnew13.aud
|
ImpactSound: expnew13.aud
|
||||||
@@ -100,11 +101,11 @@ Bazooka:
|
|||||||
InfDeath: 2
|
InfDeath: 2
|
||||||
ValidTargets: Ground, Air
|
ValidTargets: Ground, Air
|
||||||
Versus:
|
Versus:
|
||||||
None: 25%
|
None: 25
|
||||||
Wood: 65%
|
Wood: 65
|
||||||
Light: 75%
|
Light: 75
|
||||||
Heavy: 100%
|
Heavy: 100
|
||||||
Concrete: 60%
|
Concrete: 60
|
||||||
Warhead@2Eff: CreateEffect
|
Warhead@2Eff: CreateEffect
|
||||||
Explosion: small_clsn
|
Explosion: small_clsn
|
||||||
ImpactSound: expnew12.aud
|
ImpactSound: expnew12.aud
|
||||||
@@ -139,11 +140,11 @@ MultiCluster:
|
|||||||
InfDeath: 3
|
InfDeath: 3
|
||||||
ValidTargets: Ground
|
ValidTargets: Ground
|
||||||
Versus:
|
Versus:
|
||||||
None: 25%
|
None: 25
|
||||||
Wood: 65%
|
Wood: 65
|
||||||
Light: 75%
|
Light: 75
|
||||||
Heavy: 100%
|
Heavy: 100
|
||||||
Concrete: 60%
|
Concrete: 60
|
||||||
Warhead@2Eff: CreateEffect
|
Warhead@2Eff: CreateEffect
|
||||||
Explosion: large_explosion
|
Explosion: large_explosion
|
||||||
ImpactSound: expnew09.aud
|
ImpactSound: expnew09.aud
|
||||||
@@ -165,10 +166,10 @@ Heal:
|
|||||||
InfDeath: 1
|
InfDeath: 1
|
||||||
ProneModifier: 100
|
ProneModifier: 100
|
||||||
Versus:
|
Versus:
|
||||||
Wood: 0%
|
Wood: 0
|
||||||
Light: 0%
|
Light: 0
|
||||||
Heavy: 0%
|
Heavy: 0
|
||||||
Concrete: 0%
|
Concrete: 0
|
||||||
|
|
||||||
Sniper:
|
Sniper:
|
||||||
ReloadDelay: 60
|
ReloadDelay: 60
|
||||||
@@ -182,11 +183,11 @@ Sniper:
|
|||||||
InfDeath: 1
|
InfDeath: 1
|
||||||
ProneModifier: 100
|
ProneModifier: 100
|
||||||
Versus:
|
Versus:
|
||||||
None: 100%
|
None: 100
|
||||||
Wood: 0%
|
Wood: 0
|
||||||
Light: 0%
|
Light: 0
|
||||||
Heavy: 0%
|
Heavy: 0
|
||||||
Concrete: 0%
|
Concrete: 0
|
||||||
|
|
||||||
M1Carbine:
|
M1Carbine:
|
||||||
ReloadDelay: 20
|
ReloadDelay: 20
|
||||||
@@ -200,10 +201,10 @@ M1Carbine:
|
|||||||
InfDeath: 1
|
InfDeath: 1
|
||||||
ProneModifier: 70
|
ProneModifier: 70
|
||||||
Versus:
|
Versus:
|
||||||
Wood: 60%
|
Wood: 60
|
||||||
Light: 40%
|
Light: 40
|
||||||
Heavy: 25%
|
Heavy: 25
|
||||||
Concrete: 10%
|
Concrete: 10
|
||||||
Warhead@2Eff: CreateEffect
|
Warhead@2Eff: CreateEffect
|
||||||
Explosion: piffs
|
Explosion: piffs
|
||||||
InvalidImpactTypes: Water
|
InvalidImpactTypes: Water
|
||||||
@@ -226,11 +227,11 @@ LtRail:
|
|||||||
InfDeath: 2
|
InfDeath: 2
|
||||||
ProneModifier: 100
|
ProneModifier: 100
|
||||||
Versus:
|
Versus:
|
||||||
None: 100%
|
None: 100
|
||||||
Wood: 130%
|
Wood: 130
|
||||||
Light: 150%
|
Light: 150
|
||||||
Heavy: 110%
|
Heavy: 110
|
||||||
Concrete: 5%
|
Concrete: 5
|
||||||
|
|
||||||
CyCannon:
|
CyCannon:
|
||||||
ReloadDelay: 50
|
ReloadDelay: 50
|
||||||
@@ -249,11 +250,11 @@ CyCannon:
|
|||||||
ProneModifier: 100
|
ProneModifier: 100
|
||||||
ValidTargets: Ground
|
ValidTargets: Ground
|
||||||
Versus:
|
Versus:
|
||||||
None: 100%
|
None: 100
|
||||||
Wood: 65%
|
Wood: 65
|
||||||
Light: 75%
|
Light: 75
|
||||||
Heavy: 50%
|
Heavy: 50
|
||||||
Concrete: 40%
|
Concrete: 40
|
||||||
Warhead@2Eff: CreateEffect
|
Warhead@2Eff: CreateEffect
|
||||||
Explosion: large_bang
|
Explosion: large_bang
|
||||||
ImpactSound: expnew12.aud
|
ImpactSound: expnew12.aud
|
||||||
@@ -276,10 +277,10 @@ Vulcan3:
|
|||||||
InfDeath: 1
|
InfDeath: 1
|
||||||
ProneModifier: 70
|
ProneModifier: 70
|
||||||
Versus:
|
Versus:
|
||||||
Wood: 60%
|
Wood: 60
|
||||||
Light: 40%
|
Light: 40
|
||||||
Heavy: 25%
|
Heavy: 25
|
||||||
Concrete: 10%
|
Concrete: 10
|
||||||
Warhead@2Eff: CreateEffect
|
Warhead@2Eff: CreateEffect
|
||||||
Explosion: piffs
|
Explosion: piffs
|
||||||
InvalidImpactTypes: Water
|
InvalidImpactTypes: Water
|
||||||
@@ -300,11 +301,11 @@ Vulcan2:
|
|||||||
InfDeath: 1
|
InfDeath: 1
|
||||||
ProneModifier: 70
|
ProneModifier: 70
|
||||||
Versus:
|
Versus:
|
||||||
None: 100%
|
None: 100
|
||||||
Wood: 60%
|
Wood: 60
|
||||||
Light: 40%
|
Light: 40
|
||||||
Heavy: 25%
|
Heavy: 25
|
||||||
Concrete: 10%
|
Concrete: 10
|
||||||
Warhead@2Eff: CreateEffect
|
Warhead@2Eff: CreateEffect
|
||||||
Explosion: piffs
|
Explosion: piffs
|
||||||
InvalidImpactTypes: Water
|
InvalidImpactTypes: Water
|
||||||
@@ -324,10 +325,10 @@ Vulcan:
|
|||||||
InfDeath: 1
|
InfDeath: 1
|
||||||
ProneModifier: 70
|
ProneModifier: 70
|
||||||
Versus:
|
Versus:
|
||||||
Wood: 60%
|
Wood: 60
|
||||||
Light: 40%
|
Light: 40
|
||||||
Heavy: 25%
|
Heavy: 25
|
||||||
Concrete: 10%
|
Concrete: 10
|
||||||
Warhead@2Eff: CreateEffect
|
Warhead@2Eff: CreateEffect
|
||||||
Explosion: piffs
|
Explosion: piffs
|
||||||
InvalidImpactTypes: Water
|
InvalidImpactTypes: Water
|
||||||
@@ -352,10 +353,10 @@ FiendShard:
|
|||||||
InfDeath: 1
|
InfDeath: 1
|
||||||
ProneModifier: 100
|
ProneModifier: 100
|
||||||
Versus:
|
Versus:
|
||||||
Wood: 60%
|
Wood: 60
|
||||||
Light: 40%
|
Light: 40
|
||||||
Heavy: 25%
|
Heavy: 25
|
||||||
Concrete: 10%
|
Concrete: 10
|
||||||
Warhead@3EffWater: CreateEffect
|
Warhead@3EffWater: CreateEffect
|
||||||
Explosion: small_watersplash
|
Explosion: small_watersplash
|
||||||
ImpactSound: ssplash3.aud
|
ImpactSound: ssplash3.aud
|
||||||
@@ -374,10 +375,10 @@ JumpCannon:
|
|||||||
InfDeath: 1
|
InfDeath: 1
|
||||||
ProneModifier: 70
|
ProneModifier: 70
|
||||||
Versus:
|
Versus:
|
||||||
Wood: 60%
|
Wood: 60
|
||||||
Light: 40%
|
Light: 40
|
||||||
Heavy: 25%
|
Heavy: 25
|
||||||
Concrete: 10%
|
Concrete: 10
|
||||||
Warhead@2Eff: CreateEffect
|
Warhead@2Eff: CreateEffect
|
||||||
Explosion: piffs
|
Explosion: piffs
|
||||||
InvalidImpactTypes: Water
|
InvalidImpactTypes: Water
|
||||||
@@ -407,11 +408,11 @@ HoverMissile:
|
|||||||
InfDeath: 2
|
InfDeath: 2
|
||||||
ValidTargets: Ground, Air
|
ValidTargets: Ground, Air
|
||||||
Versus:
|
Versus:
|
||||||
None: 25%
|
None: 25
|
||||||
Wood: 65%
|
Wood: 65
|
||||||
Light: 75%
|
Light: 75
|
||||||
Heavy: 100%
|
Heavy: 100
|
||||||
Concrete: 60%
|
Concrete: 60
|
||||||
Warhead@2Eff: CreateEffect
|
Warhead@2Eff: CreateEffect
|
||||||
Explosion: small_clsn
|
Explosion: small_clsn
|
||||||
ImpactSound: expnew12.aud
|
ImpactSound: expnew12.aud
|
||||||
@@ -442,11 +443,11 @@ HoverMissile:
|
|||||||
Damage: 50
|
Damage: 50
|
||||||
InfDeath: 2
|
InfDeath: 2
|
||||||
Versus:
|
Versus:
|
||||||
None: 25%
|
None: 25
|
||||||
Wood: 65%
|
Wood: 65
|
||||||
Light: 75%
|
Light: 75
|
||||||
Heavy: 100%
|
Heavy: 100
|
||||||
Concrete: 60%
|
Concrete: 60
|
||||||
Warhead@2Eff: CreateEffect
|
Warhead@2Eff: CreateEffect
|
||||||
Explosion: medium_clsn
|
Explosion: medium_clsn
|
||||||
ImpactSound: expnew14.aud
|
ImpactSound: expnew14.aud
|
||||||
@@ -479,11 +480,11 @@ MammothTusk:
|
|||||||
ProneModifier: 70
|
ProneModifier: 70
|
||||||
ValidTargets: Air
|
ValidTargets: Air
|
||||||
Versus:
|
Versus:
|
||||||
None: 100%
|
None: 100
|
||||||
Wood: 85%
|
Wood: 85
|
||||||
Light: 70%
|
Light: 70
|
||||||
Heavy: 35%
|
Heavy: 35
|
||||||
Concrete: 28%
|
Concrete: 28
|
||||||
Warhead@2Eff: CreateEffect
|
Warhead@2Eff: CreateEffect
|
||||||
Explosion: medium_bang
|
Explosion: medium_bang
|
||||||
ImpactSound: expnew12.aud
|
ImpactSound: expnew12.aud
|
||||||
@@ -505,11 +506,11 @@ Repair:
|
|||||||
InfDeath: 1
|
InfDeath: 1
|
||||||
ProneModifier: 100
|
ProneModifier: 100
|
||||||
Versus:
|
Versus:
|
||||||
None: 0%
|
None: 0
|
||||||
Wood: 0%
|
Wood: 0
|
||||||
Light: 100%
|
Light: 100
|
||||||
Heavy: 100%
|
Heavy: 100
|
||||||
Concrete: 0%
|
Concrete: 0
|
||||||
|
|
||||||
SlimeAttack:
|
SlimeAttack:
|
||||||
ReloadDelay: 80
|
ReloadDelay: 80
|
||||||
@@ -523,10 +524,10 @@ SlimeAttack:
|
|||||||
InfDeath: 2
|
InfDeath: 2
|
||||||
ProneModifier: 100
|
ProneModifier: 100
|
||||||
Versus:
|
Versus:
|
||||||
Wood: 25%
|
Wood: 25
|
||||||
Light: 30%
|
Light: 30
|
||||||
Heavy: 10%
|
Heavy: 10
|
||||||
Concrete: 10%
|
Concrete: 10
|
||||||
|
|
||||||
SuicideBomb:
|
SuicideBomb:
|
||||||
ReloadDelay: 1
|
ReloadDelay: 1
|
||||||
@@ -534,13 +535,14 @@ SuicideBomb:
|
|||||||
Report: HUNTER2.AUD
|
Report: HUNTER2.AUD
|
||||||
Warhead@1Dam: SpreadDamage
|
Warhead@1Dam: SpreadDamage
|
||||||
Spread: 256
|
Spread: 256
|
||||||
Damage: 11000
|
Damage: 110
|
||||||
|
Falloff: 10000, 3680, 1350, 500, 180, 70, 0
|
||||||
InfDeath: 5
|
InfDeath: 5
|
||||||
Versus:
|
Versus:
|
||||||
None: 90%
|
None: 90
|
||||||
Light: 60%
|
Light: 60
|
||||||
Heavy: 25%
|
Heavy: 25
|
||||||
Concrete: 50%
|
Concrete: 50
|
||||||
Warhead@2Res: DestroyResource
|
Warhead@2Res: DestroyResource
|
||||||
|
|
||||||
120mm:
|
120mm:
|
||||||
@@ -554,11 +556,11 @@ SuicideBomb:
|
|||||||
Damage: 70
|
Damage: 70
|
||||||
InfDeath: 2
|
InfDeath: 2
|
||||||
Versus:
|
Versus:
|
||||||
None: 25%
|
None: 25
|
||||||
Wood: 65%
|
Wood: 65
|
||||||
Light: 75%
|
Light: 75
|
||||||
Heavy: 100%
|
Heavy: 100
|
||||||
Concrete: 60%
|
Concrete: 60
|
||||||
Warhead@2Eff: CreateEffect
|
Warhead@2Eff: CreateEffect
|
||||||
Explosion: large_clsn
|
Explosion: large_clsn
|
||||||
ImpactSound: expnew14.aud
|
ImpactSound: expnew14.aud
|
||||||
@@ -583,11 +585,11 @@ MechRailgun:
|
|||||||
InfDeath: 5
|
InfDeath: 5
|
||||||
ProneModifier: 100
|
ProneModifier: 100
|
||||||
Versus:
|
Versus:
|
||||||
None: 200%
|
None: 200
|
||||||
Wood: 175%
|
Wood: 175
|
||||||
Light: 160%
|
Light: 160
|
||||||
Heavy: 100%
|
Heavy: 100
|
||||||
Concrete: 25%
|
Concrete: 25
|
||||||
|
|
||||||
AssaultCannon:
|
AssaultCannon:
|
||||||
ReloadDelay: 50
|
ReloadDelay: 50
|
||||||
@@ -601,10 +603,10 @@ AssaultCannon:
|
|||||||
InfDeath: 1
|
InfDeath: 1
|
||||||
ProneModifier: 70
|
ProneModifier: 70
|
||||||
Versus:
|
Versus:
|
||||||
Wood: 60%
|
Wood: 60
|
||||||
Light: 40%
|
Light: 40
|
||||||
Heavy: 25%
|
Heavy: 25
|
||||||
Concrete: 10%
|
Concrete: 10
|
||||||
Warhead@2Eff: CreateEffect
|
Warhead@2Eff: CreateEffect
|
||||||
Explosion: piffs
|
Explosion: piffs
|
||||||
InvalidImpactTypes: Water
|
InvalidImpactTypes: Water
|
||||||
@@ -635,11 +637,11 @@ BikeMissile:
|
|||||||
InfDeath: 2
|
InfDeath: 2
|
||||||
ValidTargets: Ground
|
ValidTargets: Ground
|
||||||
Versus:
|
Versus:
|
||||||
None: 25%
|
None: 25
|
||||||
Wood: 65%
|
Wood: 65
|
||||||
Light: 75%
|
Light: 75
|
||||||
Heavy: 100%
|
Heavy: 100
|
||||||
Concrete: 60%
|
Concrete: 60
|
||||||
Warhead@2Eff: CreateEffect
|
Warhead@2Eff: CreateEffect
|
||||||
Explosion: small_clsn
|
Explosion: small_clsn
|
||||||
ImpactSound: expnew12.aud
|
ImpactSound: expnew12.aud
|
||||||
@@ -663,10 +665,10 @@ RaiderCannon:
|
|||||||
InfDeath: 1
|
InfDeath: 1
|
||||||
ProneModifier: 70
|
ProneModifier: 70
|
||||||
Versus:
|
Versus:
|
||||||
Wood: 60%
|
Wood: 60
|
||||||
Light: 40%
|
Light: 40
|
||||||
Heavy: 25%
|
Heavy: 25
|
||||||
Concrete: 10%
|
Concrete: 10
|
||||||
Warhead@2Eff: CreateEffect
|
Warhead@2Eff: CreateEffect
|
||||||
Explosion: piffs
|
Explosion: piffs
|
||||||
InvalidImpactTypes: Water
|
InvalidImpactTypes: Water
|
||||||
@@ -690,11 +692,11 @@ FireballLauncher:
|
|||||||
InfDeath: 5
|
InfDeath: 5
|
||||||
ProneModifier: 100
|
ProneModifier: 100
|
||||||
Versus:
|
Versus:
|
||||||
None: 600%
|
None: 600
|
||||||
Wood: 148%
|
Wood: 148
|
||||||
Light: 59%
|
Light: 59
|
||||||
Heavy: 6%
|
Heavy: 6
|
||||||
Concrete: 2%
|
Concrete: 2
|
||||||
|
|
||||||
SonicZap:
|
SonicZap:
|
||||||
ReloadDelay: 120
|
ReloadDelay: 120
|
||||||
@@ -710,8 +712,8 @@ SonicZap:
|
|||||||
Damage: 100
|
Damage: 100
|
||||||
InfDeath: 5
|
InfDeath: 5
|
||||||
Versus:
|
Versus:
|
||||||
Heavy: 80%
|
Heavy: 80
|
||||||
Concrete: 60%
|
Concrete: 60
|
||||||
|
|
||||||
Dragon:
|
Dragon:
|
||||||
ReloadDelay: 50
|
ReloadDelay: 50
|
||||||
@@ -735,11 +737,11 @@ Dragon:
|
|||||||
InfDeath: 2
|
InfDeath: 2
|
||||||
ValidTargets: Ground, Air
|
ValidTargets: Ground, Air
|
||||||
Versus:
|
Versus:
|
||||||
None: 25%
|
None: 25
|
||||||
Wood: 65%
|
Wood: 65
|
||||||
Light: 75%
|
Light: 75
|
||||||
Heavy: 100%
|
Heavy: 100
|
||||||
Concrete: 60%
|
Concrete: 60
|
||||||
Warhead@2Eff: CreateEffect
|
Warhead@2Eff: CreateEffect
|
||||||
Explosion: small_clsn
|
Explosion: small_clsn
|
||||||
ImpactSound: expnew12.aud
|
ImpactSound: expnew12.aud
|
||||||
@@ -768,11 +770,11 @@ Dragon:
|
|||||||
Damage: 36
|
Damage: 36
|
||||||
InfDeath: 2
|
InfDeath: 2
|
||||||
Versus:
|
Versus:
|
||||||
None: 25%
|
None: 25
|
||||||
Wood: 65%
|
Wood: 65
|
||||||
Light: 75%
|
Light: 75
|
||||||
Heavy: 100%
|
Heavy: 100
|
||||||
Concrete: 60%
|
Concrete: 60
|
||||||
Warhead@2Eff: CreateEffect
|
Warhead@2Eff: CreateEffect
|
||||||
Explosion: medium_clsn
|
Explosion: medium_clsn
|
||||||
ImpactSound: expnew14.aud
|
ImpactSound: expnew14.aud
|
||||||
@@ -800,11 +802,11 @@ Dragon:
|
|||||||
InfDeath: 3
|
InfDeath: 3
|
||||||
ProneModifier: 100
|
ProneModifier: 100
|
||||||
Versus:
|
Versus:
|
||||||
None: 100%
|
None: 100
|
||||||
Wood: 85%
|
Wood: 85
|
||||||
Light: 68%
|
Light: 68
|
||||||
Heavy: 35%
|
Heavy: 35
|
||||||
Concrete: 35%
|
Concrete: 35
|
||||||
Warhead@2Eff: CreateEffect
|
Warhead@2Eff: CreateEffect
|
||||||
Explosion: large_explosion
|
Explosion: large_explosion
|
||||||
ImpactSound: expnew06.aud
|
ImpactSound: expnew06.aud
|
||||||
@@ -836,11 +838,11 @@ Hellfire:
|
|||||||
InfDeath: 2
|
InfDeath: 2
|
||||||
ValidTargets: Ground, Air
|
ValidTargets: Ground, Air
|
||||||
Versus:
|
Versus:
|
||||||
None: 30%
|
None: 30
|
||||||
Wood: 65%
|
Wood: 65
|
||||||
Light: 150%
|
Light: 150
|
||||||
Heavy: 100%
|
Heavy: 100
|
||||||
Concrete: 30%
|
Concrete: 30
|
||||||
Warhead@2Eff: CreateEffect
|
Warhead@2Eff: CreateEffect
|
||||||
Explosion: small_bang
|
Explosion: small_bang
|
||||||
ImpactSound: expnew12.aud
|
ImpactSound: expnew12.aud
|
||||||
@@ -868,11 +870,11 @@ Bomb:
|
|||||||
InfDeath: 3
|
InfDeath: 3
|
||||||
ProneModifier: 100
|
ProneModifier: 100
|
||||||
Versus:
|
Versus:
|
||||||
None: 200%
|
None: 200
|
||||||
Wood: 90%
|
Wood: 90
|
||||||
Light: 75%
|
Light: 75
|
||||||
Heavy: 32%
|
Heavy: 32
|
||||||
Concrete: 100%
|
Concrete: 100
|
||||||
Warhead@2Eff: CreateEffect
|
Warhead@2Eff: CreateEffect
|
||||||
Explosion: large_explosion
|
Explosion: large_explosion
|
||||||
ImpactSound: expnew09.aud
|
ImpactSound: expnew09.aud
|
||||||
@@ -903,11 +905,11 @@ Proton:
|
|||||||
InfDeath: 3
|
InfDeath: 3
|
||||||
ValidTargets: Ground, Air
|
ValidTargets: Ground, Air
|
||||||
Versus:
|
Versus:
|
||||||
None: 25%
|
None: 25
|
||||||
Wood: 65%
|
Wood: 65
|
||||||
Light: 75%
|
Light: 75
|
||||||
Heavy: 100%
|
Heavy: 100
|
||||||
Concrete: 60%
|
Concrete: 60
|
||||||
Warhead@2Eff: CreateEffect
|
Warhead@2Eff: CreateEffect
|
||||||
Explosion: small_bang
|
Explosion: small_bang
|
||||||
ImpactSound: expnew12.aud
|
ImpactSound: expnew12.aud
|
||||||
@@ -931,10 +933,10 @@ HarpyClaw:
|
|||||||
ProneModifier: 70
|
ProneModifier: 70
|
||||||
ValidTargets: Ground, Air
|
ValidTargets: Ground, Air
|
||||||
Versus:
|
Versus:
|
||||||
Wood: 60%
|
Wood: 60
|
||||||
Light: 40%
|
Light: 40
|
||||||
Heavy: 25%
|
Heavy: 25
|
||||||
Concrete: 10%
|
Concrete: 10
|
||||||
Warhead@2Eff: CreateEffect
|
Warhead@2Eff: CreateEffect
|
||||||
Explosion: piffs
|
Explosion: piffs
|
||||||
InvalidImpactTypes: Water
|
InvalidImpactTypes: Water
|
||||||
@@ -954,10 +956,10 @@ Pistola:
|
|||||||
InfDeath: 1
|
InfDeath: 1
|
||||||
ProneModifier: 70
|
ProneModifier: 70
|
||||||
Versus:
|
Versus:
|
||||||
Wood: 60%
|
Wood: 60
|
||||||
Light: 40%
|
Light: 40
|
||||||
Heavy: 25%
|
Heavy: 25
|
||||||
Concrete: 10%
|
Concrete: 10
|
||||||
Warhead@2Eff: CreateEffect
|
Warhead@2Eff: CreateEffect
|
||||||
Explosion: piff
|
Explosion: piff
|
||||||
InvalidImpactTypes: Water
|
InvalidImpactTypes: Water
|
||||||
@@ -985,7 +987,8 @@ IonCannon:
|
|||||||
ValidTargets: Ground, Air
|
ValidTargets: Ground, Air
|
||||||
Warhead@1Dam_impact: SpreadDamage
|
Warhead@1Dam_impact: SpreadDamage
|
||||||
Spread: 1c0
|
Spread: 1c0
|
||||||
Damage: 1000
|
Damage: 100
|
||||||
|
Falloff: 1000, 368, 135, 50, 18, 7, 0
|
||||||
InfDeath: 5
|
InfDeath: 5
|
||||||
ProneModifier: 100
|
ProneModifier: 100
|
||||||
ValidTargets: Ground, Air
|
ValidTargets: Ground, Air
|
||||||
@@ -1013,10 +1016,10 @@ VulcanTower:
|
|||||||
Damage: 18
|
Damage: 18
|
||||||
InfDeath: 1
|
InfDeath: 1
|
||||||
Versus:
|
Versus:
|
||||||
Wood: 60%
|
Wood: 60
|
||||||
Light: 40%
|
Light: 40
|
||||||
Heavy: 25%
|
Heavy: 25
|
||||||
Concrete: 10%
|
Concrete: 10
|
||||||
Warhead@2Eff: CreateEffect
|
Warhead@2Eff: CreateEffect
|
||||||
Explosion: piffs
|
Explosion: piffs
|
||||||
InvalidImpactTypes: Water
|
InvalidImpactTypes: Water
|
||||||
@@ -1041,11 +1044,11 @@ RPGTower:
|
|||||||
InfDeath: 2
|
InfDeath: 2
|
||||||
ProneModifier: 70
|
ProneModifier: 70
|
||||||
Versus:
|
Versus:
|
||||||
None: 30%
|
None: 30
|
||||||
Wood: 75%
|
Wood: 75
|
||||||
Light: 90%
|
Light: 90
|
||||||
Heavy: 100%
|
Heavy: 100
|
||||||
Concrete: 70%
|
Concrete: 70
|
||||||
Warhead@2Eff: CreateEffect
|
Warhead@2Eff: CreateEffect
|
||||||
Explosion: large_clsn
|
Explosion: large_clsn
|
||||||
ImpactSound: expnew14.aud
|
ImpactSound: expnew14.aud
|
||||||
@@ -1115,10 +1118,10 @@ TiberiumExplosion:
|
|||||||
Damage: 10
|
Damage: 10
|
||||||
InfDeath: 3
|
InfDeath: 3
|
||||||
Versus:
|
Versus:
|
||||||
None: 90%
|
None: 90
|
||||||
Wood: 75%
|
Wood: 75
|
||||||
Light: 60%
|
Light: 60
|
||||||
Heavy: 25%
|
Heavy: 25
|
||||||
Warhead@2Res: CreateResource
|
Warhead@2Res: CreateResource
|
||||||
AddsResourceType: Tiberium
|
AddsResourceType: Tiberium
|
||||||
Size: 1,1
|
Size: 1,1
|
||||||
|
|||||||
Reference in New Issue
Block a user