diff --git a/engines/chewy/r_event.cpp b/engines/chewy/r_event.cpp
index 73da01a3906..78a82847b35 100644
--- a/engines/chewy/r_event.cpp
+++ b/engines/chewy/r_event.cpp
@@ -172,16 +172,132 @@ void check_ged_action(int16 index) {
 }
 
 int16 ged_user_func(int16 idx_nr) {
-#define GED_FUNC(NUM) case NUM: idx_nr = Room##NUM::gedUserFunc(idx_nr)
 	switch (idx_nr) {
-	GED_FUNC(40);
-	GED_FUNC(41);
-	GED_FUNC(42);
+	case 40:
+		switch (_G(spieler).PersonRoomNr[P_CHEWY]) {
+		case 8:
+			if (_G(spieler).R8GTuer)
+				idx_nr = 0;
+			break;
+
+		case 9:
+			if (!_G(spieler).R9Gitter)
+				idx_nr = 0;
+			break;
+
+		case 16:
+			if (!_G(spieler).R16F5Exit)
+				idx_nr = 0;
+			break;
+
+		case 17:
+			if (_G(spieler).R17Location != 1)
+				idx_nr = 0;
+			break;
+
+		case 21:
+			if (!_G(spieler).R21Laser2Weg)
+				idx_nr = 0;
+			break;
+
+		case 31:
+			if (!_G(spieler).R31KlappeZu)
+				idx_nr = 0;
+			break;
+
+		case 41:
+			if (!_G(spieler).R41LolaOk)
+				idx_nr = 0;
+			break;
+
+		case 52:
+			if (!_G(spieler).R52LichtAn)
+				idx_nr = 2;
+			else
+				idx_nr = 4;
+			break;
+
+		case 71:
+			if (!_G(spieler).flags28_2 || !_G(spieler).flags29_4)
+				idx_nr = 0;
+			else
+				idx_nr = 4;
+			break;
+
+		case 76:
+			return idx_nr;
+
+		case 84:
+			if (!_G(spieler).flags31_1)
+				_G(spieler).flags31_4 = true;
+			break;
+
+		case 86:
+			if (!_G(spieler).flags32_2)
+				idx_nr = 0;
+			break;
+
+		case 94:
+			if (!_G(spieler).flags35_10)
+				idx_nr = 0;
+			break;
+
+		case 97:
+			if (!_G(spieler).flags35_80)
+				idx_nr = 0;
+			break;
+
+		default:
+			break;
+		}
+		break;
+
+	case 41:
+		switch (_G(spieler).PersonRoomNr[P_CHEWY]) {
+		case 17:
+			if (_G(spieler).R17Location != 2)
+				idx_nr = 0;
+			break;
+
+		case 21:
+			if (!_G(spieler).R21Laser1Weg) {
+				idx_nr = 0;
+			} else
+				idx_nr = 3;
+			break;
+
+		case 37:
+			if (!_G(spieler).R37Kloppe)
+				idx_nr = 0;
+			break;
+
+		case 52:
+			if (!_G(spieler).R52TuerAuf)
+				idx_nr = 2;
+			else
+				idx_nr = 4;
+			break;
+
+		case 97:
+			if (!_G(spieler).flags36_20)
+				idx_nr = 0;
+			break;
+
+		default:
+			break;
+		}
+		break;
+
+	case 42:
+		if (_G(spieler).PersonRoomNr[P_CHEWY] == 97) {
+			if (!_G(spieler).flags37_1)
+				idx_nr = 0;
+		}
+		break;
 
 	default:
 		break;
 	}
-#undef GED_FUNC
 
 	return idx_nr;
 }
diff --git a/engines/chewy/rooms/room40.cpp b/engines/chewy/rooms/room40.cpp
index 485be85e375..14a08c1147e 100644
--- a/engines/chewy/rooms/room40.cpp
+++ b/engines/chewy/rooms/room40.cpp
@@ -155,87 +155,6 @@ bool Room40::timer(int16 t_nr, int16 ani_nr) {
 	return false;
 }
 
-int16 Room40::gedUserFunc(int16 idx_nr) {
-	switch (_G(spieler).PersonRoomNr[P_CHEWY]) {
-	case 8:
-		if (_G(spieler).R8GTuer)
-			idx_nr = 0;
-		break;
-
-	case 9:
-		if (!_G(spieler).R9Gitter)
-			idx_nr = 0;
-		break;
-
-	case 16:
-		if (!_G(spieler).R16F5Exit)
-			idx_nr = 0;
-		break;
-
-	case 17:
-		if (_G(spieler).R17Location != 1)
-			idx_nr = 0;
-		break;
-
-	case 21:
-		if (!_G(spieler).R21Laser2Weg)
-			idx_nr = 0;
-		break;
-
-	case 31:
-		if (!_G(spieler).R31KlappeZu)
-			idx_nr = 0;
-		break;
-
-	case 41:
-		if (!_G(spieler).R41LolaOk)
-			idx_nr = 0;
-		break;
-
-	case 52:
-		if (!_G(spieler).R52LichtAn)
-			idx_nr = 2;
-		else
-			idx_nr = 4;
-		break;
-
-	case 71:
-		if (!_G(spieler).flags28_2 || !_G(spieler).flags29_4)
-			idx_nr = 0;
-		else
-			idx_nr = 4;
-		break;
-
-	case 76:
-		return idx_nr;
-
-	case 84:
-		if (!_G(spieler).flags31_1)
-			_G(spieler).flags31_4 = true;
-		break;
-
-	case 86:
-		if (!_G(spieler).flags32_2)
-			idx_nr = 0;
-		break;
-
-	case 94:
-		if (!_G(spieler).flags35_10)
-			idx_nr = 0;
-		break;
-
-	case 97:
-		if (!_G(spieler).flags35_80)
-			idx_nr = 0;
-		break;
-
-	default:
-		break;
-	}
-
-	return idx_nr;
-}
-
 void Room40::move_train(int16 mode) {
 	_G(spieler).R40TrainMove = false;
 	hide_cur();
diff --git a/engines/chewy/rooms/room40.h b/engines/chewy/rooms/room40.h
index 0b6318068bb..96f328125c0 100644
--- a/engines/chewy/rooms/room40.h
+++ b/engines/chewy/rooms/room40.h
@@ -36,7 +36,6 @@ public:
 	static void entry(int16 eib_nr);
 	static void xit(int16 eib_nr);
 	static bool timer(int16 t_nr, int16 ani_nr);
-	static int16 gedUserFunc(int16 idx_nr);
 
 	static int16 use_mr_pumpkin();
 	static void talk_police();
diff --git a/engines/chewy/rooms/room41.cpp b/engines/chewy/rooms/room41.cpp
index 6a89069e3af..1855dc151bc 100644
--- a/engines/chewy/rooms/room41.cpp
+++ b/engines/chewy/rooms/room41.cpp
@@ -79,44 +79,6 @@ void Room41::xit() {
 	_G(spieler).R41TrainCount--;
 }
 
-int16 Room41::gedUserFunc(int16 idx_nr) {
-	switch (_G(spieler).PersonRoomNr[P_CHEWY]) {
-	case 17:
-		if (_G(spieler).R17Location != 2)
-			idx_nr = 0;
-		break;
-
-	case 21:
-		if (!_G(spieler).R21Laser1Weg) {
-			idx_nr = 0;
-		} else
-			idx_nr = 3;
-		break;
-
-	case 37:
-		if (!_G(spieler).R37Kloppe)
-			idx_nr = 0;
-		break;
-
-	case 52:
-		if (!_G(spieler).R52TuerAuf)
-			idx_nr = 2;
-		else
-			idx_nr = 4;
-		break;
-
-	case 97:
-		if (!_G(spieler).flags36_20)
-			idx_nr = 0;
-		break;
-
-	default:
-		break;
-	}
-
-	return idx_nr;
-}
-
 void Room41::setup_func() {
 	if (_G(spieler).PersonRoomNr[P_HOWARD] == 41) {
 		calc_person_look();
diff --git a/engines/chewy/rooms/room41.h b/engines/chewy/rooms/room41.h
index ba1294fda29..318c4c8cfc2 100644
--- a/engines/chewy/rooms/room41.h
+++ b/engines/chewy/rooms/room41.h
@@ -35,8 +35,6 @@ private:
 public:
 	static void entry();
 	static void xit();
-	static int16 gedUserFunc(int16 idx_nr);
-
 	static int16 use_brief();
 	static int16 use_lola();
 	static int16 use_kasse();
diff --git a/engines/chewy/rooms/room42.cpp b/engines/chewy/rooms/room42.cpp
index c38db90eac3..b8cf9c564f2 100644
--- a/engines/chewy/rooms/room42.cpp
+++ b/engines/chewy/rooms/room42.cpp
@@ -71,15 +71,6 @@ void Room42::xit() {
 	}
 }
 
-int16 Room42::gedUserFunc(int16 idx_nr) {
-	if (_G(spieler).PersonRoomNr[P_CHEWY] == 97) {
-		if (!_G(spieler).flags37_1)
-			idx_nr = 0;
-	}
-
-	return idx_nr;
-}
-
 void Room42::setup_func() {
 	if (!_G(spieler).R42HoToBeamter)
 		calc_person_look();
diff --git a/engines/chewy/rooms/room42.h b/engines/chewy/rooms/room42.h
index c4a65aad515..a948a4d2300 100644
--- a/engines/chewy/rooms/room42.h
+++ b/engines/chewy/rooms/room42.h
@@ -33,13 +33,11 @@ private:
 public:
 	static void entry();
 	static void xit();
-	static int16 gedUserFunc(int16 idx_nr);
 
 	static void talk_beamter();
 	static int16 use_psack();
 	static int16 use_beamter();
 	static void dia_beamter(int16 str_end_nr);
-	static void calc_xit();
 };
 
 } // namespace Rooms