From 2eb8e6be49437971b9b92b24b44e4fec577ff260 Mon Sep 17 00:00:00 2001 From: toaster Date: Sat, 30 Nov 2019 14:37:21 +0000 Subject: [PATCH 1/2] ...why is Metal overwriting his movecount to spawn explosions? --- src/p_mobj.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/p_mobj.c b/src/p_mobj.c index 2bd3950a9..d1ff7ae36 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -6001,7 +6001,7 @@ static void P_Boss9Thinker(mobj_t *mobj) if (mobj->health <= mobj->info->damage && mobj->fuse && !(mobj->fuse%TICRATE)) { - var1 = 1; + var1 = 0; var2 = 0; A_BossScream(mobj); } From 9d442ae6ea4e045c39866816024dec7304391a69 Mon Sep 17 00:00:00 2001 From: toaster Date: Sat, 30 Nov 2019 14:56:43 +0000 Subject: [PATCH 2/2] Wait, no, I'm an idiot. --- src/p_enemy.c | 8 ++++---- src/p_mobj.c | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/p_enemy.c b/src/p_enemy.c index 9942862e9..1e9a2b0db 100644 --- a/src/p_enemy.c +++ b/src/p_enemy.c @@ -3457,8 +3457,8 @@ void A_BossZoom(mobj_t *actor) // Description: Spawns explosions and plays appropriate sounds around the defeated boss. // // var1: -// 0 - Use movecount to spawn explosions evenly -// 1 - Use P_Random to spawn explosions at complete random +// & 1 - Use P_Random to spawn explosions at complete random +// & 2 - Use entire vertical range of object to spawn // var2 = Object to spawn. Default is MT_SONIC3KBOSSEXPLODE. // void A_BossScream(mobj_t *actor) @@ -3475,13 +3475,13 @@ void A_BossScream(mobj_t *actor) return; #endif if (locvar1 & 1) + fa = (FixedAngle(P_RandomKey(360)*FRACUNIT)>>ANGLETOFINESHIFT) & FINEMASK; + else { actor->movecount += 4*16; actor->movecount %= 360; fa = (FixedAngle(actor->movecount*FRACUNIT)>>ANGLETOFINESHIFT) & FINEMASK; } - else - fa = (FixedAngle(P_RandomKey(360)*FRACUNIT)>>ANGLETOFINESHIFT) & FINEMASK; x = actor->x + FixedMul(FINECOSINE(fa),actor->radius); y = actor->y + FixedMul(FINESINE(fa),actor->radius); diff --git a/src/p_mobj.c b/src/p_mobj.c index d1ff7ae36..2bd3950a9 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -6001,7 +6001,7 @@ static void P_Boss9Thinker(mobj_t *mobj) if (mobj->health <= mobj->info->damage && mobj->fuse && !(mobj->fuse%TICRATE)) { - var1 = 0; + var1 = 1; var2 = 0; A_BossScream(mobj); }