diff --git a/src/enochecker/enochecker.py b/src/enochecker/enochecker.py
index 831cb5b..0e0e4ca 100644
--- a/src/enochecker/enochecker.py
+++ b/src/enochecker/enochecker.py
@@ -455,6 +455,11 @@ class BaseChecker(metaclass=_CheckerMeta):
 
                 # Better wrap this, in case somebody returns raw ints (?)
                 ret = Result(ret)
+                if ret != Result.OK:
+                    warnings.warn(
+                        "Returning a non-ok status code is not recommended and will be removed in the future. Raise an Exception with additional text instead.",
+                        DeprecationWarning,
+                    )
                 self.info("Checker [{}] resulted in {}".format(self.method, ret.name))
                 self.team_db[
                     f"__Checker-internals-RESULT:{str(method)},{self.flag_round},{self.flag_idx}__"

diff --git a/tests/test_run_method.py b/tests/test_run_method.py
index d059e30..ecaa6af 100644
--- a/tests/test_run_method.py
+++ b/tests/test_run_method.py
@@ -101,7 +101,10 @@ def test_run_return_status(method, result, checker_cls):
 
     setattr(checker_cls, method, meth)
     c = checker_cls(method)
-    res = c.run()
+    with pytest.warns(
+        None
+    ):  # ignore warnings caused by the deprecation of returning Results
+        res = c.run()
     assert isinstance(res, CheckerResult)
     assert res.result == result
 
@@ -293,3 +296,59 @@ def test_offline_exceptions(method, exc, checker_cls):
     assert isinstance(res, CheckerResult)
     assert res.result == Result.OFFLINE
     assert res.message
+
+
+@pytest.mark.parametrize(
+    "method", CHECKER_METHODS,
+)
+def test_no_warn_deprecated_return_ok(method, checker_cls):
+    def meth(self):
+        return Result.OK
+
+    def ok(self):
+        return Result.OK
+
+    if method == "getflag":
+        setattr(checker_cls, "putflag", ok)
+        c = checker_cls("putflag")
+        c.run()
+    elif method == "getnoise":
+        setattr(checker_cls, "putnoise", ok)
+        c = checker_cls("putnoise")
+        c.run()
+
+    setattr(checker_cls, method, meth)
+    c = checker_cls(method)
+    with pytest.warns(None) as record:
+        res = c.run()
+    assert isinstance(res, CheckerResult)
+    assert res.result == Result.OK
+    assert len(record) == 0
+
+
+@pytest.mark.parametrize(
+    "method, ret",
+    product(CHECKER_METHODS, [Result.MUMBLE, Result.OFFLINE, Result.INTERNAL_ERROR]),
+)
+def test_warn_deprecated_return_value(method, ret, checker_cls):
+    def meth(self):
+        return ret
+
+    def ok(self):
+        return Result.OK
+
+    if method == "getflag":
+        setattr(checker_cls, "putflag", ok)
+        c = checker_cls("putflag")
+        c.run()
+    elif method == "getnoise":
+        setattr(checker_cls, "putnoise", ok)
+        c = checker_cls("putnoise")
+        c.run()
+
+    setattr(checker_cls, method, meth)
+    c = checker_cls(method)
+    with pytest.deprecated_call():
+        res = c.run()
+    assert isinstance(res, CheckerResult)
+    assert res.result == ret

Show warning when returning error status without accompanying message
As mentioned in https://github.com/enowars/enochecker/pull/55 while returning Result.MUMBLE or Result.OFFLINE is supported it does not include details which would be necessary for e.g. https://github.com/enowars/enowars4-scoreboard/issues/2

The preferred and documented way should be using Exceptions instead
tests/test_run_method.py::test_warn_deprecated_return_value[putflag-Result.MUMBLE] tests/test_run_method.py::test_warn_deprecated_return_value[putflag-Result.OFFLINE] tests/test_run_method.py::test_warn_deprecated_return_value[putflag-Result.INTERNAL_ERROR] tests/test_run_method.py::test_warn_deprecated_return_value[getflag-Result.MUMBLE] tests/test_run_method.py::test_warn_deprecated_return_value[getflag-Result.OFFLINE] tests/test_run_method.py::test_warn_deprecated_return_value[getflag-Result.INTERNAL_ERROR] tests/test_run_method.py::test_warn_deprecated_return_value[putnoise-Result.MUMBLE] tests/test_run_method.py::test_warn_deprecated_return_value[putnoise-Result.OFFLINE] tests/test_run_method.py::test_warn_deprecated_return_value[putnoise-Result.INTERNAL_ERROR] tests/test_run_method.py::test_warn_deprecated_return_value[getnoise-Result.MUMBLE] tests/test_run_method.py::test_warn_deprecated_return_value[getnoise-Result.OFFLINE] tests/test_run_method.py::test_warn_deprecated_return_value[getnoise-Result.INTERNAL_ERROR] tests/test_run_method.py::test_warn_deprecated_return_value[havoc-Result.MUMBLE] tests/test_run_method.py::test_warn_deprecated_return_value[havoc-Result.OFFLINE] tests/test_run_method.py::test_warn_deprecated_return_value[havoc-Result.INTERNAL_ERROR] tests/test_run_method.py::test_warn_deprecated_return_value[exploit-Result.MUMBLE] tests/test_run_method.py::test_warn_deprecated_return_value[exploit-Result.OFFLINE] tests/test_run_method.py::test_warn_deprecated_return_value[exploit-Result.INTERNAL_ERROR]
tests/test_run_method.py::test_run_return_nothing[putflag] tests/test_run_method.py::test_run_return_nothing[getflag] tests/test_run_method.py::test_run_return_nothing[putnoise] tests/test_run_method.py::test_run_return_nothing[getnoise] tests/test_run_method.py::test_run_return_nothing[havoc] tests/test_run_method.py::test_run_return_nothing[exploit] tests/test_run_method.py::test_run_get_original_run_failed[getflag] tests/test_run_method.py::test_run_get_original_run_failed[getnoise] tests/test_run_method.py::test_raise_broken_service_exception[putflag] tests/test_run_method.py::test_raise_broken_service_exception[getflag] tests/test_run_method.py::test_raise_broken_service_exception[putnoise] tests/test_run_method.py::test_raise_broken_service_exception[getnoise] tests/test_run_method.py::test_raise_broken_service_exception[havoc] tests/test_run_method.py::test_raise_broken_service_exception[exploit] tests/test_run_method.py::test_raise_offline_exception[putflag] tests/test_run_method.py::test_raise_offline_exception[getflag] tests/test_run_method.py::test_raise_offline_exception[putnoise] tests/test_run_method.py::test_raise_offline_exception[getnoise] tests/test_run_method.py::test_raise_offline_exception[havoc] tests/test_run_method.py::test_raise_offline_exception[exploit] tests/test_run_method.py::test_raise_unhandled_exception[putflag] tests/test_run_method.py::test_raise_unhandled_exception[getflag] tests/test_run_method.py::test_raise_unhandled_exception[putnoise] tests/test_run_method.py::test_raise_unhandled_exception[getnoise] tests/test_run_method.py::test_raise_unhandled_exception[havoc] tests/test_run_method.py::test_raise_unhandled_exception[exploit] tests/test_run_method.py::test_invalid_return[putflag] tests/test_run_method.py::test_invalid_return[getflag] tests/test_run_method.py::test_invalid_return[putnoise] tests/test_run_method.py::test_invalid_return[getnoise] tests/test_run_method.py::test_invalid_return[havoc] tests/test_run_method.py::test_invalid_return[exploit] tests/test_run_method.py::test_run_invalid_method tests/test_run_method.py::test_requests_mumble[putflag-HTTPError] tests/test_run_method.py::test_requests_mumble[putflag-EOFError] tests/test_run_method.py::test_requests_mumble[getflag-HTTPError] tests/test_run_method.py::test_requests_mumble[getflag-EOFError] tests/test_run_method.py::test_requests_mumble[putnoise-HTTPError] tests/test_run_method.py::test_requests_mumble[putnoise-EOFError] tests/test_run_method.py::test_requests_mumble[getnoise-HTTPError] tests/test_run_method.py::test_requests_mumble[getnoise-EOFError] tests/test_run_method.py::test_requests_mumble[havoc-HTTPError] tests/test_run_method.py::test_requests_mumble[havoc-EOFError] tests/test_run_method.py::test_requests_mumble[exploit-HTTPError] tests/test_run_method.py::test_requests_mumble[exploit-EOFError] tests/test_run_method.py::test_offline_exceptions[putflag-ConnectionError0] tests/test_run_method.py::test_offline_exceptions[putflag-ConnectTimeout] tests/test_run_method.py::test_offline_exceptions[putflag-TimeoutError] tests/test_run_method.py::test_offline_exceptions[putflag-timeout] tests/test_run_method.py::test_offline_exceptions[putflag-ConnectionError1] tests/test_run_method.py::test_offline_exceptions[putflag-OSError] tests/test_run_method.py::test_offline_exceptions[putflag-ConnectionAbortedError] tests/test_run_method.py::test_offline_exceptions[getflag-ConnectionError0] tests/test_run_method.py::test_offline_exceptions[getflag-ConnectTimeout] tests/test_run_method.py::test_offline_exceptions[getflag-TimeoutError] tests/test_run_method.py::test_offline_exceptions[getflag-timeout] tests/test_run_method.py::test_offline_exceptions[getflag-ConnectionError1] tests/test_run_method.py::test_offline_exceptions[getflag-OSError] tests/test_run_method.py::test_offline_exceptions[getflag-ConnectionAbortedError] tests/test_run_method.py::test_offline_exceptions[putnoise-ConnectionError0] tests/test_run_method.py::test_offline_exceptions[putnoise-ConnectTimeout] tests/test_run_method.py::test_offline_exceptions[putnoise-TimeoutError] tests/test_run_method.py::test_offline_exceptions[putnoise-timeout] tests/test_run_method.py::test_offline_exceptions[putnoise-ConnectionError1] tests/test_run_method.py::test_offline_exceptions[putnoise-OSError] tests/test_run_method.py::test_offline_exceptions[putnoise-ConnectionAbortedError] tests/test_run_method.py::test_offline_exceptions[getnoise-ConnectionError0] tests/test_run_method.py::test_offline_exceptions[getnoise-ConnectTimeout] tests/test_run_method.py::test_offline_exceptions[getnoise-TimeoutError] tests/test_run_method.py::test_offline_exceptions[getnoise-timeout] tests/test_run_method.py::test_offline_exceptions[getnoise-ConnectionError1] tests/test_run_method.py::test_offline_exceptions[getnoise-OSError] tests/test_run_method.py::test_offline_exceptions[getnoise-ConnectionAbortedError] tests/test_run_method.py::test_offline_exceptions[havoc-ConnectionError0] tests/test_run_method.py::test_offline_exceptions[havoc-ConnectTimeout] tests/test_run_method.py::test_offline_exceptions[havoc-TimeoutError] tests/test_run_method.py::test_offline_exceptions[havoc-timeout] tests/test_run_method.py::test_offline_exceptions[havoc-ConnectionError1] tests/test_run_method.py::test_offline_exceptions[havoc-OSError] tests/test_run_method.py::test_offline_exceptions[havoc-ConnectionAbortedError] tests/test_run_method.py::test_offline_exceptions[exploit-ConnectionError0] tests/test_run_method.py::test_offline_exceptions[exploit-ConnectTimeout] tests/test_run_method.py::test_offline_exceptions[exploit-TimeoutError] tests/test_run_method.py::test_offline_exceptions[exploit-timeout] tests/test_run_method.py::test_offline_exceptions[exploit-ConnectionError1] tests/test_run_method.py::test_offline_exceptions[exploit-OSError] tests/test_run_method.py::test_offline_exceptions[exploit-ConnectionAbortedError]