diff --git a/source/games/blood/src/aiunicult.cpp b/source/games/blood/src/aiunicult.cpp index 77f25e703..e8074fd63 100644 --- a/source/games/blood/src/aiunicult.cpp +++ b/source/games/blood/src/aiunicult.cpp @@ -2610,7 +2610,7 @@ void genDudePostDeath(DBloodActor* actor, DAMAGE_TYPE damageType, int damage) gKillMgr.AddKill(pSprite); pSprite->type = kThingBloodChunks; - actPostSprite(pSprite->index, kStatThing); + actPostSprite(actor, kStatThing); } //--------------------------------------------------------------------------- diff --git a/source/games/blood/src/nnexts.cpp b/source/games/blood/src/nnexts.cpp index d72730f0e..0e5e22868 100644 --- a/source/games/blood/src/nnexts.cpp +++ b/source/games/blood/src/nnexts.cpp @@ -548,7 +548,7 @@ void nnExtInitModernStuff(bool bSaveLoad) for (int i = 0; i < kMaxXSprites; i++) { auto actor = &bloodActors[i]; - if (!actor->hasX()) continue; + if (actor->s().statnum == kStatFree || !actor->hasX()) continue; XSPRITE* pXSprite = &actor->x(); spritetype* pSprite = &actor->s(); @@ -578,7 +578,7 @@ void nnExtInitModernStuff(bool bSaveLoad) // add in list of physics affected sprites if (pXSprite->physAttr != 0) { - gPhysSpritesList[gPhysSpritesCount++] = &bloodActors[pSprite->index]; // add sprite index + gPhysSpritesList[gPhysSpritesCount++] = actor; // add sprite index getSpriteMassBySize(actor); // create mass cache } @@ -859,10 +859,12 @@ void nnExtInitModernStuff(bool bSaveLoad) for (int i = 0; i < kMaxXSprites; i++) { - if (!spriRangeIsFine(xsprite[i].reference) || xsprite[i].txID != pXSprite->rxID || xsprite[i].reference == pSprite->index) + auto actor = &bloodActors[i]; + if (actor->s().statnum == kStatFree || !actor->hasX() || xsprite[i].txID != pXSprite->rxID || actor == iactor) continue; - XSPRITE* pXSpr = &xsprite[i]; spritetype* pSpr = &sprite[pXSpr->reference]; + XSPRITE* pXSpr = &actor->x(); + spritetype* pSpr = &actor->s(); int index = pXSpr->reference; int cmd = pXSpr->command; switch (pSpr->type) { case kSwitchToggle: // exceptions