From b7ee8137126e86d5c92330a3a8f2ce9ff4ce7305 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Thu, 23 Dec 2021 10:21:17 +0100 Subject: [PATCH] - global search & replace for many uses of PLAYER's pSprite pointer. --- source/games/blood/src/animatesprite.cpp | 8 ++--- source/games/blood/src/hudsprites.cpp | 4 +-- source/games/blood/src/osdcmd.cpp | 4 +-- source/games/blood/src/player.cpp | 42 ++++++++++++------------ source/games/blood/src/prediction.cpp | 16 ++++----- source/games/blood/src/sfx.cpp | 6 ++-- source/games/blood/src/view.cpp | 36 ++++++++++---------- source/games/blood/src/weapon.cpp | 38 ++++++++++----------- 8 files changed, 77 insertions(+), 77 deletions(-) diff --git a/source/games/blood/src/animatesprite.cpp b/source/games/blood/src/animatesprite.cpp index 97e3f8dcd..2f75241d2 100644 --- a/source/games/blood/src/animatesprite.cpp +++ b/source/games/blood/src/animatesprite.cpp @@ -481,14 +481,14 @@ static tspritetype *viewAddEffect(tspritetype* tsprite, int& spritesortcnt, int auto& nVoxel = voxelIndex[nTile]; if (cl_showweapon == 2 && r_voxels && nVoxel != -1) { - pNSprite->ang = (gView->pSprite->ang + 512) & 2047; // always face viewer + pNSprite->ang = (gView->actor->spr.ang + 512) & 2047; // always face viewer pNSprite->cstat |= CSTAT_SPRITE_ALIGNMENT_SLAB; pNSprite->cstat &= ~CSTAT_SPRITE_YFLIP; pNSprite->picnum = nVoxel; if (pPlayer->curWeapon == kWeapLifeLeech) // position lifeleech behind player { - pNSprite->pos.X += MulScale(128, Cos(gView->pSprite->ang), 30); - pNSprite->pos.Y += MulScale(128, Sin(gView->pSprite->ang), 30); + pNSprite->pos.X += MulScale(128, Cos(gView->actor->spr.ang), 30); + pNSprite->pos.Y += MulScale(128, Sin(gView->actor->spr.ang), 30); } if ((pPlayer->curWeapon == kWeapLifeLeech) || (pPlayer->curWeapon == kWeapVoodooDoll)) // make lifeleech/voodoo doll always face viewer like sprite pNSprite->ang = (pNSprite->ang + 512) & 2047; // offset angle 90 degrees @@ -858,7 +858,7 @@ void viewProcessSprites(tspritetype* tsprite, int& spritesortcnt, int32_t cX, in POSTURE *pPosture = &pPlayer->pPosture[pPlayer->lifeMode][pPlayer->posture]; pNTSprite->pos.X += MulScale(pPosture->zOffset, Cos(pTSprite->ang), 28); pNTSprite->pos.Y += MulScale(pPosture->zOffset, Sin(pTSprite->ang), 28); - pNTSprite->pos.Z = pPlayer->pSprite->pos.Z-pPosture->xOffset; + pNTSprite->pos.Z = pPlayer->actor->spr.pos.Z-pPosture->xOffset; } } diff --git a/source/games/blood/src/hudsprites.cpp b/source/games/blood/src/hudsprites.cpp index f9d02a038..91ff34e24 100644 --- a/source/games/blood/src/hudsprites.cpp +++ b/source/games/blood/src/hudsprites.cpp @@ -118,8 +118,8 @@ void hudDraw(PLAYER *gView, sectortype* pSector, double bobx, double boby, doubl } int nShade = pSector->floorshade; int nPalette = 0; - if (gView->pSprite->sector()->hasX()) { - sectortype* pSector = gView->pSprite->sector(); + if (gView->actor->spr.sector()->hasX()) { + sectortype* pSector = gView->actor->spr.sector(); XSECTOR* pXSector = &pSector->xs(); if (pXSector->color) nPalette = pSector->floorpal; diff --git a/source/games/blood/src/osdcmd.cpp b/source/games/blood/src/osdcmd.cpp index 9704bbfad..7f4a5af4e 100644 --- a/source/games/blood/src/osdcmd.cpp +++ b/source/games/blood/src/osdcmd.cpp @@ -36,8 +36,8 @@ void GameInterface::WarpToCoords(int x, int y, int z, int ang, int horz) PLAYER *pPlayer = &gPlayer[myconnectindex]; VIEW* pView = &gPrevView[myconnectindex]; - pPlayer->pSprite->pos.X = pView->x = gView->pSprite->pos.X = x; - pPlayer->pSprite->pos.Y = pView->y = gView->pSprite->pos.Y = y; + pPlayer->actor->spr.pos.X = pView->x = gView->actor->spr.pos.X = x; + pPlayer->actor->spr.pos.Y = pView->y = gView->actor->spr.pos.Y = y; pPlayer->zView = pView->viewz = gView->zView = z; if (ang != INT_MIN) diff --git a/source/games/blood/src/player.cpp b/source/games/blood/src/player.cpp index 2a5f26196..fa9fc0a0f 100644 --- a/source/games/blood/src/player.cpp +++ b/source/games/blood/src/player.cpp @@ -261,7 +261,7 @@ bool powerupActivate(PLAYER *pPlayer, int nPowerUp) else if (isShrinked(pPlayer->actor)) playerDeactivateShrooms(pPlayer); else { playerSizeGrow(pPlayer, 2); - if (powerupCheck(&gPlayer[pPlayer->pSprite->type - kDudePlayer1], kPwUpShadowCloak) > 0) { + if (powerupCheck(&gPlayer[pPlayer->actor->spr.type - kDudePlayer1], kPwUpShadowCloak) > 0) { powerupDeactivate(pPlayer, kPwUpShadowCloak); pPlayer->pwUpTime[kPwUpShadowCloak] = 0; } @@ -577,7 +577,7 @@ void playerSetRace(PLAYER *pPlayer, int nLifeMode) pPlayer->lifeMode = nLifeMode; // By NoOne: don't forget to change clipdist for grow and shrink modes - pPlayer->pSprite->clipdist = pDudeInfo->clipdist; + pPlayer->actor->spr.clipdist = pDudeInfo->clipdist; for (int i = 0; i < 7; i++) pDudeInfo->damageVal[i] = MulScale(Handicap[gSkill], pDudeInfo->startDamage[i], 8); @@ -591,15 +591,15 @@ void playerSetGodMode(PLAYER *pPlayer, bool bGodMode) void playerResetInertia(PLAYER *pPlayer) { POSTURE *pPosture = &pPlayer->pPosture[pPlayer->lifeMode][pPlayer->posture]; - pPlayer->zView = pPlayer->pSprite->pos.Z-pPosture->eyeAboveZ; - pPlayer->zWeapon = pPlayer->pSprite->pos.Z-pPosture->weaponAboveZ; + pPlayer->zView = pPlayer->actor->spr.pos.Z-pPosture->eyeAboveZ; + pPlayer->zWeapon = pPlayer->actor->spr.pos.Z-pPosture->weaponAboveZ; viewBackupView(pPlayer->nPlayer); } void playerCorrectInertia(PLAYER* pPlayer, vec3_t const *oldpos) { - pPlayer->zView += pPlayer->pSprite->pos.Z-oldpos->Z; - pPlayer->zWeapon += pPlayer->pSprite->pos.Z-oldpos->Z; + pPlayer->zView += pPlayer->actor->spr.pos.Z-oldpos->Z; + pPlayer->zWeapon += pPlayer->actor->spr.pos.Z-oldpos->Z; viewCorrectViewOffsets(pPlayer->nPlayer, oldpos); } @@ -1318,7 +1318,7 @@ int ActionScan(PLAYER *pPlayer, HitInfo* out) void UpdatePlayerSpriteAngle(PLAYER *pPlayer) { - pPlayer->pSprite->ang = pPlayer->angle.ang.asbuild(); + pPlayer->actor->spr.ang = pPlayer->angle.ang.asbuild(); } //--------------------------------------------------------------------------- @@ -1387,7 +1387,7 @@ void ProcessInput(PLAYER *pPlayer) else if (seqGetStatus(pPlayer->actor) < 0) { if (pPlayer->pSprite) - pPlayer->pSprite->type = kThingBloodChunks; + pPlayer->actor->spr.type = kThingBloodChunks; actPostSprite(pPlayer->actor, kStatThing); seqSpawn(pPlayer->pDudeInfo->seqStartID+15, pPlayer->actor, -1); playerReset(pPlayer); @@ -1572,12 +1572,12 @@ void ProcessInput(PLAYER *pPlayer) if (pPlayer->handTime <= 0 && pPlayer->hand) { DBloodActor* pactor = pPlayer->actor; - auto spawned = actSpawnDude(pactor, kDudeHand, pPlayer->pSprite->clipdist<<1, 0); + auto spawned = actSpawnDude(pactor, kDudeHand, pPlayer->actor->spr.clipdist<<1, 0); if (spawned) { - spawned->spr.ang = (pPlayer->pSprite->ang + 1024) & 2047; - int x = bcos(pPlayer->pSprite->ang); - int y = bsin(pPlayer->pSprite->ang); + spawned->spr.ang = (pPlayer->actor->spr.ang + 1024) & 2047; + int x = bcos(pPlayer->actor->spr.ang); + int y = bsin(pPlayer->actor->spr.ang); spawned->xvel = pPlayer->actor->xvel + MulScale(0x155555, x, 14); spawned->yvel = pPlayer->actor->yvel + MulScale(0x155555, y, 14); spawned->zvel = pPlayer->actor->zvel; @@ -1682,14 +1682,14 @@ void playerProcess(PLAYER *pPlayer) ProcessInput(pPlayer); int nSpeed = approxDist(actor->xvel, actor->yvel); pPlayer->zViewVel = interpolatedvalue(pPlayer->zViewVel, actor->zvel, 0x7000); - int dz = pPlayer->pSprite->pos.Z-pPosture->eyeAboveZ-pPlayer->zView; + int dz = pPlayer->actor->spr.pos.Z-pPosture->eyeAboveZ-pPlayer->zView; if (dz > 0) pPlayer->zViewVel += MulScale(dz<<8, 0xa000, 16); else pPlayer->zViewVel += MulScale(dz<<8, 0x1800, 16); pPlayer->zView += pPlayer->zViewVel>>8; pPlayer->zWeaponVel = interpolatedvalue(pPlayer->zWeaponVel, actor->zvel, 0x5000); - dz = pPlayer->pSprite->pos.Z-pPosture->weaponAboveZ-pPlayer->zWeapon; + dz = pPlayer->actor->spr.pos.Z-pPosture->weaponAboveZ-pPlayer->zWeapon; if (dz > 0) pPlayer->zWeaponVel += MulScale(dz<<8, 0x8000, 16); else @@ -1778,13 +1778,13 @@ void playerProcess(PLAYER *pPlayer) DBloodActor* playerFireMissile(PLAYER *pPlayer, int a2, int a3, int a4, int a5, int a6) { - return actFireMissile(pPlayer->actor, a2, pPlayer->zWeapon-pPlayer->pSprite->pos.Z, a3, a4, a5, a6); + return actFireMissile(pPlayer->actor, a2, pPlayer->zWeapon-pPlayer->actor->spr.pos.Z, a3, a4, a5, a6); } DBloodActor* playerFireThing(PLAYER *pPlayer, int a2, int a3, int thingType, int a5) { assert(thingType >= kThingBase && thingType < kThingMax); - return actFireThing(pPlayer->actor, a2, pPlayer->zWeapon-pPlayer->pSprite->pos.Z, pPlayer->slope+a3, thingType, a5); + return actFireThing(pPlayer->actor, a2, pPlayer->zWeapon-pPlayer->actor->spr.pos.Z, pPlayer->slope+a3, thingType, a5); } void playerFrag(PLAYER *pKiller, PLAYER *pVictim) @@ -1793,9 +1793,9 @@ void playerFrag(PLAYER *pKiller, PLAYER *pVictim) assert(pVictim != NULL); char buffer[128] = ""; - int nKiller = pKiller->pSprite->type-kDudePlayer1; + int nKiller = pKiller->actor->spr.type-kDudePlayer1; assert(nKiller >= 0 && nKiller < kMaxPlayers); - int nVictim = pVictim->pSprite->type-kDudePlayer1; + int nVictim = pVictim->actor->spr.type-kDudePlayer1; assert(nVictim >= 0 && nVictim < kMaxPlayers); if (nKiller == nVictim) { @@ -1949,7 +1949,7 @@ int playerDamageSprite(DBloodActor* source, PLAYER *pPlayer, DAMAGE_TYPE nDamage case kDamageExplode: GibSprite(pActor, GIBTYPE_7, NULL, NULL); GibSprite(pActor, GIBTYPE_15, NULL, NULL); - pPlayer->pSprite->cstat |= CSTAT_SPRITE_INVISIBLE; + pPlayer->actor->spr.cstat |= CSTAT_SPRITE_INVISIBLE; nDeathSeqID = 17; break; default: @@ -2009,7 +2009,7 @@ int playerDamageSprite(DBloodActor* source, PLAYER *pPlayer, DAMAGE_TYPE nDamage sfxPlay3DSound(pPlayer->actor, 717, 0, 0); GibSprite(pActor, GIBTYPE_7, NULL, NULL); GibSprite(pActor, GIBTYPE_15, NULL, NULL); - pPlayer->pSprite->cstat |= CSTAT_SPRITE_INVISIBLE; + pPlayer->actor->spr.cstat |= CSTAT_SPRITE_INVISIBLE; nDeathSeqID = 2; break; case kDamageBurn: @@ -2099,7 +2099,7 @@ void voodooTarget(PLAYER *pPlayer) { DBloodActor* actor = pPlayer->actor; int v4 = pPlayer->aim.dz; - int dz = pPlayer->zWeapon-pPlayer->pSprite->pos.Z; + int dz = pPlayer->zWeapon-pPlayer->actor->spr.pos.Z; if (UseAmmo(pPlayer, 9, 0) < 8) { pPlayer->voodooTargets = 0; diff --git a/source/games/blood/src/prediction.cpp b/source/games/blood/src/prediction.cpp index 4221ee881..cdd91d7c3 100644 --- a/source/games/blood/src/prediction.cpp +++ b/source/games/blood/src/prediction.cpp @@ -57,11 +57,11 @@ void viewInitializePrediction(void) predict.at70 = gMe->isRunning; predict.at72 = gMe->isUnderwater; predict.at71 = !!(gMe->input.actions & SB_JUMP); - predict.x = gMe->pSprite->x; - predict.y = gMe->pSprite->y; - predict.z = gMe->pSprite->z; - predict.sector = gMe->pSprite->sector; - predict.at73 = gMe->pSprite->flags; + predict.x = gMe->actor->spr.x; + predict.y = gMe->actor->spr.y; + predict.z = gMe->actor->spr.z; + predict.sector = gMe->actor->spr.sector; + predict.at73 = gMe->actor->spr.flags; predict.xvel = gMe->actor->xvel; predict.yvel = gMe->actor->yvel; predict.zvel = gMe->actor->zvel; @@ -90,11 +90,11 @@ void viewInitializePrediction(void) void viewUpdatePrediction(InputPacket *pInput) { predictOld = predict; - auto bakCstat = gMe->pSprite->cstat; - gMe->pSprite->cstat = 0; + auto bakCstat = gMe->actor->spr.cstat; + gMe->actor->spr.cstat = 0; fakePlayerProcess(gMe, pInput); fakeActProcessSprites(); - gMe->pSprite->cstat = bakCstat; + gMe->actor->spr.cstat = bakCstat; //predictFifo[gPredictTail&255] = predict; //gPredictTail++; } diff --git a/source/games/blood/src/sfx.cpp b/source/games/blood/src/sfx.cpp index 2f46d1e11..556e9ce21 100644 --- a/source/games/blood/src/sfx.cpp +++ b/source/games/blood/src/sfx.cpp @@ -75,7 +75,7 @@ void BloodSoundEngine::CalcPosVel(int type, const void* source, const float pt[3 { FVector3 camera; - if (gMe && gMe->pSprite) camera = GetSoundPos(&gMe->pSprite->pos); + if (gMe && gMe->pSprite) camera = GetSoundPos(&gMe->actor->spr.pos); else camera = { 0, 0, 0 }; // don't crash if there is no player. if (vel) vel->Zero(); @@ -113,9 +113,9 @@ void GameInterface::UpdateSounds() if (gMe->pSprite) { - listener.angle = -gMe->pSprite->ang * float(BAngRadian); // Build uses a period of 2048. + listener.angle = -gMe->actor->spr.ang * float(BAngRadian); // Build uses a period of 2048. listener.velocity.Zero(); - listener.position = GetSoundPos(&gMe->pSprite->pos); + listener.position = GetSoundPos(&gMe->actor->spr.pos); listener.valid = true; } else diff --git a/source/games/blood/src/view.cpp b/source/games/blood/src/view.cpp index e7a8d30fb..e61d05d6b 100644 --- a/source/games/blood/src/view.cpp +++ b/source/games/blood/src/view.cpp @@ -61,8 +61,8 @@ void viewBackupView(int nPlayer) PLAYER *pPlayer = &gPlayer[nPlayer]; VIEW *pView = &gPrevView[nPlayer]; pView->angle = pPlayer->angle.ang; - pView->x = pPlayer->pSprite->pos.X; - pView->y = pPlayer->pSprite->pos.Y; + pView->x = pPlayer->actor->spr.pos.X; + pView->y = pPlayer->actor->spr.pos.Y; pView->viewz = pPlayer->zView; pView->weaponZ = pPlayer->zWeapon-pPlayer->zView-0xc00; pView->horiz = pPlayer->horizon.horiz; @@ -82,9 +82,9 @@ void viewCorrectViewOffsets(int nPlayer, vec3_t const *oldpos) { PLAYER *pPlayer = &gPlayer[nPlayer]; VIEW *pView = &gPrevView[nPlayer]; - pView->x += pPlayer->pSprite->pos.X-oldpos->X; - pView->y += pPlayer->pSprite->pos.Y-oldpos->Y; - pView->viewz += pPlayer->pSprite->pos.Z-oldpos->Z; + pView->x += pPlayer->actor->spr.pos.X-oldpos->X; + pView->y += pPlayer->actor->spr.pos.Y-oldpos->Y; + pView->viewz += pPlayer->actor->spr.pos.Z-oldpos->Z; } void viewDrawText(FFont* pFont, const char *pString, int x, int y, int nShade, int nPalette, int position, bool shadow) @@ -402,7 +402,7 @@ void SetupView(int &cX, int& cY, int& cZ, binangle& cA, fixedhoriz& cH, sectorty { int bobWidth, bobHeight; - pSector = gView->pSprite->sector(); + pSector = gView->actor->spr.sector(); #if 0 if (numplayers > 1 && gView == gMe && gPrediction && gMe->pXSprite->health > 0) { @@ -433,8 +433,8 @@ void SetupView(int &cX, int& cY, int& cZ, binangle& cA, fixedhoriz& cH, sectorty #endif { VIEW* pView = &gPrevView[gViewIndex]; - cX = interpolatedvalue(pView->x, gView->pSprite->pos.X, gInterpolate); - cY = interpolatedvalue(pView->y, gView->pSprite->pos.Y, gInterpolate); + cX = interpolatedvalue(pView->x, gView->actor->spr.pos.X, gInterpolate); + cY = interpolatedvalue(pView->y, gView->actor->spr.pos.Y, gInterpolate); cZ = interpolatedvalue(pView->viewz, gView->zView, gInterpolate); zDelta = interpolatedvaluef(pView->weaponZ, gView->zWeapon - gView->zView - (12 << 8), gInterpolate); bobWidth = interpolatedvalue(pView->bobWidth, gView->bobWidth, gInterpolate); @@ -502,11 +502,11 @@ void renderCrystalBall() } //renderSetTarget(4079, 128, 128); renderSetAspect(65536, 78643); - int vd8 = pOther->pSprite->x; - int vd4 = pOther->pSprite->y; + int vd8 = pOther->actor->spr.x; + int vd4 = pOther->actor->spr.y; int vd0 = pOther->zView; - int vcc = pOther->pSprite-> sectnum; - int v50 = pOther->pSprite->ang; + int vcc = pOther->actor->spr. sectnum; + int v50 = pOther->actor->spr.ang; int v54 = 0; if (pOther->flickerEffect) { @@ -669,10 +669,10 @@ void viewDrawScreen(bool sceneonly) if (testnewrenderer) { fixedhoriz deliriumPitchI = q16horiz(interpolatedvalue(IntToFixed(deliriumPitchO), IntToFixed(deliriumPitch), gInterpolate)); - auto bakCstat = gView->pSprite->cstat; - gView->pSprite->cstat |= (gViewPos == 0) ? CSTAT_SPRITE_INVISIBLE : CSTAT_SPRITE_TRANSLUCENT | CSTAT_SPRITE_TRANS_FLIP; + auto bakCstat = gView->actor->spr.cstat; + gView->actor->spr.cstat |= (gViewPos == 0) ? CSTAT_SPRITE_INVISIBLE : CSTAT_SPRITE_TRANSLUCENT | CSTAT_SPRITE_TRANS_FLIP; render_drawrooms(gView->actor, { cX, cY, cZ }, sectnum(pSector), cA, cH + deliriumPitchI, rotscrnang, gInterpolate); - gView->pSprite->cstat = bakCstat; + gView->actor->spr.cstat = bakCstat; } else { @@ -681,7 +681,7 @@ void viewDrawScreen(bool sceneonly) } bDeliriumOld = bDelirium && gDeliriumBlur; - int nClipDist = gView->pSprite->clipdist << 2; + int nClipDist = gView->actor->spr.clipdist << 2; int vec, vf4; Collision c1, c2; GetZRange(gView->actor, &vf4, &c1, &vec, &c2, nClipDist, 0); @@ -715,7 +715,7 @@ void viewDrawScreen(bool sceneonly) } UpdateStatusBar(); int zn = ((gView->zWeapon-gView->zView-(12<<8))>>7)+220; - PLAYER *pPSprite = &gPlayer[gMe->pSprite->type-kDudePlayer1]; + PLAYER *pPSprite = &gPlayer[gMe->actor->spr.type-kDudePlayer1]; if (IsPlayerSprite(gMe->pSprite) && pPSprite->hand == 1) { gChoke.animateChoke(160, zn, (int)gInterpolate); @@ -749,7 +749,7 @@ FString GameInterface::GetCoordString() FString out; out.Format("pos= %d, %d, %d - angle = %2.3f", - gMe->pSprite->pos.X, gMe->pSprite->pos.Y, gMe->pSprite->pos.Z, gMe->pSprite->ang * BAngToDegree); + gMe->actor->spr.pos.X, gMe->actor->spr.pos.Y, gMe->actor->spr.pos.Z, gMe->actor->spr.ang * BAngToDegree); return out; } diff --git a/source/games/blood/src/weapon.cpp b/source/games/blood/src/weapon.cpp index 6276c96c6..a829ec439 100644 --- a/source/games/blood/src/weapon.cpp +++ b/source/games/blood/src/weapon.cpp @@ -211,7 +211,7 @@ static bool checkAmmo2(const PLAYER *pPlayer, int ammotype, int amount) void SpawnBulletEject(PLAYER *pPlayer, int a2, int a3) { POSTURE *pPosture = &pPlayer->pPosture[pPlayer->lifeMode][pPlayer->posture]; - pPlayer->zView = pPlayer->pSprite->pos.Z-pPosture->eyeAboveZ; + pPlayer->zView = pPlayer->actor->spr.pos.Z-pPosture->eyeAboveZ; int dz = pPlayer->zWeapon-(pPlayer->zWeapon-pPlayer->zView)/2; fxSpawnEjectingBrass(pPlayer->actor, dz, a2, a3); } @@ -219,7 +219,7 @@ void SpawnBulletEject(PLAYER *pPlayer, int a2, int a3) void SpawnShellEject(PLAYER *pPlayer, int a2, int a3) { POSTURE *pPosture = &pPlayer->pPosture[pPlayer->lifeMode][pPlayer->posture]; - pPlayer->zView = pPlayer->pSprite->pos.Z-pPosture->eyeAboveZ; + pPlayer->zView = pPlayer->actor->spr.pos.Z-pPosture->eyeAboveZ; int t = pPlayer->zWeapon - pPlayer->zView; int dz = pPlayer->zWeapon-t+(t>>2); fxSpawnEjectingShell(pPlayer->actor, dz, a2, a3); @@ -1065,7 +1065,7 @@ void FirePitchfork(int, PLAYER *pPlayer) int r2 = Random2(2000); int r3 = Random2(2000); for (int i = 0; i < 4; i++) - actFireVector(actor, (2*i-3)*40, pPlayer->zWeapon-pPlayer->pSprite->pos.Z, aim->dx+r1, aim->dy+r2, aim->dz+r3, kVectorTine); + actFireVector(actor, (2*i-3)*40, pPlayer->zWeapon-pPlayer->actor->spr.pos.Z, aim->dx+r1, aim->dy+r2, aim->dz+r3, kVectorTine); } void FireSpray(int, PLAYER *pPlayer) @@ -1191,7 +1191,7 @@ void ThrowRemote(int, PLAYER *pPlayer) auto spawned = playerFireThing(pPlayer, 0, -9460, kThingArmedRemoteBomb, nSpeed); if (spawned) { - spawned->xspr.rxID = 90 + (pPlayer->pSprite->type - kDudePlayer1); + spawned->xspr.rxID = 90 + (pPlayer->actor->spr.type - kDudePlayer1); UseAmmo(pPlayer, 11, 1); pPlayer->throwPower = 0; } @@ -1202,14 +1202,14 @@ void DropRemote(int, PLAYER *pPlayer) auto spawned = playerFireThing(pPlayer, 0, 0, kThingArmedRemoteBomb, 0); if (spawned) { - spawned->xspr.rxID = 90 + (pPlayer->pSprite->type - kDudePlayer1); + spawned->xspr.rxID = 90 + (pPlayer->actor->spr.type - kDudePlayer1); UseAmmo(pPlayer, 11, 1); } } void FireRemote(int, PLAYER *pPlayer) { - evSendGame(90+(pPlayer->pSprite->type-kDudePlayer1), kCmdOn); + evSendGame(90+(pPlayer->actor->spr.type-kDudePlayer1), kCmdOn); } enum { kMaxShotgunBarrels = 4 }; @@ -1249,7 +1249,7 @@ void FireShotgun(int nTrigger, PLAYER *pPlayer) r3 = Random3(1500); nType = kVectorShellAP; } - actFireVector(actor, 0, pPlayer->zWeapon-pPlayer->pSprite->pos.Z, pPlayer->aim.dx+r1, pPlayer->aim.dy+r2, pPlayer->aim.dz+r3, nType); + actFireVector(actor, 0, pPlayer->zWeapon-pPlayer->actor->spr.pos.Z, pPlayer->aim.dx+r1, pPlayer->aim.dy+r2, pPlayer->aim.dz+r3, nType); } UseAmmo(pPlayer, pPlayer->weaponAmmo, nTrigger); pPlayer->flashEffect = 1; @@ -1273,7 +1273,7 @@ void FireTommy(int nTrigger, PLAYER *pPlayer) int r1 = Random3(400); int r2 = Random3(1200); int r3 = Random3(1200); - actFireVector(actor, 0, pPlayer->zWeapon-pPlayer->pSprite->pos.Z, aim->dx+r3, aim->dy+r2, aim->dz+r1, kVectorTommyRegular); + actFireVector(actor, 0, pPlayer->zWeapon-pPlayer->actor->spr.pos.Z, aim->dx+r3, aim->dy+r2, aim->dz+r1, kVectorTommyRegular); SpawnBulletEject(pPlayer, -15, -45); pPlayer->visibility = 20; break; @@ -1283,12 +1283,12 @@ void FireTommy(int nTrigger, PLAYER *pPlayer) int r1 = Random3(400); int r2 = Random3(1200); int r3 = Random3(1200); - actFireVector(actor, -120, pPlayer->zWeapon-pPlayer->pSprite->pos.Z, aim->dx+r3, aim->dy+r2, aim->dz+r1, kVectorTommyRegular); + actFireVector(actor, -120, pPlayer->zWeapon-pPlayer->actor->spr.pos.Z, aim->dx+r3, aim->dy+r2, aim->dz+r1, kVectorTommyRegular); SpawnBulletEject(pPlayer, -140, -45); r1 = Random3(400); r2 = Random3(1200); r3 = Random3(1200); - actFireVector(actor, 120, pPlayer->zWeapon-pPlayer->pSprite->pos.Z, aim->dx+r3, aim->dy+r2, aim->dz+r1, kVectorTommyRegular); + actFireVector(actor, 120, pPlayer->zWeapon-pPlayer->actor->spr.pos.Z, aim->dx+r3, aim->dy+r2, aim->dz+r1, kVectorTommyRegular); SpawnBulletEject(pPlayer, 140, 45); pPlayer->visibility = 30; break; @@ -1313,7 +1313,7 @@ void FireSpread(int nTrigger, PLAYER *pPlayer) r1 = Random3(300); r2 = Random3(600); r3 = Random3(600); - actFireVector(actor, 0, pPlayer->zWeapon-pPlayer->pSprite->pos.Z, dx+r3, dy+r2, aim->dz+r1, kVectorTommyAP); + actFireVector(actor, 0, pPlayer->zWeapon-pPlayer->actor->spr.pos.Z, dx+r3, dy+r2, aim->dz+r1, kVectorTommyAP); r1 = Random2(90); r2 = Random2(30); SpawnBulletEject(pPlayer, r2, r1); @@ -1335,14 +1335,14 @@ void AltFireSpread(int nTrigger, PLAYER *pPlayer) r1 = Random3(300); r2 = Random3(600); r3 = Random3(600); - actFireVector(actor, -120, pPlayer->zWeapon-pPlayer->pSprite->pos.Z, dx+r3, dy+r2, aim->dz+r1, kVectorTommyAP); + actFireVector(actor, -120, pPlayer->zWeapon-pPlayer->actor->spr.pos.Z, dx+r3, dy+r2, aim->dz+r1, kVectorTommyAP); r1 = Random2(45); r2 = Random2(120); SpawnBulletEject(pPlayer, r2, r1); r1 = Random3(300); r2 = Random3(600); r3 = Random3(600); - actFireVector(actor, 120, pPlayer->zWeapon-pPlayer->pSprite->pos.Z, dx+r3, dy+r2, aim->dz+r1, kVectorTommyAP); + actFireVector(actor, 120, pPlayer->zWeapon-pPlayer->actor->spr.pos.Z, dx+r3, dy+r2, aim->dz+r1, kVectorTommyAP); r1 = Random2(-45); r2 = Random2(-120); SpawnBulletEject(pPlayer, r2, r1); @@ -1367,14 +1367,14 @@ void AltFireSpread2(int nTrigger, PLAYER *pPlayer) r1 = Random3(300); r2 = Random3(600); r3 = Random3(600); - actFireVector(actor, -120, pPlayer->zWeapon-pPlayer->pSprite->pos.Z, dx+r3, dy+r2, aim->dz+r1, kVectorTommyAP); + actFireVector(actor, -120, pPlayer->zWeapon-pPlayer->actor->spr.pos.Z, dx+r3, dy+r2, aim->dz+r1, kVectorTommyAP); r1 = Random2(45); r2 = Random2(120); SpawnBulletEject(pPlayer, r2, r1); r1 = Random3(300); r2 = Random3(600); r3 = Random3(600); - actFireVector(actor, 120, pPlayer->zWeapon-pPlayer->pSprite->pos.Z, dx+r3, dy+r2, aim->dz+r1, kVectorTommyAP); + actFireVector(actor, 120, pPlayer->zWeapon-pPlayer->actor->spr.pos.Z, dx+r3, dy+r2, aim->dz+r1, kVectorTommyAP); r1 = Random2(-45); r2 = Random2(-120); SpawnBulletEject(pPlayer, r2, r1); @@ -1388,7 +1388,7 @@ void AltFireSpread2(int nTrigger, PLAYER *pPlayer) r1 = Random3(300); r2 = Random3(600); r3 = Random3(600); - actFireVector(actor, 0, pPlayer->zWeapon-pPlayer->pSprite->pos.Z, dx+r3, dy+r2, aim->dz+r1, kVectorTommyAP); + actFireVector(actor, 0, pPlayer->zWeapon-pPlayer->actor->spr.pos.Z, dx+r3, dy+r2, aim->dz+r1, kVectorTommyAP); r1 = Random2(90); r2 = Random2(30); SpawnBulletEject(pPlayer, r2, r1); @@ -1521,7 +1521,7 @@ void AltFireVoodoo(int nTrigger, PLAYER *pPlayer) spritetype* pTarget = &targetactor->s(); if (!gGameOptions.bFriendlyFire && IsTargetTeammate(pPlayer, pTarget)) continue; - int nDist = approxDist(pTarget->pos.X - pPlayer->pSprite->pos.X, pTarget->pos.Y - pPlayer->pSprite->pos.Y); + int nDist = approxDist(pTarget->pos.X - pPlayer->actor->spr.pos.X, pTarget->pos.Y - pPlayer->actor->spr.pos.Y); if (nDist > 0 && nDist < 51200) { int vc = pPlayer->ammoCount[9] >> 3; @@ -1560,7 +1560,7 @@ void AltFireVoodoo(int nTrigger, PLAYER *pPlayer) continue; if (v4 > 0) v4--; - int nDist = approxDist(pTarget->pos.X - pPlayer->pSprite->pos.X, pTarget->pos.Y - pPlayer->pSprite->pos.Y); + int nDist = approxDist(pTarget->pos.X - pPlayer->actor->spr.pos.X, pTarget->pos.Y - pPlayer->actor->spr.pos.Y); if (nDist > 0 && nDist < 51200) { int vc = pPlayer->ammoCount[9] >> 3; @@ -1764,7 +1764,7 @@ void FireBeast(int , PLAYER * pPlayer) int r1 = Random2(2000); int r2 = Random2(2000); int r3 = Random2(2000); - actFireVector(actor, 0, pPlayer->zWeapon-pPlayer->pSprite->pos.Z, pPlayer->aim.dx+r1, pPlayer->aim.dy+r2, pPlayer->aim.dz+r3, kVectorBeastSlash); + actFireVector(actor, 0, pPlayer->zWeapon-pPlayer->actor->spr.pos.Z, pPlayer->aim.dx+r1, pPlayer->aim.dy+r2, pPlayer->aim.dz+r3, kVectorBeastSlash); } uint8_t gWeaponUpgrade[][13] = {