From b100da096172b6b548271572d2588f8068aaf603 Mon Sep 17 00:00:00 2001
From: David Adam <zanchey@ucc.gu.uwa.edu.au>
Date: Tue, 9 Jul 2024 20:46:44 +0800
Subject: [PATCH] server: don't report door as error status

Even if a user is in door, the fact that it is priced as zero means it
is always reported as being in error state, and it cannot be selected by
clients from the menu. Hack around this with strcmp.
---
 src/server/server.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/server/server.c b/src/server/server.c
index 76b3b44..61a0f15 100644
--- a/src/server/server.c
+++ b/src/server/server.c
@@ -773,7 +773,8 @@ void Server_int_SendItem(tClient *Client, tItem *Item)
 		}
 	}
 	
-	if( !gbNoCostMode && Item->Price == 0 )
+	// door costs 0 to dispense, which is not an error; other items must have a price
+	if( !gbNoCostMode && Item->Price == 0 && (strcmp(Item->Handler->Name, "door") != 0) )
 		status = "error";
 	// KNOWN HACK: Naming a slot 'dead' disables it
 	if( strcmp(Item->Name, "dead") == 0 )
-- 
GitLab