diff --git a/source/games/exhumed/src/move.cpp b/source/games/exhumed/src/move.cpp index 30a158879..5852cfca5 100644 --- a/source/games/exhumed/src/move.cpp +++ b/source/games/exhumed/src/move.cpp @@ -206,7 +206,8 @@ static int BelowNear(DExhumedActor* pActor, double walldist, sectortype** overri *overridesect = pSector; pActor->vel.Z = 0; - bTouchFloor = true; + if (pActor->spr.statnum == 100) + PlayerList[GetPlayerFromActor(pActor)].bTouchFloor = true; return kHitAux2; } @@ -230,6 +231,9 @@ Collision movespritez(DExhumedActor* pActor, double z, double height, double cli *overridesect = pSector; auto pSect2 = pSector; + if (pActor->spr.statnum == 100) + PlayerList[GetPlayerFromActor(pActor)].bTouchFloor = false; + // backup cstat auto cstat = pActor->spr.cstat; @@ -300,7 +304,8 @@ Collision movespritez(DExhumedActor* pActor, double z, double height, double cli { if (z > 0) { - bTouchFloor = true; + if (pActor->spr.statnum == 100) + PlayerList[GetPlayerFromActor(pActor)].bTouchFloor = true; if (loHit.type == kHitSprite) { @@ -417,8 +422,6 @@ DExhumedActor* insertActor(sectortype* s, int st) Collision movesprite(DExhumedActor* pActor, DVector2 vect, double dz, double flordist, unsigned int clipmask) { - bTouchFloor = false; - auto spos = pActor->spr.pos; double nSpriteHeight = GetActorHeight(pActor); auto pSector = pActor->sector(); diff --git a/source/games/exhumed/src/player.cpp b/source/games/exhumed/src/player.cpp index 548056921..f12dffd15 100644 --- a/source/games/exhumed/src/player.cpp +++ b/source/games/exhumed/src/player.cpp @@ -1235,7 +1235,7 @@ static void updatePlayerAction(Player* const pPlayer, const bool bUnderwater) pPlayerActor->vel.Z = -8; nextAction = 10; } - else if (bTouchFloor && (pPlayerActor->nAction < 6 || pPlayerActor->nAction > 8)) + else if (pPlayer->bTouchFloor && (pPlayerActor->nAction < 6 || pPlayerActor->nAction > 8)) { pPlayerActor->vel.Z = -14; nextAction = 3; @@ -1706,7 +1706,7 @@ static void doPlayerMovingBlocks(Player* const pPlayer, const Collision& nMove, { return; } - else if ((sect->hitag == 45) && bTouchFloor && absangle(nNormal, pPlayerActor->spr.Angles.Yaw + DAngle180) <= DAngle45) + else if ((sect->hitag == 45) && pPlayer->bTouchFloor && absangle(nNormal, pPlayerActor->spr.Angles.Yaw + DAngle180) <= DAngle45) { pPlayer->pPlayerPushSect = sect; DVector2 vel = pPlayer->vel; @@ -1794,7 +1794,7 @@ static bool doPlayerInput(Player* const pPlayer) pPlayer->nThrust *= 0.5; // Trigger Ramses? - if ((pPlayerSect->Flag & 0x8000) && bTouchFloor) + if ((pPlayerSect->Flag & 0x8000) && pPlayer->bTouchFloor) return false; // update player yaw here as per the original workflow. @@ -1805,7 +1805,7 @@ static bool doPlayerInput(Player* const pPlayer) if (nMove.type || nMove.exbits) { - if (bTouchFloor) + if (pPlayer->bTouchFloor) doPlayerFloorDamage(pPlayer, nStartVelZ); if (nMove.type == kHitSector || nMove.type == kHitWall) @@ -1842,7 +1842,7 @@ static void doPlayerRunlistSignals(Player* const pPlayer, sectortype* const pSta const auto pPlayerActor = pPlayer->pActor; const auto pPlayerSect = pPlayerActor->sector(); - if (bTouchFloor && pPlayerSect->lotag > 0) + if (pPlayer->bTouchFloor && pPlayerSect->lotag > 0) runlist_SignalRun(pPlayerSect->lotag - 1, pPlayer->nPlayer, &ExhumedAI::TouchFloor); if (pStartSect != pPlayerSect) diff --git a/source/games/exhumed/src/player.h b/source/games/exhumed/src/player.h index 9ff45e7e8..3e6b6792e 100644 --- a/source/games/exhumed/src/player.h +++ b/source/games/exhumed/src/player.h @@ -100,6 +100,7 @@ struct Player int ototalvel; int totalvel; bool crouch_toggle; + bool bTouchFloor; TObjPtr pPlayerGrenade; TObjPtr pPlayerFloorSprite; TObjPtr pDoppleSprite; diff --git a/source/games/exhumed/src/view.cpp b/source/games/exhumed/src/view.cpp index a19c702bb..01a01c385 100644 --- a/source/games/exhumed/src/view.cpp +++ b/source/games/exhumed/src/view.cpp @@ -336,7 +336,6 @@ void SerializeView(FSerializer& arc) if (arc.BeginObject("view")) { arc("camerapos", nCamerapos) - ("touchfloor", bTouchFloor) ("chunktotal", nChunkTotal) ("camera", bCamera) .EndObject(); diff --git a/source/games/exhumed/src/view.h b/source/games/exhumed/src/view.h index 69d02f0d3..43d654a8c 100644 --- a/source/games/exhumed/src/view.h +++ b/source/games/exhumed/src/view.h @@ -29,7 +29,6 @@ void DrawView(double interpfrac, bool sceneonly = false); void ResetView(); extern DVector3 nCamerapos; -extern bool bTouchFloor; extern int nChunkTotal; extern tspriteArray* mytspriteArray;