Browse Source

Fix weapon_pipe.

visitors
Night Owl 7 years ago
parent
commit
ea556922b5
  1. 8
      cl_dll/ev_hldm.cpp
  2. 69
      dlls/visitors/pipe.cpp
  3. 6
      dlls/visitors/sniper.cpp
  4. 33
      dlls/weapons.h

8
cl_dll/ev_hldm.cpp

@ -1773,9 +1773,13 @@ enum pipe_e @@ -1773,9 +1773,13 @@ enum pipe_e
PIPE_ATTACK2MISS,
PIPE_ATTACK2HIT,
PIPE_ATTACK3MISS,
#ifndef CROWBAR_IDLE_ANIM
PIPE_ATTACK3HIT
#else
PIPE_ATTACK3HIT,
PIPE_IDLE2,
PIPE_IDLE3,
PIPE_IDLE3
#endif
};
//Only predict the miss sounds, hit sounds are still played
@ -1795,8 +1799,6 @@ void EV_Pipe( event_args_t *args ) @@ -1795,8 +1799,6 @@ void EV_Pipe( event_args_t *args )
if( EV_IsLocal( idx ) )
{
gEngfuncs.pEventAPI->EV_WeaponAnimation( PIPE_ATTACK1MISS, 1 );
switch( ( g_iSwing++ ) % 3 )
{
case 0:

69
dlls/visitors/pipe.cpp

@ -38,9 +38,13 @@ enum pipe_e { @@ -38,9 +38,13 @@ enum pipe_e {
PIPE_ATTACK2MISS,
PIPE_ATTACK2HIT,
PIPE_ATTACK3MISS,
#ifndef CROWBAR_IDLE_ANIM
PIPE_ATTACK3HIT
#else
PIPE_ATTACK3HIT,
PIPE_IDLE2,
PIPE_IDLE3,
PIPE_IDLE3
#endif
};
@ -98,8 +102,10 @@ void CPipe::PrimaryAttack() @@ -98,8 +102,10 @@ void CPipe::PrimaryAttack()
{
if (!Swing(1))
{
#ifndef CLIENT_DLL
SetThink(&CPipe::SwingAgain);
pev->nextthink = gpGlobals->time + 0.1f;
pev->nextthink = gpGlobals->time + 0.5f;
#endif
}
}
@ -143,6 +149,9 @@ int CPipe::Swing(int fFirst) @@ -143,6 +149,9 @@ int CPipe::Swing(int fFirst)
// miss
m_flNextPrimaryAttack = GetNextAttackDelay(0.5);
#ifdef CROWBAR_IDLE_ANIM
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + UTIL_SharedRandomFloat( m_pPlayer->random_seed, 10, 15 );
#endif
// player "shoot" animation
m_pPlayer->SetAnimation(PLAYER_ATTACK1);
}
@ -170,7 +179,14 @@ int CPipe::Swing(int fFirst) @@ -170,7 +179,14 @@ int CPipe::Swing(int fFirst)
ClearMultiDamage();
if ((m_flNextPrimaryAttack + 1 < UTIL_WeaponTimeBase()) || g_pGameRules->IsMultiplayer())
// If building with the clientside weapon prediction system,
// UTIL_WeaponTimeBase() is always 0 and m_flNextPrimaryAttack is >= -1.0f, thus making
// m_flNextPrimaryAttack + 1 < UTIL_WeaponTimeBase() always evaluate to false.
#ifdef CLIENT_WEAPONS
if( ( m_flNextPrimaryAttack + 1 == UTIL_WeaponTimeBase() ) || g_pGameRules->IsMultiplayer() )
#else
if( ( m_flNextPrimaryAttack + 1 < UTIL_WeaponTimeBase() ) || g_pGameRules->IsMultiplayer() )
#endif
{
// first swing does full damage
pEntity->TraceAttack(m_pPlayer->pev, gSkillData.plrDmgCrowbar * 2, gpGlobals->v_forward, &tr, DMG_CLUB);
@ -194,11 +210,11 @@ int CPipe::Swing(int fFirst) @@ -194,11 +210,11 @@ int CPipe::Swing(int fFirst)
switch (RANDOM_LONG(0, 2))
{
case 0:
EMIT_SOUND_DYN(ENT(m_pPlayer->pev), CHAN_ITEM, "weapons/cbar_hitbod1.wav", 1, ATTN_NORM, 0, 75); break;
EMIT_SOUND_DYN(ENT(m_pPlayer->pev), CHAN_ITEM, "weapons/cbar_hitbod1.wav", 1, ATTN_NORM, 0, 100); break;
case 1:
EMIT_SOUND_DYN(ENT(m_pPlayer->pev), CHAN_ITEM, "weapons/cbar_hitbod2.wav", 1, ATTN_NORM, 0, 75); break;
EMIT_SOUND_DYN(ENT(m_pPlayer->pev), CHAN_ITEM, "weapons/cbar_hitbod2.wav", 1, ATTN_NORM, 0, 100); break;
case 2:
EMIT_SOUND_DYN(ENT(m_pPlayer->pev), CHAN_ITEM, "weapons/cbar_hitbod3.wav", 1, ATTN_NORM, 0, 75); break;
EMIT_SOUND_DYN(ENT(m_pPlayer->pev), CHAN_ITEM, "weapons/cbar_hitbod3.wav", 1, ATTN_NORM, 0, 100); break;
}
m_pPlayer->m_iWeaponVolume = PIPE_BODYHIT_VOLUME;
if (!pEntity->IsAlive())
@ -241,13 +257,44 @@ int CPipe::Swing(int fFirst) @@ -241,13 +257,44 @@ int CPipe::Swing(int fFirst)
}
m_pPlayer->m_iWeaponVolume = flVol * PIPE_WALLHIT_VOLUME;
#endif
m_flNextPrimaryAttack = GetNextAttackDelay(0.5f); // 0.25f
SetThink(&CPipe::Smack);
pev->nextthink = UTIL_WeaponTimeBase() + 0.2;
pev->nextthink = UTIL_WeaponTimeBase() + 0.48;
#endif
m_flNextPrimaryAttack = GetNextAttackDelay(0.5f); // 0.25f
}
#ifdef CROWBAR_IDLE_ANIM
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + UTIL_SharedRandomFloat( m_pPlayer->random_seed, 10, 15 );
#endif
return fDidHit;
}
#ifdef CROWBAR_IDLE_ANIM
void CCrowbar::WeaponIdle( void )
{
if( m_flTimeWeaponIdle < UTIL_WeaponTimeBase() )
{
int iAnim;
float flRand = UTIL_SharedRandomFloat( m_pPlayer->random_seed, 0, 1 );
if( flRand > 0.9 )
{
iAnim = PIPE_IDLE2;
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 160.0 / 30.0;
}
else
{
if( flRand > 0.5 )
{
iAnim = PIPE_IDLE1;
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 70.0 / 30.0;
}
else
{
iAnim = PIPE_IDLE3;
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 160.0 / 30.0;
}
}
SendWeaponAnim( iAnim );
}
}
#endif

6
dlls/visitors/sniper.cpp

@ -43,7 +43,7 @@ int CSniper::GetItemInfo(ItemInfo *p) @@ -43,7 +43,7 @@ int CSniper::GetItemInfo(ItemInfo *p)
p->iSlot = 3;
p->iPosition = 1;
p->iId = m_iId = WEAPON_SNIPER;
p->iWeight = PYTHON_WEIGHT;
p->iWeight = SNIPER_WEIGHT;
return 1;
}
@ -120,7 +120,7 @@ void CSniper::SecondaryAttack(void) @@ -120,7 +120,7 @@ void CSniper::SecondaryAttack(void)
m_pPlayer->pev->fov = m_pPlayer->m_iFOV = 40;
}
m_flNextSecondaryAttack = 0.5;
m_flNextSecondaryAttack = 0.75;
}
void CSniper::PrimaryAttack()
@ -184,7 +184,7 @@ void CSniper::Reload(void) @@ -184,7 +184,7 @@ void CSniper::Reload(void)
if (m_pPlayer->ammo_357 <= 0)
return;
int iResult = DefaultReload(SNIPER_MAX_CLIP, SNIPER_RELOAD, 2.0);
int iResult = DefaultReload(SNIPER_MAX_CLIP, SNIPER_RELOAD, 2.25);
if (iResult)
{

33
dlls/weapons.h

@ -64,22 +64,22 @@ public: @@ -64,22 +64,22 @@ public:
#define WEAPON_NONE 0
#define WEAPON_CROWBAR 1
#define WEAPON_PIPE 2
#define WEAPON_GLOCK 3
#define WEAPON_PYTHON 4
#define WEAPON_MP5 5
#define WEAPON_CHAINGUN 6
#define WEAPON_CROSSBOW 7
#define WEAPON_SNIPER 8
#define WEAPON_SHOTGUN 9
#define WEAPON_RPG 10
#define WEAPON_GAUSS 11
#define WEAPON_EGON 12
#define WEAPON_HORNETGUN 13
#define WEAPON_HANDGRENADE 14
#define WEAPON_TRIPMINE 15
#define WEAPON_SATCHEL 16
#define WEAPON_SNARK 17
#define WEAPON_GLOCK 2
#define WEAPON_PYTHON 3
#define WEAPON_MP5 4
#define WEAPON_CHAINGUN 5
#define WEAPON_CROSSBOW 6
#define WEAPON_SHOTGUN 7
#define WEAPON_RPG 8
#define WEAPON_GAUSS 9
#define WEAPON_EGON 10
#define WEAPON_HORNETGUN 11
#define WEAPON_HANDGRENADE 12
#define WEAPON_TRIPMINE 13
#define WEAPON_SATCHEL 14
#define WEAPON_SNARK 15
#define WEAPON_SNIPER 16
#define WEAPON_PIPE 17
#define WEAPON_FLASHLIGHT 30
#define WEAPON_ALLWEAPONS (~(1<<WEAPON_SUIT))
@ -105,6 +105,7 @@ public: @@ -105,6 +105,7 @@ public:
#define SNARK_WEIGHT 5
#define SATCHEL_WEIGHT -10
#define TRIPMINE_WEIGHT -10
#define SNIPER_WEIGHT 20
// weapon clip/carry ammo capacities
#define URANIUM_MAX_CARRY 100

Loading…
Cancel
Save