Fixed leaning values in mohaas/mohaab

This commit is contained in:
smallmodel 2023-08-20 13:54:25 +02:00
parent 31d19cb0f6
commit 17f6c25bc7
No known key found for this signature in database
GPG key ID: A96F163ED4891440
3 changed files with 38 additions and 19 deletions

View file

@ -477,8 +477,23 @@ void CG_PredictPlayerState(void)
}
cg_pmove.noFootsteps = (cgs.dmflags & DF_NO_FOOTSTEPS) > 0;
// Leaning while moving is allowed in mohta and mohtt only with a specific dm flag bit set
cg_pmove.alwaysAllowLean = (cg_protocol < PROTOCOL_MOHTA_MIN) || (cgs.dmflags & DF_ALLOW_LEAN_MOVEMENT);
if (cg_protocol >= PROTOCOL_MOHTA_MIN) {
// Leaning while moving is allowed in mohta and mohtt only with a specific dm flag bit set
cg_pmove.alwaysAllowLean = (cgs.dmflags & DF_ALLOW_LEAN_MOVEMENT) ? qtrue : qfalse;
pm->leanMax = 45.f;
pm->leanAdd = 6.f;
pm->leanRecoverSpeed = 8.5f;
pm->leanSpeed = 2.f;
} else {
cg_pmove.alwaysAllowLean = qtrue;
pm->leanMax = 40.f;
pm->leanAdd = 10.f;
pm->leanRecoverSpeed = 15.f;
pm->leanSpeed = 4.f;
}
cg_pmove.protocol = cg_protocol;
// save the state before the pmove so we can detect transitions

View file

@ -1471,17 +1471,17 @@ void PmoveSingle( pmove_t *pmove )
{
if( pm->cmd.buttons & BUTTON_LEAN_LEFT )
{
if( pm->ps->fLeanAngle <= -40.0f )
if( pm->ps->fLeanAngle <= -pm->leanMax)
{
pm->ps->fLeanAngle = -40.0f;
pm->ps->fLeanAngle = -pm->leanMax;
}
else
{
float fAngle = pml.frametime * ( -40.0f - pm->ps->fLeanAngle );
float fLeanAngle = pml.frametime * -4.0f;
float fAngle = pml.frametime * ( -pm->leanMax - pm->ps->fLeanAngle ) * pm->leanAdd;
float fLeanAngle = pml.frametime * -pm->leanSpeed;
if( fAngle * 10.0f <= fLeanAngle ) {
fLeanAngle = fAngle * 10.0f;
if( fAngle <= fLeanAngle ) {
fLeanAngle = fAngle;
}
pm->ps->fLeanAngle += fLeanAngle;
@ -1489,19 +1489,19 @@ void PmoveSingle( pmove_t *pmove )
}
else
{
if( pm->ps->fLeanAngle >= 40.0f )
if( pm->ps->fLeanAngle >= pm->leanMax )
{
pm->ps->fLeanAngle = 40.0f;
pm->ps->fLeanAngle = pm->leanMax;
}
else
{
float fAngle = 40.0f - pm->ps->fLeanAngle;
float fLeanAngle = pml.frametime * 4.0f;
float fMult = pml.frametime * fAngle;
float fAngle = pm->leanMax - pm->ps->fLeanAngle;
float fLeanAngle = pml.frametime * pm->leanSpeed;
float fMult = pml.frametime * fAngle * pm->leanAdd;
if( fLeanAngle <= fMult * 10.0f )
if( fLeanAngle <= fMult )
{
fLeanAngle = fMult * 10.0f;
fLeanAngle = fMult;
}
else
{
@ -1514,11 +1514,11 @@ void PmoveSingle( pmove_t *pmove )
}
else if( pm->ps->fLeanAngle )
{
float fAngle = pm->ps->fLeanAngle * pml.frametime * 15.0f;
float fAngle = pm->ps->fLeanAngle * pml.frametime * pm->leanRecoverSpeed;
if( pm->ps->fLeanAngle <= 0.0f )
{
float fLeanAngle = -4.0f * pml.frametime;
float fLeanAngle = pml.frametime * -pm->leanSpeed;
if( fAngle <= fLeanAngle )
{
@ -1529,9 +1529,9 @@ void PmoveSingle( pmove_t *pmove )
}
else
{
float fLeanAngle = pml.frametime * 4.0f;
float fLeanAngle = pml.frametime * pm->leanSpeed;
if( fLeanAngle <= fAngle ) {
if(fAngle >= fLeanAngle) {
fLeanAngle = fAngle;
}

View file

@ -340,6 +340,10 @@ movement on the server game.
// Openmohaa addition
//
int protocol;
float leanSpeed;
float leanRecoverSpeed;
float leanAdd;
float leanMax;
} pmove_t;
// if a full pmove isn't done on the client, you can just update the angles