diff --git a/source/games/duke/src/actors.cpp b/source/games/duke/src/actors.cpp index 4cb5a9fd1..6af346123 100644 --- a/source/games/duke/src/actors.cpp +++ b/source/games/duke/src/actors.cpp @@ -2013,7 +2013,7 @@ void forcesphereexplode(DDukeActor *actor) } actor->spr.pos = Owner->spr.pos;; - actor->add_int_ang(Owner->temp_data[0]); + actor->spr.angle += mapangle(Owner->temp_data[0]); if (l > 64) l = 64; else if (l < 1) l = 1; @@ -4607,7 +4607,7 @@ void handle_se130(DDukeActor *actor, int countmax, int EXPLOSION2) { k->spr.xrepeat = k->spr.yrepeat = 2 + (krand() & 7); k->spr.pos.Z = sc->floorz + krandf(x); - k->add_int_ang(256 - (krand() % 511)); + k->spr.angle += DAngle45 - randomAngle(90); k->vel.X = krandf(8); ssp(k, CLIPMASK0); } diff --git a/source/games/duke/src/actors_r.cpp b/source/games/duke/src/actors_r.cpp index d9aa03578..58b4a1f08 100644 --- a/source/games/duke/src/actors_r.cpp +++ b/source/games/duke/src/actors_r.cpp @@ -401,7 +401,7 @@ int movesprite_ex_r(DDukeActor* actor, const DVector3& change, unsigned int clip if (dasectp == nullptr) dasectp = §or[0]; return result.setSector(dasectp); } - if ((result.type == kHitWall || result.type == kHitSprite) && (actor->cgg == 0)) actor->add_int_ang(768); + if ((result.type == kHitWall || result.type == kHitSprite) && (actor->cgg == 0)) actor->spr.angle += DAngle45 + DAngle90; } else { diff --git a/source/games/duke/src/ccmds.cpp b/source/games/duke/src/ccmds.cpp index 4d0ed129e..8d7827bdb 100644 --- a/source/games/duke/src/ccmds.cpp +++ b/source/games/duke/src/ccmds.cpp @@ -46,7 +46,7 @@ static int ccmd_spawn(CCmdFuncPtr parm) ESpriteFlags cstat = 0; int picnum = 0; unsigned int pal = 0; - int ang = 0; + DAngle ang = nullAngle; int set = 0; #if 0 // fixme - route through the network and this limitation becomes irrelevant @@ -64,7 +64,7 @@ static int ccmd_spawn(CCmdFuncPtr parm) set |= 8; [[fallthrough]]; case 4: // ang - ang = atol(parm->parms[3]) & 2047; set |= 4; + ang = DAngle::fromDeg(atol(parm->parms[3])); set |= 4; [[fallthrough]]; case 3: // cstat cstat = ESpriteFlags::FromInt(atol(parm->parms[2])); set |= 2; diff --git a/source/games/duke/src/sectors_d.cpp b/source/games/duke/src/sectors_d.cpp index ca70ab55a..d215432b4 100644 --- a/source/games/duke/src/sectors_d.cpp +++ b/source/games/duke/src/sectors_d.cpp @@ -679,7 +679,7 @@ void checkhitwall_d(DDukeActor* spr, walltype* wal, const DVector3& pos, int atw if (spawned) { spawned->spr.cstat |= CSTAT_SPRITE_TRANSLUCENT | CSTAT_SPRITE_ALIGNMENT_WALL | CSTAT_SPRITE_YCENTER; - spawned->set_int_ang(getangle(-wal->delta()) - 512); + spawned->spr.angle = VecToAngle(-wal->delta()) - DAngle90; S_PlayActorSound(SOMETHINGHITFORCE, spawned); } @@ -1194,7 +1194,7 @@ void checkhitsprite_d(DDukeActor* targ, DDukeActor* proj) for (j = 0; j < 48; j++) { fi.shoot(targ, BLOODSPLAT1); - targ->add_int_ang(333); + targ->spr.angle += DAngle1 * 58.5; // Was 333, which really makes no sense. } S_PlayActorSound(GLASS_HEAVYBREAK, targ); S_PlayActorSound(SQUISHED, targ); @@ -1381,7 +1381,7 @@ void checkhitsprite_d(DDukeActor* targ, DDukeActor* proj) spawned->spr.pos.Z += 4; spawned->vel.X = 1; spawned->spr.xrepeat = spawned->spr.yrepeat = 24; - spawned->add_int_ang(32 - (krand() & 63)); + spawned->spr.angle = DAngle22_5 / 4 - randomAngle(22.5 / 2); } }