From 77bcea409bad0b9f6a3d3d86d1cc09aca1aa34ef Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sat, 25 Mar 2023 14:32:35 +0100 Subject: [PATCH] - Duke: fixed potential logic deadlocks with the green slimer. It depended on the devoured actor not disappearing from the map prematurely to work as intended, so a new check had to be added to get out of the deadlock. --- wadsrc/static/zscript/games/duke/actors/greenslime.zs | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/wadsrc/static/zscript/games/duke/actors/greenslime.zs b/wadsrc/static/zscript/games/duke/actors/greenslime.zs index 7006c6b2e..c632ee0ed 100644 --- a/wadsrc/static/zscript/games/duke/actors/greenslime.zs +++ b/wadsrc/static/zscript/games/duke/actors/greenslime.zs @@ -250,12 +250,11 @@ class DukeGreenSlime : DukeActor self.cstat &= ~CSTAT_SPRITE_YFLIP; self.setSpriteSetImage(4); - if (self.scale.X > 0.5 ) self.scale.X += (-random(0, 7)) * REPEAT_SCALE; - if (self.scale.Y > 0.25 ) self.scale.Y += (-random(0, 7)) * REPEAT_SCALE; + if (self.scale.X > 0.5 ) self.scale.X -= random(0, 7) * REPEAT_SCALE; + if (self.scale.Y > 0.25 ) self.scale.Y -= random(0, 7) * REPEAT_SCALE; else { self.scale = (0.625, 0.25); - self.temp_actor = nullptr; self.temp_data[0] = 0; } @@ -281,6 +280,7 @@ class DukeGreenSlime : DukeActor else { self.temp_data[0] = -1; + self.temp_actor = nullptr; double dist = (self.pos.XY - s5.pos.XY).LengthSquared(); if (dist < 48*48) { s5.scale.X = 0; @@ -288,6 +288,10 @@ class DukeGreenSlime : DukeActor } } } + else + { + self.temp_data[0] = -1; + } return; }