It is currently Fri Apr 19, 2024 3:12 am
class MyNewHeadcrap : public CHeadcrab
{
public:
MyNewHeadcrap()
{
Precache();
SetModel("models/MyNewHeadcrap.mdl" );
}
void Precache()
{
PrecacheModel( "models/MyNewHeadcrap.mdl" );
}
};
void Ccombinecrab::Precache( void )
{
PrecacheModel( "models/m4m/combinecrab.mdl" );
PrecacheScriptSound( "NPC_HeadCrab.Gib" );
PrecacheScriptSound( "NPC_HeadCrab.Idle" );
PrecacheScriptSound( "NPC_HeadCrab.Alert" );
PrecacheScriptSound( "NPC_HeadCrab.Pain" );
PrecacheScriptSound( "NPC_HeadCrab.Die" );
PrecacheScriptSound( "NPC_HeadCrab.Attack" );
PrecacheScriptSound( "NPC_HeadCrab.Bite" );
PrecacheScriptSound( "NPC_Headcrab.BurrowIn" );
PrecacheScriptSound( "NPC_Headcrab.BurrowOut" );
BaseClass::Precache();
}
void Ccombinecrab::Spawn( void )
{
Precache();
SetModel( "models/m4m/combinecrab.mdl" );
BaseClass::Spawn();
m_iHealth = sk_headcrab_health.GetFloat();
m_flBurrowTime = 0.0f;
m_bCrawlFromCanister = false;
m_bMidJump = false;
NPCInit();
HeadcrabInit();
}
Activity Ccombinecrab::NPC_TranslateActivity( Activity eNewActivity )
{
if ( eNewActivity == ACT_WALK )
return ACT_RUN;
return BaseClass::NPC_TranslateActivity( eNewActivity );
}
void Ccombinecrab::IdleSound( void )
{
EmitSound( "NPC_HeadCrab.Idle" );
}
void Ccombinecrab::AlertSound( void )
{
EmitSound( "NPC_HeadCrab.Alert" );
}
void Ccombinecrab::PainSound( const CTakeDamageInfo &info )
{
if( IsOnFire() && random->RandomInt( 0, HEADCRAB_BURN_SOUND_FREQUENCY ) > 0 )
{
// Don't squeak every think when burning.
return;
}
EmitSound( "NPC_HeadCrab.Pain" );
}
void Ccombinecrab::DeathSound( const CTakeDamageInfo &info )
{
EmitSound( "NPC_HeadCrab.Die" );
}
void Ccombinecrab::TelegraphSound( void )
{
//FIXME: Need a real one
EmitSound( "NPC_HeadCrab.Alert" );
}
void Ccombinecrab::AttackSound( void )
{
EmitSound( "NPC_Headcrab.Attack" );
}
void Ccombinecrab::BiteSound( void )
{
EmitSound( "NPC_HeadCrab.Bite" );
}
LINK_ENTITY_TO_CLASS( npc_combinecrab, Ccombinecrab );
float Ccombinecrab::MaxYawSpeed ( void )
{
switch ( GetActivity() )
{
case ACT_IDLE:
return 30;
case ACT_RUN:
case ACT_WALK:
return 20;
case ACT_TURN_LEFT:
case ACT_TURN_RIGHT:
return 15;
case ACT_RANGE_ATTACK1:
{
const Task_t *pCurTask = GetTask();
if ( pCurTask && pCurTask->iTask == TASK_HEADCRAB_JUMP_FROM_CANISTER )
return 15;
}
return 30;
default:
return 30;
}
return BaseClass::MaxYawSpeed();
}
class Ccombinecrab : public CBaseHeadcrab
{
DECLARE_CLASS( Ccombinecrab, CBaseHeadcrab );
public:
void Precache( void );
void Spawn( void );
float MaxYawSpeed( void );
Activity NPC_TranslateActivity( Activity eNewActivity );
void BiteSound( void );
void PainSound( const CTakeDamageInfo &info );
void DeathSound( const CTakeDamageInfo &info );
void IdleSound( void );
void AlertSound( void );
void AttackSound( void );
void TelegraphSound( void );
};
@include "base.fgd"
@PointClass base(Targetname) studio("models/m4m/combinecrab.mdl")= npc_combinecrab : "combinecrab"
[
]
LINK_ENTITY_TO_CLASS( npc_combinecrab, Ccombinecrab );
Users browsing this forum: Bing [Bot]