diff --git a/source/games/duke/src/actors.cpp b/source/games/duke/src/actors.cpp index 6f7b5a5bf..250a42f5f 100644 --- a/source/games/duke/src/actors.cpp +++ b/source/games/duke/src/actors.cpp @@ -1285,7 +1285,7 @@ void bounce(DDukeActor* actor) zvect -= MulScale(daz, k, 16); } - actor->spr.zvel = zvect; + actor->set_int_zvel(zvect); actor->spr.xvel = ksqrt(DMulScale(xvect, xvect, yvect, yvect, 8)); actor->spr.angle = VecToAngle(xvect, yvect); } @@ -1558,7 +1558,7 @@ void forcesphere(DDukeActor* actor, int forcesphere) k->spr.cstat = CSTAT_SPRITE_BLOCK_ALL | CSTAT_SPRITE_YCENTER; k->spr.clipdist = 64; k->set_int_ang(j); - k->spr.zvel = bsin(l, -5); + k->set_int_zvel(bsin(l, -5)); k->spr.xvel = bcos(l, -9); k->SetOwner(actor); } @@ -2214,7 +2214,7 @@ bool jibs(DDukeActor *actor, int JIBS6, bool timeout, bool callsetsprite, bool f { if (actor->int_zvel() < 1024) actor->spr.zvel += 48; - else actor->spr.zvel = 1024; + else actor->set_int_zvel(1024); } else actor->spr.zvel += gs.gravity - 50; } @@ -2418,7 +2418,7 @@ void glasspieces(DDukeActor* actor) makeitfall(actor); - if (actor->int_zvel() > 4096) actor->spr.zvel = 4096; + if (actor->int_zvel() > 4096) actor->set_int_zvel(4096); if (!actor->insector()) { deletesprite(actor); @@ -2427,7 +2427,7 @@ void glasspieces(DDukeActor* actor) if (actor->spr.pos.Z == actor->floorz - FOURSLEIGHT_F && actor->temp_data[0] < 3) { - actor->spr.zvel = -((3 - actor->temp_data[0]) << 8) - (krand() & 511); + actor->set_int_zvel(-((3 - actor->temp_data[0]) << 8) - (krand() & 511)); if (sectp->lotag == 2) actor->spr.zvel >>= 1; actor->spr.xrepeat >>= 1; @@ -3316,7 +3316,7 @@ void handle_se05(DDukeActor* actor, int FIRELASER) actor->SetOwner(Owner); if (!Owner) return; // Undefined case - was not checked. - actor->spr.zvel = Sgn(Owner->spr.pos.Z - actor->spr.pos.Z) << 4; + actor->set_int_zvel(Sgn(Owner->spr.pos.Z - actor->spr.pos.Z) << 4); } if (ldist(Owner, actor) < 1024) @@ -4186,7 +4186,7 @@ void handle_se21(DDukeActor* actor) if (actor->temp_data[0] == 1) //Decide if the sector should go up or down { - actor->spr.zvel = Sgn(actor->int_pos().Z - lp) * (actor->spr.yvel << 4); + actor->set_int_zvel(Sgn(actor->int_pos().Z - lp) * (actor->spr.yvel << 4)); actor->temp_data[0]++; } @@ -4848,10 +4848,10 @@ void makeitfall(DDukeActor* actor) if( actor->spr.pos.Z < actor->floorz - FOURSLEIGHT_F) { if( actor->sector()->lotag == 2 && actor->int_zvel() > 3122 ) - actor->spr.zvel = 3144; + actor->set_int_zvel(3144); if(actor->int_zvel() < 6144) actor->spr.zvel += c; - else actor->spr.zvel = 6144; + else actor->set_int_zvel(6144); actor->add_int_z(actor->int_zvel()); } if (actor->spr.pos.Z >= actor->floorz - FOURSLEIGHT_F) @@ -5082,7 +5082,7 @@ void fall_common(DDukeActor *actor, int playernum, int JIBS6, int DRONE, int BLO actor->spr.zvel += c; actor->add_int_z(actor->int_zvel()); - if (actor->int_zvel() > 6144) actor->spr.zvel = 6144; + if (actor->int_zvel() > 6144) actor->set_int_zvel(6144); } else { diff --git a/source/games/duke/src/actors_d.cpp b/source/games/duke/src/actors_d.cpp index 2026b4703..924254744 100644 --- a/source/games/duke/src/actors_d.cpp +++ b/source/games/duke/src/actors_d.cpp @@ -750,7 +750,7 @@ void movefallers_d(void) if (act->spr.lotag <= 0) { act->spr.xvel = (32 + (krand() & 63)); - act->spr.zvel = -(1024 + (krand() & 1023)); + act->set_int_zvel(-(1024 + (krand() & 1023))); } } else @@ -774,7 +774,7 @@ void movefallers_d(void) { act->spr.zvel += x; if (act->int_zvel() > 6144) - act->spr.zvel = 6144; + act->set_int_zvel(6144); act->add_int_z(act->int_zvel()); } if ((sectp->floorz - act->spr.pos.Z) < 16) @@ -1315,7 +1315,7 @@ static bool movefireball(DDukeActor* actor) ball->spr.xvel = actor->spr.xvel; ball->spr.yvel = actor->spr.yvel; - ball->spr.zvel = actor->int_zvel(); + ball->set_int_zvel(actor->int_zvel()); if (actor->temp_data[0] > 1) { if (trail) @@ -1324,7 +1324,7 @@ static bool movefireball(DDukeActor* actor) ball->spr.pos = trail->temp_pos; ball->spr.xvel = proj->vel.X; ball->spr.yvel = proj->vel.Y; - ball->spr.zvel = proj->vel.Z; + ball->set_int_zvel(proj->vel.Z); } } ball->spr.yrepeat = ball->spr.xrepeat = (uint8_t)(actor->spr.xrepeat * siz); @@ -1557,7 +1557,7 @@ static void weaponcommon_d(DDukeActor* proj) if (proj->spr.pos.Z < proj->ceilingz) { coll.setSector(proj->sector()); - proj->spr.zvel = -1; + proj->set_int_zvel(-1); } else if ((proj->spr.pos.Z > proj->floorz && proj->sector()->lotag != 1) || @@ -1565,7 +1565,7 @@ static void weaponcommon_d(DDukeActor* proj) { coll.setSector(proj->sector()); if (proj->sector()->lotag != 1) - proj->spr.zvel = 1; + proj->set_int_zvel(1); } } @@ -2489,14 +2489,14 @@ static void flamethrowerflame(DDukeActor *actor) if (actor->spr.pos.Z < actor->ceilingz) { coll.setSector(actor->sector()); - actor->spr.zvel = -1; + actor->set_int_zvel(-1); } else if ((actor->spr.pos.Z > actor->floorz && actor->sector()->lotag != 1) || (actor->spr.pos.Z > actor->floorz + 16 && actor->sector()->lotag == 1)) { coll.setSector(actor->sector()); if (actor->sector()->lotag != 1) - actor->spr.zvel = 1; + actor->set_int_zvel(1); } } @@ -2584,7 +2584,7 @@ static void heavyhbomb(DDukeActor *actor) { if (actor->spr.yvel > 0 || (actor->spr.yvel == 0 && actor->floorz == sectp->floorz)) S_PlayActorSound(PIPEBOMB_BOUNCE, actor); - actor->spr.zvel = -((4 - actor->spr.yvel) << 8); + actor->set_int_zvel(-((4 - actor->spr.yvel) << 8)); if (actor->sector()->lotag == 2) actor->spr.zvel >>= 2; actor->spr.yvel++; @@ -3069,7 +3069,7 @@ void moveexplosions_d(void) // STATNUM 5 case MONEY + 1: case MAIL + 1: case PAPER + 1: - act->spr.zvel = act->floorz = getflorzofslopeptrf(act->sector(), act->spr.pos.X, act->spr.pos.Y); + act->set_int_zvel(act->floorz = getflorzofslopeptrf(act->sector(), act->spr.pos.X, act->spr.pos.Y)); break; case MONEY: case MAIL: diff --git a/source/games/duke/src/actors_r.cpp b/source/games/duke/src/actors_r.cpp index c106b61f3..5572d1def 100644 --- a/source/games/duke/src/actors_r.cpp +++ b/source/games/duke/src/actors_r.cpp @@ -668,7 +668,7 @@ void movefallers_r(void) { act->spr.lotag -= 3; act->spr.xvel = ((64 + krand()) & 127); - act->spr.zvel = -(1024 + (krand() & 1023)); + act->set_int_zvel(-(1024 + (krand() & 1023))); } else { @@ -692,7 +692,7 @@ void movefallers_r(void) { act->spr.zvel += x; if (act->int_zvel() > 6144) - act->spr.zvel = 6144; + act->set_int_zvel(6144); act->add_int_z(act->int_zvel()); } if ((sectp->floorz - act->spr.pos.Z) < 16) @@ -1213,7 +1213,7 @@ static void weaponcommon_r(DDukeActor *proj) if (!isRRRA()) break; if (proj->spr.extra) { - proj->spr.zvel = -(proj->spr.extra * 250); + proj->set_int_zvel(-(proj->spr.extra * 250)); proj->spr.extra--; } else @@ -1246,14 +1246,14 @@ static void weaponcommon_r(DDukeActor *proj) if (proj->spr.pos.Z < proj->ceilingz) { coll.setSector(proj->sector()); - proj->spr.zvel = -1; + proj->set_int_zvel(-1); } else if (proj->spr.pos.Z > proj->floorz) { coll.setSector(proj->sector()); if (proj->sector()->lotag != 1) - proj->spr.zvel = 1; + proj->set_int_zvel(1); } } @@ -2362,7 +2362,7 @@ static void heavyhbomb(DDukeActor *actor) goto DETONATEB; } } - actor->spr.zvel = -((4 - actor->spr.yvel) << 8); + actor->set_int_zvel(-((4 - actor->spr.yvel) << 8)); if (actor->sector()->lotag == 2) actor->spr.zvel >>= 2; actor->spr.yvel++; @@ -3838,7 +3838,7 @@ static int fallspecial(DDukeActor *actor, int playernum) if (actor->spr.picnum != APLAYER && (badguy(actor) || actor->spr.picnum == HEN || actor->spr.picnum == COW || actor->spr.picnum == PIG || actor->spr.picnum == DOGRUN || actor->spr.picnum == RABBIT) && (!isRRRA() || actor->spriteextra < 128)) { actor->spr.pos.Z = actor->floorz - FOURSLEIGHT_F; - actor->spr.zvel = 8000; + actor->set_int_zvel(8000); actor->spr.extra = 0; actor->spriteextra++; sphit = 1; diff --git a/source/games/duke/src/gameexec.cpp b/source/games/duke/src/gameexec.cpp index d3d4c7f7f..b7f6bc561 100644 --- a/source/games/duke/src/gameexec.cpp +++ b/source/games/duke/src/gameexec.cpp @@ -1245,7 +1245,7 @@ void DoActor(bool bSet, int lVar1, int lLabelID, int lVar2, DDukeActor* sActor, else SetGameVarID(lVar2, act->spr.yvel, sActor, sPlayer); break; case ACTOR_ZVEL: - if (bSet) act->spr.zvel = lValue; + if (bSet) act->set_int_zvel(lValue); else SetGameVarID(lVar2, act->int_zvel(), sActor, sPlayer); break; case ACTOR_LOTAG: diff --git a/source/games/duke/src/player.cpp b/source/games/duke/src/player.cpp index ca4335925..88daeaae0 100644 --- a/source/games/duke/src/player.cpp +++ b/source/games/duke/src/player.cpp @@ -618,7 +618,7 @@ void playerisdead(int snum, int psectlotag, int fz, int cz) else { actor->spr.pos.Z -= 2; - actor->spr.zvel = -348; + actor->set_int_zvel(-348); } Collision coll; diff --git a/source/games/duke/src/player_d.cpp b/source/games/duke/src/player_d.cpp index 255bd9493..86db7a08a 100644 --- a/source/games/duke/src/player_d.cpp +++ b/source/games/duke/src/player_d.cpp @@ -196,7 +196,7 @@ static void shootflamethrowerflame(DDukeActor* actor, int p, DVector3 spos, DAng spawned = spawn(actor, FLAMETHROWERFLAME); if (!spawned) return; spawned->spr.xvel = (short)(vel * worldtoint); - spawned->spr.zvel = (short)(zvel * zworldtoint); + spawned->set_int_zvel(zvel * 256); } spawned->spr.pos = spos + (sang + DAngle::fromBuild(112)).ToVector() * 7; diff --git a/source/games/duke/src/player_r.cpp b/source/games/duke/src/player_r.cpp index df92b1d1a..5f37acc44 100644 --- a/source/games/duke/src/player_r.cpp +++ b/source/games/duke/src/player_r.cpp @@ -677,7 +677,7 @@ static void shootrpg(DDukeActor* actor, int p, int sx, int sy, int sz, int sa, i if (atwith == RRTILE1790) { spawned->spr.extra = 10; - spawned->spr.zvel = -(10 << 8); + spawned->set_int_zvel(-(10 << 8)); } else if (atwith == RPG2) { diff --git a/source/games/duke/src/spawn.cpp b/source/games/duke/src/spawn.cpp index 086fb970f..14794d7a9 100644 --- a/source/games/duke/src/spawn.cpp +++ b/source/games/duke/src/spawn.cpp @@ -72,7 +72,7 @@ DDukeActor* CreateActor(sectortype* whatsectp, const DVector3& pos, int s_pn, in act->set_int_ang(s_a); act->spr.xvel = s_ve; - act->spr.zvel = s_zv; + act->set_int_zvel(s_zv); act->spr.xoffset = 0; act->spr.yoffset = 0; act->spr.yvel = 0; @@ -440,7 +440,7 @@ void initshell(DDukeActor* actj, DDukeActor* act, bool isshell) act->temp_data[0] = krand() & 1; act->spr.pos.Z = 3 + ps[snum].pos.Z + ps[snum].pyoff - (ps[snum].horizon.sum().asbuildf() * (1/16.)) + (!isshell ? 3 : 0); - act->spr.zvel = -(krand() & 255); + act->set_int_zvel(-(krand() & 255)); } else { @@ -1005,9 +1005,9 @@ void spawneffector(DDukeActor* actor, TArray* actors) { actor->temp_pos.XY() = actor->spr.pos.XY(); if (actor->spr.shade == sectp->floorshade) //UP - actor->spr.zvel = -256; + actor->set_int_zvel(-256); else - actor->spr.zvel = 256; + actor->set_int_zvel(256); actor->spr.shade = 0; } diff --git a/source/games/duke/src/spawn_d.cpp b/source/games/duke/src/spawn_d.cpp index 8a96260ed..a8037f129 100644 --- a/source/games/duke/src/spawn_d.cpp +++ b/source/games/duke/src/spawn_d.cpp @@ -203,7 +203,7 @@ DDukeActor* spawninit_d(DDukeActor* actj, DDukeActor* act, TArray* if (actj) act->spr.angle = actj->spr.angle; act->spr.pos.Z -= gs.playerheight; - act->spr.zvel = 256 - (krand() & 511); + act->set_int_zvel(256 - (krand() & 511)); act->spr.xvel = 64 - (krand() & 127); ChangeActorStat(act, 4); break; @@ -519,7 +519,7 @@ DDukeActor* spawninit_d(DDukeActor* actj, DDukeActor* act, TArray* act->spr.cstat = 0; act->spr.extra = 1; act->spr.xvel = 292; - act->spr.zvel = 360; + act->set_int_zvel(360); [[fallthrough]]; case RESPAWNMARKERRED: case BLIMP: @@ -658,7 +658,7 @@ DDukeActor* spawninit_d(DDukeActor* actj, DDukeActor* act, TArray* { act->spr.xrepeat = actj->spr.xrepeat; act->spr.yrepeat = actj->spr.yrepeat; - act->spr.zvel = 128; + act->set_int_zvel(128); if (act->sector()->lotag != 2) act->spr.cstat |= CSTAT_SPRITE_INVISIBLE; } @@ -1001,7 +1001,7 @@ DDukeActor* spawninit_d(DDukeActor* actj, DDukeActor* act, TArray* { act->spr.lotag = 0; act->spr.pos.Z -= 32; - act->spr.zvel = -1024; + act->set_int_zvel(-1024); ssp(act, CLIPMASK0); if (krand() & 4) act->spr.cstat |= CSTAT_SPRITE_XFLIP; } diff --git a/source/games/duke/src/spawn_r.cpp b/source/games/duke/src/spawn_r.cpp index 2c5cf92c9..132e649f1 100644 --- a/source/games/duke/src/spawn_r.cpp +++ b/source/games/duke/src/spawn_r.cpp @@ -285,7 +285,7 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act, TArray* if (actj) act->spr.angle = actj->spr.angle; act->spr.pos.Z -= gs.playerheight; - act->spr.zvel = 256 - (krand() & 511); + act->set_int_zvel(256 - (krand() & 511)); act->spr.xvel = 64 - (krand() & 127); ChangeActorStat(act, 4); break; @@ -548,7 +548,7 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act, TArray* act->spr.cstat = 0; act->spr.extra = 1; act->spr.xvel = 292; - act->spr.zvel = 360; + act->set_int_zvel(360); [[fallthrough]]; case RESPAWNMARKERRED: if (act->spr.picnum == RESPAWNMARKERRED) @@ -663,7 +663,7 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act, TArray* { act->spr.xrepeat = actj->spr.xrepeat; act->spr.yrepeat = actj->spr.yrepeat; - act->spr.zvel = 128; + act->set_int_zvel(128); if (act->sector()->lotag != 2) act->spr.cstat |= CSTAT_SPRITE_INVISIBLE; } @@ -1156,7 +1156,7 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act, TArray* if (act->spr.picnum != BOWLINGBALLSPRITE) { act->spr.pos.Z -= 32; - act->spr.zvel = -(4 << 8); + act->set_int_zvel(-(4 << 8)); } else { diff --git a/source/games/exhumed/src/bubbles.cpp b/source/games/exhumed/src/bubbles.cpp index 17a6b4f25..8dd78d082 100644 --- a/source/games/exhumed/src/bubbles.cpp +++ b/source/games/exhumed/src/bubbles.cpp @@ -55,7 +55,7 @@ DExhumedActor* BuildBubble(const DVector3& pos, sectortype* pSector) pActor->set_int_ang(inita); pActor->spr.xvel = 0; pActor->spr.yvel = 0; - pActor->spr.zvel = -1200; + pActor->set_int_zvel(-1200); pActor->spr.hitag = -1; pActor->spr.extra = -1; pActor->spr.lotag = runlist_HeadRun() + 1; diff --git a/source/games/exhumed/src/bullet.cpp b/source/games/exhumed/src/bullet.cpp index 472c7ed95..c2a35e96d 100644 --- a/source/games/exhumed/src/bullet.cpp +++ b/source/games/exhumed/src/bullet.cpp @@ -231,7 +231,7 @@ void BulletHitsSprite(Bullet *pBullet, DExhumedActor* pBulletActor, DExhumedActo pHitActor->spr.xvel = bcos(nAngle, 1); pHitActor->spr.yvel = bsin(nAngle, 1); - pHitActor->spr.zvel = (-(RandomSize(3) + 1)) << 8; + pHitActor->set_int_zvel((-(RandomSize(3) + 1)) << 8); } else { diff --git a/source/games/exhumed/src/fish.cpp b/source/games/exhumed/src/fish.cpp index 7a47c04bc..965d2395b 100644 --- a/source/games/exhumed/src/fish.cpp +++ b/source/games/exhumed/src/fish.cpp @@ -57,7 +57,7 @@ void BuildFishLimb(DExhumedActor* pActor, int anim) pChunkActor->spr.yrepeat = 64; pChunkActor->spr.xoffset = 0; pChunkActor->spr.yoffset = 0; - pChunkActor->spr.zvel = (-(RandomByte() + 512)) * 2; + pChunkActor->set_int_zvel((-(RandomByte() + 512)) * 2); seq_GetSeqPicnum(kSeqFish, pChunkActor->nCount, 0); @@ -114,7 +114,7 @@ void AIFishLimb::Tick(RunListEvent* ev) } else if ((pActor->spr.pos.Z - FloorZ) > 0) { - pActor->spr.zvel = 1024; + pActor->set_int_zvel(1024); } } else @@ -193,17 +193,17 @@ void IdleFish(DExhumedActor* pActor, int edx) pActor->nAction = 0; pActor->nFrame = 0; - pActor->spr.zvel = RandomSize(9); + pActor->set_int_zvel(RandomSize(9)); if (!edx) { if (RandomBit()) { - pActor->spr.zvel = -pActor->int_zvel(); + pActor->set_int_zvel(-pActor->int_zvel()); } } else if (edx < 0) { - pActor->spr.zvel = -pActor->int_zvel(); + pActor->set_int_zvel(-pActor->int_zvel()); } } @@ -340,7 +340,7 @@ void AIFish::Tick(RunListEvent* ev) pActor->nFrame = 0; int nAngle = getangle(pTargetActor->spr.pos - pActor->spr.pos); - pActor->spr.zvel = bsin(nAngle, -5); + pActor->set_int_zvel(bsin(nAngle, -5)); pActor->nCount = RandomSize(6) + 90; } @@ -382,7 +382,7 @@ void AIFish::Tick(RunListEvent* ev) pActor->spr.yvel = 0; } - pActor->spr.zvel = int((pTargetActor->spr.pos.Z - pActor->spr.pos.Z) * zworldtoint / 8); + pActor->set_int_zvel(int((pTargetActor->spr.pos.Z - pActor->spr.pos.Z) * zworldtoint / 8)); } break; } diff --git a/source/games/exhumed/src/grenade.cpp b/source/games/exhumed/src/grenade.cpp index 0d2929fd1..0e58d6af7 100644 --- a/source/games/exhumed/src/grenade.cpp +++ b/source/games/exhumed/src/grenade.cpp @@ -73,7 +73,7 @@ void ThrowGrenade(int nPlayer, int, int, int ecx, int push1) int nVel = PlayerList[nPlayer].totalvel << 5; pActor->nTurn = ((90 - pActor->nIndex2) * (90 - pActor->nIndex2)) + nVel; - pActor->spr.zvel = (-64 * push1) - 4352; + pActor->set_int_zvel((-64 * push1) - 4352); auto nMov = movesprite(pActor, bcos(nAngle) * (pPlayerActor->spr.clipdist << 3), bsin(nAngle) * (pPlayerActor->spr.clipdist << 3), ecx, 0, 0, CLIPMASK1); if (nMov.type == kHitWall) @@ -85,7 +85,7 @@ void ThrowGrenade(int nPlayer, int, int, int ecx, int push1) else { pActor->nTurn = 0; - pActor->spr.zvel = pPlayerActor->int_zvel(); + pActor->set_int_zvel(pPlayerActor->int_zvel()); } pActor->x = bcos(nAngle, -4) * pActor->nTurn; @@ -299,7 +299,7 @@ void AIGrenade::Tick(RunListEvent* ev) D3PlayFX(StaticSound[kSound3], pActor); - pActor->spr.zvel = -(zVel >> 1); + pActor->set_int_zvel(-(zVel >> 1)); if (pActor->int_zvel() > -1280) { diff --git a/source/games/exhumed/src/items.cpp b/source/games/exhumed/src/items.cpp index 6ce2c90b5..b3ce3d346 100644 --- a/source/games/exhumed/src/items.cpp +++ b/source/games/exhumed/src/items.cpp @@ -365,7 +365,7 @@ void StartRegenerate(DExhumedActor* pActor) { // ?? CHECKME pActor->spr.xvel = pActor->spr.xrepeat; - pActor->spr.zvel = pActor->spr.shade; + pActor->set_int_zvel(pActor->spr.shade); pActor->spr.yvel = pActor->spr.pal; } else diff --git a/source/games/exhumed/src/lavadude.cpp b/source/games/exhumed/src/lavadude.cpp index c46fcfb13..8cf79846b 100644 --- a/source/games/exhumed/src/lavadude.cpp +++ b/source/games/exhumed/src/lavadude.cpp @@ -47,7 +47,7 @@ DExhumedActor* BuildLavaLimb(DExhumedActor* pActor, int move, int ebx) pLimbActor->spr.pal = 1; pLimbActor->spr.xvel = (RandomSize(5) - 16) << 8; pLimbActor->spr.yvel = (RandomSize(5) - 16) << 8; - pLimbActor->spr.zvel = 2560 - (RandomSize(5) << 8); + pLimbActor->set_int_zvel(2560 - (RandomSize(5) << 8)); pLimbActor->spr.xoffset = 0; pLimbActor->spr.yoffset = 0; pLimbActor->spr.xrepeat = 90; diff --git a/source/games/exhumed/src/lion.cpp b/source/games/exhumed/src/lion.cpp index 4044b455e..0b4af2d4e 100644 --- a/source/games/exhumed/src/lion.cpp +++ b/source/games/exhumed/src/lion.cpp @@ -376,7 +376,7 @@ void AILion::Tick(RunListEvent* ev) pActor->nCount--; if (pActor->nCount <= 0) { - pActor->spr.zvel = -4000; + pActor->set_int_zvel(-4000); pActor->nCount = 0; int nCheckDist = 0x7FFFFFFF; @@ -473,7 +473,7 @@ void AILion::Tick(RunListEvent* ev) pActor->set_int_ang((RandomSize(9) + (pActor->int_ang() + 768)) & kAngleMask); } - pActor->spr.zvel = -1000; + pActor->set_int_zvel(-1000); pActor->nAction = 6; pActor->spr.xvel = bcos(pActor->int_ang()) - bcos(pActor->int_ang(), -3); diff --git a/source/games/exhumed/src/move.cpp b/source/games/exhumed/src/move.cpp index 4a383d848..97023c3cf 100644 --- a/source/games/exhumed/src/move.cpp +++ b/source/games/exhumed/src/move.cpp @@ -399,7 +399,7 @@ Collision movespritez(DExhumedActor* pActor, int z, int height, int, int clipdis runlist_DamageEnemy(loHit.actor(), pActor, nDamage << 1); } - pActor->spr.zvel = -z; + pActor->set_int_zvel(-z); } else { @@ -605,7 +605,7 @@ void Gravity(DExhumedActor* pActor) { pActor->spr.zvel += 512; if (pActor->int_zvel() > 16384) { - pActor->spr.zvel = 16384; + pActor->set_int_zvel(16384); } } } @@ -1152,7 +1152,7 @@ Collision AngleChase(DExhumedActor* pActor, DExhumedActor* pActor2, int ebx, int nAngle = (nAngDelta + pActor->int_ang()) & kAngleMask; int nAngDeltaD = AngleDelta(pActor->int_zvel(), var_18, 24); - pActor->spr.zvel = (pActor->int_zvel() + nAngDeltaD) & kAngleMask; + pActor->set_int_zvel((pActor->int_zvel() + nAngDeltaD) & kAngleMask); } pActor->set_int_ang(nAngle); @@ -1316,7 +1316,7 @@ DExhumedActor* BuildCreatureChunk(DExhumedActor* pSrc, int nPic, bool bSpecial) pActor->spr.xvel = (RandomSize(5) - 16) << 7; pActor->spr.yvel = (RandomSize(5) - 16) << 7; - pActor->spr.zvel = (-(RandomSize(8) + 512)) << 3; + pActor->set_int_zvel((-(RandomSize(8) + 512)) << 3); if (bSpecial) { @@ -1381,7 +1381,7 @@ void AICreatureChunk::Tick(RunListEvent* ev) { pActor->spr.xvel >>= 1; pActor->spr.yvel >>= 1; - pActor->spr.zvel = -pActor->int_zvel(); + pActor->set_int_zvel(-pActor->int_zvel()); return; } else if (nVal.type == kHitSprite) diff --git a/source/games/exhumed/src/object.cpp b/source/games/exhumed/src/object.cpp index 6b8c3027a..ab4179779 100644 --- a/source/games/exhumed/src/object.cpp +++ b/source/games/exhumed/src/object.cpp @@ -1393,7 +1393,7 @@ DExhumedActor* BuildSpark(DExhumedActor* pActor, int nVal) pSpark->spr.yvel = bsin(nAngle, -6); } - pSpark->spr.zvel = -(RandomSize(4) << 7); + pSpark->set_int_zvel(-(RandomSize(4) << 7)); pSpark->spr.picnum = kTile985 + nVal; } diff --git a/source/games/exhumed/src/player.cpp b/source/games/exhumed/src/player.cpp index c44fb72b1..0ddff9f6a 100644 --- a/source/games/exhumed/src/player.cpp +++ b/source/games/exhumed/src/player.cpp @@ -851,7 +851,7 @@ void AIPlayer::Tick(RunListEvent* ev) int z = (pPlayerActor->spr.zvel * 4) >> 2; if (pPlayerActor->int_zvel() > 8192) - pPlayerActor->spr.zvel = 8192; + pPlayerActor->set_int_zvel(8192); if (PlayerList[nPlayer].bIsMummified) { @@ -896,7 +896,7 @@ void AIPlayer::Tick(RunListEvent* ev) pPlayerActor->spr.pos.XY() = spr_pos.XY(); if (zVel < pPlayerActor->int_zvel()) { - pPlayerActor->spr.zvel = zVel; + pPlayerActor->set_int_zvel(zVel); } } @@ -2252,14 +2252,14 @@ sectdone: { if (bUnderwater) { - pPlayerActor->spr.zvel = -2048; + pPlayerActor->set_int_zvel(-2048); nActionB = 10; } else if (bTouchFloor) { if (nAction < 6 || nAction > 8) { - pPlayerActor->spr.zvel = -3584; + pPlayerActor->set_int_zvel(-3584); nActionB = 3; } } @@ -2270,7 +2270,7 @@ sectdone: { if (bUnderwater) { - pPlayerActor->spr.zvel = 2048; + pPlayerActor->set_int_zvel(2048); nActionB = 10; } else diff --git a/source/games/exhumed/src/queen.cpp b/source/games/exhumed/src/queen.cpp index 4bbafe0db..bf3643564 100644 --- a/source/games/exhumed/src/queen.cpp +++ b/source/games/exhumed/src/queen.cpp @@ -325,7 +325,7 @@ Collision QueenAngleChase(DExhumedActor* pActor, DExhumedActor* pActor2, int val nAngle = (nAngDelta + pActor->int_ang()) & kAngleMask; - pActor->spr.zvel = (AngleDelta(pActor->int_zvel(), var_14, 24) + pActor->int_zvel()) & kAngleMask; + pActor->set_int_zvel((AngleDelta(pActor->int_zvel(), var_14, 24) + pActor->int_zvel()) & kAngleMask); // not really avelocity } pActor->set_int_ang(nAngle); @@ -446,7 +446,7 @@ void BuildQueenEgg(int nQueen, int nVal) pActor2->spr.yrepeat = 30; pActor2->spr.xvel = bcos(pActor2->int_ang()); pActor2->spr.yvel = bsin(pActor2->int_ang()); - pActor2->spr.zvel = -6000; + pActor2->set_int_zvel(-6000); pActor2->spr.cstat = 0; } else @@ -455,7 +455,7 @@ void BuildQueenEgg(int nQueen, int nVal) pActor2->spr.yrepeat = 60; pActor2->spr.xvel = 0; pActor2->spr.yvel = 0; - pActor2->spr.zvel = -2000; + pActor2->set_int_zvel(-2000); pActor2->spr.cstat = CSTAT_SPRITE_BLOCK_ALL; } @@ -606,7 +606,7 @@ void AIQueenEgg::Tick(RunListEvent* ev) pActor->norm_ang(); pActor->spr.xvel = bcos(pActor->int_ang(), -3); pActor->spr.yvel = bsin(pActor->int_ang(), -3); - pActor->spr.zvel = -RandomSize(5); + pActor->set_int_zvel(-RandomSize(5)); break; } @@ -619,7 +619,7 @@ void AIQueenEgg::Tick(RunListEvent* ev) if (nMov.exbits & kHitAux2) { - pActor->spr.zvel = -(pActor->spr.zvel - 256); + pActor->set_int_zvel(-(pActor->spr.zvel - 256)); if (pActor->int_zvel() < -512) { pActor->set_int_zvel(0); @@ -701,7 +701,7 @@ void BuildQueenHead(int nQueen) nVelShift = 2; SetHeadVel(pActor2); - pActor2->spr.zvel = -8192; + pActor2->set_int_zvel(-8192); pActor2->spr.lotag = runlist_HeadRun() + 1; pActor2->spr.hitag = 0; pActor2->spr.extra = -1; @@ -797,7 +797,7 @@ void AIQueenHead::Tick(RunListEvent* ev) } else if (nMov.exbits == kHitAux2) { - pActor->spr.zvel = -(pActor->int_zvel() >> 1); + pActor->set_int_zvel(-(pActor->int_zvel() >> 1)); if (pActor->int_zvel() > -256) { @@ -885,7 +885,7 @@ void AIQueenHead::Tick(RunListEvent* ev) pActor->add_int_ang(RandomSize(9) + 768); pActor->norm_ang(); - pActor->spr.zvel = (-20) - RandomSize(6); + pActor->set_int_zvel((-20) - RandomSize(6)); SetHeadVel(pActor); } diff --git a/source/games/exhumed/src/rex.cpp b/source/games/exhumed/src/rex.cpp index bc3f2795b..87f85883e 100644 --- a/source/games/exhumed/src/rex.cpp +++ b/source/games/exhumed/src/rex.cpp @@ -347,13 +347,13 @@ void AIRex::Tick(RunListEvent* ev) auto nPlayer = GetPlayerFromActor(nMov.actor()); PlayerList[nPlayer].nDamage.X += (xVel << 4); PlayerList[nPlayer].nDamage.Y += (yVel << 4); - pHitActor->spr.zvel = -3584; + pHitActor->set_int_zvel(-3584); } else { pHitActor->spr.xvel += (xVel >> 3); pHitActor->spr.yvel += (yVel >> 3); - pHitActor->spr.zvel = -2880; + pHitActor->set_int_zvel(-2880); } } diff --git a/source/games/exhumed/src/runlist.cpp b/source/games/exhumed/src/runlist.cpp index 4acc0516e..4ba5ccd04 100644 --- a/source/games/exhumed/src/runlist.cpp +++ b/source/games/exhumed/src/runlist.cpp @@ -1660,7 +1660,7 @@ int runlist_CheckRadialDamage(DExhumedActor* pActor) pActor->spr.zvel -= edi * 24; if (pActor->int_zvel() < -3584) { - pActor->spr.zvel = -3584; + pActor->set_int_zvel(-3584); } } } diff --git a/source/games/exhumed/src/scorp.cpp b/source/games/exhumed/src/scorp.cpp index cb3459efe..c56f363cf 100644 --- a/source/games/exhumed/src/scorp.cpp +++ b/source/games/exhumed/src/scorp.cpp @@ -373,7 +373,7 @@ void AIScorp::Tick(RunListEvent* ev) pSpiderActor->spr.xvel = bcos(pSpiderActor->int_ang(), -8) * nVel; pSpiderActor->spr.yvel = bsin(pSpiderActor->int_ang(), -8) * nVel; - pSpiderActor->spr.zvel = (-(RandomSize(5) + 3)) << 8; + pSpiderActor->set_int_zvel((-(RandomSize(5) + 3)) << 8); } return; diff --git a/source/games/exhumed/src/set.cpp b/source/games/exhumed/src/set.cpp index 94abb74d3..79f124225 100644 --- a/source/games/exhumed/src/set.cpp +++ b/source/games/exhumed/src/set.cpp @@ -107,7 +107,7 @@ void BuildSoul(DExhumedActor* pSet) pActor->set_int_ang(RandomSize(11)); pActor->spr.xvel = 0; pActor->spr.yvel = 0; - pActor->spr.zvel = (-256) - RandomSize(10); + pActor->set_int_zvel((-256) - RandomSize(10)); pActor->spr.pos = DVector3(pSet->spr.pos.XY(), RandomSize(8) + 32 + pActor->sector()->ceilingz - GetActorHeightF(pActor)); //pActor->spr.hitag = nSet; @@ -512,11 +512,11 @@ void AISet::Tick(RunListEvent* ev) { if (pActor->nIndex) { - pActor->spr.zvel = -10000; + pActor->set_int_zvel(-10000); } else { - pActor->spr.zvel = -(PlotCourseToSprite(pActor, pTarget)); + pActor->set_int_zvel(-(PlotCourseToSprite(pActor, pTarget))); } pActor->nAction = 8; diff --git a/source/games/exhumed/src/spider.cpp b/source/games/exhumed/src/spider.cpp index 96bc3db86..97eeff892 100644 --- a/source/games/exhumed/src/spider.cpp +++ b/source/games/exhumed/src/spider.cpp @@ -180,7 +180,7 @@ void AISpider::Tick(RunListEvent* ev) if (pSector->ceilingstat & CSTAT_SECTOR_SKY) { spp->spr.cstat ^= CSTAT_SPRITE_YFLIP; - spp->spr.zvel = 1; + spp->set_int_zvel(1); spp->nAction = 3; spp->nFrame = 0; @@ -207,12 +207,12 @@ void AISpider::Tick(RunListEvent* ev) if (spp->spr.cstat & CSTAT_SPRITE_YFLIP) { spp->spr.cstat ^= CSTAT_SPRITE_YFLIP; - spp->spr.zvel = 1; + spp->set_int_zvel(1); spp->spr.pos.Z = spp->sector()->ceilingz+ GetActorHeightF(spp); } else { - spp->spr.zvel = -5120; + spp->set_int_zvel(-5120); } spp->nAction = 3; diff --git a/source/games/exhumed/src/wasp.cpp b/source/games/exhumed/src/wasp.cpp index fda6fcd5c..faadb328c 100644 --- a/source/games/exhumed/src/wasp.cpp +++ b/source/games/exhumed/src/wasp.cpp @@ -161,7 +161,7 @@ void AIWasp::Damage(RunListEvent* ev) pActor->nVel = 3000; - pActor->spr.zvel = (-20) - RandomSize(6); + pActor->set_int_zvel((-20) - RandomSize(6)); } else { @@ -174,7 +174,7 @@ void AIWasp::Damage(RunListEvent* ev) SetWaspVel(pActor); - pActor->spr.zvel = 512; + pActor->set_int_zvel(512); nCreaturesKilled++; } @@ -226,7 +226,7 @@ void AIWasp::Tick(RunListEvent* ev) case 0: { - pActor->spr.zvel = bsin(pActor->nAngle, -4); + pActor->set_int_zvel(bsin(pActor->nAngle, -4)); pActor->nAngle += pActor->nAngle2; pActor->nAngle &= kAngleMask; @@ -306,7 +306,7 @@ void AIWasp::Tick(RunListEvent* ev) { pActor->add_int_ang(RandomSize(9) + 768); pActor->norm_ang(); - pActor->spr.zvel = (-20) - RandomSize(6); + pActor->set_int_zvel((-20) - RandomSize(6)); pActor->nAction = 1; pActor->nVel = 3000; @@ -321,7 +321,7 @@ void AIWasp::Tick(RunListEvent* ev) { pActor->spr.xvel = 0; pActor->spr.yvel = 0; - pActor->spr.zvel = 1024; + pActor->set_int_zvel(1024); pActor->nAction = 5; pActor->nFrame = 0; } diff --git a/source/games/sw/src/draw.cpp b/source/games/sw/src/draw.cpp index 379bb085b..779781267 100644 --- a/source/games/sw/src/draw.cpp +++ b/source/games/sw/src/draw.cpp @@ -522,7 +522,7 @@ DSWActor* CopySprite(sprt const* tsp, sectortype* newsector) actorNew->spr.angle = tsp->angle; actorNew->spr.xvel = tsp->xvel; actorNew->spr.yvel = tsp->yvel; - actorNew->spr.zvel = tsp->zvel; + actorNew->spr.inittype = tsp->inittype; actorNew->spr.shade = tsp->shade; actorNew->spr.cstat &= ~(CSTAT_SPRITE_BLOCK | CSTAT_SPRITE_BLOCK_HITSCAN); diff --git a/source/games/sw/src/jweapon.cpp b/source/games/sw/src/jweapon.cpp index cc13ecac8..b76eabcc7 100644 --- a/source/games/sw/src/jweapon.cpp +++ b/source/games/sw/src/jweapon.cpp @@ -269,13 +269,13 @@ int DoWallBloodDrip(DSWActor* actor) } else { - actor->spr.zvel = (300+RandomRange(2300)) >> 1; + actor->set_int_zvel((300+RandomRange(2300)) >> 1); actor->add_int_z(actor->int_zvel()); } } else { - actor->spr.zvel = (300+RandomRange(2300)) >> 1; + actor->set_int_zvel((300+RandomRange(2300)) >> 1); actor->add_int_z(actor->int_zvel()); } @@ -1173,12 +1173,12 @@ int SpawnRadiationCloud(DSWActor* actor) { actorNew->user.Radius = 2000; actorNew->user.change.XY() = MOVExy(actorNew->spr.xvel >> 2, actorNew->spr.angle); - actorNew->spr.zvel = Z(1) + RANDOM_P2(Z(2)); + actorNew->set_int_zvel(Z(1) + RANDOM_P2(Z(2))); } else { UpdateChangeXY(actorNew); - actorNew->spr.zvel = Z(4) + RANDOM_P2(Z(4)); + actorNew->set_int_zvel(Z(4) + RANDOM_P2(Z(4))); actorNew->user.Radius = 4000; } @@ -1248,7 +1248,7 @@ int PlayerInitChemBomb(PLAYER* pp) if (pp->Flags & (PF_DIVING) || SpriteInUnderwaterArea(actorNew)) actorNew->user.Flags |= (SPR_UNDERWATER); - actorNew->spr.zvel = -pp->horizon.horiz.asq16() >> 9; + actorNew->set_int_zvel(-pp->horizon.horiz.asq16() >> 9); oclipdist = plActor->spr.clipdist; plActor->spr.clipdist = 0; @@ -1294,7 +1294,7 @@ int InitSpriteChemBomb(DSWActor* actor) actorNew->spr.cstat |= (CSTAT_SPRITE_YCENTER); actorNew->spr.cstat |= (CSTAT_SPRITE_BLOCK); - actorNew->spr.zvel = short(-RandomRange(100) * HORIZ_MULT); + actorNew->set_int_zvel(short(-RandomRange(100) * HORIZ_MULT)); actorNew->spr.clipdist = 80L >> 2; @@ -1330,7 +1330,7 @@ int InitChemBomb(DSWActor* actor) if (SpriteInUnderwaterArea(actorNew)) actorNew->user.Flags |= (SPR_UNDERWATER); - actorNew->spr.zvel = short(-RandomRange(100) * HORIZ_MULT); + actorNew->set_int_zvel(short(-RandomRange(100) * HORIZ_MULT)); actorNew->spr.clipdist = 0; if (actor->user.ID == MUSHROOM_CLOUD || actor->user.ID == 3121 || actor->user.ID == SUMO_RUN_R0) // 3121 == GRENADE_EXP @@ -1600,7 +1600,7 @@ int PlayerInitCaltrops(PLAYER* pp) // They go out at different angles // spawnedActor->spr.ang = NORM_ANGLE(pp->angle.ang.Buildang() + (RandomRange(50) - 25)); - actorNew->spr.zvel = -pp->horizon.horiz.asq16() >> 9; + actorNew->set_int_zvel(-pp->horizon.horiz.asq16() >> 9); oclipdist = plActor->spr.clipdist; plActor->spr.clipdist = 0; @@ -1644,7 +1644,7 @@ int InitCaltrops(DSWActor* actor) actorNew->user.floor_dist = (3); actorNew->user.Counter = 0; - actorNew->spr.zvel = short(-RandomRange(100) * HORIZ_MULT); + actorNew->set_int_zvel(short(-RandomRange(100) * HORIZ_MULT)); // spawnedActor->spr.clipdist = 80L>>2; @@ -1684,7 +1684,7 @@ int InitPhosphorus(DSWActor* actor) actorNew->user.floor_dist = (3); actorNew->user.Counter = 0; - actorNew->spr.zvel = short(-RandomRange(100) * HORIZ_MULT); + actorNew->set_int_zvel(short(-RandomRange(100) * HORIZ_MULT)); UpdateChange(actorNew, 0.5); @@ -1749,7 +1749,7 @@ int InitBloodSpray(DSWActor* actor, bool dogib, short velocity) actorNew->user.floor_dist = (3); actorNew->user.Counter = 0; - actorNew->spr.zvel = short((-10 - RandomRange(50)) * HORIZ_MULT); + actorNew->set_int_zvel(short((-10 - RandomRange(50)) * HORIZ_MULT)); UpdateChange(actorNew, 0.5); @@ -2098,7 +2098,7 @@ int SpawnShell(DSWActor* actor, int ShellNum) auto actorNew = SpawnActor(STAT_SKIP4, id, p, actor->sector(), ActorVectOfMiddle(actor), actor->spr.angle, 64); - actorNew->spr.zvel = -(velocity); + actorNew->set_int_zvel(-(velocity)); if (actor->user.PlayerP) { diff --git a/source/games/sw/src/miscactr.cpp b/source/games/sw/src/miscactr.cpp index e4ac3988f..9940f6482 100644 --- a/source/games/sw/src/miscactr.cpp +++ b/source/games/sw/src/miscactr.cpp @@ -353,8 +353,7 @@ int SetupWashGirl(DSWActor* actor) actor->spr.xrepeat = 28; actor->spr.yrepeat = 24; - actor->spr.xvel = actor->spr.yvel = 0; - actor->set_int_zvel(0); + actor->spr.xvel = actor->spr.yvel = 0; actor->set_int_zvel(0); actor->spr.lotag = WASHGIRL_R0; actor->user.FlagOwner = 0; actor->user.ID = WASHGIRL_R0; @@ -421,8 +420,7 @@ int DoWashGirl(DSWActor* actor) // take damage from environment DoActorSectorDamage(actor); - actor->spr.xvel = actor->spr.yvel = 0; - actor->set_int_zvel(0); + actor->spr.xvel = actor->spr.yvel = 0; actor->set_int_zvel(0); return 0; } @@ -549,8 +547,7 @@ int SetupTrashCan(DSWActor* actor) actor->spr.xrepeat = 46; actor->spr.yrepeat = 42; - actor->spr.xvel = actor->spr.yvel = 0; - actor->set_int_zvel(0); + actor->spr.xvel = actor->spr.yvel = 0; actor->set_int_zvel(0); actor->user.ID = TRASHCAN; actor->user.Flags &= ~(SPR_XFLIP_TOGGLE); @@ -570,8 +567,7 @@ int DoTrashCan(DSWActor* actor) KeepActorOnFloor(actor); } - actor->spr.xvel = actor->spr.yvel = 0; - actor->set_int_zvel(0); + actor->spr.xvel = actor->spr.yvel = 0; actor->set_int_zvel(0); return 0; } @@ -642,8 +638,7 @@ int SetupPachinkoLight(DSWActor* actor) actor->user.RotNum = 0; actor->user.ID = PACHINKOLIGHT_R0; - actor->spr.xvel = actor->spr.yvel = 0; - actor->set_int_zvel(0); + actor->spr.xvel = actor->spr.yvel = 0; actor->set_int_zvel(0); actor->spr.lotag = TAG_PACHINKOLIGHT; actor->spr.shade = -2; actor->user.spal = actor->spr.pal; @@ -1041,6 +1036,7 @@ int SetupPachinko4(DSWActor* actor) actor->user.RotNum = 0; actor->user.ID = PACHINKO4; + actor->spr.yvel = 0; actor->set_int_zvel(0); actor->spr.lotag = PACHINKO4; @@ -1148,8 +1144,7 @@ int SetupCarGirl(DSWActor* actor) actor->spr.xrepeat = 29; actor->spr.yrepeat = 25; - actor->spr.xvel = actor->spr.yvel = 0; - actor->set_int_zvel(0); + actor->spr.xvel = actor->spr.yvel = 0; actor->set_int_zvel(0); actor->spr.lotag = CARGIRL_R0; actor->user.FlagOwner = 0; actor->user.ID = CARGIRL_R0; @@ -1199,8 +1194,7 @@ int DoCarGirl(DSWActor* actor) // take damage from environment DoActorSectorDamage(actor); - actor->spr.xvel = actor->spr.yvel = 0; - actor->set_int_zvel(0); + actor->spr.xvel = actor->spr.yvel = 0; actor->set_int_zvel(0); return 0; } @@ -1351,8 +1345,7 @@ int SetupMechanicGirl(DSWActor* actor) actor->spr.xrepeat = 27; actor->spr.yrepeat = 26; - actor->spr.xvel = actor->spr.yvel = 0; - actor->set_int_zvel(0); + actor->spr.xvel = actor->spr.yvel = 0; actor->set_int_zvel(0); actor->spr.lotag = MECHANICGIRL_R0; actor->user.FlagOwner = 0; actor->user.ID = MECHANICGIRL_R0; @@ -1401,8 +1394,7 @@ int DoMechanicGirl(DSWActor* actor) // take damage from environment DoActorSectorDamage(actor); - actor->spr.xvel = actor->spr.yvel = 0; - actor->set_int_zvel(0); + actor->spr.xvel = actor->spr.yvel = 0; actor->set_int_zvel(0); return 0; } @@ -1553,8 +1545,7 @@ int SetupSailorGirl(DSWActor* actor) actor->spr.xrepeat = 28; actor->spr.yrepeat = 26; - actor->spr.xvel = actor->spr.yvel = 0; - actor->set_int_zvel(0); + actor->spr.xvel = actor->spr.yvel = 0; actor->set_int_zvel(0); actor->spr.lotag = SAILORGIRL_R0; actor->user.FlagOwner = 0; actor->user.ID = SAILORGIRL_R0; @@ -1608,8 +1599,7 @@ int DoSailorGirl(DSWActor* actor) // take damage from environment DoActorSectorDamage(actor); - actor->spr.xvel = actor->spr.yvel = 0; - actor->set_int_zvel(0); + actor->spr.xvel = actor->spr.yvel = 0; actor->set_int_zvel(0); return 0; } @@ -1749,8 +1739,7 @@ int SetupPruneGirl(DSWActor* actor) actor->spr.xrepeat = 33; actor->spr.yrepeat = 28; - actor->spr.xvel = actor->spr.yvel = 0; - actor->set_int_zvel(0); + actor->spr.xvel = actor->spr.yvel = 0; actor->set_int_zvel(0); actor->spr.lotag = PRUNEGIRL_R0; actor->user.FlagOwner = 0; actor->user.ID = PRUNEGIRL_R0; @@ -1815,8 +1804,7 @@ int DoPruneGirl(DSWActor* actor) // take damage from environment DoActorSectorDamage(actor); - actor->spr.xvel = actor->spr.yvel = 0; - actor->set_int_zvel(0); + actor->spr.xvel = actor->spr.yvel = 0; actor->set_int_zvel(0); return 0; } diff --git a/source/games/sw/src/sprite.cpp b/source/games/sw/src/sprite.cpp index d16d6da9a..99d82918f 100644 --- a/source/games/sw/src/sprite.cpp +++ b/source/games/sw/src/sprite.cpp @@ -2403,7 +2403,8 @@ void SpriteSetup(void) break; case DEMO_CAMERA: - actor->spr.yvel = actor->spr.zvel = 100; //attempt horiz control + actor->spr.yvel = 100; + actor->set_int_zvel(100); //attempt horiz control change_actor_stat(actor, STAT_DEMO_CAMERA); break; @@ -3493,7 +3494,7 @@ void SetupItemForJump(DSWActor* spawner, DSWActor* actor) actor->user.Counter = 0; actor->spr.xvel = (int)SP_TAG7(spawner)<<2; - actor->spr.zvel = -(((int)SP_TAG8(spawner))<<5); + actor->set_int_zvel(-(((int)SP_TAG8(spawner))<<5)); UpdateChange(actor); } diff --git a/source/games/sw/src/track.cpp b/source/games/sw/src/track.cpp index 15fea3a4b..f8c323335 100644 --- a/source/games/sw/src/track.cpp +++ b/source/games/sw/src/track.cpp @@ -3332,7 +3332,7 @@ bool ActorTrackDecide(TRACK_POINT* tpoint, DSWActor* actor) actor->user.Flags |= (SPR_CLIMBING); NewStateGroup(actor, actor->user.ActorActionSet->Climb); - actor->spr.zvel = -Z(1); + actor->set_int_zvel(-Z(1)); } break; @@ -3433,7 +3433,7 @@ int ActorFollowTrack(DSWActor* actor, short locktics) // (velocity * difference between the target and the object) / // distance - actor->spr.zvel = (int) -((actor->spr.xvel * (actor->spr.pos.Z - tpoint->pos.Z)) / dist); + actor->set_int_zvel((int) -((actor->spr.xvel * (actor->spr.pos.Z - tpoint->pos.Z)) / dist)); } } else diff --git a/source/games/sw/src/weapon.cpp b/source/games/sw/src/weapon.cpp index f4b0a7790..f4c2fd97d 100644 --- a/source/games/sw/src/weapon.cpp +++ b/source/games/sw/src/weapon.cpp @@ -7675,7 +7675,7 @@ int MissileSeek(DSWActor* actor, int16_t delay_tics, int16_t aware_range/*, int1 double zh = ActorZOfTop(actor) + (ActorSizeZ(actor) * 0.25); auto vel = clamp((zh - actor->spr.pos.Z)* 0.5, -16., 16.); - actor->spr.zvel = vel * zworldtoint; + actor->set_int_zvel(vel * zworldtoint); UpdateChange(actor); } @@ -9291,7 +9291,7 @@ int SpawnExtraMicroMini(DSWActor* actor) actorNew->spr.cstat = actor->spr.cstat; actorNew->set_int_ang(NORM_ANGLE(actorNew->int_ang() + RandomRange(64) - 32)); - actorNew->spr.zvel = actor->int_zvel(); + actorNew->set_int_zvel(actor->int_zvel()); actorNew->spr.zvel += RandomRange(Z(16)) - Z(8); UpdateChange(actorNew); @@ -9319,7 +9319,7 @@ int DoMicro(DSWActor* actor) actorNew->spr.xrepeat = 20; actorNew->spr.yrepeat = 20; actorNew->opos = actor->opos; - actorNew->spr.zvel = actor->int_zvel(); + actorNew->set_int_zvel(actor->int_zvel()); actorNew->spr.cstat |= (CSTAT_SPRITE_YCENTER); actorNew->spr.cstat &= ~(CSTAT_SPRITE_BLOCK|CSTAT_SPRITE_BLOCK_HITSCAN); @@ -10887,8 +10887,7 @@ bool MissileSetPos(DSWActor* actor, ANIMATOR* DoWeapon, int dist) // make missile move in smaller increments actor->spr.xvel = short((dist * 6) / MISSILEMOVETICS); - //actor->spr.zvel = (actor->spr.zvel*4) / MISSILEMOVETICS; - actor->spr.zvel = short((actor->spr.zvel*6) / MISSILEMOVETICS); + actor->set_int_zvel(short((actor->spr.zvel*6) / MISSILEMOVETICS)); // some Weapon Animators use this UpdateChange(actor); @@ -10901,7 +10900,7 @@ bool MissileSetPos(DSWActor* actor, ANIMATOR* DoWeapon, int dist) // reset values actor->user.change = oldc; actor->spr.xvel = oldvel; - actor->spr.zvel = oldzvel; + actor->set_int_zvel(oldzvel); // update for interpolation actor->backuppos(); @@ -10921,7 +10920,6 @@ bool TestMissileSetPos(DSWActor* actor, ANIMATOR* DoWeapon, int dist, int zvel) // make missile move in smaller increments actor->spr.xvel = short((dist * 6) / MISSILEMOVETICS); - //actor->spr.zvel = (actor->spr.zvel*4) / MISSILEMOVETICS; zvel = short((zvel*6) / MISSILEMOVETICS); // some Weapon Animators use this @@ -10936,7 +10934,7 @@ bool TestMissileSetPos(DSWActor* actor, ANIMATOR* DoWeapon, int dist, int zvel) // reset values actor->user.change = oldc; actor->spr.xvel = oldvel; - actor->spr.zvel = oldzvel; + actor->set_int_zvel(oldzvel); // update for interpolation actor->backuppos(); @@ -11203,7 +11201,7 @@ void SetZVelFromTarget(DSWActor* actorNew, DSWActor* actor, bool setchange = fal { double zdist = (ActorUpperZ(actor->user.targetActor) - actorNew->spr.pos.Z - offset) / dist; double change = zdist * actorNew->spr.xvel * inttoworld; - actorNew->spr.zvel = (change * zworldtoint); + actorNew->set_int_zvel((change * zworldtoint)); if (setchange) actorNew->user.change.Z = change; } } @@ -11339,7 +11337,7 @@ int InitSerpRing(DSWActor* actor) actorNew->spr.xrepeat = 64; actorNew->spr.yrepeat = 64; actorNew->spr.yvel = 2*RINGMOVETICS; - actorNew->spr.zvel = Z(3); + actorNew->set_int_zvel(Z(3)); actorNew->spr.pal = 0; actorNew->spr.pos.Z = ActorZOfTop(actor) - 20; @@ -11417,7 +11415,7 @@ void InitSpellNapalm(PLAYER* pp) actor->spr.xrepeat = 32; actor->spr.yrepeat = 32; actor->spr.clipdist = 0; - actor->spr.zvel = -pp->horizon.horiz.asq16() >> 9; + actor->set_int_zvel(-pp->horizon.horiz.asq16() >> 9); actor->spr.cstat |= (CSTAT_SPRITE_TRANSLUCENT | CSTAT_SPRITE_YCENTER); actor->spr.cstat &= ~(CSTAT_SPRITE_BLOCK | CSTAT_SPRITE_BLOCK_HITSCAN); actor->user.Flags2 |= (SPR2_BLUR_TAPER_FAST); @@ -11537,7 +11535,7 @@ int InitSpellMirv(PLAYER* pp) actorNew->spr.xrepeat = 72; actorNew->spr.yrepeat = 72; actorNew->spr.clipdist = 32 >> 2; - actorNew->spr.zvel = -pp->horizon.horiz.asq16() >> 9; + actorNew->set_int_zvel(-pp->horizon.horiz.asq16() >> 9); actorNew->spr.cstat |= (CSTAT_SPRITE_TRANSLUCENT | CSTAT_SPRITE_YCENTER); actorNew->spr.cstat &= ~(CSTAT_SPRITE_BLOCK | CSTAT_SPRITE_BLOCK_HITSCAN); @@ -12178,7 +12176,7 @@ int WeaponAutoAim(DSWActor* actor, DSWActor* mislActor, short ang, bool test) else zh = tos + (siz * 0.25); - mislActor->spr.zvel = int((mislActor->spr.xvel * (zh - mislActor->spr.pos.Z)) / dist) * (zworldtoint / worldtoint); + mislActor->set_int_zvel(int((mislActor->spr.xvel * (zh - mislActor->spr.pos.Z)) / dist) * (zworldtoint / worldtoint)); } return 0; } @@ -12397,7 +12395,7 @@ int InitStar(PLAYER* pp) // zvel had to be tweaked alot for this weapon // MissileSetPos seemed to be pushing the sprite too far up or down when // the horizon was tilted. Never figured out why. - actorNew->spr.zvel = zvel >> 1; + actorNew->set_int_zvel(zvel >> 1); if (MissileSetPos(actorNew, DoStar, 1000)) { KillActor(actorNew); @@ -12437,7 +12435,7 @@ int InitStar(PLAYER* pp) actorNew2->user.Flags |= SPR_UNDERWATER; zvel = -MulScale(pp->horizon.horiz.asq16(), HORIZ_MULT+STAR_HORIZ_ADJ, 16); - actorNew2->spr.zvel = zvel >> 1; + actorNew2->set_int_zvel(zvel >> 1); if (MissileSetPos(actorNew2, DoStar, 1000)) { @@ -12480,7 +12478,7 @@ void InitHeartAttack(PLAYER* pp) actorNew->spr.xrepeat = 52; actorNew->spr.yrepeat = 52; actorNew->spr.clipdist = 0; - actorNew->spr.zvel = -pp->horizon.horiz.asq16() >> 9; + actorNew->set_int_zvel(-pp->horizon.horiz.asq16() >> 9); actorNew->spr.cstat &= ~(CSTAT_SPRITE_BLOCK | CSTAT_SPRITE_BLOCK_HITSCAN); actorNew->user.Flags2 |= (SPR2_DONT_TARGET_OWNER); actorNew->spr.cstat |= (CSTAT_SPRITE_INVISIBLE); @@ -12782,7 +12780,7 @@ int InitLaser(PLAYER* pp) actorNew->spr.clipdist = 64L>>2; // the slower the missile travels the less of a zvel it needs - actorNew->spr.zvel = -pp->horizon.horiz.asq16() >> 11; + actorNew->set_int_zvel(-pp->horizon.horiz.asq16() >> 11); actorNew->user.WeaponNum = actor->user.WeaponNum; actorNew->user.Radius = 200; @@ -12913,7 +12911,7 @@ int InitRail(PLAYER* pp) actor->spr.clipdist = oclipdist; - actorNew->spr.zvel = zvel >> 1; + actorNew->set_int_zvel(zvel >> 1); if (WeaponAutoAim(pp->actor, actorNew, 32, false) == -1) { actorNew->set_int_ang(NORM_ANGLE(actorNew->int_ang() - 4)); @@ -12981,7 +12979,7 @@ int InitZillaRail(DSWActor* actor) actor->spr.clipdist = oclipdist; - actorNew->spr.zvel = zvel >> 1; + actorNew->set_int_zvel(zvel >> 1); if (WeaponAutoAim(actor, actorNew, 32, false) == -1) { actorNew->spr.angle -= DAngle::fromBuild(4); @@ -13090,7 +13088,7 @@ int InitRocket(PLAYER* pp) actor->spr.clipdist = oclipdist; - actorNew->spr.zvel = zvel >> 1; + actorNew->set_int_zvel(zvel >> 1); if (WeaponAutoAim(pp->actor, actorNew, 32, false) == -1) { actorNew->set_int_ang(NORM_ANGLE(actorNew->int_ang() - 5)); @@ -13194,7 +13192,7 @@ int InitBunnyRocket(PLAYER* pp) actor->spr.clipdist = oclipdist; - actorNew->spr.zvel = zvel >> 1; + actorNew->set_int_zvel(zvel >> 1); if (WeaponAutoAim(pp->actor, actorNew, 32, false) == -1) { actorNew->set_int_ang(NORM_ANGLE(actorNew->int_ang() - 5)); @@ -13286,7 +13284,7 @@ int InitNuke(PLAYER* pp) actor->spr.clipdist = oclipdist; - actorNew->spr.zvel = zvel >> 1; + actorNew->set_int_zvel(zvel >> 1); if (WeaponAutoAim(pp->actor, actorNew, 32, false) == -1) { actorNew->set_int_ang(NORM_ANGLE(actorNew->int_ang() - 5)); @@ -13362,7 +13360,7 @@ int InitEnemyNuke(DSWActor* actor) // enable smoke trail actorNew->user.Counter = 0; - actorNew->spr.zvel = zvel >> 1; + actorNew->set_int_zvel(zvel >> 1); if (WeaponAutoAim(actor, actorNew, 32, false) == -1) { actorNew->set_int_ang(NORM_ANGLE(actorNew->int_ang() - 5)); @@ -13426,7 +13424,7 @@ int InitMicro(PLAYER* pp) actorNew->spr.yrepeat = 24; actorNew->spr.xrepeat = 24; actorNew->spr.shade = -15; - actorNew->spr.zvel = -pp->horizon.horiz.asq16() >> 9; + actorNew->set_int_zvel(-pp->horizon.horiz.asq16() >> 9); actorNew->spr.clipdist = 64L>>2; // randomize zvelocity @@ -13479,7 +13477,7 @@ int InitMicro(PLAYER* pp) if (dist != 0) { double zh = ActorZOfTop(picked) + (ActorSizeZ(picked) * 0.25); - actorNew->spr.zvel = (actorNew->spr.xvel * (zh - actorNew->spr.pos.Z) * zworldtoint) / dist; + actorNew->set_int_zvel((actorNew->spr.xvel * (zh - actorNew->spr.pos.Z) * zworldtoint) / dist); } actorNew->user.WpnGoalActor = ts->actor; @@ -14470,7 +14468,6 @@ int InitTracerUzi(PLAYER* pp) actorNew->spr.xrepeat = 10; actorNew->spr.shade = -40; actorNew->set_int_zvel(0); - //actorNew->spr.zvel = -pp->horizon.horiz.asq16() >> 9; actorNew->spr.clipdist = 32 >> 2; actorNew->user.WeaponNum = actor->user.WeaponNum; @@ -14498,7 +14495,7 @@ int InitTracerUzi(PLAYER* pp) return 0; } - actorNew->spr.zvel = int(-pp->horizon.horiz.asbuildf() * actorNew->spr.xvel * (1. / 8.)); + actorNew->set_int_zvel(int(-pp->horizon.horiz.asbuildf() * actorNew->spr.xvel * (1. / 8.))); plActor->spr.clipdist = oclipdist; @@ -14539,7 +14536,7 @@ int InitTracerTurret(DSWActor* actor, DSWActor* Operator, fixed_t q16horiz) actorNew->spr.cstat |= (CSTAT_SPRITE_YCENTER); actorNew->spr.cstat |= (CSTAT_SPRITE_INVISIBLE); - actorNew->spr.zvel = int(-MulScaleF(q16horiz, actorNew->spr.xvel * (1. / 8.), 16)); + actorNew->set_int_zvel(int(-MulScaleF(q16horiz, actorNew->spr.xvel * (1. / 8.), 16))); WeaponAutoAim(actor, actorNew, 32, false); @@ -14924,7 +14921,7 @@ int InitTankShell(DSWActor* actor, PLAYER* pp) actorNew->spr.cstat |= (CSTAT_SPRITE_YCENTER); actorNew->spr.cstat |= (CSTAT_SPRITE_INVISIBLE); - actorNew->spr.zvel = int(-pp->horizon.horiz.asbuildf() * actorNew->spr.xvel * (1. / 8.)); + actorNew->set_int_zvel(int(-pp->horizon.horiz.asbuildf() * actorNew->spr.xvel * (1. / 8.))); WeaponAutoAim(actor, actorNew, 64, false); // a bit of randomness @@ -14990,7 +14987,7 @@ int InitTurretMicro(DSWActor* actor, PLAYER* pp) actorNew->spr.yrepeat = 24; actorNew->spr.xrepeat = 24; actorNew->spr.shade = -15; - actorNew->spr.zvel = -pp->horizon.horiz.asq16() >> 9; + actorNew->set_int_zvel(-pp->horizon.horiz.asq16() >> 9); actorNew->spr.clipdist = 64L>>2; // randomize zvelocity @@ -15017,7 +15014,7 @@ int InitTurretMicro(DSWActor* actor, PLAYER* pp) if (dist != 0) { double zh = ActorZOfTop(picked) + (ActorSizeZ(picked) * 0.25); - actorNew->spr.zvel = (actorNew->spr.xvel * (zh - actorNew->spr.pos.Z) * zworldtoint) / dist; + actorNew->set_int_zvel((actorNew->spr.xvel * (zh - actorNew->spr.pos.Z) * zworldtoint) / dist); } actorNew->user.WpnGoalActor = ts->actor; @@ -15056,7 +15053,7 @@ int InitTurretRocket(DSWActor* actor, PLAYER* pp) actorNew->user.Flags2 |= (SPR2_SO_MISSILE); actorNew->spr.cstat |= (CSTAT_SPRITE_YCENTER); - actorNew->spr.zvel = int(-pp->horizon.horiz.asbuildf() * actorNew->spr.xvel * (1. / 8.)); + actorNew->set_int_zvel(int(-pp->horizon.horiz.asbuildf() * actorNew->spr.xvel * (1. / 8.))); WeaponAutoAim(actor, actorNew, 64, false); // a bit of randomness @@ -15090,7 +15087,7 @@ int InitTurretFireball(DSWActor* actor, PLAYER* pp) actorNew->user.Flags2 |= (SPR2_SO_MISSILE); actorNew->spr.cstat |= (CSTAT_SPRITE_YCENTER); - actorNew->spr.zvel = int(-pp->horizon.horiz.asbuildf() * actorNew->spr.xvel * (1. / 8.)); + actorNew->set_int_zvel(int(-pp->horizon.horiz.asbuildf() * actorNew->spr.xvel * (1. / 8.))); WeaponAutoAim(actor, actorNew, 64, false); // a bit of randomness @@ -15122,7 +15119,7 @@ int InitTurretRail(DSWActor* actor, PLAYER* pp) actorNew->spr.yrepeat = 52; actorNew->spr.xrepeat = 52; actorNew->spr.shade = -15; - actorNew->spr.zvel = -pp->horizon.horiz.asq16() >> 9; + actorNew->set_int_zvel(-pp->horizon.horiz.asq16() >> 9); actorNew->user.RotNum = 5; NewStateGroup(actorNew, &sg_Rail[0]); @@ -15164,7 +15161,7 @@ int InitTurretLaser(DSWActor* actor, PLAYER* pp) actorNew->spr.shade = -15; // the slower the missile travels the less of a zvel it needs - actorNew->spr.zvel = -pp->horizon.horiz.asq16() >> 11; + actorNew->set_int_zvel(-pp->horizon.horiz.asq16() >> 11); actorNew->user.Radius = 200; actorNew->user.ceiling_dist = (1); @@ -15894,7 +15891,7 @@ int InitGrenade(PLAYER* pp) if (pp->Flags & (PF_DIVING) || SpriteInUnderwaterArea(actorNew)) actorNew->user.Flags |= (SPR_UNDERWATER); - actorNew->spr.zvel = -pp->horizon.horiz.asq16() >> 9; + actorNew->set_int_zvel(-pp->horizon.horiz.asq16() >> 9); auto oclipdist = actor->spr.clipdist; actor->spr.clipdist = 0; @@ -15915,7 +15912,7 @@ int InitGrenade(PLAYER* pp) { auto_aim = true; } - actorNew->spr.zvel = zvel; + actorNew->set_int_zvel(zvel); UpdateChange(actorNew); @@ -15962,8 +15959,7 @@ int InitSpriteGrenade(DSWActor* actor) actorNew->spr.cstat |= (CSTAT_SPRITE_BLOCK); - //actorNew->spr.zvel = (-RandomRange(100) * HORIZ_MULT); - actorNew->spr.zvel = -2000; + actorNew->set_int_zvel(-2000); UpdateChange(actorNew); @@ -16007,7 +16003,7 @@ int InitMine(PLAYER* pp) actorNew->spr.xrepeat = 32; actorNew->spr.shade = -15; actorNew->spr.clipdist = 128L>>2; - actorNew->spr.zvel = -pp->horizon.horiz.asq16() >> 9; + actorNew->set_int_zvel(-pp->horizon.horiz.asq16() >> 9); actorNew->user.WeaponNum = actor->user.WeaponNum; actorNew->user.Radius = 200; actorNew->user.ceiling_dist = (5); @@ -16158,7 +16154,7 @@ int InitFireball(PLAYER* pp) actor->spr.clipdist = oclipdist; - actorNew->spr.zvel = zvel >> 1; + actorNew->set_int_zvel(zvel >> 1); if (WeaponAutoAimZvel(pp->actor, actorNew, &zvel, 32, false) == -1) { actorNew->set_int_ang(NORM_ANGLE(actorNew->int_ang() - 9)); @@ -16230,15 +16226,18 @@ int InitEnemyFireball(DSWActor* actor) // (velocity * difference between the target and the throwing star) / // distance if (dist != 0) - actorNew->user.set_int_change_z(actorNew->spr.zvel = (GORO_FIREBALL_VELOCITY * (targ_z - actorNew->int_pos().Z)) / dist); - + { + actorNew->set_int_zvel((GORO_FIREBALL_VELOCITY * (targ_z - actorNew->int_pos().Z)) / dist); + actorNew->user.set_int_change_z(actorNew->int_zvel()); + } // back up first one lastvel = actorNew->int_zvel(); } else { // use the first calculations so the balls stay together - actorNew->user.set_int_change_z(actorNew->spr.zvel = lastvel); + actorNew->user.set_int_change_z(lastvel); + actorNew->set_int_zvel(lastvel); } } @@ -16644,7 +16643,7 @@ DSWActor* SpawnBubble(DSWActor* actor) actorNew->user.floor_dist = 1; actorNew->spr.shade = actor->sector()->floorshade - 10; actorNew->user.WaitTics = 120 * 120; - actorNew->spr.zvel = 512; + actorNew->set_int_zvel(512); actorNew->spr.clipdist = 12 >> 2; actorNew->spr.cstat |= (CSTAT_SPRITE_YCENTER); actorNew->user.Flags |= (SPR_UNDERWATER); @@ -16688,7 +16687,7 @@ int SpawnVehicleSmoke(DSWActor* actor) actorNew->spr.angle = RANDOM_ANGLE(); actorNew->spr.xvel = RANDOM_P2(32); UpdateChangeXY(actorNew); - actorNew->spr.zvel = Z(4) + RANDOM_P2(Z(4)); + actorNew->set_int_zvel(Z(4) + RANDOM_P2(Z(4))); return false; } @@ -16712,7 +16711,7 @@ int SpawnSmokePuff(DSWActor* actor) actorNew->spr.angle = RANDOM_ANGLE(); actorNew->spr.xvel = RANDOM_P2(32); UpdateChangeXY(actorNew); - actorNew->spr.zvel = Z(1) + RANDOM_P2(Z(2)); + actorNew->set_int_zvel(Z(1) + RANDOM_P2(Z(2))); return false; } @@ -16724,7 +16723,7 @@ int DoBubble(DSWActor* actor) actor->spr.zvel += 32; if (actor->int_zvel() > 768) - actor->spr.zvel = 768; + actor->set_int_zvel(768); // notreallypos actor->user.pos.X += 1;