From cdc098c22b7c34d0d4e138ec964d82c0f92243d9 Mon Sep 17 00:00:00 2001 From: James R Date: Mon, 11 Mar 2024 05:26:33 -0700 Subject: [PATCH 1/4] Battle: Orbinaut/Jawz Shields award points on contact with a player --- src/objects/orbinaut.c | 2 +- src/p_local.h | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/objects/orbinaut.c b/src/objects/orbinaut.c index 22632d33e..9fb5b0818 100644 --- a/src/objects/orbinaut.c +++ b/src/objects/orbinaut.c @@ -220,7 +220,7 @@ boolean Obj_OrbinautJawzCollide(mobj_t *t1, mobj_t *t2) // ^ remove all of P_DamageMobj and start over P_PlayRinglossSound(t2); P_PlayerRingBurst(t2->player, 5); - P_DamageMobj(t2, t1, t1->target, 1, DMG_WOMBO | DMG_STUMBLE); + P_DamageMobj(t2, t1, t1->target, 1, DMG_WOMBO | DMG_WHUMBLE); } else { diff --git a/src/p_local.h b/src/p_local.h index 421bf35fc..ecb677b65 100644 --- a/src/p_local.h +++ b/src/p_local.h @@ -524,8 +524,8 @@ struct BasicFF_t #define DMG_STING 0x04 #define DMG_KARMA 0x05 // Karma Bomb explosion -- works like DMG_EXPLODE, but steals half of their bumpers & deletes the rest #define DMG_VOLTAGE 0x06 -#define DMG_STUMBLE 0x07 -#define DMG_WHUMBLE 0x08 +#define DMG_STUMBLE 0x07 // Does not award points in Battle +#define DMG_WHUMBLE 0x08 // <-- But this one DOES! //// Death types - cannot be combined with damage types #define DMG_INSTAKILL 0x80 #define DMG_DEATHPIT 0x81 From 22f122066dea727e190028547540751046ad90ff Mon Sep 17 00:00:00 2001 From: James R Date: Mon, 11 Mar 2024 05:47:03 -0700 Subject: [PATCH 2/4] Super Flicky: remain nerfed for 2 seconds after owner recovers from damage state --- src/objects/super-flicky.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/objects/super-flicky.cpp b/src/objects/super-flicky.cpp index 15181e847..b760b551b 100644 --- a/src/objects/super-flicky.cpp +++ b/src/objects/super-flicky.cpp @@ -70,6 +70,7 @@ constexpr tic_t kDelay = 8; constexpr tic_t kDamageCooldown = TICRATE; constexpr tic_t kStunTime = 10*TICRATE; constexpr tic_t kBlockTime = 5*TICRATE; +constexpr tic_t kOwnerStunnedCooldown = 2*TICRATE; constexpr int kRiseTime = 1*TICRATE; constexpr int kRiseSpeed = 4; @@ -630,7 +631,7 @@ struct Flicky : mobj_t { if (owner_in_pain()) { - delay(1); + delay(kOwnerStunnedCooldown); } } From a058d558faf83489ad76e062d2b688c4f76d1d89 Mon Sep 17 00:00:00 2001 From: James R Date: Mon, 11 Mar 2024 05:50:49 -0700 Subject: [PATCH 3/4] Super Flicky: guard block nerfs for 10 seconds --- src/objects/super-flicky.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/objects/super-flicky.cpp b/src/objects/super-flicky.cpp index b760b551b..54cccb948 100644 --- a/src/objects/super-flicky.cpp +++ b/src/objects/super-flicky.cpp @@ -69,7 +69,7 @@ constexpr fixed_t kRebound = 8*FRACUNIT/9; constexpr tic_t kDelay = 8; constexpr tic_t kDamageCooldown = TICRATE; constexpr tic_t kStunTime = 10*TICRATE; -constexpr tic_t kBlockTime = 5*TICRATE; +constexpr tic_t kBlockTime = 10*TICRATE; constexpr tic_t kOwnerStunnedCooldown = 2*TICRATE; constexpr int kRiseTime = 1*TICRATE; From 6d1bf9b8cf19495574dbb489c099fcf63bb49b5c Mon Sep 17 00:00:00 2001 From: James R Date: Mon, 11 Mar 2024 06:13:39 -0700 Subject: [PATCH 4/4] Super Flicky: put transform sound on 2 second cooldown --- src/objects/super-flicky.cpp | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/objects/super-flicky.cpp b/src/objects/super-flicky.cpp index 54cccb948..f97654dd6 100644 --- a/src/objects/super-flicky.cpp +++ b/src/objects/super-flicky.cpp @@ -33,6 +33,7 @@ #define flicky_delay(o) ((o)->movecount) #define flicky_mode(o) ((o)->extravalue1) #define flicky_fly(o) ((o)->extravalue2) +#define flicky_soundtimer(o) ((o)->cusval) #define controller_source(o) ((o)->target) #define controller_chasing(o) ((o)->tracer) @@ -249,6 +250,9 @@ struct Flicky : mobj_t Fly fly() const { return static_cast(flicky_fly(this)); } void fly(Fly n) { flicky_fly(this) = static_cast(n); } + tic_t soundtimer() const { return flicky_soundtimer(this); } + void soundtimer(tic_t n) { flicky_soundtimer(this) = n; } + mobj_t* source() const { return controller()->source(); } static void spawn(Controller* controller, int phase) @@ -304,6 +308,11 @@ struct Flicky : mobj_t void refocus() { + if (soundtimer() > 0) + { + soundtimer(soundtimer() - 1); + } + if (controller()->ending()) { if (controller()->time_remaining() == kRiseTime) @@ -613,7 +622,15 @@ struct Flicky : mobj_t light_up(true); flags = info->flags; - S_StartSound(this, sfx_s3k9f); + // Put this sound on a cooldown specifically because + // it plays rapidly "at the edge of transform range". + // I don't know why that happens so just never play + // the sound close together. + if (!soundtimer()) + { + S_StartSound(this, sfx_s3k9f); + soundtimer(2*TICRATE); + } } void try_nerf()