diff --git a/source/games/duke/src/actors.cpp b/source/games/duke/src/actors.cpp index dfe418a38..fefaf5607 100644 --- a/source/games/duke/src/actors.cpp +++ b/source/games/duke/src/actors.cpp @@ -1474,7 +1474,7 @@ bool queball(DDukeActor *actor, int pocket, int queball, int stripeball) if (actor->spr.picnum == stripeball) { actor->spr.cstat = CSTAT_SPRITE_BLOCK_ALL; - actor->spr.cstat |= (CSTAT_SPRITE_XFLIP | CSTAT_SPRITE_YFLIP) & ESpriteFlags::FromInt(int(actor->vel.X / 16.)); // special hack edition... + actor->spr.cstat |= (CSTAT_SPRITE_XFLIP | CSTAT_SPRITE_YFLIP) & ESpriteFlags::FromInt(int(actor->vel.X * 16.)); // special hack edition... } } else @@ -1509,7 +1509,7 @@ bool queball(DDukeActor *actor, int pocket, int queball, int stripeball) { if (actor->spr.pal == 12) actor->vel.X = 10.25; - else actor->vel.Z = 8.75; + else actor->vel.X = 8.75; actor->spr.angle = ps[p].angle.ang; ps[p].toggle_key_flag = 2; } diff --git a/source/games/duke/src/sectors_d.cpp b/source/games/duke/src/sectors_d.cpp index 21863cc99..6aea81870 100644 --- a/source/games/duke/src/sectors_d.cpp +++ b/source/games/duke/src/sectors_d.cpp @@ -1037,8 +1037,8 @@ void checkhitsprite_d(DDukeActor* targ, DDukeActor* proj) case STRIPEBALL: if (proj->spr.picnum == QUEBALL || proj->spr.picnum == STRIPEBALL) { - proj->vel.X *= 0.75; - proj->spr.angle -= targ->spr.angle * 2 + DAngle180; + proj->vel.X = targ->vel.X * 0.75; + proj->spr.angle -= targ->spr.angle.Normalized180() * 2 + DAngle180; targ->spr.angle = (targ->spr.pos.XY() - proj->spr.pos.XY()).Angle() - DAngle90; if (S_CheckSoundPlaying(POOLBALLHIT) < 2) S_PlayActorSound(POOLBALLHIT, targ); diff --git a/source/games/duke/src/sectors_r.cpp b/source/games/duke/src/sectors_r.cpp index 25992256f..b2dbac8b4 100644 --- a/source/games/duke/src/sectors_r.cpp +++ b/source/games/duke/src/sectors_r.cpp @@ -2072,8 +2072,8 @@ void checkhitsprite_r(DDukeActor* targ, DDukeActor* proj) case HENSTAND + 1: if (proj->spr.picnum == QUEBALL || proj->spr.picnum == STRIPEBALL) { - proj->vel.X *= 0.75; - proj->spr.angle -= targ->spr.angle * 2 + DAngle180; + proj->vel.X = targ->vel.X * 0.75; + proj->spr.angle -= targ->spr.angle.Normalized180() * 2 + DAngle180; targ->spr.angle = (targ->spr.pos.XY() - proj->spr.pos.XY()).Angle() - DAngle90; if (S_CheckSoundPlaying(POOLBALLHIT) < 2) S_PlayActorSound(POOLBALLHIT, targ);