diff --git a/source/games/exhumed/src/aistuff.h b/source/games/exhumed/src/aistuff.h index 168298c9b..7ab400f48 100644 --- a/source/games/exhumed/src/aistuff.h +++ b/source/games/exhumed/src/aistuff.h @@ -242,7 +242,7 @@ int MoveCreatureWithCaution(int nSprite); void WheresMyMouth(int nPlayer, int *x, int *y, int *z, short *sectnum); int GetSpriteHeight(int nSprite); DExhumedActor* GrabBody(); -int GrabBodyGunSprite(); +DExhumedActor* GrabBodyGunSprite(); void CreatePushBlock(int nSector); void FuncCreatureChunk(int a, int, int nRun); int FindPlayer(int nSprite, int nDistance); diff --git a/source/games/exhumed/src/engine.h b/source/games/exhumed/src/engine.h index 8226dcc33..9b2cb1689 100644 --- a/source/games/exhumed/src/engine.h +++ b/source/games/exhumed/src/engine.h @@ -62,7 +62,7 @@ extern short inita; extern short initsect; extern short nCurChunkNum; -extern short nBodyGunSprite[50]; +extern DExhumedActor* nBodyGunSprite[50]; extern int movefifoend; extern int movefifopos; extern short nCurBodyGunNum; diff --git a/source/games/exhumed/src/init.cpp b/source/games/exhumed/src/init.cpp index 2e622fb4b..0ed605c40 100644 --- a/source/games/exhumed/src/init.cpp +++ b/source/games/exhumed/src/init.cpp @@ -45,7 +45,7 @@ short inita, initsect; short nCurChunkNum = 0; -short nBodyGunSprite[50]; +DExhumedActor* nBodyGunSprite[50]; int movefifoend; int movefifopos; diff --git a/source/games/exhumed/src/move.cpp b/source/games/exhumed/src/move.cpp index 1d51a0fa8..8e3ad361f 100644 --- a/source/games/exhumed/src/move.cpp +++ b/source/games/exhumed/src/move.cpp @@ -1323,7 +1323,7 @@ void InitChunks() { nCurChunkNum = 0; memset(nChunkSprite, 0, sizeof(nChunkSprite)); - memset(nBodyGunSprite, -1, sizeof(nBodyGunSprite)); + memset(nBodyGunSprite, 0, sizeof(nBodyGunSprite)); memset(nBodySprite, 0, sizeof(nBodySprite)); nCurBodyNum = 0; nCurBodyGunNum = 0; @@ -1331,22 +1331,22 @@ void InitChunks() nChunkTotal = 0; } -int GrabBodyGunSprite() +DExhumedActor* GrabBodyGunSprite() { - int nSprite = nBodyGunSprite[nCurBodyGunNum]; - auto pSprite = &sprite[nSprite]; - - if (nSprite == -1) + auto pActor = nBodyGunSprite[nCurBodyGunNum]; + spritetype* pSprite; + if (pActor == nullptr) { - nSprite = insertsprite(0, 899); - pSprite = &sprite[nSprite]; - nBodyGunSprite[nCurBodyGunNum] = nSprite; + pActor = insertActor(0, 899); + pSprite = &pActor->s(); + nBodyGunSprite[nCurBodyGunNum] = pActor; pSprite->lotag = -1; pSprite->owner = -1; } else { + auto pSprite = &pActor->s(); int nAnim = pSprite->owner; if (nAnim != -1) { @@ -1364,7 +1364,7 @@ int GrabBodyGunSprite() pSprite->cstat = 0; - return nSprite; + return pActor; } DExhumedActor* GrabBody() diff --git a/source/games/exhumed/src/player.cpp b/source/games/exhumed/src/player.cpp index 47bf9d8a7..31c028d29 100644 --- a/source/games/exhumed/src/player.cpp +++ b/source/games/exhumed/src/player.cpp @@ -505,18 +505,19 @@ void StartDeathSeq(int nPlayer, int nVal) nSector = SectBelow[nSector]; } - int nGunSprite = GrabBodyGunSprite(); - changespritesect(nGunSprite, nSector); + auto pGunActor = GrabBodyGunSprite(); + ChangeActorSect(pGunActor, nSector); + auto pGunSprite = &pGunActor->s(); - sprite[nGunSprite].x = pSprite->x; - sprite[nGunSprite].y = pSprite->y; - sprite[nGunSprite].z = sector[nSector].floorz - 512; + pGunSprite->x = pSprite->x; + pGunSprite->y = pSprite->y; + pGunSprite->z = sector[nSector].floorz - 512; - changespritestat(nGunSprite, nGunLotag[nWeapon] + 900); + ChangeActorStat(pGunActor, nGunLotag[nWeapon] + 900); - sprite[nGunSprite].picnum = nGunPicnum[nWeapon]; + pGunSprite->picnum = nGunPicnum[nWeapon]; - BuildItemAnim(nGunSprite); + BuildItemAnim(pGunActor->GetSpriteIndex()); } } }