//======== (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 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