mirror of
https://github.com/ZDoom/Raze.git
synced 2025-03-13 20:42:11 +00:00
- Blood: Wrap access to player's actor pointer.
This commit is contained in:
parent
719cc75fd2
commit
2755b17fd5
27 changed files with 340 additions and 335 deletions
|
@ -3676,7 +3676,7 @@ static int actDamageThing(DBloodActor* source, DBloodActor* actor, int damage, D
|
|||
case kThingZombieHead:
|
||||
if (damageType == 3 && pSourcePlayer && PlayClock > pSourcePlayer->laughCount && Chance(0x4000))
|
||||
{
|
||||
sfxPlay3DSound(pSourcePlayer->actor, gPlayerGibThingComments[Random(10)], 0, 2);
|
||||
sfxPlay3DSound(pSourcePlayer->GetActor(), gPlayerGibThingComments[Random(10)], 0, 2);
|
||||
pSourcePlayer->laughCount = PlayClock + 3600;
|
||||
}
|
||||
break;
|
||||
|
@ -5803,7 +5803,7 @@ static void actCheckExplosion()
|
|||
|
||||
for (int p = connecthead; p >= 0; p = connectpoint2[p])
|
||||
{
|
||||
auto dv = apos - gPlayer[p].actor->spr.pos;
|
||||
auto dv = apos - gPlayer[p].GetActor()->spr.pos;
|
||||
int nDist = int(dv.LengthSquared() + 0x40000);
|
||||
|
||||
int t = DivScale(actor->xspr.data2, nDist, 16);
|
||||
|
@ -6005,7 +6005,7 @@ static void actCheckDudes()
|
|||
}
|
||||
else if (gGameOptions.nGameType == 0)
|
||||
{
|
||||
if (pPlayer->actor->xspr.health > 0 && pPlayer->restTime >= 1200 && Chance(0x200))
|
||||
if (pPlayer->GetActor()->xspr.health > 0 && pPlayer->restTime >= 1200 && Chance(0x200))
|
||||
{
|
||||
pPlayer->restTime = -1;
|
||||
sfxPlay3DSound(actor, 3100 + Random(11), 0, 2);
|
||||
|
|
|
@ -1492,11 +1492,11 @@ void aiThinkTarget(DBloodActor* actor)
|
|||
for (int p = connecthead; p >= 0; p = connectpoint2[p])
|
||||
{
|
||||
PLAYER* pPlayer = &gPlayer[p];
|
||||
if (actor->GetOwner() == pPlayer->actor || pPlayer->actor->xspr.health == 0 || powerupCheck(pPlayer, kPwUpShadowCloak) > 0)
|
||||
if (actor->GetOwner() == pPlayer->GetActor() || pPlayer->GetActor()->xspr.health == 0 || powerupCheck(pPlayer, kPwUpShadowCloak) > 0)
|
||||
continue;
|
||||
auto ppos = pPlayer->actor->spr.pos;
|
||||
auto ppos = pPlayer->GetActor()->spr.pos;
|
||||
auto dvec = ppos.XY() - actor->spr.pos.XY();
|
||||
auto pSector = pPlayer->actor->sector();
|
||||
auto pSector = pPlayer->GetActor()->sector();
|
||||
|
||||
double nDist = dvec.Length();
|
||||
if (nDist > pDudeInfo->SeeDist() && nDist > pDudeInfo->HearDist())
|
||||
|
@ -1508,7 +1508,7 @@ void aiThinkTarget(DBloodActor* actor)
|
|||
DAngle nDeltaAngle = absangle(actor->spr.Angles.Yaw, dvec.Angle());
|
||||
if (nDist < pDudeInfo->SeeDist() && nDeltaAngle <= pDudeInfo->Periphery())
|
||||
{
|
||||
aiSetTarget(actor, pPlayer->actor);
|
||||
aiSetTarget(actor, pPlayer->GetActor());
|
||||
aiActivateDude(actor);
|
||||
return;
|
||||
}
|
||||
|
@ -1537,11 +1537,11 @@ void aiLookForTarget(DBloodActor* actor)
|
|||
for (int p = connecthead; p >= 0; p = connectpoint2[p])
|
||||
{
|
||||
PLAYER* pPlayer = &gPlayer[p];
|
||||
if (actor->GetOwner() == pPlayer->actor || pPlayer->actor->xspr.health == 0 || powerupCheck(pPlayer, kPwUpShadowCloak) > 0)
|
||||
if (actor->GetOwner() == pPlayer->GetActor() || pPlayer->GetActor()->xspr.health == 0 || powerupCheck(pPlayer, kPwUpShadowCloak) > 0)
|
||||
continue;
|
||||
auto ppos = pPlayer->actor->spr.pos;
|
||||
auto ppos = pPlayer->GetActor()->spr.pos;
|
||||
auto dvec = ppos.XY() - actor->spr.pos.XY();
|
||||
auto pSector = pPlayer->actor->sector();
|
||||
auto pSector = pPlayer->GetActor()->sector();
|
||||
|
||||
double nDist = dvec.Length();
|
||||
if (nDist > pDudeInfo->SeeDist() && nDist > pDudeInfo->HearDist())
|
||||
|
@ -1552,7 +1552,7 @@ void aiLookForTarget(DBloodActor* actor)
|
|||
DAngle nDeltaAngle = absangle(actor->spr.Angles.Yaw, dvec.Angle());
|
||||
if (nDist < pDudeInfo->SeeDist() && nDeltaAngle <= pDudeInfo->Periphery())
|
||||
{
|
||||
aiSetTarget(actor, pPlayer->actor);
|
||||
aiSetTarget(actor, pPlayer->GetActor());
|
||||
aiActivateDude(actor);
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -95,11 +95,11 @@ static void batThinkTarget(DBloodActor* actor)
|
|||
for (int p = connecthead; p >= 0; p = connectpoint2[p])
|
||||
{
|
||||
PLAYER* pPlayer = &gPlayer[p];
|
||||
if (pPlayer->actor->xspr.health == 0 || powerupCheck(pPlayer, kPwUpShadowCloak) > 0)
|
||||
if (pPlayer->GetActor()->xspr.health == 0 || powerupCheck(pPlayer, kPwUpShadowCloak) > 0)
|
||||
continue;
|
||||
auto ppos = pPlayer->actor->spr.pos;
|
||||
auto ppos = pPlayer->GetActor()->spr.pos;
|
||||
auto dvec = ppos.XY() - actor->spr.pos.XY();
|
||||
auto pSector = pPlayer->actor->sector();
|
||||
auto pSector = pPlayer->GetActor()->sector();
|
||||
|
||||
double nDist = dvec.Length();
|
||||
if (nDist > pDudeInfo->SeeDist() && nDist > pDudeInfo->HearDist())
|
||||
|
@ -110,7 +110,7 @@ static void batThinkTarget(DBloodActor* actor)
|
|||
DAngle nDeltaAngle = absangle(actor->spr.Angles.Yaw, dvec.Angle());
|
||||
if (nDist < pDudeInfo->SeeDist() && nDeltaAngle <= pDudeInfo->Periphery())
|
||||
{
|
||||
aiSetTarget(actor, pPlayer->actor);
|
||||
aiSetTarget(actor, pPlayer->GetActor());
|
||||
aiActivateDude(actor);
|
||||
}
|
||||
else if (nDist < pDudeInfo->HearDist())
|
||||
|
|
|
@ -107,11 +107,11 @@ static void eelThinkTarget(DBloodActor* actor)
|
|||
for (int p = connecthead; p >= 0; p = connectpoint2[p])
|
||||
{
|
||||
PLAYER* pPlayer = &gPlayer[p];
|
||||
if (pPlayer->actor->xspr.health == 0 || powerupCheck(pPlayer, kPwUpShadowCloak) > 0)
|
||||
if (pPlayer->GetActor()->xspr.health == 0 || powerupCheck(pPlayer, kPwUpShadowCloak) > 0)
|
||||
continue;
|
||||
auto ppos = pPlayer->actor->spr.pos;
|
||||
auto ppos = pPlayer->GetActor()->spr.pos;
|
||||
auto dvect = ppos.XY() - actor->spr.pos;
|
||||
auto pSector = pPlayer->actor->sector();
|
||||
auto pSector = pPlayer->GetActor()->sector();
|
||||
double nDist = dvect.Length();
|
||||
if (nDist > pDudeInfo->SeeDist() && nDist > pDudeInfo->HearDist())
|
||||
continue;
|
||||
|
@ -122,7 +122,7 @@ static void eelThinkTarget(DBloodActor* actor)
|
|||
if (nDist < pDudeInfo->SeeDist() && nDeltaAngle <= pDudeInfo->Periphery())
|
||||
{
|
||||
pDudeExtraE->thinkTime = 0;
|
||||
aiSetTarget(actor, pPlayer->actor);
|
||||
aiSetTarget(actor, pPlayer->GetActor());
|
||||
aiActivateDude(actor);
|
||||
}
|
||||
else if (nDist < pDudeInfo->HearDist())
|
||||
|
|
|
@ -238,11 +238,11 @@ static void cerberusThinkTarget(DBloodActor* actor)
|
|||
for (int p = connecthead; p >= 0; p = connectpoint2[p])
|
||||
{
|
||||
PLAYER* pPlayer = &gPlayer[p];
|
||||
if (pPlayer->actor->xspr.health == 0 || powerupCheck(pPlayer, kPwUpShadowCloak) > 0)
|
||||
if (pPlayer->GetActor()->xspr.health == 0 || powerupCheck(pPlayer, kPwUpShadowCloak) > 0)
|
||||
continue;
|
||||
auto ppos = pPlayer->actor->spr.pos;
|
||||
auto ppos = pPlayer->GetActor()->spr.pos;
|
||||
auto dvect = ppos.XY() - actor->spr.pos;
|
||||
auto pSector = pPlayer->actor->sector();
|
||||
auto pSector = pPlayer->GetActor()->sector();
|
||||
double nDist = dvect.Length();
|
||||
if (nDist > pDudeInfo->SeeDist() && nDist > pDudeInfo->HearDist())
|
||||
continue;
|
||||
|
@ -253,7 +253,7 @@ static void cerberusThinkTarget(DBloodActor* actor)
|
|||
if (nDist < pDudeInfo->SeeDist() && nDeltaAngle <= pDudeInfo->Periphery())
|
||||
{
|
||||
pDudeExtraE->thinkTime = 0;
|
||||
aiSetTarget(actor, pPlayer->actor);
|
||||
aiSetTarget(actor, pPlayer->GetActor());
|
||||
aiActivateDude(actor);
|
||||
}
|
||||
else if (nDist < pDudeInfo->HearDist())
|
||||
|
|
|
@ -194,11 +194,11 @@ static void gargThinkTarget(DBloodActor* actor)
|
|||
for (int p = connecthead; p >= 0; p = connectpoint2[p])
|
||||
{
|
||||
PLAYER* pPlayer = &gPlayer[p];
|
||||
if (pPlayer->actor->xspr.health == 0 || powerupCheck(pPlayer, kPwUpShadowCloak) > 0)
|
||||
if (pPlayer->GetActor()->xspr.health == 0 || powerupCheck(pPlayer, kPwUpShadowCloak) > 0)
|
||||
continue;
|
||||
auto ppos = pPlayer->actor->spr.pos;
|
||||
auto ppos = pPlayer->GetActor()->spr.pos;
|
||||
auto dvect = ppos.XY() - actor->spr.pos;
|
||||
auto pSector = pPlayer->actor->sector();
|
||||
auto pSector = pPlayer->GetActor()->sector();
|
||||
double nDist = dvect.Length();
|
||||
if (nDist > pDudeInfo->SeeDist() && nDist > pDudeInfo->HearDist())
|
||||
continue;
|
||||
|
@ -209,7 +209,7 @@ static void gargThinkTarget(DBloodActor* actor)
|
|||
if (nDist < pDudeInfo->SeeDist() && nDeltaAngle <= pDudeInfo->Periphery())
|
||||
{
|
||||
pDudeExtraE->thinkTime = 0;
|
||||
aiSetTarget(actor, pPlayer->actor);
|
||||
aiSetTarget(actor, pPlayer->GetActor());
|
||||
aiActivateDude(actor);
|
||||
}
|
||||
else if (nDist < pDudeInfo->HearDist())
|
||||
|
|
|
@ -175,11 +175,11 @@ static void ghostThinkTarget(DBloodActor* actor)
|
|||
for (int p = connecthead; p >= 0; p = connectpoint2[p])
|
||||
{
|
||||
PLAYER* pPlayer = &gPlayer[p];
|
||||
if (pPlayer->actor->xspr.health == 0 || powerupCheck(pPlayer, kPwUpShadowCloak) > 0)
|
||||
if (pPlayer->GetActor()->xspr.health == 0 || powerupCheck(pPlayer, kPwUpShadowCloak) > 0)
|
||||
continue;
|
||||
auto ppos = pPlayer->actor->spr.pos;
|
||||
auto ppos = pPlayer->GetActor()->spr.pos;
|
||||
auto dvect = ppos.XY() - actor->spr.pos;
|
||||
auto pSector = pPlayer->actor->sector();
|
||||
auto pSector = pPlayer->GetActor()->sector();
|
||||
double nDist = dvect.Length();
|
||||
if (nDist > pDudeInfo->SeeDist() && nDist > pDudeInfo->HearDist())
|
||||
continue;
|
||||
|
@ -190,7 +190,7 @@ static void ghostThinkTarget(DBloodActor* actor)
|
|||
if (nDist < pDudeInfo->SeeDist() && nDeltaAngle <= pDudeInfo->Periphery())
|
||||
{
|
||||
pDudeExtraE->thinkTime = 0;
|
||||
aiSetTarget(actor, pPlayer->actor);
|
||||
aiSetTarget(actor, pPlayer->GetActor());
|
||||
aiActivateDude(actor);
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -199,11 +199,11 @@ static void sub_725A4(DBloodActor* actor)
|
|||
for (int p = connecthead; p >= 0; p = connectpoint2[p])
|
||||
{
|
||||
PLAYER* pPlayer = &gPlayer[p];
|
||||
if (pPlayer->actor->xspr.health == 0 || powerupCheck(pPlayer, kPwUpShadowCloak) > 0)
|
||||
if (pPlayer->GetActor()->xspr.health == 0 || powerupCheck(pPlayer, kPwUpShadowCloak) > 0)
|
||||
continue;
|
||||
auto ppos = pPlayer->actor->spr.pos;
|
||||
auto ppos = pPlayer->GetActor()->spr.pos;
|
||||
auto dvect = ppos.XY() - actor->spr.pos;
|
||||
auto pSector = pPlayer->actor->sector();
|
||||
auto pSector = pPlayer->GetActor()->sector();
|
||||
DAngle nAngle = dvect.Angle();
|
||||
double nDist = dvect.Length();
|
||||
|
||||
|
@ -216,7 +216,7 @@ static void sub_725A4(DBloodActor* actor)
|
|||
if (nDist < pDudeInfo->SeeDist() && abs(nDeltaAngle) <= pDudeInfo->Periphery())
|
||||
{
|
||||
pDudeExtraE->thinkTime = 0;
|
||||
aiSetTarget(actor, pPlayer->actor);
|
||||
aiSetTarget(actor, pPlayer->GetActor());
|
||||
aiActivateDude(actor);
|
||||
}
|
||||
else if (nDist < pDudeInfo->HearDist())
|
||||
|
|
|
@ -211,11 +211,11 @@ static void myThinkTarget(DBloodActor* actor)
|
|||
{
|
||||
PLAYER* pPlayer = &gPlayer[p];
|
||||
auto owneractor = actor->GetOwner();
|
||||
if (owneractor == nullptr || owneractor == pPlayer->actor || pPlayer->actor->xspr.health == 0 || powerupCheck(pPlayer, kPwUpShadowCloak) > 0)
|
||||
if (owneractor == nullptr || owneractor == pPlayer->GetActor() || pPlayer->GetActor()->xspr.health == 0 || powerupCheck(pPlayer, kPwUpShadowCloak) > 0)
|
||||
continue;
|
||||
auto ppos = pPlayer->actor->spr.pos;
|
||||
auto ppos = pPlayer->GetActor()->spr.pos;
|
||||
auto dvect = ppos.XY() - actor->spr.pos;
|
||||
auto pSector = pPlayer->actor->sector();
|
||||
auto pSector = pPlayer->GetActor()->sector();
|
||||
double nDist = dvect.Length();
|
||||
if (nDist > pDudeInfo->SeeDist() && nDist > pDudeInfo->HearDist())
|
||||
continue;
|
||||
|
@ -225,7 +225,7 @@ static void myThinkTarget(DBloodActor* actor)
|
|||
DAngle nDeltaAngle = absangle(actor->spr.Angles.Yaw, dvect.Angle());
|
||||
if (nDist < pDudeInfo->SeeDist() && abs(nDeltaAngle) <= pDudeInfo->Periphery())
|
||||
{
|
||||
aiSetTarget(actor, pPlayer->actor);
|
||||
aiSetTarget(actor, pPlayer->GetActor());
|
||||
aiActivateDude(actor);
|
||||
}
|
||||
else if (nDist < pDudeInfo->HearDist())
|
||||
|
|
|
@ -506,11 +506,11 @@ static tspritetype* viewAddEffect(tspriteArray& tsprites, int nTSprite, VIEW_EFF
|
|||
if (cl_showweapon == 2 && r_voxels && nVoxel != -1)
|
||||
{
|
||||
auto gView = &gPlayer[gViewIndex];
|
||||
pNSprite->Angles.Yaw = gView->actor->spr.Angles.Yaw + DAngle90; // always face viewer
|
||||
pNSprite->Angles.Yaw = gView->GetActor()->spr.Angles.Yaw + DAngle90; // always face viewer
|
||||
pNSprite->cstat &= ~CSTAT_SPRITE_YFLIP;
|
||||
if (pPlayer->curWeapon == kWeapLifeLeech) // position lifeleech behind player
|
||||
{
|
||||
pNSprite->pos.XY() += gView->actor->spr.Angles.Yaw.ToVector() * 8;
|
||||
pNSprite->pos.XY() += gView->GetActor()->spr.Angles.Yaw.ToVector() * 8;
|
||||
}
|
||||
if ((pPlayer->curWeapon == kWeapLifeLeech) || (pPlayer->curWeapon == kWeapVoodooDoll)) // make lifeleech/voodoo doll always face viewer like sprite
|
||||
pNSprite->Angles.Yaw += DAngle90;
|
||||
|
@ -799,7 +799,7 @@ void viewProcessSprites(tspriteArray& tsprites, const DVector3& cPos, DAngle cA,
|
|||
case kMissileFlareRegular:
|
||||
case kMissileFlareAlt:
|
||||
if (pTSprite->statnum == kStatFlare) {
|
||||
if (owneractor->GetTarget() == pPlayer->actor)
|
||||
if (owneractor->GetTarget() == pPlayer->GetActor())
|
||||
{
|
||||
pTSprite->scale = DVector2(0, 0);
|
||||
break;
|
||||
|
@ -867,7 +867,7 @@ void viewProcessSprites(tspriteArray& tsprites, const DVector3& cPos, DAngle cA,
|
|||
if (pNTSprite) {
|
||||
POSTURE* pPosture = &thisPlayer->pPosture[thisPlayer->lifeMode][thisPlayer->posture];
|
||||
pNTSprite->pos.XY() += pTSprite->Angles.Yaw.ToVector() * pPosture->xOffset;
|
||||
pNTSprite->pos.Z = thisPlayer->actor->spr.pos.Z - pPosture->zOffset;
|
||||
pNTSprite->pos.Z = thisPlayer->GetActor()->spr.pos.Z - pPosture->zOffset;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -891,7 +891,7 @@ void viewProcessSprites(tspriteArray& tsprites, const DVector3& cPos, DAngle cA,
|
|||
}
|
||||
}
|
||||
|
||||
if (pTSprite->ownerActor != pPlayer->actor || gViewPos != viewFirstPerson) {
|
||||
if (pTSprite->ownerActor != pPlayer->GetActor() || gViewPos != viewFirstPerson) {
|
||||
if (getflorzofslopeptr(pTSprite->sectp, pTSprite->pos) >= cPos.Z)
|
||||
{
|
||||
viewAddEffect(tsprites, nTSprite, kViewEffectShadow);
|
||||
|
|
|
@ -56,7 +56,7 @@ void ambProcess(PLAYER* pPlayer)
|
|||
{
|
||||
if (actor->xspr.state)
|
||||
{
|
||||
int nDist = (int)(actor->spr.pos - pPlayer->actor->spr.pos).Length();
|
||||
int nDist = (int)(actor->spr.pos - pPlayer->GetActor()->spr.pos).Length();
|
||||
int vs = min(MulScale(actor->xspr.data4, actor->xspr.busy, 16), 127);
|
||||
ambChannels[actor->spr.intowner].distance += ClipRange(scale(nDist, actor->xspr.data1, actor->xspr.data2, vs, 0), 0, vs);
|
||||
}
|
||||
|
|
|
@ -340,8 +340,8 @@ void StartLevel(MapRecord* level, bool newgame)
|
|||
for (int i = connecthead; i >= 0; i = connectpoint2[i])
|
||||
{
|
||||
PLAYER* pPlayer = &gPlayer[i];
|
||||
pPlayer->actor->xspr.health &= 0xf000;
|
||||
pPlayer->actor->xspr.health |= gHealthTemp[i];
|
||||
pPlayer->GetActor()->xspr.health &= 0xf000;
|
||||
pPlayer->GetActor()->xspr.health |= gHealthTemp[i];
|
||||
pPlayer->weaponQav = gPlayerTemp[i].weaponQav;
|
||||
pPlayer->curWeapon = gPlayerTemp[i].curWeapon;
|
||||
pPlayer->weaponState = gPlayerTemp[i].weaponState;
|
||||
|
@ -463,8 +463,8 @@ void GameInterface::Ticker(const ticcmd_t* playercmds)
|
|||
thinktime.Unclock();
|
||||
|
||||
// update console player's viewzoffset at the end of the tic.
|
||||
pPlayer->actor->oviewzoffset = pPlayer->actor->viewzoffset;
|
||||
pPlayer->actor->viewzoffset = pPlayer->zView - pPlayer->actor->spr.pos.Z;
|
||||
pPlayer->GetActor()->oviewzoffset = pPlayer->GetActor()->viewzoffset;
|
||||
pPlayer->GetActor()->viewzoffset = pPlayer->zView - pPlayer->GetActor()->spr.pos.Z;
|
||||
|
||||
gFrameCount++;
|
||||
PlayClock += kTicsPerFrame;
|
||||
|
@ -763,7 +763,7 @@ DEFINE_ACTION_FUNCTION(_Blood, GetViewPlayer)
|
|||
DEFINE_ACTION_FUNCTION(_BloodPlayer, GetHealth)
|
||||
{
|
||||
PARAM_SELF_STRUCT_PROLOGUE(PLAYER);
|
||||
ACTION_RETURN_INT(self->actor->xspr.health);
|
||||
ACTION_RETURN_INT(self->GetActor()->xspr.health);
|
||||
}
|
||||
|
||||
DEFINE_ACTION_FUNCTION_NATIVE(_BloodPlayer, powerupCheck, powerupCheck)
|
||||
|
|
|
@ -122,7 +122,7 @@ struct GameInterface : public ::GameInterface
|
|||
bool DrawAutomapPlayer(const DVector2& mxy, const DVector2& cpos, const DAngle cang, const DVector2& xydim, const double czoom, double const interpfrac) override;
|
||||
DAngle playerPitchMin() override { return DAngle::fromDeg(54.575); }
|
||||
DAngle playerPitchMax() override { return DAngle::fromDeg(-43.15); }
|
||||
DCoreActor* getConsoleActor() override { return gPlayer[myconnectindex].actor; }
|
||||
DCoreActor* getConsoleActor() override { return gPlayer[myconnectindex].GetActor(); }
|
||||
void ToggleThirdPerson() override;
|
||||
void SwitchCoopView() override;
|
||||
void ToggleShowWeapon() override;
|
||||
|
|
|
@ -436,7 +436,7 @@ void CounterCheck(DBloodActor*, sectortype* pSector) // 12
|
|||
void FinishHim(DBloodActor* actor, sectortype*) // 13
|
||||
{
|
||||
if (!actor) return;
|
||||
if (actor->IsPlayerActor() && playerSeqPlaying(&gPlayer[actor->spr.type - kDudePlayer1], 16) && actor == gPlayer[myconnectindex].actor)
|
||||
if (actor->IsPlayerActor() && playerSeqPlaying(&gPlayer[actor->spr.type - kDudePlayer1], 16) && actor == gPlayer[myconnectindex].GetActor())
|
||||
sndStartSample(3313, -1, 1, 0);
|
||||
}
|
||||
|
||||
|
|
|
@ -156,7 +156,7 @@ void GameInterface::MenuClosed()
|
|||
|
||||
bool GameInterface::CanSave()
|
||||
{
|
||||
return gPlayer[myconnectindex].actor && gPlayer[myconnectindex].actor->xspr.health != 0;
|
||||
return gPlayer[myconnectindex].GetActor() && gPlayer[myconnectindex].GetActor()->xspr.health != 0;
|
||||
}
|
||||
|
||||
FSavegameInfo GameInterface::GetSaveSig()
|
||||
|
|
|
@ -35,10 +35,10 @@ void GameInterface::LevelCompleted(MapRecord* map, int skill)
|
|||
// Save the player state before taking down anything.
|
||||
for (int i = connecthead; i >= 0; i = connectpoint2[i])
|
||||
{
|
||||
if (gPlayer[i].actor)
|
||||
if (gPlayer[i].GetActor())
|
||||
{
|
||||
memcpy(&gPlayerTemp[i], &gPlayer[i], sizeof(PLAYER));
|
||||
gHealthTemp[i] = gPlayer[i].actor->xspr.health;
|
||||
gHealthTemp[i] = gPlayer[i].GetActor()->xspr.health;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -317,9 +317,9 @@ void evSend(EventObject& eob, int rxId, COMMAND_ID command, DBloodActor* initiat
|
|||
if ((pPlayer = getPlayerById((rxId - kChannelPlayer7) + kMaxPlayers)) != nullptr)
|
||||
{
|
||||
if (command == kCmdEventKillFull)
|
||||
evKillActor(pPlayer->actor);
|
||||
evKillActor(pPlayer->GetActor());
|
||||
else
|
||||
trMessageSprite(pPlayer->actor, event);
|
||||
trMessageSprite(pPlayer->GetActor(), event);
|
||||
}
|
||||
}
|
||||
else if (rxId == kChannelAllPlayers)
|
||||
|
@ -329,9 +329,9 @@ void evSend(EventObject& eob, int rxId, COMMAND_ID command, DBloodActor* initiat
|
|||
if ((pPlayer = getPlayerById(i)) != nullptr)
|
||||
{
|
||||
if (command == kCmdEventKillFull)
|
||||
evKillActor(pPlayer->actor);
|
||||
evKillActor(pPlayer->GetActor());
|
||||
else
|
||||
trMessageSprite(pPlayer->actor, event);
|
||||
trMessageSprite(pPlayer->GetActor(), event);
|
||||
}
|
||||
}
|
||||
return;
|
||||
|
|
|
@ -128,8 +128,8 @@ void hudDraw(PLAYER* pPlayer, sectortype* pSector, double bobx, double boby, dou
|
|||
}
|
||||
int nShade = pSector? pSector->floorshade : 0;
|
||||
int nPalette = 0;
|
||||
if (pPlayer->actor->sector()->hasX()) {
|
||||
sectortype* pViewSect = pPlayer->actor->sector();
|
||||
if (pPlayer->GetActor()->sector()->hasX()) {
|
||||
sectortype* pViewSect = pPlayer->GetActor()->sector();
|
||||
XSECTOR* pXSector = &pViewSect->xs();
|
||||
if (pXSector->color)
|
||||
nPalette = pViewSect->floorpal;
|
||||
|
@ -137,7 +137,7 @@ void hudDraw(PLAYER* pPlayer, sectortype* pSector, double bobx, double boby, dou
|
|||
|
||||
#ifdef NOONE_EXTENSIONS
|
||||
if (pPlayer->sceneQav < 0) WeaponDraw(pPlayer, nShade, cXY.X, cXY.Y, nPalette, angle);
|
||||
else if (pPlayer->actor->xspr.health > 0) playerQavSceneDraw(pPlayer, nShade, cXY.X, cXY.Y, nPalette, angle);
|
||||
else if (pPlayer->GetActor()->xspr.health > 0) playerQavSceneDraw(pPlayer, nShade, cXY.X, cXY.Y, nPalette, angle);
|
||||
else {
|
||||
pPlayer->sceneQav = pPlayer->weaponQav = kQAVNone;
|
||||
pPlayer->qavTimer = pPlayer->weaponTimer = pPlayer->curWeapon = 0;
|
||||
|
@ -146,9 +146,9 @@ void hudDraw(PLAYER* pPlayer, sectortype* pSector, double bobx, double boby, dou
|
|||
WeaponDraw(pPlayer, nShade, cX, cY, nPalette);
|
||||
#endif
|
||||
}
|
||||
if (gViewPos == 0 && pPlayer->actor->xspr.burnTime > 60)
|
||||
if (gViewPos == 0 && pPlayer->GetActor()->xspr.burnTime > 60)
|
||||
{
|
||||
viewBurnTime(pPlayer->actor->xspr.burnTime);
|
||||
viewBurnTime(pPlayer->GetActor()->xspr.burnTime);
|
||||
}
|
||||
if (packItemActive(pPlayer, 1))
|
||||
{
|
||||
|
@ -169,8 +169,8 @@ void hudDraw(PLAYER* pPlayer, sectortype* pSector, double bobx, double boby, dou
|
|||
}
|
||||
|
||||
int zn = int(((pPlayer->zWeapon - pPlayer->zView - 12) * 2.) + 220);
|
||||
PLAYER* pPSprite = &gPlayer[pPlayer->actor->spr.type - kDudePlayer1];
|
||||
if (pPlayer->actor->IsPlayerActor() && pPSprite->hand == 1)
|
||||
PLAYER* pPSprite = &gPlayer[pPlayer->GetActor()->spr.type - kDudePlayer1];
|
||||
if (pPlayer->GetActor()->IsPlayerActor() && pPSprite->hand == 1)
|
||||
{
|
||||
gChoke.animateChoke(160, zn, interpfrac);
|
||||
}
|
||||
|
|
|
@ -297,7 +297,7 @@ const char* GameInterface::GenericCheat(int player, int cheat)
|
|||
if (gGameOptions.nGameType != 0 || numplayers > 1) // sp only for now.
|
||||
return nullptr;
|
||||
|
||||
if (gamestate != GS_LEVEL || pPlayer->actor->xspr.health == 0) // must be alive and in a level to cheat.
|
||||
if (gamestate != GS_LEVEL || pPlayer->GetActor()->xspr.health == 0) // must be alive and in a level to cheat.
|
||||
return nullptr;
|
||||
|
||||
bPlayerCheated = true;
|
||||
|
@ -322,27 +322,27 @@ const char* GameInterface::GenericCheat(int player, int cheat)
|
|||
SetToys(pPlayer, true);
|
||||
break;
|
||||
case kCheatKevorkian:
|
||||
actDamageSprite(pPlayer->actor, pPlayer->actor, kDamageBullet, 8000);
|
||||
actDamageSprite(pPlayer->GetActor(), pPlayer->GetActor(), kDamageBullet, 8000);
|
||||
return GStrings("TXTB_KEVORKIAN");
|
||||
|
||||
case kCheatMcGee:
|
||||
{
|
||||
if (!pPlayer->actor->xspr.burnTime)
|
||||
evPostActor(pPlayer->actor, 0, kCallbackFXFlameLick);
|
||||
actBurnSprite(pPlayer->actor, pPlayer->actor, 2400);
|
||||
if (!pPlayer->GetActor()->xspr.burnTime)
|
||||
evPostActor(pPlayer->GetActor(), 0, kCallbackFXFlameLick);
|
||||
actBurnSprite(pPlayer->GetActor(), pPlayer->GetActor(), 2400);
|
||||
return GStrings("TXTB_FIRED");
|
||||
}
|
||||
case kCheatEdmark:
|
||||
actDamageSprite(pPlayer->actor, pPlayer->actor, kDamageExplode, 8000);
|
||||
actDamageSprite(pPlayer->GetActor(), pPlayer->GetActor(), kDamageExplode, 8000);
|
||||
return GStrings("TXTB_THEDAYS");
|
||||
|
||||
case kCheatKrueger:
|
||||
{
|
||||
actHealDude(pPlayer->actor, 200, 200);
|
||||
actHealDude(pPlayer->GetActor(), 200, 200);
|
||||
pPlayer->armor[1] = VanillaMode() ? 200 : 3200;
|
||||
if (!pPlayer->actor->xspr.burnTime)
|
||||
evPostActor(pPlayer->actor, 0, kCallbackFXFlameLick);
|
||||
actBurnSprite(pPlayer->actor, pPlayer->actor, 2400);
|
||||
if (!pPlayer->GetActor()->xspr.burnTime)
|
||||
evPostActor(pPlayer->GetActor(), 0, kCallbackFXFlameLick);
|
||||
actBurnSprite(pPlayer->GetActor(), pPlayer->GetActor(), 2400);
|
||||
return GStrings("TXTB_RETARD");
|
||||
}
|
||||
case kCheatSterno:
|
||||
|
@ -352,7 +352,7 @@ const char* GameInterface::GenericCheat(int player, int cheat)
|
|||
pPlayer->flickerEffect = 360;
|
||||
break;
|
||||
case kCheatSpork:
|
||||
actHealDude(pPlayer->actor, 200, 200);
|
||||
actHealDude(pPlayer->GetActor(), 200, 200);
|
||||
break;
|
||||
case kCheatClarice:
|
||||
for (int i = 0; i < 3; i++)
|
||||
|
@ -401,7 +401,7 @@ const char* GameInterface::GenericCheat(int player, int cheat)
|
|||
SetWooMode(pPlayer, true);
|
||||
break;
|
||||
case kCheatCousteau:
|
||||
actHealDude(pPlayer->actor, 200, 200);
|
||||
actHealDude(pPlayer->GetActor(), 200, 200);
|
||||
pPlayer->packSlots[1].curAmount = 100;
|
||||
if (!VanillaMode())
|
||||
pPlayer->pwUpTime[kPwUpDivingSuit] = gPowerUpInfo[kPwUpDivingSuit].bonusTime;
|
||||
|
@ -416,7 +416,7 @@ const char* GameInterface::GenericCheat(int player, int cheat)
|
|||
SetKeys(pPlayer, false);
|
||||
SetWooMode(pPlayer, true);
|
||||
powerupActivate(pPlayer, kPwUpDeliriumShroom);
|
||||
pPlayer->actor->xspr.health = 16;
|
||||
pPlayer->GetActor()->xspr.health = 16;
|
||||
pPlayer->hasWeapon[kWeapPitchFork] = 1;
|
||||
pPlayer->curWeapon = kWeapNone;
|
||||
pPlayer->nextWeapon = kWeapPitchFork;
|
||||
|
@ -534,7 +534,7 @@ static void cmd_Give(int player, uint8_t** stream, bool skip)
|
|||
int type = ReadByte(stream);
|
||||
if (skip) return;
|
||||
|
||||
if (numplayers != 1 || gamestate != GS_LEVEL || pPlayer->actor->xspr.health == 0)
|
||||
if (numplayers != 1 || gamestate != GS_LEVEL || pPlayer->GetActor()->xspr.health == 0)
|
||||
{
|
||||
Printf("give: Cannot give while dead or not in a single-player game.\n");
|
||||
return;
|
||||
|
@ -552,7 +552,7 @@ static void cmd_Give(int player, uint8_t** stream, bool skip)
|
|||
break;
|
||||
|
||||
case GIVE_HEALTH:
|
||||
actHealDude(pPlayer->actor, 200, 200);
|
||||
actHealDude(pPlayer->GetActor(), 200, 200);
|
||||
bPlayerCheated = true;
|
||||
break;
|
||||
|
||||
|
|
|
@ -1176,12 +1176,12 @@ void nnExtProcessSuperSprites()
|
|||
for (int a = connecthead; a >= 0; a = connectpoint2[a])
|
||||
{
|
||||
PLAYER* pPlayer = &gPlayer[a];
|
||||
if (!pPlayer || !xsprIsFine(pPlayer->actor) || pPlayer->actor->xspr.health <= 0)
|
||||
if (!pPlayer || !xsprIsFine(pPlayer->GetActor()) || pPlayer->GetActor()->xspr.health <= 0)
|
||||
continue;
|
||||
|
||||
if (pPlayer->actor->xspr.health > 0 && CheckProximity(gPlayer->actor, pos, pSect, okDist))
|
||||
if (pPlayer->GetActor()->xspr.health > 0 && CheckProximity(gPlayer->GetActor(), pos, pSect, okDist))
|
||||
{
|
||||
trTriggerSprite(pProx, kCmdSpriteProximity, pPlayer->actor);
|
||||
trTriggerSprite(pProx, kCmdSpriteProximity, pPlayer->GetActor());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1214,10 +1214,10 @@ void nnExtProcessSuperSprites()
|
|||
for (int a = connecthead; a >= 0; a = connectpoint2[a])
|
||||
{
|
||||
PLAYER* pPlayer = &gPlayer[a];
|
||||
if (!pPlayer || !xsprIsFine(pPlayer->actor) || pPlayer->actor->xspr.health <= 0)
|
||||
if (!pPlayer || !xsprIsFine(pPlayer->GetActor()) || pPlayer->GetActor()->xspr.health <= 0)
|
||||
continue;
|
||||
|
||||
auto plActor = pPlayer->actor;
|
||||
auto plActor = pPlayer->GetActor();
|
||||
GetActorExtents(plActor, &ztop2, &zbot2);
|
||||
if (cansee(pSight->spr.pos, pSightSect, DVector3(plActor->spr.pos.XY(), ztop2), plActor->sector()))
|
||||
{
|
||||
|
@ -1232,7 +1232,7 @@ void nnExtProcessSuperSprites()
|
|||
if (!vector)
|
||||
pSight->spr.cstat |= CSTAT_SPRITE_BLOCK_HITSCAN;
|
||||
|
||||
HitScan(pPlayer->actor, pPlayer->zWeapon, pPlayer->aim, CLIPMASK0 | CLIPMASK1, 0);
|
||||
HitScan(pPlayer->GetActor(), pPlayer->zWeapon, pPlayer->aim, CLIPMASK0 | CLIPMASK1, 0);
|
||||
|
||||
if (!vector)
|
||||
pSight->spr.cstat &= ~CSTAT_SPRITE_BLOCK_HITSCAN;
|
||||
|
@ -1304,15 +1304,15 @@ void nnExtProcessSuperSprites()
|
|||
for (int a = connecthead; a != -1; a = connectpoint2[a])
|
||||
{
|
||||
pPlayer = &gPlayer[a];
|
||||
DBloodActor* pact = pPlayer->actor;
|
||||
DBloodActor* pact = pPlayer->GetActor();
|
||||
|
||||
if (pact && pact->hit.hit.type == kHitSprite && pact->hit.hit.actor() == debrisactor)
|
||||
{
|
||||
double nSpeed = pact->vel.XY().Length();
|
||||
nSpeed = max<double>(nSpeed - nSpeed * FixedToFloat<6>(mass), FixedToFloat(0x9000 - (mass << 3))); // very messy math (TM)...
|
||||
|
||||
debrisactor->vel += pPlayer->actor->spr.Angles.Yaw.ToVector() * nSpeed;
|
||||
debrisactor->hit.hit.setSprite(pPlayer->actor);
|
||||
debrisactor->vel += pPlayer->GetActor()->spr.Angles.Yaw.ToVector() * nSpeed;
|
||||
debrisactor->hit.hit.setSprite(pPlayer->GetActor());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1998,7 +1998,7 @@ void trPlayerCtrlStopScene(PLAYER* pPlayer)
|
|||
pPlayer->sceneQav = -1;
|
||||
|
||||
// restore weapon
|
||||
if (pPlayer->actor->xspr.health > 0)
|
||||
if (pPlayer->GetActor()->xspr.health > 0)
|
||||
{
|
||||
int oldWeapon = (initiator->hasX() && initiator->xspr.dropMsg != 0) ? initiator->xspr.dropMsg : 1;
|
||||
pPlayer->newWeapon = pPlayer->curWeapon = oldWeapon;
|
||||
|
@ -2017,7 +2017,7 @@ void trPlayerCtrlStopScene(PLAYER* pPlayer)
|
|||
void trPlayerCtrlLink(DBloodActor* sourceactor, PLAYER* pPlayer, bool checkCondition)
|
||||
{
|
||||
// save player's sprite index to let the tracking condition know it after savegame loading...
|
||||
auto actor = pPlayer->actor;
|
||||
auto actor = pPlayer->GetActor();
|
||||
sourceactor->prevmarker = actor;
|
||||
|
||||
actor->xspr.txID = sourceactor->xspr.txID;
|
||||
|
@ -2060,8 +2060,8 @@ void trPlayerCtrlLink(DBloodActor* sourceactor, PLAYER* pPlayer, bool checkCondi
|
|||
for (unsigned k = 0; k < pCond->objects.Size(); k++)
|
||||
{
|
||||
if (!pCond->objects[k].obj.isActor() || pCond->objects[k].obj.actor() != sourceactor) continue;
|
||||
pCond->objects[k].obj = EventObject(pPlayer->actor);
|
||||
pCond->objects[k].cmd = (uint8_t)pPlayer->actor->xspr.command;
|
||||
pCond->objects[k].obj = EventObject(pPlayer->GetActor());
|
||||
pCond->objects[k].cmd = (uint8_t)pPlayer->GetActor()->xspr.command;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -2189,7 +2189,7 @@ void trPlayerCtrlSetLookAngle(int value, PLAYER* pPlayer)
|
|||
if (const double adjustment = clamp(value * 0.125 * (value > 0 ? lookStepUp : lookStepDown), downAngle, upAngle))
|
||||
{
|
||||
setForcedSyncInput(pPlayer->nPlayer);
|
||||
pPlayer->actor->spr.Angles.Pitch = maphoriz(-100. * tan(adjustment * pi::pi() * (1. / 1024.)));
|
||||
pPlayer->GetActor()->spr.Angles.Pitch = maphoriz(-100. * tan(adjustment * pi::pi() * (1. / 1024.)));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2908,7 +2908,7 @@ void usePropertiesChanger(DBloodActor* sourceactor, int objType, sectortype* pSe
|
|||
|
||||
pPlayer->nWaterPal = waterPal;
|
||||
pPlayer->posture = kPostureSwim;
|
||||
pPlayer->actor->xspr.burnTime = 0;
|
||||
pPlayer->GetActor()->xspr.burnTime = 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -3197,7 +3197,7 @@ void useTeleportTarget(DBloodActor* sourceactor, DBloodActor* actor)
|
|||
|
||||
pPlayer->nWaterPal = waterPal;
|
||||
pPlayer->posture = kPostureSwim;
|
||||
pPlayer->actor->xspr.burnTime = 0;
|
||||
pPlayer->GetActor()->xspr.burnTime = 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -4318,7 +4318,7 @@ bool condCheckPlayer(DBloodActor* aCond, int cmpOp, bool PUSH)
|
|||
auto objActor = eob.actor();
|
||||
for (int i = 0; i < kMaxPlayers; i++)
|
||||
{
|
||||
if (objActor != gPlayer[i].actor) continue;
|
||||
if (objActor != gPlayer[i].GetActor()) continue;
|
||||
pPlayer = &gPlayer[i];
|
||||
break;
|
||||
}
|
||||
|
@ -4331,8 +4331,8 @@ bool condCheckPlayer(DBloodActor* aCond, int cmpOp, bool PUSH)
|
|||
|
||||
switch (cond) {
|
||||
case 0: // check if this player is connected
|
||||
if (!condCmp(pPlayer->nPlayer + 1, arg1, arg2, cmpOp) || pPlayer->actor == nullptr) return false;
|
||||
else if (PUSH) condPush(aCond, pPlayer->actor);
|
||||
if (!condCmp(pPlayer->nPlayer + 1, arg1, arg2, cmpOp) || pPlayer->GetActor() == nullptr) return false;
|
||||
else if (PUSH) condPush(aCond, pPlayer->GetActor());
|
||||
return (pPlayer->nPlayer >= 0);
|
||||
case 1: return condCmp((gGameOptions.nGameType != 3) ? 0 : pPlayer->teamId + 1, arg1, arg2, cmpOp); // compare team
|
||||
case 2: return (arg1 > 0 && arg1 < 8 && pPlayer->hasKey[arg1 - 1]);
|
||||
|
@ -4374,8 +4374,8 @@ bool condCheckPlayer(DBloodActor* aCond, int cmpOp, bool PUSH)
|
|||
case 14: return condCmp(pPlayer->posture + 1, arg1, arg2, cmpOp);
|
||||
case 46: return condCmp(pPlayer->sceneQav, arg1, arg2, cmpOp);
|
||||
case 47: return (pPlayer->godMode || powerupCheck(pPlayer, kPwUpDeathMask));
|
||||
case 48: return isShrinked(pPlayer->actor);
|
||||
case 49: return isGrown(pPlayer->actor);
|
||||
case 48: return isShrinked(pPlayer->GetActor());
|
||||
case 49: return isGrown(pPlayer->GetActor());
|
||||
}
|
||||
|
||||
condError(aCond, "Unexpected condition #%d!", cond);
|
||||
|
@ -5729,7 +5729,7 @@ bool modernTypeOperateSprite(DBloodActor* actor, EVENT& event)
|
|||
{
|
||||
PLAYER* pPlayer = getPlayerById(actor->xspr.data1);
|
||||
if (pPlayer != NULL)
|
||||
useSpriteDamager(actor, OBJ_SPRITE, 0, pPlayer->actor);
|
||||
useSpriteDamager(actor, OBJ_SPRITE, 0, pPlayer->GetActor());
|
||||
}
|
||||
|
||||
if (actor->xspr.busyTime > 0)
|
||||
|
@ -5748,7 +5748,7 @@ bool modernTypeOperateSprite(DBloodActor* actor, EVENT& event)
|
|||
{
|
||||
PLAYER* pPlayer = getPlayerById(actor->xspr.data1);
|
||||
if (pPlayer != NULL && SetSpriteState(actor, actor->xspr.state ^ 1, initiator) == 1)
|
||||
useTeleportTarget(actor, pPlayer->actor);
|
||||
useTeleportTarget(actor, pPlayer->GetActor());
|
||||
return true;
|
||||
}
|
||||
[[fallthrough]];
|
||||
|
@ -5999,12 +5999,12 @@ bool modernTypeOperateSprite(DBloodActor* actor, EVENT& event)
|
|||
|
||||
/// !!! COMMANDS OF THE CURRENT SPRITE, NOT OF THE EVENT !!! ///
|
||||
if ((cmd -= kCmdNumberic) < 0) return true;
|
||||
else if (pPlayer->actor->xspr.health <= 0)
|
||||
else if (pPlayer->GetActor()->xspr.health <= 0)
|
||||
{
|
||||
|
||||
switch (cmd) {
|
||||
case 36:
|
||||
actHealDude(pPlayer->actor, ((actor->xspr.data2 > 0) ? ClipHigh(actor->xspr.data2, 200) : getDudeInfo(pPlayer->actor->spr.type)->startHealth), 200);
|
||||
actHealDude(pPlayer->GetActor(), ((actor->xspr.data2 > 0) ? ClipHigh(actor->xspr.data2, 200) : getDudeInfo(pPlayer->GetActor()->spr.type)->startHealth), 200);
|
||||
pPlayer->curWeapon = kWeapPitchFork;
|
||||
break;
|
||||
}
|
||||
|
@ -6061,12 +6061,12 @@ bool modernTypeOperateSprite(DBloodActor* actor, EVENT& event)
|
|||
else if (actor->spr.flags & kModernTypeFlag1)
|
||||
{
|
||||
setForcedSyncInput(pPlayer->nPlayer);
|
||||
pPlayer->actor->spr.Angles.Yaw = actor->spr.Angles.Yaw;
|
||||
pPlayer->GetActor()->spr.Angles.Yaw = actor->spr.Angles.Yaw;
|
||||
}
|
||||
else if (valueIsBetween(actor->xspr.data2, -kAng360, kAng360))
|
||||
{
|
||||
setForcedSyncInput(pPlayer->nPlayer);
|
||||
pPlayer->actor->spr.Angles.Yaw = mapangle(actor->xspr.data2);
|
||||
pPlayer->GetActor()->spr.Angles.Yaw = mapangle(actor->xspr.data2);
|
||||
}
|
||||
break;
|
||||
case 10: // 74 (de)activate powerup
|
||||
|
@ -7276,7 +7276,7 @@ void playerQavSceneProcess(PLAYER* pPlayer, QAVSCENE* pQavScene)
|
|||
}
|
||||
|
||||
}
|
||||
nnExtTriggerObject(rxBucket[i], initiator->xspr.command, pPlayer->actor);
|
||||
nnExtTriggerObject(rxBucket[i], initiator->xspr.command, pPlayer->GetActor());
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -7373,14 +7373,14 @@ void playerQavSceneReset(PLAYER* pPlayer)
|
|||
|
||||
bool playerSizeShrink(PLAYER* pPlayer, int divider)
|
||||
{
|
||||
pPlayer->actor->xspr.scale = 256 / divider;
|
||||
pPlayer->GetActor()->xspr.scale = 256 / divider;
|
||||
playerSetRace(pPlayer, kModeHumanShrink);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool playerSizeGrow(PLAYER* pPlayer, int multiplier)
|
||||
{
|
||||
pPlayer->actor->xspr.scale = 256 * multiplier;
|
||||
pPlayer->GetActor()->xspr.scale = 256 * multiplier;
|
||||
playerSetRace(pPlayer, kModeHumanGrown);
|
||||
return true;
|
||||
}
|
||||
|
@ -7388,7 +7388,7 @@ bool playerSizeGrow(PLAYER* pPlayer, int multiplier)
|
|||
bool playerSizeReset(PLAYER* pPlayer)
|
||||
{
|
||||
playerSetRace(pPlayer, kModeHuman);
|
||||
pPlayer->actor->xspr.scale = 0;
|
||||
pPlayer->GetActor()->xspr.scale = 0;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -7425,7 +7425,7 @@ PLAYER* getPlayerById(int id)
|
|||
{
|
||||
for (int i = connecthead; i >= 0; i = connectpoint2[i])
|
||||
{
|
||||
if (id == gPlayer[i].actor->spr.type)
|
||||
if (id == gPlayer[i].GetActor()->spr.type)
|
||||
return &gPlayer[i];
|
||||
}
|
||||
}
|
||||
|
@ -8401,9 +8401,9 @@ DBloodActor* aiPatrolSearchTargets(DBloodActor* actor)
|
|||
for (i = connecthead; i != -1; i = connectpoint2[i])
|
||||
{
|
||||
pPlayer = &gPlayer[i];
|
||||
if (!xsprIsFine(pPlayer->actor)) continue;
|
||||
if (!xsprIsFine(pPlayer->GetActor())) continue;
|
||||
|
||||
auto plActor = pPlayer->actor;
|
||||
auto plActor = pPlayer->GetActor();
|
||||
if (plActor->xspr.health <= 0)
|
||||
continue;
|
||||
|
||||
|
@ -8423,7 +8423,7 @@ DBloodActor* aiPatrolSearchTargets(DBloodActor* actor)
|
|||
{
|
||||
double scratch;
|
||||
double eyeAboveZ = (pDudeInfo->eyeHeight * actor->spr.scale.Y);
|
||||
if (nDistf < seeDistf / 8) GetActorExtents(pPlayer->actor, &pos.Z, &scratch); //use ztop of the target sprite
|
||||
if (nDistf < seeDistf / 8) GetActorExtents(pPlayer->GetActor(), &pos.Z, &scratch); //use ztop of the target sprite
|
||||
if (!cansee(pos, plActor->sector(), actor->spr.pos - eyeAboveZ, actor->sector()))
|
||||
continue;
|
||||
}
|
||||
|
@ -8431,11 +8431,11 @@ DBloodActor* aiPatrolSearchTargets(DBloodActor* actor)
|
|||
continue;
|
||||
|
||||
bool invisible = (powerupCheck(pPlayer, kPwUpShadowCloak) > 0);
|
||||
if (spritesTouching(actor, pPlayer->actor) || spritesTouching(pPlayer->actor, actor))
|
||||
if (spritesTouching(actor, pPlayer->GetActor()) || spritesTouching(pPlayer->GetActor(), actor))
|
||||
{
|
||||
DPrintf(DMSG_SPAMMY, "Patrol dude #%d spot the Player #%d via touch.", actor->GetIndex(), pPlayer->nPlayer + 1);
|
||||
if (invisible) pPlayer->pwUpTime[kPwUpShadowCloak] = 0;
|
||||
newtarget = pPlayer->actor;
|
||||
newtarget = pPlayer->GetActor();
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -8453,7 +8453,7 @@ DBloodActor* aiPatrolSearchTargets(DBloodActor* actor)
|
|||
sndv = emitterActor->spr.pos.XY();
|
||||
|
||||
// sound attached to the sprite
|
||||
if (pPlayer->actor != emitterActor && emitterActor->GetOwner() != actor)
|
||||
if (pPlayer->GetActor() != emitterActor && emitterActor->GetOwner() != actor)
|
||||
{
|
||||
|
||||
if (!emitterActor->insector()) return false;
|
||||
|
@ -8488,7 +8488,7 @@ DBloodActor* aiPatrolSearchTargets(DBloodActor* actor)
|
|||
BloodSectIterator it(searchsect);
|
||||
while (auto act = it.Next())
|
||||
{
|
||||
if (act->GetOwner() == pPlayer->actor)
|
||||
if (act->GetOwner() == pPlayer->GetActor())
|
||||
{
|
||||
found = true;
|
||||
break;
|
||||
|
@ -8552,7 +8552,7 @@ DBloodActor* aiPatrolSearchTargets(DBloodActor* actor)
|
|||
|
||||
if (hearDistf)
|
||||
{
|
||||
DBloodActor* act = pPlayer->actor;
|
||||
DBloodActor* act = pPlayer->GetActor();
|
||||
itCanHear = (!deaf && (nDistf < hearDistf || hearChance > 0));
|
||||
if (act && itCanHear && nDistf < feelDistf && (!act->vel.isZero()))
|
||||
hearChance += (int)max(((feelDistf - nDistf) + act->vel.Sum() * 64, 0.) / 256, 0.);
|
||||
|
@ -8648,7 +8648,7 @@ DBloodActor* aiPatrolSearchTargets(DBloodActor* actor)
|
|||
|
||||
// trigger this region if target gonna be spot
|
||||
if (steal->xspr.txID && actor->xspr.data3 + hearChance + seeChance >= kMaxPatrolSpotValue)
|
||||
trTriggerSprite(steal, kCmdToggle, pPlayer->actor);
|
||||
trTriggerSprite(steal, kCmdToggle, pPlayer->GetActor());
|
||||
|
||||
// continue search another stealth regions to affect chances
|
||||
}
|
||||
|
@ -8660,7 +8660,7 @@ DBloodActor* aiPatrolSearchTargets(DBloodActor* actor)
|
|||
actor->xspr.data3 = ClipRange(actor->xspr.data3 + hearChance, -kMaxPatrolSpotValue, kMaxPatrolSpotValue);
|
||||
if (!stealth)
|
||||
{
|
||||
newtarget = pPlayer->actor;
|
||||
newtarget = pPlayer->GetActor();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -8672,7 +8672,7 @@ DBloodActor* aiPatrolSearchTargets(DBloodActor* actor)
|
|||
actor->xspr.data3 = ClipRange(actor->xspr.data3 + seeChance, -kMaxPatrolSpotValue, kMaxPatrolSpotValue);
|
||||
if (!stealth)
|
||||
{
|
||||
newtarget = pPlayer->actor;
|
||||
newtarget = pPlayer->GetActor();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -8682,7 +8682,7 @@ DBloodActor* aiPatrolSearchTargets(DBloodActor* actor)
|
|||
|
||||
if ((actor->xspr.data3 = ClipRange(actor->xspr.data3, 0, kMaxPatrolSpotValue)) == kMaxPatrolSpotValue)
|
||||
{
|
||||
newtarget = pPlayer->actor;
|
||||
newtarget = pPlayer->GetActor();
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -9288,7 +9288,7 @@ void changeSpriteAngle(DBloodActor* pSpr, DAngle nAng)
|
|||
{
|
||||
PLAYER* pPlayer = getPlayerById(pSpr->spr.type);
|
||||
if (pPlayer)
|
||||
pPlayer->actor->spr.Angles.Yaw = nAng;
|
||||
pPlayer->GetActor()->spr.Angles.Yaw = nAng;
|
||||
else
|
||||
{
|
||||
pSpr->spr.Angles.Yaw = nAng;
|
||||
|
@ -9325,8 +9325,8 @@ void killEffectGenCallbacks(DBloodActor* actor)
|
|||
case kChannelAllPlayers: // player sprites
|
||||
for (i = connecthead; i >= 0; i = connectpoint2[i])
|
||||
{
|
||||
if (gPlayer[i].actor != nullptr)
|
||||
dokillEffectGenCallbacks(gPlayer[i].actor);
|
||||
if (gPlayer[i].GetActor() != nullptr)
|
||||
dokillEffectGenCallbacks(gPlayer[i].GetActor());
|
||||
}
|
||||
break;
|
||||
case kChannelEventCauser: // worst case...
|
||||
|
@ -9350,8 +9350,8 @@ void killEffectGenCallbacks(DBloodActor* actor)
|
|||
{
|
||||
// player sprites
|
||||
PLAYER* pPlayer = getPlayerById(actor->xspr.txID - kChannelPlayer0);
|
||||
if (pPlayer && pPlayer->actor != nullptr)
|
||||
dokillEffectGenCallbacks(pPlayer->actor);
|
||||
if (pPlayer && pPlayer->GetActor() != nullptr)
|
||||
dokillEffectGenCallbacks(pPlayer->GetActor());
|
||||
}
|
||||
break;
|
||||
|
||||
|
|
|
@ -292,21 +292,21 @@ bool powerupActivate(PLAYER* pPlayer, int nPowerUp)
|
|||
break;
|
||||
case kItemShroomShrink:
|
||||
if (!gModernMap) break;
|
||||
else if (isGrown(pPlayer->actor)) playerDeactivateShrooms(pPlayer);
|
||||
else if (isGrown(pPlayer->GetActor())) playerDeactivateShrooms(pPlayer);
|
||||
else playerSizeShrink(pPlayer, 2);
|
||||
break;
|
||||
case kItemShroomGrow:
|
||||
if (!gModernMap) break;
|
||||
else if (isShrinked(pPlayer->actor)) playerDeactivateShrooms(pPlayer);
|
||||
else if (isShrinked(pPlayer->GetActor())) playerDeactivateShrooms(pPlayer);
|
||||
else {
|
||||
playerSizeGrow(pPlayer, 2);
|
||||
if (powerupCheck(&gPlayer[pPlayer->actor->spr.type - kDudePlayer1], kPwUpShadowCloak) > 0) {
|
||||
if (powerupCheck(&gPlayer[pPlayer->GetActor()->spr.type - kDudePlayer1], kPwUpShadowCloak) > 0) {
|
||||
powerupDeactivate(pPlayer, kPwUpShadowCloak);
|
||||
pPlayer->pwUpTime[kPwUpShadowCloak] = 0;
|
||||
}
|
||||
|
||||
if (ceilIsTooLow(pPlayer->actor))
|
||||
actDamageSprite(pPlayer->actor, pPlayer->actor, kDamageExplode, 65535);
|
||||
if (ceilIsTooLow(pPlayer->GetActor()))
|
||||
actDamageSprite(pPlayer->GetActor(), pPlayer->GetActor(), kDamageExplode, 65535);
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
|
@ -338,7 +338,7 @@ bool powerupActivate(PLAYER* pPlayer, int nPowerUp)
|
|||
WeaponRaise(pPlayer);
|
||||
break;
|
||||
}
|
||||
sfxPlay3DSound(pPlayer->actor, 776, -1, 0);
|
||||
sfxPlay3DSound(pPlayer->GetActor(), 776, -1, 0);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
@ -359,8 +359,8 @@ void powerupDeactivate(PLAYER* pPlayer, int nPowerUp)
|
|||
case kItemShroomShrink:
|
||||
if (gModernMap) {
|
||||
playerSizeReset(pPlayer);
|
||||
if (ceilIsTooLow(pPlayer->actor))
|
||||
actDamageSprite(pPlayer->actor, pPlayer->actor, kDamageExplode, 65535);
|
||||
if (ceilIsTooLow(pPlayer->GetActor()))
|
||||
actDamageSprite(pPlayer->GetActor(), pPlayer->GetActor(), kDamageExplode, 65535);
|
||||
}
|
||||
break;
|
||||
case kItemShroomGrow:
|
||||
|
@ -573,11 +573,11 @@ void packUseItem(PLAYER* pPlayer, int nPack)
|
|||
{
|
||||
case 0:
|
||||
{
|
||||
unsigned int health = pPlayer->actor->xspr.health >> 4;
|
||||
unsigned int health = pPlayer->GetActor()->xspr.health >> 4;
|
||||
if (health < 100)
|
||||
{
|
||||
int heal = ClipHigh(100 - health, pPlayer->packSlots[0].curAmount);
|
||||
actHealDude(pPlayer->actor, heal, 100);
|
||||
actHealDude(pPlayer->GetActor(), heal, 100);
|
||||
pPlayer->packSlots[0].curAmount -= heal;
|
||||
}
|
||||
break;
|
||||
|
@ -673,8 +673,8 @@ void packNextItem(PLAYER* pPlayer)
|
|||
|
||||
bool playerSeqPlaying(PLAYER* pPlayer, int nSeq)
|
||||
{
|
||||
int nCurSeq = seqGetID(pPlayer->actor);
|
||||
if (pPlayer->pDudeInfo->seqStartID + nSeq == nCurSeq && seqGetStatus(pPlayer->actor) >= 0)
|
||||
int nCurSeq = seqGetID(pPlayer->GetActor());
|
||||
if (pPlayer->pDudeInfo->seqStartID + nSeq == nCurSeq && seqGetStatus(pPlayer->GetActor()) >= 0)
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
|
@ -693,7 +693,7 @@ void playerSetRace(PLAYER* pPlayer, int nLifeMode)
|
|||
pPlayer->lifeMode = nLifeMode;
|
||||
|
||||
// By NoOne: don't forget to change clipdist for grow and shrink modes
|
||||
pPlayer->actor->clipdist = pDudeInfo->fClipdist();
|
||||
pPlayer->GetActor()->clipdist = pDudeInfo->fClipdist();
|
||||
|
||||
for (int i = 0; i < 7; i++)
|
||||
pDudeInfo->damageVal[i] = MulScale(Handicap[gSkill], pDudeInfo->startDamage[i], 8);
|
||||
|
@ -713,20 +713,20 @@ void playerSetGodMode(PLAYER* pPlayer, bool bGodMode)
|
|||
void playerResetInertia(PLAYER* pPlayer)
|
||||
{
|
||||
POSTURE* pPosture = &pPlayer->pPosture[pPlayer->lifeMode][pPlayer->posture];
|
||||
pPlayer->zView = pPlayer->actor->spr.pos.Z - pPosture->eyeAboveZ;
|
||||
pPlayer->zWeapon = pPlayer->actor->spr.pos.Z - pPosture->weaponAboveZ;
|
||||
pPlayer->actor->oviewzoffset = pPlayer->actor->viewzoffset = pPlayer->zView - pPlayer->actor->spr.pos.Z;
|
||||
pPlayer->zView = pPlayer->GetActor()->spr.pos.Z - pPosture->eyeAboveZ;
|
||||
pPlayer->zWeapon = pPlayer->GetActor()->spr.pos.Z - pPosture->weaponAboveZ;
|
||||
pPlayer->GetActor()->oviewzoffset = pPlayer->GetActor()->viewzoffset = pPlayer->zView - pPlayer->GetActor()->spr.pos.Z;
|
||||
viewBackupView(pPlayer->nPlayer);
|
||||
}
|
||||
|
||||
void playerCorrectInertia(PLAYER* pPlayer, const DVector3& oldpos)
|
||||
{
|
||||
auto zAdj = pPlayer->actor->spr.pos.Z - oldpos.Z;
|
||||
auto zAdj = pPlayer->GetActor()->spr.pos.Z - oldpos.Z;
|
||||
pPlayer->zView += zAdj;
|
||||
pPlayer->zWeapon += zAdj;
|
||||
pPlayer->actor->opos.XY() += pPlayer->actor->spr.pos.XY() - oldpos.XY();
|
||||
pPlayer->GetActor()->opos.XY() += pPlayer->GetActor()->spr.pos.XY() - oldpos.XY();
|
||||
pPlayer->ozView += zAdj;
|
||||
pPlayer->actor->opos.Z += zAdj;
|
||||
pPlayer->GetActor()->opos.Z += zAdj;
|
||||
}
|
||||
|
||||
void playerResetPowerUps(PLAYER* pPlayer)
|
||||
|
@ -801,7 +801,7 @@ void playerStart(int nPlayer, int bNewLevel)
|
|||
auto actor = actSpawnSprite(pStartZone->sector, pStartZone->pos, 6, 1);
|
||||
assert(actor->hasX());
|
||||
pPlayer->actor = actor;
|
||||
pPlayer->Angles.initialize(pPlayer->actor);
|
||||
pPlayer->Angles.initialize(pPlayer->GetActor());
|
||||
DUDEINFO* pDudeInfo = &dudeInfo[kDudePlayer1 + nPlayer - kDudeBase];
|
||||
pPlayer->pDudeInfo = pDudeInfo;
|
||||
playerSetRace(pPlayer, kModeHuman);
|
||||
|
@ -819,9 +819,9 @@ void playerStart(int nPlayer, int bNewLevel)
|
|||
actor->spr.flags = 15;
|
||||
actor->xspr.burnTime = 0;
|
||||
actor->SetBurnSource(nullptr);
|
||||
pPlayer->actor->xspr.health = pDudeInfo->startHealth << 4;
|
||||
pPlayer->actor->spr.cstat &= ~CSTAT_SPRITE_INVISIBLE;
|
||||
pPlayer->actor->spr.Angles.Pitch = pPlayer->Angles.ViewAngles.Pitch = nullAngle;
|
||||
pPlayer->GetActor()->xspr.health = pDudeInfo->startHealth << 4;
|
||||
pPlayer->GetActor()->spr.cstat &= ~CSTAT_SPRITE_INVISIBLE;
|
||||
pPlayer->GetActor()->spr.Angles.Pitch = pPlayer->Angles.ViewAngles.Pitch = nullAngle;
|
||||
pPlayer->slope = 0;
|
||||
pPlayer->fragger = nullptr;
|
||||
pPlayer->underwaterTime = 1200;
|
||||
|
@ -908,7 +908,7 @@ void playerStart(int nPlayer, int bNewLevel)
|
|||
if (IsUnderwaterSector(actor->sector()))
|
||||
{
|
||||
pPlayer->posture = 1;
|
||||
pPlayer->actor->xspr.medium = kMediumWater;
|
||||
pPlayer->GetActor()->xspr.medium = kMediumWater;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1011,7 +1011,7 @@ bool findDroppedLeech(PLAYER* a1, DBloodActor* a2)
|
|||
{
|
||||
if (a2 == actor)
|
||||
continue;
|
||||
if (actor->spr.type == kThingDroppedLifeLeech && actor->GetOwner() == a1->actor)
|
||||
if (actor->spr.type == kThingDroppedLifeLeech && actor->GetOwner() == a1->GetActor())
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
|
@ -1028,12 +1028,12 @@ bool PickupItem(PLAYER* pPlayer, DBloodActor* itemactor)
|
|||
char buffer[80];
|
||||
int pickupSnd = 775;
|
||||
int nType = itemactor->spr.type - kItemBase;
|
||||
auto plActor = pPlayer->actor;
|
||||
auto plActor = pPlayer->GetActor();
|
||||
|
||||
switch (itemactor->spr.type) {
|
||||
case kItemShadowCloak:
|
||||
#ifdef NOONE_EXTENSIONS
|
||||
if (isGrown(pPlayer->actor) || !powerupActivate(pPlayer, nType)) return false;
|
||||
if (isGrown(pPlayer->GetActor()) || !powerupActivate(pPlayer, nType)) return false;
|
||||
#else
|
||||
if (!powerupActivate(pPlayer, nType)) return false;
|
||||
#endif
|
||||
|
@ -1045,10 +1045,10 @@ bool PickupItem(PLAYER* pPlayer, DBloodActor* itemactor)
|
|||
if (gModernMap) {
|
||||
switch (itemactor->spr.type) {
|
||||
case kItemShroomShrink:
|
||||
if (isShrinked(pPlayer->actor)) return false;
|
||||
if (isShrinked(pPlayer->GetActor())) return false;
|
||||
break;
|
||||
case kItemShroomGrow:
|
||||
if (isGrown(pPlayer->actor)) return false;
|
||||
if (isGrown(pPlayer->GetActor())) return false;
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -1232,7 +1232,7 @@ bool PickupItem(PLAYER* pPlayer, DBloodActor* itemactor)
|
|||
addPower = itemactor->xspr.data1;
|
||||
#endif
|
||||
|
||||
if (!actHealDude(pPlayer->actor, addPower, gPowerUpInfo[nType].maxTime)) return 0;
|
||||
if (!actHealDude(pPlayer->GetActor(), addPower, gPowerUpInfo[nType].maxTime)) return 0;
|
||||
return 1;
|
||||
}
|
||||
case kItemHealthDoctorBag:
|
||||
|
@ -1270,7 +1270,7 @@ bool PickupAmmo(PLAYER* pPlayer, DBloodActor* ammoactor)
|
|||
pPlayer->ammoCount[nAmmoType] = ClipHigh(pPlayer->ammoCount[nAmmoType] + pAmmoItemData->count, gAmmoInfo[nAmmoType].max);
|
||||
|
||||
if (pAmmoItemData->weaponType) pPlayer->hasWeapon[pAmmoItemData->weaponType] = 1;
|
||||
sfxPlay3DSound(pPlayer->actor, 782, -1, 0);
|
||||
sfxPlay3DSound(pPlayer->GetActor(), 782, -1, 0);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
@ -1303,7 +1303,7 @@ bool PickupWeapon(PLAYER* pPlayer, DBloodActor* weaponactor)
|
|||
pPlayer->weaponState = 0;
|
||||
pPlayer->nextWeapon = nNewWeapon;
|
||||
}
|
||||
sfxPlay3DSound(pPlayer->actor, 777, -1, 0);
|
||||
sfxPlay3DSound(pPlayer->GetActor(), 777, -1, 0);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
@ -1315,7 +1315,7 @@ bool PickupWeapon(PLAYER* pPlayer, DBloodActor* weaponactor)
|
|||
else
|
||||
pPlayer->ammoCount[nAmmoType] = ClipHigh(pPlayer->ammoCount[nAmmoType] + pWeaponItemData->count, gAmmoInfo[nAmmoType].max);
|
||||
|
||||
sfxPlay3DSound(pPlayer->actor, 777, -1, 0);
|
||||
sfxPlay3DSound(pPlayer->GetActor(), 777, -1, 0);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
@ -1378,7 +1378,7 @@ void PickUp(PLAYER* pPlayer, DBloodActor* actor)
|
|||
|
||||
void CheckPickUp(PLAYER* pPlayer)
|
||||
{
|
||||
auto plActor = pPlayer->actor;
|
||||
auto plActor = pPlayer->GetActor();
|
||||
auto ppos = plActor->spr.pos;
|
||||
auto pSector = plActor->sector();
|
||||
BloodStatIterator it(kStatItem);
|
||||
|
@ -1419,10 +1419,10 @@ void CheckPickUp(PLAYER* pPlayer)
|
|||
|
||||
int ActionScan(PLAYER* pPlayer, HitInfo* out)
|
||||
{
|
||||
auto plActor = pPlayer->actor;
|
||||
auto plActor = pPlayer->GetActor();
|
||||
*out = {};
|
||||
auto pos = DVector3(plActor->spr.Angles.Yaw.ToVector(), pPlayer->slope);
|
||||
int hit = HitScan(pPlayer->actor, pPlayer->zView, pos, 0x10000040, 128);
|
||||
int hit = HitScan(pPlayer->GetActor(), pPlayer->zView, pos, 0x10000040, 128);
|
||||
double hitDist = (plActor->spr.pos.XY() - gHitInfo.hitpos.XY()).Length();
|
||||
if (hitDist < 64)
|
||||
{
|
||||
|
@ -1519,7 +1519,7 @@ void ProcessInput(PLAYER* pPlayer)
|
|||
Item_JumpBoots = 3
|
||||
};
|
||||
|
||||
DBloodActor* actor = pPlayer->actor;
|
||||
DBloodActor* actor = pPlayer->GetActor();
|
||||
POSTURE* pPosture = &pPlayer->pPosture[pPlayer->lifeMode][pPlayer->posture];
|
||||
InputPacket* pInput = &pPlayer->input;
|
||||
|
||||
|
@ -1541,11 +1541,11 @@ void ProcessInput(PLAYER* pPlayer)
|
|||
DBloodActor* fragger = pPlayer->fragger;
|
||||
if (fragger)
|
||||
{
|
||||
pPlayer->actor->spr.Angles.Yaw = (fragger->spr.pos.XY() - actor->spr.pos.XY()).Angle();
|
||||
pPlayer->GetActor()->spr.Angles.Yaw = (fragger->spr.pos.XY() - actor->spr.pos.XY()).Angle();
|
||||
}
|
||||
pPlayer->deathTime += 4;
|
||||
if (!bSeqStat)
|
||||
pPlayer->actor->spr.Angles.Pitch = gi->playerPitchMax() * (1. - BobVal(min((pPlayer->deathTime << 3) + 512, 1536))) * 0.5;
|
||||
pPlayer->GetActor()->spr.Angles.Pitch = gi->playerPitchMax() * (1. - BobVal(min((pPlayer->deathTime << 3) + 512, 1536))) * 0.5;
|
||||
if (pPlayer->curWeapon)
|
||||
pInput->setNewWeapon(pPlayer->curWeapon);
|
||||
if (pInput->actions & SB_OPEN)
|
||||
|
@ -1553,14 +1553,14 @@ void ProcessInput(PLAYER* pPlayer)
|
|||
if (bSeqStat)
|
||||
{
|
||||
if (pPlayer->deathTime > 360)
|
||||
seqSpawn(pPlayer->pDudeInfo->seqStartID + 14, pPlayer->actor, nPlayerSurviveClient);
|
||||
seqSpawn(pPlayer->pDudeInfo->seqStartID + 14, pPlayer->GetActor(), nPlayerSurviveClient);
|
||||
}
|
||||
else if (seqGetStatus(pPlayer->actor) < 0)
|
||||
else if (seqGetStatus(pPlayer->GetActor()) < 0)
|
||||
{
|
||||
if (pPlayer->actor)
|
||||
pPlayer->actor->spr.type = kThingBloodChunks;
|
||||
actPostSprite(pPlayer->actor, kStatThing);
|
||||
seqSpawn(pPlayer->pDudeInfo->seqStartID + 15, pPlayer->actor, -1);
|
||||
if (pPlayer->GetActor())
|
||||
pPlayer->GetActor()->spr.type = kThingBloodChunks;
|
||||
actPostSprite(pPlayer->GetActor(), kStatThing);
|
||||
seqSpawn(pPlayer->pDudeInfo->seqStartID + 15, pPlayer->GetActor(), -1);
|
||||
playerReset(pPlayer);
|
||||
if (gGameOptions.nGameType == 0 && numplayers == 1)
|
||||
{
|
||||
|
@ -1694,24 +1694,24 @@ void ProcessInput(PLAYER* pPlayer)
|
|||
pPlayer->handTime = ClipLow(pPlayer->handTime - 4 * (6 - gGameOptions.nDifficulty), 0);
|
||||
if (pPlayer->handTime <= 0 && pPlayer->hand)
|
||||
{
|
||||
DBloodActor* pactor = pPlayer->actor;
|
||||
auto spawned = actSpawnDude(pactor, kDudeHand, pPlayer->actor->clipdist * 0.5);
|
||||
DBloodActor* pactor = pPlayer->GetActor();
|
||||
auto spawned = actSpawnDude(pactor, kDudeHand, pPlayer->GetActor()->clipdist * 0.5);
|
||||
if (spawned)
|
||||
{
|
||||
spawned->spr.Angles.Yaw += DAngle180;
|
||||
spawned->vel.XY() = pPlayer->actor->vel.XY() + (64. / 3.) * pPlayer->actor->spr.Angles.Yaw.ToVector();
|
||||
spawned->vel.Z = pPlayer->actor->vel.Z;
|
||||
spawned->vel.XY() = pPlayer->GetActor()->vel.XY() + (64. / 3.) * pPlayer->GetActor()->spr.Angles.Yaw.ToVector();
|
||||
spawned->vel.Z = pPlayer->GetActor()->vel.Z;
|
||||
}
|
||||
pPlayer->hand = 0;
|
||||
}
|
||||
pInput->actions &= ~SB_OPEN;
|
||||
}
|
||||
|
||||
const int florhit = pPlayer->actor->hit.florhit.type;
|
||||
const int florhit = pPlayer->GetActor()->hit.florhit.type;
|
||||
pPlayer->Angles.doViewPitch(actor->xspr.height < 16 && (florhit == kHitSector || florhit == 0));
|
||||
pPlayer->Angles.doPitchInput(pInput);
|
||||
|
||||
pPlayer->slope = pPlayer->actor->spr.Angles.Pitch.Tan();
|
||||
pPlayer->slope = pPlayer->GetActor()->spr.Angles.Pitch.Tan();
|
||||
if (pInput->actions & SB_INVPREV)
|
||||
{
|
||||
pInput->actions &= ~SB_INVPREV;
|
||||
|
@ -1766,7 +1766,7 @@ void ProcessInput(PLAYER* pPlayer)
|
|||
|
||||
void playerProcess(PLAYER* pPlayer)
|
||||
{
|
||||
DBloodActor* actor = pPlayer->actor;
|
||||
DBloodActor* actor = pPlayer->GetActor();
|
||||
POSTURE* pPosture = &pPlayer->pPosture[pPlayer->lifeMode][pPlayer->posture];
|
||||
powerupProcess(pPlayer);
|
||||
double top, bottom;
|
||||
|
@ -1792,14 +1792,14 @@ void playerProcess(PLAYER* pPlayer)
|
|||
}
|
||||
ProcessInput(pPlayer);
|
||||
pPlayer->zViewVel = interpolatedvalue(pPlayer->zViewVel, actor->vel.Z, FixedToFloat(0x7000));
|
||||
double dz = pPlayer->actor->spr.pos.Z - pPosture->eyeAboveZ - pPlayer->zView;
|
||||
double dz = pPlayer->GetActor()->spr.pos.Z - pPosture->eyeAboveZ - pPlayer->zView;
|
||||
if (dz > 0)
|
||||
pPlayer->zViewVel += dz * FixedToFloat(0xa000);
|
||||
else
|
||||
pPlayer->zViewVel += dz * FixedToFloat(0x1800);
|
||||
pPlayer->zView += pPlayer->zViewVel;
|
||||
pPlayer->zWeaponVel = interpolatedvalue(pPlayer->zWeaponVel, actor->vel.Z, FixedToFloat(0x5000));
|
||||
dz = pPlayer->actor->spr.pos.Z - pPosture->weaponAboveZ - pPlayer->zWeapon;
|
||||
dz = pPlayer->GetActor()->spr.pos.Z - pPosture->weaponAboveZ - pPlayer->zWeapon;
|
||||
if (dz > 0)
|
||||
pPlayer->zWeaponVel += dz * FixedToFloat(0x8000);
|
||||
else
|
||||
|
@ -1846,7 +1846,7 @@ void playerProcess(PLAYER* pPlayer)
|
|||
pPlayer->painEffect = ClipLow(pPlayer->painEffect - 4, 0);
|
||||
pPlayer->blindEffect = ClipLow(pPlayer->blindEffect - 4, 0);
|
||||
pPlayer->pickupEffect = ClipLow(pPlayer->pickupEffect - 4, 0);
|
||||
if (pPlayer->nPlayer == myconnectindex && pPlayer->actor->xspr.health == 0)
|
||||
if (pPlayer->nPlayer == myconnectindex && pPlayer->GetActor()->xspr.health == 0)
|
||||
pPlayer->hand = 0;
|
||||
if (!actor->xspr.health)
|
||||
return;
|
||||
|
@ -1894,12 +1894,12 @@ void playerProcess(PLAYER* pPlayer)
|
|||
|
||||
DBloodActor* playerFireMissile(PLAYER* pPlayer, double xyoff, const DVector3& dv, int nType)
|
||||
{
|
||||
return actFireMissile(pPlayer->actor, xyoff, pPlayer->zWeapon - pPlayer->actor->spr.pos.Z, dv, nType);
|
||||
return actFireMissile(pPlayer->GetActor(), xyoff, pPlayer->zWeapon - pPlayer->GetActor()->spr.pos.Z, dv, nType);
|
||||
}
|
||||
|
||||
DBloodActor* playerFireThing(PLAYER* pPlayer, double xyoff, double zvel, int thingType, double nSpeed)
|
||||
{
|
||||
return actFireThing(pPlayer->actor, xyoff, pPlayer->zWeapon - pPlayer->actor->spr.pos.Z, pPlayer->slope * 0.25 + zvel, thingType, nSpeed);
|
||||
return actFireThing(pPlayer->GetActor(), xyoff, pPlayer->zWeapon - pPlayer->GetActor()->spr.pos.Z, pPlayer->slope * 0.25 + zvel, thingType, nSpeed);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
|
@ -1914,9 +1914,9 @@ void playerFrag(PLAYER* pKiller, PLAYER* pVictim)
|
|||
assert(pVictim != NULL);
|
||||
|
||||
char buffer[128] = "";
|
||||
int nKiller = pKiller->actor->spr.type - kDudePlayer1;
|
||||
int nKiller = pKiller->GetActor()->spr.type - kDudePlayer1;
|
||||
assert(nKiller >= 0 && nKiller < kMaxPlayers);
|
||||
int nVictim = pVictim->actor->spr.type - kDudePlayer1;
|
||||
int nVictim = pVictim->GetActor()->spr.type - kDudePlayer1;
|
||||
assert(nVictim >= 0 && nVictim < kMaxPlayers);
|
||||
if (nKiller == nVictim)
|
||||
{
|
||||
|
@ -2034,7 +2034,7 @@ int playerDamageArmor(PLAYER* pPlayer, DAMAGE_TYPE nType, int nDamage)
|
|||
|
||||
void flagDropped(PLAYER* pPlayer, int a2)
|
||||
{
|
||||
DBloodActor* playeractor = pPlayer->actor;
|
||||
DBloodActor* playeractor = pPlayer->GetActor();
|
||||
DBloodActor* actor;
|
||||
char buffer[80];
|
||||
switch (a2)
|
||||
|
@ -2074,7 +2074,7 @@ int playerDamageSprite(DBloodActor* source, PLAYER* pPlayer, DAMAGE_TYPE nDamage
|
|||
nDamage = playerDamageArmor(pPlayer, nDamageType, nDamage);
|
||||
pPlayer->painEffect = ClipHigh(pPlayer->painEffect + (nDamage >> 3), 600);
|
||||
|
||||
DBloodActor* pActor = pPlayer->actor;
|
||||
DBloodActor* pActor = pPlayer->GetActor();
|
||||
DUDEINFO* pDudeInfo = getDudeInfo(pActor->spr.type);
|
||||
int nDeathSeqID = -1;
|
||||
int nKneelingPlayer = -1;
|
||||
|
@ -2087,12 +2087,12 @@ int playerDamageSprite(DBloodActor* source, PLAYER* pPlayer, DAMAGE_TYPE nDamage
|
|||
{
|
||||
case kDamageSpirit:
|
||||
nDeathSeqID = 18;
|
||||
sfxPlay3DSound(pPlayer->actor, 716, 0, 0);
|
||||
sfxPlay3DSound(pPlayer->GetActor(), 716, 0, 0);
|
||||
break;
|
||||
case kDamageExplode:
|
||||
GibSprite(pActor, GIBTYPE_7, NULL, NULL);
|
||||
GibSprite(pActor, GIBTYPE_15, NULL, NULL);
|
||||
pPlayer->actor->spr.cstat |= CSTAT_SPRITE_INVISIBLE;
|
||||
pPlayer->GetActor()->spr.cstat |= CSTAT_SPRITE_INVISIBLE;
|
||||
nDeathSeqID = 17;
|
||||
break;
|
||||
default:
|
||||
|
@ -2131,10 +2131,10 @@ int playerDamageSprite(DBloodActor* source, PLAYER* pPlayer, DAMAGE_TYPE nDamage
|
|||
nSound = pDamageInfo->Kills[Random(3)];
|
||||
if (nDamageType == kDamageDrown && pActor->xspr.medium == kMediumWater && !pPlayer->hand)
|
||||
nSound = 714;
|
||||
sfxPlay3DSound(pPlayer->actor, nSound, 0, 6);
|
||||
sfxPlay3DSound(pPlayer->GetActor(), nSound, 0, 6);
|
||||
return nDamage;
|
||||
}
|
||||
sfxKill3DSound(pPlayer->actor, -1, 441);
|
||||
sfxKill3DSound(pPlayer->GetActor(), -1, 441);
|
||||
if (gGameOptions.nGameType == 3 && pPlayer->hasFlag) {
|
||||
if (pPlayer->hasFlag & 1) flagDropped(pPlayer, kItemFlagA);
|
||||
if (pPlayer->hasFlag & 2) flagDropped(pPlayer, kItemFlagB);
|
||||
|
@ -2149,14 +2149,14 @@ int playerDamageSprite(DBloodActor* source, PLAYER* pPlayer, DAMAGE_TYPE nDamage
|
|||
switch (nDamageType)
|
||||
{
|
||||
case kDamageExplode:
|
||||
sfxPlay3DSound(pPlayer->actor, 717, 0, 0);
|
||||
sfxPlay3DSound(pPlayer->GetActor(), 717, 0, 0);
|
||||
GibSprite(pActor, GIBTYPE_7, NULL, NULL);
|
||||
GibSprite(pActor, GIBTYPE_15, NULL, NULL);
|
||||
pPlayer->actor->spr.cstat |= CSTAT_SPRITE_INVISIBLE;
|
||||
pPlayer->GetActor()->spr.cstat |= CSTAT_SPRITE_INVISIBLE;
|
||||
nDeathSeqID = 2;
|
||||
break;
|
||||
case kDamageBurn:
|
||||
sfxPlay3DSound(pPlayer->actor, 718, 0, 0);
|
||||
sfxPlay3DSound(pPlayer->GetActor(), 718, 0, 0);
|
||||
nDeathSeqID = 3;
|
||||
break;
|
||||
case kDamageDrown:
|
||||
|
@ -2166,16 +2166,16 @@ int playerDamageSprite(DBloodActor* source, PLAYER* pPlayer, DAMAGE_TYPE nDamage
|
|||
if (nHealth < -20 && gGameOptions.nGameType >= 2 && Chance(0x4000))
|
||||
{
|
||||
DAMAGEINFO* pDamageInfo = &damageInfo[nDamageType];
|
||||
sfxPlay3DSound(pPlayer->actor, pDamageInfo->at10[0], 0, 2);
|
||||
sfxPlay3DSound(pPlayer->GetActor(), pDamageInfo->at10[0], 0, 2);
|
||||
nDeathSeqID = 16;
|
||||
nKneelingPlayer = nPlayerKneelClient;
|
||||
powerupActivate(pPlayer, kPwUpDeliriumShroom);
|
||||
pActor->SetTarget(source);
|
||||
evPostActor(pPlayer->actor, 15, kCallbackFinishHim);
|
||||
evPostActor(pPlayer->GetActor(), 15, kCallbackFinishHim);
|
||||
}
|
||||
else
|
||||
{
|
||||
sfxPlay3DSound(pPlayer->actor, 716, 0, 0);
|
||||
sfxPlay3DSound(pPlayer->GetActor(), 716, 0, 0);
|
||||
nDeathSeqID = 1;
|
||||
}
|
||||
break;
|
||||
|
@ -2191,7 +2191,7 @@ int playerDamageSprite(DBloodActor* source, PLAYER* pPlayer, DAMAGE_TYPE nDamage
|
|||
pActor->spr.flags |= 7;
|
||||
for (int p = connecthead; p >= 0; p = connectpoint2[p])
|
||||
{
|
||||
if (gPlayer[p].fragger == pPlayer->actor && gPlayer[p].deathTime > 0)
|
||||
if (gPlayer[p].fragger == pPlayer->GetActor() && gPlayer[p].deathTime > 0)
|
||||
gPlayer[p].fragger = nullptr;
|
||||
}
|
||||
FragPlayer(pPlayer, source);
|
||||
|
@ -2199,21 +2199,21 @@ int playerDamageSprite(DBloodActor* source, PLAYER* pPlayer, DAMAGE_TYPE nDamage
|
|||
|
||||
#ifdef NOONE_EXTENSIONS
|
||||
// allow drop items and keys in multiplayer
|
||||
if (gModernMap && gGameOptions.nGameType != 0 && pPlayer->actor->xspr.health <= 0) {
|
||||
if (gModernMap && gGameOptions.nGameType != 0 && pPlayer->GetActor()->xspr.health <= 0) {
|
||||
|
||||
DBloodActor* pItem = nullptr;
|
||||
if (pPlayer->actor->xspr.dropMsg && (pItem = actDropItem(pActor, pPlayer->actor->xspr.dropMsg)) != NULL)
|
||||
if (pPlayer->GetActor()->xspr.dropMsg && (pItem = actDropItem(pActor, pPlayer->GetActor()->xspr.dropMsg)) != NULL)
|
||||
evPostActor(pItem, 500, kCallbackRemove);
|
||||
|
||||
if (pPlayer->actor->xspr.key) {
|
||||
if (pPlayer->GetActor()->xspr.key) {
|
||||
|
||||
int i; // if all players have this key, don't drop it
|
||||
for (i = connecthead; i >= 0; i = connectpoint2[i]) {
|
||||
if (!gPlayer[i].hasKey[pPlayer->actor->xspr.key])
|
||||
if (!gPlayer[i].hasKey[pPlayer->GetActor()->xspr.key])
|
||||
break;
|
||||
}
|
||||
|
||||
if (i == 0 && (pItem = actDropKey(pActor, (pPlayer->actor->xspr.key + kItemKeyBase) - 1)) != NULL)
|
||||
if (i == 0 && (pItem = actDropKey(pActor, (pPlayer->GetActor()->xspr.key + kItemKeyBase) - 1)) != NULL)
|
||||
evPostActor(pItem, 500, kCallbackRemove);
|
||||
|
||||
}
|
||||
|
@ -2224,7 +2224,7 @@ int playerDamageSprite(DBloodActor* source, PLAYER* pPlayer, DAMAGE_TYPE nDamage
|
|||
|
||||
}
|
||||
assert(getSequence(pDudeInfo->seqStartID + nDeathSeqID) != NULL);
|
||||
seqSpawn(pDudeInfo->seqStartID + nDeathSeqID, pPlayer->actor, nKneelingPlayer);
|
||||
seqSpawn(pDudeInfo->seqStartID + nDeathSeqID, pPlayer->GetActor(), nKneelingPlayer);
|
||||
return nDamage;
|
||||
}
|
||||
|
||||
|
@ -2252,9 +2252,9 @@ int UseAmmo(PLAYER* pPlayer, int nAmmoType, int nDec)
|
|||
|
||||
void voodooTarget(PLAYER* pPlayer)
|
||||
{
|
||||
DBloodActor* actor = pPlayer->actor;
|
||||
DBloodActor* actor = pPlayer->GetActor();
|
||||
double aimz = pPlayer->aim.Z;
|
||||
double dz = pPlayer->zWeapon - pPlayer->actor->spr.pos.Z;
|
||||
double dz = pPlayer->zWeapon - pPlayer->GetActor()->spr.pos.Z;
|
||||
if (UseAmmo(pPlayer, 9, 0) < 8)
|
||||
{
|
||||
pPlayer->voodooTargets = 0;
|
||||
|
@ -2296,14 +2296,14 @@ void playerLandingSound(PLAYER* pPlayer)
|
|||
604,
|
||||
603
|
||||
};
|
||||
SPRITEHIT* pHit = &pPlayer->actor->hit;
|
||||
SPRITEHIT* pHit = &pPlayer->GetActor()->hit;
|
||||
if (pHit->florhit.type != kHitNone)
|
||||
{
|
||||
if (!gGameOptions.bFriendlyFire && pHit->florhit.type == kHitSprite && IsTargetTeammate(pPlayer, pHit->florhit.actor()))
|
||||
return;
|
||||
int nSurf = tileGetSurfType(pHit->florhit);
|
||||
if (nSurf)
|
||||
sfxPlay3DSound(pPlayer->actor, surfaceSound[nSurf], -1, 0);
|
||||
sfxPlay3DSound(pPlayer->GetActor(), surfaceSound[nSurf], -1, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2345,7 +2345,7 @@ void PlayerKneelsOver(int, DBloodActor* actor)
|
|||
{
|
||||
for (int p = connecthead; p >= 0; p = connectpoint2[p])
|
||||
{
|
||||
if (gPlayer[p].actor == actor)
|
||||
if (gPlayer[p].GetActor() == actor)
|
||||
{
|
||||
PLAYER* pPlayer = &gPlayer[p];
|
||||
playerDamageSprite(pPlayer->fragger, pPlayer, kDamageSpirit, 500 << 4);
|
||||
|
@ -2539,7 +2539,7 @@ void SerializePlayers(FSerializer& arc)
|
|||
{
|
||||
for (int i = 0; i < gNetPlayers; i++)
|
||||
{
|
||||
gPlayer[i].pDudeInfo = &dudeInfo[gPlayer[i].actor->spr.type - kDudeBase];
|
||||
gPlayer[i].pDudeInfo = &dudeInfo[gPlayer[i].GetActor()->spr.type - kDudeBase];
|
||||
|
||||
#ifdef NOONE_EXTENSIONS
|
||||
// load qav scene
|
||||
|
|
|
@ -174,6 +174,11 @@ struct PLAYER
|
|||
int player_par;
|
||||
int nWaterPal;
|
||||
POSTURE pPosture[kModeMax][kPostureMax];
|
||||
|
||||
inline DBloodActor* GetActor()
|
||||
{
|
||||
return actor;
|
||||
}
|
||||
};
|
||||
|
||||
struct AMMOINFO
|
||||
|
|
|
@ -229,7 +229,7 @@ void QAV::Draw(int ticks, int stat, int shade, int palnum, bool to3dview, double
|
|||
|
||||
void QAV::Play(int start, int end, int nCallback, PLAYER* pData)
|
||||
{
|
||||
auto pActor = pData ? pData->actor : nullptr;
|
||||
auto pActor = pData ? pData->GetActor() : nullptr;
|
||||
assert(ticksPerFrame > 0);
|
||||
int frame;
|
||||
int ticks;
|
||||
|
|
|
@ -66,7 +66,7 @@ void BloodSoundEngine::CalcPosVel(int type, const void* source, const float pt[3
|
|||
PLAYER* pPlayer = &gPlayer[myconnectindex];
|
||||
FVector3 camera;
|
||||
|
||||
if (pPlayer && pPlayer->actor) camera = GetSoundPos(pPlayer->actor->spr.pos);
|
||||
if (pPlayer && pPlayer->GetActor()) camera = GetSoundPos(pPlayer->GetActor()->spr.pos);
|
||||
else camera = { 0, 0, 0 }; // don't crash if there is no player.
|
||||
|
||||
if (vel) vel->Zero();
|
||||
|
@ -108,11 +108,11 @@ void GameInterface::UpdateSounds()
|
|||
PLAYER* pPlayer = &gPlayer[myconnectindex];
|
||||
SoundListener listener;
|
||||
|
||||
if (pPlayer->actor)
|
||||
if (pPlayer->GetActor())
|
||||
{
|
||||
listener.angle = float(-pPlayer->actor->spr.Angles.Yaw.Radians());
|
||||
listener.angle = float(-pPlayer->GetActor()->spr.Angles.Yaw.Radians());
|
||||
listener.velocity.Zero();
|
||||
listener.position = GetSoundPos(pPlayer->actor->spr.pos);
|
||||
listener.position = GetSoundPos(pPlayer->GetActor()->spr.pos);
|
||||
listener.valid = true;
|
||||
}
|
||||
else
|
||||
|
|
|
@ -238,7 +238,7 @@ void LifeLeechOperate(DBloodActor* actor, EVENT event)
|
|||
if (nPlayer >= 0 && nPlayer < kMaxPlayers && playeringame[nPlayer])
|
||||
{
|
||||
PLAYER* pPlayer = &gPlayer[nPlayer];
|
||||
if (pPlayer->actor->xspr.health > 0)
|
||||
if (pPlayer->GetActor()->xspr.health > 0)
|
||||
{
|
||||
evKillActor(actor);
|
||||
pPlayer->ammoCount[8] = ClipHigh(pPlayer->ammoCount[8] + actor->xspr.data3, gAmmoInfo[8].max);
|
||||
|
@ -511,7 +511,7 @@ void OperateSprite(DBloodActor* actor, EVENT event)
|
|||
SetSpriteState(actor, 1, initiator);
|
||||
for (int p = connecthead; p >= 0; p = connectpoint2[p])
|
||||
{
|
||||
auto vec = actor->spr.pos - gPlayer[p].actor->spr.pos;
|
||||
auto vec = actor->spr.pos - gPlayer[p].GetActor()->spr.pos;
|
||||
int nDist = int(vec.LengthSquared()) + 0x40000;
|
||||
gPlayer[p].quakeEffect = DivScale(actor->xspr.data1, nDist, 16);
|
||||
}
|
||||
|
@ -600,7 +600,7 @@ void OperateSprite(DBloodActor* actor, EVENT event)
|
|||
{
|
||||
PLAYER* pPlayer = &gPlayer[myconnectindex];
|
||||
|
||||
if (pPlayer->actor->xspr.health <= 0)
|
||||
if (pPlayer->GetActor()->xspr.health <= 0)
|
||||
break;
|
||||
pPlayer->restTime = 0;
|
||||
}
|
||||
|
@ -960,7 +960,7 @@ void TranslateSector(sectortype* pSector, double wave1, double wave2, const DVec
|
|||
viewBackupSpriteLoc(ac);
|
||||
ac->spr.pos.XY() = spot + pt_w2 - pivot;
|
||||
ac->spr.Angles.Yaw += angleofs;
|
||||
if (!VanillaMode() && ac->IsPlayerActor()) gPlayer[ac->spr.type - kDudePlayer1].actor->spr.Angles.Yaw += angleofs;
|
||||
if (!VanillaMode() && ac->IsPlayerActor()) gPlayer[ac->spr.type - kDudePlayer1].GetActor()->spr.Angles.Yaw += angleofs;
|
||||
}
|
||||
else if (ac->spr.cstat & CSTAT_SPRITE_MOVE_REVERSE)
|
||||
{
|
||||
|
@ -968,7 +968,7 @@ void TranslateSector(sectortype* pSector, double wave1, double wave2, const DVec
|
|||
viewBackupSpriteLoc(ac);
|
||||
ac->spr.pos.XY() = spot - pt_w2 + pivot;
|
||||
ac->spr.Angles.Yaw += angleofs;
|
||||
if (!VanillaMode() && ac->IsPlayerActor()) gPlayer[ac->spr.type - kDudePlayer1].actor->spr.Angles.Yaw += angleofs;
|
||||
if (!VanillaMode() && ac->IsPlayerActor()) gPlayer[ac->spr.type - kDudePlayer1].GetActor()->spr.Angles.Yaw += angleofs;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1620,7 +1620,7 @@ void OperateTeleport(sectortype* pSector)
|
|||
{
|
||||
playerResetInertia(pPlayer);
|
||||
pPlayer->zViewVel = pPlayer->zWeaponVel = 0;
|
||||
pPlayer->actor->PrevAngles.Yaw = pPlayer->actor->spr.Angles.Yaw = actor->spr.Angles.Yaw;
|
||||
pPlayer->GetActor()->PrevAngles.Yaw = pPlayer->GetActor()->spr.Angles.Yaw = actor->spr.Angles.Yaw;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -65,8 +65,8 @@ void viewBackupView(int nPlayer)
|
|||
pPlayer->obobWidth = pPlayer->bobWidth;
|
||||
pPlayer->oswayHeight = pPlayer->swayHeight;
|
||||
pPlayer->oswayWidth = pPlayer->swayWidth;
|
||||
pPlayer->actor->backuploc();
|
||||
pPlayer->actor->interpolated = true;
|
||||
pPlayer->GetActor()->backuploc();
|
||||
pPlayer->GetActor()->interpolated = true;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
|
@ -105,7 +105,7 @@ void viewDrawAimedPlayerName(PLAYER* pPlayer)
|
|||
if (!cl_idplayers || (pPlayer->aim.XY().isZero()))
|
||||
return;
|
||||
|
||||
int hit = HitScan(pPlayer->actor, pPlayer->zView, pPlayer->aim, CLIPMASK0, 512);
|
||||
int hit = HitScan(pPlayer->GetActor(), pPlayer->zView, pPlayer->aim, CLIPMASK0, 512);
|
||||
if (hit == 3)
|
||||
{
|
||||
auto actor = gHitInfo.actor();
|
||||
|
@ -412,7 +412,7 @@ static void DrawMap(PLAYER* pPlayer, const double interpfrac)
|
|||
setViewport(Hud_Stbar);
|
||||
tm = 1;
|
||||
}
|
||||
DrawOverheadMap(pPlayer->actor->interpolatedpos(interpfrac).XY(), pPlayer->Angles.getRenderAngles(interpfrac).Yaw, interpfrac);
|
||||
DrawOverheadMap(pPlayer->GetActor()->interpolatedpos(interpfrac).XY(), pPlayer->Angles.getRenderAngles(interpfrac).Yaw, interpfrac);
|
||||
if (tm)
|
||||
setViewport(hud_size);
|
||||
}
|
||||
|
@ -427,7 +427,7 @@ static void SetupView(PLAYER* pPlayer, DVector3& cPos, DRotator& cAngles, sector
|
|||
{
|
||||
double bobWidth, bobHeight;
|
||||
|
||||
pSector = pPlayer->actor->sector();
|
||||
pSector = pPlayer->GetActor()->sector();
|
||||
#if 0
|
||||
if (numplayers > 1 && pPlayer == gMe && gPrediction && gMe->actor->xspr.health > 0)
|
||||
{
|
||||
|
@ -457,7 +457,7 @@ static void SetupView(PLAYER* pPlayer, DVector3& cPos, DRotator& cAngles, sector
|
|||
else
|
||||
#endif
|
||||
{
|
||||
cPos = pPlayer->actor->getRenderPos(interpfrac);
|
||||
cPos = pPlayer->GetActor()->getRenderPos(interpfrac);
|
||||
cAngles = pPlayer->Angles.getRenderAngles(interpfrac);
|
||||
zDelta = interpolatedvalue(pPlayer->ozWeapon, pPlayer->zWeapon - pPlayer->zView - 12, interpfrac);
|
||||
bobWidth = interpolatedvalue(pPlayer->obobWidth, pPlayer->bobWidth, interpfrac);
|
||||
|
@ -482,7 +482,7 @@ static void SetupView(PLAYER* pPlayer, DVector3& cPos, DRotator& cAngles, sector
|
|||
}
|
||||
else
|
||||
{
|
||||
calcChaseCamPos(cPos, pPlayer->actor, &pSector, cAngles, interpfrac, 80.);
|
||||
calcChaseCamPos(cPos, pPlayer->GetActor(), &pSector, cAngles, interpfrac, 80.);
|
||||
}
|
||||
if (pSector != nullptr)
|
||||
CheckLink(cPos, &pSector);
|
||||
|
@ -590,8 +590,8 @@ void viewDrawScreen(bool sceneonly)
|
|||
else if (pPlayer->isUnderwater) {
|
||||
if (pPlayer->nWaterPal) basepal = pPlayer->nWaterPal;
|
||||
else {
|
||||
if (pPlayer->actor->xspr.medium == kMediumWater) basepal = 1;
|
||||
else if (pPlayer->actor->xspr.medium == kMediumGoo) basepal = 3;
|
||||
if (pPlayer->GetActor()->xspr.medium == kMediumWater) basepal = 1;
|
||||
else if (pPlayer->GetActor()->xspr.medium == kMediumGoo) basepal = 3;
|
||||
else basepal = 2;
|
||||
}
|
||||
}
|
||||
|
@ -684,16 +684,16 @@ void viewDrawScreen(bool sceneonly)
|
|||
|
||||
if (!sceneonly) hudDraw(pPlayer, pSector, shakeX, shakeY, zDelta, cAngles.Roll, basepal, interpfrac);
|
||||
DAngle deliriumPitchI = interpolatedvalue(maphoriz(deliriumPitchO), maphoriz(deliriumPitch), interpfrac);
|
||||
auto bakCstat = pPlayer->actor->spr.cstat;
|
||||
pPlayer->actor->spr.cstat |= (gViewPos == 0) ? CSTAT_SPRITE_INVISIBLE : CSTAT_SPRITE_TRANSLUCENT | CSTAT_SPRITE_TRANS_FLIP;
|
||||
auto bakCstat = pPlayer->GetActor()->spr.cstat;
|
||||
pPlayer->GetActor()->spr.cstat |= (gViewPos == 0) ? CSTAT_SPRITE_INVISIBLE : CSTAT_SPRITE_TRANSLUCENT | CSTAT_SPRITE_TRANS_FLIP;
|
||||
cAngles.Pitch -= deliriumPitchI;
|
||||
render_drawrooms(pPlayer->actor, cPos, pSector, cAngles, interpfrac);
|
||||
pPlayer->actor->spr.cstat = bakCstat;
|
||||
render_drawrooms(pPlayer->GetActor(), cPos, pSector, cAngles, interpfrac);
|
||||
pPlayer->GetActor()->spr.cstat = bakCstat;
|
||||
bDeliriumOld = bDelirium && gDeliriumBlur;
|
||||
|
||||
if (sceneonly) return;
|
||||
auto offsets = pPlayer->Angles.getCrosshairOffsets(interpfrac);
|
||||
DrawCrosshair(pPlayer->actor->xspr.health >> 4, offsets.first.X, offsets.first.Y, 2, offsets.second);
|
||||
DrawCrosshair(pPlayer->GetActor()->xspr.health >> 4, offsets.first.X, offsets.first.Y, 2, offsets.second);
|
||||
#if 0 // This currently does not work. May have to be redone as a hardware effect.
|
||||
if (v4 && gNetPlayers > 1)
|
||||
{
|
||||
|
@ -726,7 +726,7 @@ void viewDrawScreen(bool sceneonly)
|
|||
}
|
||||
UpdateDacs(0, true); // keep the view palette active only for the actual 3D view and its overlays.
|
||||
|
||||
MarkSectorSeen(pPlayer->actor->sector());
|
||||
MarkSectorSeen(pPlayer->GetActor()->sector());
|
||||
|
||||
if (automapMode != am_off)
|
||||
{
|
||||
|
@ -778,7 +778,7 @@ bool GameInterface::DrawAutomapPlayer(const DVector2& mxy, const DVector2& cpos,
|
|||
{
|
||||
if (i == gViewIndex || gGameOptions.nGameType == 1)
|
||||
{
|
||||
auto actor = gPlayer[i].actor;
|
||||
auto actor = gPlayer[i].GetActor();
|
||||
auto vect = OutAutomapVector(mxy - cpos, cangvect, czoom, xydim);
|
||||
|
||||
DrawTexture(twod, TexMan.GetGameTexture(actor->spr.spritetexture(), true), vect.X, vect.Y, DTA_ClipLeft, viewport3d.Left(), DTA_ClipTop, viewport3d.Top(), DTA_ScaleX, czoom * (2. / 3.), DTA_ScaleY, czoom * (2. / 3.), DTA_CenterOffset, true,
|
||||
|
|
|
@ -216,7 +216,7 @@ static bool CheckWeaponAmmo(PLAYER* pPlayer, int weapon, int ammotype, int count
|
|||
return 1;
|
||||
if (weapon == kWeapRemote && pPlayer->weaponAmmo == 11 && pPlayer->weaponState == 11)
|
||||
return 1;
|
||||
if (weapon == kWeapLifeLeech && pPlayer->actor->xspr.health > 0)
|
||||
if (weapon == kWeapLifeLeech && pPlayer->GetActor()->xspr.health > 0)
|
||||
return 1;
|
||||
return pPlayer->ammoCount[ammotype] >= count;
|
||||
}
|
||||
|
@ -235,7 +235,7 @@ static bool CheckAmmo(PLAYER* pPlayer, int ammotype, int count)
|
|||
return 1;
|
||||
if (pPlayer->curWeapon == kWeapRemote && pPlayer->weaponAmmo == 11 && pPlayer->weaponState == 11)
|
||||
return 1;
|
||||
if (pPlayer->curWeapon == kWeapLifeLeech && pPlayer->actor->xspr.health >= unsigned(count << 4))
|
||||
if (pPlayer->curWeapon == kWeapLifeLeech && pPlayer->GetActor()->xspr.health >= unsigned(count << 4))
|
||||
return 1;
|
||||
return pPlayer->ammoCount[ammotype] >= count;
|
||||
}
|
||||
|
@ -264,18 +264,18 @@ static bool checkAmmo2(const PLAYER* pPlayer, int ammotype, int amount)
|
|||
void SpawnBulletEject(PLAYER* pPlayer, double dist, int rdist)
|
||||
{
|
||||
POSTURE* pPosture = &pPlayer->pPosture[pPlayer->lifeMode][pPlayer->posture];
|
||||
pPlayer->zView = pPlayer->actor->spr.pos.Z - pPosture->eyeAboveZ;
|
||||
pPlayer->zView = pPlayer->GetActor()->spr.pos.Z - pPosture->eyeAboveZ;
|
||||
double dz = pPlayer->zWeapon - (pPlayer->zWeapon - pPlayer->zView) * 0.5;
|
||||
fxSpawnEjectingBrass(pPlayer->actor, dz, dist, rdist);
|
||||
fxSpawnEjectingBrass(pPlayer->GetActor(), dz, dist, rdist);
|
||||
}
|
||||
|
||||
void SpawnShellEject(PLAYER* pPlayer, double dist, int rdist)
|
||||
{
|
||||
POSTURE* pPosture = &pPlayer->pPosture[pPlayer->lifeMode][pPlayer->posture];
|
||||
pPlayer->zView = pPlayer->actor->spr.pos.Z - pPosture->eyeAboveZ;
|
||||
pPlayer->zView = pPlayer->GetActor()->spr.pos.Z - pPosture->eyeAboveZ;
|
||||
double t = pPlayer->zWeapon - pPlayer->zView;
|
||||
double dz = pPlayer->zWeapon - t + (t * 0.25);
|
||||
fxSpawnEjectingShell(pPlayer->actor, dz, dist, rdist);
|
||||
fxSpawnEjectingShell(pPlayer->GetActor(), dz, dist, rdist);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
|
@ -439,7 +439,7 @@ WEAPONTRACK gWeaponTrack[] = {
|
|||
void UpdateAimVector(PLAYER* pPlayer)
|
||||
{
|
||||
assert(pPlayer != NULL);
|
||||
auto plActor = pPlayer->actor;
|
||||
auto plActor = pPlayer->GetActor();
|
||||
DVector3 pos(plActor->spr.pos.XY(), pPlayer->zWeapon);
|
||||
DVector3 Aim(plActor->spr.Angles.Yaw.ToVector(), pPlayer->slope);
|
||||
|
||||
|
@ -759,7 +759,7 @@ void WeaponLower(PLAYER* pPlayer)
|
|||
StartQAV(pPlayer, kQAVFORKDOWN);
|
||||
break;
|
||||
case kWeapSpraycan:
|
||||
sfxKill3DSound(pPlayer->actor, -1, 441);
|
||||
sfxKill3DSound(pPlayer->GetActor(), -1, 441);
|
||||
switch (prevState)
|
||||
{
|
||||
case 1:
|
||||
|
@ -985,7 +985,7 @@ void WeaponUpdateState(PLAYER* pPlayer)
|
|||
pPlayer->weaponState = 1;
|
||||
StartQAV(pPlayer, kQAVCANDOWN);
|
||||
}
|
||||
sfxKill3DSound(pPlayer->actor, -1, 441);
|
||||
sfxKill3DSound(pPlayer->GetActor(), -1, 441);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
@ -1064,7 +1064,7 @@ void WeaponUpdateState(PLAYER* pPlayer)
|
|||
case 1:
|
||||
if (CheckAmmo(pPlayer, 2, 1))
|
||||
{
|
||||
sfxPlay3DSound(pPlayer->actor, 410, 3, 2);
|
||||
sfxPlay3DSound(pPlayer->GetActor(), 410, 3, 2);
|
||||
StartQAV(pPlayer, kQAVSHOTL1, nClientEjectShell);
|
||||
if (gInfiniteAmmo || pPlayer->ammoCount[2] > 1)
|
||||
pPlayer->weaponState = 3;
|
||||
|
@ -1109,7 +1109,7 @@ void WeaponUpdateState(PLAYER* pPlayer)
|
|||
SetQAV(pPlayer, kQAVFLARIDLE);
|
||||
break;
|
||||
case kWeapVoodooDoll:
|
||||
if (pPlayer->actor->xspr.height < 256 && pPlayer->swayHeight != 0)
|
||||
if (pPlayer->GetActor()->xspr.height < 256 && pPlayer->swayHeight != 0)
|
||||
StartQAV(pPlayer, kQAVVDIDLE2);
|
||||
else
|
||||
SetQAV(pPlayer, kQAVVDIDLE1);
|
||||
|
@ -1164,12 +1164,12 @@ void WeaponUpdateState(PLAYER* pPlayer)
|
|||
|
||||
void FirePitchfork(int, PLAYER* pPlayer)
|
||||
{
|
||||
DBloodActor* actor = pPlayer->actor;
|
||||
DBloodActor* actor = pPlayer->GetActor();
|
||||
double r1 = Random2F(2000, 14);
|
||||
double r2 = Random2F(2000, 14);
|
||||
double r3 = Random2F(2000, 14);
|
||||
for (int i = 0; i < 4; i++)
|
||||
actFireVector(actor, (2 * i - 3) * 2.5, pPlayer->zWeapon - pPlayer->actor->spr.pos.Z, pPlayer->aim + DVector3(r1, r2, r3), kVectorTine);
|
||||
actFireVector(actor, (2 * i - 3) * 2.5, pPlayer->zWeapon - pPlayer->GetActor()->spr.pos.Z, pPlayer->aim + DVector3(r1, r2, r3), kVectorTine);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
|
@ -1183,9 +1183,9 @@ void FireSpray(int, PLAYER* pPlayer)
|
|||
playerFireMissile(pPlayer, 0, pPlayer->aim, kMissileFlameSpray);
|
||||
UseAmmo(pPlayer, 6, 4);
|
||||
if (CheckAmmo(pPlayer, 6, 1))
|
||||
sfxPlay3DSound(pPlayer->actor, 441, 1, 2);
|
||||
sfxPlay3DSound(pPlayer->GetActor(), 441, 1, 2);
|
||||
else
|
||||
sfxKill3DSound(pPlayer->actor, -1, 441);
|
||||
sfxKill3DSound(pPlayer->GetActor(), -1, 441);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
|
@ -1196,15 +1196,15 @@ void FireSpray(int, PLAYER* pPlayer)
|
|||
|
||||
void ThrowCan(int, PLAYER* pPlayer)
|
||||
{
|
||||
sfxKill3DSound(pPlayer->actor, -1, 441);
|
||||
sfxKill3DSound(pPlayer->GetActor(), -1, 441);
|
||||
double nSpeed = getThrowPower(pPlayer);
|
||||
sfxPlay3DSound(pPlayer->actor, 455, 1, 0);
|
||||
sfxPlay3DSound(pPlayer->GetActor(), 455, 1, 0);
|
||||
auto spawned = playerFireThing(pPlayer, 0, -9460 / 65536., kThingArmedSpray, nSpeed);
|
||||
if (spawned)
|
||||
{
|
||||
sfxPlay3DSound(spawned, 441, 0, 0);
|
||||
spawned->spr.shade = -128;
|
||||
evPostActor(spawned, pPlayer->fuseTime, kCmdOn, pPlayer->actor);
|
||||
evPostActor(spawned, pPlayer->fuseTime, kCmdOn, pPlayer->GetActor());
|
||||
spawned->xspr.Impact = 1;
|
||||
UseAmmo(pPlayer, 6, gAmmoItemData[0].count);
|
||||
pPlayer->throwPower = 0;
|
||||
|
@ -1219,11 +1219,11 @@ void ThrowCan(int, PLAYER* pPlayer)
|
|||
|
||||
void DropCan(int, PLAYER* pPlayer)
|
||||
{
|
||||
sfxKill3DSound(pPlayer->actor, -1, 441);
|
||||
sfxKill3DSound(pPlayer->GetActor(), -1, 441);
|
||||
auto spawned = playerFireThing(pPlayer, 0, 0, kThingArmedSpray, 0);
|
||||
if (spawned)
|
||||
{
|
||||
evPostActor(spawned, pPlayer->fuseTime, kCmdOn, pPlayer->actor);
|
||||
evPostActor(spawned, pPlayer->fuseTime, kCmdOn, pPlayer->GetActor());
|
||||
UseAmmo(pPlayer, 6, gAmmoItemData[0].count);
|
||||
}
|
||||
}
|
||||
|
@ -1236,11 +1236,11 @@ void DropCan(int, PLAYER* pPlayer)
|
|||
|
||||
void ExplodeCan(int, PLAYER* pPlayer)
|
||||
{
|
||||
sfxKill3DSound(pPlayer->actor, -1, 441);
|
||||
sfxKill3DSound(pPlayer->GetActor(), -1, 441);
|
||||
auto spawned = playerFireThing(pPlayer, 0, 0, kThingArmedSpray, 0);
|
||||
if (spawned)
|
||||
{
|
||||
evPostActor(spawned, 0, kCmdOn, pPlayer->actor);
|
||||
evPostActor(spawned, 0, kCmdOn, pPlayer->GetActor());
|
||||
UseAmmo(pPlayer, 6, gAmmoItemData[0].count);
|
||||
StartQAV(pPlayer, kQAVCANBOOM);
|
||||
pPlayer->curWeapon = kWeapNone;
|
||||
|
@ -1256,16 +1256,16 @@ void ExplodeCan(int, PLAYER* pPlayer)
|
|||
|
||||
void ThrowBundle(int, PLAYER* pPlayer)
|
||||
{
|
||||
sfxKill3DSound(pPlayer->actor, 16, -1);
|
||||
sfxKill3DSound(pPlayer->GetActor(), 16, -1);
|
||||
double nSpeed = getThrowPower(pPlayer);
|
||||
sfxPlay3DSound(pPlayer->actor, 455, 1, 0);
|
||||
sfxPlay3DSound(pPlayer->GetActor(), 455, 1, 0);
|
||||
auto spawned = playerFireThing(pPlayer, 0, -9460 / 65536., kThingArmedTNTBundle, nSpeed);
|
||||
if (spawned)
|
||||
{
|
||||
if (pPlayer->fuseTime < 0)
|
||||
spawned->xspr.Impact = 1;
|
||||
else
|
||||
evPostActor(spawned, pPlayer->fuseTime, kCmdOn, pPlayer->actor);
|
||||
evPostActor(spawned, pPlayer->fuseTime, kCmdOn, pPlayer->GetActor());
|
||||
UseAmmo(pPlayer, 5, 1);
|
||||
pPlayer->throwPower = 0;
|
||||
}
|
||||
|
@ -1279,11 +1279,11 @@ void ThrowBundle(int, PLAYER* pPlayer)
|
|||
|
||||
void DropBundle(int, PLAYER* pPlayer)
|
||||
{
|
||||
sfxKill3DSound(pPlayer->actor, 16, -1);
|
||||
sfxKill3DSound(pPlayer->GetActor(), 16, -1);
|
||||
auto spawned = playerFireThing(pPlayer, 0, 0, kThingArmedTNTBundle, 0);
|
||||
if (spawned)
|
||||
{
|
||||
evPostActor(spawned, pPlayer->fuseTime, kCmdOn, pPlayer->actor);
|
||||
evPostActor(spawned, pPlayer->fuseTime, kCmdOn, pPlayer->GetActor());
|
||||
UseAmmo(pPlayer, 5, 1);
|
||||
}
|
||||
}
|
||||
|
@ -1296,11 +1296,11 @@ void DropBundle(int, PLAYER* pPlayer)
|
|||
|
||||
void ExplodeBundle(int, PLAYER* pPlayer)
|
||||
{
|
||||
sfxKill3DSound(pPlayer->actor, 16, -1);
|
||||
sfxKill3DSound(pPlayer->GetActor(), 16, -1);
|
||||
auto spawned = playerFireThing(pPlayer, 0, 0, kThingArmedTNTBundle, 0);
|
||||
if (spawned)
|
||||
{
|
||||
evPostActor(spawned, 0, kCmdOn, pPlayer->actor);
|
||||
evPostActor(spawned, 0, kCmdOn, pPlayer->GetActor());
|
||||
UseAmmo(pPlayer, 5, 1);
|
||||
StartQAV(pPlayer, kQAVDYNEXPLO);
|
||||
pPlayer->curWeapon = kWeapNone;
|
||||
|
@ -1317,11 +1317,11 @@ void ExplodeBundle(int, PLAYER* pPlayer)
|
|||
void ThrowProx(int, PLAYER* pPlayer)
|
||||
{
|
||||
double nSpeed = getThrowPower(pPlayer);
|
||||
sfxPlay3DSound(pPlayer->actor, 455, 1, 0);
|
||||
sfxPlay3DSound(pPlayer->GetActor(), 455, 1, 0);
|
||||
auto spawned = playerFireThing(pPlayer, 0, -9460 / 65536., kThingArmedProxBomb, nSpeed);
|
||||
if (spawned)
|
||||
{
|
||||
evPostActor(spawned, 240, kCmdOn, pPlayer->actor);
|
||||
evPostActor(spawned, 240, kCmdOn, pPlayer->GetActor());
|
||||
UseAmmo(pPlayer, 10, 1);
|
||||
pPlayer->throwPower = 0;
|
||||
}
|
||||
|
@ -1338,7 +1338,7 @@ void DropProx(int, PLAYER* pPlayer)
|
|||
auto spawned = playerFireThing(pPlayer, 0, 0, kThingArmedProxBomb, 0);
|
||||
if (spawned)
|
||||
{
|
||||
evPostActor(spawned, 240, kCmdOn, pPlayer->actor);
|
||||
evPostActor(spawned, 240, kCmdOn, pPlayer->GetActor());
|
||||
UseAmmo(pPlayer, 10, 1);
|
||||
}
|
||||
}
|
||||
|
@ -1352,11 +1352,11 @@ void DropProx(int, PLAYER* pPlayer)
|
|||
void ThrowRemote(int, PLAYER* pPlayer)
|
||||
{
|
||||
double nSpeed = getThrowPower(pPlayer);
|
||||
sfxPlay3DSound(pPlayer->actor, 455, 1, 0);
|
||||
sfxPlay3DSound(pPlayer->GetActor(), 455, 1, 0);
|
||||
auto spawned = playerFireThing(pPlayer, 0, -9460 / 65536., kThingArmedRemoteBomb, nSpeed);
|
||||
if (spawned)
|
||||
{
|
||||
spawned->xspr.rxID = 90 + (pPlayer->actor->spr.type - kDudePlayer1);
|
||||
spawned->xspr.rxID = 90 + (pPlayer->GetActor()->spr.type - kDudePlayer1);
|
||||
UseAmmo(pPlayer, 11, 1);
|
||||
pPlayer->throwPower = 0;
|
||||
}
|
||||
|
@ -1373,14 +1373,14 @@ void DropRemote(int, PLAYER* pPlayer)
|
|||
auto spawned = playerFireThing(pPlayer, 0, 0, kThingArmedRemoteBomb, 0);
|
||||
if (spawned)
|
||||
{
|
||||
spawned->xspr.rxID = 90 + (pPlayer->actor->spr.type - kDudePlayer1);
|
||||
spawned->xspr.rxID = 90 + (pPlayer->GetActor()->spr.type - kDudePlayer1);
|
||||
UseAmmo(pPlayer, 11, 1);
|
||||
}
|
||||
}
|
||||
|
||||
void FireRemote(int, PLAYER* pPlayer)
|
||||
{
|
||||
evSendGame(90 + (pPlayer->actor->spr.type - kDudePlayer1), kCmdOn);
|
||||
evSendGame(90 + (pPlayer->GetActor()->spr.type - kDudePlayer1), kCmdOn);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
|
@ -1393,17 +1393,17 @@ enum { kMaxShotgunBarrels = 4 };
|
|||
|
||||
void FireShotgun(int nTrigger, PLAYER* pPlayer)
|
||||
{
|
||||
DBloodActor* actor = pPlayer->actor;
|
||||
DBloodActor* actor = pPlayer->GetActor();
|
||||
assert(nTrigger > 0 && nTrigger <= kMaxShotgunBarrels);
|
||||
if (nTrigger == 1)
|
||||
{
|
||||
sfxPlay3DSound(pPlayer->actor, 411, 2, 0);
|
||||
sfxPlay3DSound(pPlayer->GetActor(), 411, 2, 0);
|
||||
pPlayer->tiltEffect = 30;
|
||||
pPlayer->visibility = 20;
|
||||
}
|
||||
else
|
||||
{
|
||||
sfxPlay3DSound(pPlayer->actor, 412, 2, 0);
|
||||
sfxPlay3DSound(pPlayer->GetActor(), 412, 2, 0);
|
||||
pPlayer->tiltEffect = 50;
|
||||
pPlayer->visibility = 40;
|
||||
}
|
||||
|
@ -1426,7 +1426,7 @@ void FireShotgun(int nTrigger, PLAYER* pPlayer)
|
|||
r3 = Random3F(1500, 14);
|
||||
nType = kVectorShellAP;
|
||||
}
|
||||
actFireVector(actor, 0, pPlayer->zWeapon - pPlayer->actor->spr.pos.Z, pPlayer->aim + DVector3(r1, r2, r3), nType);
|
||||
actFireVector(actor, 0, pPlayer->zWeapon - pPlayer->GetActor()->spr.pos.Z, pPlayer->aim + DVector3(r1, r2, r3), nType);
|
||||
}
|
||||
UseAmmo(pPlayer, pPlayer->weaponAmmo, nTrigger);
|
||||
pPlayer->flashEffect = 1;
|
||||
|
@ -1446,8 +1446,8 @@ void EjectShell(int, PLAYER* pPlayer)
|
|||
|
||||
void FireTommy(int nTrigger, PLAYER* pPlayer)
|
||||
{
|
||||
DBloodActor* actor = pPlayer->actor;
|
||||
sfxPlay3DSound(pPlayer->actor, 431, -1, 0);
|
||||
DBloodActor* actor = pPlayer->GetActor();
|
||||
sfxPlay3DSound(pPlayer->GetActor(), 431, -1, 0);
|
||||
switch (nTrigger)
|
||||
{
|
||||
case 1:
|
||||
|
@ -1455,7 +1455,7 @@ void FireTommy(int nTrigger, PLAYER* pPlayer)
|
|||
double r1 = Random3F(400, 14);
|
||||
double r2 = Random3F(1200, 14);
|
||||
double r3 = Random3F(1200, 14);
|
||||
actFireVector(actor, 0, pPlayer->zWeapon - pPlayer->actor->spr.pos.Z, pPlayer->aim + DVector3(r3, r2, r1), kVectorTommyRegular);
|
||||
actFireVector(actor, 0, pPlayer->zWeapon - pPlayer->GetActor()->spr.pos.Z, pPlayer->aim + DVector3(r3, r2, r1), kVectorTommyRegular);
|
||||
SpawnBulletEject(pPlayer, -15 / 16., -45);
|
||||
pPlayer->visibility = 20;
|
||||
break;
|
||||
|
@ -1465,12 +1465,12 @@ void FireTommy(int nTrigger, PLAYER* pPlayer)
|
|||
double r1 = Random3F(400, 14);
|
||||
double r2 = Random3F(1200, 14);
|
||||
double r3 = Random3F(1200, 14);
|
||||
actFireVector(actor, -7.5, pPlayer->zWeapon - pPlayer->actor->spr.pos.Z, pPlayer->aim + DVector3(r3, r2, r1), kVectorTommyRegular);
|
||||
actFireVector(actor, -7.5, pPlayer->zWeapon - pPlayer->GetActor()->spr.pos.Z, pPlayer->aim + DVector3(r3, r2, r1), kVectorTommyRegular);
|
||||
SpawnBulletEject(pPlayer, -140 / 16., -45);
|
||||
r1 = Random3(400);
|
||||
r2 = Random3(1200);
|
||||
r3 = Random3(1200);
|
||||
actFireVector(actor, 7.5, pPlayer->zWeapon - pPlayer->actor->spr.pos.Z, pPlayer->aim + DVector3(r3, r2, r1), kVectorTommyRegular);
|
||||
actFireVector(actor, 7.5, pPlayer->zWeapon - pPlayer->GetActor()->spr.pos.Z, pPlayer->aim + DVector3(r3, r2, r1), kVectorTommyRegular);
|
||||
SpawnBulletEject(pPlayer, 140 / 16., 45);
|
||||
pPlayer->visibility = 30;
|
||||
break;
|
||||
|
@ -1492,18 +1492,18 @@ static constexpr DAngle DAngle20 = DAngle::fromDeg(20);
|
|||
|
||||
void FireSpread(int nTrigger, PLAYER* pPlayer)
|
||||
{
|
||||
DBloodActor* actor = pPlayer->actor;
|
||||
DBloodActor* actor = pPlayer->GetActor();
|
||||
assert(nTrigger > 0 && nTrigger <= kMaxSpread);
|
||||
DVector3 aim = pPlayer->aim;
|
||||
DAngle angle = ((aim.XY()).Angle() + ((DAngle20 * (nTrigger - 1)) / kMaxSpread - DAngle10));
|
||||
DVector3 dv = DVector3(angle.ToVector(), aim.Z);
|
||||
|
||||
sfxPlay3DSound(pPlayer->actor, 431, -1, 0);
|
||||
sfxPlay3DSound(pPlayer->GetActor(), 431, -1, 0);
|
||||
double r1, r2, r3;
|
||||
r1 = Random3F(300, 14);
|
||||
r2 = Random3F(600, 14);
|
||||
r3 = Random3F(600, 14);
|
||||
actFireVector(actor, 0, pPlayer->zWeapon - pPlayer->actor->spr.pos.Z, dv + DVector3(r3, r2, r1), kVectorTommyAP);
|
||||
actFireVector(actor, 0, pPlayer->zWeapon - pPlayer->GetActor()->spr.pos.Z, dv + DVector3(r3, r2, r1), kVectorTommyAP);
|
||||
int ri = Random2(90);
|
||||
r2 = Random2F(30, 4);
|
||||
SpawnBulletEject(pPlayer, r2, ri);
|
||||
|
@ -1520,25 +1520,25 @@ void FireSpread(int nTrigger, PLAYER* pPlayer)
|
|||
|
||||
void AltFireSpread(int nTrigger, PLAYER* pPlayer)
|
||||
{
|
||||
DBloodActor* actor = pPlayer->actor;
|
||||
DBloodActor* actor = pPlayer->GetActor();
|
||||
assert(nTrigger > 0 && nTrigger <= kMaxSpread);
|
||||
DVector3 aim = pPlayer->aim;
|
||||
DAngle angle = ((aim.XY()).Angle() + ((DAngle20 * (nTrigger - 1)) / kMaxSpread - DAngle10));
|
||||
DVector3 dv = DVector3(angle.ToVector(), aim.Z);
|
||||
|
||||
sfxPlay3DSound(pPlayer->actor, 431, -1, 0);
|
||||
sfxPlay3DSound(pPlayer->GetActor(), 431, -1, 0);
|
||||
double r1, r2, r3;
|
||||
r1 = Random3F(300, 14);
|
||||
r2 = Random3F(600, 14);
|
||||
r3 = Random3F(600, 14);
|
||||
actFireVector(actor, -7.5, pPlayer->zWeapon - pPlayer->actor->spr.pos.Z, dv + DVector3(r3, r2, r1), kVectorTommyAP);
|
||||
actFireVector(actor, -7.5, pPlayer->zWeapon - pPlayer->GetActor()->spr.pos.Z, dv + DVector3(r3, r2, r1), kVectorTommyAP);
|
||||
int ri = Random2(45);
|
||||
r2 = Random2F(120, 4);
|
||||
SpawnBulletEject(pPlayer, r2, ri);
|
||||
r1 = Random3F(300, 14);
|
||||
r2 = Random3F(600, 14);
|
||||
r3 = Random3F(600, 14);
|
||||
actFireVector(actor, 7.5, pPlayer->zWeapon - pPlayer->actor->spr.pos.Z, dv + DVector3(r3, r2, r1), kVectorTommyAP);
|
||||
actFireVector(actor, 7.5, pPlayer->zWeapon - pPlayer->GetActor()->spr.pos.Z, dv + DVector3(r3, r2, r1), kVectorTommyAP);
|
||||
ri = Random2(-45);
|
||||
r2 = Random2F(-120, 4);
|
||||
SpawnBulletEject(pPlayer, r2, ri);
|
||||
|
@ -1556,27 +1556,27 @@ void AltFireSpread(int nTrigger, PLAYER* pPlayer)
|
|||
|
||||
void AltFireSpread2(int nTrigger, PLAYER* pPlayer)
|
||||
{
|
||||
DBloodActor* actor = pPlayer->actor;
|
||||
DBloodActor* actor = pPlayer->GetActor();
|
||||
assert(nTrigger > 0 && nTrigger <= kMaxSpread);
|
||||
DVector3 aim = pPlayer->aim;
|
||||
DAngle angle = ((aim.XY()).Angle() + ((DAngle20 * (nTrigger - 1)) / kMaxSpread - DAngle10));
|
||||
DVector3 dv = DVector3(angle.ToVector(), aim.Z);
|
||||
|
||||
sfxPlay3DSound(pPlayer->actor, 431, -1, 0);
|
||||
sfxPlay3DSound(pPlayer->GetActor(), 431, -1, 0);
|
||||
if (powerupCheck(pPlayer, kPwUpTwoGuns) && checkAmmo2(pPlayer, 3, 2))
|
||||
{
|
||||
double r1, r2, r3;
|
||||
r1 = Random3F(300, 14);
|
||||
r2 = Random3F(600, 14);
|
||||
r3 = Random3F(600, 14);
|
||||
actFireVector(actor, -7.5, pPlayer->zWeapon - pPlayer->actor->spr.pos.Z, dv + DVector3(r3, r2, r1), kVectorTommyAP);
|
||||
actFireVector(actor, -7.5, pPlayer->zWeapon - pPlayer->GetActor()->spr.pos.Z, dv + DVector3(r3, r2, r1), kVectorTommyAP);
|
||||
int ri = Random2(45);
|
||||
r2 = Random2F(120, 4);
|
||||
SpawnBulletEject(pPlayer, r2, ri);
|
||||
r1 = Random3F(300, 14);
|
||||
r2 = Random3F(600, 14);
|
||||
r3 = Random3F(600, 14);
|
||||
actFireVector(actor, 7.5, pPlayer->zWeapon - pPlayer->actor->spr.pos.Z, dv + DVector3(r3, r2, r1), kVectorTommyAP);
|
||||
actFireVector(actor, 7.5, pPlayer->zWeapon - pPlayer->GetActor()->spr.pos.Z, dv + DVector3(r3, r2, r1), kVectorTommyAP);
|
||||
ri = Random2(-45);
|
||||
r2 = Random2F(-120, 4);
|
||||
SpawnBulletEject(pPlayer, r2, ri);
|
||||
|
@ -1590,7 +1590,7 @@ void AltFireSpread2(int nTrigger, PLAYER* pPlayer)
|
|||
r1 = Random3F(300, 14);
|
||||
r2 = Random3F(600, 14);
|
||||
r3 = Random3F(600, 14);
|
||||
actFireVector(actor, 0, pPlayer->zWeapon - pPlayer->actor->spr.pos.Z, dv + DVector3(r3, r2, r1), kVectorTommyAP);
|
||||
actFireVector(actor, 0, pPlayer->zWeapon - pPlayer->GetActor()->spr.pos.Z, dv + DVector3(r3, r2, r1), kVectorTommyAP);
|
||||
int ri = Random2(90);
|
||||
r2 = Random2F(30, 4);
|
||||
SpawnBulletEject(pPlayer, r2, ri);
|
||||
|
@ -1614,7 +1614,7 @@ void AltFireSpread2(int nTrigger, PLAYER* pPlayer)
|
|||
|
||||
void FireFlare(int nTrigger, PLAYER* pPlayer)
|
||||
{
|
||||
auto plActor = pPlayer->actor;
|
||||
auto plActor = pPlayer->GetActor();
|
||||
double offset = 0;
|
||||
switch (nTrigger)
|
||||
{
|
||||
|
@ -1627,7 +1627,7 @@ void FireFlare(int nTrigger, PLAYER* pPlayer)
|
|||
}
|
||||
playerFireMissile(pPlayer, offset, pPlayer->aim, kMissileFlareRegular);
|
||||
UseAmmo(pPlayer, 1, 1);
|
||||
sfxPlay3DSound(pPlayer->actor, 420, 2, 0);
|
||||
sfxPlay3DSound(pPlayer->GetActor(), 420, 2, 0);
|
||||
pPlayer->visibility = 30;
|
||||
pPlayer->flashEffect = 1;
|
||||
}
|
||||
|
@ -1640,7 +1640,7 @@ void FireFlare(int nTrigger, PLAYER* pPlayer)
|
|||
|
||||
void AltFireFlare(int nTrigger, PLAYER* pPlayer)
|
||||
{
|
||||
auto plActor = pPlayer->actor;
|
||||
auto plActor = pPlayer->GetActor();
|
||||
double offset = 0;
|
||||
switch (nTrigger)
|
||||
{
|
||||
|
@ -1653,7 +1653,7 @@ void AltFireFlare(int nTrigger, PLAYER* pPlayer)
|
|||
}
|
||||
playerFireMissile(pPlayer, offset, pPlayer->aim, kMissileFlareAlt);
|
||||
UseAmmo(pPlayer, 1, 8);
|
||||
sfxPlay3DSound(pPlayer->actor, 420, 2, 0);
|
||||
sfxPlay3DSound(pPlayer->GetActor(), 420, 2, 0);
|
||||
pPlayer->visibility = 45;
|
||||
pPlayer->flashEffect = 1;
|
||||
}
|
||||
|
@ -1667,8 +1667,8 @@ void AltFireFlare(int nTrigger, PLAYER* pPlayer)
|
|||
void FireVoodoo(int nTrigger, PLAYER* pPlayer)
|
||||
{
|
||||
nTrigger--;
|
||||
DBloodActor* actor = pPlayer->actor;
|
||||
auto plActor = pPlayer->actor;
|
||||
DBloodActor* actor = pPlayer->GetActor();
|
||||
auto plActor = pPlayer->GetActor();
|
||||
if (nTrigger == 4)
|
||||
{
|
||||
actDamageSprite(actor, actor, kDamageBullet, 1 << 4);
|
||||
|
@ -1730,7 +1730,7 @@ void FireVoodoo(int nTrigger, PLAYER* pPlayer)
|
|||
|
||||
void AltFireVoodoo(int nTrigger, PLAYER* pPlayer)
|
||||
{
|
||||
DBloodActor* actor = pPlayer->actor;
|
||||
DBloodActor* actor = pPlayer->GetActor();
|
||||
if (nTrigger == 2) {
|
||||
|
||||
// by NoOne: trying to simulate v1.0x voodoo here.
|
||||
|
@ -1745,7 +1745,7 @@ void AltFireVoodoo(int nTrigger, PLAYER* pPlayer)
|
|||
if (!targetactor) continue;
|
||||
if (!gGameOptions.bFriendlyFire && IsTargetTeammate(pPlayer, targetactor))
|
||||
continue;
|
||||
double nDist = (targetactor->spr.pos.XY() - pPlayer->actor->spr.pos.XY()).Length();
|
||||
double nDist = (targetactor->spr.pos.XY() - pPlayer->GetActor()->spr.pos.XY()).Length();
|
||||
if (nDist > 0 && nDist < 3200)
|
||||
{
|
||||
int vc = pPlayer->ammoCount[9] >> 3;
|
||||
|
@ -1783,7 +1783,7 @@ void AltFireVoodoo(int nTrigger, PLAYER* pPlayer)
|
|||
continue;
|
||||
if (v4 > 0)
|
||||
v4--;
|
||||
double nDist = (targetactor->spr.pos.XY() - pPlayer->actor->spr.pos.XY()).Length();
|
||||
double nDist = (targetactor->spr.pos.XY() - pPlayer->GetActor()->spr.pos.XY()).Length();
|
||||
if (nDist > 0 && nDist < 3200)
|
||||
{
|
||||
int vc = pPlayer->ammoCount[9] >> 3;
|
||||
|
@ -1816,7 +1816,7 @@ void AltFireVoodoo(int nTrigger, PLAYER* pPlayer)
|
|||
|
||||
void DropVoodoo(int, PLAYER* pPlayer)
|
||||
{
|
||||
sfxPlay3DSound(pPlayer->actor, 455, 2, 0);
|
||||
sfxPlay3DSound(pPlayer->GetActor(), 455, 2, 0);
|
||||
auto spawned = playerFireThing(pPlayer, 0, -4730 / 65536., kThingVoodooHead, 12.8);
|
||||
if (spawned)
|
||||
{
|
||||
|
@ -1864,7 +1864,7 @@ void FireTesla(int nTrigger, PLAYER* pPlayer)
|
|||
if (nTrigger > 0 && nTrigger <= 6)
|
||||
{
|
||||
nTrigger--;
|
||||
auto plActor = pPlayer->actor;
|
||||
auto plActor = pPlayer->GetActor();
|
||||
TeslaMissile* pMissile = &teslaMissile[nTrigger];
|
||||
if (!checkAmmo2(pPlayer, 7, pMissile->ammouse))
|
||||
{
|
||||
|
@ -1879,7 +1879,7 @@ void FireTesla(int nTrigger, PLAYER* pPlayer)
|
|||
}
|
||||
playerFireMissile(pPlayer, pMissile->offset, pPlayer->aim, pMissile->id);
|
||||
UseAmmo(pPlayer, pPlayer->weaponAmmo, pMissile->ammouse);
|
||||
sfxPlay3DSound(pPlayer->actor, pMissile->sound, 1, 0);
|
||||
sfxPlay3DSound(pPlayer->GetActor(), pMissile->sound, 1, 0);
|
||||
pPlayer->visibility = pMissile->light;
|
||||
pPlayer->flashEffect = pMissile->flash;
|
||||
}
|
||||
|
@ -1893,10 +1893,10 @@ void FireTesla(int nTrigger, PLAYER* pPlayer)
|
|||
|
||||
void AltFireTesla(int, PLAYER* pPlayer)
|
||||
{
|
||||
auto plActor = pPlayer->actor;
|
||||
auto plActor = pPlayer->GetActor();
|
||||
playerFireMissile(pPlayer, 0., pPlayer->aim, kMissileTeslaAlt);
|
||||
UseAmmo(pPlayer, pPlayer->weaponAmmo, 35);
|
||||
sfxPlay3DSound(pPlayer->actor, 471, 2, 0);
|
||||
sfxPlay3DSound(pPlayer->GetActor(), 471, 2, 0);
|
||||
pPlayer->visibility = 40;
|
||||
pPlayer->flashEffect = 1;
|
||||
}
|
||||
|
@ -1909,7 +1909,7 @@ void AltFireTesla(int, PLAYER* pPlayer)
|
|||
|
||||
void FireNapalm(int nTrigger, PLAYER* pPlayer)
|
||||
{
|
||||
auto plActor = pPlayer->actor;
|
||||
auto plActor = pPlayer->GetActor();
|
||||
double offset = 0;
|
||||
switch (nTrigger)
|
||||
{
|
||||
|
@ -1921,17 +1921,17 @@ void FireNapalm(int nTrigger, PLAYER* pPlayer)
|
|||
break;
|
||||
}
|
||||
playerFireMissile(pPlayer, offset, pPlayer->aim, kMissileFireballNapalm);
|
||||
sfxPlay3DSound(pPlayer->actor, 480, 2, 0);
|
||||
sfxPlay3DSound(pPlayer->GetActor(), 480, 2, 0);
|
||||
UseAmmo(pPlayer, 4, 1);
|
||||
pPlayer->flashEffect = 1;
|
||||
}
|
||||
|
||||
void FireNapalm2(int, PLAYER* pPlayer)
|
||||
{
|
||||
auto plActor = pPlayer->actor;
|
||||
auto plActor = pPlayer->GetActor();
|
||||
playerFireMissile(pPlayer, -7.5, pPlayer->aim, kMissileFireballNapalm);
|
||||
playerFireMissile(pPlayer, 7.5, pPlayer->aim, kMissileFireballNapalm);
|
||||
sfxPlay3DSound(pPlayer->actor, 480, 2, 0);
|
||||
sfxPlay3DSound(pPlayer->GetActor(), 480, 2, 0);
|
||||
UseAmmo(pPlayer, 4, 2);
|
||||
pPlayer->flashEffect = 1;
|
||||
}
|
||||
|
@ -1950,7 +1950,7 @@ void AltFireNapalm(int, PLAYER* pPlayer)
|
|||
missile->xspr.data4 = ClipHigh(pPlayer->ammoCount[4], 12);
|
||||
UseAmmo(pPlayer, 4, missile->xspr.data4);
|
||||
seqSpawn(22, missile, -1);
|
||||
actBurnSprite(pPlayer->actor, missile, 600);
|
||||
actBurnSprite(pPlayer->GetActor(), missile, 600);
|
||||
evPostActor(missile, 0, kCallbackFXFlameLick);
|
||||
sfxPlay3DSound(missile, 480, 2, 0);
|
||||
pPlayer->visibility = 30;
|
||||
|
@ -1971,7 +1971,7 @@ void FireLifeLeech(int nTrigger, PLAYER* pPlayer)
|
|||
double r1 = Random2F(2000, 14);
|
||||
double r2 = Random2F(2000, 14);
|
||||
double r3 = Random2F(1000, 14);
|
||||
DBloodActor* actor = pPlayer->actor;
|
||||
DBloodActor* actor = pPlayer->GetActor();
|
||||
auto missileActor = playerFireMissile(pPlayer, 0, pPlayer->aim + DVector3(r1, r2, r3), 315);
|
||||
if (missileActor)
|
||||
{
|
||||
|
@ -1993,8 +1993,8 @@ void FireLifeLeech(int nTrigger, PLAYER* pPlayer)
|
|||
|
||||
void AltFireLifeLeech(int, PLAYER* pPlayer)
|
||||
{
|
||||
DBloodActor* actor = pPlayer->actor;
|
||||
sfxPlay3DSound(pPlayer->actor, 455, 2, 0);
|
||||
DBloodActor* actor = pPlayer->GetActor();
|
||||
sfxPlay3DSound(pPlayer->GetActor(), 455, 2, 0);
|
||||
auto missile = playerFireThing(pPlayer, 0, -4730 / 65536., kThingDroppedLifeLeech, 1.6);
|
||||
if (missile)
|
||||
{
|
||||
|
@ -2007,7 +2007,7 @@ void AltFireLifeLeech(int, PLAYER* pPlayer)
|
|||
if (gGameOptions.nGameType <= 1)
|
||||
{
|
||||
int nAmmo = pPlayer->ammoCount[8];
|
||||
if (nAmmo < 25 && pPlayer->actor->xspr.health > unsigned((25 - nAmmo) << 4))
|
||||
if (nAmmo < 25 && pPlayer->GetActor()->xspr.health > unsigned((25 - nAmmo) << 4))
|
||||
{
|
||||
actDamageSprite(actor, actor, kDamageSpirit, ((25 - nAmmo) << 4));
|
||||
nAmmo = 25;
|
||||
|
@ -2032,11 +2032,11 @@ void AltFireLifeLeech(int, PLAYER* pPlayer)
|
|||
|
||||
void FireBeast(int, PLAYER* pPlayer)
|
||||
{
|
||||
DBloodActor* actor = pPlayer->actor;
|
||||
DBloodActor* actor = pPlayer->GetActor();
|
||||
double r1 = Random2F(2000, 14);
|
||||
double r2 = Random2F(2000, 14);
|
||||
double r3 = Random2F(2000, 14);
|
||||
actFireVector(actor, 0, pPlayer->zWeapon - pPlayer->actor->spr.pos.Z, pPlayer->aim + DVector3(r1, r2, r3), kVectorBeastSlash);
|
||||
actFireVector(actor, 0, pPlayer->zWeapon - pPlayer->GetActor()->spr.pos.Z, pPlayer->aim + DVector3(r1, r2, r3), kVectorBeastSlash);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
|
@ -2375,7 +2375,7 @@ void WeaponProcess(PLAYER* pPlayer) {
|
|||
pPlayer->flashEffect = ClipLow(pPlayer->flashEffect - 1, 0);
|
||||
|
||||
#ifdef NOONE_EXTENSIONS
|
||||
if (gPlayerCtrl[pPlayer->nPlayer].qavScene.initiator != nullptr && pPlayer->actor->xspr.health > 0) {
|
||||
if (gPlayerCtrl[pPlayer->nPlayer].qavScene.initiator != nullptr && pPlayer->GetActor()->xspr.health > 0) {
|
||||
playerQavSceneProcess(pPlayer, &gPlayerCtrl[pPlayer->nPlayer].qavScene);
|
||||
UpdateAimVector(pPlayer);
|
||||
return;
|
||||
|
@ -2385,10 +2385,10 @@ void WeaponProcess(PLAYER* pPlayer) {
|
|||
int newweap = pPlayer->input.getNewWeapon();
|
||||
if (newweap > 0 && newweap <= WeaponSel_MaxBlood) pPlayer->newWeapon = newweap;
|
||||
|
||||
if (pPlayer->actor->xspr.health == 0)
|
||||
if (pPlayer->GetActor()->xspr.health == 0)
|
||||
{
|
||||
pPlayer->qavLoop = 0;
|
||||
sfxKill3DSound(pPlayer->actor, 1, -1);
|
||||
sfxKill3DSound(pPlayer->GetActor(), 1, -1);
|
||||
}
|
||||
if (pPlayer->isUnderwater && BannedUnderwater(pPlayer->curWeapon))
|
||||
{
|
||||
|
@ -2417,7 +2417,7 @@ void WeaponProcess(PLAYER* pPlayer) {
|
|||
bool bShoot2 = pPlayer->input.actions & SB_ALTFIRE;
|
||||
const int prevNewWeaponVal = pPlayer->input.getNewWeapon(); // used to fix scroll issue for banned weapons
|
||||
if ((bShoot || bShoot2 || prevNewWeaponVal) && pPlayer->weaponQav == qavGetCorrectID(kQAVVDIDLE2)) pPlayer->weaponTimer = 0;
|
||||
if (pPlayer->qavLoop && pPlayer->actor->xspr.health > 0)
|
||||
if (pPlayer->qavLoop && pPlayer->GetActor()->xspr.health > 0)
|
||||
{
|
||||
if (bShoot && CheckAmmo(pPlayer, pPlayer->weaponAmmo, 1))
|
||||
{
|
||||
|
@ -2458,7 +2458,7 @@ void WeaponProcess(PLAYER* pPlayer) {
|
|||
}
|
||||
if (pPlayer->weaponTimer > 0)
|
||||
return;
|
||||
if (pPlayer->actor->xspr.health == 0 || pPlayer->curWeapon == kWeapNone)
|
||||
if (pPlayer->GetActor()->xspr.health == 0 || pPlayer->curWeapon == kWeapNone)
|
||||
pPlayer->weaponQav = kQAVNone;
|
||||
switch (pPlayer->curWeapon)
|
||||
{
|
||||
|
@ -2475,7 +2475,7 @@ void WeaponProcess(PLAYER* pPlayer) {
|
|||
{
|
||||
if (pPlayer->nextWeapon)
|
||||
{
|
||||
sfxKill3DSound(pPlayer->actor, -1, 441);
|
||||
sfxKill3DSound(pPlayer->GetActor(), -1, 441);
|
||||
pPlayer->weaponState = 0;
|
||||
pPlayer->newWeapon = pPlayer->nextWeapon;
|
||||
pPlayer->nextWeapon = kWeapNone;
|
||||
|
@ -2561,7 +2561,7 @@ void WeaponProcess(PLAYER* pPlayer) {
|
|||
{
|
||||
if (pPlayer->nextWeapon)
|
||||
{
|
||||
sfxKill3DSound(pPlayer->actor, -1, 441);
|
||||
sfxKill3DSound(pPlayer->GetActor(), -1, 441);
|
||||
pPlayer->newWeapon = pPlayer->nextWeapon;
|
||||
pPlayer->nextWeapon = kWeapNone;
|
||||
}
|
||||
|
@ -2643,7 +2643,7 @@ void WeaponProcess(PLAYER* pPlayer) {
|
|||
return;
|
||||
}
|
||||
}
|
||||
if (pPlayer->actor->xspr.health == 0 || pPlayer->hasWeapon[pPlayer->newWeapon] == 0)
|
||||
if (pPlayer->GetActor()->xspr.health == 0 || pPlayer->hasWeapon[pPlayer->newWeapon] == 0)
|
||||
{
|
||||
pPlayer->newWeapon = kWeapNone;
|
||||
return;
|
||||
|
@ -2830,7 +2830,7 @@ void WeaponProcess(PLAYER* pPlayer) {
|
|||
StartQAV(pPlayer, kQAVNAPFIRE, nClientFireNapalm);
|
||||
return;
|
||||
case kWeapLifeLeech:
|
||||
sfxPlay3DSound(pPlayer->actor, 494, 2, 0);
|
||||
sfxPlay3DSound(pPlayer->GetActor(), 494, 2, 0);
|
||||
StartQAV(pPlayer, kQAVSTAFIRE4, nClientFireLifeLeech);
|
||||
return;
|
||||
case kWeapBeast:
|
||||
|
@ -2927,7 +2927,7 @@ void WeaponProcess(PLAYER* pPlayer) {
|
|||
StartQAV(pPlayer, kQAVTOMSPRED, nClientAltFireSpread2);
|
||||
return;
|
||||
case kWeapVoodooDoll:
|
||||
sfxPlay3DSound(pPlayer->actor, 461, 2, 0);
|
||||
sfxPlay3DSound(pPlayer->GetActor(), 461, 2, 0);
|
||||
StartQAV(pPlayer, kQAVVDSPEL1, nClientAltFireVoodoo);
|
||||
return;
|
||||
#if 0
|
||||
|
@ -2979,9 +2979,9 @@ void WeaponProcess(PLAYER* pPlayer) {
|
|||
}
|
||||
return;
|
||||
case kWeapLifeLeech:
|
||||
if (gGameOptions.nGameType <= 1 && !checkAmmo2(pPlayer, 8, 1) && pPlayer->actor->xspr.health < (25 << 4))
|
||||
if (gGameOptions.nGameType <= 1 && !checkAmmo2(pPlayer, 8, 1) && pPlayer->GetActor()->xspr.health < (25 << 4))
|
||||
{
|
||||
sfxPlay3DSound(pPlayer->actor, 494, 2, 0);
|
||||
sfxPlay3DSound(pPlayer->GetActor(), 494, 2, 0);
|
||||
StartQAV(pPlayer, kQAVSTAFIRE4, nClientFireLifeLeech);
|
||||
}
|
||||
else
|
||||
|
|
Loading…
Reference in a new issue