⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gameweapons.h

📁 Blood 2全套源码
💻 H
📖 第 1 页 / 共 2 页
字号:
#ifndef __GAMEWEAPONS_H__
#define __GAMEWEAPONS_H__

#include "Weapon.h"
#include "GameProjectiles.h"
#include "ClientLightningSFX.h"
#include "ClientLaserBeamSFX.h"

//*****************************************************************************//

class CBeretta : public CWeapon
{
	public:
		CBeretta() : CWeapon(WEAP_BERETTA)
		{
			m_nFlags = FLAG_ENVIRONMENTMAP;
			m_fChromeValue = 0.05f;
			m_bMultiDamageBoost = DTRUE;
		}
};

//*****************************************************************************//

#define BARREL_1 1
#define BARREL_2 2

//*****************************************************************************//

class CShotgun : public CWeapon
{
	public:
		CShotgun() : CWeapon(WEAP_SHOTGUN) 
		{
			m_nOrigFireAnim = (DDWORD)-1;
			m_dwCurBarrel			= BARREL_1;
			m_bPlayImpactSound		= DTRUE;

			m_nFlags = FLAG_ENVIRONMENTMAP;
			m_fChromeValue = 0.05f;
		}

		DDWORD		Fire();

	private:
		char*		m_szShotgunShellFilename;
		DDWORD		m_nOrigFireAnim;
		DDWORD		m_dwCurBarrel;	
		DBOOL		m_bPlayImpactSound;
};

//*****************************************************************************//

#ifdef _ADD_ON

class CCombatShotgun : public CWeapon
{
	public:
		CCombatShotgun() : CWeapon(WEAP_COMBATSHOTGUN) 
		{
			m_nFlags = FLAG_ENVIRONMENTMAP;
			m_fChromeValue = 0.05f;
			m_bMultiDamageBoost = DTRUE;
		}

		// Alt fire for Assault Rifle is a grenade launcher.
		DBYTE GetAmmoType(DBOOL bAltFire = DFALSE) 
		{ 
			if (!bAltFire) return m_nAmmoType;
			else return AMMO_DIEBUGDIE;
		}

	private:
};

#endif

//*****************************************************************************//

class CSniperRifle : public CWeapon
{
	public:
		CSniperRifle() : CWeapon(WEAP_SNIPERRIFLE)
		{
			m_nFlags = FLAG_ENVIRONMENTMAP;
			m_fChromeValue = 0.05f;
		}
};

//*****************************************************************************//

class CAssaultRifle : public CWeapon
{
	public:
		CAssaultRifle() : CWeapon(WEAP_ASSAULTRIFLE)
		{
			m_nFlags = FLAG_ENVIRONMENTMAP;
			m_fChromeValue = 0.05f;
			m_bMultiDamageBoost = DTRUE;
		}

		// Alt fire for Assault Rifle is a grenade launcher.
		DBYTE GetAmmoType(DBOOL bAltFire = DFALSE) 
		{ 
			if (!bAltFire) return m_nAmmoType;
			else return AMMO_DIEBUGDIE;
		}
};

//*****************************************************************************//

class CSubMachineGun : public CWeapon
{
	public:
		CSubMachineGun() : CWeapon(WEAP_SUBMACHINEGUN)
		{
			m_nFlags = FLAG_ENVIRONMENTMAP;
			m_fChromeValue = 0.05f;
			m_bMultiDamageBoost = DTRUE;
		}
};

//*****************************************************************************//

class CFlareGun : public CWeapon
{
	public:
		CFlareGun() : CWeapon(WEAP_FLAREGUN)
		{
			m_nFlags = FLAG_ENVIRONMENTMAP;
			m_fChromeValue = 0.05f;
		}

		void FireSpread(Spread *spread, DDWORD shots, DFLOAT range, DBOOL bAltFire, DVector *rDir);
};

//*****************************************************************************//

class CHowitzer : public CWeapon
{
	public:
		CHowitzer() : CWeapon(WEAP_HOWITZER)
		{
			m_nFlags = FLAG_ENVIRONMENTMAP;
			m_fChromeValue = 0.05f;
		}
};

//*****************************************************************************//

class CBugSpray : public CWeapon
{
	public:
		CBugSpray() : CWeapon(WEAP_BUGSPRAY)
		{
			m_nFlags = FLAG_ENVIRONMENTMAP;
			m_fChromeValue = 0.05f;
		}
};

//*****************************************************************************//

class CNapalmCannon : public CWeapon
{
	public:
		CNapalmCannon() : CWeapon(WEAP_NAPALMCANNON)
		{
			m_nFlags = FLAG_ENVIRONMENTMAP;
			m_fChromeValue = 0.05f;
		}

	protected:
		CProjectile* FireProjectile(DVector *vFire, DFLOAT dist, DBOOL bAltFire);
};

//*****************************************************************************//

class CMiniGun : public CWeapon
{
	public:
		CMiniGun() : CWeapon(WEAP_MINIGUN) 
		{
			m_bEjectShell = DFALSE;

			m_nFlags = FLAG_ENVIRONMENTMAP;
			m_fChromeValue = 0.05f;

//			m_bMultiDamageBoost = DTRUE;
		}

	protected:
		// Stub function so minigun doesn't make impact sprites.
		void AddImpact(DVector vPos, DVector vFire, DVector vNormal) {}
};

//*****************************************************************************//

#define		VOODOO_WONKY_DIST		3000.0f
#define		VOODOO_WONKY_FOV		0.65f
#define		VOODOO_PRIMARY_FOV		0.9f

//*****************************************************************************//

class CVoodooDoll : public CWeapon
{
	public:
		CVoodooDoll() : CWeapon(WEAP_VOODOO)
		{
			m_nHitType = 0;
			m_nHitFX = 0;
		}

		DBOOL	FireVector(DVector *vFire, DFLOAT dist, DBOOL bTracer);
		void	SetSpecialData(DDWORD dwSpecial, DFLOAT fSpecial)
			{ m_nHitFX = dwSpecial; }

	private:
        DBOOL	SendDamageMsg(HOBJECT firedTo, DVector vPoint, int nNode, DVector *vFire, DFLOAT m_nDamage);
		DBOOL	DamageClosestInFOV();
		DBOOL	WonkyThemAll(DFLOAT fWonkyTime);

		int		m_nHitType;
		int		m_nHitFX;
};

//*****************************************************************************//

class COrb : public CWeapon
{
	public:
		COrb() : CWeapon(WEAP_ORB) 
		{
			m_nFlags = FLAG_ENVIRONMENTMAP;
			m_fChromeValue = 0.05f;
		};

	private:
};

//*****************************************************************************//

#define		DEATHRAY_BEAM_DIST		250.0f
#define		DEATHRAY_DAMAGE_DELAY	0.5f
#define		DEATHRAY_BEAM_FOV		0.9f

//*****************************************************************************//

class CDeathRay : public CWeapon
{
	public:
		CDeathRay();
		~CDeathRay();

		DDWORD Fire();

	private:
		void	DamageObjectsInFOV(DFLOAT fRange, DFLOAT fFOV);

		DFLOAT		m_fLastDamageTime;
		BaseClass	*m_pRotModel;
};

//*****************************************************************************//

class CLifeLeech : public CWeapon
{
	public:
		CLifeLeech() : CWeapon(WEAP_LIFELEECH)	{}
};

//*****************************************************************************//

#ifdef _ADD_ON

class CFlayer : public CWeapon
{
	public:
		CFlayer() : CWeapon(WEAP_FLAYER)
		{
			m_nFlags = FLAG_ENVIRONMENTMAP;
			m_fChromeValue = 0.05f;
		}

		CProjectile*	FireProjectile(DVector *vFire, DFLOAT dist, DBOOL bAltFire);
};

#endif

//*****************************************************************************//

class CTeslaCannon : public CWeapon
{
	public:
		CTeslaCannon() : CWeapon(WEAP_TESLACANNON)
		{
			m_nFlags = FLAG_ENVIRONMENTMAP;
			m_fChromeValue = 0.05f;
		}

		void	SetSpecialData(DDWORD dwSpecial, DFLOAT fSpecial)
			{ numAltFires = dwSpecial; }

		DDWORD			Fire();
		CProjectile*	FireProjectile(DVector *vFire, DFLOAT dist, DBOOL bAltFire);

	protected:
		DDWORD		numAltFires;
};

//*****************************************************************************//

class CSingularity : public CWeapon
{
	public:
		CSingularity() : CWeapon(WEAP_SINGULARITY)
		{
			m_nFlags = FLAG_ENVIRONMENTMAP;
			m_fChromeValue = 0.05f;
		}

		CProjectile*	FireProjectile(DVector *vFire, DFLOAT dist, DBOOL bAltFire);

	private:
};

//*****************************************************************************//

class CMelee : public CWeapon
{
	public:
		CMelee() : CWeapon(WEAP_MELEE)
		{
			m_nDamageType = DAMAGE_TYPE_MELEE;

			m_nFlags = FLAG_ENVIRONMENTMAP;
			m_fChromeValue = 0.05f;
		}
};

//*****************************************************************************//
// CREATURE WEAPONS
//*****************************************************************************//

class CShikariClaw : public CWeapon
{
	public:
		CShikariClaw() : CWeapon(WEAP_SHIKARI_CLAW) { m_nDamageType = DAMAGE_TYPE_MELEE; }
        
		DDWORD	Fire();
};

//*****************************************************************************//

class CShikariSpit : public CWeapon
{
	public:
		CShikariSpit() : CWeapon(WEAP_SHIKARI_SPIT) { m_nDamageType = DAMAGE_TYPE_ACID; };

		DDWORD	Fire();
		CProjectile*	FireProjectile(DVector *vFire, DFLOAT dist, DBOOL bAltFire);
};

//*****************************************************************************//

class CSoulCrowbar : public CWeapon
{
	public:
		CSoulCrowbar() : CWeapon(WEAP_SOUL_CROWBAR) { m_nDamageType = DAMAGE_TYPE_MELEE; }
        
		DDWORD	Fire();
};

//*****************************************************************************//

class CSoulAxe : public CWeapon
{
	public:
		CSoulAxe() : CWeapon(WEAP_SOUL_AXE) { m_nDamageType = DAMAGE_TYPE_MELEE; }
        
		DDWORD	Fire();
};

//*****************************************************************************//

class CSoulPipe : public CWeapon

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -