コード例 #1
0
ファイル: weapon_cs_rifles.cpp プロジェクト: Asunaya/game
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);
}
コード例 #2
0
ファイル: weapon_base_gun.cpp プロジェクト: bonjorno7/GAME
void CWeaponBaseGun::DoFireEffects()
{
    CMomentumPlayer *pPlayer = GetPlayerOwner();

    if (pPlayer)
        pPlayer->DoMuzzleFlash();
}
コード例 #3
0
ファイル: mom_triggers.cpp プロジェクト: xDShot/game
void CTriggerLimitMovement::Think()
{
    CMomentumPlayer *pPlayer = ToCMOMPlayer(UTIL_GetListenServerHost());
    if (pPlayer && IsTouching(pPlayer))
    {
        if (HasSpawnFlags(LIMIT_BHOP))
        {
            pPlayer->DisableButtons(IN_JUMP);
            // if player in air
            if (pPlayer->GetGroundEntity() != nullptr)
            {
                // only start timer if we havent already started
                if (!m_BhopTimer.HasStarted())
                    m_BhopTimer.Start(FL_BHOP_TIMER);

                // when finished
                if (m_BhopTimer.IsElapsed())
                {
                    pPlayer->EnableButtons(IN_JUMP);
                    m_BhopTimer.Reset();
                }
            }
        }
    }
    // figure out if timer elapsed or not
    if (m_BhopTimer.GetRemainingTime() <= 0)
        m_BhopTimer.Invalidate();
    // DevLog("Bhop Timer Remaining Time:%f\n", m_BhopTimer.GetRemainingTime());

    // HACKHACK - this prevents think from running too fast, breaking the timer
    // and preventing the player from jumping until the timer runs out
    // Thinking every 0.25 seconds seems to feel good, but we can adjust this later
    SetNextThink(gpGlobals->curtime + 0.25);
    BaseClass::Think();
}
コード例 #4
0
ファイル: weapon_cs_rifles.cpp プロジェクト: Asunaya/game
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);
}
コード例 #5
0
ファイル: weapon_base_gun.cpp プロジェクト: bonjorno7/GAME
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();
}
コード例 #6
0
ファイル: weapon_cs_rifles.cpp プロジェクト: Asunaya/game
float CWeaponG3SG1::GetMaxSpeed()
{
    CMomentumPlayer *pPlayer = GetPlayerOwner();
    if (pPlayer && pPlayer->GetFOV() == pPlayer->GetDefaultFOV())
        return BaseClass::GetMaxSpeed();
    else
        return 150; // zoomed in
}
コード例 #7
0
ファイル: weapon_cs_rifles.cpp プロジェクト: Asunaya/game
float CWeaponSG550::GetMaxSpeed() const
{
    CMomentumPlayer *pPlayer = GetPlayerOwner();

    if (!pPlayer || pPlayer->GetFOV() == 90)
        return BaseClass::GetMaxSpeed();
    else
        return 150; // zoomed in
}
コード例 #8
0
ファイル: weapon_cs_rifles.cpp プロジェクト: Asunaya/game
float CWeaponSG552::GetMaxSpeed() const
{
    CMomentumPlayer *pPlayer = GetPlayerOwner();

    if (!pPlayer || pPlayer->GetFOV() == pPlayer->GetDefaultFOV())
        return BaseClass::GetMaxSpeed();
    else
        return 200; // zoomed in.
}
コード例 #9
0
ファイル: weapon_cs_smgs.cpp プロジェクト: Asunaya/game
void CWeaponUMP45::PrimaryAttack()
{
    CMomentumPlayer *pPlayer = GetPlayerOwner();
    if (!pPlayer)
        return;

    if (!FBitSet(pPlayer->GetFlags(), FL_ONGROUND))
        UMP45Fire(0.24f * m_flAccuracy);
    else
        UMP45Fire(0.04f * m_flAccuracy);
}
コード例 #10
0
ファイル: weapon_cs_smgs.cpp プロジェクト: Asunaya/game
void CWeaponMP5Navy::PrimaryAttack(void)
{
    CMomentumPlayer *pPlayer = GetPlayerOwner();
    if (!pPlayer)
        return;

    if (!FBitSet(pPlayer->GetFlags(), FL_ONGROUND))
        MP5NFire(0.2f * m_flAccuracy);
    else
        MP5NFire(0.04f * m_flAccuracy);
}
コード例 #11
0
ファイル: weapon_cs_smgs.cpp プロジェクト: Asunaya/game
void CWeaponMAC10::PrimaryAttack()
{
    CMomentumPlayer *pPlayer = GetPlayerOwner();
    if (!pPlayer)
        return;

    if (!FBitSet(pPlayer->GetFlags(), FL_ONGROUND))
        MAC10Fire(0.375f * m_flAccuracy);
    else
        MAC10Fire(0.03f * m_flAccuracy);
}
コード例 #12
0
ファイル: weapon_cs_rifles.cpp プロジェクト: Asunaya/game
void CWeaponM4A1::DoFireEffects()
{
    if (!m_bSilencerOn)
    {
        CMomentumPlayer *pPlayer = GetPlayerOwner();
        if (pPlayer)
        {
            pPlayer->DoMuzzleFlash();
        }
    }
}
コード例 #13
0
ファイル: weapon_cs_smgs.cpp プロジェクト: Asunaya/game
void CWeaponTMP::PrimaryAttack(void)
{
    CMomentumPlayer *pPlayer = GetPlayerOwner();
    if (!pPlayer)
        return;

    if (!FBitSet(pPlayer->GetFlags(), FL_ONGROUND))
        TMPFire(0.25f * m_flAccuracy);
    else
        TMPFire(0.03f * m_flAccuracy);
}
コード例 #14
0
ファイル: weapon_cs_rifles.cpp プロジェクト: Asunaya/game
void CWeaponAWP::UnzoomThink(void)
{
    CMomentumPlayer *pPlayer = GetPlayerOwner();

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

    pPlayer->SetFOV(pPlayer, pPlayer->GetDefaultFOV(), 0.1f);
}
コード例 #15
0
ファイル: weapon_cs_smgs.cpp プロジェクト: Asunaya/game
void CWeaponP90::PrimaryAttack()
{
    CMomentumPlayer *pPlayer = GetPlayerOwner();
    if (!pPlayer)
        return;

    if (!FBitSet(pPlayer->GetFlags(), FL_ONGROUND))
        P90Fire(0.3f * m_flAccuracy);
    else if (pPlayer->GetAbsVelocity().Length2D() > 170)
        P90Fire(0.115f * m_flAccuracy);
    else
        P90Fire(0.045f * m_flAccuracy);
}
コード例 #16
0
ファイル: weapon_cs_rifles.cpp プロジェクト: Asunaya/game
void CAK47::PrimaryAttack()
{
    CMomentumPlayer *pPlayer = GetPlayerOwner();
    if (!pPlayer)
        return;

    if (!FBitSet(pPlayer->GetFlags(), FL_ONGROUND))
        AK47Fire(0.04f + 0.4f * m_flAccuracy);
    else if (pPlayer->GetAbsVelocity().Length2D() > 140)
        AK47Fire(0.04f + 0.07f * m_flAccuracy);
    else
        AK47Fire(0.0275f * m_flAccuracy);
}
コード例 #17
0
ファイル: weapon_cs_rifles.cpp プロジェクト: Asunaya/game
//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.
}
コード例 #18
0
ファイル: weapon_cs_rifles.cpp プロジェクト: Asunaya/game
void CWeaponAug::AUGFire(float flSpread, bool bZoomed)
{
    float flCycleTime = GetCSWpnData().m_flCycleTime;

    if (bZoomed)
        flCycleTime = 0.135f;

    if (!CSBaseGunFire(flSpread, flCycleTime, true))
        return;

    CMomentumPlayer *pPlayer = GetPlayerOwner();

    // CSBaseGunFire can kill us, forcing us to drop our weapon, if we shoot something that explodes
    if (!pPlayer)
        return;

    if (pPlayer->GetAbsVelocity().Length2D() > 5)
        pPlayer->KickBack(1, 0.45, 0.275, 0.05, 4, 2.5, 7);

    else if (!FBitSet(pPlayer->GetFlags(), FL_ONGROUND))
        pPlayer->KickBack(1.25, 0.45, 0.22, 0.18, 5.5, 4, 5);

    else if (FBitSet(pPlayer->GetFlags(), FL_DUCKING))
        pPlayer->KickBack(0.575, 0.325, 0.2, 0.011, 3.25, 2, 8);

    else
        pPlayer->KickBack(0.625, 0.375, 0.25, 0.0125, 3.5, 2.25, 8);
}
コード例 #19
0
ファイル: mom_triggers.cpp プロジェクト: xDShot/game
void CTriggerLimitMovement::EndTouch(CBaseEntity *pOther)
{
    if (pOther && pOther->IsPlayer())
    {
        CMomentumPlayer *pPlayer = ToCMOMPlayer(pOther);
        if (pPlayer)
        {
            pPlayer->EnableButtons(IN_JUMP);
            pPlayer->EnableButtons(IN_DUCK);
        }
    }
    m_BhopTimer.Reset();
    BaseClass::EndTouch(pOther);
}
コード例 #20
0
ファイル: weapon_cs_rifles.cpp プロジェクト: Asunaya/game
void CWeaponSG550::PrimaryAttack()
{
    CMomentumPlayer *pPlayer = GetPlayerOwner();
    if (!pPlayer)
        return;

    if (!FBitSet(pPlayer->GetFlags(), FL_ONGROUND))
        SG550Fire(0.45f * (1 - m_flAccuracy));
    else if (pPlayer->GetAbsVelocity().Length2D() > 5)
        SG550Fire(0.15f);
    else if (FBitSet(pPlayer->GetFlags(), FL_DUCKING))
        SG550Fire(0.04f * (1 - m_flAccuracy));
    else
        SG550Fire(0.05f * (1 - m_flAccuracy));
}
コード例 #21
0
ファイル: weapon_cs_rifles.cpp プロジェクト: Asunaya/game
void CWeaponG3SG1::PrimaryAttack()
{
    CMomentumPlayer *pPlayer = GetPlayerOwner();
    if (!pPlayer)
        return;

    if (!FBitSet(pPlayer->GetFlags(), FL_ONGROUND))
        G3SG1Fire(0.45 * (1 - m_flAccuracy));
    else if (pPlayer->GetAbsVelocity().Length2D() > 5)
        G3SG1Fire(0.15);
    else if (FBitSet(pPlayer->GetFlags(), FL_DUCKING))
        G3SG1Fire(0.035 * (1 - m_flAccuracy));
    else
        G3SG1Fire(0.055 * (1 - m_flAccuracy));
}
コード例 #22
0
ファイル: weapon_cs_rifles.cpp プロジェクト: Asunaya/game
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);
}
コード例 #23
0
ファイル: cs_playeranimstate.cpp プロジェクト: Asunaya/game
float CCSPlayerAnimState::GetCurrentMaxGroundSpeed()
{
	Activity currentActivity = 	m_pOuter->GetSequenceActivity( m_pOuter->GetSequence() );
	if ( currentActivity == ACT_WALK || currentActivity == ACT_IDLE )
		return ANIM_TOPSPEED_WALK;
	else if ( currentActivity == ACT_RUN )
	{
		if ( m_pPlayer )
		{
			CBaseCombatWeapon *activeWeapon = m_pPlayer->GetActiveWeapon();
			if ( activeWeapon )
			{
				CWeaponCSBase *csWeapon = dynamic_cast< CWeaponCSBase * >( activeWeapon );
				if ( csWeapon )
				{
					return csWeapon->GetMaxSpeed();
				}
			}
		}
		return ANIM_TOPSPEED_RUN;
	}
	else if ( currentActivity == ACT_RUN_CROUCH )
		return ANIM_TOPSPEED_RUN_CROUCH;
	else
		return 0;
}
コード例 #24
0
ファイル: mom_client.cpp プロジェクト: Ravennholm/game
void ClientActive(edict_t *pEdict, bool bLoadGame)
{
    CMomentumPlayer *pPlayer = dynamic_cast< CMomentumPlayer* >(CBaseEntity::Instance(pEdict));
    Assert(pPlayer);

    if (!pPlayer)
    {
        return;
    }

    pPlayer->InitialSpawn();

    if (!bLoadGame)
    {
        pPlayer->Spawn();
    }
}
コード例 #25
0
ファイル: weapon_base_gun.cpp プロジェクト: bonjorno7/GAME
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;
}
コード例 #26
0
ファイル: mom_triggers.cpp プロジェクト: xDShot/game
void CTriggerTimerStart::StartTouch(CBaseEntity *pOther)
{
    g_Timer->SetStartTrigger(this);
    CMomentumPlayer *pPlayer = ToCMOMPlayer(pOther);
    if (pPlayer)
    {
        pPlayer->ResetRunStats();//Reset run stats
        pPlayer->m_RunData.m_bIsInZone = true;
        pPlayer->m_RunData.m_bMapFinished = false;
        pPlayer->m_RunData.m_bTimerRunning = false;
        pPlayer->m_RunData.m_flLastJumpVel = 0; //also reset last jump velocity when we enter the start zone
        pPlayer->m_RunData.m_flRunTime = 0.0f; //MOM_TODO: Do we want to reset this?

        if (g_Timer->IsRunning())
        {
            g_Timer->Stop(false);//Handles stopping replay recording as well
            g_Timer->DispatchResetMessage();
            //lower the player's speed if they try to jump back into the start zone
        }

        //begin recording replay
		// TODO (OrfeasZ): Do we need to pass a player here?
		if (!g_ReplaySystem->GetReplayManager()->Recording())
		{
			g_ReplaySystem->BeginRecording(pPlayer);
		}
		else
        {
            g_ReplaySystem->StopRecording(pPlayer, true, false);
            g_ReplaySystem->BeginRecording(pPlayer);
        }
    }
    else
    {
        CMomentumReplayGhostEntity *pGhost = dynamic_cast<CMomentumReplayGhostEntity*>(pOther);
        if (pGhost)
        {
            pGhost->m_RunData.m_bIsInZone = true;
            pGhost->m_RunData.m_bMapFinished = false;
        }
    }
    // start thinking
    SetNextThink(gpGlobals->curtime);
    BaseClass::StartTouch(pOther);
}
コード例 #27
0
ファイル: weapon_cs_rifles.cpp プロジェクト: Asunaya/game
void CWeaponScout::PrimaryAttack(void)
{
    CMomentumPlayer *pPlayer = GetPlayerOwner();
    if (pPlayer == NULL)
    {
        Assert(pPlayer != NULL);
        return;
    }

    if (!FBitSet(pPlayer->GetFlags(), FL_ONGROUND))
        SCOUTFire(0.2);
    else if (pPlayer->GetAbsVelocity().Length2D() > 170)
        SCOUTFire(0.075);
    else if (FBitSet(pPlayer->GetFlags(), FL_DUCKING))
        SCOUTFire(0.0);
    else
        SCOUTFire(0.007);
}
コード例 #28
0
ファイル: weapon_cs_rifles.cpp プロジェクト: Asunaya/game
void CWeaponScout::SecondaryAttack()
{
#ifndef CLIENT_DLL
    CMomentumPlayer *pPlayer = GetPlayerOwner();
    if (pPlayer == NULL)
    {
        Assert(pPlayer != NULL);
        return;
    }

    if (pPlayer->GetFOV() == pPlayer->GetDefaultFOV())
    {
        pPlayer->SetFOV(pPlayer, 40, 0.15f);
    }
    else if (pPlayer->GetFOV() == 40)
    {
        pPlayer->SetFOV(pPlayer, 15, 0.05);
    }
    else if (pPlayer->GetFOV() == 15)
    {
        pPlayer->SetFOV(pPlayer, pPlayer->GetDefaultFOV(), 0.05f);
    }

    //pPlayer->ResetMaxSpeed();
#endif

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

#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"); // zoom sound

    // let the bots hear the rifle zoom
    IGameEvent * event = gameeventmanager->CreateEvent("weapon_zoom");
    if (event)
    {
        event->SetInt("userid", pPlayer->GetUserID());
        gameeventmanager->FireEvent(event);
    }
#endif
}
コード例 #29
0
ファイル: hegrenade_projectile.cpp プロジェクト: Asunaya/game
void CHEGrenadeProjectile::Detonate()
{
    BaseClass::Detonate();

    // tell the bots an HE grenade has exploded
    CMomentumPlayer *player = static_cast<CMomentumPlayer*>(GetThrower());
    if ( player )
    {
        IGameEvent * event = gameeventmanager->CreateEvent( "hegrenade_detonate" );
        if ( event )
        {
            event->SetInt( "userid", player->GetUserID() );
            event->SetFloat( "x", GetAbsOrigin().x );
            event->SetFloat( "y", GetAbsOrigin().y );
            event->SetFloat( "z", GetAbsOrigin().z );
            gameeventmanager->FireEvent( event );
        }
    }
}
コード例 #30
0
ファイル: weapon_cs_rifles.cpp プロジェクト: Asunaya/game
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;
    }
}