bool CWeaponBaseGun::Reload() { CMomentumPlayer *pPlayer = GetPlayerOwner(); if (!pPlayer) return false; if (pPlayer->GetAmmoCount(GetPrimaryAmmoType()) <= 0) return false; int iResult = DefaultReload(GetMaxClip1(), GetMaxClip2(), ACT_VM_RELOAD); if (!iResult) return false; pPlayer->SetAnimation(PLAYER_RELOAD); #ifndef CLIENT_DLL if ((iResult) && (pPlayer->GetFOV() != pPlayer->GetDefaultFOV())) { pPlayer->SetFOV(pPlayer, pPlayer->GetDefaultFOV()); } #endif m_flAccuracy = 0.2; pPlayer->m_iShotsFired = 0; m_bDelayFire = false; return true; }
bool CWeaponBaseGun::BaseGunFire(float flSpread, float flCycleTime, bool bPrimaryMode) { CMomentumPlayer *pPlayer = GetPlayerOwner(); if (!pPlayer) return false; m_bDelayFire = true; pPlayer->m_iShotsFired++; // Out of ammo? #ifdef WEAPONS_USE_AMMO if (m_iClip1 <= 0) { if (m_bFireOnEmpty) { PlayEmptySound(); m_flNextPrimaryAttack = gpGlobals->curtime + 0.2; } return false; } m_iClip1--; #endif SendWeaponAnim(ACT_VM_PRIMARYATTACK); // player "shoot" animation pPlayer->SetAnimation(PLAYER_ATTACK1); FX_FireBullets(pPlayer->entindex(), pPlayer->Weapon_ShootPosition(), pPlayer->EyeAngles() + 2.0f * pPlayer->GetPunchAngle(), GetWeaponID(), bPrimaryMode ? Primary_Mode : Secondary_Mode, CBaseEntity::GetPredictionRandomSeed() & 255, flSpread); DoFireEffects(); m_flNextPrimaryAttack = m_flNextSecondaryAttack = gpGlobals->curtime + flCycleTime; #ifdef WEAPONS_USE_AMMO if (!m_iClip1 && pPlayer->GetAmmoCount(m_iPrimaryAmmoType) <= 0) { // HEV suit - indicate out of ammo condition pPlayer->SetSuitUpdate("!HEV_AMO0", false, 0); } #endif SetWeaponIdleTime(gpGlobals->curtime + m_flTimeToIdleAfterFire); return true; }
// GOOSEMAN : FireRemaining used by Glock18 void CWeaponFamas::FireRemaining(int &shotsFired, float &shootTime) { float nexttime = 0.1; m_iClip1--; if (m_iClip1 < 0) { m_iClip1 = 0; shotsFired = 3; shootTime = 0.0f; return; } CMomentumPlayer *pPlayer = GetPlayerOwner(); if (!pPlayer) Error("!pPlayer"); // Famas burst mode FX_FireBullets( pPlayer->entindex(), pPlayer->Weapon_ShootPosition(), pPlayer->EyeAngles() + 2.0f * pPlayer->GetPunchAngle(), GetWeaponID(), Secondary_Mode, CBaseEntity::GetPredictionRandomSeed() & 255, m_fBurstSpread); SendWeaponAnim(ACT_VM_PRIMARYATTACK); pPlayer->DoMuzzleFlash(); pPlayer->SetAnimation(PLAYER_ATTACK1); shotsFired++; if (shotsFired != 3) shootTime = gpGlobals->curtime + nexttime; else shootTime = 0.0; }