From c11a3010d9769c99e7d23b3cd286d8b7e0f3c29a Mon Sep 17 00:00:00 2001
From: MascaraSnake <jonassauer27@gmail.com>
Date: Tue, 18 Jun 2019 19:29:53 +0200
Subject: [PATCH] Fixed the Canarivore gas slowdown being much too weak

---
 src/p_inter.c | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/src/p_inter.c b/src/p_inter.c
index 0c81d78332..e3e36cf70c 100644
--- a/src/p_inter.c
+++ b/src/p_inter.c
@@ -1701,9 +1701,13 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck)
 
 		case MT_CANARIVORE_GAS:
 			// if player and gas touch, attach gas to player (overriding any gas that already attached) and apply slowdown effect
-			P_TeleportMove(special, toucher->x - toucher->momx / 2, toucher->y - toucher->momy / 2, toucher->z - toucher->momz / 2);
-			toucher->momx = FixedMul(toucher->momx, 50 * FRACUNIT / 51);
-			toucher->momy = FixedMul(toucher->momy, 50 * FRACUNIT / 51);
+			P_UnsetThingPosition(special);
+			special->x = toucher->x - toucher->momx/2;
+			special->y = toucher->y - toucher->momy/2;
+			special->z = toucher->z - toucher->momz/2;
+			P_SetThingPosition(special);
+			toucher->momx = FixedMul(toucher->momx, 50*FRACUNIT/51);
+			toucher->momy = FixedMul(toucher->momy, 50*FRACUNIT/51);
 			special->momx = toucher->momx;
 			special->momy = toucher->momy;
 			special->momz = toucher->momz;
-- 
GitLab