From 3ec8743c1bbdec71ecaa7d4d4cd41a3f00f1516c Mon Sep 17 00:00:00 2001
From: Monster Iestyn <iestynjealous@ntlworld.com>
Date: Sun, 21 Oct 2018 17:32:53 +0100
Subject: [PATCH] Fix up the ability to edit slope zdelta and zangle with Lua
 (zangle is untested as of writing)

---
 src/lua_maplib.c | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/src/lua_maplib.c b/src/lua_maplib.c
index d83634291..975ea1cb1 100644
--- a/src/lua_maplib.c
+++ b/src/lua_maplib.c
@@ -1359,15 +1359,19 @@ static int slope_set(lua_State *L)
 	}
 	case slope_zdelta: { // zdelta, this is temp until i figure out wtf to do
 		slope->zdelta = luaL_checkfixed(L, 3);
-		slope->zangle = R_PointToAngle2(0, 0, FRACUNIT, slope->zdelta);
+		slope->zangle = R_PointToAngle2(0, 0, FRACUNIT, -slope->zdelta);
 		P_CalculateSlopeNormal(slope);
 		break;
 	}
-	case slope_zangle: // zangle
-		slope->zangle = luaL_checkangle(L, 3);
-		slope->zdelta = FINETANGENT(slope->zangle>>ANGLETOFINESHIFT);
+	case slope_zangle: { // zangle
+		angle_t zangle = luaL_checkangle(L, 3);
+		if (zangle == ANGLE_90 || zangle == ANGLE_270)
+			return luaL_error(L, "invalid zangle for slope!");
+		slope->zangle = zangle;
+		slope->zdelta = -FINETANGENT(((slope->zangle+ANGLE_90)>>ANGLETOFINESHIFT) & 4095);
 		P_CalculateSlopeNormal(slope);
 		break;
+	}
 	case slope_xydirection: // xydirection
 		slope->xydirection = luaL_checkangle(L, 3);
 		P_CalculateSlopeNormal(slope);
-- 
GitLab