1
0
mirror of https://github.com/YGGverse/hlsdk-portable.git synced 2025-03-13 05:51:19 +00:00

Add checks for 3wave folder.

This commit is contained in:
Night Owl 2018-04-22 05:19:00 +05:00
parent 26f710df68
commit 5c2bff7b28
12 changed files with 245 additions and 183 deletions

@ -38,6 +38,8 @@
#define HUDELEM_ACTIVE 1
extern int HUD_IsGame( const char *game );
typedef struct
{
int x, y;

@ -33,7 +33,7 @@ const Vector g_vecZero = Vector( 0, 0, 0 );
int gmsgWeapPickup = 0;
enginefuncs_t g_engfuncs;
globalvars_t *gpGlobals;
bool g_bIsThreeWave;
short g_sModelIndexLaser;
ItemInfo CBasePlayerItem::ItemInfoArray[MAX_WEAPONS];

@ -79,15 +79,18 @@ void Game_HookEvents( void )
gEngfuncs.pfnHookEvent( "events/powerup.sc", EV_PlayerPowerup );
gEngfuncs.pfnHookEvent( "events/door/doorgoup.sc", EV_DMC_DoorGoUp );
gEngfuncs.pfnHookEvent( "events/door/doorgoup.sc", EV_DMC_DoorGoUp );
gEngfuncs.pfnHookEvent( "events/door/doorgodown.sc", EV_DMC_DoorGoDown );
gEngfuncs.pfnHookEvent( "events/door/doorhittop.sc", EV_DMC_DoorHitTop );
gEngfuncs.pfnHookEvent( "events/door/doorhitbottom.sc", EV_DMC_DoorHitBottom );
gEngfuncs.pfnHookEvent( "events/hook.sc", EV_Hook );
gEngfuncs.pfnHookEvent( "events/cable.sc", EV_Cable );
gEngfuncs.pfnHookEvent( "events/follow.sc", EV_FollowCarrier );
gEngfuncs.pfnHookEvent( "events/flagspawn.sc", EV_FlagSpawn );
if( HUD_IsGame( "3wave" ) )
{
gEngfuncs.pfnHookEvent( "events/hook.sc", EV_Hook );
gEngfuncs.pfnHookEvent( "events/cable.sc", EV_Cable );
gEngfuncs.pfnHookEvent( "events/follow.sc", EV_FollowCarrier );
gEngfuncs.pfnHookEvent( "events/flagspawn.sc", EV_FlagSpawn );
}
gEngfuncs.pfnHookEvent( "events/train.sc", EV_TrainPitchAdjust );
gEngfuncs.pfnHookEvent( "events/train.sc", EV_TrainPitchAdjust );
}

@ -53,7 +53,7 @@ extern DLL_GLOBAL ULONG g_ulFrameCount;
const char* GetTeamName( int team );
extern bool g_bHaveMOTD;
extern bool g_bIsThreeWave;
extern void CopyToBodyQue( entvars_t* pev );
extern int giPrecacheGrunt;
extern int gmsgSayText;
@ -453,14 +453,17 @@ void Host_Say( edict_t *pEntity, int teamonly )
temp = "say";
// team match?
UTIL_LogPrintf( "\"%s<%i><%s><%s>\" %s \"%s\"\n",
STRING( pEntity->v.netname ),
GETPLAYERUSERID( pEntity ),
GETPLAYERAUTHID( pEntity ),
GetTeamName( pEntity->v.team ),
temp,
p );
/*if( g_teamplay )
if( g_bIsThreeWave )
{
UTIL_LogPrintf( "\"%s<%i><%s><%s>\" %s \"%s\"\n",
STRING( pEntity->v.netname ),
GETPLAYERUSERID( pEntity ),
GETPLAYERAUTHID( pEntity ),
GetTeamName( pEntity->v.team ),
temp,
p );
}
else if( g_teamplay )
{
UTIL_LogPrintf( "\"%s<%i><%s><%s>\" %s \"%s\"\n",
STRING( pEntity->v.netname ),
@ -479,7 +482,7 @@ void Host_Say( edict_t *pEntity, int teamonly )
GETPLAYERUSERID( pEntity ),
temp,
p );
}*/
}
}
/*
@ -563,8 +566,9 @@ void ClientCommand( edict_t *pEntity )
return;
//-- Martin Webrant
pPlayer->m_bHadFirstSpawn = true;
// pPlayer->Spawn();
pPlayer->m_bHadFirstSpawn = true;
if( !g_bIsThreeWave )
pPlayer->Spawn();
}
}
else if( FStrEq( pcmd, "lastinv" ) )
@ -572,7 +576,7 @@ void ClientCommand( edict_t *pEntity )
GetClassPtr( (CBasePlayer *)pev )->SelectLastItem();
}
else if( FStrEq( pcmd, "spectate" ) ) // added for proxy support
{
{
CBasePlayer * pPlayer = GetClassPtr( (CBasePlayer *)pev );
//++ BulliT
@ -588,6 +592,9 @@ void ClientCommand( edict_t *pEntity )
return;
}
if( g_bIsThreeWave )
return;
//Dont spectate if player is in game in arena.
if( pPlayer->IsIngame() && g_pGameRules->m_iGameMode >= ARENA )
return;
@ -678,6 +685,8 @@ void ClientCommand( edict_t *pEntity )
//++ BulliT
else if( FStrEq( CMD_ARGV( 0 ), "ready" ) )
{
if( g_bIsThreeWave )
return;
CBasePlayer *pPlayer = GetClassPtr( (CBasePlayer *)pev );
if( g_pGameRules->m_iGameMode >= LMS )
{
@ -704,6 +713,8 @@ void ClientCommand( edict_t *pEntity )
}
else if( FStrEq( CMD_ARGV( 0 ), "notready" ) )
{
if( g_bIsThreeWave )
return;
CBasePlayer *pPlayer = GetClassPtr( (CBasePlayer *)pev );
if( g_pGameRules->m_iGameMode >= LMS )
{
@ -835,14 +846,16 @@ void ClientUserInfoChanged( edict_t *pEntity, char *infobuffer )
}
// team match?
UTIL_LogPrintf( "\"%s<%i><%s><%s>\" changed name to \"%s\"\n",
STRING( pEntity->v.netname ),
GETPLAYERUSERID( pEntity ),
GETPLAYERAUTHID( pEntity ),
GetTeamName( pEntity->v.team ),
g_engfuncs.pfnInfoKeyValue( infobuffer, "name" ) );
/*
if( g_teamplay )
if( g_bIsThreeWave )
{
UTIL_LogPrintf( "\"%s<%i><%s><%s>\" changed name to \"%s\"\n",
STRING( pEntity->v.netname ),
GETPLAYERUSERID( pEntity ),
GETPLAYERAUTHID( pEntity ),
GetTeamName( pEntity->v.team ),
g_engfuncs.pfnInfoKeyValue( infobuffer, "name" ) );
}
else if( g_teamplay )
{
UTIL_LogPrintf( "\"%s<%i><%s><%s>\" changed name to \"%s\"\n",
STRING( pEntity->v.netname ),
@ -859,7 +872,7 @@ void ClientUserInfoChanged( edict_t *pEntity, char *infobuffer )
GETPLAYERAUTHID( pEntity ),
GETPLAYERUSERID( pEntity ),
g_engfuncs.pfnInfoKeyValue( infobuffer, "name" ) );
}*/
}
}
// QUAKECLASSIC
@ -1128,79 +1141,77 @@ void ClientPrecache( void )
PRECACHE_SOUND( "player/plyrjmp8.wav" );
PRECACHE_MODEL( "models/rune_resist.mdl" );
PRECACHE_MODEL( "models/rune_haste.mdl" );
PRECACHE_MODEL( "models/rune_regen.mdl" );
PRECACHE_MODEL( "models/rune_strength.mdl" );
if( g_bIsThreeWave )
{
PRECACHE_MODEL( "models/rune_resist.mdl" );
PRECACHE_MODEL( "models/rune_haste.mdl" );
PRECACHE_MODEL( "models/rune_regen.mdl" );
PRECACHE_MODEL( "models/rune_strength.mdl" );
PRECACHE_SOUND( "rune/rune1.wav" );
PRECACHE_SOUND( "rune/rune2.wav" );
PRECACHE_SOUND( "rune/rune22.wav" ); // Quad + Strength Rune.
PRECACHE_SOUND( "rune/rune3.wav" );
PRECACHE_SOUND( "rune/rune4.wav" );
PRECACHE_SOUND( "rune/rune1.wav" );
PRECACHE_SOUND( "rune/rune2.wav" );
PRECACHE_SOUND( "rune/rune22.wav" ); // Quad + Strength Rune.
PRECACHE_SOUND( "rune/rune3.wav" );
PRECACHE_SOUND( "rune/rune4.wav" );
PRECACHE_MODEL( "models/hook.mdl" );
PRECACHE_MODEL( "sprites/rope.spr" );
PRECACHE_MODEL( "models/hook.mdl" );
PRECACHE_SOUND( "weapons/grfire.wav" );
PRECACHE_SOUND( "weapons/grhang.wav" );
PRECACHE_SOUND( "weapons/grhit.wav" );
PRECACHE_SOUND( "weapons/grpull.wav" );
PRECACHE_SOUND( "weapons/grreset.wav" );
PRECACHE_MODEL( "sprites/rope.spr" );
g_usHook = PRECACHE_EVENT( 1, "events/hook.sc" );
g_usCable = PRECACHE_EVENT( 1, "events/cable.sc" );
g_usCarried = PRECACHE_EVENT( 1, "events/follow.sc" );
g_usFlagSpawn = PRECACHE_EVENT( 1, "events/flagspawn.sc" );
PRECACHE_SOUND( "weapons/grfire.wav" );
PRECACHE_SOUND( "weapons/grhang.wav" );
PRECACHE_SOUND( "weapons/grhit.wav" );
PRECACHE_SOUND( "weapons/grpull.wav" );
PRECACHE_SOUND( "weapons/grreset.wav" );
ENGINE_FORCE_UNMODIFIED( force_exactfile, Vector( 0, 0, 0 ), Vector( 0, 0, 0 ), "models/p_crowbar.mdl" );
ENGINE_FORCE_UNMODIFIED( force_exactfile, Vector( 0, 0, 0 ), Vector( 0, 0, 0 ), "models/p_light.mdl" );
ENGINE_FORCE_UNMODIFIED( force_exactfile, Vector( 0, 0, 0 ), Vector( 0, 0, 0 ), "models/p_nail.mdl" );
ENGINE_FORCE_UNMODIFIED( force_exactfile, Vector( 0, 0, 0 ), Vector( 0, 0, 0 ), "models/p_nail2.mdl" );
ENGINE_FORCE_UNMODIFIED( force_exactfile, Vector( 0, 0, 0 ), Vector( 0, 0, 0 ), "models/p_rock.mdl" );
ENGINE_FORCE_UNMODIFIED( force_exactfile, Vector( 0, 0, 0 ), Vector( 0, 0, 0 ), "models/p_rock2.mdl" );
ENGINE_FORCE_UNMODIFIED( force_exactfile, Vector( 0, 0, 0 ), Vector( 0, 0, 0 ), "models/p_shot.mdl" );
ENGINE_FORCE_UNMODIFIED( force_exactfile, Vector( 0, 0, 0 ), Vector( 0, 0, 0 ), "models/p_shot2.mdl" );
ENGINE_FORCE_UNMODIFIED( force_exactfile, Vector( 0, 0, 0 ), Vector( 0, 0, 0 ), "models/spike.mdl" );
ENGINE_FORCE_UNMODIFIED( force_exactfile, Vector( 0, 0, 0 ), Vector( 0, 0, 0 ), "models/rocket.mdl" );
ENGINE_FORCE_UNMODIFIED( force_exactfile, Vector( 0, 0, 0 ), Vector( 0, 0, 0 ), "models/grenade.mdl" );
ENGINE_FORCE_UNMODIFIED( force_exactfile, Vector( 0, 0, 0 ), Vector( 0, 0, 0 ), "models/backpack.mdl" );
ENGINE_FORCE_UNMODIFIED( force_exactfile, Vector( 0, 0, 0 ), Vector( 0, 0, 0 ), "models/backpack.mdl" );
ENGINE_FORCE_UNMODIFIED( force_exactfile, Vector( 0, 0, 0 ), Vector( 0, 0, 0 ), "models/armor_g.mdl" );
ENGINE_FORCE_UNMODIFIED( force_exactfile, Vector( 0, 0, 0 ), Vector( 0, 0, 0 ), "models/armor_r.mdl" );
ENGINE_FORCE_UNMODIFIED( force_exactfile, Vector( 0, 0, 0 ), Vector( 0, 0, 0 ), "models/armor_y.mdl" );
ENGINE_FORCE_UNMODIFIED( force_exactfile, Vector( 0, 0, 0 ), Vector( 0, 0, 0 ), "models/armor_y.mdl" );
ENGINE_FORCE_UNMODIFIED( force_exactfile, Vector( 0, 0, 0 ), Vector( 0, 0, 0 ), "models/b_nail0.mdl" );
ENGINE_FORCE_UNMODIFIED( force_exactfile, Vector( 0, 0, 0 ), Vector( 0, 0, 0 ), "models/b_nail1.mdl" );
ENGINE_FORCE_UNMODIFIED( force_exactfile, Vector( 0, 0, 0 ), Vector( 0, 0, 0 ), "models/g_light.mdl" );
ENGINE_FORCE_UNMODIFIED( force_exactfile, Vector( 0, 0, 0 ), Vector( 0, 0, 0 ), "models/g_nail.mdl" );
ENGINE_FORCE_UNMODIFIED( force_exactfile, Vector( 0, 0, 0 ), Vector( 0, 0, 0 ), "models/g_nail2.mdl" );
ENGINE_FORCE_UNMODIFIED( force_exactfile, Vector( 0, 0, 0 ), Vector( 0, 0, 0 ), "models/g_rock.mdl" );
ENGINE_FORCE_UNMODIFIED( force_exactfile, Vector( 0, 0, 0 ), Vector( 0, 0, 0 ), "models/g_rock2.mdl" );
ENGINE_FORCE_UNMODIFIED( force_exactfile, Vector( 0, 0, 0 ), Vector( 0, 0, 0 ), "models/g_shot2.mdl" );
ENGINE_FORCE_UNMODIFIED( force_exactfile, Vector( 0, 0, 0 ), Vector( 0, 0, 0 ), "models/pow_invis.mdl" );
ENGINE_FORCE_UNMODIFIED( force_exactfile, Vector( 0, 0, 0 ), Vector( 0, 0, 0 ), "models/pow_quad.mdl" );
ENGINE_FORCE_UNMODIFIED( force_exactfile, Vector( 0, 0, 0 ), Vector( 0, 0, 0 ), "models/pow_invuln.mdl" );
ENGINE_FORCE_UNMODIFIED( force_exactfile, Vector( 0, 0, 0 ), Vector( 0, 0, 0 ), "models/suit.mdl" );
ENGINE_FORCE_UNMODIFIED( force_exactfile, Vector( 0, 0, 0 ), Vector( 0, 0, 0 ), "models/w_battery.mdl" );
ENGINE_FORCE_UNMODIFIED( force_exactfile, Vector( 0, 0, 0 ), Vector( 0, 0, 0 ), "models/w_batteryl.mdl" );
ENGINE_FORCE_UNMODIFIED( force_exactfile, Vector( 0, 0, 0 ), Vector( 0, 0, 0 ), "models/w_medkit.mdl" );
ENGINE_FORCE_UNMODIFIED( force_exactfile, Vector( 0, 0, 0 ), Vector( 0, 0, 0 ), "models/w_medkitl.mdl" );
ENGINE_FORCE_UNMODIFIED( force_exactfile, Vector( 0, 0, 0 ), Vector( 0, 0, 0 ), "models/w_medkits.mdl" );
ENGINE_FORCE_UNMODIFIED( force_exactfile, Vector( 0, 0, 0 ), Vector( 0, 0, 0 ), "models/w_rpgammo.mdl" );
ENGINE_FORCE_UNMODIFIED( force_exactfile, Vector( 0, 0, 0 ), Vector( 0, 0, 0 ), "models/w_rpgammo_big.mdl" );
ENGINE_FORCE_UNMODIFIED( force_exactfile, Vector( 0, 0, 0 ), Vector( 0, 0, 0 ), "models/w_shotbox.mdl" );
ENGINE_FORCE_UNMODIFIED( force_exactfile, Vector( 0, 0, 0 ), Vector( 0, 0, 0 ), "models/w_shotbox_big.mdl" );
g_usHook = PRECACHE_EVENT( 1, "events/hook.sc" );
g_usCable = PRECACHE_EVENT( 1, "events/cable.sc" );
g_usCarried = PRECACHE_EVENT( 1, "events/follow.sc" );
g_usFlagSpawn = PRECACHE_EVENT( 1, "events/flagspawn.sc" );
}
ENGINE_FORCE_UNMODIFIED( force_exactfile, g_vecZero, g_vecZero, "models/p_crowbar.mdl" );
ENGINE_FORCE_UNMODIFIED( force_exactfile, g_vecZero, g_vecZero, "models/p_light.mdl" );
ENGINE_FORCE_UNMODIFIED( force_exactfile, g_vecZero, g_vecZero, "models/p_nail.mdl" );
ENGINE_FORCE_UNMODIFIED( force_exactfile, g_vecZero, g_vecZero, "models/p_nail2.mdl" );
ENGINE_FORCE_UNMODIFIED( force_exactfile, g_vecZero, g_vecZero, "models/p_rock.mdl" );
ENGINE_FORCE_UNMODIFIED( force_exactfile, g_vecZero, g_vecZero, "models/p_rock2.mdl" );
ENGINE_FORCE_UNMODIFIED( force_exactfile, g_vecZero, g_vecZero, "models/p_shot.mdl" );
ENGINE_FORCE_UNMODIFIED( force_exactfile, g_vecZero, g_vecZero, "models/p_shot2.mdl" );
ENGINE_FORCE_UNMODIFIED( force_exactfile, g_vecZero, g_vecZero, "models/spike.mdl" );
ENGINE_FORCE_UNMODIFIED( force_exactfile, g_vecZero, g_vecZero, "models/rocket.mdl" );
ENGINE_FORCE_UNMODIFIED( force_exactfile, g_vecZero, g_vecZero, "models/grenade.mdl" );
ENGINE_FORCE_UNMODIFIED( force_exactfile, g_vecZero, g_vecZero, "models/backpack.mdl" );
ENGINE_FORCE_UNMODIFIED( force_exactfile, g_vecZero, g_vecZero, "models/armor_g.mdl" );
ENGINE_FORCE_UNMODIFIED( force_exactfile, g_vecZero, g_vecZero, "models/armor_r.mdl" );
ENGINE_FORCE_UNMODIFIED( force_exactfile, g_vecZero, g_vecZero, "models/armor_y.mdl" );
ENGINE_FORCE_UNMODIFIED( force_exactfile, g_vecZero, g_vecZero, "models/b_nail0.mdl" );
ENGINE_FORCE_UNMODIFIED( force_exactfile, g_vecZero, g_vecZero, "models/b_nail1.mdl" );
ENGINE_FORCE_UNMODIFIED( force_exactfile, g_vecZero, g_vecZero, "models/g_light.mdl" );
ENGINE_FORCE_UNMODIFIED( force_exactfile, g_vecZero, g_vecZero, "models/g_nail.mdl" );
ENGINE_FORCE_UNMODIFIED( force_exactfile, g_vecZero, g_vecZero, "models/g_nail2.mdl" );
ENGINE_FORCE_UNMODIFIED( force_exactfile, g_vecZero, g_vecZero, "models/g_rock.mdl" );
ENGINE_FORCE_UNMODIFIED( force_exactfile, g_vecZero, g_vecZero, "models/g_rock2.mdl" );
ENGINE_FORCE_UNMODIFIED( force_exactfile, g_vecZero, g_vecZero, "models/g_shot2.mdl" );
ENGINE_FORCE_UNMODIFIED( force_exactfile, g_vecZero, g_vecZero, "models/pow_invis.mdl" );
ENGINE_FORCE_UNMODIFIED( force_exactfile, g_vecZero, g_vecZero, "models/pow_quad.mdl" );
ENGINE_FORCE_UNMODIFIED( force_exactfile, g_vecZero, g_vecZero, "models/pow_invuln.mdl" );
ENGINE_FORCE_UNMODIFIED( force_exactfile, g_vecZero, g_vecZero, "models/suit.mdl" );
ENGINE_FORCE_UNMODIFIED( force_exactfile, g_vecZero, g_vecZero, "models/w_battery.mdl" );
ENGINE_FORCE_UNMODIFIED( force_exactfile, g_vecZero, g_vecZero, "models/w_batteryl.mdl" );
ENGINE_FORCE_UNMODIFIED( force_exactfile, g_vecZero, g_vecZero, "models/w_medkit.mdl" );
ENGINE_FORCE_UNMODIFIED( force_exactfile, g_vecZero, g_vecZero, "models/w_medkitl.mdl" );
ENGINE_FORCE_UNMODIFIED( force_exactfile, g_vecZero, g_vecZero, "models/w_medkits.mdl" );
ENGINE_FORCE_UNMODIFIED( force_exactfile, g_vecZero, g_vecZero, "models/w_rpgammo.mdl" );
ENGINE_FORCE_UNMODIFIED( force_exactfile, g_vecZero, g_vecZero, "models/w_rpgammo_big.mdl" );
ENGINE_FORCE_UNMODIFIED( force_exactfile, g_vecZero, g_vecZero, "models/w_shotbox.mdl" );
ENGINE_FORCE_UNMODIFIED( force_exactfile, g_vecZero, g_vecZero, "models/w_shotbox_big.mdl" );
g_sGibbed = PRECACHE_EVENT( 1, "events/gibs.sc" );
g_sTeleport = PRECACHE_EVENT( 1, "events/teleport.sc" );
g_sTrail = PRECACHE_EVENT( 1, "events/trail.sc" );
g_sExplosion = PRECACHE_EVENT( 1, "events/explosion.sc" );
g_usPowerUp = PRECACHE_EVENT( 1, "events/powerup.sc" );
if( giPrecacheGrunt )
UTIL_PrecacheOther( "monster_human_grunt" );
}
/*

@ -31,6 +31,7 @@ extern entvars_t *g_pevLastInflictor;
extern int gmsgStatusText;
extern int gmsgStatusValue;
extern DLL_GLOBAL Vector g_vecAttackDir;
extern bool g_bIsThreeWave;
/*************************************/
/* STATUS BAR */
@ -116,6 +117,39 @@ int CBasePlayer::TakeDamage( entvars_t *pevInflictor, entvars_t *pevAttacker, fl
// keep track of amount of damage last sustained
m_lastDamageAmount = flDamage;
if( !g_bIsThreeWave )
{
//++ BulliT
if( g_pGameRules->m_iGameMode >= LMS )
{
if( !g_pGameRules->m_LMS.CanTakeDamage() )
return 0;
}
else if( g_pGameRules->m_iGameMode == ARENA )
{
if( !g_pGameRules->m_Arena.CanTakeDamage() )
return 0;
}
//++ BulliT
}
// team play damage avoidance
if( g_pGameRules->PlayerRelationship( this, pAttacker ) == GR_TEAMMATE )
{
//++ BulliT
// LTS you can still hurt yourself
if( !g_bIsThreeWave && g_pGameRules->m_iGameMode == LTS && pAttacker != this )
return 0;
//-- Martin Webrant
// Teamplay 3 you can still hurt yourself
if ( CVAR_GET_FLOAT( "mp_teamplay" ) == 3 && pAttacker != this )
return 0;
// Teamplay 1 can't hurt any teammates, including yourself
if ( CVAR_GET_FLOAT( "mp_teamplay" ) == 1 )
return 0;
// Teamplay 2 you can still hurt teammates
}
// check for quad damage powerup on the attacker
if (pAttacker->IsPlayer())
{
@ -138,36 +172,6 @@ int CBasePlayer::TakeDamage( entvars_t *pevInflictor, entvars_t *pevAttacker, fl
flDamage /= 2;
EMIT_SOUND( ENT( pev ), CHAN_ITEM, "rune/rune1.wav", 1, ATTN_NORM );
}
//++ BulliT
if( g_pGameRules->m_iGameMode >= LMS )
{
if( !g_pGameRules->m_LMS.CanTakeDamage() )
return 0;
}
else if( g_pGameRules->m_iGameMode == ARENA )
{
if( !g_pGameRules->m_Arena.CanTakeDamage() )
return 0;
}
//++ BulliT
// team play damage avoidance
if ( g_pGameRules->PlayerRelationship( this, pAttacker ) == GR_TEAMMATE )
{
//++ BulliT
// LTS you can still hurt yourself
if ( g_pGameRules->m_iGameMode == LTS && pAttacker != this )
return 0;
//-- Martin Webrant
// Teamplay 3 you can still hurt yourself
if ( CVAR_GET_FLOAT( "mp_teamplay" ) == 3 && pAttacker != this )
return 0;
// Teamplay 1 can't hurt any teammates, including yourself
if ( CVAR_GET_FLOAT( "mp_teamplay" ) == 1 )
return 0;
// Teamplay 2 you can still hurt teammates
}
// save damage based on the target's armor level
float flSave = ceil(pev->armortype * flDamage);

@ -35,6 +35,8 @@ extern unsigned short g_usHook;
extern unsigned short g_usCable;
extern unsigned short g_usCarried;
extern bool g_bIsThreeWave;
#ifdef CLIENT_DLL
#include "cl_entity.h"
struct cl_entity_s *GetViewEntity( void );
@ -110,7 +112,8 @@ void QuakeClassicPrecache( void )
PRECACHE_SOUND("items/itembk2.wav");
PRECACHE_MODEL("models/backpack.mdl");
PRECACHE_MODEL("models/v_grapple.mdl");
if( g_bIsThreeWave )
PRECACHE_MODEL("models/v_grapple.mdl");
}
//================================================================================================

@ -25,11 +25,12 @@
#include "teamplay_gamerules.h"
#include "skill.h"
#include "game.h"
#include "threewave_gamerules.h"
extern Vector g_vecTeleMins[MAX_TELES];
extern Vector g_vecTeleMaxs[MAX_TELES];
extern int g_iTeleNum;
extern bool g_bIsThreeWave;
extern edict_t *EntSelectSpawnPoint( CBaseEntity *pPlayer, bool bCheckDM );
DLL_GLOBAL CGameRules *g_pGameRules = NULL;
@ -164,7 +165,11 @@ CGameRules *InstallGameRules( void )
}
else
{
if( CVAR_GET_FLOAT( "mp_teamplay" ) >= LTS )
if( g_bIsThreeWave )
{
return new CThreeWave;
}
else if( CVAR_GET_FLOAT( "mp_teamplay" ) >= LTS )
{
// lts
return new CHalfLifeTeamplay;

@ -30,6 +30,8 @@ enginefuncs_t g_engfuncs;
globalvars_t *gpGlobals;
server_physics_api_t g_physfuncs;
bool g_bIsThreeWave;
#ifdef _WIN32
// Required DLL entry point
@ -52,6 +54,13 @@ BOOL WINAPI DllMain( HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved )
extern "C" void DLLEXPORT EXPORT2 GiveFnptrsToDll( enginefuncs_t *pengfuncsFromEngine, globalvars_t *pGlobals )
{
char gamedir[256];
memcpy( &g_engfuncs, pengfuncsFromEngine, sizeof(enginefuncs_t) );
gpGlobals = pGlobals;
GET_GAME_DIR( gamedir );
if( FStrEq( gamedir, "3wave" ) )
g_bIsThreeWave = true;
}

@ -39,6 +39,7 @@ extern int gmsgMOTD;
extern int gmsgServerName;
extern int g_teamplay;
extern bool g_bIsThreeWave;
bool g_bHaveMOTD;
@ -248,12 +249,16 @@ void CHalfLifeMultiplay::Think( void )
return;
}
if( !g_bIsThreeWave )
{
//++ BulliT
if( g_pGameRules->m_iGameMode == LMS )
m_LMS.Think();
else if( g_pGameRules->m_iGameMode == ARENA )
m_Arena.Think();
if( g_pGameRules->m_iGameMode == LMS )
m_LMS.Think();
else if( g_pGameRules->m_iGameMode == ARENA )
m_Arena.Think();
//-- Martin Webrant
}
if( m_flGameEndTime != 0.0 && m_flGameEndTime <= gpGlobals->time )
{
GoToIntermission();
@ -469,13 +474,15 @@ void CHalfLifeMultiplay::InitHUD( CBasePlayer *pl )
( pl->pev->netname && ( STRING( pl->pev->netname ) )[0] != 0 ) ? STRING( pl->pev->netname ) : "unconnected" ) );
// team match?
UTIL_LogPrintf( "\"%s<%i><%s><%s>\" entered the game\n",
STRING( pl->pev->netname ),
GETPLAYERUSERID( pl->edict() ),
GETPLAYERAUTHID( pl->edict() ),
GetTeamName( pl->pev->team ) );
/*
if( g_teamplay )
if( g_bIsThreeWave )
{
UTIL_LogPrintf( "\"%s<%i><%s><%s>\" entered the game\n",
STRING( pl->pev->netname ),
GETPLAYERUSERID( pl->edict() ),
GETPLAYERAUTHID( pl->edict() ),
GetTeamName( pl->pev->team ) );
}
else if( g_teamplay )
{
UTIL_LogPrintf( "\"%s<%i><%s><%s>\" entered the game\n",
STRING( pl->pev->netname ),
@ -490,7 +497,7 @@ void CHalfLifeMultiplay::InitHUD( CBasePlayer *pl )
GETPLAYERUSERID( pl->edict() ),
GETPLAYERAUTHID( pl->edict() ),
GETPLAYERUSERID( pl->edict() ) );
}*/
}
UpdateGameMode( pl );
@ -539,23 +546,28 @@ void CHalfLifeMultiplay::ClientDisconnected( edict_t *pClient )
if( pPlayer )
{
if( !g_bIsThreeWave )
{
//++ BulliT
if( g_pGameRules->m_iGameMode >= LMS )
m_LMS.ClientDisconnected( pPlayer );
else if( g_pGameRules->m_iGameMode == ARENA )
m_Arena.ClientDisconnected( pPlayer );
if( g_pGameRules->m_iGameMode >= LMS )
m_LMS.ClientDisconnected( pPlayer );
else if( g_pGameRules->m_iGameMode == ARENA )
m_Arena.ClientDisconnected( pPlayer );
//-- Martin Webrant
}
FireTargets( "game_playerleave", pPlayer, pPlayer, USE_TOGGLE, 0 );
// team match?
UTIL_LogPrintf( "\"%s<%i><%s><%s>\" disconnected\n",
STRING( pPlayer->pev->netname ),
GETPLAYERUSERID( pPlayer->edict() ),
GETPLAYERAUTHID( pPlayer->edict() ),
GetTeamName( pPlayer->pev->team ) );
/*if( g_teamplay )
if( g_bIsThreeWave )
{
UTIL_LogPrintf( "\"%s<%i><%s><%s>\" disconnected\n",
STRING( pPlayer->pev->netname ),
GETPLAYERUSERID( pPlayer->edict() ),
GETPLAYERAUTHID( pPlayer->edict() ),
GetTeamName( pPlayer->pev->team ) );
}
else if( g_teamplay )
{
UTIL_LogPrintf( "\"%s<%i><%s><%s>\" disconnected\n",
STRING( pPlayer->pev->netname ),
@ -570,7 +582,7 @@ void CHalfLifeMultiplay::ClientDisconnected( edict_t *pClient )
GETPLAYERUSERID( pPlayer->edict() ),
GETPLAYERAUTHID( pPlayer->edict() ),
GETPLAYERUSERID( pPlayer->edict() ) );
}*/
}
pPlayer->RemoveAllItems( TRUE );// destroy all of the players weapons and items
}
@ -648,7 +660,7 @@ void CHalfLifeMultiplay::PlayerSpawn( CBasePlayer *pPlayer )
pPlayer->GiveNamedItem( "weapon_quakegun" );
//++ BulliT
if( g_pGameRules->m_iGameMode >= ARENA )
if( !g_bIsThreeWave && g_pGameRules->m_iGameMode >= ARENA )
{
pPlayer->m_iQuakeItems |= ( IT_AXE | IT_SHOTGUN | IT_SUPER_SHOTGUN | IT_NAILGUN | IT_SUPER_NAILGUN | IT_GRENADE_LAUNCHER | IT_ROCKET_LAUNCHER | IT_LIGHTNING );
pPlayer->m_iAmmoRockets = 100;
@ -866,14 +878,16 @@ void CHalfLifeMultiplay::DeathNotice( CBasePlayer *pVictim, entvars_t *pKiller,
// killed self
// team match?
UTIL_LogPrintf( "\"%s<%i><%s><%s>\" committed suicide with \"%s\"\n",
STRING( pVictim->pev->netname ),
GETPLAYERUSERID( pVictim->edict() ),
GETPLAYERAUTHID( pVictim->edict() ),
GetTeamName( pVictim->pev->team ),
killer_weapon_name );
/*
if( g_teamplay )
if( g_bIsThreeWave )
{
UTIL_LogPrintf( "\"%s<%i><%s><%s>\" committed suicide with \"%s\"\n",
STRING( pVictim->pev->netname ),
GETPLAYERUSERID( pVictim->edict() ),
GETPLAYERAUTHID( pVictim->edict() ),
GetTeamName( pVictim->pev->team ),
killer_weapon_name );
}
else if( g_teamplay )
{
UTIL_LogPrintf( "\"%s<%i><%s><%s>\" committed suicide with \"%s\"\n",
STRING( pVictim->pev->netname ),
@ -890,22 +904,25 @@ void CHalfLifeMultiplay::DeathNotice( CBasePlayer *pVictim, entvars_t *pKiller,
GETPLAYERAUTHID( pVictim->edict() ),
GETPLAYERUSERID( pVictim->edict() ),
killer_weapon_name );
}*/
}
}
else if( pKiller->flags & FL_CLIENT )
{
// team match?
UTIL_LogPrintf( "\"%s<%i><%s><%s>\" killed \"%s<%i><%s><%s>\" with \"%s\"\n",
STRING( pKiller->netname ),
GETPLAYERUSERID( ENT(pKiller) ),
GETPLAYERAUTHID( ENT(pKiller) ),
GetTeamName( pKiller->team ),
STRING( pVictim->pev->netname ),
GETPLAYERUSERID( pVictim->edict() ),
GETPLAYERAUTHID( pVictim->edict() ),
GetTeamName( pVictim->pev->team ),
killer_weapon_name );
/*if( g_teamplay )
if( g_bIsThreeWave )
{
UTIL_LogPrintf( "\"%s<%i><%s><%s>\" killed \"%s<%i><%s><%s>\" with \"%s\"\n",
STRING( pKiller->netname ),
GETPLAYERUSERID( ENT(pKiller) ),
GETPLAYERAUTHID( ENT(pKiller) ),
GetTeamName( pKiller->team ),
STRING( pVictim->pev->netname ),
GETPLAYERUSERID( pVictim->edict() ),
GETPLAYERAUTHID( pVictim->edict() ),
GetTeamName( pVictim->pev->team ),
killer_weapon_name );
}
else if( g_teamplay )
{
UTIL_LogPrintf( "\"%s<%i><%s><%s>\" killed \"%s<%i><%s><%s>\" with \"%s\"\n",
STRING( pKiller->netname ),
@ -930,21 +947,23 @@ void CHalfLifeMultiplay::DeathNotice( CBasePlayer *pVictim, entvars_t *pKiller,
GETPLAYERAUTHID( pVictim->edict() ),
GETPLAYERUSERID( pVictim->edict() ),
killer_weapon_name );
}*/
}
}
else
{
// killed by the world
// team match?
UTIL_LogPrintf( "\"%s<%i><%s><%s>\" committed suicide with \"%s\" (world)\n",
STRING( pVictim->pev->netname ),
GETPLAYERUSERID( pVictim->edict() ),
GETPLAYERAUTHID( pVictim->edict() ),
GetTeamName( pVictim->pev->team ),
killer_weapon_name );
/*if( g_teamplay )
if( g_bIsThreeWave )
{
UTIL_LogPrintf( "\"%s<%i><%s><%s>\" committed suicide with \"%s\" (world)\n",
STRING( pVictim->pev->netname ),
GETPLAYERUSERID( pVictim->edict() ),
GETPLAYERAUTHID( pVictim->edict() ),
GetTeamName( pVictim->pev->team ),
killer_weapon_name );
}
else if( g_teamplay )
{
UTIL_LogPrintf( "\"%s<%i><%s><%s>\" committed suicide with \"%s\" (world)\n",
STRING( pVictim->pev->netname ),
@ -961,7 +980,7 @@ void CHalfLifeMultiplay::DeathNotice( CBasePlayer *pVictim, entvars_t *pKiller,
GETPLAYERAUTHID( pVictim->edict() ),
GETPLAYERUSERID( pVictim->edict() ),
killer_weapon_name );
}*/
}
}
MESSAGE_BEGIN( MSG_SPEC, SVC_DIRECTOR );

@ -62,6 +62,7 @@ extern void CopyToBodyQue( entvars_t *pev);
extern void respawn( entvars_t *pev, BOOL fCopyCorpse );
extern Vector VecBModelOrigin( entvars_t *pevBModel );
extern edict_t *EntSelectSpawnPoint( CBaseEntity *pPlayer, bool bCheckDM );
extern bool g_bIsThreeWave;
// the world node graph
extern CGraph WorldGraph;
@ -638,7 +639,7 @@ void CBasePlayer::Killed( entvars_t *pevAttacker, int iGib )
pev->angles.z = 0;
//++ BulliT
if( g_pGameRules->m_iGameMode >= ARENA )
if( !g_bIsThreeWave && g_pGameRules->m_iGameMode >= ARENA )
m_iQuakeWeapon = 0;
//-- Martin Webrant
SetThink( &CBasePlayer::PlayerDeathThink );
@ -4712,7 +4713,11 @@ LINK_ENTITY_TO_CLASS( info_intermission, CInfoIntermission )
void CBasePlayer::Init()
{
m_bReady = true;
m_bIngame = g_pGameRules->m_iGameMode < ARENA;
m_bIngame = ( g_bIsThreeWave || g_pGameRules->m_iGameMode < ARENA );
if( g_bIsThreeWave )
return;
if( g_pGameRules->m_iGameMode >= LMS )
g_pGameRules->m_LMS.ClientConnected( this );
else if( g_pGameRules->m_iGameMode == ARENA )

@ -30,6 +30,7 @@ static int team_scores[MAX_TEAMS];
static int num_teams = 0;
extern DLL_GLOBAL BOOL g_fGameOver;
extern bool g_bIsThreeWave;
CHalfLifeTeamplay::CHalfLifeTeamplay()
{
@ -92,7 +93,7 @@ void CHalfLifeTeamplay::Think( void )
}
//++ BulliT
if( g_pGameRules->m_iGameMode == LTS )
if( !g_bIsThreeWave && g_pGameRules->m_iGameMode == LTS )
m_LMS.Think();
if( m_iGameMode != CVAR_GET_FLOAT( "mp_teamplay" ) )

@ -241,7 +241,7 @@ typedef struct enginefuncs_s
// Forces the client and server to be running with the same version of the specified file
// ( e.g., a player model ).
// Calling this has no effect in single player
void (*pfnForceUnmodified)( FORCE_TYPE type, float *mins, float *maxs, const char *filename );
void (*pfnForceUnmodified)( FORCE_TYPE type, const float *mins, const float *maxs, const char *filename );
void (*pfnGetPlayerStats)( const edict_t *pClient, int *ping, int *packet_loss );