diff --git a/source/games/blood/src/actor.cpp b/source/games/blood/src/actor.cpp index 81ab22b9f..a2eb98c56 100644 --- a/source/games/blood/src/actor.cpp +++ b/source/games/blood/src/actor.cpp @@ -3690,7 +3690,7 @@ static int actDamageDude(DBloodActor* source, DBloodActor* actor, int damage, DA if (!nDamageFactor) return 0; else if (nDamageFactor != 256) damage = MulScale(damage, nDamageFactor, 8); - if (!IsPlayerSprite(pSprite)) + if (!actor->IsPlayerActor()) { if (pXSprite->health <= 0) return 0; damage = aiDamageSprite(source, actor, damageType, damage); @@ -4259,7 +4259,7 @@ static void checkCeilHit(DBloodActor* actor) #ifdef NOONE_EXTENSIONS // add size shroom abilities - if ((actor->IsPlayerActor() && isShrinked(pSprite)) || (IsPlayerSprite(pSprite2) && isGrown(pSprite2))) { + if ((actor->IsPlayerActor() && isShrinked(pSprite)) || (actor2->IsPlayerActor() && isGrown(pSprite2))) { int mass1 = getDudeInfo(pSprite2->type)->mass; int mass2 = getDudeInfo(pSprite->type)->mass; @@ -5088,7 +5088,7 @@ void MoveDude(DBloodActor* actor) } #ifdef NOONE_EXTENSIONS - if (IsDudeSprite(pSprite) && pXSprite->health > 0 && aiInPatrolState(nAiStateType)) + if (actor->IsDudeActor() && pXSprite->health > 0 && aiInPatrolState(nAiStateType)) aiPatrolState(pSprite, kAiStatePatrolMoveL); // continue patrol when going from water #endif } @@ -5191,7 +5191,7 @@ void MoveDude(DBloodActor* actor) } // continue patrol when fall into water - if (IsDudeSprite(pSprite) && pXSprite->health > 0 && aiInPatrolState(nAiStateType)) + if (actor->IsDudeActor() && pXSprite->health > 0 && aiInPatrolState(nAiStateType)) aiPatrolState(pSprite, kAiStatePatrolMoveW); } diff --git a/source/games/blood/src/aiunicult.cpp b/source/games/blood/src/aiunicult.cpp index 725f87802..0452e3e1c 100644 --- a/source/games/blood/src/aiunicult.cpp +++ b/source/games/blood/src/aiunicult.cpp @@ -267,7 +267,7 @@ void genDudeAttack1(int, DBloodActor* actor) spritetype* pSpawned = &spawned->s(); pSpawned->owner = pSprite->index; - if (xspriRangeIsFine(pSpawned->extra)) + if (spawned->hasX()) { spawned->SetTarget(actor->GetTarget()); if (spawned->GetTarget() != nullptr) diff --git a/source/games/blood/src/callback.cpp b/source/games/blood/src/callback.cpp index 93cc556c9..7cbacbab0 100644 --- a/source/games/blood/src/callback.cpp +++ b/source/games/blood/src/callback.cpp @@ -251,7 +251,8 @@ void Respawn(DBloodActor* actor, int) // 9 pXSprite->respawnPending = 0; pXSprite->burnTime = 0; pXSprite->isTriggered = 0; - if (IsDudeSprite(pSprite)) { + if (actor->IsDudeActor()) + { int nType = pSprite->type-kDudeBase; pSprite->x = actor->basePoint().x; pSprite->y = actor->basePoint().y; diff --git a/source/games/blood/src/nnexts.cpp b/source/games/blood/src/nnexts.cpp index 8ce091148..b30c7971f 100644 --- a/source/games/blood/src/nnexts.cpp +++ b/source/games/blood/src/nnexts.cpp @@ -448,7 +448,7 @@ bool nnExtEraseModernStuff(DBloodActor* actor) //--------------------------------------------------------------------------- // -// todo later. This depends on condSerialize. + // //--------------------------------------------------------------------------- @@ -2970,12 +2970,11 @@ void usePropertiesChanger(DBloodActor* sourceactor, int objType, int objIndex, D } // search for dudes in this sector and change their underwater status - int nSprite; - SectIterator it(objIndex); - while ((nSprite = it.NextIndex()) >= 0) + BloodSectIterator it(objIndex); + while (auto iactor = it.Next()) { - spritetype* pSpr = &sprite[nSprite]; - if (pSpr->statnum != kStatDude || !IsDudeSprite(pSpr) || !xspriRangeIsFine(pSpr->extra)) + spritetype* pSpr = &iactor->s(); + if (pSpr->statnum != kStatDude || !iactor->IsDudeActor() || ! iactor->hasX()) continue; PLAYER* pPlayer = getPlayerById(pSpr->type); @@ -4445,7 +4444,7 @@ bool condCheckSprite(XSPRITE* pXCond, int cmpOp, bool PUSH) { if ((pPlayer = getPlayerById(pSpr->type)) != NULL) var = HitScan(pSpr, pPlayer->zWeapon, pPlayer->aim.dx, pPlayer->aim.dy, pPlayer->aim.dz, arg1, arg3 << 1); else if (IsDudeSprite(pSpr)) - var = HitScan(pSpr, pSpr->z, bcos(pSpr->ang), bsin(pSpr->ang), (!xspriRangeIsFine(pSpr->extra)) ? 0 : spractor->dudeSlope, arg1, arg3 << 1); + var = HitScan(pSpr, pSpr->z, bcos(pSpr->ang), bsin(pSpr->ang), (!spractor->hasX()) ? 0 : spractor->dudeSlope, arg1, arg3 << 1); else if ((var2 & CSTAT_SPRITE_ALIGNMENT_MASK) == CSTAT_SPRITE_ALIGNMENT_FLOOR) { var3 = (var2 & 0x0008) ? 0x10000 << 1 : -(0x10000 << 1); @@ -5476,7 +5475,7 @@ bool modernTypeOperateSprite(DBloodActor* actor, EVENT event) } - if (pSprite->statnum == kStatDude && IsDudeSprite(pSprite)) + if (pSprite->statnum == kStatDude && actor->IsDudeActor()) { switch (event.cmd) {