//
// test_gamerules
// Game rules for the game mode, for testing weapons
// and other beta testing.
//

#include	"extdll.h"
#include	"util.h"
#include	"cbase.h"
#include	"player.h"
#include	"weapons.h"
#include	"gamerules.h"
#include	"test_gamerules.h"
#include	"game.h"

extern DLL_GLOBAL BOOL		g_fGameOver;
extern int gmsgScoreInfo;
extern int gmsgShowGameTitle;

CTestplay :: CTestplay()
{
 //Genuflect
}

BOOL CTestplay::IsHeavyRain()
{
 return FALSE;
}

void CTestplay::PlayerSpawn( CBasePlayer *pPlayer )
{
	ALERT(at_console, "Test Game Mode Initalized!\no Giving Weapons\no Kills don't count\no This is for testing and sandboxing\no Have fun!");

	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_fotn" );
		pPlayer->GiveNamedItem( "weapon_9mmhandgun" );
		pPlayer->GiveNamedItem( "ammo_9mmclip" );
		pPlayer->GiveNamedItem( "weapon_shotgun" );
		pPlayer->GiveNamedItem( "ammo_buckshot" );
		pPlayer->GiveNamedItem( "weapon_9mmAR" );
		pPlayer->GiveNamedItem( "ammo_9mmAR" );
		pPlayer->GiveNamedItem( "ammo_ARgrenades" );
		pPlayer->GiveNamedItem( "weapon_handgrenade" );
		pPlayer->GiveNamedItem( "weapon_tripmine" );
		pPlayer->GiveNamedItem( "weapon_rpg" );
		pPlayer->GiveNamedItem( "ammo_rpgclip" );
		pPlayer->GiveNamedItem( "weapon_satchel" );
		pPlayer->GiveNamedItem( "weapon_snark" );
		pPlayer->GiveNamedItem( "weapon_soda" );
		pPlayer->GiveNamedItem( "weapon_dosh" );
		pPlayer->GiveNamedItem( "weapon_beamkatana" );
		pPlayer->GiveNamedItem( "weapon_ak47" );
		pPlayer->GiveNamedItem( "weapon_bow" );
		pPlayer->GiveNamedItem( "weapon_jason" );
		pPlayer->GiveNamedItem( "weapon_jihad" );
		pPlayer->GiveNamedItem( "weapon_jackal" );
		pPlayer->GiveNamedItem( "weapon_nstar" );
		pPlayer->GiveNamedItem( "weapon_mw2" );
		pPlayer->GiveNamedItem( "weapon_zapper" );
		pPlayer->GiveNamedItem( "weapon_goldengun" );
		pPlayer->GiveNamedItem( "weapon_boombox" );
		pPlayer->GiveNamedItem( "weapon_scientist" );
		pPlayer->GiveNamedItem( "weapon_modman" );
	}
		//char welcometext[1024] = "Welcome to Test Gamemode!\n";
		//UTIL_SayText( welcometext, pPlayer );
}

void CTestplay::PlayerKilled( CBasePlayer *pVictim, entvars_t *pKiller, entvars_t *pInflictor )
{
	CBasePlayer *peKiller = NULL;
	CBaseEntity *ktmp = CBaseEntity::Instance( pKiller );
	if( pVictim->pev == pKiller )  
	{
		// killed self
		UTIL_SayText( "You killed yourself.\n", pVictim );
		return;
	}
	else if ( ktmp && ktmp->IsPlayer() )
	{
		UTIL_SayText( "You got shot and died.\n", pVictim );

		CBaseEntity *ep = CBaseEntity::Instance( pKiller );

		if ( ep && ep->Classify() == CLASS_PLAYER )
		{
			CBasePlayer *PK = (CBasePlayer*)ep;

			UTIL_SayText( "You killed a person.\n", PK );

			PK->m_flNextDecalTime = gpGlobals->time;
		}
		else
		{
			// World did them in, Genuflect.
		}
	}
}

BOOL CTestplay::IsTest( void )
{
	return TRUE;
}
