halflife25-sdk/dmc/dlls/threewave_gamerules.h
2013-08-30 13:34:05 -07:00

221 lines
5 KiB
C++

#ifdef THREEWAVE
#define BLUE 2
#define RED 1
#include "voice_gamemgr.h"
//=========================================================
// Flags
//=========================================================
class CItemFlag : public CBaseEntity
{
public:
void Spawn( void );
BOOL Dropped;
float m_flDroppedTime;
void EXPORT FlagThink( void );
private:
void Precache ( void );
void Capture(CBasePlayer *pPlayer, int iTeam );
void ResetFlag( int iTeam );
void Materialize( void );
void EXPORT FlagTouch( CBaseEntity *pOther );
// BOOL MyTouch( CBasePlayer *pPlayer );
};
class CCarriedFlag : public CBaseEntity
{
public:
void Spawn( void );
CBasePlayer *Owner;
int m_iOwnerOldVel;
private:
void Precache ( void );
void EXPORT FlagThink( void );
};
class CResistRune : public CBaseEntity
{
private:
void EXPORT RuneRespawn ( void );
public:
void EXPORT RuneTouch ( CBaseEntity *pOther );
void Spawn( void );
void EXPORT MakeTouchable ( void );
int m_iRuneFlag;
bool m_bTouchable;
bool dropped;
};
class CStrengthRune : public CBaseEntity
{
private:
void EXPORT RuneRespawn ( void );
public:
void EXPORT RuneTouch ( CBaseEntity *pOther );
void Spawn( void );
void EXPORT MakeTouchable ( void );
int m_iRuneFlag;
bool m_bTouchable;
bool dropped;
};
class CHasteRune : public CBaseEntity
{
private:
void EXPORT RuneRespawn ( void );
public:
void EXPORT RuneTouch ( CBaseEntity *pOther );
void EXPORT MakeTouchable ( void );
void Spawn( void );
int m_iRuneFlag;
bool m_bTouchable;
bool dropped;
};
class CRegenRune : public CBaseEntity
{
private:
void EXPORT RuneRespawn ( void );
public:
void EXPORT RuneTouch ( CBaseEntity *pOther );
void Spawn( void );
void EXPORT MakeTouchable ( void );
int m_iRuneFlag;
bool m_bTouchable;
bool dropped;
};
class CGrapple : public CBaseEntity
{
public:
//Yes, I have no imagination so I use standard touch, spawn and think function names.
//Sue me! =P.
void Spawn ( void );
void EXPORT OnAirThink ( void );
void EXPORT GrappleTouch ( CBaseEntity *pOther );
void Reset_Grapple ( void );
void EXPORT Grapple_Track ( void );
float m_flNextIdleTime;
};
#define STEAL_SOUND 1
#define CAPTURE_SOUND 2
#define RETURN_SOUND 3
#define RED_FLAG_STOLEN 1
#define BLUE_FLAG_STOLEN 2
#define RED_FLAG_CAPTURED 3
#define BLUE_FLAG_CAPTURED 4
#define RED_FLAG_RETURNED_PLAYER 5
#define BLUE_FLAG_RETURNED_PLAYER 6
#define RED_FLAG_RETURNED 7
#define BLUE_FLAG_RETURNED 8
#define RED_FLAG_LOST 9
#define BLUE_FLAG_LOST 10
#define RED_FLAG_STOLEN 1
#define BLUE_FLAG_STOLEN 2
#define RED_FLAG_DROPPED 3
#define BLUE_FLAG_DROPPED 4
#define RED_FLAG_ATBASE 5
#define BLUE_FLAG_ATBASE 6
#define MAX_TEAMNAME_LENGTH 16
#define MAX_TEAMS 32
#define TEAMPLAY_TEAMLISTLENGTH MAX_TEAMS*MAX_TEAMNAME_LENGTH
class CThreeWave : public CHalfLifeMultiplay
{
public:
CThreeWave();
virtual BOOL ClientConnected( edict_t *pEntity, const char *pszName, const char *pszAddress, char szRejectReason[ 128 ] );
virtual BOOL ClientCommand( CBasePlayer *pPlayer, const char *pcmd );
virtual void ClientUserInfoChanged( CBasePlayer *pPlayer, char *infobuffer );
virtual BOOL IsTeamplay( void );
virtual BOOL FPlayerCanTakeDamage( CBasePlayer *pPlayer, CBaseEntity *pAttacker );
virtual int PlayerRelationship( CBaseEntity *pPlayer, CBaseEntity *pTarget );
virtual const char *GetTeamID( CBaseEntity *pEntity );
virtual BOOL ShouldAutoAim( CBasePlayer *pPlayer, edict_t *target );
virtual int IPointsForKill( CBasePlayer *pAttacker, CBasePlayer *pKilled );
virtual void InitHUD( CBasePlayer *pl );
virtual void DeathNotice( CBasePlayer *pVictim, entvars_t *pKiller, entvars_t *pevInflictor );
virtual const char *GetGameDescription( void ) { return "3Wave CTF"; } // this is the game name that gets seen in the server browser
virtual void UpdateGameMode( CBasePlayer *pPlayer ); // the client needs to be informed of the current game mode
virtual void PlayerKilled( CBasePlayer *pVictim, entvars_t *pKiller, entvars_t *pInflictor );
virtual void Think ( void );
virtual int GetTeamIndex( const char *pTeamName );
virtual const char *GetIndexedTeamName( int teamIndex );
virtual BOOL IsValidTeam( const char *pTeamName );
virtual void ChangePlayerTeam( CBasePlayer *pPlayer, int iTeam );
virtual void PlayerSpawn( CBasePlayer *pPlayer );
void JoinTeam ( CBasePlayer *pPlayer, int iTeam );
int TeamWithFewestPlayers ( void );
virtual void ClientDisconnected( edict_t *pClient );
void GetFlagStatus( CBasePlayer *pPlayer );
virtual edict_t *GetPlayerSpawnSpot( CBasePlayer *pPlayer );
virtual void PlayerThink( CBasePlayer *pPlayer );
void PlayerTakeDamage( CBasePlayer *pPlayer , CBaseEntity *pAttacker );
int iBlueFlagStatus;
int iRedFlagStatus;
int iBlueTeamScore;
int iRedTeamScore;
float m_flFlagStatusTime;
private:
void RecountTeams( void );
BOOL m_DisableDeathMessages;
BOOL m_DisableDeathPenalty;
BOOL m_teamLimit; // This means the server set only some teams as valid
char m_szTeamList[TEAMPLAY_TEAMLISTLENGTH];
};
#endif