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.
90 lines
2.3 KiB
90 lines
2.3 KiB
//========= Copyright Valve Corporation, All rights reserved. ============//
|
|
//
|
|
// Purpose: CTF Armor.
|
|
//
|
|
//=============================================================================//
|
|
#include "cbase.h"
|
|
#include "items.h"
|
|
#include "tf_gamerules.h"
|
|
#include "tf_shareddefs.h"
|
|
#include "tf_player.h"
|
|
#include "tf_team.h"
|
|
#include "engine/IEngineSound.h"
|
|
#include "entity_armor.h"
|
|
|
|
//=============================================================================
|
|
//
|
|
// CTF Armor defines.
|
|
//
|
|
|
|
#define TF_ARMOR_PICKUP_SOUND "Armor.Touch"
|
|
#define TF_ARMOR_CAPACITY 200
|
|
|
|
LINK_ENTITY_TO_CLASS( item_armor, CArmor );
|
|
|
|
//=============================================================================
|
|
//
|
|
// CTF Armor functions.
|
|
//
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Purpose: Spawn function for the armor
|
|
//-----------------------------------------------------------------------------
|
|
void CArmor::Spawn( void )
|
|
{
|
|
BaseClass::Spawn();
|
|
}
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Purpose: Precache function for the armor
|
|
//-----------------------------------------------------------------------------
|
|
void CArmor::Precache( void )
|
|
{
|
|
PrecacheScriptSound( TF_ARMOR_PICKUP_SOUND );
|
|
BaseClass::Precache();
|
|
}
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Purpose: MyTouch function for the armor
|
|
//-----------------------------------------------------------------------------
|
|
bool CArmor::MyTouch( CBasePlayer *pPlayer )
|
|
{
|
|
bool bSuccess = false;
|
|
|
|
if ( ValidTouch( pPlayer ) )
|
|
{
|
|
CTFPlayer *pCTFPlayer = ToTFPlayer(pPlayer);
|
|
|
|
if ( pCTFPlayer )
|
|
{
|
|
int iMaxArmor = pCTFPlayer->GetPlayerClass()->GetMaxArmor();
|
|
int iCurrentArmor = pCTFPlayer->ArmorValue();
|
|
|
|
if ( iCurrentArmor < iMaxArmor )
|
|
{
|
|
if ( iCurrentArmor + TF_ARMOR_CAPACITY >= iMaxArmor )
|
|
{
|
|
pCTFPlayer->SetArmorValue( iMaxArmor );
|
|
}
|
|
else
|
|
{
|
|
pCTFPlayer->SetArmorValue( iCurrentArmor + TF_ARMOR_CAPACITY );
|
|
}
|
|
|
|
CSingleUserRecipientFilter user( pPlayer );
|
|
user.MakeReliable();
|
|
|
|
UserMessageBegin( user, "ItemPickup" );
|
|
WRITE_STRING( GetClassname() );
|
|
MessageEnd();
|
|
|
|
CPASAttenuationFilter filter( this, TF_ARMOR_PICKUP_SOUND );
|
|
EmitSound( filter, entindex(), TF_ARMOR_PICKUP_SOUND );
|
|
|
|
bSuccess = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
return bSuccess;
|
|
}
|