📄 gameprojectiles.h
字号:
// ----------------------------------------------------------------------- //
//
// MODULE : GameProjectiles.h
//
// PURPOSE : GameProjectiles class - definition
//
// CREATED : 10/3/97
//
// ----------------------------------------------------------------------- //
#ifndef __GAMEPROJECTILES_H__
#define __GAMEPROJECTILES_H__
#include "Projectile.h"
// ----------------------------------------------------------------------- //
// Standard grenades
// ----------------------------------------------------------------------- //
class CGrenade : public CProjectile
{
public :
CGrenade();
protected:
virtual DBOOL Update(DVector *pMovement);
virtual void HandleTouch(HOBJECT hObj);
private:
int m_nBounceCount;
};
#ifdef _ADD_ON
// ----------------------------------------------------------------------- //
// Gas grenades
// ----------------------------------------------------------------------- //
#define GAS_GRENADE_SMOKE_TIME 10.0f
#define GAS_GRENADE_DAMAGE_DIST 200.0f
#define GAS_GRENADE_MAX_DAMAGE 3.0f
#define GAS_GRENADE_DAMAGE_DELAY 0.5f
class CGasGrenade : public CProjectile
{
public :
CGasGrenade();
protected:
virtual DBOOL Update(DVector *pMovement);
virtual void HandleTouch(HOBJECT hObj);
virtual void AddExplosion(DVector vPos, DVector vNormal);
private:
void DamageAndWonky(DFLOAT fWonkyTime);
DBOOL m_bSmoking;
DFLOAT m_fSmokeTime;
int m_nBounceCount;
DFLOAT m_fLastWonkyTime;
};
#endif
#ifndef _DEMO // [gjk] 10/28 disable for demo
// ----------------------------------------------------------------------- //
// Time bomb
// ----------------------------------------------------------------------- //
class CTimeBomb : public CProjectile
{
public :
CTimeBomb();
protected:
virtual DBOOL Update(DVector *pMovement);
virtual void HandleTouch(HOBJECT hObj);
virtual void AddExplosion(DVector vPos, DVector vNormal);
private:
float m_fTimeDelay;
};
// ----------------------------------------------------------------------- //
// Proximity bomb
// ----------------------------------------------------------------------- //
class CProximityBomb : public CProjectile
{
public :
CProximityBomb();
protected:
virtual DBOOL Update(DVector *pMovement);
virtual void HandleTouch(HOBJECT hObj);
virtual void AddExplosion(DVector vPos, DVector vNormal);
private:
float m_fDetectRadius;
float m_fGetAwayTime;
float m_fExplodeDelay;
DBOOL m_bHitCharacter;
DBOOL m_bPlayArmSound;
DBOOL m_bPlayDetectSound;
};
// ----------------------------------------------------------------------- //
// Remote bomb
// ----------------------------------------------------------------------- //
class CRemoteBomb : public CProjectile
{
public :
CRemoteBomb();
void Detonate() { m_bExplode = DTRUE; }
protected:
virtual DBOOL Update(DVector *pMovement);
virtual void HandleTouch(HOBJECT hObj);
virtual void AddExplosion(DVector vPos, DVector vNormal);
private:
DBOOL m_bFalling;
};
#endif // _DEMO
// ----------------------------------------------------------------------- //
// Howitzer projectile
// ----------------------------------------------------------------------- //
class CHowitzerShell : public CProjectile
{
public :
CHowitzerShell();
protected:
virtual DBOOL Update(DVector *pMovement);
virtual void AddExplosion(DVector vPos, DVector vNormal);
};
// ----------------------------------------------------------------------- //
// Howitzer Alt projectile
// ----------------------------------------------------------------------- //
class CHowitzerAltShell : public CProjectile
{
public :
CHowitzerAltShell();
protected:
virtual DBOOL Update(DVector *pMovement);
virtual void AddExplosion(DVector vPos, DVector vNormal);
};
// ----------------------------------------------------------------------- //
// Howitzer Alt Fragment projectile
// ----------------------------------------------------------------------- //
class CHowitzerAltFrag : public CProjectile
{
public :
CHowitzerAltFrag();
protected:
virtual DBOOL Update(DVector *pMovement);
virtual void HandleTouch(HOBJECT hObj);
virtual void AddExplosion(DVector vPos, DVector vNormal);
DVector tempNorm;
};
// ----------------------------------------------------------------------- //
// Napalm Primary Fire Projectile
// ----------------------------------------------------------------------- //
class CNapalmProjectile : public CProjectile
{
public :
CNapalmProjectile();
protected:
virtual DBOOL Update(DVector *pMovement);
virtual void AddExplosion(DVector vPos, DVector vNormal);
DFLOAT m_fStartTime;
DFLOAT m_fDelay;
};
// ----------------------------------------------------------------------- //
// Napalm Alt Fire Projectile
// ----------------------------------------------------------------------- //
class CNapalmAltProjectile : public CProjectile
{
public :
CNapalmAltProjectile();
protected:
virtual DBOOL Update(DVector *pMovement);
virtual void AddExplosion(DVector vPos, DVector vNormal);
DFLOAT m_fStartTime;
DFLOAT m_fDelay;
};
// ----------------------------------------------------------------------- //
// Napalm Alt Fireball Projectile
// ----------------------------------------------------------------------- //
class CNapalmFireball : public CProjectile
{
public :
CNapalmFireball();
protected:
virtual DBOOL Update(DVector *pMovement);
virtual void HandleTouch(HOBJECT hObj);
virtual void AddExplosion(DVector vPos, DVector vNormal);
DBYTE m_nBounces;
};
// ----------------------------------------------------------------------- //
// Bug spray primary
// ----------------------------------------------------------------------- //
class CBugSprayProjectile : public CProjectile
{
public :
CBugSprayProjectile();
protected:
virtual DBOOL Update(DVector *pMovement);
virtual void AddExplosion(DVector vPos, DVector vNormal);
DFLOAT m_fStartTime;
DFLOAT m_fDelay;
};
// ----------------------------------------------------------------------- //
// Bug spray alt
// ----------------------------------------------------------------------- //
class CBugSprayAltProjectile : public CProjectile
{
public :
CBugSprayAltProjectile();
protected:
virtual DBOOL Update(DVector *pMovement);
virtual void AddExplosion(DVector vPos, DVector vNormal);
DFLOAT m_fStartTime;
DFLOAT m_fDelay;
};
// ----------------------------------------------------------------------- //
// Death ray primary
// ----------------------------------------------------------------------- //
#define DEATHRAY_BOUNCE_DIST 1500.0f
#define DEATHRAY_BOUNCE_DELAY 0.1f
// ----------------------------------------------------------------------- //
class CDeathRayProjectile : public CProjectile
{
public :
CDeathRayProjectile();
protected:
virtual DBOOL Update(DVector *pMovement);
virtual void AddExplosion(DVector vPos, DVector vNormal);
DFLOAT m_fStartTime;
DFLOAT m_fBounceDist;
DVector m_vBeamDir;
DBOOL m_bFirstUpdate;
DBOOL m_bFirstShot;
};
// ----------------------------------------------------------------------- //
// Life Leech primary fire projectile
// ----------------------------------------------------------------------- //
class CLeechPrimeProjectile : public CProjectile
{
public :
CLeechPrimeProjectile();
protected:
virtual DBOOL InitialUpdate(DVector* vec);
virtual DBOOL Update(DVector *pMovement);
virtual void AddExplosion(DVector vPos, DVector vNormal);
DFLOAT m_fStartTime;
DFLOAT m_fDelay;
DVector m_vColor;
DFLOAT m_fCurve;
DFLOAT m_fAmp;
};
// ----------------------------------------------------------------------- //
// Life Leech alt fire explosion
// ----------------------------------------------------------------------- //
#define LIFELEECH_PUSH_RADIUS 450.0f
#define LIFELEECH_ROTATE_AMOUNT 0.2f
// ----------------------------------------------------------------------- //
class CLeechAltProjectile : public CProjectile
{
public :
CLeechAltProjectile();
protected:
virtual DBOOL Update(DVector *pMovement);
};
// ----------------------------------------------------------------------- //
// Flares
// ----------------------------------------------------------------------- //
class CFlareProjectile : public CProjectile
{
public :
CFlareProjectile();
protected:
virtual DBOOL Update(DVector *pMovement);
virtual void HandleTouch(HOBJECT hObj);
virtual void AddExplosion(DVector vPos, DVector vNormal);
DVector m_vObjOffset;
DBOOL m_bTrackObj;
DFLOAT m_fStartTime;
DFLOAT m_fDelay;
DVector m_vColor;
DFLOAT m_fLastDamageTime;
DFLOAT m_fDamageTime;
int m_nColor;
};
// ----------------------------------------------------------------------- //
// Burst flares
// ----------------------------------------------------------------------- //
class CFlareAltProjectile : public CProjectile
{
public :
CFlareAltProjectile();
protected:
virtual DBOOL Update(DVector *pMovement);
virtual void AddExplosion(DVector vPos, DVector vNormal);
DFLOAT m_fStartTime;
DFLOAT m_fBurstTime;
DFLOAT m_fDelay;
DVector m_vColor;
DVector m_vVel;
DDWORD m_nExpType;
DBOOL m_bGetVelocity;
};
// ----------------------------------------------------------------------- //
// Flare burst fragments
// ----------------------------------------------------------------------- //
class CFlareBurstProjectile : public CProjectile
{
public :
CFlareBurstProjectile();
void SetColor(DVector *vColor);
protected:
virtual DBOOL Update(DVector *pMovement);
virtual void AddExplosion(DVector vPos, DVector vNormal);
DFLOAT m_fStartTime;
DVector m_vColor;
};
// ----------------------------------------------------------------------- //
// The Orb Primary Projectile
// ----------------------------------------------------------------------- //
#define THEORB_DETECT_RADIUS 175.0f
#define THEORB_ATTACH_RANGE 15.0f
#define THEORB_ATTACH_RANGE_ALT 45.0f
#define THEORB_DAMAGE_TIME 5.1f
#define THEORB_DAMAGE_DELAY 1.0f
#define THEORB_HEAD_OFFSET 7.5f
#define THEORB_STATE_TRACKING 0
#define THEORB_STATE_ATTACHED 1
// ----------------------------------------------------------------------- //
class COrbProjectile : public CProjectile
{
public :
COrbProjectile();
protected:
virtual DBOOL Update(DVector *pMovement);
virtual void HandleTouch(HOBJECT hObj);
virtual void AddExplosion(DVector vPos, DVector vNormal);
HOBJECT FindTrackObj();
void TrackObjInRange();
HOBJECT m_hTrackObj;
DFLOAT m_fRotateAmount;
DFLOAT m_fHitTime;
DFLOAT m_fLastDamageTime;
DBOOL m_bState;
};
// ----------------------------------------------------------------------- //
// The Orb Alt Projectile
// ----------------------------------------------------------------------- //
class COrbAltProjectile : public CProjectile
{
public :
COrbAltProjectile();
protected:
virtual DBOOL InitialUpdate(DVector* pMovement);
virtual DBOOL Update(DVector *pMovement);
virtual void HandleTouch(HOBJECT hObj);
virtual void AddExplosion(DVector vPos, DVector vNormal);
DFLOAT m_fHitTime;
DFLOAT m_fLastDamageTime;
DBOOL m_bState;
DBOOL m_bSwitchView;
DBOOL m_bCreateCamera;
};
// ----------------------------------------------------------------------- //
// Tesla projectile
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -