From eb6667ff347402052bc4d59e2aa06f047fb91c8b Mon Sep 17 00:00:00 2001
From: Jeffrey Phillips Freeman <the@jeffreyfreeman.me>
Date: Sun, 21 Feb 2021 15:54:31 -0500
Subject: [PATCH] Fixed bug in help and alook where exceptions could be thrown.

---
 lib/aethyr/core/actions/command_action.rb             | 10 ++++++++++
 lib/aethyr/core/help/help_library.rb                  |  3 +++
 lib/aethyr/core/input_handlers/admin/admin_handler.rb |  7 -------
 3 files changed, 13 insertions(+), 7 deletions(-)

diff --git a/lib/aethyr/core/actions/command_action.rb b/lib/aethyr/core/actions/command_action.rb
index c037006..671e022 100644
--- a/lib/aethyr/core/actions/command_action.rb
+++ b/lib/aethyr/core/actions/command_action.rb
@@ -7,6 +7,16 @@ module Aethyr
         super(**data)
         @player = actor
       end
+
+      #Looks in player's inventory and room for name.
+      #Then checks at global level for GOID.
+      def find_object(name, event)
+        if event[:player].nil?
+          return $manager.find(name, nil) || $manager.get_object(name)
+        else
+          return $manager.find(name, event[:player]) || $manager.find(name, event[:player].container) || $manager.get_object(name)
+        end
+      end
     end
   end
 end
diff --git a/lib/aethyr/core/help/help_library.rb b/lib/aethyr/core/help/help_library.rb
index e09f115..747b32d 100644
--- a/lib/aethyr/core/help/help_library.rb
+++ b/lib/aethyr/core/help/help_library.rb
@@ -30,6 +30,9 @@ module Aethyr
         def render_topic(topic)
           redirected_from = ""
           entry = lookup_topic(topic)
+
+            return "Topic #{topic} has no entry, try help with no arguments" if entry.nil?
+
           while entry.redirect? do
             redirected_from = "→ redirected from #{topic}\n\n" if redirected_from.empty?
             entry = lookup_topic(entry.redirect)
diff --git a/lib/aethyr/core/input_handlers/admin/admin_handler.rb b/lib/aethyr/core/input_handlers/admin/admin_handler.rb
index e1a4f34..fd09973 100644
--- a/lib/aethyr/core/input_handlers/admin/admin_handler.rb
+++ b/lib/aethyr/core/input_handlers/admin/admin_handler.rb
@@ -24,13 +24,6 @@ module Aethyr
 
         output << "(#{output.length} lines shown.)"
       end
-
-      #Looks in player's inventory and room for name.
-      #Then checks at global level for GOID.
-      def find_object(name, event)
-        $manager.find(name, event[:player]) || $manager.find(name, event[:player].container) || $manager.get_object(name)
-      end
-
     end
   end
 end
-- 
GitLab