Fix some animations

This commit is contained in:
DPT.Velaron 2018-12-10 15:50:54 +02:00
parent 618e379ebf
commit 184d878a4d
6 changed files with 194 additions and 146 deletions

View File

@ -607,17 +607,24 @@ void EV_TFC_Axe(event_args_t *args)
gEngfuncs.pEventAPI->EV_PushPMStates(); gEngfuncs.pEventAPI->EV_PushPMStates();
gEngfuncs.pEventAPI->EV_SetSolidPlayers(idx - 1); gEngfuncs.pEventAPI->EV_SetSolidPlayers(idx - 1);
gEngfuncs.pEventAPI->EV_SetTraceHull(2); gEngfuncs.pEventAPI->EV_SetTraceHull(2);
gEngfuncs.pEventAPI->EV_PlayerTrace(vecSrc, vecEnd, PM_STUDIO_BOX, -1, &tr); gEngfuncs.pEventAPI->EV_PlayerTrace(vecSrc, vecEnd, PM_NORMAL, -1, &tr);
if (tr.fraction >= 1.0) if (tr.fraction >= 1.0)
{ {
gEngfuncs.pEventAPI->EV_SetTraceHull(1); gEngfuncs.pEventAPI->EV_SetTraceHull(1);
gEngfuncs.pEventAPI->EV_PlayerTrace(vecSrc, vecEnd, PM_STUDIO_BOX, -1, &tr2); gEngfuncs.pEventAPI->EV_PlayerTrace(vecSrc, vecEnd, PM_NORMAL, -1, &tr2);
if(tr2.fraction < 1.0) if(tr2.fraction < 1.0)
tr = tr2; tr = tr2;
} }
gEngfuncs.pEventAPI->EV_PopPMStates(); gEngfuncs.pEventAPI->EV_PopPMStates();
gp_tr_decal[idx-1] = 0;
if(tr.fraction >= 1.0) if(tr.fraction >= 1.0)
{ {
if (!EV_IsLocal(idx))
{
EV_TFC_PlayAxeSound(idx, classid, origin, 0, 0.0);
return;
}
switch(classid) switch(classid)
{ {
default: default:
@ -1070,15 +1077,15 @@ void EV_TFC_BloodDrips(float *vecOrigin, signed int iDamage, long double height)
} }
} }
enum tfc_assault_e enum tf_ac_e
{ {
ASSAULT_IDLE = 0, AC_IDLE = 0,
ASSAULT_IDLE2, AC_IDLE2,
ASSAULT_SPINUP, AC_SPINUP,
ASSAULT_SPINDOWN, AC_SPINDOWN,
ASSAULT_FIRE, AC_FIRE,
ASSAULT_DRAW, AC_DRAW,
ASSAULT_HOLSTER AC_HOLSTER
}; };
void EV_TFC_Assault_WindUp(event_args_t *args) void EV_TFC_Assault_WindUp(event_args_t *args)
@ -1092,7 +1099,7 @@ void EV_TFC_Assault_WindUp(event_args_t *args)
gEngfuncs.GetClientTime(); gEngfuncs.GetClientTime();
g_flSpinUpTime[idx - 1] = 0.0 + 3.5; g_flSpinUpTime[idx - 1] = 0.0 + 3.5;
if (EV_IsLocal(idx)) if (EV_IsLocal(idx))
gEngfuncs.pEventAPI->EV_WeaponAnimation(ASSAULT_SPINUP, 2); gEngfuncs.pEventAPI->EV_WeaponAnimation(AC_SPINUP, 2);
g_bACSpinning[idx - 1] = 0; g_bACSpinning[idx - 1] = 0;
gEngfuncs.pEventAPI->EV_StopSound(idx, CHAN_STATIC, "weapons/asscan2.wav"); gEngfuncs.pEventAPI->EV_StopSound(idx, CHAN_STATIC, "weapons/asscan2.wav");
gEngfuncs.pEventAPI->EV_StopSound(idx, CHAN_STATIC, "weapons/asscan4.wav"); gEngfuncs.pEventAPI->EV_StopSound(idx, CHAN_STATIC, "weapons/asscan4.wav");
@ -1112,10 +1119,10 @@ void EV_TFC_Assault_WindDown(event_args_t *args)
gEngfuncs.GetClientTime(); gEngfuncs.GetClientTime();
g_flSpinDownTime[idx - 1] = 0.0 + 3.0; g_flSpinDownTime[idx - 1] = 0.0 + 3.0;
if(EV_IsLocal(idx)) if(EV_IsLocal(idx))
gEngfuncs.pEventAPI->EV_WeaponAnimation(ASSAULT_SPINDOWN, 2); gEngfuncs.pEventAPI->EV_WeaponAnimation(AC_SPINDOWN, 2);
} }
else if(EV_IsLocal(idx)) else if(EV_IsLocal(idx))
gEngfuncs.pEventAPI->EV_WeaponAnimation(ASSAULT_SPINDOWN, 2); gEngfuncs.pEventAPI->EV_WeaponAnimation(AC_SPINDOWN, 2);
g_bACSpinning[idx - 1] = 0; g_bACSpinning[idx - 1] = 0;
gEngfuncs.pEventAPI->EV_StopSound(idx, CHAN_STATIC, "weapons/asscan2.wav"); gEngfuncs.pEventAPI->EV_StopSound(idx, CHAN_STATIC, "weapons/asscan2.wav");
@ -1160,7 +1167,7 @@ void EV_TFC_Assault_Fire(event_args_t *args)
if(EV_IsLocal(idx)) if(EV_IsLocal(idx))
{ {
EV_MuzzleFlash(); EV_MuzzleFlash();
gEngfuncs.pEventAPI->EV_WeaponAnimation(ASSAULT_FIRE, 2); gEngfuncs.pEventAPI->EV_WeaponAnimation(AC_FIRE, 2);
} }
g_bACSpinning[idx - 1] = 0; g_bACSpinning[idx - 1] = 0;
if(oddammo) if(oddammo)
@ -1182,7 +1189,7 @@ void EV_TFC_Assault_Spin(event_args_t *args)
idx = args->entindex; idx = args->entindex;
if (EV_IsLocal(idx)) if (EV_IsLocal(idx))
gEngfuncs.pEventAPI->EV_WeaponAnimation(ASSAULT_FIRE, 2); gEngfuncs.pEventAPI->EV_WeaponAnimation(AC_FIRE, 2);
g_bACSpinning[idx - 1] = 1; g_bACSpinning[idx - 1] = 1;
} }
@ -1584,20 +1591,20 @@ void EV_TFC_NailgrenadeNail(event_args_t *args)
} }
} }
enum tfc_grenadelauncher_e enum tf_gl_e
{ {
TFGL_IDLE = 0, GL_IDLE = 0,
TFPL_IDLE, PL_IDLE,
TFGL_FIRE, GL_FIRE,
TFPL_FIRE, PL_FIRE,
TFGL_RELOAD1, GL_RELOAD1,
TFGL_RELOAD2, GL_RELOAD2,
TFPL_RELOAD1, PL_RELOAD1,
TFPL_RELOAD2, PL_RELOAD2,
TFGL_DRAW, GL_DRAW,
TFPL_DRAW, PL_DRAW,
TFGL_HOLSTER, GL_HOLSTER,
TFPL_HOLSTER PL_HOLSTER
}; };
void EV_TFC_GrenadeLauncher(event_args_t *args) void EV_TFC_GrenadeLauncher(event_args_t *args)
@ -1608,7 +1615,7 @@ void EV_TFC_GrenadeLauncher(event_args_t *args)
idx = args->entindex; idx = args->entindex;
VectorCopy(args->origin, origin); VectorCopy(args->origin, origin);
if(EV_IsLocal(idx)) if(EV_IsLocal(idx))
gEngfuncs.pEventAPI->EV_WeaponAnimation(TFGL_FIRE, 2); gEngfuncs.pEventAPI->EV_WeaponAnimation(GL_FIRE, 2);
gEngfuncs.pEventAPI->EV_PlaySound(-1, origin, CHAN_WEAPON, "weapons/glauncher.wav", 0.7, 0.8, 0, 100); gEngfuncs.pEventAPI->EV_PlaySound(-1, origin, CHAN_WEAPON, "weapons/glauncher.wav", 0.7, 0.8, 0, 100);
if(EV_IsLocal(idx)) if(EV_IsLocal(idx))
V_PunchAxis(0, -2.0); V_PunchAxis(0, -2.0);
@ -1622,7 +1629,7 @@ void EV_TFC_PipeLauncher(event_args_t *args)
idx = args->entindex; idx = args->entindex;
VectorCopy(args->origin, origin); VectorCopy(args->origin, origin);
if(EV_IsLocal(idx)) if(EV_IsLocal(idx))
gEngfuncs.pEventAPI->EV_WeaponAnimation(TFPL_FIRE, 2); gEngfuncs.pEventAPI->EV_WeaponAnimation(PL_FIRE, 2);
gEngfuncs.pEventAPI->EV_PlaySound(-1, origin, CHAN_WEAPON, "weapons/glauncher.wav", 0.7, 0.8, 0, 100); gEngfuncs.pEventAPI->EV_PlaySound(-1, origin, CHAN_WEAPON, "weapons/glauncher.wav", 0.7, 0.8, 0, 100);
if(EV_IsLocal(idx)) if(EV_IsLocal(idx))
V_PunchAxis(0, -2.0); V_PunchAxis(0, -2.0);

View File

@ -4412,6 +4412,14 @@ BOOL CBasePlayer::SwitchWeapon( CBasePlayerItem *pWeapon )
return TRUE; return TRUE;
} }
//=========================================================
//
//=========================================================
void CBasePlayer::TeamFortress_SetSpeed()
{
}
//========================================================= //=========================================================
// Dead HEV suit prop // Dead HEV suit prop
//========================================================= //=========================================================

View File

@ -324,6 +324,9 @@ public:
float m_flNextChatTime; float m_flNextChatTime;
bool m_bSentBhopcap; // If false, the player just joined and needs a bhopcap message. bool m_bSentBhopcap; // If false, the player just joined and needs a bhopcap message.
//Team Fortress
void TeamFortress_SetSpeed();
}; };
#define AUTOAIM_2DEGREES 0.0348994967025 #define AUTOAIM_2DEGREES 0.0348994967025

View File

@ -6,47 +6,20 @@
#include "nodes.h" #include "nodes.h"
#include "player.h" #include "player.h"
#include "gamerules.h" #include "gamerules.h"
#include "tf_defs.h"
LINK_ENTITY_TO_CLASS( tf_weapon_ac, CTFAssaultC ) LINK_ENTITY_TO_CLASS( tf_weapon_ac, CTFAssaultC )
void CTFAssaultC::Spawn() void CTFAssaultC::Spawn()
{ {
pev->classname = MAKE_STRING("tf_weapon_ac");
Precache(); Precache();
m_iId = WEAPON_ASSAULT_CANNON;
m_iId = 17;
m_iDefaultAmmo = 25; m_iDefaultAmmo = 25;
m_iWeaponState = 0; m_iWeaponState = 0;
pev->solid = SOLID_TRIGGER; pev->solid = SOLID_TRIGGER;
} }
int CTFAssaultC::GetItemInfo( ItemInfo *p )
{
p->pszAmmo1 = "buckshot";
p->pszName = STRING( pev->classname );
p->iMaxAmmo1 = 200;
p->pszAmmo2 = 0;
p->iMaxAmmo2 = -1;
p->iSlot = 4;
p->iPosition = 3;
p->iFlags = 0;
p->iMaxClip = -1;
p->iId = 17;
p->iWeight = 15;
return 1;
}
void CTFAssaultC::Holster()
{
PLAYBACK_EVENT_FULL(1, ENT(m_pPlayer->pev), m_usWindDown, 0, (float *)&g_vecZero, (float *)&g_vecZero, 0, 0, 0, 0, 1, 0);
m_iWeaponState = 0;
//tfstate
//setspeed
m_fInReload = 0;
m_flTimeWeaponIdle = 2;
m_pPlayer->m_flNextAttack = 0.1;
SendWeaponAnim(ASSAULT_HOLSTER, 1);
}
void CTFAssaultC::Precache() void CTFAssaultC::Precache()
{ {
PRECACHE_MODEL("models/v_tfac.mdl"); PRECACHE_MODEL("models/v_tfac.mdl");
@ -66,32 +39,25 @@ void CTFAssaultC::Precache()
m_usACStart = PRECACHE_EVENT(1, "events/wpn/tf_acstart.sc"); m_usACStart = PRECACHE_EVENT(1, "events/wpn/tf_acstart.sc");
} }
void CTFAssaultC::WeaponIdle( void ) int CTFAssaultC::GetItemInfo( ItemInfo *p )
{ {
ResetEmptySound(); p->pszName = STRING(pev->classname);
p->pszAmmo1 = "buckshot";
if(m_flTimeWeaponIdle <= 0.0) p->iMaxAmmo1 = 200;
{ p->pszAmmo2 = 0;
if(m_iWeaponState) p->iMaxAmmo2 = -1;
{ p->iMaxClip = -1;
PLAYBACK_EVENT_FULL(1, ENT(m_pPlayer->pev), m_usWindDown, 0, (float *)&g_vecZero, (float *)&g_vecZero, 0, 0, 0, 0, 0, 0); p->iSlot = 4;
m_iWeaponState = 0; p->iPosition = 3;
//tfstate p->iFlags = 0;
//setspeed p->iId = WEAPON_ASSAULT_CANNON;
m_flTimeWeaponIdle = 2; p->iWeight = 15;
} return 1;
else
{
SendWeaponAnim(RANDOM_LONG(0, 1), 1);
m_flTimeWeaponIdle = 12.5;
}
}
} }
BOOL CTFAssaultC::Deploy() BOOL CTFAssaultC::Deploy()
{ {
//Velaron: "ac" deploy return DefaultDeploy( "models/v_tfac.mdl", "models/p_mini.mdl", AC_DRAW, "ac", 1 );
return DefaultDeploy( "models/v_tfac.mdl", "models/p_mini.mdl", ASSAULT_DRAW, "mp5", 1 );
} }
int CTFAssaultC::AddToPlayer( CBasePlayer *pPlayer ) int CTFAssaultC::AddToPlayer( CBasePlayer *pPlayer )
@ -106,57 +72,93 @@ int CTFAssaultC::AddToPlayer( CBasePlayer *pPlayer )
return FALSE; return FALSE;
} }
void CTFAssaultC::Holster()
{
PLAYBACK_EVENT_FULL(7, ENT(m_pPlayer->pev), m_usWindDown, 0, (float *)&g_vecZero, (float *)&g_vecZero, 0, 0, 0, 0, 1, 0);
m_iWeaponState = 0;
//m_pPlayer->tfstate &= 0xFFFFF7FF;
//m_pPlayer->TeamFortress_SetSpeed();
m_fInReload = 0;
m_flTimeWeaponIdle = 2;
m_pPlayer->m_flNextAttack = 0.1;
SendWeaponAnim(AC_HOLSTER, 1);
}
void CTFAssaultC::WeaponIdle( void )
{
ResetEmptySound();
if(m_flTimeWeaponIdle <= 0.0)
{
if(m_iWeaponState)
{
PLAYBACK_EVENT_FULL(7, ENT(m_pPlayer->pev), m_usWindDown, 0, (float *)&g_vecZero, (float *)&g_vecZero, 0, 0, 0, 0, 0, 0);
m_iWeaponState = 0;
//m_pPlayer->tfstate &= 0xFFFFF7FF;
//m_pPlayer->TeamFortress_SetSpeed();
m_flTimeWeaponIdle = 2;
}
else
{
SendWeaponAnim(RANDOM_LONG(0, 1), 1);
m_flTimeWeaponIdle = 12.5;
}
}
}
void CTFAssaultC::PrimaryAttack() void CTFAssaultC::PrimaryAttack()
{ {
if(m_iWeaponState == 2) switch(m_iWeaponState)
{ {
if(m_pPlayer->ammo_buckshot <= 0) case 2:
{ {
PLAYBACK_EVENT_FULL(1, ENT(m_pPlayer->pev), m_usStartSpin, 0, (float *)&g_vecZero, (float *)&g_vecZero, 0, 0, 0, 0, 0, 0); if(m_pPlayer->ammo_buckshot <= 0)
m_iWeaponState = 3; {
m_pPlayer->SetAnimation(PLAYER_ATTACK1); PLAYBACK_EVENT_FULL(7, ENT(m_pPlayer->pev), m_usStartSpin, 0, (float *)&g_vecZero, (float *)&g_vecZero, 0, 0, 0, 0, 0, 0);
pev->effects &= ~EF_MUZZLEFLASH; m_iWeaponState = 3;
} m_pPlayer->SetAnimation(PLAYER_ATTACK1);
else pev->effects &= ~EF_MUZZLEFLASH;
Fire(); }
else
Fire();
m_flTimeWeaponIdle = 0.1; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 0.1;
m_flNextPrimaryAttack = UTIL_WeaponTimeBase() + 0.1; m_flNextPrimaryAttack = UTIL_WeaponTimeBase() + 0.1;
return;
}
if(m_iWeaponState == 3)
{
if(m_pPlayer->ammo_buckshot <= 0)
{
PLAYBACK_EVENT_FULL(1, ENT(m_pPlayer->pev), m_usSpin, 0, (float *)&g_vecZero, (float *)&g_vecZero, 0, 0, 0, 0, 0, 0);
m_pPlayer->SetAnimation(PLAYER_ATTACK1);
}
else
{
m_iWeaponState = 1;
}
m_flTimeWeaponIdle = 0.1;
m_flNextPrimaryAttack = UTIL_WeaponTimeBase() + 0.1;
return;
}
if(m_iWeaponState == 1)
{
if(m_flNextPrimaryAttack > 0.0)
return; return;
}
case 3:
{
if(m_pPlayer->ammo_buckshot <= 0)
{
PLAYBACK_EVENT_FULL(7, ENT(m_pPlayer->pev), m_usSpin, 0, (float *)&g_vecZero, (float *)&g_vecZero, 0, 0, 0, 0, 0, 0);
m_pPlayer->SetAnimation(PLAYER_ATTACK1);
}
else
m_iWeaponState = 1;
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 0.1;
m_flNextPrimaryAttack = UTIL_WeaponTimeBase() + 0.1;
return;
}
case 1:
{
if(m_flNextPrimaryAttack > 0.0)
return;
PLAYBACK_EVENT_FULL(1, ENT(m_pPlayer->pev), m_usACStart, 0, (float *)&g_vecZero, (float *)&g_vecZero, 0, 0, 0, 0, 0, 0); PLAYBACK_EVENT_FULL(7, ENT(m_pPlayer->pev), m_usACStart, 0, (float *)&g_vecZero, (float *)&g_vecZero, 0, 0, 0, 0, 0, 0);
m_iWeaponState = 2; m_iWeaponState = 2;
m_flTimeWeaponIdle = 0.1; m_flTimeWeaponIdle = 0.1;
m_flNextPrimaryAttack = UTIL_WeaponTimeBase() + 0.1; m_flNextPrimaryAttack = UTIL_WeaponTimeBase() + 0.1;
return; return;
}
} }
if(m_pPlayer->pev->button & 1) if(m_pPlayer->pev->button & 1)
{ {
PLAYBACK_EVENT_FULL(1, ENT(m_pPlayer->pev), m_usWindUp, 0, (float *)&g_vecZero, (float *)&g_vecZero, 0, 0, 0, 0, 0, 0); PLAYBACK_EVENT_FULL(1, ENT(m_pPlayer->pev), m_usWindUp, 0, (float *)&g_vecZero, (float *)&g_vecZero, 0, 0, 0, 0, 0, 0);
m_iWeaponState = 1; m_iWeaponState = 1;
//tfstate //m_pPlayer->tfstate |= 0x800u
//setspeed //m_pPlayer->TeamFortress_SetSpeed();
} }
m_flTimeWeaponIdle = 0.6; m_flTimeWeaponIdle = 0.6;
@ -170,16 +172,14 @@ void CTFAssaultC::Fire()
if(m_flNextPrimaryAttack > 0) if(m_flNextPrimaryAttack > 0)
return; return;
PLAYBACK_EVENT_FULL(1, ENT(m_pPlayer->pev), m_usWindUp, 0, (float *)&g_vecZero, (float *)&g_vecZero, 0, 0, 0, 0, m_pPlayer->ammo_buckshot & 1, 0); PLAYBACK_EVENT_FULL(9, ENT(m_pPlayer->pev), m_usWindUp, 0, (float *)&g_vecZero, (float *)&g_vecZero, 0, 0, 0, 0, m_pPlayer->ammo_buckshot & 1, 0);
m_pPlayer->m_iWeaponVolume = 600; m_pPlayer->m_iWeaponVolume = 600;
m_pPlayer->m_iWeaponFlash = 256; m_pPlayer->m_iWeaponFlash = 256;
m_pPlayer->pev->effects |= EF_MUZZLEFLASH; m_pPlayer->pev->effects |= EF_MUZZLEFLASH;
m_pPlayer->SetAnimation(PLAYER_ATTACK1); m_pPlayer->SetAnimation(PLAYER_ATTACK1);
UTIL_MakeVectors(m_pPlayer->pev->v_angle); UTIL_MakeVectors(m_pPlayer->pev->v_angle);
p_vecSrc.x = gpGlobals->v_up.x * -4.0 + gpGlobals->v_right.x + gpGlobals->v_right.x + m_pPlayer->pev->origin.x + m_pPlayer->pev->view_ofs.x; p_vecSrc = gpGlobals->v_up * -4.0 + gpGlobals->v_right * 2.0 + m_pPlayer->pev->origin + m_pPlayer->pev->view_ofs;
p_vecSrc.y = gpGlobals->v_up.y * -4.0 + gpGlobals->v_right.y + gpGlobals->v_right.y + m_pPlayer->pev->origin.y + m_pPlayer->pev->view_ofs.y; vecAiming = m_pPlayer->GetAutoaimVector(AUTOAIM_5DEGREES);
p_vecSrc.z = gpGlobals->v_up.z * -4.0 + gpGlobals->v_right.z + gpGlobals->v_right.z + m_pPlayer->pev->origin.z + m_pPlayer->pev->view_ofs.z;
vecAiming = m_pPlayer->GetAutoaimVector(0.087155744);
vecSpread.x = 0.1; vecSpread.x = 0.1;
vecSpread.y = 0.1; vecSpread.y = 0.1;
vecSpread.z = 0.0; vecSpread.z = 0.0;

View File

@ -6,18 +6,39 @@
#include "nodes.h" #include "nodes.h"
#include "player.h" #include "player.h"
#include "gamerules.h" #include "gamerules.h"
#include "tf_defs.h"
enum tf_gl_e
{
GL_IDLE = 0,
PL_IDLE,
GL_FIRE,
PL_FIRE,
GL_RELOAD1,
GL_RELOAD2,
PL_RELOAD1,
PL_RELOAD2,
GL_DRAW,
PL_DRAW,
GL_HOLSTER,
PL_HOLSTER
};
LINK_ENTITY_TO_CLASS( tf_weapon_gl, CTFGrenadeLauncher ) LINK_ENTITY_TO_CLASS( tf_weapon_gl, CTFGrenadeLauncher )
void CTFGrenadeLauncher::Spawn() void CTFGrenadeLauncher::Spawn()
{ {
Precache(); Precache();
SET_MODEL( ENT( pev ), "models/w_gauss.mdl" ); SET_MODEL( ENT( pev ), "models/w_gauss.mdl" );
m_iId = 12; m_iId = 12;
m_iDefaultAmmo = 50; m_iDefaultAmmo = 50;
m_fReloadTime = 0.666667; m_fReloadTime = 0.666667;
pev->solid = SOLID_TRIGGER; pev->solid = SOLID_TRIGGER;
m_iAnim_Deploy = GL_DRAW;
m_iAnim_Holster = GL_HOLSTER;
m_iAnim_Idle = GL_IDLE;
m_iAnim_ReloadDown = GL_RELOAD1;
m_iAnim_ReloadUp = GL_RELOAD2;
} }
void CTFGrenadeLauncher::Precache() void CTFGrenadeLauncher::Precache()
@ -59,14 +80,14 @@ void CTFGrenadeLauncher::Holster()
//m_pPlayer->m_iGLClip = m_iClip; //m_pPlayer->m_iGLClip = m_iClip;
//tfstate? //tfstate?
m_fInSpecialReload = 0; m_fInSpecialReload = 0;
SendWeaponAnim(10, 1); SendWeaponAnim(m_iAnim_Holster, 1);
m_flTimeWeaponIdle = 1000; m_flTimeWeaponIdle = 1000;
m_pPlayer->m_flNextAttack = 0.5; m_pPlayer->m_flNextAttack = 0.5;
} }
BOOL CTFGrenadeLauncher::Deploy() BOOL CTFGrenadeLauncher::Deploy()
{ {
return DefaultDeploy( "models/v_tfgl.mdl", "models/p_glauncher.mdl", 8, "mp5", 1 ); return DefaultDeploy( "models/v_tfgl.mdl", "models/p_glauncher.mdl", m_iAnim_Deploy, "mp5", 1 );
} }
void CTFGrenadeLauncher::Reload() void CTFGrenadeLauncher::Reload()
@ -96,7 +117,7 @@ void CTFGrenadeLauncher::Reload()
} }
else else
{ {
SendWeaponAnim(4, 1); SendWeaponAnim(m_iAnim_ReloadDown, 1);
//m_pPlayer->tfstate |= 2; //m_pPlayer->tfstate |= 2;
m_fInSpecialReload = 1; m_fInSpecialReload = 1;
m_pPlayer->m_flNextAttack = 0.1; m_pPlayer->m_flNextAttack = 0.1;
@ -133,7 +154,7 @@ void CTFGrenadeLauncher::WeaponIdle( void )
{ {
if(m_iClip == 6) if(m_iClip == 6)
{ {
SendWeaponAnim(5, 1); SendWeaponAnim(m_iAnim_ReloadUp, 1);
m_fInSpecialReload = 0; m_fInSpecialReload = 0;
m_flTimeWeaponIdle = 1.5; m_flTimeWeaponIdle = 1.5;
return; return;
@ -146,15 +167,15 @@ void CTFGrenadeLauncher::WeaponIdle( void )
} }
} }
m_flTimeWeaponIdle = 3; m_flTimeWeaponIdle = 3;
SendWeaponAnim(0, 1); SendWeaponAnim(m_iAnim_Idle, 1);
} }
void CTFGrenadeLauncher::PrimaryAttack() void CTFGrenadeLauncher::PrimaryAttack()
{ {
if(m_pPlayer->ammo_rockets <= 0) if(m_iClip <= 0)
{ {
m_flNextPrimaryAttack = 1; m_flNextPrimaryAttack = 1;
SendWeaponAnim(0, 1); SendWeaponAnim(m_iAnim_Idle, 1);
PlayEmptySound(); PlayEmptySound();
m_fInSpecialReload = 0; m_fInSpecialReload = 0;
//tfstate //tfstate
@ -178,13 +199,17 @@ LINK_ENTITY_TO_CLASS( tf_weapon_pl, CTFPipebombLauncher )
void CTFPipebombLauncher::Spawn() void CTFPipebombLauncher::Spawn()
{ {
Precache(); Precache();
SET_MODEL( ENT( pev ), "models/w_gauss.mdl" ); SET_MODEL( ENT( pev ), "models/w_gauss.mdl" );
m_iId = 22; m_iId = WEAPON_PIPEBOMB_LAUNCHER;
m_iDefaultAmmo = 50; m_iDefaultAmmo = 50;
m_fReloadTime = 0.666667; m_fReloadTime = 0.666667;
pev->solid = SOLID_TRIGGER; pev->solid = SOLID_TRIGGER;
m_usFireGL = PRECACHE_EVENT(1, "events/wpn/tf_gl.sc"); m_usFireGL = PRECACHE_EVENT(1, "events/wpn/tf_pipel.sc");
m_iAnim_Holster = PL_HOLSTER;
m_iAnim_Idle = PL_IDLE;
m_iAnim_ReloadDown = PL_RELOAD1;
m_iAnim_ReloadUp = PL_RELOAD2;
m_iAnim_Deploy = PL_DRAW;
} }
int CTFPipebombLauncher::GetItemInfo( ItemInfo *p ) int CTFPipebombLauncher::GetItemInfo( ItemInfo *p )
@ -198,17 +223,17 @@ int CTFPipebombLauncher::GetItemInfo( ItemInfo *p )
p->iPosition = 4; p->iPosition = 4;
p->iFlags = 0; p->iFlags = 0;
p->iMaxClip = 6; p->iMaxClip = 6;
p->iId = 22; p->iId = WEAPON_PIPEBOMB_LAUNCHER;
p->iWeight = 15; p->iWeight = 15;
return 1; return 1;
} }
void CTFPipebombLauncher::PrimaryAttack() void CTFPipebombLauncher::PrimaryAttack()
{ {
if(m_pPlayer->ammo_rockets <= 0) if(m_iClip <= 0)
{ {
m_flNextPrimaryAttack = 1; m_flNextPrimaryAttack = 1;
SendWeaponAnim(0, 1); SendWeaponAnim(m_iAnim_Idle, 1);
PlayEmptySound(); PlayEmptySound();
m_fInSpecialReload = 0; m_fInSpecialReload = 0;
//tfstate //tfstate

View File

@ -642,6 +642,11 @@ public:
void Reload(void); void Reload(void);
int AddToPlayer(CBasePlayer *pPlayer); int AddToPlayer(CBasePlayer *pPlayer);
void PrimaryAttack(void); void PrimaryAttack(void);
int m_iAnim_Holster;
int m_iAnim_Idle;
int m_iAnim_ReloadDown;
int m_iAnim_ReloadUp;
int m_iAnim_Deploy;;
private: private:
unsigned short m_usFireGL; unsigned short m_usFireGL;
@ -732,15 +737,15 @@ private:
unsigned short m_usFireIC; unsigned short m_usFireIC;
}; };
enum tfc_assault_e enum tf_ac_e
{ {
ASSAULT_IDLE = 0, AC_IDLE = 0,
ASSAULT_IDLE2, AC_IDLE2,
ASSAULT_SPINUP, AC_SPINUP,
ASSAULT_SPINDOWN, AC_SPINDOWN,
ASSAULT_FIRE, AC_FIRE,
ASSAULT_DRAW, AC_DRAW,
ASSAULT_HOLSTER AC_HOLSTER
}; };
class CTFAssaultC : public CBasePlayerWeapon class CTFAssaultC : public CBasePlayerWeapon