Portable Half-Life SDK. GoldSource and Xash3D. Crossplatform.
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.
 
 
 
 
 
 

126 lines
3.4 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.
*
****/
//
// heavyrain_gamerules.cpp
//
#include "extdll.h"
#include "util.h"
#include "cbase.h"
#include "player.h"
#include "weapons.h"
#include "gamerules.h"
#include "heavyrain_gamerules.h"
#include "game.h"
extern DLL_GLOBAL BOOL g_fGameOver;
extern int gmsgScoreInfo;
extern int gmsgPlayMP3; //AJH - Killars MP3player
extern int gmsgStopMP3;
CHeavyRainplay :: CHeavyRainplay()
{
//Genuflect
}
BOOL CHeavyRainplay::IsHeavyRain()
{
return TRUE;
}
void CHeavyRainplay::PlayerSpawn( CBasePlayer *pPlayer )
{
BOOL addDefault;
CBaseEntity *pWeaponEntity = NULL;
pPlayer->pev->weapons |= (1<<WEAPON_SUIT);
addDefault = TRUE;
edict_t *pClient = g_engfuncs.pfnPEntityOfEntIndex( 1 );
while( ( pWeaponEntity = UTIL_FindEntityByClassname( pWeaponEntity, "game_player_equip" ) ) )
{
pWeaponEntity->Touch( pPlayer );
addDefault = FALSE;
}
if ( addDefault )
{
pPlayer->GiveNamedItem( "weapon_jason" );
pPlayer->GiveNamedItem( "weapon_goldengun" );
pPlayer->GiveAmmo( 15, "gold", GOLDENGUN_MAX_CARRY );
MESSAGE_BEGIN( MSG_ONE, gmsgPlayMP3, NULL, pPlayer->edict() );
WRITE_STRING( "media/jayson.mp3" );
MESSAGE_END();
}
}
void CHeavyRainplay::PlayerKilled( CBasePlayer *pVictim, entvars_t *pKiller, entvars_t *pInflictor )
{
CBasePlayer *peKiller = NULL;
CBaseEntity *ktmp = CBaseEntity::Instance( pKiller );
if ( pVictim->pev == pKiller )
{ // killed self
pVictim->pev->frags -= 10;
UTIL_SayText( "You sacrificed your life for Jason\nYou lose 10 Jasons for revival costs.\n", pVictim );
return;
}
else if ( ktmp && ktmp->IsPlayer() )
{
int FUCK = pVictim->pev->frags;
pKiller->frags += JasonsStolen(FUCK);
pVictim->pev->frags -= JasonsStolen(FUCK);
UTIL_SayText( "You lose your Jasons to the killer.\nKILL HIM AND GET THEM BACK! ;)\n", pVictim );
MESSAGE_BEGIN( MSG_ALL, gmsgScoreInfo );
WRITE_BYTE( ENTINDEX(pVictim->edict()) );
WRITE_SHORT( pVictim->pev->frags );
WRITE_SHORT( pVictim->m_iDeaths );
WRITE_SHORT( 0 );
WRITE_SHORT( g_pGameRules->GetTeamIndex( pVictim->m_szTeamName ) + 1 );
WRITE_SHORT( pVictim->m_fHSDev );
MESSAGE_END();
CBaseEntity *ep = CBaseEntity::Instance( pKiller );
if ( ep && ep->Classify() == CLASS_PLAYER )
{
CBasePlayer *PK = (CBasePlayer*)ep;
UTIL_SayText( "You stole your victim's Jasons and it is now added to your score.\nNo doubt hes out for blood, watch out ;)\n", PK );
MESSAGE_BEGIN( MSG_ALL, gmsgScoreInfo );
WRITE_BYTE( ENTINDEX(PK->edict()) );
WRITE_SHORT( PK->pev->frags );
WRITE_SHORT( PK->m_iDeaths );
WRITE_SHORT( 0 );
WRITE_SHORT( GetTeamIndex( PK->m_szTeamName) + 1 );
WRITE_SHORT( PK->m_fHSDev );
MESSAGE_END();
// let the killer paint another decal as soon as he'd like.
PK->m_flNextDecalTime = gpGlobals->time;
}
else
{
// World did them in, Genuflect.
}
}
}
int CHeavyRainplay::JasonsStolen(int jason)
{
return jason; //JASON! I found you!
}