hl2_src-leak-2017/src/game/server/tf2/tf_obj_dragonsteeth.cpp

98 lines
3.0 KiB
C++

//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose: Vehicle blockers
//
// $NoKeywords: $
//=============================================================================//
#include "cbase.h"
#include "tf_player.h"
#include "tf_team.h"
#include "tf_obj.h"
#include "tf_obj_dragonsteeth.h"
// ------------------------------------------------------------------------ //
// Dragon's teeth defines
#define DRAGONSTEETH_MINS Vector(-20, -20, 0)
#define DRAGONSTEETH_MAXS Vector( 20, 20, 35)
#define DRAGONSTEETH_MODEL "models/objects/human_obj_dragonsteeth.mdl"
#define DRAGONSTEETH_ASSEMBLING_MODEL "models/objects/human_obj_dragonsteeth_build.mdl"
IMPLEMENT_SERVERCLASS_ST( CObjectDragonsTeeth, DT_ObjectDragonsTeeth )
END_SEND_TABLE();
LINK_ENTITY_TO_CLASS(obj_dragonsteeth, CObjectDragonsTeeth);
PRECACHE_REGISTER(obj_dragonsteeth);
ConVar obj_dragonsteeth_health( "obj_dragonsteeth_health","200", FCVAR_NONE, "Dragon's Teeth health" );
//-----------------------------------------------------------------------------
// Purpose:
//-----------------------------------------------------------------------------
CObjectDragonsTeeth::CObjectDragonsTeeth()
{
UseClientSideAnimation();
}
//-----------------------------------------------------------------------------
// Purpose:
//-----------------------------------------------------------------------------
void CObjectDragonsTeeth::Spawn( void )
{
SetModel( DRAGONSTEETH_MODEL );
SetSolid( SOLID_BBOX );
UTIL_SetSize(this, DRAGONSTEETH_MINS, DRAGONSTEETH_MAXS);
m_iHealth = obj_dragonsteeth_health.GetInt();
m_fObjectFlags |= OF_DOESNT_NEED_POWER | OF_SUPPRESS_APPEAR_ON_MINIMAP | OF_ALLOW_REPEAT_PLACEMENT | OF_ALIGN_TO_GROUND;
SetType( OBJ_DRAGONSTEETH );
BaseClass::Spawn();
}
//-----------------------------------------------------------------------------
// Purpose:
//-----------------------------------------------------------------------------
void CObjectDragonsTeeth::Precache()
{
BaseClass::Precache();
PrecacheModel( DRAGONSTEETH_MODEL );
PrecacheModel( DRAGONSTEETH_ASSEMBLING_MODEL );
}
//-----------------------------------------------------------------------------
// Purpose: Start building the object
//-----------------------------------------------------------------------------
bool CObjectDragonsTeeth::StartBuilding( CBaseEntity *pBuilder )
{
if ( BaseClass::StartBuilding( pBuilder ) )
{
// Dragonsteeth randomise their Y before building
QAngle vecAngles = GetAbsAngles();
vecAngles[YAW] = RandomFloat(0,360);
SetAbsAngles( vecAngles );
return true;
}
return false;
}
//-----------------------------------------------------------------------------
// Purpose:
// Input : act -
//-----------------------------------------------------------------------------
void CObjectDragonsTeeth::OnActivityChanged( Activity act )
{
BaseClass::OnActivityChanged( act );
switch ( act )
{
case ACT_OBJ_ASSEMBLING:
SetModel( DRAGONSTEETH_ASSEMBLING_MODEL );
break;
default:
SetModel( DRAGONSTEETH_MODEL );
break;
}
}