mirror of https://github.com/FWGS/hlsdk-xash3d
93 lines
2.5 KiB
C++
93 lines
2.5 KiB
C++
#include "extdll.h"
|
|
#include "util.h"
|
|
#include "cbase.h"
|
|
#include "monsters.h"
|
|
#include "weapons.h"
|
|
#include "nodes.h"
|
|
#include "player.h"
|
|
#include "gamerules.h"
|
|
|
|
LINK_ENTITY_TO_CLASS( tf_weapon_axe, CTFAxe )
|
|
|
|
void CTFAxe::Spawn()
|
|
{
|
|
Precache();
|
|
|
|
m_iId = 5;
|
|
m_iClip = -1;
|
|
pev->solid = SOLID_TRIGGER;
|
|
}
|
|
|
|
int CTFAxe::GetItemInfo( ItemInfo *p )
|
|
{
|
|
p->pszAmmo1 = 0;
|
|
p->pszName = STRING( pev->classname );
|
|
p->iMaxAmmo1 = -1;
|
|
p->pszAmmo2 = 0;
|
|
p->iMaxAmmo2 = -1;
|
|
p->iSlot = 0;
|
|
p->iPosition = 3;
|
|
p->iFlags = 0;
|
|
p->iMaxClip = -1;
|
|
p->iId = 5;
|
|
p->iWeight = 0;
|
|
return 1;
|
|
}
|
|
|
|
void CTFAxe::Holster()
|
|
{
|
|
SendWeaponAnim(AXE_HOLSTER, 1);
|
|
m_pPlayer->m_flNextAttack = 0.5;
|
|
}
|
|
|
|
void CTFAxe::Precache()
|
|
{
|
|
PRECACHE_MODEL("models/v_umbrella.mdl");
|
|
PRECACHE_MODEL("models/p_umbrella.mdl");
|
|
PRECACHE_MODEL("models/v_tfc_crowbar.mdl");
|
|
PRECACHE_MODEL("models/p_crowbar.mdl");
|
|
PRECACHE_MODEL("models/p_crowbar2.mdl");
|
|
PRECACHE_SOUND("weapons/cbar_hit1.wav");
|
|
PRECACHE_SOUND("weapons/cbar_hit2.wav");
|
|
PRECACHE_SOUND("weapons/cbar_hitbod1.wav");
|
|
PRECACHE_SOUND("weapons/cbar_hitbod2.wav");
|
|
PRECACHE_SOUND("weapons/cbar_hitbod3.wav");
|
|
PRECACHE_SOUND("weapons/cbar_miss1.wav");
|
|
classid = 3;
|
|
m_usAxe = PRECACHE_EVENT(1, "events/wpn/tf_axe.sc");
|
|
m_usAxeDecal = PRECACHE_EVENT(1, "events/wpn/tf_axedecal.sc");
|
|
}
|
|
|
|
BOOL CTFAxe::Deploy()
|
|
{
|
|
if(m_pPlayer->pev->playerclass == 11)
|
|
return DefaultDeploy( "models/v_umbrella.mdl", "models/p_umbrella.mdl", AXE_DRAW, "crowbar", 1 );
|
|
else
|
|
return DefaultDeploy( "models/v_tfc_crowbar.mdl", "models/p_crowbar.mdl", AXE_DRAW, "crowbar", 1 );
|
|
}
|
|
//Velaron: finish this?
|
|
void CTFAxe::PrimaryAttack()
|
|
{
|
|
vec3_t vecSrc, vecEnd;
|
|
TraceResult tr;
|
|
|
|
m_bHullHit = 0;
|
|
UTIL_MakeVectors(m_pPlayer->pev->v_angle);
|
|
vecSrc = m_pPlayer->GetGunPosition();
|
|
vecEnd.x = gpGlobals->v_forward.x * 32.0 + vecSrc.x;
|
|
vecEnd.y = gpGlobals->v_forward.y * 32.0 + vecSrc.y;
|
|
vecEnd.z = gpGlobals->v_forward.z * 32.0 + vecSrc.z;
|
|
PLAYBACK_EVENT_FULL(1, ENT(m_pPlayer->pev), m_usAxe, 0, (float *)&g_vecZero, (float *)&g_vecZero, 0, 0, classid, 0, 0, 0);
|
|
if ( tr.flFraction >= 1.0 )
|
|
{
|
|
m_bHullHit = 1;
|
|
//m_flNextPrimaryAttack = UTIL_WeaponTimeBase() + 0.4;
|
|
m_flNextPrimaryAttack = 1.0;
|
|
m_flTimeWeaponIdle = 5;
|
|
m_pPlayer->SetAnimation( PLAYER_ATTACK1 );
|
|
return;
|
|
}
|
|
m_flNextPrimaryAttack = 1.0;
|
|
m_flTimeWeaponIdle = 5;
|
|
m_pPlayer->SetAnimation( PLAYER_ATTACK1 );
|
|
} |