Remove P_InitAngle and its kin, considered on a case-by-case basis for also setting old_angle as well.

This commit is contained in:
toaster 2022-05-30 18:15:52 +01:00
parent c85206f633
commit 3a4b485c5d
15 changed files with 141 additions and 168 deletions

View file

@ -266,7 +266,7 @@ mobj_t *K_SpawnSphereBox(fixed_t x, fixed_t y, fixed_t z, angle_t angle, SINT8 f
{ {
mobj_t *drop = P_SpawnMobj(x, y, z, MT_SPHEREBOX); mobj_t *drop = P_SpawnMobj(x, y, z, MT_SPHEREBOX);
P_InitAngle(drop, angle); drop->angle = angle;
P_Thrust(drop, P_Thrust(drop,
FixedAngle(P_RandomFixed() * 180) + angle, FixedAngle(P_RandomFixed() * 180) + angle,
P_RandomRange(4, 12) * mapobjectscale); P_RandomRange(4, 12) * mapobjectscale);
@ -604,7 +604,7 @@ static void K_SpawnOvertimeLaser(fixed_t x, fixed_t y, fixed_t scale)
mo->eflags |= MFE_VERTICALFLIP; mo->eflags |= MFE_VERTICALFLIP;
} }
P_InitAngle(mo, R_PointToAngle2(mo->x, mo->y, battleovertime.x, battleovertime.y) + ANGLE_90); mo->angle = R_PointToAngle2(mo->x, mo->y, battleovertime.x, battleovertime.y) + ANGLE_90;
mo->renderflags |= (RF_DONTDRAW & ~(K_GetPlayerDontDrawFlag(player))); mo->renderflags |= (RF_DONTDRAW & ~(K_GetPlayerDontDrawFlag(player)));
P_SetScale(mo, scale); P_SetScale(mo, scale);

View file

@ -572,7 +572,7 @@ boolean K_DropTargetCollide(mobj_t *t1, mobj_t *t2)
if (t2deflect < ANG10) if (t2deflect < ANG10)
P_InstaThrust(t2, t2angle, t2speed); P_InstaThrust(t2, t2angle, t2speed);
P_InitAngle(t1, R_PointToAngle2(0, 0, t1->momx, t1->momy)); t1->angle = t1->old_angle = R_PointToAngle2(0, 0, t1->momx, t1->momy);
t1->reactiontime = 7*(t1speed+t2speed)/FRACUNIT; t1->reactiontime = 7*(t1speed+t2speed)/FRACUNIT;
if (t1->reactiontime < 10) if (t1->reactiontime < 10)
@ -619,7 +619,6 @@ boolean K_DropTargetCollide(mobj_t *t1, mobj_t *t2)
{ {
blast->angle += ANGLE_90; blast->angle += ANGLE_90;
} }
P_InitAngle(blast, blast->angle);
blast->destscale *= 10; blast->destscale *= 10;
} }

View file

@ -330,7 +330,7 @@ void K_HandleFollower(player_t *player)
K_UpdateFollowerState(player->follower, fl.idlestate, FOLLOWERSTATE_IDLE); K_UpdateFollowerState(player->follower, fl.idlestate, FOLLOWERSTATE_IDLE);
P_SetTarget(&player->follower->target, player->mo); // we need that to know when we need to disappear P_SetTarget(&player->follower->target, player->mo); // we need that to know when we need to disappear
P_InitAngle(player->follower, player->mo->angle); player->follower->angle = player->follower->old_angle = player->mo->angle;
// This is safe to only spawn it here, the follower is removed then respawned when switched. // This is safe to only spawn it here, the follower is removed then respawned when switched.
if (bubble) if (bubble)

View file

@ -2053,7 +2053,7 @@ void K_SpawnDashDustRelease(player_t *player)
dust = P_SpawnMobj(newx, newy, player->mo->z, MT_FASTDUST); dust = P_SpawnMobj(newx, newy, player->mo->z, MT_FASTDUST);
P_SetTarget(&dust->target, player->mo); P_SetTarget(&dust->target, player->mo);
P_InitAngle(dust, travelangle - ((i&1) ? -1 : 1) * ANGLE_45); dust->angle = travelangle - (((i&1) ? -1 : 1) * ANGLE_45);
dust->destscale = player->mo->scale; dust->destscale = player->mo->scale;
P_SetScale(dust, player->mo->scale); P_SetScale(dust, player->mo->scale);
@ -2217,7 +2217,7 @@ void K_SpawnNormalSpeedLines(player_t *player)
MT_FASTLINE); MT_FASTLINE);
P_SetTarget(&fast->target, player->mo); P_SetTarget(&fast->target, player->mo);
P_InitAngle(fast, K_MomentumAngle(player->mo)); fast->angle = K_MomentumAngle(player->mo);
fast->momx = 3*player->mo->momx/4; fast->momx = 3*player->mo->momx/4;
fast->momy = 3*player->mo->momy/4; fast->momy = 3*player->mo->momy/4;
fast->momz = 3*P_GetMobjZMovement(player->mo)/4; fast->momz = 3*P_GetMobjZMovement(player->mo)/4;
@ -2268,7 +2268,7 @@ void K_SpawnInvincibilitySpeedLines(mobj_t *mo)
P_SetMobjState(fast, S_KARTINVLINES1); P_SetMobjState(fast, S_KARTINVLINES1);
P_SetTarget(&fast->target, mo); P_SetTarget(&fast->target, mo);
P_InitAngle(fast, K_MomentumAngle(mo)); fast->angle = K_MomentumAngle(mo);
fast->momx = 3*mo->momx/4; fast->momx = 3*mo->momx/4;
fast->momy = 3*mo->momy/4; fast->momy = 3*mo->momy/4;
@ -3958,7 +3958,7 @@ void K_TakeBumpersFromPlayer(player_t *player, player_t *victim, UINT8 amount)
P_SetTarget(&newmo->tracer, victim->mo); P_SetTarget(&newmo->tracer, victim->mo);
P_SetTarget(&newmo->target, player->mo); P_SetTarget(&newmo->target, player->mo);
P_InitAngle(newmo, (diff * (newbumper-1))); newmo->angle = (diff * (newbumper-1));
newmo->color = victim->skincolor; newmo->color = victim->skincolor;
if (newbumper+1 < 2) if (newbumper+1 < 2)
@ -4046,7 +4046,7 @@ void K_SpawnMineExplosion(mobj_t *source, UINT8 color)
{ {
dust = P_SpawnMobj(source->x, source->y, source->z, MT_SMOKE); dust = P_SpawnMobj(source->x, source->y, source->z, MT_SMOKE);
P_SetMobjState(dust, S_OPAQUESMOKE1); P_SetMobjState(dust, S_OPAQUESMOKE1);
P_InitAngle(dust, (ANGLE_180/16) * i); dust->angle = (ANGLE_180/16) * i;
P_SetScale(dust, source->scale); P_SetScale(dust, source->scale);
dust->destscale = source->scale*10; dust->destscale = source->scale*10;
dust->scalespeed = source->scale/12; dust->scalespeed = source->scale/12;
@ -4196,7 +4196,7 @@ static mobj_t *K_SpawnKartMissile(mobj_t *source, mobjtype_t type, angle_t an, I
th->z = th->floorz; th->z = th->floorz;
} }
P_InitAngle(th, an); th->angle = an;
th->momx = FixedMul(finalspeed, FINECOSINE(an>>ANGLETOFINESHIFT)); th->momx = FixedMul(finalspeed, FINECOSINE(an>>ANGLETOFINESHIFT));
th->momy = FixedMul(finalspeed, FINESINE(an>>ANGLETOFINESHIFT)); th->momy = FixedMul(finalspeed, FINESINE(an>>ANGLETOFINESHIFT));
@ -4369,7 +4369,7 @@ static void K_SpawnDriftElectricity(player_t *player)
y = P_ReturnThrustY(mo, verticalangle, verticalradius) y = P_ReturnThrustY(mo, verticalangle, verticalradius)
+ P_ReturnThrustY(mo, horizonatalangle, horizontalradius); + P_ReturnThrustY(mo, horizonatalangle, horizontalradius);
spark = P_SpawnMobjFromMobj(mo, x, y, 0, MT_DRIFTELECTRICITY); spark = P_SpawnMobjFromMobj(mo, x, y, 0, MT_DRIFTELECTRICITY);
P_InitAngle(spark, sparkangle); spark->angle = sparkangle;
spark->momx = mo->momx; spark->momx = mo->momx;
spark->momy = mo->momy; spark->momy = mo->momy;
spark->momz = mo->momz; spark->momz = mo->momz;
@ -4414,7 +4414,7 @@ void K_SpawnDriftElectricSparks(player_t *player)
fixed_t yoff = P_ReturnThrustY(mo, sparkangle, sparkradius); fixed_t yoff = P_ReturnThrustY(mo, sparkangle, sparkradius);
mobj_t *spark = P_SpawnMobjFromMobj(mo, x + xoff, y + yoff, z, MT_DRIFTELECTRICSPARK); mobj_t *spark = P_SpawnMobjFromMobj(mo, x + xoff, y + yoff, z, MT_DRIFTELECTRICSPARK);
P_InitAngle(spark, sparkangle); spark->angle = sparkangle;
spark->color = color; spark->color = color;
P_InstaThrust(spark, mo->angle + ANGLE_90, hspeed); P_InstaThrust(spark, mo->angle + ANGLE_90, hspeed);
P_SetObjectMomZ(spark, vspeed, false); P_SetObjectMomZ(spark, vspeed, false);
@ -4465,7 +4465,7 @@ static void K_SpawnDriftSparks(player_t *player)
spark = P_SpawnMobj(newx, newy, player->mo->z, MT_DRIFTSPARK); spark = P_SpawnMobj(newx, newy, player->mo->z, MT_DRIFTSPARK);
P_SetTarget(&spark->target, player->mo); P_SetTarget(&spark->target, player->mo);
P_InitAngle(spark, travelangle-(ANGLE_45/5)*player->drift); spark->angle = travelangle-((ANGLE_45/5)*player->drift);
spark->destscale = player->mo->scale; spark->destscale = player->mo->scale;
P_SetScale(spark, player->mo->scale); P_SetScale(spark, player->mo->scale);
@ -4609,7 +4609,7 @@ static void K_SpawnAIZDust(player_t *player)
newy = player->mo->y + P_ReturnThrustY(player->mo, travelangle - (player->aizdriftstrat*ANGLE_45), FixedMul(24*FRACUNIT, player->mo->scale)); newy = player->mo->y + P_ReturnThrustY(player->mo, travelangle - (player->aizdriftstrat*ANGLE_45), FixedMul(24*FRACUNIT, player->mo->scale));
spark = P_SpawnMobj(newx, newy, player->mo->z, MT_AIZDRIFTSTRAT); spark = P_SpawnMobj(newx, newy, player->mo->z, MT_AIZDRIFTSTRAT);
P_InitAngle(spark, travelangle+(player->aizdriftstrat*ANGLE_90)); spark->angle = travelangle+(player->aizdriftstrat*ANGLE_90);
P_SetScale(spark, (spark->destscale = (3*player->mo->scale)>>2)); P_SetScale(spark, (spark->destscale = (3*player->mo->scale)>>2));
spark->momx = (6*player->mo->momx)/5; spark->momx = (6*player->mo->momx)/5;
@ -4661,7 +4661,7 @@ void K_SpawnBoostTrail(player_t *player)
flame = P_SpawnMobj(newx, newy, ground, MT_SNEAKERTRAIL); flame = P_SpawnMobj(newx, newy, ground, MT_SNEAKERTRAIL);
P_SetTarget(&flame->target, player->mo); P_SetTarget(&flame->target, player->mo);
P_InitAngle(flame, travelangle); flame->angle = travelangle;
flame->fuse = TICRATE*2; flame->fuse = TICRATE*2;
flame->destscale = player->mo->scale; flame->destscale = player->mo->scale;
P_SetScale(flame, player->mo->scale); P_SetScale(flame, player->mo->scale);
@ -4708,7 +4708,7 @@ void K_SpawnSparkleTrail(mobj_t *mo)
sparkle = P_SpawnMobj(newx, newy, newz, MT_SPARKLETRAIL); sparkle = P_SpawnMobj(newx, newy, newz, MT_SPARKLETRAIL);
P_InitAngle(sparkle, R_PointToAngle2(mo->x, mo->y, sparkle->x, sparkle->y)); sparkle->angle = R_PointToAngle2(mo->x, mo->y, sparkle->x, sparkle->y);
sparkle->movefactor = R_PointToDist2(mo->x, mo->y, sparkle->x, sparkle->y); // Save the distance we spawned away from the player. sparkle->movefactor = R_PointToDist2(mo->x, mo->y, sparkle->x, sparkle->y); // Save the distance we spawned away from the player.
//CONS_Printf("movefactor: %d\n", sparkle->movefactor/FRACUNIT); //CONS_Printf("movefactor: %d\n", sparkle->movefactor/FRACUNIT);
@ -4758,7 +4758,7 @@ void K_SpawnWipeoutTrail(mobj_t *mo)
mo->z, MT_WIPEOUTTRAIL); mo->z, MT_WIPEOUTTRAIL);
P_SetTarget(&dust->target, mo); P_SetTarget(&dust->target, mo);
P_InitAngle(dust, K_MomentumAngle(mo)); dust->angle = K_MomentumAngle(mo);
dust->destscale = mo->scale; dust->destscale = mo->scale;
P_SetScale(dust, mo->scale); P_SetScale(dust, mo->scale);
K_FlipFromObject(dust, mo); K_FlipFromObject(dust, mo);
@ -4824,7 +4824,7 @@ void K_SpawnDraftDust(mobj_t *mo)
P_SetMobjState(dust, S_DRAFTDUST1 + foff); P_SetMobjState(dust, S_DRAFTDUST1 + foff);
P_SetTarget(&dust->target, mo); P_SetTarget(&dust->target, mo);
P_InitAngle(dust, ang - (ANGLE_90 * sign)); // point completely perpendicular from the player dust->angle = ang - (ANGLE_90 * sign); // point completely perpendicular from the player
dust->destscale = mo->scale; dust->destscale = mo->scale;
P_SetScale(dust, mo->scale); P_SetScale(dust, mo->scale);
K_FlipFromObject(dust, mo); K_FlipFromObject(dust, mo);
@ -4999,7 +4999,7 @@ static void K_SpawnTripwireVFX(mobj_t *mo)
mo->z, MT_DRIFTDUST); mo->z, MT_DRIFTDUST);
P_SetTarget(&dust->target, mo); P_SetTarget(&dust->target, mo);
P_InitAngle(dust, ang - (ANGLE_90 * sign)); // point completely perpendicular from the player dust->angle = ang - (ANGLE_90 * sign); // point completely perpendicular from the player
P_SetScale(dust, mo->scale); P_SetScale(dust, mo->scale);
dust->destscale = mo->scale * 6; dust->destscale = mo->scale * 6;
dust->scalespeed = mo->scale/12; dust->scalespeed = mo->scale/12;
@ -5444,7 +5444,7 @@ static void K_DoLightningShield(player_t *player)
for (i=0; i<7; i++) for (i=0; i<7; i++)
{ {
mo = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_THOK); mo = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_THOK);
P_InitAngle(mo, P_RandomRange(0, 359)*ANG1); mo->angle = P_RandomRange(0, 359)*ANG1;
mo->fuse = P_RandomRange(20, 50); mo->fuse = P_RandomRange(20, 50);
P_SetTarget(&mo->target, player->mo); P_SetTarget(&mo->target, player->mo);
P_SetMobjState(mo, S_KLIT1); P_SetMobjState(mo, S_KLIT1);
@ -5457,7 +5457,7 @@ static void K_DoLightningShield(player_t *player)
sx = player->mo->x + FixedMul((player->mo->scale*THUNDERRADIUS), FINECOSINE((an*i)>>ANGLETOFINESHIFT)); sx = player->mo->x + FixedMul((player->mo->scale*THUNDERRADIUS), FINECOSINE((an*i)>>ANGLETOFINESHIFT));
sy = player->mo->y + FixedMul((player->mo->scale*THUNDERRADIUS), FINESINE((an*i)>>ANGLETOFINESHIFT)); sy = player->mo->y + FixedMul((player->mo->scale*THUNDERRADIUS), FINESINE((an*i)>>ANGLETOFINESHIFT));
mo = P_SpawnMobj(sx, sy, player->mo->z, MT_THOK); mo = P_SpawnMobj(sx, sy, player->mo->z, MT_THOK);
P_InitAngle(mo, an*i); mo->angle = an*i;
mo->extravalue1 = THUNDERRADIUS; // Used to know whether we should teleport by radius or something. mo->extravalue1 = THUNDERRADIUS; // Used to know whether we should teleport by radius or something.
mo->scale = player->mo->scale*3; mo->scale = player->mo->scale*3;
P_SetTarget(&mo->target, player->mo); P_SetTarget(&mo->target, player->mo);
@ -5782,7 +5782,7 @@ static void K_ThrowLandMine(player_t *player)
P_SetScale(landMine, player->mo->scale); P_SetScale(landMine, player->mo->scale);
landMine->destscale = player->mo->destscale; landMine->destscale = player->mo->destscale;
P_InitAngle(landMine, player->mo->angle); landMine->angle = player->mo->angle;
landMine->momz = (30 * mapobjectscale * P_MobjFlip(player->mo)) + player->mo->momz; landMine->momz = (30 * mapobjectscale * P_MobjFlip(player->mo)) + player->mo->momz;
landMine->color = player->skincolor; landMine->color = player->skincolor;
@ -6099,7 +6099,7 @@ mobj_t *K_CreatePaperItem(fixed_t x, fixed_t y, fixed_t z, angle_t angle, SINT8
P_SetScale(drop, drop->scale>>4); P_SetScale(drop, drop->scale>>4);
drop->destscale = (3*drop->destscale)/2; drop->destscale = (3*drop->destscale)/2;
P_InitAngle(drop, angle); drop->angle = angle;
P_Thrust(drop, P_Thrust(drop,
FixedAngle(P_RandomFixed() * 180) + angle, FixedAngle(P_RandomFixed() * 180) + angle,
16*mapobjectscale); 16*mapobjectscale);
@ -7607,7 +7607,7 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd)
{ {
mobj_t *ring = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_RING); mobj_t *ring = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_RING);
ring->extravalue1 = 1; // Ring collect animation timer ring->extravalue1 = 1; // Ring collect animation timer
P_InitAngle(ring, player->mo->angle); // animation angle ring->angle = player->mo->angle; // animation angle
P_SetTarget(&ring->target, player->mo); // toucher for thinker P_SetTarget(&ring->target, player->mo); // toucher for thinker
player->pickuprings++; player->pickuprings++;
if (player->superring <= 3) if (player->superring <= 3)
@ -8575,7 +8575,7 @@ void K_SpawnDriftBoostExplosion(player_t *player, int stage)
{ {
mobj_t *overlay = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_DRIFTEXPLODE); mobj_t *overlay = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_DRIFTEXPLODE);
P_InitAngle(overlay, K_MomentumAngle(player->mo)); overlay->angle = K_MomentumAngle(player->mo);
P_SetTarget(&overlay->target, player->mo); P_SetTarget(&overlay->target, player->mo);
P_SetScale(overlay, (overlay->destscale = player->mo->scale)); P_SetScale(overlay, (overlay->destscale = player->mo->scale));
K_FlipFromObject(overlay, player->mo); K_FlipFromObject(overlay, player->mo);
@ -9255,9 +9255,9 @@ static void K_KartSpindashWind(mobj_t *parent)
P_SetTarget(&wind->target, parent); P_SetTarget(&wind->target, parent);
if (parent->momx || parent->momy) if (parent->momx || parent->momy)
P_InitAngle(wind, R_PointToAngle2(0, 0, parent->momx, parent->momy)); wind->angle = R_PointToAngle2(0, 0, parent->momx, parent->momy);
else else
P_InitAngle(wind, parent->player->drawangle); wind->angle = parent->player->drawangle;
wind->momx = 3 * parent->momx / 4; wind->momx = 3 * parent->momx / 4;
wind->momy = 3 * parent->momy / 4; wind->momy = 3 * parent->momy / 4;
@ -9306,7 +9306,7 @@ static void K_KartSpindash(player_t *player)
mobj_t *grease; mobj_t *grease;
grease = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_TIREGREASE); grease = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_TIREGREASE);
P_SetTarget(&grease->target, player->mo); P_SetTarget(&grease->target, player->mo);
P_InitAngle(grease, K_MomentumAngle(player->mo)); grease->angle = K_MomentumAngle(player->mo);
grease->extravalue1 = i; grease->extravalue1 = i;
} }
} }
@ -9741,7 +9741,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
mo = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_ROCKETSNEAKER); mo = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_ROCKETSNEAKER);
K_MatchGenericExtraFlags(mo, player->mo); K_MatchGenericExtraFlags(mo, player->mo);
mo->flags |= MF_NOCLIPTHING; mo->flags |= MF_NOCLIPTHING;
P_InitAngle(mo, player->mo->angle); mo->angle = player->mo->angle;
mo->threshold = 10; mo->threshold = 10;
mo->movecount = moloop%2; mo->movecount = moloop%2;
mo->movedir = mo->lastlook = moloop+1; mo->movedir = mo->lastlook = moloop+1;
@ -9841,7 +9841,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
break; break;
} }
mo->flags |= MF_NOCLIPTHING; mo->flags |= MF_NOCLIPTHING;
P_InitAngle(mo, newangle); mo->angle = newangle;
mo->threshold = 10; mo->threshold = 10;
mo->movecount = player->itemamount; mo->movecount = player->itemamount;
mo->movedir = mo->lastlook = moloop+1; mo->movedir = mo->lastlook = moloop+1;
@ -9883,7 +9883,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
break; break;
} }
mo->flags |= MF_NOCLIPTHING; mo->flags |= MF_NOCLIPTHING;
P_InitAngle(mo, newangle); mo->angle = newangle;
mo->threshold = 10; mo->threshold = 10;
mo->movecount = player->itemamount; mo->movecount = player->itemamount;
mo->movedir = mo->lastlook = moloop+1; mo->movedir = mo->lastlook = moloop+1;
@ -10345,7 +10345,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
spdl = P_SpawnMobj(sx, sy, sz, MT_FASTLINE); spdl = P_SpawnMobj(sx, sy, sz, MT_FASTLINE);
P_SetTarget(&spdl->target, player->mo); P_SetTarget(&spdl->target, player->mo);
P_InitAngle(spdl, R_PointToAngle2(spdl->x, spdl->y, player->mo->x, player->mo->y)); spdl->angle = R_PointToAngle2(spdl->x, spdl->y, player->mo->x, player->mo->y);
spdl->rollangle = -ANG1*90*P_MobjFlip(player->mo); // angle them downwards relative to the player's gravity... spdl->rollangle = -ANG1*90*P_MobjFlip(player->mo); // angle them downwards relative to the player's gravity...
spdl->spriteyscale = player->trickboostpower+FRACUNIT; spdl->spriteyscale = player->trickboostpower+FRACUNIT;
spdl->momx = player->mo->momx; spdl->momx = player->mo->momx;

View file

@ -370,7 +370,7 @@ static void K_DrawFinishLineBeamForLine(fixed_t offset, angle_t aiming, line_t *
P_SetMobjState(end1, S_FINISHBEAMEND1); P_SetMobjState(end1, S_FINISHBEAMEND1);
end1->renderflags = RF_DONTDRAW & ~K_GetPlayerDontDrawFlag(&players[displayplayers[i]]); end1->renderflags = RF_DONTDRAW & ~K_GetPlayerDontDrawFlag(&players[displayplayers[i]]);
P_InitAngle(end1, lineangle); end1->angle = lineangle;
end2 = P_SpawnMobj( end2 = P_SpawnMobj(
v->x + (8*sx), v->x + (8*sx),
@ -381,7 +381,7 @@ static void K_DrawFinishLineBeamForLine(fixed_t offset, angle_t aiming, line_t *
P_SetMobjState(end2, S_FINISHBEAMEND2); P_SetMobjState(end2, S_FINISHBEAMEND2);
end2->renderflags = RF_DONTDRAW & ~K_GetPlayerDontDrawFlag(&players[displayplayers[i]]); end2->renderflags = RF_DONTDRAW & ~K_GetPlayerDontDrawFlag(&players[displayplayers[i]]);
P_InitAngle(end2, lineangle); end2->angle = lineangle;
P_SetTarget(&end2->tracer, end1); P_SetTarget(&end2->tracer, end1);
end2->flags2 |= MF2_LINKDRAW; end2->flags2 |= MF2_LINKDRAW;

View file

@ -575,7 +575,7 @@ static void K_MovePlayerToRespawnPoint(player_t *player)
P_SetTarget(&lasermo->target, player->mo); P_SetTarget(&lasermo->target, player->mo);
P_InitAngle(lasermo, stepha + ANGLE_90); lasermo->angle = stepha + ANGLE_90;
P_SetScale(lasermo, (lasermo->destscale = player->mo->scale)); P_SetScale(lasermo, (lasermo->destscale = player->mo->scale));
} }
} }
@ -638,7 +638,7 @@ static void K_DropDashWait(player_t *player)
P_SetTarget(&laser->target, player->mo); P_SetTarget(&laser->target, player->mo);
P_InitAngle(laser, newangle + ANGLE_90); laser->angle = newangle + ANGLE_90;
laser->momz = (8 * player->mo->scale) * P_MobjFlip(player->mo); laser->momz = (8 * player->mo->scale) * P_MobjFlip(player->mo);
P_SetScale(laser, (laser->destscale = player->mo->scale)); P_SetScale(laser, (laser->destscale = player->mo->scale));
} }

View file

@ -1493,7 +1493,8 @@ static int lib_pSetAngle(lua_State *L)
if (!thing) if (!thing)
return LUA_ErrInvalid(L, "mobj_t"); return LUA_ErrInvalid(L, "mobj_t");
P_InitAngle(thing, newValue); //P_SetAngle(thing, newValue);
thing->angle = thing->old_angle = newValue;
return 0; return 0;
} }
@ -1505,7 +1506,8 @@ static int lib_pSetPitch(lua_State *L)
INLEVEL INLEVEL
if (!thing) if (!thing)
return LUA_ErrInvalid(L, "mobj_t"); return LUA_ErrInvalid(L, "mobj_t");
P_InitPitch(thing, newValue); //P_SetPitch(thing, newValue);
thing->pitch = thing->old_pitch = newValue;
return 0; return 0;
} }
@ -1517,7 +1519,8 @@ static int lib_pSetRoll(lua_State *L)
INLEVEL INLEVEL
if (!thing) if (!thing)
return LUA_ErrInvalid(L, "mobj_t"); return LUA_ErrInvalid(L, "mobj_t");
P_InitRoll(thing, newValue); //P_SetRoll(thing, newValue);
thing->roll = thing->old_roll = newValue;
return 0; return 0;
} }

View file

@ -1221,7 +1221,7 @@ void A_StatueBurst(mobj_t *actor)
if (!locvar1 || !(new = P_SpawnMobjFromMobj(actor, 0, 0, 0, locvar1))) if (!locvar1 || !(new = P_SpawnMobjFromMobj(actor, 0, 0, 0, locvar1)))
return; return;
P_InitAngle(new, actor->angle); new->angle = actor->angle;
P_SetTarget(&new->target, actor->target); P_SetTarget(&new->target, actor->target);
if (locvar2) if (locvar2)
P_SetMobjState(new, (statenum_t)locvar2); P_SetMobjState(new, (statenum_t)locvar2);
@ -2509,7 +2509,7 @@ void A_LobShot(mobj_t *actor)
P_SetTarget(&shot->target, actor); // where it came from P_SetTarget(&shot->target, actor); // where it came from
P_InitAngle(shot, actor->angle); shot->angle = actor->angle;
an = actor->angle >> ANGLETOFINESHIFT; an = actor->angle >> ANGLETOFINESHIFT;
dist = P_AproxDistance(actor->target->x - shot->x, actor->target->y - shot->y); dist = P_AproxDistance(actor->target->x - shot->x, actor->target->y - shot->y);
@ -2876,7 +2876,7 @@ void A_Boss1Laser(mobj_t *actor)
S_StartSound(actor, mobjinfo[locvar1].seesound); S_StartSound(actor, mobjinfo[locvar1].seesound);
point = P_SpawnMobj(x + P_ReturnThrustX(actor, actor->angle, actor->radius), y + P_ReturnThrustY(actor, actor->angle, actor->radius), actor->z - actor->height / 2, MT_EGGMOBILE_TARGET); point = P_SpawnMobj(x + P_ReturnThrustX(actor, actor->angle, actor->radius), y + P_ReturnThrustY(actor, actor->angle, actor->radius), actor->z - actor->height / 2, MT_EGGMOBILE_TARGET);
P_InitAngle(point, actor->angle); point->angle = actor->angle;
point->fuse = dur+1; point->fuse = dur+1;
P_SetTarget(&point->target, actor->target); P_SetTarget(&point->target, actor->target);
P_SetTarget(&actor->target, point); P_SetTarget(&actor->target, point);
@ -2886,7 +2886,7 @@ void A_Boss1Laser(mobj_t *actor)
point = P_SpawnMobj(x, y, z, locvar1); point = P_SpawnMobj(x, y, z, locvar1);
P_SetTarget(&point->target, actor); P_SetTarget(&point->target, actor);
P_InitAngle(point, actor->angle); point->angle = actor->angle;
speed = point->radius; speed = point->radius;
point->momz = FixedMul(FINECOSINE(angle>>ANGLETOFINESHIFT), speed); point->momz = FixedMul(FINECOSINE(angle>>ANGLETOFINESHIFT), speed);
point->momx = FixedMul(FINESINE(angle>>ANGLETOFINESHIFT), FixedMul(FINECOSINE(point->angle>>ANGLETOFINESHIFT), speed)); point->momx = FixedMul(FINESINE(angle>>ANGLETOFINESHIFT), FixedMul(FINECOSINE(point->angle>>ANGLETOFINESHIFT), speed));
@ -2895,7 +2895,7 @@ void A_Boss1Laser(mobj_t *actor)
for (i = 0; i < 256; i++) for (i = 0; i < 256; i++)
{ {
mobj_t *mo = P_SpawnMobj(point->x, point->y, point->z, point->type); mobj_t *mo = P_SpawnMobj(point->x, point->y, point->z, point->type);
P_InitAngle(mo, point->angle); mo->angle = point->angle;
mo->color = LASERCOLORS[((UINT8)(i + 3*dur) >> 2) % sizeof(LASERCOLORS)]; // codeing mo->color = LASERCOLORS[((UINT8)(i + 3*dur) >> 2) % sizeof(LASERCOLORS)]; // codeing
P_UnsetThingPosition(mo); P_UnsetThingPosition(mo);
mo->flags = MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOGRAVITY|MF_SCENERY; mo->flags = MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOGRAVITY|MF_SCENERY;
@ -2927,7 +2927,7 @@ void A_Boss1Laser(mobj_t *actor)
if (z - floorz < mobjinfo[MT_EGGMOBILE_FIRE].height>>1 && dur & 1) if (z - floorz < mobjinfo[MT_EGGMOBILE_FIRE].height>>1 && dur & 1)
{ {
point = P_SpawnMobj(x, y, floorz, MT_EGGMOBILE_FIRE); point = P_SpawnMobj(x, y, floorz, MT_EGGMOBILE_FIRE);
P_InitAngle(point, actor->angle); point->angle = actor->angle;
point->destscale = actor->scale; point->destscale = actor->scale;
P_SetScale(point, point->destscale); P_SetScale(point, point->destscale);
P_SetTarget(&point->target, actor); P_SetTarget(&point->target, actor);
@ -3511,7 +3511,7 @@ bossjustdie:
P_ReturnThrustX(mo, mo->angle - ANGLE_90, 32<<FRACBITS), P_ReturnThrustX(mo, mo->angle - ANGLE_90, 32<<FRACBITS),
P_ReturnThrustY(mo, mo->angle - ANGLE_90, 32<<FRACBITS), P_ReturnThrustY(mo, mo->angle - ANGLE_90, 32<<FRACBITS),
32<<FRACBITS, MT_BOSSJUNK); 32<<FRACBITS, MT_BOSSJUNK);
P_InitAngle(mo2, mo->angle); mo2->angle = mo->angle;
P_InstaThrust(mo2, mo2->angle - ANGLE_90, 4*mo2->scale); P_InstaThrust(mo2, mo2->angle - ANGLE_90, 4*mo2->scale);
P_SetObjectMomZ(mo2, 4*FRACUNIT, false); P_SetObjectMomZ(mo2, 4*FRACUNIT, false);
P_SetMobjState(mo2, S_BOSSEGLZ1); P_SetMobjState(mo2, S_BOSSEGLZ1);
@ -3520,7 +3520,7 @@ bossjustdie:
P_ReturnThrustX(mo, mo->angle + ANGLE_90, 32<<FRACBITS), P_ReturnThrustX(mo, mo->angle + ANGLE_90, 32<<FRACBITS),
P_ReturnThrustY(mo, mo->angle + ANGLE_90, 32<<FRACBITS), P_ReturnThrustY(mo, mo->angle + ANGLE_90, 32<<FRACBITS),
32<<FRACBITS, MT_BOSSJUNK); 32<<FRACBITS, MT_BOSSJUNK);
P_InitAngle(mo2, mo->angle); mo2->angle = mo->angle;
P_InstaThrust(mo2, mo2->angle + ANGLE_90, 4*mo2->scale); P_InstaThrust(mo2, mo2->angle + ANGLE_90, 4*mo2->scale);
P_SetObjectMomZ(mo2, 4*FRACUNIT, false); P_SetObjectMomZ(mo2, 4*FRACUNIT, false);
P_SetMobjState(mo2, S_BOSSEGLZ2); P_SetMobjState(mo2, S_BOSSEGLZ2);
@ -3532,7 +3532,7 @@ bossjustdie:
P_ReturnThrustX(mo, mo->angle - ANGLE_90, 32<<FRACBITS), P_ReturnThrustX(mo, mo->angle - ANGLE_90, 32<<FRACBITS),
P_ReturnThrustY(mo, mo->angle - ANGLE_90, 32<<FRACBITS), P_ReturnThrustY(mo, mo->angle - ANGLE_90, 32<<FRACBITS),
32<<FRACBITS, MT_BOSSJUNK); 32<<FRACBITS, MT_BOSSJUNK);
P_InitAngle(mo2, mo->angle); mo2->angle = mo->angle;
P_InstaThrust(mo2, mo2->angle - ANGLE_90, 4*mo2->scale); P_InstaThrust(mo2, mo2->angle - ANGLE_90, 4*mo2->scale);
P_SetObjectMomZ(mo2, 4*FRACUNIT, false); P_SetObjectMomZ(mo2, 4*FRACUNIT, false);
P_SetMobjState(mo2, S_BOSSTANK1); P_SetMobjState(mo2, S_BOSSTANK1);
@ -3541,7 +3541,7 @@ bossjustdie:
P_ReturnThrustX(mo, mo->angle + ANGLE_90, 32<<FRACBITS), P_ReturnThrustX(mo, mo->angle + ANGLE_90, 32<<FRACBITS),
P_ReturnThrustY(mo, mo->angle + ANGLE_90, 32<<FRACBITS), P_ReturnThrustY(mo, mo->angle + ANGLE_90, 32<<FRACBITS),
32<<FRACBITS, MT_BOSSJUNK); 32<<FRACBITS, MT_BOSSJUNK);
P_InitAngle(mo2, mo->angle); mo2->angle = mo->angle;
P_InstaThrust(mo2, mo2->angle + ANGLE_90, 4*mo2->scale); P_InstaThrust(mo2, mo2->angle + ANGLE_90, 4*mo2->scale);
P_SetObjectMomZ(mo2, 4*FRACUNIT, false); P_SetObjectMomZ(mo2, 4*FRACUNIT, false);
P_SetMobjState(mo2, S_BOSSTANK2); P_SetMobjState(mo2, S_BOSSTANK2);
@ -3549,7 +3549,7 @@ bossjustdie:
mo2 = P_SpawnMobjFromMobj(mo, 0, 0, mo2 = P_SpawnMobjFromMobj(mo, 0, 0,
mobjinfo[MT_EGGMOBILE2].height + (32<<FRACBITS), mobjinfo[MT_EGGMOBILE2].height + (32<<FRACBITS),
MT_BOSSJUNK); MT_BOSSJUNK);
P_InitAngle(mo2, mo->angle); mo2->angle = mo->angle;
P_SetObjectMomZ(mo2, 4*FRACUNIT, false); P_SetObjectMomZ(mo2, 4*FRACUNIT, false);
mo2->momz += mo->momz; mo2->momz += mo->momz;
P_SetMobjState(mo2, S_BOSSSPIGOT); P_SetMobjState(mo2, S_BOSSSPIGOT);
@ -3558,7 +3558,7 @@ bossjustdie:
case MT_EGGMOBILE3: case MT_EGGMOBILE3:
{ {
mo2 = P_SpawnMobjFromMobj(mo, 0, 0, 0, MT_BOSSJUNK); mo2 = P_SpawnMobjFromMobj(mo, 0, 0, 0, MT_BOSSJUNK);
P_InitAngle(mo2, mo->angle); mo2->angle = mo->angle;
P_SetMobjState(mo2, S_BOSSSEBH1); P_SetMobjState(mo2, S_BOSSSEBH1);
} }
break; break;
@ -3610,8 +3610,8 @@ bossjustdie:
pole->tracer->flags |= MF_NOCLIPTHING; pole->tracer->flags |= MF_NOCLIPTHING;
P_SetScale(pole, (pole->destscale = 2*FRACUNIT)); P_SetScale(pole, (pole->destscale = 2*FRACUNIT));
P_SetScale(pole->tracer, (pole->tracer->destscale = 2*FRACUNIT)); P_SetScale(pole->tracer, (pole->tracer->destscale = 2*FRACUNIT));
P_InitAngle(pole, mo->tracer->angle); pole->angle = mo->tracer->angle;
P_InitAngle(pole->tracer, mo->tracer->angle); pole->tracer->angle = mo->tracer->angle;
pole->tracer->tracer->angle = pole->angle - ANGLE_90; pole->tracer->tracer->angle = pole->angle - ANGLE_90;
pole->momx = P_ReturnThrustX(pole, pole->angle, speed); pole->momx = P_ReturnThrustX(pole, pole->angle, speed);
pole->momy = P_ReturnThrustY(pole, pole->angle, speed); pole->momy = P_ReturnThrustY(pole, pole->angle, speed);
@ -3980,7 +3980,7 @@ void A_AttractChase(mobj_t *actor)
sparkle = P_SpawnMobj(actor->target->x, actor->target->y, actor->target->z, MT_RINGSPARKS); sparkle = P_SpawnMobj(actor->target->x, actor->target->y, actor->target->z, MT_RINGSPARKS);
P_SetTarget(&sparkle->target, actor->target); P_SetTarget(&sparkle->target, actor->target);
P_InitAngle(sparkle, (actor->target->angle + (offset>>1)) + (offset * actor->target->player->sparkleanim)); sparkle->angle = (actor->target->angle + (offset>>1)) + (offset * actor->target->player->sparkleanim);
actor->target->player->sparkleanim = (actor->target->player->sparkleanim+1) % 20; actor->target->player->sparkleanim = (actor->target->player->sparkleanim+1) % 20;
P_KillMobj(actor, actor->target, actor->target, DMG_NORMAL); P_KillMobj(actor, actor->target, actor->target, DMG_NORMAL);
@ -5264,7 +5264,7 @@ void A_RockSpawn(mobj_t *actor)
mo = P_SpawnMobj(actor->x, actor->y, actor->z, MT_FALLINGROCK); mo = P_SpawnMobj(actor->x, actor->y, actor->z, MT_FALLINGROCK);
P_SetMobjState(mo, mobjinfo[type].spawnstate); P_SetMobjState(mo, mobjinfo[type].spawnstate);
P_InitAngle(mo, R_PointToAngle2(line->v2->x, line->v2->y, line->v1->x, line->v1->y)); mo->angle = R_PointToAngle2(line->v2->x, line->v2->y, line->v1->x, line->v1->y);
P_InstaThrust(mo, mo->angle, dist + randomoomph); P_InstaThrust(mo, mo->angle, dist + randomoomph);
mo->momz = dist + randomoomph; mo->momz = dist + randomoomph;
@ -7010,7 +7010,7 @@ void A_Boss3ShockThink(mobj_t *actor)
snew->momx = (actor->momx + snext->momx) >> 1; snew->momx = (actor->momx + snext->momx) >> 1;
snew->momy = (actor->momy + snext->momy) >> 1; snew->momy = (actor->momy + snext->momy) >> 1;
snew->momz = (actor->momz + snext->momz) >> 1; // is this really needed? snew->momz = (actor->momz + snext->momz) >> 1; // is this really needed?
P_InitAngle(snew, (actor->angle + snext->angle) >> 1); snew->angle = (actor->angle + snext->angle) >> 1;
P_SetTarget(&snew->target, actor->target); P_SetTarget(&snew->target, actor->target);
snew->fuse = actor->fuse; snew->fuse = actor->fuse;
@ -7166,7 +7166,7 @@ void A_SpawnObjectAbsolute(mobj_t *actor)
mo = P_SpawnMobj(x<<FRACBITS, y<<FRACBITS, z<<FRACBITS, type); mo = P_SpawnMobj(x<<FRACBITS, y<<FRACBITS, z<<FRACBITS, type);
// Spawn objects with an angle matching the spawner's, rather than spawning Eastwards - Monster Iestyn // Spawn objects with an angle matching the spawner's, rather than spawning Eastwards - Monster Iestyn
P_InitAngle(mo, actor->angle); mo->angle = actor->angle;
if (actor->eflags & MFE_VERTICALFLIP) if (actor->eflags & MFE_VERTICALFLIP)
mo->flags2 |= MF2_OBJECTFLIP; mo->flags2 |= MF2_OBJECTFLIP;
@ -7208,7 +7208,7 @@ void A_SpawnObjectRelative(mobj_t *actor)
(actor->eflags & MFE_VERTICALFLIP) ? ((actor->z + actor->height - mobjinfo[type].height) - FixedMul(z<<FRACBITS, actor->scale)) : (actor->z + FixedMul(z<<FRACBITS, actor->scale)), type); (actor->eflags & MFE_VERTICALFLIP) ? ((actor->z + actor->height - mobjinfo[type].height) - FixedMul(z<<FRACBITS, actor->scale)) : (actor->z + FixedMul(z<<FRACBITS, actor->scale)), type);
// Spawn objects with an angle matching the spawner's, rather than spawning Eastwards - Monster Iestyn // Spawn objects with an angle matching the spawner's, rather than spawning Eastwards - Monster Iestyn
P_InitAngle(mo, actor->angle); mo->angle = actor->angle;
if (actor->eflags & MFE_VERTICALFLIP) if (actor->eflags & MFE_VERTICALFLIP)
mo->flags2 |= MF2_OBJECTFLIP; mo->flags2 |= MF2_OBJECTFLIP;
@ -7918,7 +7918,7 @@ void A_BossJetFume(mobj_t *actor)
P_SetScale(filler, filler->destscale); P_SetScale(filler, filler->destscale);
if (actor->eflags & MFE_VERTICALFLIP) if (actor->eflags & MFE_VERTICALFLIP)
filler->flags2 |= MF2_OBJECTFLIP; filler->flags2 |= MF2_OBJECTFLIP;
P_InitAngle(filler, actor->angle - ANGLE_180); filler->angle = actor->angle - ANGLE_180;
P_SetTarget(&actor->tracer, filler); P_SetTarget(&actor->tracer, filler);
}*/ }*/
@ -9671,7 +9671,7 @@ void A_TrapShot(mobj_t *actor)
S_StartSound(missile, missile->info->seesound); S_StartSound(missile, missile->info->seesound);
P_SetTarget(&missile->target, actor); P_SetTarget(&missile->target, actor);
P_InitAngle(missile, actor->angle); missile->angle = actor->angle;
speed = FixedMul(missile->info->speed, missile->scale); speed = FixedMul(missile->info->speed, missile->scale);
@ -10248,7 +10248,7 @@ void A_BrakLobShot(mobj_t *actor)
S_StartSound(shot, shot->info->seesound); S_StartSound(shot, shot->info->seesound);
P_SetTarget(&shot->target, actor); // where it came from P_SetTarget(&shot->target, actor); // where it came from
P_InitAngle(shot, actor->angle); shot->angle = actor->angle;
// Horizontal axes first. First parameter is initial horizontal impulse, second is to correct its angle. // Horizontal axes first. First parameter is initial horizontal impulse, second is to correct its angle.
shot->momx = FixedMul(FixedMul(v, FINECOSINE(theta >> ANGLETOFINESHIFT)), FINECOSINE(shot->angle >> ANGLETOFINESHIFT)); shot->momx = FixedMul(FixedMul(v, FINECOSINE(theta >> ANGLETOFINESHIFT)), FINECOSINE(shot->angle >> ANGLETOFINESHIFT));
@ -10315,7 +10315,7 @@ void A_NapalmScatter(mobj_t *actor)
mo = P_SpawnMobj(actor->x, actor->y, actor->z, typeOfShot); mo = P_SpawnMobj(actor->x, actor->y, actor->z, typeOfShot);
P_SetTarget(&mo->target, actor->target); // Transfer target so Brak doesn't hit himself like an idiot P_SetTarget(&mo->target, actor->target); // Transfer target so Brak doesn't hit himself like an idiot
P_InitAngle(mo, fa << ANGLETOFINESHIFT); mo->angle = fa << ANGLETOFINESHIFT;
mo->momx = FixedMul(FINECOSINE(fa),vx); mo->momx = FixedMul(FINECOSINE(fa),vx);
mo->momy = FixedMul(FINESINE(fa),vx); mo->momy = FixedMul(FINESINE(fa),vx);
mo->momz = vy; mo->momz = vy;
@ -10339,7 +10339,7 @@ void A_SpawnFreshCopy(mobj_t *actor)
newObject = P_SpawnMobjFromMobj(actor, 0, 0, 0, actor->type); newObject = P_SpawnMobjFromMobj(actor, 0, 0, 0, actor->type);
newObject->flags2 = actor->flags2 & MF2_AMBUSH; newObject->flags2 = actor->flags2 & MF2_AMBUSH;
P_InitAngle(newObject, actor->angle); newObject->angle = actor->angle;
newObject->color = actor->color; newObject->color = actor->color;
P_SetTarget(&newObject->target, actor->target); P_SetTarget(&newObject->target, actor->target);
P_SetTarget(&newObject->tracer, actor->tracer); P_SetTarget(&newObject->tracer, actor->tracer);
@ -10375,7 +10375,7 @@ mobj_t *P_InternalFlickySpawn(mobj_t *actor, mobjtype_t flickytype, fixed_t momz
} }
flicky = P_SpawnMobjFromMobj(actor, offsx, offsy, 0, flickytype); flicky = P_SpawnMobjFromMobj(actor, offsx, offsy, 0, flickytype);
P_InitAngle(flicky, actor->angle); flicky->angle = actor->angle;
if (flickytype == MT_SEED) if (flickytype == MT_SEED)
flicky->z += P_MobjFlip(actor)*(actor->height - flicky->height)/2; flicky->z += P_MobjFlip(actor)*(actor->height - flicky->height)/2;
@ -10525,7 +10525,7 @@ void A_FlickyCenter(mobj_t *actor)
else if (actor->flags & MF_SLIDEME) // aimless else if (actor->flags & MF_SLIDEME) // aimless
{ {
actor->tracer->fuse = 0; // less than 2*TICRATE means move aimlessly. actor->tracer->fuse = 0; // less than 2*TICRATE means move aimlessly.
P_InitAngle(actor->tracer, P_RandomKey(180)*ANG2); actor->tracer->angle = P_RandomKey(180)*ANG2;
} }
else //orbit else //orbit
actor->tracer->fuse = FRACUNIT; actor->tracer->fuse = FRACUNIT;
@ -11222,7 +11222,7 @@ void A_ConnectToGround(mobj_t *actor)
{ {
work = P_SpawnMobjFromMobj(actor, 0, 0, workz, locvar1); work = P_SpawnMobjFromMobj(actor, 0, 0, workz, locvar1);
if (work) if (work)
P_InitAngle(work, ang); work->angle = ang;
ang += ANGLE_90; ang += ANGLE_90;
workz += workh; workz += workh;
} }
@ -11268,7 +11268,7 @@ void A_SpawnParticleRelative(mobj_t *actor)
(actor->eflags & MFE_VERTICALFLIP) ? ((actor->z + actor->height - mobjinfo[MT_PARTICLE].height) - FixedMul(z<<FRACBITS, actor->scale)) : (actor->z + FixedMul(z<<FRACBITS, actor->scale)), MT_PARTICLE); (actor->eflags & MFE_VERTICALFLIP) ? ((actor->z + actor->height - mobjinfo[MT_PARTICLE].height) - FixedMul(z<<FRACBITS, actor->scale)) : (actor->z + FixedMul(z<<FRACBITS, actor->scale)), MT_PARTICLE);
// Spawn objects with an angle matching the spawner's, rather than spawning Eastwards - Monster Iestyn // Spawn objects with an angle matching the spawner's, rather than spawning Eastwards - Monster Iestyn
P_InitAngle(mo, actor->angle); mo->angle = actor->angle;
if (actor->eflags & MFE_VERTICALFLIP) if (actor->eflags & MFE_VERTICALFLIP)
mo->flags2 |= MF2_OBJECTFLIP; mo->flags2 |= MF2_OBJECTFLIP;
@ -12015,7 +12015,7 @@ void A_Boss5MakeJunk(mobj_t *actor)
broked->fuse = TICRATE; broked->fuse = TICRATE;
else else
broked->fuse = (((locvar2 & 1) ? 4 : 2)*TICRATE)/3; broked->fuse = (((locvar2 & 1) ? 4 : 2)*TICRATE)/3;
P_InitAngle(broked, ang); broked->angle = ang;
P_InstaThrust(broked, ang, ((locvar2 & 2) ? 8 : 5)*actor->scale); P_InstaThrust(broked, ang, ((locvar2 & 2) ? 8 : 5)*actor->scale);
P_SetObjectMomZ(broked, (((locvar2) ? 4 : 0) + P_RandomRange(2, 5))<<FRACBITS, false); P_SetObjectMomZ(broked, (((locvar2) ? 4 : 0) + P_RandomRange(2, 5))<<FRACBITS, false);
if (locvar1 > 0) if (locvar1 > 0)
@ -12094,7 +12094,7 @@ static void P_DustRing(mobjtype_t mobjtype, UINT32 div, fixed_t x, fixed_t y, fi
mobjtype mobjtype
); );
P_InitAngle(dust, ang*i + ANGLE_90); dust->angle = ang*i + ANGLE_90;
P_SetScale(dust, FixedMul(initscale, scale)); P_SetScale(dust, FixedMul(initscale, scale));
dust->destscale = FixedMul(4*FRACUNIT + P_RandomFixed(), scale); dust->destscale = FixedMul(4*FRACUNIT + P_RandomFixed(), scale);
dust->scalespeed = scale/24; dust->scalespeed = scale/24;
@ -12299,7 +12299,7 @@ static mobj_t *P_TrainSeg(mobj_t *src, fixed_t x, fixed_t y, fixed_t z, angle_t
s->fuse = 16*TICRATE; s->fuse = 16*TICRATE;
s->sprite = spr; s->sprite = spr;
s->frame = frame|FF_PAPERSPRITE; s->frame = frame|FF_PAPERSPRITE;
P_InitAngle(s, ang); s->angle = ang;
P_Thrust(s, src->angle, 7*FRACUNIT); P_Thrust(s, src->angle, 7*FRACUNIT);
return s; return s;
} }
@ -12671,7 +12671,7 @@ void A_SaloonDoorSpawn(mobj_t *actor)
// One door... // One door...
if (!(door = P_SpawnMobjFromMobj(actor, c, s, 0, locvar1))) return; if (!(door = P_SpawnMobjFromMobj(actor, c, s, 0, locvar1))) return;
P_InitAngle(door, ang + ANGLE_180); door->angle = ang + ANGLE_180;
door->extravalue1 = AngleFixed(door->angle); // Origin angle door->extravalue1 = AngleFixed(door->angle); // Origin angle
door->extravalue2 = 0; // Angular speed door->extravalue2 = 0; // Angular speed
P_SetTarget(&door->tracer, actor); // Origin door P_SetTarget(&door->tracer, actor); // Origin door
@ -12679,7 +12679,7 @@ void A_SaloonDoorSpawn(mobj_t *actor)
// ...two door! // ...two door!
if (!(door = P_SpawnMobjFromMobj(actor, -c, -s, 0, locvar1))) return; if (!(door = P_SpawnMobjFromMobj(actor, -c, -s, 0, locvar1))) return;
P_InitAngle(door, ang); door->angle = ang;
door->extravalue1 = AngleFixed(door->angle); // Origin angle door->extravalue1 = AngleFixed(door->angle); // Origin angle
door->extravalue2 = 0; // Angular speed door->extravalue2 = 0; // Angular speed
P_SetTarget(&door->tracer, actor); // Origin door P_SetTarget(&door->tracer, actor); // Origin door
@ -12875,7 +12875,7 @@ void A_SpawnPterabytes(mobj_t *actor)
c = FINECOSINE(fa); c = FINECOSINE(fa);
s = FINESINE(fa); s = FINESINE(fa);
waypoint = P_SpawnMobjFromMobj(actor, FixedMul(c, rad), FixedMul(s, rad), 0, MT_PTERABYTEWAYPOINT); waypoint = P_SpawnMobjFromMobj(actor, FixedMul(c, rad), FixedMul(s, rad), 0, MT_PTERABYTEWAYPOINT);
P_InitAngle(waypoint, ang + ANGLE_90); waypoint->angle = ang + ANGLE_90;
P_SetTarget(&waypoint->tracer, actor); P_SetTarget(&waypoint->tracer, actor);
ptera = P_SpawnMobjFromMobj(waypoint, 0, 0, 0, MT_PTERABYTE); ptera = P_SpawnMobjFromMobj(waypoint, 0, 0, 0, MT_PTERABYTE);
ptera->angle = waypoint->angle; ptera->angle = waypoint->angle;
@ -13049,7 +13049,7 @@ void A_DragonbomberSpawn(mobj_t *actor)
segment = P_SpawnMobjFromMobj(mo, x, y, 0, MT_DRAGONTAIL); segment = P_SpawnMobjFromMobj(mo, x, y, 0, MT_DRAGONTAIL);
P_SetTarget(&segment->target, mo); P_SetTarget(&segment->target, mo);
P_SetTarget(&mo->tracer, segment); P_SetTarget(&mo->tracer, segment);
P_InitAngle(segment, mo->angle); segment->angle = mo->angle;
mo = segment; mo = segment;
} }
for (i = 0; i < 2; i++) // spawn wings for (i = 0; i < 2; i++) // spawn wings
@ -13465,7 +13465,7 @@ static void SpawnSPBDust(mobj_t *mo)
P_SetScale(dust, mo->scale*2); P_SetScale(dust, mo->scale*2);
dust->colorized = true; dust->colorized = true;
dust->color = SKINCOLOR_RED; dust->color = SKINCOLOR_RED;
P_InitAngle(dust, mo->angle - FixedAngle(FRACUNIT*90 - FRACUNIT*180*i)); // The first one will spawn to the right of the spb, the second one to the left. dust->angle = mo->angle - FixedAngle(FRACUNIT*90 - FRACUNIT*180*i); // The first one will spawn to the right of the spb, the second one to the left.
P_Thrust(dust, dust->angle, 6*dust->scale); P_Thrust(dust, dust->angle, 6*dust->scale);
K_MatchGenericExtraFlags(dust, mo); K_MatchGenericExtraFlags(dust, mo);
@ -13502,7 +13502,7 @@ static void SpawnSPBAIZDust(mobj_t *mo, INT32 dir)
spark->flags = MF_NOGRAVITY|MF_PAIN; spark->flags = MF_NOGRAVITY|MF_PAIN;
P_SetTarget(&spark->target, mo); P_SetTarget(&spark->target, mo);
P_InitAngle(spark, travelangle+(dir*ANGLE_90)); spark->angle = travelangle+(dir*ANGLE_90);
P_SetScale(spark, (spark->destscale = mo->scale*3/2)); P_SetScale(spark, (spark->destscale = mo->scale*3/2));
spark->momx = (6*mo->momx)/5; spark->momx = (6*mo->momx)/5;
@ -13521,7 +13521,7 @@ static void SpawnSPBSpeedLines(mobj_t *actor)
MT_FASTLINE); MT_FASTLINE);
P_SetTarget(&fast->target, actor); P_SetTarget(&fast->target, actor);
P_InitAngle(fast, K_MomentumAngle(actor)); fast->angle = K_MomentumAngle(actor);
fast->color = SKINCOLOR_RED; fast->color = SKINCOLOR_RED;
fast->colorized = true; fast->colorized = true;
K_MatchGenericExtraFlags(fast, actor); K_MatchGenericExtraFlags(fast, actor);
@ -14111,7 +14111,7 @@ void A_RandomShadowFrame(mobj_t *actor)
P_SetScale(fake, FRACUNIT*3/2); P_SetScale(fake, FRACUNIT*3/2);
fake->scale = FRACUNIT*3/2; fake->scale = FRACUNIT*3/2;
fake->destscale = FRACUNIT*3/2; fake->destscale = FRACUNIT*3/2;
P_InitAngle(fake, actor->angle); fake->angle = actor->angle;
fake->tics = -1; fake->tics = -1;
actor->renderflags |= RF_DONTDRAW; actor->renderflags |= RF_DONTDRAW;
actor->extravalue1 = 1; actor->extravalue1 = 1;
@ -14499,8 +14499,6 @@ void A_FlameShieldPaper(mobj_t *actor)
paper->frame |= framea; paper->frame |= framea;
} }
P_InitAngle(paper, paper->angle);
paper->extravalue1 = i; paper->extravalue1 = i;
} }
} }

View file

@ -1202,7 +1202,7 @@ void P_KillMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, UINT8 damaget
mo->angle = FixedAngle((P_RandomKey(36)*10)<<FRACBITS); mo->angle = FixedAngle((P_RandomKey(36)*10)<<FRACBITS);
mo2 = P_SpawnMobjFromMobj(mo, 0, 0, 0, MT_BOSSJUNK); mo2 = P_SpawnMobjFromMobj(mo, 0, 0, 0, MT_BOSSJUNK);
P_InitAngle(mo2, mo->angle); mo2->angle = mo->angle;
P_SetMobjState(mo2, S_BOSSSEBH2); P_SetMobjState(mo2, S_BOSSSEBH2);
if (++i == 2) // we've already removed 2 of these, let's stop now if (++i == 2) // we've already removed 2 of these, let's stop now
@ -1346,7 +1346,7 @@ void P_KillMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, UINT8 damaget
for (i = 0; i < 2; i++) for (i = 0; i < 2; i++)
{ {
mobj_t *blast = P_SpawnMobjFromMobj(target, 0, 0, target->info->height >> 1, MT_BATTLEBUMPER_BLAST); mobj_t *blast = P_SpawnMobjFromMobj(target, 0, 0, target->info->height >> 1, MT_BATTLEBUMPER_BLAST);
P_InitAngle(blast, angle + i*ANGLE_90); blast->angle = angle + i*ANGLE_90;
P_SetScale(blast, 2*blast->scale/3); P_SetScale(blast, 2*blast->scale/3);
blast->destscale = 2*blast->scale; blast->destscale = 2*blast->scale;
} }
@ -1576,7 +1576,7 @@ void P_KillMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, UINT8 damaget
chunk = P_SpawnMobjFromMobj(target, 0, 0, 0, MT_SPIKE);\ chunk = P_SpawnMobjFromMobj(target, 0, 0, 0, MT_SPIKE);\
P_SetMobjState(chunk, target->info->xdeathstate);\ P_SetMobjState(chunk, target->info->xdeathstate);\
chunk->health = 0;\ chunk->health = 0;\
P_InitAngle(chunk, angtweak);\ chunk->angle = angtweak;\
P_UnsetThingPosition(chunk);\ P_UnsetThingPosition(chunk);\
chunk->flags = MF_NOCLIP;\ chunk->flags = MF_NOCLIP;\
chunk->x += xmov;\ chunk->x += xmov;\
@ -1598,7 +1598,7 @@ void P_KillMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, UINT8 damaget
chunk = P_SpawnMobjFromMobj(target, 0, 0, 0, MT_SPIKE); chunk = P_SpawnMobjFromMobj(target, 0, 0, 0, MT_SPIKE);
P_SetMobjState(chunk, target->info->deathstate); P_SetMobjState(chunk, target->info->deathstate);
chunk->health = 0; chunk->health = 0;
P_InitAngle(chunk, ang + ANGLE_180); chunk->angle = ang + ANGLE_180;
P_UnsetThingPosition(chunk); P_UnsetThingPosition(chunk);
chunk->flags = MF_NOCLIP; chunk->flags = MF_NOCLIP;
chunk->x -= xoffs; chunk->x -= xoffs;
@ -1644,7 +1644,7 @@ void P_KillMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, UINT8 damaget
chunk = P_SpawnMobjFromMobj(target, 0, 0, 0, MT_WALLSPIKE);\ chunk = P_SpawnMobjFromMobj(target, 0, 0, 0, MT_WALLSPIKE);\
P_SetMobjState(chunk, target->info->xdeathstate);\ P_SetMobjState(chunk, target->info->xdeathstate);\
chunk->health = 0;\ chunk->health = 0;\
P_InitAngle(chunk, target->angle);\ chunk->angle = target->angle;\
P_UnsetThingPosition(chunk);\ P_UnsetThingPosition(chunk);\
chunk->flags = MF_NOCLIP;\ chunk->flags = MF_NOCLIP;\
chunk->x += xmov - forwardxoffs;\ chunk->x += xmov - forwardxoffs;\
@ -1670,7 +1670,7 @@ void P_KillMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, UINT8 damaget
P_SetMobjState(chunk, target->info->deathstate); P_SetMobjState(chunk, target->info->deathstate);
chunk->health = 0; chunk->health = 0;
P_InitAngle(chunk, target->angle); chunk->angle = target->angle;
P_UnsetThingPosition(chunk); P_UnsetThingPosition(chunk);
chunk->flags = MF_NOCLIP; chunk->flags = MF_NOCLIP;
chunk->x += forwardxoffs - xoffs; chunk->x += forwardxoffs - xoffs;
@ -1794,7 +1794,7 @@ static boolean P_KillPlayer(player_t *player, mobj_t *inflictor, mobj_t *source,
boom = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_FZEROBOOM); boom = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_FZEROBOOM);
boom->scale = player->mo->scale; boom->scale = player->mo->scale;
P_InitAngle(boom, player->mo->angle); boom->angle = player->mo->angle;
P_SetTarget(&boom->target, player->mo); P_SetTarget(&boom->target, player->mo);
} }

View file

@ -416,9 +416,6 @@ boolean P_TryMove(mobj_t *thing, fixed_t x, fixed_t y, boolean allowdropoff);
boolean P_Move(mobj_t *actor, fixed_t speed); boolean P_Move(mobj_t *actor, fixed_t speed);
boolean P_SetOrigin(mobj_t *thing, fixed_t x, fixed_t y, fixed_t z); boolean P_SetOrigin(mobj_t *thing, fixed_t x, fixed_t y, fixed_t z);
boolean P_MoveOrigin(mobj_t *thing, fixed_t x, fixed_t y, fixed_t z); boolean P_MoveOrigin(mobj_t *thing, fixed_t x, fixed_t y, fixed_t z);
void P_InitAngle(mobj_t *thing, angle_t newValue);
void P_InitPitch(mobj_t *thing, angle_t newValue);
void P_InitRoll(mobj_t *thing, angle_t newValue);
void P_SlideMove(mobj_t *mo); void P_SlideMove(mobj_t *mo);
void P_BouncePlayerMove(mobj_t *mo); void P_BouncePlayerMove(mobj_t *mo);
void P_BounceMove(mobj_t *mo); void P_BounceMove(mobj_t *mo);

View file

@ -158,31 +158,6 @@ boolean P_MoveOrigin(mobj_t *thing, fixed_t x, fixed_t y, fixed_t z)
return P_TeleportMove(thing, x, y, z); return P_TeleportMove(thing, x, y, z);
} }
//
// P_InitAngle - Change an object's angle, including interp values.
//
void P_InitAngle(mobj_t *thing, angle_t newValue)
{
thing->angle = thing->old_angle = newValue;
}
//
// P_InitPitch - Change an object's pitch, including interp values.
//
void P_InitPitch(mobj_t *thing, angle_t newValue)
{
thing->pitch = thing->old_pitch = newValue;
}
//
// P_InitRoll - Change an object's roll, including interp values.
//
void P_InitRoll(mobj_t *thing, angle_t newValue)
{
thing->roll = thing->old_roll = newValue;
}
// ========================================================================= // =========================================================================
// MOVEMENT ITERATOR FUNCTIONS // MOVEMENT ITERATOR FUNCTIONS
// ========================================================================= // =========================================================================
@ -432,7 +407,7 @@ boolean P_DoSpring(mobj_t *spring, mobj_t *object)
mobj_t *grease; mobj_t *grease;
grease = P_SpawnMobj(object->x, object->y, object->z, MT_TIREGREASE); grease = P_SpawnMobj(object->x, object->y, object->z, MT_TIREGREASE);
P_SetTarget(&grease->target, object); P_SetTarget(&grease->target, object);
P_InitAngle(grease, K_MomentumAngle(object)); grease->angle = K_MomentumAngle(object);
grease->extravalue1 = i; grease->extravalue1 = i;
} }
} }

View file

@ -2412,7 +2412,7 @@ boolean P_ZMovement(mobj_t *mo)
MT_KART_TIRE MT_KART_TIRE
); );
P_InitAngle(tire, mo->angle); tire->angle = mo->angle;
tire->fuse = 3*TICRATE; tire->fuse = 3*TICRATE;
P_InstaThrust(tire, tireAngle, 4 * mo->scale); P_InstaThrust(tire, tireAngle, 4 * mo->scale);
P_SetObjectMomZ(tire, 4*FRACUNIT, false); P_SetObjectMomZ(tire, 4*FRACUNIT, false);
@ -2432,7 +2432,7 @@ boolean P_ZMovement(mobj_t *mo)
MT_KART_TIRE MT_KART_TIRE
); );
P_InitAngle(tire, mo->angle); tire->angle = mo->angle;
tire->fuse = 3*TICRATE; tire->fuse = 3*TICRATE;
P_InstaThrust(tire, tireAngle, 4 * mo->scale); P_InstaThrust(tire, tireAngle, 4 * mo->scale);
P_SetObjectMomZ(tire, 4*FRACUNIT, false); P_SetObjectMomZ(tire, 4*FRACUNIT, false);
@ -4201,7 +4201,7 @@ static void P_SpawnItemCapsuleParts(mobj_t *mobj)
part = part->hnext; part = part->hnext;
P_SetTarget(&part->target, mobj); P_SetTarget(&part->target, mobj);
P_SetMobjState(part, buttState); P_SetMobjState(part, buttState);
P_InitAngle(part, i * ANG_CAPSULE); part->angle = i * ANG_CAPSULE;
part->movedir = spin; // rotation speed part->movedir = spin; // rotation speed
part->movefactor = 0; // z offset part->movefactor = 0; // z offset
part->extravalue1 = buttScale; // relative scale part->extravalue1 = buttScale; // relative scale
@ -4212,7 +4212,7 @@ static void P_SpawnItemCapsuleParts(mobj_t *mobj)
part = part->hnext; part = part->hnext;
P_SetTarget(&part->target, mobj); P_SetTarget(&part->target, mobj);
P_SetMobjState(part, S_ITEMCAPSULE_TOP_SIDE); P_SetMobjState(part, S_ITEMCAPSULE_TOP_SIDE);
P_InitAngle(part, i * ANG_CAPSULE); part->angle = i * ANG_CAPSULE;
part->movedir = spin; // rotation speed part->movedir = spin; // rotation speed
part->movefactor = mobj->info->height - part->info->height; // z offset part->movefactor = mobj->info->height - part->info->height; // z offset
} }
@ -4540,7 +4540,7 @@ void P_SpawnParaloop(fixed_t x, fixed_t y, fixed_t z, fixed_t radius, INT32 numb
mobj->z -= mobj->height>>1; mobj->z -= mobj->height>>1;
// change angle // change angle
P_InitAngle(mobj, R_PointToAngle2(mobj->x, mobj->y, x, y)); mobj->angle = R_PointToAngle2(mobj->x, mobj->y, x, y);
// change slope // change slope
dist = P_AproxDistance(P_AproxDistance(x - mobj->x, y - mobj->y), z - mobj->z); dist = P_AproxDistance(P_AproxDistance(x - mobj->x, y - mobj->y), z - mobj->z);
@ -5229,7 +5229,7 @@ static void P_FlameJetSceneryThink(mobj_t *mobj)
flame = P_SpawnMobj(mobj->x, mobj->y, mobj->z, MT_FLAMEJETFLAME); flame = P_SpawnMobj(mobj->x, mobj->y, mobj->z, MT_FLAMEJETFLAME);
P_SetMobjState(flame, S_FLAMEJETFLAME4); P_SetMobjState(flame, S_FLAMEJETFLAME4);
P_InitAngle(flame, mobj->angle); flame->angle = mobj->angle;
if (mobj->flags2 & MF2_AMBUSH) // Wave up and down instead of side-to-side if (mobj->flags2 & MF2_AMBUSH) // Wave up and down instead of side-to-side
flame->momz = mobj->fuse << (FRACBITS - 2); flame->momz = mobj->fuse << (FRACBITS - 2);
@ -5718,7 +5718,7 @@ static void P_MobjSceneryThink(mobj_t *mobj)
blast->angle += ANGLE_90; blast->angle += ANGLE_90;
S_StartSound(blast, sfx_cdfm64); S_StartSound(blast, sfx_cdfm64);
} }
P_InitAngle(blast, blast->angle); blast->angle = blast->angle;
blast->destscale *= 4; blast->destscale *= 4;
} }
@ -5863,7 +5863,7 @@ static void P_MobjSceneryThink(mobj_t *mobj)
mobj->x = mobj->target->x; mobj->x = mobj->target->x;
mobj->y = mobj->target->y; mobj->y = mobj->target->y;
P_InitAngle (mobj, R_PointToAngle(mobj->x, mobj->y) + ANGLE_90); // literally only happened because i wanted to ^L^R the SPR_ITEM's mobj->angle = R_PointToAngle(mobj->x, mobj->y) + ANGLE_90; // literally only happened because i wanted to ^L^R the SPR_ITEM's
if (!r_splitscreen && players[displayplayers[0]].mo) if (!r_splitscreen && players[displayplayers[0]].mo)
{ {
@ -7668,7 +7668,7 @@ static boolean P_MobjRegularThink(mobj_t *mobj)
mobj->z + (mobj->height/2) + (P_RandomRange(-20,20) * mobj->scale), mobj->z + (mobj->height/2) + (P_RandomRange(-20,20) * mobj->scale),
MT_FASTLINE); MT_FASTLINE);
P_InitAngle(fast, mobj->angle); fast->angle = mobj->angle;
fast->momx = 3*mobj->target->momx/4; fast->momx = 3*mobj->target->momx/4;
fast->momy = 3*mobj->target->momy/4; fast->momy = 3*mobj->target->momy/4;
fast->momz = 3*P_GetMobjZMovement(mobj->target)/4; fast->momz = 3*P_GetMobjZMovement(mobj->target)/4;
@ -7730,7 +7730,7 @@ static boolean P_MobjRegularThink(mobj_t *mobj)
if (underlayst != S_NULL) if (underlayst != S_NULL)
{ {
mobj_t *underlay = P_SpawnMobj(mobj->target->x, mobj->target->y, mobj->target->z, MT_FLAMESHIELDUNDERLAY); mobj_t *underlay = P_SpawnMobj(mobj->target->x, mobj->target->y, mobj->target->z, MT_FLAMESHIELDUNDERLAY);
P_InitAngle(underlay, mobj->angle); underlay->angle = mobj->angle;
P_SetMobjState(underlay, underlayst); P_SetMobjState(underlay, underlayst);
} }
break; break;
@ -9156,7 +9156,7 @@ static boolean P_FuseThink(mobj_t *mobj)
for (i = 0; i < 5; i++) for (i = 0; i < 5; i++)
{ {
mobj_t *debris = P_SpawnMobj(mobj->x, mobj->y, mobj->z, MT_SMK_ICEBLOCK_DEBRIS); mobj_t *debris = P_SpawnMobj(mobj->x, mobj->y, mobj->z, MT_SMK_ICEBLOCK_DEBRIS);
P_InitAngle(debris, FixedAngle(P_RandomRange(0,360)<<FRACBITS)); debris->angle = FixedAngle(P_RandomRange(0,360)<<FRACBITS);
P_InstaThrust(debris, debris->angle, P_RandomRange(3,18)*(FRACUNIT/4)); P_InstaThrust(debris, debris->angle, P_RandomRange(3,18)*(FRACUNIT/4));
debris->momz = P_RandomRange(4,8)<<FRACBITS; debris->momz = P_RandomRange(4,8)<<FRACBITS;
if (!i) // kinda hacky :V if (!i) // kinda hacky :V
@ -9964,7 +9964,7 @@ mobj_t *P_SpawnMobj(fixed_t x, fixed_t y, fixed_t z, mobjtype_t type)
case MT_CRUSHSTACEAN: case MT_CRUSHSTACEAN:
{ {
mobj_t *bigmeatyclaw = P_SpawnMobjFromMobj(mobj, 0, 0, 0, MT_CRUSHCLAW); mobj_t *bigmeatyclaw = P_SpawnMobjFromMobj(mobj, 0, 0, 0, MT_CRUSHCLAW);
P_InitAngle(bigmeatyclaw, mobj->angle + ((mobj->flags2 & MF2_AMBUSH) ? ANGLE_90 : ANGLE_270)); bigmeatyclaw->angle = mobj->angle + ((mobj->flags2 & MF2_AMBUSH) ? ANGLE_90 : ANGLE_270);
P_SetTarget(&mobj->tracer, bigmeatyclaw); P_SetTarget(&mobj->tracer, bigmeatyclaw);
P_SetTarget(&bigmeatyclaw->tracer, mobj); P_SetTarget(&bigmeatyclaw->tracer, mobj);
mobj->reactiontime >>= 1; mobj->reactiontime >>= 1;
@ -9973,7 +9973,7 @@ mobj_t *P_SpawnMobj(fixed_t x, fixed_t y, fixed_t z, mobjtype_t type)
case MT_BANPYURA: case MT_BANPYURA:
{ {
mobj_t *bigmeatyclaw = P_SpawnMobjFromMobj(mobj, 0, 0, 0, MT_BANPSPRING); mobj_t *bigmeatyclaw = P_SpawnMobjFromMobj(mobj, 0, 0, 0, MT_BANPSPRING);
P_InitAngle(bigmeatyclaw, mobj->angle + ((mobj->flags2 & MF2_AMBUSH) ? ANGLE_90 : ANGLE_270)); bigmeatyclaw->angle = mobj->angle + ((mobj->flags2 & MF2_AMBUSH) ? ANGLE_90 : ANGLE_270);
P_SetTarget(&mobj->tracer, bigmeatyclaw); P_SetTarget(&mobj->tracer, bigmeatyclaw);
P_SetTarget(&bigmeatyclaw->tracer, mobj); P_SetTarget(&bigmeatyclaw->tracer, mobj);
mobj->reactiontime >>= 1; mobj->reactiontime >>= 1;
@ -10109,7 +10109,7 @@ mobj_t *P_SpawnMobj(fixed_t x, fixed_t y, fixed_t z, mobjtype_t type)
break; break;
case MT_MINECARTEND: case MT_MINECARTEND:
P_SetTarget(&mobj->tracer, P_SpawnMobjFromMobj(mobj, 0, 0, 0, MT_MINECARTENDSOLID)); P_SetTarget(&mobj->tracer, P_SpawnMobjFromMobj(mobj, 0, 0, 0, MT_MINECARTENDSOLID));
P_InitAngle(mobj->tracer, mobj->angle + ANGLE_90); mobj->tracer->angle = mobj->angle + ANGLE_90;
break; break;
case MT_TORCHFLOWER: case MT_TORCHFLOWER:
{ {
@ -10231,7 +10231,7 @@ mobj_t *P_SpawnMobj(fixed_t x, fixed_t y, fixed_t z, mobjtype_t type)
angle_t ang = i * diff; angle_t ang = i * diff;
mobj_t *side = P_SpawnMobj(mobj->x + FINECOSINE((ang>>ANGLETOFINESHIFT) & FINEMASK), mobj_t *side = P_SpawnMobj(mobj->x + FINECOSINE((ang>>ANGLETOFINESHIFT) & FINEMASK),
mobj->y + FINESINE((ang>>ANGLETOFINESHIFT) & FINEMASK), mobj->z, MT_DAYTONAPINETREE_SIDE); mobj->y + FINESINE((ang>>ANGLETOFINESHIFT) & FINEMASK), mobj->z, MT_DAYTONAPINETREE_SIDE);
P_InitAngle(side, ang); side->angle = ang;
side->target = mobj; side->target = mobj;
side->threshold = i; side->threshold = i;
} }
@ -10248,7 +10248,7 @@ mobj_t *P_SpawnMobj(fixed_t x, fixed_t y, fixed_t z, mobjtype_t type)
cur = P_SpawnMobj(mobj->x + FINECOSINE(((mobj->angle*8)>>ANGLETOFINESHIFT) & FINEMASK), cur = P_SpawnMobj(mobj->x + FINECOSINE(((mobj->angle*8)>>ANGLETOFINESHIFT) & FINEMASK),
mobj->y + FINESINE(((mobj->angle*8)>>ANGLETOFINESHIFT) & FINEMASK), mobj->z, MT_EZZPROPELLER_BLADE); mobj->y + FINESINE(((mobj->angle*8)>>ANGLETOFINESHIFT) & FINEMASK), mobj->z, MT_EZZPROPELLER_BLADE);
P_InitAngle(cur, mobj->angle); cur->angle = mobj->angle;
P_SetTarget(&cur->hprev, prev); P_SetTarget(&cur->hprev, prev);
P_SetTarget(&prev->hnext, cur); P_SetTarget(&prev->hnext, cur);
@ -10314,7 +10314,7 @@ mobj_t *P_SpawnMobj(fixed_t x, fixed_t y, fixed_t z, mobjtype_t type)
cur->threshold = i; cur->threshold = i;
P_MoveOrigin(cur, cur->x + ((cur->radius>>FRACBITS) * FINECOSINE((FixedAngle((90*cur->threshold)<<FRACBITS)>>ANGLETOFINESHIFT) & FINEMASK)), P_MoveOrigin(cur, cur->x + ((cur->radius>>FRACBITS) * FINECOSINE((FixedAngle((90*cur->threshold)<<FRACBITS)>>ANGLETOFINESHIFT) & FINEMASK)),
cur->y + ((cur->radius>>FRACBITS) * FINESINE((FixedAngle((90*cur->threshold)<<FRACBITS)>>ANGLETOFINESHIFT) & FINEMASK)), cur->z); cur->y + ((cur->radius>>FRACBITS) * FINESINE((FixedAngle((90*cur->threshold)<<FRACBITS)>>ANGLETOFINESHIFT) & FINEMASK)), cur->z);
P_InitAngle(cur, ANGLE_90*(cur->threshold+1)); cur->angle = ANGLE_90*(cur->threshold+1);
P_SetTarget(&cur->hprev, prev); P_SetTarget(&cur->hprev, prev);
P_SetTarget(&prev->hnext, cur); P_SetTarget(&prev->hnext, cur);
@ -11849,7 +11849,7 @@ static boolean P_SetupMace(mapthing_t *mthing, mobj_t *mobj, boolean *doangle)
spawnee->friction = mroll;\ spawnee->friction = mroll;\
spawnee->movefactor = mwidthset;\ spawnee->movefactor = mwidthset;\
spawnee->movecount = dist;\ spawnee->movecount = dist;\
P_InitAngle(spawnee, myaw);\ spawnee->angle = myaw;\
spawnee->flags |= (MF_NOGRAVITY|mflagsapply);\ spawnee->flags |= (MF_NOGRAVITY|mflagsapply);\
spawnee->flags2 |= (mflags2apply|moreflags2);\ spawnee->flags2 |= (mflags2apply|moreflags2);\
spawnee->eflags |= meflagsapply;\ spawnee->eflags |= meflagsapply;\
@ -12048,29 +12048,29 @@ static boolean P_SetupBooster(mapthing_t* mthing, mobj_t* mobj, boolean strong)
statenum_t rollerstate = strong ? S_REDBOOSTERROLLER : S_YELLOWBOOSTERROLLER; statenum_t rollerstate = strong ? S_REDBOOSTERROLLER : S_YELLOWBOOSTERROLLER;
mobj_t *seg = P_SpawnMobjFromMobj(mobj, 26*x1, 26*y1, 0, MT_BOOSTERSEG); mobj_t *seg = P_SpawnMobjFromMobj(mobj, 26*x1, 26*y1, 0, MT_BOOSTERSEG);
P_InitAngle(seg, angle - ANGLE_90); seg->angle = angle - ANGLE_90;
P_SetMobjState(seg, facestate); P_SetMobjState(seg, facestate);
seg = P_SpawnMobjFromMobj(mobj, -26*x1, -26*y1, 0, MT_BOOSTERSEG); seg = P_SpawnMobjFromMobj(mobj, -26*x1, -26*y1, 0, MT_BOOSTERSEG);
P_InitAngle(seg, angle + ANGLE_90); seg->angle = angle + ANGLE_90;
P_SetMobjState(seg, facestate); P_SetMobjState(seg, facestate);
seg = P_SpawnMobjFromMobj(mobj, 21*x2, 21*y2, 0, MT_BOOSTERSEG); seg = P_SpawnMobjFromMobj(mobj, 21*x2, 21*y2, 0, MT_BOOSTERSEG);
P_InitAngle(seg, angle); seg->angle = angle;
P_SetMobjState(seg, leftstate); P_SetMobjState(seg, leftstate);
seg = P_SpawnMobjFromMobj(mobj, -21*x2, -21*y2, 0, MT_BOOSTERSEG); seg = P_SpawnMobjFromMobj(mobj, -21*x2, -21*y2, 0, MT_BOOSTERSEG);
P_InitAngle(seg, angle); seg->angle = angle;
P_SetMobjState(seg, rightstate); P_SetMobjState(seg, rightstate);
seg = P_SpawnMobjFromMobj(mobj, 13*(x1 + x2), 13*(y1 + y2), 0, MT_BOOSTERROLLER); seg = P_SpawnMobjFromMobj(mobj, 13*(x1 + x2), 13*(y1 + y2), 0, MT_BOOSTERROLLER);
P_InitAngle(seg, angle); seg->angle = angle;
P_SetMobjState(seg, rollerstate); P_SetMobjState(seg, rollerstate);
seg = P_SpawnMobjFromMobj(mobj, 13*(x1 - x2), 13*(y1 - y2), 0, MT_BOOSTERROLLER); seg = P_SpawnMobjFromMobj(mobj, 13*(x1 - x2), 13*(y1 - y2), 0, MT_BOOSTERROLLER);
P_InitAngle(seg, angle); seg->angle = angle;
P_SetMobjState(seg, rollerstate); P_SetMobjState(seg, rollerstate);
seg = P_SpawnMobjFromMobj(mobj, -13*(x1 + x2), -13*(y1 + y2), 0, MT_BOOSTERROLLER); seg = P_SpawnMobjFromMobj(mobj, -13*(x1 + x2), -13*(y1 + y2), 0, MT_BOOSTERROLLER);
P_InitAngle(seg, angle); seg->angle = angle;
P_SetMobjState(seg, rollerstate); P_SetMobjState(seg, rollerstate);
seg = P_SpawnMobjFromMobj(mobj, -13*(x1 - x2), -13*(y1 - y2), 0, MT_BOOSTERROLLER); seg = P_SpawnMobjFromMobj(mobj, -13*(x1 - x2), -13*(y1 - y2), 0, MT_BOOSTERROLLER);
P_InitAngle(seg, angle); seg->angle = angle;
P_SetMobjState(seg, rollerstate); P_SetMobjState(seg, rollerstate);
return true; return true;
@ -12247,19 +12247,19 @@ static boolean P_SetupSpawnedMapThing(mapthing_t *mthing, mobj_t *mobj, boolean
case MT_THZTREE: case MT_THZTREE:
{ // Spawn the branches { // Spawn the branches
angle_t mobjangle = FixedAngle((mthing->angle % 113) << FRACBITS); angle_t mobjangle = FixedAngle((mthing->angle % 113) << FRACBITS);
P_InitAngle(P_SpawnMobjFromMobj(mobj, FRACUNIT, 0, 0, MT_THZTREEBRANCH), mobjangle + ANGLE_22h); P_SpawnMobjFromMobj(mobj, FRACUNIT, 0, 0, MT_THZTREEBRANCH)->angle = mobjangle + ANGLE_22h;
P_InitAngle(P_SpawnMobjFromMobj(mobj, 0, FRACUNIT, 0, MT_THZTREEBRANCH), mobjangle + ANGLE_157h); P_SpawnMobjFromMobj(mobj, 0, FRACUNIT, 0, MT_THZTREEBRANCH)->angle = mobjangle + ANGLE_157h;
P_InitAngle(P_SpawnMobjFromMobj(mobj, -FRACUNIT, 0, 0, MT_THZTREEBRANCH), mobjangle + ANGLE_270); P_SpawnMobjFromMobj(mobj, -FRACUNIT, 0, 0, MT_THZTREEBRANCH)->angle = mobjangle + ANGLE_270;
} }
break; break;
case MT_CEZPOLE1: case MT_CEZPOLE1:
case MT_CEZPOLE2: case MT_CEZPOLE2:
{ // Spawn the banner { // Spawn the banner
angle_t mobjangle = FixedAngle(mthing->angle << FRACBITS); angle_t mobjangle = FixedAngle(mthing->angle << FRACBITS);
P_InitAngle(P_SpawnMobjFromMobj(mobj, P_SpawnMobjFromMobj(mobj,
P_ReturnThrustX(mobj, mobjangle, 4 << FRACBITS), P_ReturnThrustX(mobj, mobjangle, 4 << FRACBITS),
P_ReturnThrustY(mobj, mobjangle, 4 << FRACBITS), P_ReturnThrustY(mobj, mobjangle, 4 << FRACBITS),
0, ((mobj->type == MT_CEZPOLE1) ? MT_CEZBANNER1 : MT_CEZBANNER2)), mobjangle + ANGLE_90); 0, ((mobj->type == MT_CEZPOLE1) ? MT_CEZBANNER1 : MT_CEZBANNER2))->angle = mobjangle + ANGLE_90;
} }
break; break;
case MT_HHZTREE_TOP: case MT_HHZTREE_TOP:
@ -12268,7 +12268,7 @@ static boolean P_SetupSpawnedMapThing(mapthing_t *mthing, mobj_t *mobj, boolean
mobj_t* leaf; mobj_t* leaf;
#define doleaf(x, y) \ #define doleaf(x, y) \
leaf = P_SpawnMobjFromMobj(mobj, x, y, 0, MT_HHZTREE_PART);\ leaf = P_SpawnMobjFromMobj(mobj, x, y, 0, MT_HHZTREE_PART);\
P_InitAngle(leaf, mobjangle);\ leaf->angle = mobjangle;\
P_SetMobjState(leaf, leaf->info->seestate);\ P_SetMobjState(leaf, leaf->info->seestate);\
mobjangle += ANGLE_90 mobjangle += ANGLE_90
doleaf(FRACUNIT, 0); doleaf(FRACUNIT, 0);
@ -12292,7 +12292,7 @@ static boolean P_SetupSpawnedMapThing(mapthing_t *mthing, mobj_t *mobj, boolean
fixed_t xoffs = FINECOSINE(fa); fixed_t xoffs = FINECOSINE(fa);
fixed_t yoffs = FINESINE(fa); fixed_t yoffs = FINESINE(fa);
mobj_t* leaf = P_SpawnMobjFromMobj(mobj, xoffs, yoffs, 0, MT_BIGFERNLEAF); mobj_t* leaf = P_SpawnMobjFromMobj(mobj, xoffs, yoffs, 0, MT_BIGFERNLEAF);
P_InitAngle(leaf, angle); leaf->angle = angle;
angle += ANGLE_45; angle += ANGLE_45;
} }
break; break;
@ -12402,7 +12402,7 @@ static boolean P_SetupSpawnedMapThing(mapthing_t *mthing, mobj_t *mobj, boolean
mobj->x - P_ReturnThrustX(mobj, mobjangle, baseradius), mobj->x - P_ReturnThrustX(mobj, mobjangle, baseradius),
mobj->y - P_ReturnThrustY(mobj, mobjangle, baseradius), mobj->y - P_ReturnThrustY(mobj, mobjangle, baseradius),
mobj->z, MT_WALLSPIKEBASE); mobj->z, MT_WALLSPIKEBASE);
P_InitAngle(base, mobjangle + ANGLE_90); base->angle = mobjangle + ANGLE_90;
base->destscale = mobj->destscale; base->destscale = mobj->destscale;
P_SetScale(base, mobj->scale); P_SetScale(base, mobj->scale);
P_SetTarget(&base->target, mobj); P_SetTarget(&base->target, mobj);
@ -12608,7 +12608,7 @@ static boolean P_SetupSpawnedMapThing(mapthing_t *mthing, mobj_t *mobj, boolean
leaf = P_SpawnMobj(mobj->x + FINECOSINE((mobj->angle>>ANGLETOFINESHIFT) & FINEMASK), leaf = P_SpawnMobj(mobj->x + FINECOSINE((mobj->angle>>ANGLETOFINESHIFT) & FINEMASK),
mobj->y + FINESINE((mobj->angle>>ANGLETOFINESHIFT) & FINEMASK), top, MT_AAZTREE_LEAF); mobj->y + FINESINE((mobj->angle>>ANGLETOFINESHIFT) & FINEMASK), top, MT_AAZTREE_LEAF);
P_InitAngle(leaf, mobj->angle); leaf->angle = mobj->angle;
// Small coconut for each leaf // Small coconut for each leaf
P_SpawnMobj(mobj->x + (32 * FINECOSINE((mobj->angle>>ANGLETOFINESHIFT) & FINEMASK)), P_SpawnMobj(mobj->x + (32 * FINECOSINE((mobj->angle>>ANGLETOFINESHIFT) & FINEMASK)),
@ -12826,7 +12826,7 @@ static mobj_t *P_SpawnMobjFromMapThing(mapthing_t *mthing, fixed_t x, fixed_t y,
if (doangle) if (doangle)
{ {
P_InitAngle(mobj, FixedAngle(mthing->angle << FRACBITS)); mobj->angle = FixedAngle(mthing->angle << FRACBITS);
} }
if ((mobj->flags & MF_SPRING) if ((mobj->flags & MF_SPRING)
@ -12839,8 +12839,8 @@ static mobj_t *P_SpawnMobjFromMapThing(mapthing_t *mthing, fixed_t x, fixed_t y,
mobj->spryoff = FixedMul(mobj->radius, FINESINE(a >> ANGLETOFINESHIFT)); mobj->spryoff = FixedMul(mobj->radius, FINESINE(a >> ANGLETOFINESHIFT));
} }
P_InitPitch(mobj, FixedAngle(mthing->pitch << FRACBITS)); mobj->pitch = FixedAngle(mthing->pitch << FRACBITS);
P_InitRoll(mobj, FixedAngle(mthing->roll << FRACBITS)); mobj->roll = FixedAngle(mthing->roll << FRACBITS);
mthing->mobj = mobj; mthing->mobj = mobj;
@ -13247,7 +13247,7 @@ mobj_t *P_SpawnXYZMissile(mobj_t *source, mobj_t *dest, mobjtype_t type,
P_SetTarget(&th->target, source); // where it came from P_SetTarget(&th->target, source); // where it came from
an = R_PointToAngle2(x, y, dest->x, dest->y); an = R_PointToAngle2(x, y, dest->x, dest->y);
P_InitAngle(th, an); th->angle = an;
an >>= ANGLETOFINESHIFT; an >>= ANGLETOFINESHIFT;
th->momx = FixedMul(speed, FINECOSINE(an)); th->momx = FixedMul(speed, FINECOSINE(an));
th->momy = FixedMul(speed, FINESINE(an)); th->momy = FixedMul(speed, FINESINE(an));
@ -13309,7 +13309,7 @@ mobj_t *P_SpawnAlteredDirectionMissile(mobj_t *source, mobjtype_t type, fixed_t
P_SetTarget(&th->target, source->target); // where it came from P_SetTarget(&th->target, source->target); // where it came from
an = R_PointToAngle2(0, 0, source->momx, source->momy) + (ANG1*shiftingAngle); an = R_PointToAngle2(0, 0, source->momx, source->momy) + (ANG1*shiftingAngle);
P_InitAngle(th, an); th->angle = an;
an >>= ANGLETOFINESHIFT; an >>= ANGLETOFINESHIFT;
th->momx = FixedMul(speed, FINECOSINE(an)); th->momx = FixedMul(speed, FINECOSINE(an));
th->momy = FixedMul(speed, FINESINE(an)); th->momy = FixedMul(speed, FINESINE(an));
@ -13374,7 +13374,7 @@ mobj_t *P_SpawnPointMissile(mobj_t *source, fixed_t xa, fixed_t ya, fixed_t za,
P_SetTarget(&th->target, source); // where it came from P_SetTarget(&th->target, source); // where it came from
an = R_PointToAngle2(x, y, xa, ya); an = R_PointToAngle2(x, y, xa, ya);
P_InitAngle(th, an); th->angle = an;
an >>= ANGLETOFINESHIFT; an >>= ANGLETOFINESHIFT;
th->momx = FixedMul(speed, FINECOSINE(an)); th->momx = FixedMul(speed, FINECOSINE(an));
th->momy = FixedMul(speed, FINESINE(an)); th->momy = FixedMul(speed, FINESINE(an));
@ -13453,7 +13453,7 @@ mobj_t *P_SpawnMissile(mobj_t *source, mobj_t *dest, mobjtype_t type)
else else
an = R_PointToAngle2(source->x, source->y, dest->x, dest->y); an = R_PointToAngle2(source->x, source->y, dest->x, dest->y);
P_InitAngle(th, an); th->angle = an;
an >>= ANGLETOFINESHIFT; an >>= ANGLETOFINESHIFT;
th->momx = FixedMul(speed, FINECOSINE(an)); th->momx = FixedMul(speed, FINECOSINE(an));
th->momy = FixedMul(speed, FINESINE(an)); th->momy = FixedMul(speed, FINESINE(an));
@ -13541,7 +13541,7 @@ mobj_t *P_SPMAngle(mobj_t *source, mobjtype_t type, angle_t angle, UINT8 allowai
speed = th->info->speed; speed = th->info->speed;
P_InitAngle(th, an); th->angle = an;
th->momx = FixedMul(speed, FINECOSINE(an>>ANGLETOFINESHIFT)); th->momx = FixedMul(speed, FINECOSINE(an>>ANGLETOFINESHIFT));
th->momy = FixedMul(speed, FINESINE(an>>ANGLETOFINESHIFT)); th->momy = FixedMul(speed, FINESINE(an>>ANGLETOFINESHIFT));

View file

@ -3711,7 +3711,7 @@ static void P_ProcessLineSpecial(line_t *line, mobj_t *mo, sector_t *callsec)
if (mobj) if (mobj)
{ {
if (line->flags & ML_EFFECT1) if (line->flags & ML_EFFECT1)
P_InitAngle(mobj, R_PointToAngle2(line->v1->x, line->v1->y, line->v2->x, line->v2->y)); mobj->angle = R_PointToAngle2(line->v1->x, line->v1->y, line->v2->x, line->v2->y);
CONS_Debug(DBG_GAMELOGIC, "Linedef Type %d - Spawn Object: %d spawned at (%d, %d, %d)\n", line->special, mobj->type, mobj->x>>FRACBITS, mobj->y>>FRACBITS, mobj->z>>FRACBITS); //TODO: Convert mobj->type to a string somehow. CONS_Debug(DBG_GAMELOGIC, "Linedef Type %d - Spawn Object: %d spawned at (%d, %d, %d)\n", line->special, mobj->type, mobj->x>>FRACBITS, mobj->y>>FRACBITS, mobj->z>>FRACBITS); //TODO: Convert mobj->type to a string somehow.
} }
else else
@ -4005,7 +4005,7 @@ void P_SetupSignExit(player_t *player)
if (player->mo && !P_MobjWasRemoved(player->mo)) if (player->mo && !P_MobjWasRemoved(player->mo))
{ {
thing = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->floorz, MT_SIGN); thing = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->floorz, MT_SIGN);
P_InitAngle(thing, player->mo->angle); thing->angle = player->mo->angle;
P_SetupSignObject(thing, player->mo, true); // Use :youfuckedup: sign face P_SetupSignObject(thing, player->mo, true); // Use :youfuckedup: sign face
} }
} }

View file

@ -97,7 +97,8 @@ void P_MixUp(mobj_t *thing, fixed_t x, fixed_t y, fixed_t z, angle_t angle,
P_FlashPal(thing->player, PAL_MIXUP, 10); P_FlashPal(thing->player, PAL_MIXUP, 10);
} }
P_InitAngle(thing, angle); thing->old_angle += (angle-thing->angle);
thing->angle = angle;
thing->momx = thing->momy = thing->momz = 0; thing->momx = thing->momy = thing->momz = 0;

View file

@ -384,7 +384,7 @@ void P_GiveFinishFlags(player_t *player)
fixed_t xoffs = FINECOSINE(fa); fixed_t xoffs = FINECOSINE(fa);
fixed_t yoffs = FINESINE(fa); fixed_t yoffs = FINESINE(fa);
mobj_t* flag = P_SpawnMobjFromMobj(player->mo, xoffs, yoffs, 0, MT_FINISHFLAG); mobj_t* flag = P_SpawnMobjFromMobj(player->mo, xoffs, yoffs, 0, MT_FINISHFLAG);
P_InitAngle(flag, angle); flag->angle = angle;
angle += FixedAngle(120*FRACUNIT); angle += FixedAngle(120*FRACUNIT);
P_SetTarget(&flag->target, player->mo); P_SetTarget(&flag->target, player->mo);
@ -2289,7 +2289,7 @@ void P_MovePlayer(player_t *player)
// underlay // underlay
water = P_SpawnMobj(x1, y1, water = P_SpawnMobj(x1, y1,
((player->mo->eflags & MFE_VERTICALFLIP) ? player->mo->waterbottom - FixedMul(mobjinfo[MT_WATERTRAILUNDERLAY].height, player->mo->scale) : player->mo->watertop), MT_WATERTRAILUNDERLAY); ((player->mo->eflags & MFE_VERTICALFLIP) ? player->mo->waterbottom - FixedMul(mobjinfo[MT_WATERTRAILUNDERLAY].height, player->mo->scale) : player->mo->watertop), MT_WATERTRAILUNDERLAY);
P_InitAngle(water, forwardangle - ANGLE_180 - ANGLE_22h); water->angle = forwardangle - ANGLE_180 - ANGLE_22h;
water->destscale = trailScale; water->destscale = trailScale;
water->momx = player->mo->momx; water->momx = player->mo->momx;
water->momy = player->mo->momy; water->momy = player->mo->momy;
@ -2300,7 +2300,7 @@ void P_MovePlayer(player_t *player)
// overlay // overlay
water = P_SpawnMobj(x1, y1, water = P_SpawnMobj(x1, y1,
((player->mo->eflags & MFE_VERTICALFLIP) ? player->mo->waterbottom - FixedMul(mobjinfo[MT_WATERTRAIL].height, player->mo->scale) : player->mo->watertop), MT_WATERTRAIL); ((player->mo->eflags & MFE_VERTICALFLIP) ? player->mo->waterbottom - FixedMul(mobjinfo[MT_WATERTRAIL].height, player->mo->scale) : player->mo->watertop), MT_WATERTRAIL);
P_InitAngle(water, forwardangle - ANGLE_180 - ANGLE_22h); water->angle = forwardangle - ANGLE_180 - ANGLE_22h;
water->destscale = trailScale; water->destscale = trailScale;
water->momx = player->mo->momx; water->momx = player->mo->momx;
water->momy = player->mo->momy; water->momy = player->mo->momy;
@ -2312,7 +2312,7 @@ void P_MovePlayer(player_t *player)
// Underlay // Underlay
water = P_SpawnMobj(x2, y2, water = P_SpawnMobj(x2, y2,
((player->mo->eflags & MFE_VERTICALFLIP) ? player->mo->waterbottom - FixedMul(mobjinfo[MT_WATERTRAILUNDERLAY].height, player->mo->scale) : player->mo->watertop), MT_WATERTRAILUNDERLAY); ((player->mo->eflags & MFE_VERTICALFLIP) ? player->mo->waterbottom - FixedMul(mobjinfo[MT_WATERTRAILUNDERLAY].height, player->mo->scale) : player->mo->watertop), MT_WATERTRAILUNDERLAY);
P_InitAngle(water, forwardangle - ANGLE_180 + ANGLE_22h); water->angle = forwardangle - ANGLE_180 + ANGLE_22h;
water->destscale = trailScale; water->destscale = trailScale;
water->momx = player->mo->momx; water->momx = player->mo->momx;
water->momy = player->mo->momy; water->momy = player->mo->momy;
@ -2323,7 +2323,7 @@ void P_MovePlayer(player_t *player)
// Overlay // Overlay
water = P_SpawnMobj(x2, y2, water = P_SpawnMobj(x2, y2,
((player->mo->eflags & MFE_VERTICALFLIP) ? player->mo->waterbottom - FixedMul(mobjinfo[MT_WATERTRAIL].height, player->mo->scale) : player->mo->watertop), MT_WATERTRAIL); ((player->mo->eflags & MFE_VERTICALFLIP) ? player->mo->waterbottom - FixedMul(mobjinfo[MT_WATERTRAIL].height, player->mo->scale) : player->mo->watertop), MT_WATERTRAIL);
P_InitAngle(water, forwardangle - ANGLE_180 + ANGLE_22h); water->angle = forwardangle - ANGLE_180 + ANGLE_22h;
water->destscale = trailScale; water->destscale = trailScale;
water->momx = player->mo->momx; water->momx = player->mo->momx;
water->momy = player->mo->momy; water->momy = player->mo->momy;