From d44b637f1bdb1f777bf5cc6715f9d3222a936833 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sun, 20 Nov 2022 08:51:09 +0100 Subject: [PATCH] - fixed touchplate initialization This was still using older code - the current native version was also not removed from the spawn function. --- source/games/duke/src/premap.cpp | 1 - source/games/duke/src/spawn_d.cpp | 24 ------------------- source/games/duke/src/spawn_r.cpp | 11 --------- source/games/duke/src/vmexports.cpp | 2 +- .../zscript/games/duke/actors/touchplate.zs | 5 ++-- 5 files changed, 4 insertions(+), 39 deletions(-) diff --git a/source/games/duke/src/premap.cpp b/source/games/duke/src/premap.cpp index 53f73ab2e..19adba421 100644 --- a/source/games/duke/src/premap.cpp +++ b/source/games/duke/src/premap.cpp @@ -53,7 +53,6 @@ void premapcontroller(DDukeActor* ac) case MUSICANDSFX: case RESPAWN: case SECTOREFFECTOR: - case TOUCHPLATE: ac->spr.cstat &= ~(CSTAT_SPRITE_BLOCK | CSTAT_SPRITE_BLOCK_HITSCAN | CSTAT_SPRITE_ALIGNMENT_MASK); break; diff --git a/source/games/duke/src/spawn_d.cpp b/source/games/duke/src/spawn_d.cpp index d623c3d87..59e7cdd60 100644 --- a/source/games/duke/src/spawn_d.cpp +++ b/source/games/duke/src/spawn_d.cpp @@ -637,30 +637,6 @@ DDukeActor* spawninit_d(DDukeActor* actj, DDukeActor* act, TArray* act->spr.lotag = 9999; ChangeActorStat(act, STAT_STANDABLE); break; - case TOUCHPLATE: - act->temp_pos.Z = sectp->floorz; - if (sectp->lotag != 1 && sectp->lotag != 2) - sectp->setfloorz(act->spr.pos.Z); - if (!isWorldTour()) - { - if (act->spr.pal && ud.multimode > 1) - { - act->spr.scale = DVector2(0, 0); - ChangeActorStat(act, STAT_MISC); - break; - } - } - else { // Twentieth Anniversary World Tour addition - if ((act->spr.pal == 1 && ud.multimode > 1) // Single-game Only - || (act->spr.pal == 2 && (ud.multimode == 1 || (ud.multimode > 1 && ud.coop != 1))) // Co-op Only - || (act->spr.pal == 3 && (ud.multimode == 1 || (ud.multimode > 1 && ud.coop == 1)))) // Dukematch Only - { - act->spr.scale = DVector2(0, 0); - ChangeActorStat(act, STAT_MISC); - break; - } - } - [[fallthrough]]; case WATERBUBBLEMAKER: if (act->spr.hitag && act->spr.picnum == WATERBUBBLEMAKER) { // JBF 20030913: Pisses off move(), eg. in bobsp2 diff --git a/source/games/duke/src/spawn_r.cpp b/source/games/duke/src/spawn_r.cpp index 82f35afae..374b370e1 100644 --- a/source/games/duke/src/spawn_r.cpp +++ b/source/games/duke/src/spawn_r.cpp @@ -671,17 +671,6 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act, TArray* act->spr.lotag = 9999; ChangeActorStat(act, STAT_STANDABLE); break; - case TOUCHPLATE: - act->temp_pos.Z = sectp->floorz; - if (sectp->lotag != 1 && sectp->lotag != 2) - sectp->setfloorz(act->spr.pos.Z); - if (act->spr.pal && ud.multimode > 1) - { - act->spr.scale = DVector2(0, 0); - ChangeActorStat(act, STAT_MISC); - break; - } - [[fallthrough]]; case WATERBUBBLEMAKER: act->spr.cstat |= CSTAT_SPRITE_INVISIBLE; ChangeActorStat(act, STAT_STANDABLE); diff --git a/source/games/duke/src/vmexports.cpp b/source/games/duke/src/vmexports.cpp index b5c7adc2a..af212a8d6 100644 --- a/source/games/duke/src/vmexports.cpp +++ b/source/games/duke/src/vmexports.cpp @@ -852,7 +852,7 @@ DEFINE_ACTION_FUNCTION_NATIVE(_DukeLevel, operatemasterswitches, operatemastersw return 0; } -DEFINE_ACTION_FUNCTION_NATIVE(_DukeLevel, operateactivators, operateactivators) +DEFINE_ACTION_FUNCTION(_DukeLevel, operateactivators)//, operateactivators) { PARAM_PROLOGUE; PARAM_INT(lotag); diff --git a/wadsrc/static/zscript/games/duke/actors/touchplate.zs b/wadsrc/static/zscript/games/duke/actors/touchplate.zs index a1f3f795d..20004aca2 100644 --- a/wadsrc/static/zscript/games/duke/actors/touchplate.zs +++ b/wadsrc/static/zscript/games/duke/actors/touchplate.zs @@ -26,7 +26,7 @@ class DukeTouchPlate : DukeActor override void Initialize() { let sectp = self.sector; - self.temp_data[2] = sectp.floorz; + self.temp_pos.Z = sectp.floorz; if (sectp.lotag != 1 && sectp.lotag != 2) sectp.setfloorz(self.pos.Z); if (!checkspawn()) @@ -35,7 +35,7 @@ class DukeTouchPlate : DukeActor self.ChangeStat(STAT_MISC); return; } - self.cstat |= CSTAT_SPRITE_INVISIBLE; + self.cstat = CSTAT_SPRITE_INVISIBLE; } @@ -93,6 +93,7 @@ class DukeTouchPlate : DukeActor { if (self.temp_data[0] == 0 && !dlevel.check_activator_motion(self.lotag)) { + Console.Printf("Trigger %d", self.spawnindex); self.temp_data[0] = 1; self.temp_data[1] = 1; self.temp_data[3] = !self.temp_data[3];