diff --git a/source/games/blood/src/callback.cpp b/source/games/blood/src/callback.cpp index cf2584779..6afafb81c 100644 --- a/source/games/blood/src/callback.cpp +++ b/source/games/blood/src/callback.cpp @@ -368,7 +368,7 @@ void CounterCheck(DBloodActor*, int nSector) // 12 } if (nCount < nReq) { - evPostSector(nSector, 5, kCallbackCounterCheck); + evPostSector(pSector, 5, kCallbackCounterCheck); return; } else { //pXSector->waitTimeA = 0; //do not reset necessary objects counter to zero diff --git a/source/games/blood/src/eventq.cpp b/source/games/blood/src/eventq.cpp index e4548eaeb..99f11a7ec 100644 --- a/source/games/blood/src/eventq.cpp +++ b/source/games/blood/src/eventq.cpp @@ -527,14 +527,14 @@ void evPostActor(DBloodActor* actor, unsigned int nDelta, CALLBACK_ID callback) evPost_(actor, 0, SS_SPRITE, nDelta, callback); } -void evPostSector(int index, unsigned int nDelta, COMMAND_ID command) +void evPostSector(sectortype* sect, unsigned int nDelta, COMMAND_ID command) { - evPost_(nullptr, index, SS_SECTOR, nDelta, command); + evPost_(nullptr, sectnum(sect), SS_SECTOR, nDelta, command); } -void evPostSector(int index, unsigned int nDelta, CALLBACK_ID callback) +void evPostSector(sectortype* sect, unsigned int nDelta, CALLBACK_ID callback) { - evPost_(nullptr, index, SS_SECTOR, nDelta, callback); + evPost_(nullptr, sectnum(sect), SS_SECTOR, nDelta, callback); } void evPostWall(int index, unsigned int nDelta, COMMAND_ID command) diff --git a/source/games/blood/src/eventq.h b/source/games/blood/src/eventq.h index b17e305ce..e18170122 100644 --- a/source/games/blood/src/eventq.h +++ b/source/games/blood/src/eventq.h @@ -204,8 +204,10 @@ void evInit(void); void evPostActor(DBloodActor*, unsigned int nDelta, COMMAND_ID command); void evPostActor(DBloodActor*, unsigned int nDelta, CALLBACK_ID callback); -void evPostSector(int index, unsigned int nDelta, COMMAND_ID command); -void evPostSector(int index, unsigned int nDelta, CALLBACK_ID callback); +void evPostSector(sectortype* index, unsigned int nDelta, COMMAND_ID command); +void evPostSector(sectortype* index, unsigned int nDelta, CALLBACK_ID callback); + +void evPostWall(int index, unsigned int nDelta, COMMAND_ID command); void evProcess(unsigned int nTime); void evKillActor(DBloodActor*); diff --git a/source/games/blood/src/nnexts.cpp b/source/games/blood/src/nnexts.cpp index 0b2fd16b5..45d706219 100644 --- a/source/games/blood/src/nnexts.cpp +++ b/source/games/blood/src/nnexts.cpp @@ -5360,7 +5360,7 @@ void sectorContinueMotion(int nSector, EVENT event) case kCmdOff: if (pXSector->busy == 0) { - if (pXSector->reTriggerB && waitTimeB) evPostSector(nSector, (waitTimeB * 120) / 10, kCmdOff); + if (pXSector->reTriggerB && waitTimeB) evPostSector(pSector, (waitTimeB * 120) / 10, kCmdOff); return; } pXSector->state = 1; @@ -5370,7 +5370,7 @@ void sectorContinueMotion(int nSector, EVENT event) case kCmdOn: if (pXSector->busy == 65536) { - if (pXSector->reTriggerA && waitTimeA) evPostSector(nSector, (waitTimeA * 120) / 10, kCmdOn); + if (pXSector->reTriggerA && waitTimeA) evPostSector(pSector, (waitTimeA * 120) / 10, kCmdOn); return; } pXSector->state = 0; @@ -5448,7 +5448,7 @@ bool modernTypeOperateSector(int nSector, sectortype* pSector, XSECTOR* pXSector case kSectorCounter: if (pXSector->locked != 1) break; SetSectorState(nSector, pXSector, 0); - evPostSector(nSector, 0, kCallbackCounterCheck); + evPostSector(pSector, 0, kCallbackCounterCheck); break; } return true; diff --git a/source/games/blood/src/triggers.cpp b/source/games/blood/src/triggers.cpp index 050e0a273..6e3e3504c 100644 --- a/source/games/blood/src/triggers.cpp +++ b/source/games/blood/src/triggers.cpp @@ -97,6 +97,7 @@ bool SetWallState(walltype* pWall, int nState) bool SetSectorState(int nSector, XSECTOR *pXSector, int nState) { + auto pSector = §or[nSector]; if ((pXSector->busy&0xffff) == 0 && pXSector->state == nState) return 0; pXSector->busy = IntToFixed(nState); @@ -112,7 +113,7 @@ bool SetSectorState(int nSector, XSECTOR *pXSector, int nState) pXSector->stopOff = 0; } else if (pXSector->reTriggerA) - evPostSector(nSector, (pXSector->waitTimeA * 120) / 10, kCmdOff); + evPostSector(pSector, (pXSector->waitTimeA * 120) / 10, kCmdOff); } else { @@ -124,7 +125,7 @@ bool SetSectorState(int nSector, XSECTOR *pXSector, int nState) pXSector->stopOff = 0; } else if (pXSector->reTriggerB) - evPostSector(nSector, (pXSector->waitTimeB * 120) / 10, kCmdOn); + evPostSector(pSector, (pXSector->waitTimeB * 120) / 10, kCmdOn); } return 1; } @@ -1349,7 +1350,7 @@ int PathBusy(unsigned int nSector, unsigned int a2) pXSector->busy = a2; if ((a2&0xffff) == 0) { - evPostSector(nSector, (120*pXSprite2->waitTime)/10, kCmdOn); + evPostSector(pSector, (120*pXSprite2->waitTime)/10, kCmdOn); pXSector->state = 0; pXSector->busy = 0; if (pXSprite1->data4) @@ -1616,6 +1617,7 @@ void OperateSector(unsigned int nSector, XSECTOR *pXSector, EVENT event) void InitPath(unsigned int nSector, XSECTOR *pXSector) { + sectortype* pSector = §or[nSector]; DBloodActor* actor = nullptr; spritetype *pSprite = nullptr; XSPRITE *pXSprite; @@ -1643,7 +1645,7 @@ void InitPath(unsigned int nSector, XSECTOR *pXSector) pXSector->basePath = pXSector->marker0 = actor; if (pXSector->state) - evPostSector(nSector, 0, kCmdOn); + evPostSector(pSector, 0, kCmdOn); } void LinkSector(int nSector, XSECTOR *pXSector, EVENT event) @@ -2041,7 +2043,7 @@ void trInit(void) else #endif pXSector->triggerOnce = 1; - evPostSector(i, 0, kCallbackCounterCheck); + evPostSector(pSector, 0, kCallbackCounterCheck); break; case kSectorZMotion: case kSectorZMotionSprite: