home · contact · privacy
Server, plugin: Refactor command_ttid plugin hooking.
[plomrogue] / server / commands.py
index 3717202e38354c7b38eb585ac2d948870dae5b69..90de4a9f05092086caf050f441e27672ab72d530 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"]
@@ -84,8 +87,8 @@ def command_makeworld(seed_string):
     """Call make_world()."""
     val = integer_test(seed_string, 0, 4294967295)
     if None != val:
-        from server.config.misc import make_world_func
-        make_world_func(val)
+        from server.make_world import make_world
+        make_world(val)
 
 
 def command_maplength(maplength_string):
@@ -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,7 @@ 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.")
 
 
 def command_tid(id_string):
@@ -144,34 +149,28 @@ def command_tid(id_string):
 
     Default new Thing's type to the first available ThingType, others: zero.
     """
-    id = id_setter(id_string, "Things", command_tid)
-    if None != id:
+    tid = id_setter(id_string, "Things", command_tid)
+    if None != tid:
         if world_db["ThingTypes"] == {}:
             print("Ignoring: No ThingType to settle new Thing in.")
             return
-        type = list(world_db["ThingTypes"].keys())[0]
+        ty = list(world_db["ThingTypes"].keys())[0]
         from server.new_thing import new_Thing
-        world_db["Things"][id] = new_Thing(type)
+        world_db["Things"][tid] = new_Thing(ty)
 
 
 def command_ttid(id_string):
     """Set ID of ThingType to manipulate. ID unused? Create new one.
 
-    Default new ThingType's TT_SYMBOL to "?", TT_CORPSE_ID to self, TT_TOOL to
-    "", others: 0. 
+    Set new type's TT_CORPSE_ID to self, other fields to thingtype_defaults.
     """
-    id = id_setter(id_string, "ThingTypes", command_ttid)
-    if None != id:
-        world_db["ThingTypes"][id] = {
-            "TT_NAME": "(none)",
-            "TT_TOOLPOWER": 0,
-            "TT_LIFEPOINTS": 0,
-            "TT_PROLIFERATE": 0,
-            "TT_START_NUMBER": 0,
-            "TT_SYMBOL": "?",
-            "TT_CORPSE_ID": id,
-            "TT_TOOL": ""
-        }
+    ttid = id_setter(id_string, "ThingTypes", command_ttid)
+    if None != ttid:
+        from server.config.world_data import thingtype_defaults
+        world_db["ThingTypes"][ttid] = {}
+        for key in thingtype_defaults:
+            world_db["ThingTypes"][ttid][key] = thingtype_defaults[key]
+        world_db["ThingTypes"][ttid]["TT_CORPSE_ID"] = ttid
 
 
 def command_taid(id_string):
@@ -179,9 +178,9 @@ def command_taid(id_string):
 
     Default new ThingAction's TA_EFFORT to 1, its TA_NAME to "wait".
     """
-    id = id_setter(id_string, "ThingActions", command_taid, True)
-    if None != id:
-        world_db["ThingActions"][id] = {
+    taid = id_setter(id_string, "ThingActions", command_taid, True)
+    if None != taid:
+        world_db["ThingActions"][taid] = {
             "TA_EFFORT": 1,
             "TA_NAME": "wait"
         }
@@ -310,16 +309,13 @@ def command_taname(name):
        or name == "pickup":
         world_db["ThingActions"][command_taid.id]["TA_NAME"] = name
         if 1 == world_db["WORLD_ACTIVE"]:
-            wait_defined = False
             for id in world_db["ThingActions"]:
                 if "wait" == world_db["ThingActions"][id]["TA_NAME"]:
-                    wait_defined = True
                     break
-            if not wait_defined:
+            else:
                 set_world_inactive()
     else:
         print("Ignoring: Invalid action name.")
-    # In contrast to the original,naming won't map a function to a ThingAction.
 
 
 def setter(category, key, min, max=None):
@@ -511,6 +507,6 @@ def play_move(str_arg):
 
 def command_ai():
     """Call ai() on player Thing, then turn_over()."""
-    from server.config.actions import ai_func
-    ai_func(world_db["Things"][0])
+    from server.ai import ai
+    ai(world_db["Things"][0])
     turn_over()