Skip to content
This repository was archived by the owner on May 25, 2024. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 7 additions & 3 deletions mp/src/game/shared/gamemovement.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -806,7 +806,8 @@ Vector CGameMovement::GetPlayerViewOffset( bool ducked ) const
{
#ifdef NEO
Assert(dynamic_cast<CNEO_Player*>(player));
return ducked ? VEC_DUCK_VIEW_SCALED(static_cast<CNEO_Player*>(player)) : VEC_VIEW_SCALED(static_cast<CNEO_Player*>(player));
auto thisPlayer = static_cast<CNEO_Player*>(player);
return ducked ? VEC_DUCK_VIEW_SCALED(thisPlayer) + thisPlayer->m_vecLean : VEC_VIEW_SCALED(thisPlayer) + thisPlayer->m_vecLean;
#else
return ducked ? VEC_DUCK_VIEW_SCALED(player) : VEC_VIEW_SCALED(player);
#endif
Expand Down Expand Up @@ -2516,12 +2517,12 @@ bool CGameMovement::CheckJumpButton( void )
// Because jump heights depend on the hull values, ducked
// hull values, and gravity settings, need some magical
// multipliers here to actually hit the correct values in-game.
#define NEO_JUMP_SCALE_RECON_CORRECTION 0.7221
#define NEO_JUMP_SCALE_RECON_CORRECTION 0.775 //0.7221 for correct jump followed by duck at the apex of jump
#define NEO_JUMP_SCALE_ASSAULT_CORRECTION 0.79
#define NEO_JUMP_SCALE_SUPPORT_CORRECTION 0.872

// The final NT class specific multipliers to be applied in jump calculations below.
#define RECON_JUMP_MULTIPLIER ((RECON_SHOULD_REACH_HEIGHT / HL2DM_DEFAULT_MAX_JUMP_REACH_UNITS) * NEO_JUMP_SCALE_RECON_CORRECTION)
#define RECON_JUMP_MULTIPLIER ((RECON_SHOULD_REACH_HEIGHT / HL2DM_DEFAULT_MAX_JUMP_REACH_UNITS) * NEO_JUMP_SCALE_RECON_CORRECTION) // This value is wrong, Recon's standard jump should be weaker and recon should have it's own duck jump multiplier which
#define ASSAULT_JUMP_MULTIPLIER ((ASSAULT_SHOULD_REACH_HEIGHT / HL2DM_DEFAULT_MAX_JUMP_REACH_UNITS) * NEO_JUMP_SCALE_ASSAULT_CORRECTION)
#define SUPPORT_JUMP_MULTIPLIER ((SUPPORT_SHOULD_REACH_HEIGHT / HL2DM_DEFAULT_MAX_JUMP_REACH_UNITS) * NEO_JUMP_SCALE_SUPPORT_CORRECTION)

Expand Down Expand Up @@ -4402,6 +4403,9 @@ void CGameMovement::FinishDuck( void )
#endif

Vector viewDelta = ( hullSizeNormal - hullSizeCrouch );
if (static_cast<CNEO_Player*>(player)->GetClass() == NEO_CLASS_RECON) { // Lower how far bottom of hull travels upwards during a duck jump
viewDelta = viewDelta * 0.6;
}
Vector out;
VectorAdd( mv->GetAbsOrigin(), viewDelta, out );
mv->SetAbsOrigin( out );
Expand Down
7 changes: 4 additions & 3 deletions mp/src/game/shared/neo/neo_predicted_viewmodel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -304,20 +304,21 @@ float CNEOPredictedViewModel::lean(CNEO_Player *player){
switch (player->GetClass())
{
case NEO_CLASS_RECON:
viewOffset.z = ((player->GetFlags() & FL_DUCKING) ? NEO_RECON_EYE_HEIGHT_DUCKING : NEO_RECON_EYE_HEIGHT_STANDING) - (neo_lean_fp_lower_eyes_scale.GetFloat() * leanRatio);
viewOffset.z = ((player->GetFlags() & FL_DUCKING) ? NEO_RECON_EYE_HEIGHT_DUCKING + NEO_RECON_VIEW_OFFSET.z : NEO_RECON_EYE_HEIGHT_STANDING + NEO_RECON_VIEW_OFFSET.z) - (neo_lean_fp_lower_eyes_scale.GetFloat() * leanRatio);
break;
case NEO_CLASS_ASSAULT:
viewOffset.z = ((player->GetFlags() & FL_DUCKING) ? NEO_ASSAULT_EYE_HEIGHT_DUCKING : NEO_ASSAULT_EYE_HEIGHT_STANDING) - (neo_lean_fp_lower_eyes_scale.GetFloat() * leanRatio);
viewOffset.z = ((player->GetFlags() & FL_DUCKING) ? NEO_ASSAULT_EYE_HEIGHT_DUCKING + NEO_ASSAULT_VIEW_OFFSET.z : NEO_ASSAULT_EYE_HEIGHT_STANDING + NEO_ASSAULT_VIEW_OFFSET.z) - (neo_lean_fp_lower_eyes_scale.GetFloat() * leanRatio);
break;
case NEO_CLASS_SUPPORT:
viewOffset.z = ((player->GetFlags() & FL_DUCKING) ? NEO_SUPPORT_EYE_HEIGHT_DUCKING : NEO_SUPPORT_EYE_HEIGHT_STANDING) - (neo_lean_fp_lower_eyes_scale.GetFloat() * leanRatio);
viewOffset.z = ((player->GetFlags() & FL_DUCKING) ? NEO_SUPPORT_EYE_HEIGHT_DUCKING + NEO_SUPPORT_VIEW_OFFSET.z : NEO_SUPPORT_EYE_HEIGHT_STANDING + NEO_SUPPORT_VIEW_OFFSET.z) - (neo_lean_fp_lower_eyes_scale.GetFloat() * leanRatio);
break;
default:
Assert(false);
viewOffset.z = player->GetViewOffset().z;
break;
}

player->m_vecLean = Vector(0, viewOffset.y, -(neo_lean_fp_lower_eyes_scale.GetFloat() * leanRatio));
player->SetViewOffset(viewOffset);

viewAng.z = leanAngle;
Expand Down
18 changes: 9 additions & 9 deletions mp/src/game/shared/shareddefs.h
Original file line number Diff line number Diff line change
Expand Up @@ -85,18 +85,18 @@ class CViewVectors
#define VEC_DEAD_VIEWHEIGHT g_pGameRules->GetViewVectors()->m_vDeadViewHeight

#ifdef NEO
#define NEO_RECON_VIEW_OFFSET Vector(0.0f, 0.0f, -1.0f)
#define NEO_ASSAULT_VIEW_OFFSET vec3_origin
#define NEO_SUPPORT_VIEW_OFFSET Vector(0.0f, 0.0f, 2.0f)
#define NEO_RECON_VIEW_OFFSET Vector(0.0f, 0.0f, -6.0f)
#define NEO_ASSAULT_VIEW_OFFSET Vector(0.0f, 0.0f, -3.75f)
#define NEO_SUPPORT_VIEW_OFFSET Vector(0.0f, 0.0f, 3.0f)
#define VEC_VIEW_NEOSCALE(NeoPlayer) (g_pGameRules->GetViewVectors()->m_vView + ((NeoPlayer->GetClass() == NEO_CLASS_RECON) ? NEO_RECON_VIEW_OFFSET : (NeoPlayer->GetClass() == NEO_CLASS_SUPPORT) ? NEO_SUPPORT_VIEW_OFFSET : NEO_ASSAULT_VIEW_OFFSET))
#define VEC_DUCK_VIEW_NEOSCALE(NeoPlayer) (g_pGameRules->GetViewVectors()->m_vDuckView + ((NeoPlayer->GetClass() == NEO_CLASS_RECON) ? NEO_RECON_VIEW_OFFSET : (NeoPlayer->GetClass() == NEO_CLASS_SUPPORT) ? NEO_SUPPORT_VIEW_OFFSET : NEO_ASSAULT_VIEW_OFFSET))

#define NEO_RECON_DUCK_MAXHULL_OFFSET Vector(0.0f, 0.0f, -4.0f)
#define NEO_ASSAULT_DUCK_MAXHULL_OFFSET Vector(0.0f, 0.0f, -2.0f)
#define NEO_SUPPORT_DUCK_MAXHULL_OFFSET Vector(0.0f, 0.0f, 9.0f)
#define VEC_HULL_MIN_NEOSCALED(NeoPlayer) (g_pGameRules->GetViewVectors()->m_vHullMin + ((NeoPlayer->GetClass() == NEO_CLASS_RECON) ? NEO_RECON_DUCK_MAXHULL_OFFSET : (NeoPlayer->GetClass() == NEO_CLASS_SUPPORT) ? NEO_SUPPORT_DUCK_MAXHULL_OFFSET : NEO_ASSAULT_DUCK_MAXHULL_OFFSET))
#define VEC_HULL_MAX_NEOSCALED(NeoPlayer) (g_pGameRules->GetViewVectors()->m_vHullMax + ((NeoPlayer->GetClass() == NEO_CLASS_RECON) ? NEO_RECON_DUCK_MAXHULL_OFFSET : (NeoPlayer->GetClass() == NEO_CLASS_SUPPORT) ? NEO_SUPPORT_DUCK_MAXHULL_OFFSET : NEO_ASSAULT_DUCK_MAXHULL_OFFSET))
#define VEC_DUCK_HULL_MIN_NEOSCALED(NeoPlayer) (g_pGameRules->GetViewVectors()->m_vDuckHullMin + ((NeoPlayer->GetClass() == NEO_CLASS_RECON) ? NEO_RECON_DUCK_MAXHULL_OFFSET : (NeoPlayer->GetClass() == NEO_CLASS_SUPPORT) ? NEO_SUPPORT_DUCK_MAXHULL_OFFSET : NEO_ASSAULT_DUCK_MAXHULL_OFFSET))
#define NEO_RECON_DUCK_MAXHULL_OFFSET Vector(0.0f, 0.0f, -2.0f)
#define NEO_ASSAULT_DUCK_MAXHULL_OFFSET Vector(0.0f, 0.0f, -1.0f)
#define NEO_SUPPORT_DUCK_MAXHULL_OFFSET Vector(0.0f, 0.0f, 6.0f)
#define VEC_HULL_MIN_NEOSCALED(NeoPlayer) (g_pGameRules->GetViewVectors()->m_vHullMin)
#define VEC_HULL_MAX_NEOSCALED(NeoPlayer) (g_pGameRules->GetViewVectors()->m_vHullMax)
#define VEC_DUCK_HULL_MIN_NEOSCALED(NeoPlayer) (g_pGameRules->GetViewVectors()->m_vDuckHullMin)
#define VEC_DUCK_HULL_MAX_NEOSCALED(NeoPlayer) (g_pGameRules->GetViewVectors()->m_vDuckHullMax + ((NeoPlayer->GetClass() == NEO_CLASS_RECON) ? NEO_RECON_DUCK_MAXHULL_OFFSET : (NeoPlayer->GetClass() == NEO_CLASS_SUPPORT) ? NEO_SUPPORT_DUCK_MAXHULL_OFFSET : NEO_ASSAULT_DUCK_MAXHULL_OFFSET))
#endif

Expand Down