home · contact · privacy
Server, plugin: Refactor play_use plugin hooking.
[plomrogue] / server / commands.py
index 40f98edd4c26f0ee41e2eeba0eb6c3dad9db3b1c..493fb761d46058b4751e643b93417566c893e1a3 100644 (file)
@@ -474,10 +474,13 @@ def play_use(str_arg):
         else:
             val = integer_test(str_arg, 0, 255)
             if None != val and val < len(t["T_CARRIES"]):
-                id = t["T_CARRIES"][val]
-                type = world_db["Things"][id]["T_TYPE"]
-                if not world_db["ThingTypes"][type]["TT_TOOL"] == "food":
-                    log("You CAN'T consume this thing.")
+                tid = t["T_CARRIES"][val]
+                tt = world_db["ThingTypes"][world_db["Things"][tid]["T_TYPE"]]
+                from server.config.commands import play_use_attempt_hook
+                hook_test = play_use_attempt_hook(t, tt)
+                if not (tt["TT_TOOL"] == "food" or hook_test):
+                    if hook_test != False:
+                        log("You CAN'T use this thing.")
                     return
                 world_db["Things"][0]["T_ARGUMENT"] = val
                 set_command("use")
@@ -493,16 +496,19 @@ def play_move(str_arg):
         if not str_arg in directions_db:
             print("Illegal move direction string.")
             return
-        dir = ord(directions_db[str_arg])
+        d = ord(directions_db[str_arg])
         from server.utils import mv_yx_in_dir_legal
-        move_result = mv_yx_in_dir_legal(chr(dir), t["T_POSY"], t["T_POSX"])
+        move_result = mv_yx_in_dir_legal(chr(d), t["T_POSY"], t["T_POSX"])
         if 1 == move_result[0]:
             pos = (move_result[1] * world_db["MAP_LENGTH"]) + move_result[2]
             if ord("~") == world_db["MAP"][pos]:
                 log("You can't SWIM.")
                 return
+            from server.config.commands import play_move_attempt_hook
+            if play_move_attempt_hook(t, d, pos):
+                return
             if chr(world_db["MAP"][pos]) in symbols_passable:
-                world_db["Things"][0]["T_ARGUMENT"] = dir
+                world_db["Things"][0]["T_ARGUMENT"] = d
                 set_command("move")
                 return
         log("You CAN'T move there.")