- fixed issues with Duke's poolballs.

This commit is contained in:
Christoph Oelckers 2022-10-25 21:55:23 +02:00
parent 09df4da241
commit c5523a99ee
3 changed files with 6 additions and 6 deletions

View file

@ -1474,7 +1474,7 @@ bool queball(DDukeActor *actor, int pocket, int queball, int stripeball)
if (actor->spr.picnum == stripeball) if (actor->spr.picnum == stripeball)
{ {
actor->spr.cstat = CSTAT_SPRITE_BLOCK_ALL; 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 else
@ -1509,7 +1509,7 @@ bool queball(DDukeActor *actor, int pocket, int queball, int stripeball)
{ {
if (actor->spr.pal == 12) if (actor->spr.pal == 12)
actor->vel.X = 10.25; actor->vel.X = 10.25;
else actor->vel.Z = 8.75; else actor->vel.X = 8.75;
actor->spr.angle = ps[p].angle.ang; actor->spr.angle = ps[p].angle.ang;
ps[p].toggle_key_flag = 2; ps[p].toggle_key_flag = 2;
} }

View file

@ -1037,8 +1037,8 @@ void checkhitsprite_d(DDukeActor* targ, DDukeActor* proj)
case STRIPEBALL: case STRIPEBALL:
if (proj->spr.picnum == QUEBALL || proj->spr.picnum == STRIPEBALL) if (proj->spr.picnum == QUEBALL || proj->spr.picnum == STRIPEBALL)
{ {
proj->vel.X *= 0.75; proj->vel.X = targ->vel.X * 0.75;
proj->spr.angle -= targ->spr.angle * 2 + DAngle180; proj->spr.angle -= targ->spr.angle.Normalized180() * 2 + DAngle180;
targ->spr.angle = (targ->spr.pos.XY() - proj->spr.pos.XY()).Angle() - DAngle90; targ->spr.angle = (targ->spr.pos.XY() - proj->spr.pos.XY()).Angle() - DAngle90;
if (S_CheckSoundPlaying(POOLBALLHIT) < 2) if (S_CheckSoundPlaying(POOLBALLHIT) < 2)
S_PlayActorSound(POOLBALLHIT, targ); S_PlayActorSound(POOLBALLHIT, targ);

View file

@ -2072,8 +2072,8 @@ void checkhitsprite_r(DDukeActor* targ, DDukeActor* proj)
case HENSTAND + 1: case HENSTAND + 1:
if (proj->spr.picnum == QUEBALL || proj->spr.picnum == STRIPEBALL) if (proj->spr.picnum == QUEBALL || proj->spr.picnum == STRIPEBALL)
{ {
proj->vel.X *= 0.75; proj->vel.X = targ->vel.X * 0.75;
proj->spr.angle -= targ->spr.angle * 2 + DAngle180; proj->spr.angle -= targ->spr.angle.Normalized180() * 2 + DAngle180;
targ->spr.angle = (targ->spr.pos.XY() - proj->spr.pos.XY()).Angle() - DAngle90; targ->spr.angle = (targ->spr.pos.XY() - proj->spr.pos.XY()).Angle() - DAngle90;
if (S_CheckSoundPlaying(POOLBALLHIT) < 2) if (S_CheckSoundPlaying(POOLBALLHIT) < 2)
S_PlayActorSound(POOLBALLHIT, targ); S_PlayActorSound(POOLBALLHIT, targ);