home · contact · privacy
Server, plugin: Abort command_worldactive checks as early as possible.
[plomrogue] / server / commands.py
index f20297d31da9041562a4acd9cdf44ecd130f3ba4..1ce6464a3527965e16da391940217f86cc9269c7 100644 (file)
@@ -49,6 +49,9 @@ def command_thingshere(str_y, str_x):
         if None != y and None != x and y < length and x < length:
             pos = (y * world_db["MAP_LENGTH"]) + x
             strong_write(io_db["file_out"], "THINGS_HERE START\n")
+            terrain = chr(world_db["Things"][0]["T_MEMMAP"][pos])
+            terrain_name = world_db["terrain_names"][terrain]
+            strong_write(io_db["file_out"], "terrain: " + terrain_name + "\n")
             if "v" == chr(world_db["Things"][0]["fovmap"][pos]):
                 for id in [id for tid in sorted(list(world_db["ThingTypes"]))
                               for id in world_db["Things"]
@@ -115,17 +118,19 @@ def command_worldactive(worldactive_string):
             else:
                 print("World already active.")
         elif 0 == world_db["WORLD_ACTIVE"]:
-            wait_exists = False
             for ThingAction in world_db["ThingActions"]:
                 if "wait" == world_db["ThingActions"][ThingAction]["TA_NAME"]:
-                    wait_exists = True
                     break
-            player_exists = False
+            else:
+                print("Ignored: No wait action defined for world to activate.")
+                return
             for Thing in world_db["Things"]:
                 if 0 == Thing:
-                    player_exists = True
                     break
-            if wait_exists and player_exists and world_db["MAP"]:
+            else:
+                print("Ignored: No player defined for world to activate.")
+                return
+            if world_db["MAP"]:
                 for id in world_db["Things"]:
                     if world_db["Things"][id]["T_LIFEPOINTS"]:
                         build_fov_map(world_db["Things"][id])
@@ -136,7 +141,8 @@ def command_worldactive(worldactive_string):
                     world_db["Things"][0]["fovmap"] = empty_fovmap
                 world_db["WORLD_ACTIVE"] = 1
             else:
-                print("Ignoring: Not all conditions for world activation met.")
+                print("Ignoring: No map defined for world to activate.")
+                return
 
 
 def command_tid(id_string):
@@ -499,6 +505,9 @@ def play_move(str_arg):
         move_result = mv_yx_in_dir_legal(chr(dir), 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
             if chr(world_db["MAP"][pos]) in symbols_passable:
                 world_db["Things"][0]["T_ARGUMENT"] = dir
                 set_command("move")