You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
335 lines
10 KiB
335 lines
10 KiB
/*** |
|
* |
|
* Copyright (c) 1996-2002, Valve LLC. All rights reserved. |
|
* |
|
* This product contains software technology licensed from Id |
|
* Software, Inc. ("Id Technology"). Id Technology (c) 1996 Id Software, Inc. |
|
* All Rights Reserved. |
|
* |
|
* Use, distribution, and modification of this source code and/or resulting |
|
* object code is restricted to non-commercial enhancements to products from |
|
* Valve LLC. All other use, distribution, or modification is prohibited |
|
* without written permission from Valve LLC. |
|
* |
|
****/ |
|
// |
|
// teamplay_gamerules.cpp |
|
// |
|
#include "extdll.h" |
|
#include "util.h" |
|
#include "cbase.h" |
|
#include "player.h" |
|
#include "weapons.h" |
|
#include "gamerules.h" |
|
#include "skill.h" |
|
#include "items.h" |
|
|
|
extern DLL_GLOBAL CGameRules *g_pGameRules; |
|
extern DLL_GLOBAL BOOL g_fGameOver; |
|
extern int gmsgDeathMsg; // client dll messages |
|
extern int gmsgScoreInfo; |
|
extern int gmsgMOTD; |
|
bool has_gravgun = false; |
|
|
|
//========================================================= |
|
//========================================================= |
|
CHalfLifeRules::CHalfLifeRules( void ) |
|
{ |
|
RefreshSkillData(); |
|
} |
|
|
|
//========================================================= |
|
//========================================================= |
|
void CHalfLifeRules::Think ( void ) |
|
{ |
|
} |
|
|
|
//========================================================= |
|
//========================================================= |
|
BOOL CHalfLifeRules::IsMultiplayer( void ) |
|
{ |
|
return FALSE; |
|
} |
|
|
|
//========================================================= |
|
//========================================================= |
|
BOOL CHalfLifeRules::IsDeathmatch ( void ) |
|
{ |
|
return FALSE; |
|
} |
|
|
|
//========================================================= |
|
//========================================================= |
|
BOOL CHalfLifeRules::IsCoOp( void ) |
|
{ |
|
return FALSE; |
|
} |
|
|
|
|
|
//========================================================= |
|
//========================================================= |
|
BOOL CHalfLifeRules::FShouldSwitchWeapon( CBasePlayer *pPlayer, CBasePlayerItem *pWeapon ) |
|
{ |
|
if ( !pPlayer->m_pActiveItem ) |
|
{ |
|
// player doesn't have an active item! |
|
return TRUE; |
|
} |
|
|
|
if ( !pPlayer->m_pActiveItem->CanHolster() ) |
|
{ |
|
return FALSE; |
|
} |
|
|
|
return TRUE; |
|
} |
|
|
|
//========================================================= |
|
//========================================================= |
|
BOOL CHalfLifeRules :: GetNextBestWeapon( CBasePlayer *pPlayer, CBasePlayerItem *pCurrentWeapon ) |
|
{ |
|
return FALSE; |
|
} |
|
|
|
//========================================================= |
|
//========================================================= |
|
BOOL CHalfLifeRules :: ClientConnected( edict_t *pEntity, const char *pszName, const char *pszAddress, char szRejectReason[ 128 ] ) |
|
{ |
|
has_gravgun = false; |
|
return TRUE; |
|
} |
|
|
|
void CHalfLifeRules :: InitHUD( CBasePlayer *pl ) |
|
{ |
|
} |
|
|
|
//========================================================= |
|
//========================================================= |
|
void CHalfLifeRules :: ClientDisconnected( edict_t *pClient ) |
|
{ |
|
} |
|
|
|
//========================================================= |
|
//========================================================= |
|
float CHalfLifeRules::FlPlayerFallDamage( CBasePlayer *pPlayer ) |
|
{ |
|
// subtract off the speed at which a player is allowed to fall without being hurt, |
|
// so damage will be based on speed beyond that, not the entire fall |
|
pPlayer->m_flFallVelocity -= PLAYER_MAX_SAFE_FALL_SPEED; |
|
return pPlayer->m_flFallVelocity * DAMAGE_FOR_FALL_SPEED; |
|
} |
|
|
|
//========================================================= |
|
//========================================================= |
|
void CHalfLifeRules :: PlayerSpawn( CBasePlayer *pPlayer ) |
|
{ |
|
} |
|
|
|
//========================================================= |
|
//========================================================= |
|
BOOL CHalfLifeRules :: AllowAutoTargetCrosshair( void ) |
|
{ |
|
return ( g_iSkillLevel == SKILL_EASY ); |
|
} |
|
|
|
//========================================================= |
|
//========================================================= |
|
void CHalfLifeRules :: PlayerThink( CBasePlayer *pPlayer ) |
|
{ |
|
if( !has_gravgun ) |
|
{ |
|
pPlayer->GiveNamedItem( "weapon_gravgun" ); |
|
has_gravgun = true; |
|
} |
|
} |
|
|
|
|
|
//========================================================= |
|
//========================================================= |
|
BOOL CHalfLifeRules :: FPlayerCanRespawn( CBasePlayer *pPlayer ) |
|
{ |
|
return TRUE; |
|
} |
|
|
|
//========================================================= |
|
//========================================================= |
|
float CHalfLifeRules :: FlPlayerSpawnTime( CBasePlayer *pPlayer ) |
|
{ |
|
return gpGlobals->time;//now! |
|
} |
|
|
|
//========================================================= |
|
// IPointsForKill - how many points awarded to anyone |
|
// that kills this player? |
|
//========================================================= |
|
int CHalfLifeRules :: IPointsForKill( CBasePlayer *pAttacker, CBasePlayer *pKilled ) |
|
{ |
|
return 1; |
|
} |
|
|
|
//========================================================= |
|
// PlayerKilled - someone/something killed this player |
|
//========================================================= |
|
void CHalfLifeRules :: PlayerKilled( CBasePlayer *pVictim, entvars_t *pKiller, entvars_t *pInflictor ) |
|
{ |
|
} |
|
|
|
//========================================================= |
|
// Deathnotice |
|
//========================================================= |
|
void CHalfLifeRules::DeathNotice( CBasePlayer *pVictim, entvars_t *pKiller, entvars_t *pInflictor ) |
|
{ |
|
} |
|
|
|
//========================================================= |
|
// PlayerGotWeapon - player has grabbed a weapon that was |
|
// sitting in the world |
|
//========================================================= |
|
void CHalfLifeRules :: PlayerGotWeapon( CBasePlayer *pPlayer, CBasePlayerItem *pWeapon ) |
|
{ |
|
} |
|
|
|
//========================================================= |
|
// FlWeaponRespawnTime - what is the time in the future |
|
// at which this weapon may spawn? |
|
//========================================================= |
|
float CHalfLifeRules :: FlWeaponRespawnTime( CBasePlayerItem *pWeapon ) |
|
{ |
|
return -1; |
|
} |
|
|
|
//========================================================= |
|
// FlWeaponRespawnTime - Returns 0 if the weapon can respawn |
|
// now, otherwise it returns the time at which it can try |
|
// to spawn again. |
|
//========================================================= |
|
float CHalfLifeRules :: FlWeaponTryRespawn( CBasePlayerItem *pWeapon ) |
|
{ |
|
return 0; |
|
} |
|
|
|
//========================================================= |
|
// VecWeaponRespawnSpot - where should this weapon spawn? |
|
// Some game variations may choose to randomize spawn locations |
|
//========================================================= |
|
Vector CHalfLifeRules :: VecWeaponRespawnSpot( CBasePlayerItem *pWeapon ) |
|
{ |
|
return pWeapon->pev->origin; |
|
} |
|
|
|
//========================================================= |
|
// WeaponShouldRespawn - any conditions inhibiting the |
|
// respawning of this weapon? |
|
//========================================================= |
|
int CHalfLifeRules :: WeaponShouldRespawn( CBasePlayerItem *pWeapon ) |
|
{ |
|
return GR_WEAPON_RESPAWN_NO; |
|
} |
|
|
|
//========================================================= |
|
//========================================================= |
|
BOOL CHalfLifeRules::CanHaveItem( CBasePlayer *pPlayer, CItem *pItem ) |
|
{ |
|
return TRUE; |
|
} |
|
|
|
//========================================================= |
|
//========================================================= |
|
void CHalfLifeRules::PlayerGotItem( CBasePlayer *pPlayer, CItem *pItem ) |
|
{ |
|
} |
|
|
|
//========================================================= |
|
//========================================================= |
|
int CHalfLifeRules::ItemShouldRespawn( CItem *pItem ) |
|
{ |
|
return GR_ITEM_RESPAWN_NO; |
|
} |
|
|
|
|
|
//========================================================= |
|
// At what time in the future may this Item respawn? |
|
//========================================================= |
|
float CHalfLifeRules::FlItemRespawnTime( CItem *pItem ) |
|
{ |
|
return -1; |
|
} |
|
|
|
//========================================================= |
|
// Where should this item respawn? |
|
// Some game variations may choose to randomize spawn locations |
|
//========================================================= |
|
Vector CHalfLifeRules::VecItemRespawnSpot( CItem *pItem ) |
|
{ |
|
return pItem->pev->origin; |
|
} |
|
|
|
//========================================================= |
|
//========================================================= |
|
BOOL CHalfLifeRules::IsAllowedToSpawn( CBaseEntity *pEntity ) |
|
{ |
|
return TRUE; |
|
} |
|
|
|
//========================================================= |
|
//========================================================= |
|
void CHalfLifeRules::PlayerGotAmmo( CBasePlayer *pPlayer, char *szName, int iCount ) |
|
{ |
|
} |
|
|
|
//========================================================= |
|
//========================================================= |
|
int CHalfLifeRules::AmmoShouldRespawn( CBasePlayerAmmo *pAmmo ) |
|
{ |
|
return GR_AMMO_RESPAWN_NO; |
|
} |
|
|
|
//========================================================= |
|
//========================================================= |
|
float CHalfLifeRules::FlAmmoRespawnTime( CBasePlayerAmmo *pAmmo ) |
|
{ |
|
return -1; |
|
} |
|
|
|
//========================================================= |
|
//========================================================= |
|
Vector CHalfLifeRules::VecAmmoRespawnSpot( CBasePlayerAmmo *pAmmo ) |
|
{ |
|
return pAmmo->pev->origin; |
|
} |
|
|
|
//========================================================= |
|
//========================================================= |
|
float CHalfLifeRules::FlHealthChargerRechargeTime( void ) |
|
{ |
|
return 0;// don't recharge |
|
} |
|
|
|
//========================================================= |
|
//========================================================= |
|
int CHalfLifeRules::DeadPlayerWeapons( CBasePlayer *pPlayer ) |
|
{ |
|
return GR_PLR_DROP_GUN_NO; |
|
} |
|
|
|
//========================================================= |
|
//========================================================= |
|
int CHalfLifeRules::DeadPlayerAmmo( CBasePlayer *pPlayer ) |
|
{ |
|
return GR_PLR_DROP_AMMO_NO; |
|
} |
|
|
|
//========================================================= |
|
//========================================================= |
|
int CHalfLifeRules::PlayerRelationship( CBaseEntity *pPlayer, CBaseEntity *pTarget ) |
|
{ |
|
// why would a single player in half life need this? |
|
return GR_NOTTEAMMATE; |
|
} |
|
|
|
//========================================================= |
|
//========================================================= |
|
BOOL CHalfLifeRules :: FAllowMonsters( void ) |
|
{ |
|
return TRUE; |
|
}
|
|
|