From 125ea52e57b2a281f4cb25c5611d23a7ed8244c7 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sat, 31 Dec 2022 15:21:03 +0100 Subject: [PATCH] - handle special case for activation sounds when player bumps into other actors. --- source/games/duke/src/duke3d.h | 2 +- source/games/duke/src/game.cpp | 6 +++--- source/games/duke/src/player_r.cpp | 7 ++----- .../zscript/games/duke/actors/dukecstuff/greenslime.zs | 2 +- .../static/zscript/games/duke/actors/dukecstuff/recon.zs | 4 ++-- .../static/zscript/games/duke/actors/dukeenemies/boss1.zs | 4 ++-- .../static/zscript/games/duke/actors/dukeenemies/boss2.zs | 2 +- .../static/zscript/games/duke/actors/dukeenemies/boss3.zs | 2 +- .../static/zscript/games/duke/actors/dukeenemies/boss4.zs | 2 +- .../zscript/games/duke/actors/dukeenemies/commander.zs | 2 +- .../static/zscript/games/duke/actors/dukeenemies/drone.zs | 2 +- .../static/zscript/games/duke/actors/dukeenemies/lizman.zs | 4 ++-- .../zscript/games/duke/actors/dukeenemies/liztroop.zs | 4 ++-- .../zscript/games/duke/actors/dukeenemies/octabrain.zs | 2 +- .../static/zscript/games/duke/actors/dukeenemies/pigcop.zs | 4 ++-- .../static/zscript/games/duke/actors/dukeenemies/turret.zs | 2 +- .../zscript/games/duke/actors/redneckenemies/billyray.zs | 7 ++++--- .../zscript/games/duke/actors/redneckenemies/coot.zs | 4 ++-- .../zscript/games/duke/actors/redneckenemies/minion.zs | 2 +- .../static/zscript/games/duke/actors/vacation/beachbabe.zs | 2 +- wadsrc/static/zscript/games/duke/dukeactor.zs | 2 +- 21 files changed, 33 insertions(+), 35 deletions(-) diff --git a/source/games/duke/src/duke3d.h b/source/games/duke/src/duke3d.h index 883626713..e397912ad 100644 --- a/source/games/duke/src/duke3d.h +++ b/source/games/duke/src/duke3d.h @@ -112,7 +112,7 @@ void CallOnRespawn(DDukeActor* actor, int low); bool CallAnimate(DDukeActor* actor, tspritetype* hitter); bool CallShootThis(DDukeActor* clsdef, DDukeActor* actor, int pn, const DVector3& spos, DAngle sang); void CallStaticSetup(DDukeActor* actor); -void CallPlayFTASound(DDukeActor* actor); +void CallPlayFTASound(DDukeActor* actor, int mode = 0); void CallStandingOn(DDukeActor* actor, player_struct* p); void CallRunState(DDukeActor* actor); int CallTriggerSwitch(DDukeActor* actor, player_struct* p); diff --git a/source/games/duke/src/game.cpp b/source/games/duke/src/game.cpp index f71defd4c..69e6f3955 100644 --- a/source/games/duke/src/game.cpp +++ b/source/games/duke/src/game.cpp @@ -623,12 +623,12 @@ bool CallShootThis(DDukeActor* clsdef, DDukeActor* actor, int pn, const DVector3 return rv; } -void CallPlayFTASound(DDukeActor* actor) +void CallPlayFTASound(DDukeActor* actor, int mode) { IFVIRTUALPTR(actor, DDukeActor, PlayFTASound) { - VMValue val = actor; - VMCall(func, &val, 1, nullptr, 0); + VMValue val[] = { actor, mode }; + VMCall(func, val, 2, nullptr, 0); } } diff --git a/source/games/duke/src/player_r.cpp b/source/games/duke/src/player_r.cpp index 20c3283fd..4eeb613b8 100644 --- a/source/games/duke/src/player_r.cpp +++ b/source/games/duke/src/player_r.cpp @@ -2762,11 +2762,8 @@ HORIZONLY: if (clip.actor()->spr.statnum != STAT_ACTOR) { clip.actor()->timetosleep = 0; - if (clip.actor()->spr.picnum == RTILE_BILLYRAY) - S_PlayActorSound(404, clip.actor()); - else - CallPlayFTASound(clip.actor()); - ChangeActorStat(clip.actor(), 1); + CallPlayFTASound(clip.actor(), 1); + ChangeActorStat(clip.actor(), STAT_ACTOR); } } CallOnTouch(clip.actor(), p); diff --git a/wadsrc/static/zscript/games/duke/actors/dukecstuff/greenslime.zs b/wadsrc/static/zscript/games/duke/actors/dukecstuff/greenslime.zs index ade528dcf..215682e11 100644 --- a/wadsrc/static/zscript/games/duke/actors/dukecstuff/greenslime.zs +++ b/wadsrc/static/zscript/games/duke/actors/dukecstuff/greenslime.zs @@ -20,7 +20,7 @@ class DukeGreenSlime : DukeActor } - override void PlayFTASound() + override void PlayFTASound(int mode) { self.PlayActorSound("SLIM_RECOG"); } diff --git a/wadsrc/static/zscript/games/duke/actors/dukecstuff/recon.zs b/wadsrc/static/zscript/games/duke/actors/dukecstuff/recon.zs index 9b21acc9d..7df4729a4 100644 --- a/wadsrc/static/zscript/games/duke/actors/dukecstuff/recon.zs +++ b/wadsrc/static/zscript/games/duke/actors/dukecstuff/recon.zs @@ -222,7 +222,7 @@ class DukeRecon : DukeActor return true; } - override void PlayFTASound() + override void PlayFTASound(int mode) { self.PlayActorSound("RECO_RECOG"); } @@ -264,7 +264,7 @@ class RedneckUFO1 : DukeRecon return true; } - override void PlayFTASound() + override void PlayFTASound(int mode) { } } diff --git a/wadsrc/static/zscript/games/duke/actors/dukeenemies/boss1.zs b/wadsrc/static/zscript/games/duke/actors/dukeenemies/boss1.zs index dd88311be..8ce33904a 100644 --- a/wadsrc/static/zscript/games/duke/actors/dukeenemies/boss1.zs +++ b/wadsrc/static/zscript/games/duke/actors/dukeenemies/boss1.zs @@ -45,7 +45,7 @@ class DukeBoss1 : DukeBossBase } - override void PlayFTASound() + override void PlayFTASound(int mode) { Duke.PlaySound("BOS1_RECOG"); } @@ -62,7 +62,7 @@ class DukeBoss1Stayput : DukeBoss1 +BADGUYSTAYPUT; } - override void PlayFTASound() + override void PlayFTASound(int mode) { } diff --git a/wadsrc/static/zscript/games/duke/actors/dukeenemies/boss2.zs b/wadsrc/static/zscript/games/duke/actors/dukeenemies/boss2.zs index 8015bc379..9ace1c4c5 100644 --- a/wadsrc/static/zscript/games/duke/actors/dukeenemies/boss2.zs +++ b/wadsrc/static/zscript/games/duke/actors/dukeenemies/boss2.zs @@ -21,7 +21,7 @@ class DukeBoss2 : DukeBossBase // //--------------------------------------------------------------------------- - override void PlayFTASound() + override void PlayFTASound(int mode) { if (self.pal == 1) Duke.PlaySound("BOS2_RECOG"); diff --git a/wadsrc/static/zscript/games/duke/actors/dukeenemies/boss3.zs b/wadsrc/static/zscript/games/duke/actors/dukeenemies/boss3.zs index 7869d9b8e..1fee0c43e 100644 --- a/wadsrc/static/zscript/games/duke/actors/dukeenemies/boss3.zs +++ b/wadsrc/static/zscript/games/duke/actors/dukeenemies/boss3.zs @@ -11,7 +11,7 @@ class DukeBoss3 : DukeBossBase } - override void PlayFTASound() + override void PlayFTASound(int mode) { if (self.pal == 1) Duke.PlaySound("BOS3_RECOG"); diff --git a/wadsrc/static/zscript/games/duke/actors/dukeenemies/boss4.zs b/wadsrc/static/zscript/games/duke/actors/dukeenemies/boss4.zs index e3a247d6c..2e718e9a2 100644 --- a/wadsrc/static/zscript/games/duke/actors/dukeenemies/boss4.zs +++ b/wadsrc/static/zscript/games/duke/actors/dukeenemies/boss4.zs @@ -13,7 +13,7 @@ class DukeBoss4 : DukeBossBase } - override void PlayFTASound() + override void PlayFTASound(int mode) { if (self.pal == 1) Duke.PlaySound("BOS4_RECOG"); diff --git a/wadsrc/static/zscript/games/duke/actors/dukeenemies/commander.zs b/wadsrc/static/zscript/games/duke/actors/dukeenemies/commander.zs index 215ad36e4..901190a22 100644 --- a/wadsrc/static/zscript/games/duke/actors/dukeenemies/commander.zs +++ b/wadsrc/static/zscript/games/duke/actors/dukeenemies/commander.zs @@ -21,7 +21,7 @@ class DukeCommander : DukeActor } - override void PlayFTASound() + override void PlayFTASound(int mode) { self.PlayActorSound("COMM_RECOG"); } diff --git a/wadsrc/static/zscript/games/duke/actors/dukeenemies/drone.zs b/wadsrc/static/zscript/games/duke/actors/dukeenemies/drone.zs index d57130124..bfc7ecc74 100644 --- a/wadsrc/static/zscript/games/duke/actors/dukeenemies/drone.zs +++ b/wadsrc/static/zscript/games/duke/actors/dukeenemies/drone.zs @@ -19,7 +19,7 @@ class DukeDrone : DukeActor } - override void PlayFTASound() + override void PlayFTASound(int mode) { self.PlayActorSound("DRON_RECOG"); } diff --git a/wadsrc/static/zscript/games/duke/actors/dukeenemies/lizman.zs b/wadsrc/static/zscript/games/duke/actors/dukeenemies/lizman.zs index 0fdde03df..d25cfb1c2 100644 --- a/wadsrc/static/zscript/games/duke/actors/dukeenemies/lizman.zs +++ b/wadsrc/static/zscript/games/duke/actors/dukeenemies/lizman.zs @@ -14,7 +14,7 @@ class DukeLizMan : DukeActor } - override void PlayFTASound() + override void PlayFTASound(int mode) { self.PlayActorSound("CAPT_RECOG"); } @@ -82,7 +82,7 @@ class DukeLizManStayput : DukeLizMan +BADGUYSTAYPUT; } - override void PlayFTASound() + override void PlayFTASound(int mode) { } diff --git a/wadsrc/static/zscript/games/duke/actors/dukeenemies/liztroop.zs b/wadsrc/static/zscript/games/duke/actors/dukeenemies/liztroop.zs index 13f06cb04..19fbc9cdf 100644 --- a/wadsrc/static/zscript/games/duke/actors/dukeenemies/liztroop.zs +++ b/wadsrc/static/zscript/games/duke/actors/dukeenemies/liztroop.zs @@ -26,7 +26,7 @@ class DukeLizTrooper : DukeActor // //--------------------------------------------------------------------------- - override void PlayFTASound() + override void PlayFTASound(int mode) { self.PlayActorSound("PRED_RECOG"); } @@ -139,7 +139,7 @@ class DukeLizTrooperStayput : DukeLizTrooper +BADGUYSTAYPUT; } - override void PlayFTASound() + override void PlayFTASound(int mode) { } diff --git a/wadsrc/static/zscript/games/duke/actors/dukeenemies/octabrain.zs b/wadsrc/static/zscript/games/duke/actors/dukeenemies/octabrain.zs index b9fcd2c57..2ad286140 100644 --- a/wadsrc/static/zscript/games/duke/actors/dukeenemies/octabrain.zs +++ b/wadsrc/static/zscript/games/duke/actors/dukeenemies/octabrain.zs @@ -14,7 +14,7 @@ class DukeOctabrain : DukeActor } - override void PlayFTASound() + override void PlayFTASound(int mode) { self.PlayActorSound("OCTA_RECOG"); } diff --git a/wadsrc/static/zscript/games/duke/actors/dukeenemies/pigcop.zs b/wadsrc/static/zscript/games/duke/actors/dukeenemies/pigcop.zs index 7a375a148..99d368ba0 100644 --- a/wadsrc/static/zscript/games/duke/actors/dukeenemies/pigcop.zs +++ b/wadsrc/static/zscript/games/duke/actors/dukeenemies/pigcop.zs @@ -12,7 +12,7 @@ class DukePigCop : DukeActor } - override void PlayFTASound() + override void PlayFTASound(int mode) { self.PlayActorSound("PIG_RECOG"); } @@ -48,7 +48,7 @@ class DukePigCopDive : DukePigCopStayput pic "PIGCOPDIVE"; } - override void PlayFTASound() + override void PlayFTASound(int mode) { } diff --git a/wadsrc/static/zscript/games/duke/actors/dukeenemies/turret.zs b/wadsrc/static/zscript/games/duke/actors/dukeenemies/turret.zs index cf9c11b9a..0c436d390 100644 --- a/wadsrc/static/zscript/games/duke/actors/dukeenemies/turret.zs +++ b/wadsrc/static/zscript/games/duke/actors/dukeenemies/turret.zs @@ -13,7 +13,7 @@ class DukeTurret : DukeActor aimoffset 32; } - override void PlayFTASound() + override void PlayFTASound(int mode) { self.PlayActorSound("TURR_RECOG"); } diff --git a/wadsrc/static/zscript/games/duke/actors/redneckenemies/billyray.zs b/wadsrc/static/zscript/games/duke/actors/redneckenemies/billyray.zs index 029c3bb27..da3857dd4 100644 --- a/wadsrc/static/zscript/games/duke/actors/redneckenemies/billyray.zs +++ b/wadsrc/static/zscript/games/duke/actors/redneckenemies/billyray.zs @@ -11,9 +11,10 @@ class RedneckBillyRay : DukeActor } - override void PlayFTASound() + override void PlayFTASound(int mode) { - self.PlayActorSound("BR_RECOG"); + if (mode == 0) self.PlayActorSound("BR_RECOG"); + else self.PlayActorSound("FART1"); } override void Initialize() @@ -33,7 +34,7 @@ class RedneckBillyRayStayput: RedneckBillyRay +BADGUYSTAYPUT } - override void PlayFTASound() + override void PlayFTASound(int mode) { } diff --git a/wadsrc/static/zscript/games/duke/actors/redneckenemies/coot.zs b/wadsrc/static/zscript/games/duke/actors/redneckenemies/coot.zs index e5b8759c5..4e2624ffa 100644 --- a/wadsrc/static/zscript/games/duke/actors/redneckenemies/coot.zs +++ b/wadsrc/static/zscript/games/duke/actors/redneckenemies/coot.zs @@ -13,7 +13,7 @@ class RedneckCoot : DukeActor +DESTRUCTOIMMUNE; } - override void PlayFTASound() + override void PlayFTASound(int mode) { if (!Raze.isRRRA() && (random(0, 3)) == 2) self.PlayActorSound("CT_GET"); @@ -40,7 +40,7 @@ class RedneckCootStayput: RedneckCoot +BADGUYSTAYPUT; } - override void PlayFTASound() + override void PlayFTASound(int mode) { } diff --git a/wadsrc/static/zscript/games/duke/actors/redneckenemies/minion.zs b/wadsrc/static/zscript/games/duke/actors/redneckenemies/minion.zs index 21dd3a45f..f97cded26 100644 --- a/wadsrc/static/zscript/games/duke/actors/redneckenemies/minion.zs +++ b/wadsrc/static/zscript/games/duke/actors/redneckenemies/minion.zs @@ -42,7 +42,7 @@ class RedneckMinionStayput: RedneckMinion +BADGUYSTAYPUT; } - override void PlayFTASound() + override void PlayFTASound(int mode) { } diff --git a/wadsrc/static/zscript/games/duke/actors/vacation/beachbabe.zs b/wadsrc/static/zscript/games/duke/actors/vacation/beachbabe.zs index b7f43336e..d801d91c1 100644 --- a/wadsrc/static/zscript/games/duke/actors/vacation/beachbabe.zs +++ b/wadsrc/static/zscript/games/duke/actors/vacation/beachbabe.zs @@ -9,7 +9,7 @@ class VacationBeachBabe : DukeLizmanJump +INTERNAL_BADGUY; } - override void PlayFTASound() + override void PlayFTASound(int mode) { self.PlayActorSound("CAPT_RECOG"); } diff --git a/wadsrc/static/zscript/games/duke/dukeactor.zs b/wadsrc/static/zscript/games/duke/dukeactor.zs index bcd490d2d..586ff7d7e 100644 --- a/wadsrc/static/zscript/games/duke/dukeactor.zs +++ b/wadsrc/static/zscript/games/duke/dukeactor.zs @@ -366,7 +366,7 @@ class DukeActor : CoreActor native virtual void onRespawn(int tag) { } virtual bool animate(tspritetype tspr) { return false; } virtual void RunState(DukePlayer p, double pdist) {} // this is the CON function. - virtual void PlayFTASound() {} + virtual void PlayFTASound(int mode) {} virtual void StandingOn(DukePlayer p) {} virtual bool TriggerSwitch(DukePlayer activator) { return false; } virtual bool shootthis(DukeActor actor, DukePlayer p, Vector3 pos, double ang) const // this gets called on the defaults.