NS/main/source/mod/AvHAlienWeapons.h
pierow 68b7278072 weapon animation fixes
- Fixed animation issues with pistol binary trigger and moved the binary triggering to client code
- Fixed reload animation not always playing
- Fixed numerous incorrect or broken alien weapon animations on every class
- Added transitional animation out of gorge building
2024-04-17 22:41:10 -04:00

1231 lines
22 KiB
C++

//======== (C) Copyright 2001 Charles G. Cleveland All rights reserved. =========
//
// The copyright to the contents herein is the property of Charles G. Cleveland.
// The contents may be used and/or copied only with the written permission of
// Charles G. Cleveland, or in accordance with the terms and conditions stipulated in
// the agreement/contract under which the contents have been supplied.
//
// Purpose:
//
// $Workfile: AvHAlienWeapons.h$
// $Date: 2002/10/16 00:48:10 $
//
//-------------------------------------------------------------------------------
// $Log: AvHAlienWeapons.h,v $
// Revision 1.17 2002/10/16 00:48:10 Flayra
// - Removed unneeded sprite
//
// Revision 1.16 2002/08/16 02:32:09 Flayra
// - Added damage types
// - Swapped umbra and bile bomb
//
// Revision 1.15 2002/07/26 23:03:08 Flayra
// - New artwork
//
// Revision 1.14 2002/07/23 16:58:09 Flayra
// - Updates for new viewmodel artwork
//
// Revision 1.13 2002/07/08 16:45:15 Flayra
// - Refactoring for cheat protection, moved blinking in here from separate class
//
// Revision 1.12 2002/07/01 21:15:27 Flayra
// - Added new alien abilities (primal scream, babblers, bilebomb, umbra)
//
// Revision 1.11 2002/06/25 17:29:50 Flayra
// - Better default behavior, removed building weapons
//
// Revision 1.10 2002/06/10 19:50:01 Flayra
// - Updated with new alien view model artwork (with running anims)
//
// Revision 1.9 2002/06/03 16:27:05 Flayra
// - Animation constants and changes with new artwork
//
// Revision 1.8 2002/05/23 02:34:00 Flayra
// - Post-crash checkin. Restored @Backup from around 4/16. Contains changes for last four weeks of development.
//
//===============================================================================
#ifndef AVHALIENWEAPONS_H
#define AVHALIENWEAPONS_H
#include "AvHAlienWeapon.h"
#ifdef AVH_SERVER
class AvHSpit : public CBaseEntity
{
public:
virtual void Precache(void);
virtual void Spawn(void);
void EXPORT SpitTouch(CBaseEntity *pOther);
void EXPORT SpitDeath();
void SetDamage(float inDamage);
private:
float mDamage;
};
#endif
class AvHSpitGun : public AvHAlienWeapon
{
public:
AvHSpitGun()
{ this->Init(); }
virtual int GetBarrelLength() const;
virtual float GetRateOfFire() const;
virtual int GetDamageType() const;
virtual int GetDeployAnimation() const;
virtual bool GetFiresUnderwater() const;
virtual bool GetIsDroppable() const;
int GetItemInfo(ItemInfo *p) const;
virtual int GetShootAnimation() const;
virtual char* GetViewModel() const;
virtual int iItemSlot(void);
virtual void Precache(void);
virtual void Spawn();
virtual bool UsesAmmo(void) const;
protected:
virtual void FireProjectiles(void);
virtual void Init();
};
class AvHClaws : public AvHAlienWeapon
{
public:
AvHClaws()
{ this->Init(); }
virtual int GetBarrelLength() const;
virtual bool GetIsGunPositionValid() const;
virtual float GetRateOfFire() const;
virtual int GetDamageType() const;
virtual int GetDeployAnimation() const;
virtual float GetDeployTime() const;
virtual bool GetFiresUnderwater() const;
virtual int GetIdleAnimation() const;
virtual bool GetIsDroppable() const;
int GetItemInfo(ItemInfo *p) const;
virtual bool GetMustPressTriggerForEachShot() const
{ return true; }
virtual int iItemSlot(void);
virtual int GetShootAnimation() const;
virtual char* GetViewModel() const;
virtual void Precache(void);
virtual void Spawn();
virtual bool UsesAmmo(void) const;
virtual BOOL UseDecrement(void);
protected:
virtual void FireProjectiles(void);
virtual void Init();
};
class AvHSwipe : public AvHAlienWeapon
{
public:
AvHSwipe()
{ this->Init(); }
virtual int GetBarrelLength() const;
virtual bool GetIsGunPositionValid() const;
virtual float GetRateOfFire() const;
virtual int GetDamageType() const;
virtual bool GetFiresUnderwater() const;
virtual int GetDeployAnimation() const;
virtual int GetIdleAnimation() const;
virtual int GetShootAnimation() const;
virtual char* GetViewModel() const;
virtual bool GetIsDroppable() const;
int GetItemInfo(ItemInfo *p) const;
virtual bool GetMustPressTriggerForEachShot() const
{ return true; }
virtual int iItemSlot(void);
virtual void Precache(void);
virtual void Spawn();
virtual bool UsesAmmo(void) const;
virtual BOOL UseDecrement(void);
protected:
virtual void FireProjectiles(void);
virtual void Init();
};
#ifdef AVH_SERVER
class AvHSporeProjectile : public CBaseEntity
{
public:
AvHSporeProjectile();
virtual void Precache(void);
virtual void SetDamage(float inDamage);
virtual void Spawn(void);
void EXPORT SporeCloudThink();
void EXPORT SporeTouch(CBaseEntity *pOther);
private:
float mTimeHit;
float mDamage;
};
#endif
class AvHSpore : public AvHAlienWeapon
{
public:
AvHSpore()
{ this->Init(); }
virtual int GetBarrelLength() const;
virtual float GetRateOfFire() const;
virtual int GetDamageType() const;
virtual int GetDeployAnimation() const;
virtual float GetDeployTime() const;
virtual bool GetFiresUnderwater() const;
virtual int GetIdleAnimation() const;
virtual bool GetIsDroppable() const;
int GetItemInfo(ItemInfo *p) const;
virtual int GetShootAnimation() const;
virtual char* GetViewModel() const;
virtual int iItemSlot(void);
virtual void Precache(void);
virtual void Spawn();
virtual bool UsesAmmo(void) const;
protected:
virtual void FireProjectiles(void);
virtual void Init();
};
class AvHBite : public AvHAlienWeapon
{
public:
AvHBite()
{ this->Init(); }
virtual int GetBarrelLength() const;
virtual bool GetIsGunPositionValid() const;
virtual float GetRateOfFire() const;
virtual char* GetBiteSound() const;
virtual int GetDeployAnimation() const;
virtual bool GetFiresUnderwater() const;
virtual int GetIdleAnimation() const;
virtual int GetShootAnimation() const;
virtual bool GetIsDroppable() const;
int GetItemInfo(ItemInfo *p) const;
virtual bool GetMustPressTriggerForEachShot() const
{ return true; }
virtual char* GetViewModel() const;
virtual int iItemSlot(void);
virtual void Precache(void);
virtual void Spawn();
virtual bool UsesAmmo(void) const;
virtual BOOL UseDecrement(void);
protected:
virtual void FireProjectiles(void);
virtual void Init();
};
class AvHBite2 : public AvHBite
{
public:
AvHBite2()
{ this->Init(); }
virtual int GetBarrelLength() const;
virtual bool GetIsGunPositionValid() const;
virtual float GetRateOfFire() const;
virtual int GetDamageType() const;
virtual int GetDeployAnimation() const;
virtual float GetDeployTime() const;
virtual int GetIdleAnimation() const;
int GetItemInfo(ItemInfo *p) const;
virtual int GetShootAnimation() const;
virtual char* GetViewModel() const;
virtual int iItemSlot(void);
virtual void Precache();
virtual void Spawn();
protected:
virtual void Init();
};
class AvHSpikeGun : public AvHAlienWeapon
{
public:
AvHSpikeGun()
{ this->Init(); }
virtual int GetBarrelLength() const;
virtual float GetRateOfFire() const;
virtual int GetDamageType() const;
virtual int GetDeployAnimation() const;
virtual float GetDeployTime() const;
virtual int GetIdleAnimation() const;
virtual bool GetFiresUnderwater() const;
virtual bool GetIsDroppable() const;
int GetItemInfo(ItemInfo *p) const;
virtual int GetShootAnimation() const;
virtual char* GetViewModel() const;
virtual int iItemSlot(void);
virtual void Precache(void);
virtual void Spawn();
//virtual void WeaponIdle();
protected:
virtual void FireProjectiles(void);
virtual void Init();
//int mFramesSinceMoreAmmo;
};
class AvHHealingSpray : public AvHAlienWeapon
{
public:
AvHHealingSpray()
{ this->Init(); }
virtual int GetBarrelLength() const;
virtual float GetRateOfFire() const;
virtual int GetDamageType() const;
virtual int GetDeployAnimation() const;
virtual int GetIdleAnimation() const;
virtual int GetShootAnimation() const;
int GetItemInfo(ItemInfo *p) const;
virtual char* GetViewModel() const;
virtual int iItemSlot(void);
virtual void Precache(void);
virtual void SecondaryAttack();
virtual void Spawn();
protected:
virtual void FireProjectiles(void);
virtual void Init();
};
class AvHMetabolize : public AvHAlienWeapon
{
public:
AvHMetabolize()
{ this->Init(); }
virtual void DeductCostForShot(void);
virtual BOOL Deploy();
virtual int GetBarrelLength() const;
virtual float GetRateOfFire() const;
virtual int GetDeployAnimation() const;
virtual int GetIdleAnimation() const;
#ifdef AVH_SERVER
virtual int GetResourceCost() const;
#endif
virtual int GetShootAnimation() const;
int GetItemInfo(ItemInfo *p) const;
virtual char* GetViewModel() const;
virtual int iItemSlot(void);
virtual void ItemPostFrame(void);
virtual void Precache(void);
virtual void Spawn();
protected:
virtual void FireProjectiles(void);
virtual void Init();
virtual void SetAnimationAndSound(void);
float mTimeOfLastMetabolizeViewAnim;
};
class AvHWebSpinner : public AvHAlienWeapon
{
public:
AvHWebSpinner()
{ this->Init(); }
virtual BOOL Deploy();
virtual int GetBarrelLength() const;
virtual float GetRateOfFire() const;
virtual int GetDeployAnimation() const;
virtual float GetDeployTime() const;
virtual int GetIdleAnimation() const;
virtual int GetShootAnimation() const;
virtual bool GetFiresUnderwater() const;
#ifdef AVH_SERVER
virtual bool GetLastPoint(vec3_t& outLastPoint) const;
virtual void SetLastPoint(vec3_t& inLastPoint);
#endif
virtual bool GetIsDroppable() const;
int GetItemInfo(ItemInfo *p) const;
virtual char* GetViewModel() const;
virtual int iItemSlot(void);
virtual void Precache(void);
virtual void Spawn();
virtual bool UsesAmmo(void) const;
protected:
virtual void FireProjectiles(void);
virtual void Init();
#ifdef AVH_SERVER
bool mPlacedValidWebPointSinceDeploy;
vec3_t mLastValidWebPoint;
//vec3_t mLastValidWebNormal;
#endif
};
#ifdef AVH_SERVER
class AvHWebProjectile : public CBaseEntity
{
public:
virtual bool CreateWeb();
virtual void Precache(void);
virtual void Spawn(void);
void EXPORT WebTouch(CBaseEntity *pOther);
private:
bool GetWebSpinner(AvHWebSpinner*& outSpinner);
};
#endif
class AvHBabblerGun : public AvHAlienWeapon
{
public:
AvHBabblerGun()
{ this->Init(); }
virtual int GetBarrelLength() const;
virtual int GetDeployAnimation() const;
virtual int GetIdleAnimation() const;
virtual int GetShootAnimation() const;
int GetItemInfo(ItemInfo *p) const;
virtual char* GetViewModel() const;
virtual int iItemSlot(void);
virtual void Precache(void);
virtual void Spawn();
protected:
virtual void FireProjectiles(void);
virtual void Init();
};
class AvHPrimalScream : public AvHAlienWeapon
{
public:
AvHPrimalScream()
{ this->Init(); }
virtual int GetBarrelLength() const;
virtual float GetRateOfFire() const;
virtual bool GetFiresUnderwater() const;
virtual bool GetIsDroppable() const;
virtual int GetDeployAnimation() const;
virtual float GetDeployTime() const;
virtual int GetIdleAnimation() const;
virtual int GetShootAnimation() const;
int GetItemInfo(ItemInfo *p) const;
virtual char* GetViewModel() const;
virtual int iItemSlot(void);
virtual void Precache(void);
virtual void Spawn();
virtual bool UsesAmmo(void) const;
protected:
virtual void FireProjectiles(void);
virtual void Init();
};
//class AvHBuildingGun : public AvHAlienWeapon
//{
//public:
// AvHBuildingGun()
// { this->Init(); }
//
// virtual CBaseEntity* CreateBuilding(const Vector& inLocation) const;
//
// virtual int GetBarrelLength() const;
//
// virtual char* GetBuildingClassName() const = 0;
//
// virtual AvHMessageID GetBuildingMessageID() const = 0;
//
// virtual int GetBuildingPointCost() const = 0;
//
// virtual int GetDeployAnimation() const;
//
// virtual float GetDeployTime() const;
//
// virtual int GetIdleAnimation() const;
//
// virtual int GetShootAnimation() const;
//
// virtual int GetMaxAllowed() const;
//
// virtual int GetBuildingRadius() const = 0;
//
// virtual bool GetFiresUnderwater() const;
//
// virtual bool GetIsDroppable() const;
//
// virtual bool GetMustPressTriggerForEachShot() const;
//
// virtual float GetRange() const;
//
// virtual char* GetViewModel() const;
//
// virtual void Precache(void);
//
// virtual void Spawn() = 0;
//
// virtual bool UsesAmmo(void) const;
//
//protected:
// virtual void FireProjectiles(void);
//
// virtual void Init();
//};
//
//class AvHResourceTowerGun : public AvHBuildingGun
//{
//public:
//
// virtual AvHMessageID GetBuildingMessageID() const;
//
// virtual char* GetBuildingClassName() const;
//
// virtual int GetBuildingPointCost() const;
//
// virtual int GetBuildingRadius() const;
//
// virtual int GetItemInfo(ItemInfo *p);
//
// virtual int GetMaxAllowed() const;
//
// virtual int iItemSlot(void);
//
// virtual void Spawn();
//
//};
//
//
//class AvHOffenseChamberGun : public AvHBuildingGun
//{
//public:
//
// virtual AvHMessageID GetBuildingMessageID() const;
//
// virtual char* GetBuildingClassName() const;
//
// virtual int GetBuildingPointCost() const;
//
// virtual int GetBuildingRadius() const;
//
// virtual int GetItemInfo(ItemInfo *p);
//
// virtual int iItemSlot(void);
//
// virtual void Spawn();
//
//};
//
//
//class AvHDefenseChamberGun : public AvHBuildingGun
//{
//public:
//
// virtual AvHMessageID GetBuildingMessageID() const;
//
// virtual char* GetBuildingClassName() const;
//
// virtual int GetBuildingPointCost() const;
//
// virtual int GetBuildingRadius() const;
//
// virtual int GetItemInfo(ItemInfo *p);
//
// virtual int iItemSlot(void);
//
// virtual void Spawn();
//
//};
//
//class AvHSensoryChamberGun : public AvHBuildingGun
//{
//public:
//
// virtual AvHMessageID GetBuildingMessageID() const;
//
// virtual char* GetBuildingClassName() const;
//
// virtual int GetBuildingPointCost() const;
//
// virtual int GetBuildingRadius() const;
//
// virtual int GetItemInfo(ItemInfo *p);
//
// virtual int iItemSlot(void);
//
// virtual void Spawn();
//
//};
//
//class AvHMovementChamberGun : public AvHBuildingGun
//{
//public:
//
// virtual AvHMessageID GetBuildingMessageID() const;
//
// virtual char* GetBuildingClassName() const;
//
// virtual int GetBuildingPointCost() const;
//
// virtual int GetBuildingRadius() const;
//
// virtual int GetItemInfo(ItemInfo *p);
//
// virtual int iItemSlot(void);
//
// virtual void Spawn();
//
//};
//
//class AvHHiveGun : public AvHAlienWeapon
//{
//public:
//
// virtual int GetBarrelLength() const;
//
// virtual bool GetFiresUnderwater() const;
//
// virtual bool GetIsDroppable() const;
//
// virtual int GetItemInfo(ItemInfo *p);
//
// virtual char* GetViewModel() const;
//
// virtual int iItemSlot(void);
//
// virtual void Precache(void);
//
// virtual void Spawn();
//
// virtual bool UsesAmmo(void) const;
//
//protected:
// virtual void FireProjectiles(void);
//
// virtual void Init();
//
//};
class AvHParalysisGun : public AvHAlienWeapon
{
public:
AvHParalysisGun()
{ this->Init(); }
virtual int GetBarrelLength() const;
virtual int GetDeployAnimation() const;
virtual float GetDeployTime() const;
virtual int GetIdleAnimation() const;
virtual int GetShootAnimation() const;
virtual bool GetFiresUnderwater() const;
virtual bool GetIsDroppable() const;
int GetItemInfo(ItemInfo *p) const;
virtual char* GetViewModel() const;
virtual int iItemSlot(void);
virtual void Precache(void);
virtual void Spawn();
virtual bool UsesAmmo(void) const;
protected:
virtual void FireProjectiles(void);
virtual void Init();
};
class AvHParasiteGun : public AvHAlienWeapon
{
public:
AvHParasiteGun()
{ this->Init(); }
virtual int GetBarrelLength() const;
virtual float GetRateOfFire() const;
virtual int GetDamageType() const;
virtual int GetDeployAnimation() const;
virtual bool GetFiresUnderwater() const;
virtual bool GetIsDroppable() const;
virtual int GetShootAnimation() const;
int GetItemInfo(ItemInfo *p) const;
virtual char* GetViewModel() const;
virtual int iItemSlot(void);
virtual void Precache(void);
virtual void Spawn();
virtual bool UsesAmmo(void) const;
protected:
virtual void FireProjectiles(void);
virtual void Init();
};
#ifdef AVH_SERVER
class AvHUmbraCloud : public CBaseEntity
{
public:
AvHUmbraCloud();
virtual void Precache(void);
virtual void Spawn(void);
private:
float mTimeHit;
};
class AvHUmbraProjectile : public CBaseEntity
{
public:
virtual void Spawn(void);
void EXPORT UmbraTouch(CBaseEntity* inOther);
};
#endif
class AvHUmbraGun : public AvHAlienWeapon
{
public:
AvHUmbraGun()
{ this->Init(); }
virtual int GetBarrelLength() const;
virtual float GetRateOfFire() const;
virtual int GetDeployAnimation() const;
virtual bool GetFiresUnderwater() const;
virtual int GetIdleAnimation() const;
virtual int GetShootAnimation() const;
virtual bool GetIsDroppable() const;
int GetItemInfo(ItemInfo *p) const;
virtual char* GetViewModel() const;
virtual int iItemSlot(void);
virtual void Precache(void);
virtual void Spawn();
virtual bool UsesAmmo(void) const;
protected:
virtual void FireProjectiles(void);
virtual void Init();
};
class AvHDivineWind : public AvHAlienWeapon
{
public:
AvHDivineWind()
{ this->Init(); }
virtual BOOL CanHolster(void);
virtual int GetBarrelLength() const;
virtual float GetRateOfFire() const;
virtual int GetDeployAnimation() const;
virtual bool GetFiresUnderwater() const;
virtual bool GetIsDroppable() const;
virtual int GetShootAnimation() const;
int GetItemInfo(ItemInfo *p) const;
virtual char* GetViewModel() const;
virtual int iItemSlot(void);
virtual BOOL IsUseable(void);
virtual void Precache(void);
virtual void Spawn();
virtual bool UsesAmmo(void) const;
void EXPORT Explode(void);
protected:
virtual void FireProjectiles(void);
virtual void Init();
bool mPrimed;
};
#ifdef AVH_SERVER
class AvHBileBomb : public CBaseEntity
{
public:
virtual void Spawn(void);
void EXPORT BileBombTouch(CBaseEntity *pOther);
virtual void Precache(void);
void SetDamage(float inDamage);
private:
float mDamage;
//float mExplodeSprite;
};
#endif
class AvHBileBombGun : public AvHAlienWeapon
{
public:
AvHBileBombGun()
{ this->Init(); }
virtual int GetBarrelLength() const;
virtual float GetRateOfFire() const;
virtual int GetDamageType() const;
virtual int GetDeployAnimation() const;
virtual int GetShootAnimation() const;
int GetItemInfo(ItemInfo *p) const;
virtual char* GetViewModel() const;
virtual int iItemSlot(void);
virtual void Precache(void);
virtual void Spawn();
protected:
virtual void FireProjectiles(void);
virtual void Init();
};
#ifdef AVH_SERVER
class AvHAcidRocket : public CBaseEntity
{
public:
virtual void Precache(void);
virtual void Spawn(void);
void EXPORT AcidRocketTouch(CBaseEntity *pOther);
void EXPORT AcidRocketDeath();
void SetDamage(float inDamage);
private:
float mDamage;
};
#endif
class AvHAcidRocketGun : public AvHAlienWeapon
{
public:
AvHAcidRocketGun()
{ this->Init(); }
virtual int GetBarrelLength() const;
virtual float GetRateOfFire() const;
virtual int GetDeployAnimation() const;
virtual bool GetFiresUnderwater() const;
virtual bool GetIsDroppable() const;
virtual int GetIdleAnimation() const;
int GetItemInfo(ItemInfo *p) const;
virtual bool GetMustPressTriggerForEachShot() const;
virtual int GetShootAnimation() const;
virtual char* GetViewModel() const;
virtual int iItemSlot(void);
virtual void Precache(void);
virtual void Spawn();
protected:
virtual void FireProjectiles(void);
virtual void Init();
};
class AvHDevour : public AvHAlienWeapon
{
public:
AvHDevour()
{ this->Init(); }
virtual BOOL CanHolster(void);
virtual int GetBarrelLength() const;
virtual float GetRateOfFire() const;
virtual bool GetIsCapableOfFiring() const;
virtual int GetDeployAnimation() const;
virtual float GetDeployTime() const;
virtual bool GetFiresUnderwater() const;
virtual int GetIdleAnimation() const;
virtual bool GetIsDroppable() const;
virtual int GetShootAnimation() const;
int GetItemInfo(ItemInfo *p) const;
virtual char* GetViewModel() const;
virtual int iItemSlot(void);
virtual void Precache(void);
virtual void Spawn();
virtual bool UsesAmmo(void) const;
protected:
virtual void FireProjectiles(void);
virtual void Init();
virtual bool ProcessValidAttack(void);
};
#ifdef AVH_SERVER
class AvHStompProjectile : public CBaseEntity
{
public:
AvHStompProjectile();
virtual void Precache(void);
virtual void SetStunTime(float inStunTime);
virtual void Spawn(void);
void EXPORT StompTouch(CBaseEntity* inOther);
Vector mSpawnLocation;
private:
float mStunTime;
};
#endif
class AvHStomp : public AvHAlienWeapon
{
public:
AvHStomp()
{ this->Init(); }
virtual BOOL CanHolster(void);
virtual int GetBarrelLength() const;
virtual float GetRateOfFire() const;
virtual int GetDeployAnimation() const;
virtual float GetDeployTime() const;
virtual void GetEventAngles(Vector& outAngles) const;
virtual void GetEventOrigin(Vector& outOrigin) const;
virtual bool GetFiresUnderwater() const;
virtual int GetIdleAnimation() const;
virtual bool GetIsDroppable() const;
virtual int GetShootAnimation() const;
int GetItemInfo(ItemInfo *p) const;
virtual char* GetViewModel() const;
virtual int iItemSlot(void);
virtual BOOL IsUseable(void);
virtual void Precache(void);
virtual void Spawn();
virtual bool UsesAmmo(void) const;
protected:
virtual void GetStompOrigin(Vector& outOrigin) const;
virtual void GetStompVelocity(Vector& outVelocity) const;
virtual void FireProjectiles(void);
virtual void Init();
};
#endif