prevent inappropriate weapons from being used

This commit is contained in:
Chris Forbes
2009-12-06 21:40:06 +13:00
parent 8973690c62
commit 5382f5c627
4 changed files with 15 additions and 2 deletions

View File

@@ -4,6 +4,7 @@ using System.Linq;
using System.Text;
using OpenRa.Game.GameRules;
using OpenRa.Game.Effects;
using OpenRa.Game.Traits;
namespace OpenRa.Game
{
@@ -50,5 +51,14 @@ namespace OpenRa.Game
return rawDamage * multiplier;
}
public static bool WeaponValidForTarget(WeaponInfo weapon, Actor target)
{
var projectile = Rules.ProjectileInfo[weapon.Projectile];
if (projectile.ASW) return false; // we don't support ASW yet. change this when subs can be identified.
if (projectile.AA && target.traits.Contains<Helicopter>()) return true;
return projectile.AG;
}
}
}

View File

@@ -4,7 +4,7 @@ namespace OpenRa.Game.GameRules
class ProjectileInfo
{
public readonly bool AA = false;
public readonly bool AG = false;
public readonly bool AG = true;
public readonly bool ASW = false;
public readonly bool Animates = false;
public readonly bool Arcing = false;

View File

@@ -63,6 +63,8 @@ namespace OpenRa.Game.Traits
var weapon = Rules.WeaponInfo[weaponName];
if (weapon.Range * weapon.Range < (target.Location - self.Location).LengthSquared) return false;
if (!Combat.WeaponValidForTarget(weapon, target)) return false;
fireDelay = weapon.ROF;
var projectile = Rules.ProjectileInfo[weapon.Projectile];

View File

@@ -117,7 +117,8 @@ Traits=Unit, Mobile, RenderUnit
Description=Gunboat
WaterBound=yes
BuiltAt=syrd
Traits=Unit, Mobile, RenderUnit
Traits=Unit, Mobile, Turreted, AttackTurreted, RenderUnitTurreted
PrimaryOffset=0,-6,0,-1