diff --git a/source/games/exhumed/src/aistuff.h b/source/games/exhumed/src/aistuff.h index 6a90e5941..1b4f7da3a 100644 --- a/source/games/exhumed/src/aistuff.h +++ b/source/games/exhumed/src/aistuff.h @@ -278,7 +278,7 @@ inline int PlotCourseToSprite(DExhumedActor* nSprite1, DExhumedActor* nSprite2) return PlotCourseToSprite(nSprite1->GetSpriteIndex(), nSprite2->GetSpriteIndex()); } void CheckSectorFloor(short nSector, int z, int *x, int *y); -int GetAngleToSprite(int nSprite1, int nSprite2); +int GetAngleToSprite(DExhumedActor* nSprite1, DExhumedActor* nSprite2); int GetWallNormal(short nWall); int GetUpAngle(short nSprite1, int nVal, short nSprite2, int ecx); int GetUpAngle(DExhumedActor* nSprite1, int nVal, DExhumedActor* nSprite2, int ecx) diff --git a/source/games/exhumed/src/move.cpp b/source/games/exhumed/src/move.cpp index 4e51c5085..d5ae14847 100644 --- a/source/games/exhumed/src/move.cpp +++ b/source/games/exhumed/src/move.cpp @@ -702,13 +702,13 @@ int MoveCreatureWithCaution(int nSprite) return ecx; } -int GetAngleToSprite(int nSprite1, int nSprite2) +int GetAngleToSprite(DExhumedActor* a1, DExhumedActor* a2) { - if (nSprite1 < 0 || nSprite2 < 0) + if (!a1 || !a2) return -1; - auto pSprite1 = &sprite[nSprite1]; - auto pSprite2 = &sprite[nSprite2]; + auto pSprite1 = &a1->s(); + auto pSprite2 = &a2->s(); return GetMyAngle(pSprite2->x - pSprite1->x, pSprite2->y - pSprite1->y); } @@ -1465,7 +1465,7 @@ int BuildCreatureChunk(int nVal, int nPic) pSprite->y = sprite[nVal].y; pSprite->z = sprite[nVal].z; - mychangespritesect(actor->GetSpriteIndex(), sprite[nVal].sectnum); + ChangeActorSect(actor, sprite[nVal].sectnum); pSprite->cstat = 0x80; pSprite->shade = -12; diff --git a/source/games/exhumed/src/player.cpp b/source/games/exhumed/src/player.cpp index 25b72afac..f3b5c4025 100644 --- a/source/games/exhumed/src/player.cpp +++ b/source/games/exhumed/src/player.cpp @@ -800,8 +800,9 @@ void AIPlayer::Tick(RunListEvent* ev) short nPlayer = RunData[ev->nRun].nObjIndex; assert(nPlayer >= 0 && nPlayer < kMaxPlayers); - short nPlayerSprite = PlayerList[nPlayer].nSprite; - auto pPlayerSprite = &sprite[nPlayerSprite]; + auto pPlayerActor = PlayerList[nPlayer].Actor(); + int nPlayerSprite = PlayerList[nPlayer].nSprite; + auto pPlayerSprite = &pPlayerActor->s(); short nDopple = nDoppleSprite[nPlayer]; @@ -904,7 +905,7 @@ void AIPlayer::Tick(RunListEvent* ev) // pPlayerSprite->zvel is modified within Gravity() short zVel = pPlayerSprite->zvel; - Gravity(nPlayerSprite); + Gravity(pPlayerActor); if (pPlayerSprite->zvel >= 6500 && zVel < 6500) { @@ -994,7 +995,7 @@ void AIPlayer::Tick(RunListEvent* ev) { if (nTotalPlayers <= 1) { - auto ang = GetAngleToSprite(nPlayerSprite, nSpiritSprite) & kAngleMask; + auto ang = GetAngleToSprite(pPlayerActor, &exhumedActors[nSpiritSprite]) & kAngleMask; PlayerList[nPlayer].angle.settarget(ang, true); pPlayerSprite->ang = ang; diff --git a/source/games/exhumed/src/snake.cpp b/source/games/exhumed/src/snake.cpp index 3308da98d..41ffa1f12 100644 --- a/source/games/exhumed/src/snake.cpp +++ b/source/games/exhumed/src/snake.cpp @@ -288,7 +288,7 @@ DExhumedActor* FindSnakeEnemy(short nSnake) { if (pAct2 != pPlayerActor && !(pSpr2->cstat & 0x8000)) { - int nAngle2 = (nAngle - GetAngleToSprite(pActor->GetSpriteIndex(), pAct2->GetSpriteIndex())) & kAngleMask; + int nAngle2 = (nAngle - GetAngleToSprite(pActor, pAct2)) & kAngleMask; if (nAngle2 < esi) { pEnemy = pAct2;