Пример #1
0
void CWeaponScout::SCOUTFire(float flSpread)
{
    CMomentumPlayer *pPlayer = GetPlayerOwner();
    if (pPlayer == NULL)
    {
        Assert(pPlayer != NULL);
        return;
    }

    // If we are not zoomed in, or we have very recently zoomed and are still transitioning, the bullet diverts more.
    if (pPlayer->GetFOV() == pPlayer->GetDefaultFOV() || (gpGlobals->curtime < m_zoomFullyActiveTime))
    {
        flSpread += 0.025;
    }

    if (pPlayer->GetFOV() != pPlayer->GetDefaultFOV())
    {
        pPlayer->m_bResumeZoom = true;
        pPlayer->m_iLastZoom = pPlayer->GetFOV();

#ifndef CLIENT_DLL
        pPlayer->SetFOV(pPlayer, pPlayer->GetDefaultFOV(), 0.05f);
#endif
    }

    if (!CSBaseGunFire(flSpread, GetCSWpnData().m_flCycleTime, true))
        return;

    QAngle angle = pPlayer->GetPunchAngle();
    angle.x -= 2;
    pPlayer->SetPunchAngle(angle);
}
Пример #2
0
void CWeaponBaseGun::ItemPostFrame()
{
    CMomentumPlayer *pPlayer = GetPlayerOwner();

    if (!pPlayer)
        return;

    if ((m_flNextPrimaryAttack <= gpGlobals->curtime) && (pPlayer->m_bResumeZoom))
    {
#ifndef CLIENT_DLL
        pPlayer->SetFOV(pPlayer, pPlayer->m_iLastZoomFOV, 0.05f);
        
        // Make sure we think that we are zooming on the server so we don't get instant acc bonus
        m_zoomFullyActiveTime = gpGlobals->curtime + 0.05f; 

        if (pPlayer->GetFOV() == pPlayer->m_iLastZoomFOV)
        {
            // return the fade level in zoom.
            pPlayer->m_bResumeZoom = false;
        }
#endif
    }
    ProcessAnimationEvents();
    BaseClass::ItemPostFrame();
}
Пример #3
0
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;
}
Пример #4
0
void CWeaponG3SG1::G3SG1Fire(float flSpread)
{
    CMomentumPlayer *pPlayer = GetPlayerOwner();
    if (!pPlayer)
        return;

    // If we are not zoomed in, or we have very recently zoomed and are still transitioning, the bullet diverts more.
    if (pPlayer->GetFOV() == pPlayer->GetDefaultFOV() || (gpGlobals->curtime < m_zoomFullyActiveTime))
        flSpread += 0.025;

    // Mark the time of this shot and determine the accuracy modifier based on the last shot fired...
    m_flAccuracy = 0.55 + (0.3) * (gpGlobals->curtime - m_flLastFire);

    if (m_flAccuracy > 0.98)
        m_flAccuracy = 0.98;

    m_flLastFire = gpGlobals->curtime;

    if (!CSBaseGunFire(flSpread, GetCSWpnData().m_flCycleTime, true))
        return;

    // Adjust the punch angle.
    QAngle angle = pPlayer->GetPunchAngle();
    angle.x -= SharedRandomFloat("G3SG1PunchAngleX", 0.75, 1.75) + (angle.x / 4);
    angle.y += SharedRandomFloat("G3SG1PunchAngleY", -0.75, 0.75);
    pPlayer->SetPunchAngle(angle);
}
Пример #5
0
void CWeaponAWP::SecondaryAttack()
{
#ifndef CLIENT_DLL
    CMomentumPlayer *pPlayer = GetPlayerOwner();

    if (pPlayer == nullptr)
    {
        Assert(pPlayer != nullptr);
        return;
    }

    if (pPlayer->GetFOV() == pPlayer->GetDefaultFOV())
    {
        pPlayer->SetFOV(pPlayer, 40, 0.15f);
    }
    else if (pPlayer->GetFOV() == 40)
    {
        pPlayer->SetFOV(pPlayer, 10, 0.08f);
    }
    else
    {
        pPlayer->SetFOV(pPlayer, pPlayer->GetDefaultFOV(), 0.1f);
    }

    //pPlayer->ResetMaxSpeed();

#endif

#ifndef CLIENT_DLL
    // If this isn't guarded, the sound will be emitted twice, once by the server and once by the client.
    // Let the server play it since if only the client plays it, it's liable to get played twice cause of
    // a prediction error. joy.
    EmitSound("Default.Zoom");

    // let the bots hear the rifle zoom
    IGameEvent * event = gameeventmanager->CreateEvent("weapon_zoom");
    if (event)
    {
        event->SetInt("userid", pPlayer->GetUserID());
        gameeventmanager->FireEvent(event);
    }
#endif

    m_flNextSecondaryAttack = gpGlobals->curtime + 0.3;
    m_zoomFullyActiveTime = gpGlobals->curtime + 0.15; // The worst zoom time from above.  

}
Пример #6
0
float CWeaponG3SG1::GetMaxSpeed()
{
    CMomentumPlayer *pPlayer = GetPlayerOwner();
    if (pPlayer && pPlayer->GetFOV() == pPlayer->GetDefaultFOV())
        return BaseClass::GetMaxSpeed();
    else
        return 150; // zoomed in
}
Пример #7
0
float CWeaponSG552::GetMaxSpeed() const
{
    CMomentumPlayer *pPlayer = GetPlayerOwner();

    if (!pPlayer || pPlayer->GetFOV() == pPlayer->GetDefaultFOV())
        return BaseClass::GetMaxSpeed();
    else
        return 200; // zoomed in.
}
Пример #8
0
float CWeaponSG550::GetMaxSpeed() const
{
    CMomentumPlayer *pPlayer = GetPlayerOwner();

    if (!pPlayer || pPlayer->GetFOV() == 90)
        return BaseClass::GetMaxSpeed();
    else
        return 150; // zoomed in
}
Пример #9
0
void CWeaponAug::SecondaryAttack()
{
#ifndef CLIENT_DLL
    CMomentumPlayer *pPlayer = GetPlayerOwner();
    if (!pPlayer)
        return;

    if (pPlayer->GetFOV() == pPlayer->GetDefaultFOV())
    {
        pPlayer->SetFOV(pPlayer, 55, 0.2f);
    }
    else if (pPlayer->GetFOV() == 55)
    {
        pPlayer->SetFOV(pPlayer, pPlayer->GetDefaultFOV(), 0.15f);
    }
    else
    {
        pPlayer->SetFOV(pPlayer, pPlayer->GetDefaultFOV());
    }
#endif

    m_flNextSecondaryAttack = gpGlobals->curtime + 0.3;
}
Пример #10
0
//MOM_TODO: Consider LJ gametype
float CWeaponScout::GetMaxSpeed() const
{
    CMomentumPlayer *pPlayer = GetPlayerOwner();
    if (pPlayer == NULL)
    {
        Assert(pPlayer != NULL);
        return BaseClass::GetMaxSpeed();
    }

    if (pPlayer->GetFOV() == pPlayer->GetDefaultFOV())
        return BaseClass::GetMaxSpeed();
    else
        return 220;	// zoomed in.
}
Пример #11
0
void CWeaponAWP::AWPFire(float flSpread)
{
    CMomentumPlayer *pPlayer = GetPlayerOwner();

    if (pPlayer == nullptr)
    {
        Assert(pPlayer != nullptr);
        return;
    }

    // If we are not zoomed in, or we have very recently zoomed and are still transitioning, the bullet diverts more.
    if (pPlayer->GetFOV() == pPlayer->GetDefaultFOV() || (gpGlobals->curtime < m_zoomFullyActiveTime))
    {
        flSpread += 0.08;
    }

    if (pPlayer->GetFOV() != pPlayer->GetDefaultFOV())
    {
        pPlayer->m_iLastZoom = pPlayer->GetFOV();

#ifndef CLIENT_DLL
#ifdef AWP_UNZOOM
        SetContextThink(&CWeaponAWP::UnzoomThink, gpGlobals->curtime + sv_awpunzoomdelay.GetFloat(), SNIPER_ZOOM_CONTEXT);
#else
        pPlayer->m_bResumeZoom = true;
        pPlayer->SetFOV(pPlayer, pPlayer->GetDefaultFOV(), 0.1f);
#endif
#endif
    }

    if (!CSBaseGunFire(flSpread, GetCSWpnData().m_flCycleTime, true))
        return;

    QAngle angle = pPlayer->GetPunchAngle();
    angle.x -= 2;
    pPlayer->SetPunchAngle(angle);
}
Пример #12
0
void CWeaponSG552::PrimaryAttack()
{
    CMomentumPlayer *pPlayer = GetPlayerOwner();
    if (!pPlayer)
        return;

    bool bZoomed = pPlayer->GetFOV() < pPlayer->GetDefaultFOV();

    if (!FBitSet(pPlayer->GetFlags(), FL_ONGROUND))
        SG552Fire(0.035f + 0.45f * m_flAccuracy, bZoomed);
    else if (pPlayer->GetAbsVelocity().Length2D() > 140)
        SG552Fire(0.035f + 0.075f * m_flAccuracy, bZoomed);
    else
        SG552Fire(0.02f * m_flAccuracy, bZoomed);
}
Пример #13
0
float CWeaponAWP::GetMaxSpeed() const
{
    CMomentumPlayer *pPlayer = GetPlayerOwner();

    if (pPlayer == nullptr)
    {
        Assert(pPlayer != nullptr);
        return BaseClass::GetMaxSpeed();
    }

    if (pPlayer->GetFOV() == pPlayer->GetDefaultFOV())
    {
        return BaseClass::GetMaxSpeed();
    }
    else
    {
        // Slower speed when zoomed in.
        return 150;
    }
}