- global search & replace for many uses of PLAYER's pSprite pointer.

This commit is contained in:
Christoph Oelckers 2021-12-23 10:21:17 +01:00
parent 8dac94326a
commit b7ee813712
8 changed files with 77 additions and 77 deletions

View file

@ -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;
}
}

View file

@ -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;

View file

@ -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)

View file

@ -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;

View file

@ -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++;
}

View file

@ -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

View file

@ -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;
}

View file

@ -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] = {