Example #1
0
File: player.c Project: deurk/ktx
void player_nail2()
{
	self->s.v.frame = 104;
	self->think = ( func_t ) player_nail1;
	self->s.v.nextthink = g_globalvars.time + 0.1;

	if ( !self->s.v.button0 || intermission_running || self->s.v.impulse )
	{
		self->walkframe = 0;
		player_run();
		return;
	}

	set_idealtime();
	muzzleflash();

	self->s.v.weaponframe = self->s.v.weaponframe + 1;
	if ( self->s.v.weaponframe >= 9 )
		self->s.v.weaponframe = 1;

	SuperDamageSound();
	W_FireSpikes( -4 );
	self->attack_finished = g_globalvars.time + 0.2;
	AmmoUsed (self);
}
//===============================================================================
// PLAYER WEAPON USE
//===============================================================================
void CBasePlayer::W_Attack(int iQuadSound)
{
	// Out of ammo?
	if(!W_CheckNoAmmo())
		return;

	if(m_iQuakeWeapon != IT_LIGHTNING)
		((CBasePlayerWeapon *)m_pActiveItem)->SendWeaponAnim(1, 1);

	if(m_iQuakeWeapon == IT_AXE)
	{
#ifdef THREEWAVE
		if(m_iRuneStatus == ITEM_RUNE3_FLAG)
			m_flNextAttack = UTIL_WeaponTimeBase() + 0.3;
		else
#endif
			m_flNextAttack = UTIL_WeaponTimeBase() + 0.5;

		PLAYBACK_EVENT_FULL(FEV_NOTHOST, edict(), m_usAxeSwing, 0, (float *)&g_vecZero, (float *)&g_vecZero, 0.0, 0.0, iQuadSound, 0, 0, 0);

		// Delay attack for 0.3
		m_flAxeFire = gpGlobals->time + 0.3;

		PLAYBACK_EVENT_FULL(FEV_NOTHOST, edict(), m_usAxe, 0.3, (float *)&g_vecZero, (float *)&g_vecZero, 0.0, 0.0, iQuadSound, 0, 0, 0);
	}
	else if(m_iQuakeWeapon == IT_SHOTGUN)
	{
#ifdef THREEWAVE
		if(m_iRuneStatus == ITEM_RUNE3_FLAG)
			m_flNextAttack = UTIL_WeaponTimeBase() + 0.3;
		else
#endif
			m_flNextAttack = UTIL_WeaponTimeBase() + 0.5;

		W_FireShotgun(iQuadSound);
	}
	else if(m_iQuakeWeapon == IT_SUPER_SHOTGUN)
	{
#ifdef THREEWAVE
		if(m_iRuneStatus == ITEM_RUNE3_FLAG)
			m_flNextAttack = UTIL_WeaponTimeBase() + 0.4;
		else
#endif
			m_flNextAttack = UTIL_WeaponTimeBase() + 0.7;

		W_FireSuperShotgun(iQuadSound);
	}
	else if(m_iQuakeWeapon == IT_NAILGUN)
	{
		m_flNextAttack = UTIL_WeaponTimeBase() + 0.1;

		W_FireSpikes(iQuadSound);
	}
	else if(m_iQuakeWeapon == IT_SUPER_NAILGUN)
	{
		m_flNextAttack = UTIL_WeaponTimeBase() + 0.1;
		W_FireSpikes(iQuadSound);
	}
	else if(m_iQuakeWeapon == IT_GRENADE_LAUNCHER)
	{
#ifdef THREEWAVE
		if(m_iRuneStatus == ITEM_RUNE3_FLAG)
			m_flNextAttack = UTIL_WeaponTimeBase() + 0.3;
		else
#endif
			m_flNextAttack = UTIL_WeaponTimeBase() + 0.6;

		W_FireGrenade(iQuadSound);
	}
	else if(m_iQuakeWeapon == IT_ROCKET_LAUNCHER)
	{
#ifdef THREEWAVE
		if(m_iRuneStatus == ITEM_RUNE3_FLAG)
			m_flNextAttack = UTIL_WeaponTimeBase() + 0.4;
		else
#endif
			m_flNextAttack = UTIL_WeaponTimeBase() + 0.8;

		W_FireRocket(iQuadSound);
	}
	else if(m_iQuakeWeapon == IT_LIGHTNING)
	{
		m_flNextAttack = UTIL_WeaponTimeBase() + 0.1;

		// Play the lightning start sound if gun just started firing
		if(m_afButtonPressed & IN_ATTACK)
			EMIT_SOUND(ENT(pev), CHAN_AUTO, "weapons/lstart.wav", 1, ATTN_NORM);

		W_FireLightning(iQuadSound);
	}

#ifdef THREEWAVE
	else if(m_iQuakeWeapon == IT_EXTRA_WEAPON)
	{
		if(!m_bHook_Out)
			W_FireHook();

		m_flNextAttack = UTIL_WeaponTimeBase() + 0.1;
	}
#endif

	// Make player attack
	if(pev->health >= 0)
		SetAnimation(PLAYER_ATTACK1);
}