/*** * * 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" // #include "bumplight.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; //========================================================= //========================================================= 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_iAutoWepSwitch ) { return FALSE; } if( pPlayer->m_iAutoWepSwitch == 2 && pPlayer->m_afButtonLast & ( IN_ATTACK | IN_ATTACK2 ) ) { return FALSE; } 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] ) { 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 ) { CBaseEntity *pWeaponEntity = NULL; //LRC- support the new "start with HEV" flag... if (g_startSuit) pPlayer->pev->weapons |= (1<Touch( pPlayer ); } /* edict_t *pFind; pFind = FIND_ENTITY_BY_CLASSNAME( NULL, "light_bump" ); while( !FNullEnt( pFind ) ) { CBaseEntity *pEnt = CBaseEntity::Instance( pFind ); CBumpLight *pLight = (CBumpLight *)pEnt; if( pLight ) { pLight->CreateOnClient(); } pFind = FIND_ENTITY_BY_CLASSNAME( pFind, "light_bump" ); }*/ } //========================================================= //========================================================= BOOL CHalfLifeRules::AllowAutoTargetCrosshair( void ) { return ( g_iSkillLevel == SKILL_EASY ); } //========================================================= //========================================================= void CHalfLifeRules::PlayerThink( CBasePlayer *pPlayer ) { } //========================================================= //========================================================= 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; }