From 15737d7b8abe3e037325aa49f209c1d680204433 Mon Sep 17 00:00:00 2001 From: James R Date: Tue, 22 Jul 2025 20:51:44 -0700 Subject: [PATCH 1/4] Toxomister: clouds spawn with 15s fuse --- src/objects/toxomister.cpp | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/objects/toxomister.cpp b/src/objects/toxomister.cpp index 1741cf7f0..2a300deef 100644 --- a/src/objects/toxomister.cpp +++ b/src/objects/toxomister.cpp @@ -324,18 +324,22 @@ struct Cloud : Mobj } else { - if (!fuse) + if (FixedHypot(momx, momy) > 2 * mapobjectscale) { - fuse = 3*TICRATE; instathrust(angle, 2 * mapobjectscale); } - if (leveltime & 1) + if (fuse > 3*TICRATE) { - renderflags ^= RF_DONTDRAW; + fuse = 3*TICRATE; } } + if (fuse <= 3*TICRATE && (leveltime & 1)) + { + renderflags ^= RF_DONTDRAW; + } + return true; } @@ -396,6 +400,7 @@ void Pole::spawn_clouds_in_orbit() cloud->spriteyoffset(24*FRACUNIT); cloud->hitlag(2 + i * 4); cloud->scale_between(1, cloud->scale(), cloud->scale() / 5); + cloud->fuse = 15*TICRATE; a += a_incr; } From 936b8e7d0cca4135d9cc2d4f9a9a17541916f037 Mon Sep 17 00:00:00 2001 From: James R Date: Tue, 22 Jul 2025 21:18:37 -0700 Subject: [PATCH 2/4] Toxomister: punt passive clouds --- src/objects/toxomister.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/objects/toxomister.cpp b/src/objects/toxomister.cpp index 2a300deef..bda901163 100644 --- a/src/objects/toxomister.cpp +++ b/src/objects/toxomister.cpp @@ -18,6 +18,7 @@ #include "../doomdef.h" #include "../doomtype.h" #include "../g_game.h" +#include "../k_collide.h" #include "../k_hud.h" // transflag #include "../m_easing.h" #include "../m_fixed.h" @@ -348,6 +349,9 @@ struct Cloud : Mobj if (toucher == target()) return false; + if (K_PuntCollide(this, toucher)) + return true; + if (toucher->player) { if (this == toucher->player->toxomisterCloud) // already attached From f9c73a04c2aa7ff9eeb205f31c6649991a56cf66 Mon Sep 17 00:00:00 2001 From: James R Date: Tue, 22 Jul 2025 21:39:15 -0700 Subject: [PATCH 3/4] Toxomister: player can punt cloud attached to themself --- src/objects/toxomister.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/objects/toxomister.cpp b/src/objects/toxomister.cpp index bda901163..e31b01cde 100644 --- a/src/objects/toxomister.cpp +++ b/src/objects/toxomister.cpp @@ -288,6 +288,12 @@ struct Cloud : Mobj return false; } + if (K_PuntCollide(this, follow())) + { + remove(); + return false; + } + move_origin(follow()->pos()); momx = 0; momy = 0; From 07e5f279827b98221ff891e61122230eff422b27 Mon Sep 17 00:00:00 2001 From: James R Date: Tue, 22 Jul 2025 21:47:12 -0700 Subject: [PATCH 4/4] Toxomister: clouds go poof when punted, hitbox radius 70 -> 35 --- src/info.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/info.c b/src/info.c index 3405f0873..86f27594a 100644 --- a/src/info.c +++ b/src/info.c @@ -22826,13 +22826,13 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = S_NULL, // xdeathstate sfx_None, // deathsound 0, // speed - 70*FRACUNIT, // radius + 35*FRACUNIT, // radius 70*FRACUNIT, // height 0, // display offset 0, // mass 0, // damage sfx_None, // activesound - MF_SPECIAL|MF_NOGRAVITY|MF_DONTENCOREMAP, // flags + MF_SPECIAL|MF_NOGRAVITY|MF_DONTENCOREMAP|MF_ELEMENTAL, // flags S_NULL // raisestate }, };