text: /*
  	WeaponEMPCannon.h
  	(c)2004 Palestar Inc, Richard Lyle
  */
  
  #ifndef WEAPONEMPCANNON_H
  #define WEAPONEMPCANNON_H
  
  #include "DarkSpace/Constants.h"
  #include "DarkSpace/GadgetWeapon.h"
  
  
  
  //----------------------------------------------------------------------------
  
  class WeaponEMPCannon : public GadgetWeapon
  {
  public:
  	DECLARE_WIDGET_CLASS();
  
  	// NounGadget interface
  	Type type() const
  	{
  		return WEAPON;
  	}
  	int maxDamage() const
  	{
  		return (5700 + (level() * 225));
  	}
  	int addValue() const
  	{
  		return 7000;
  	}
  	int buildTechnology() const
  	{
  		return 25;
  	}
  	int	buildCost() const
  	{
  		return 150;
  	}
  	dword buildFlags() const
  	{
  		return NounPlanet::FLAG_METALS;
  	}
  	int buildTime() const
  	{
  		return 460;
  	}
  	// GadgetWeapon interface
  	int energyCost() const	
  	{
  		return (280 + (level() * 56));
  	}
  	int energyCharge() const
  	{
  		return 5;
  	}
  	int ammoCost() const
  	{
  		return 0;
  	}
  	int ammoMax() const
  	{
  		return 0;
  	}
  	int ammoReload() const
  	{
  		return 0;
  	}
  	int ammoResources() const
  	{
  		return 0;
  	}
  	bool needsTarget() const
  	{
  		return true;
  	}
  	bool needsLock() const
  	{
  		return false;
  	}
  	int lockTime() const
  	{
  		return 0;
  	}
  	dword lockType() const
  	{
  		return 0;
  	}
  	bool checkRange() const
  	{
  		return true;
  	}
  	bool inheritVelocity() const
  	{
  		return true;
  	}
  	bool turret() const
  	{
  		return true;
  	}
  	int	maxProjectiles() const
  	{
  		return 12;
  	}
  	int projectileCount() const
  	{
  		return 4;
  	}
  	int projectileDelay() const
  	{
  		return 7;
  	}
  	bool projectileSmart() const
  	{
  		return false;
  	}
  	bool isMine() const
  	{
  		return false;
  	}
  	float projectileVelocity() const
  	{
  		return 400.0f - (level() * 20.0f);
  	}
  	float projectileLife() const
  	{
  		return 800.0f / projectileVelocity();
  	}
  	float projectileSig() const
  	{
  		return 0.0f;
  	}
  	bool projectileCollidable() const
  	{
  		return false;
  	}
  	bool projectileAutoTarget() const
  	{
  		return false;
  	}
  	float turnRate() const
  	{
  		return 0.0f;
  	}
  	int tracerRate() const
  	{
  		return 40;
  	}
  	int tracerLife() const
  	{
  		return TICKS_PER_SECOND * 3;
  	}
  	dword damageType() const
  	{
  		return DAMAGE_EMP;
  	}
  	int damage() const
  	{
  		return (175 + (level() * 35));
  	}
  	int damageRandom() const
  	{
  		return (350 + (level() * 70));
  	}
  	bool reverseFalloff() const
  	{
  		return false;
  	}
  	float damageFalloff() const
  	{
  		return 0.833f;
  	}
  	int repairRate() const
  	{
  		return 3;
  	}
  	int areaDamage() const
  	{
  		return 0;
  	}
  	int areaDamageRandom() const
  	{
  		return 0;
  	}
  	float areaDamageRadius() const
  	{
  		return 0.0f;
  	}
  	float armTime() const
  	{
  		return 0.0f;
  	}
  };
  
  //----------------------------------------------------------------------------
  
  
  
  #endif
  
  //----------------------------------------------------------------------------
  // EOF
  