diff --git a/dlls/combat.cpp b/dlls/combat.cpp index 13955ed1..4decf69f 100644 --- a/dlls/combat.cpp +++ b/dlls/combat.cpp @@ -602,6 +602,10 @@ void CBaseMonster::Killed( entvars_t *pevAttacker, int iGib ) Remember( bits_MEMORY_KILLED ); + CBaseEntity *activator = CBaseEntity::Instance( pevAttacker ); + if( activator && activator->IsPlayer() ) + activator->AddPoints( 1, true ); + // clear the deceased's sound channels.(may have been firing or reloading when killed) EMIT_SOUND( ENT( pev ), CHAN_WEAPON, "common/null.wav", 1, ATTN_NORM ); m_IdealMonsterState = MONSTERSTATE_DEAD; diff --git a/dlls/effects.cpp b/dlls/effects.cpp index e9492dd6..65306fc6 100644 --- a/dlls/effects.cpp +++ b/dlls/effects.cpp @@ -23,6 +23,7 @@ #include "decals.h" #include "func_break.h" #include "shake.h" +#include "game.h" #define SF_GIBSHOOTER_REPEATABLE 1 // allows a gibshooter to be refired @@ -1943,8 +1944,14 @@ void CFade::Use( CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType if( pev->spawnflags & SF_FADE_MODULATE ) fadeFlags |= FFADE_MODULATE; - if( pev->spawnflags & SF_FADE_ONLYONE ) + if( mp_coop.value || pev->spawnflags & SF_FADE_ONLYONE ) { + if( !pActivator || pActivator->IsNetClient() ) + { + if( !pCaller ) + return; + pActivator = pCaller; + } if( pActivator->IsNetClient() ) { UTIL_ScreenFade( pActivator, pev->rendercolor, Duration(), HoldTime(), pev->renderamt, fadeFlags ); diff --git a/dlls/game.cpp b/dlls/game.cpp index eabcec81..2919972c 100644 --- a/dlls/game.cpp +++ b/dlls/game.cpp @@ -49,6 +49,8 @@ cvar_t cvar_gibtime = { "mp_gibtime","250", FCVAR_SERVER }; cvar_t cvar_hgibcount = { "mp_hgibcount","12", FCVAR_SERVER }; cvar_t cvar_agibcount = { "mp_agibcount","8", FCVAR_SERVER }; cvar_t mp_chattime = { "mp_chattime","10", FCVAR_SERVER }; +cvar_t mp_gravgun_players = { "mp_gravgun_players", "0", FCVAR_SERVER }; +cvar_t mp_coop = { "mp_coop", "0", FCVAR_SERVER }; // Engine Cvars cvar_t *g_psv_gravity = NULL; @@ -490,6 +492,9 @@ void GameDLLInit( void ) CVAR_REGISTER( &cvar_gibtime ); CVAR_REGISTER( &cvar_hgibcount ); CVAR_REGISTER( &cvar_agibcount ); + CVAR_REGISTER( &mp_gravgun_players ); + CVAR_REGISTER( &mp_coop ); + CVAR_REGISTER( &mp_chattime ); diff --git a/dlls/game.h b/dlls/game.h index 4c6b82dd..00065497 100644 --- a/dlls/game.h +++ b/dlls/game.h @@ -47,6 +47,8 @@ extern cvar_t cvar_gibtime; extern cvar_t cvar_hgibcount; extern cvar_t cvar_agibcount; +extern cvar_t mp_gravgun_players; +extern cvar_t mp_coop; // Engine Cvars extern cvar_t *g_psv_gravity; extern cvar_t *g_psv_aim; diff --git a/dlls/multiplay_gamerules.cpp b/dlls/multiplay_gamerules.cpp index ace1c84f..bd3fb28e 100644 --- a/dlls/multiplay_gamerules.cpp +++ b/dlls/multiplay_gamerules.cpp @@ -640,8 +640,11 @@ void CHalfLifeMultiplay::PlayerKilled( CBasePlayer *pVictim, entvars_t *pKiller, } else if( ktmp && ktmp->IsPlayer() ) { - // if a player dies in a deathmatch game and the killer is a client, award the killer some points - pKiller->frags += IPointsForKill( peKiller, pVictim ); + if( mp_coop.value ) + pKiller->frags -= 10; + else + // if a player dies in a deathmatch game and the killer is a client, award the killer some points + pKiller->frags += IPointsForKill( peKiller, pVictim ); FireTargets( "game_playerkill", ktmp, ktmp, USE_TOGGLE, 0 ); } diff --git a/dlls/player.cpp b/dlls/player.cpp index 8acba9e0..48131855 100644 --- a/dlls/player.cpp +++ b/dlls/player.cpp @@ -3738,6 +3738,17 @@ void CBasePlayer::SendAmmoUpdate( void ) } } +float CBasePlayer::TouchGravGun( CBaseEntity *attacker, int stage ) +{ + if( stage == 3 ) + return 200; + if( mp_gravgun_players.value ) + { + return 200; + } + return 0; +} + /* ========================================================= UpdateClientData diff --git a/dlls/player.h b/dlls/player.h index 8ae143a5..b28e9f7e 100644 --- a/dlls/player.h +++ b/dlls/player.h @@ -309,12 +309,7 @@ public: float m_flNextChatTime; - virtual float TouchGravGun( CBaseEntity *attacker, int stage ) - { - if( stage == 3 ) - return 200; - return 0; - } + virtual float TouchGravGun( CBaseEntity *attacker, int stage ); }; #define AUTOAIM_2DEGREES 0.0348994967025