home · contact · privacy
Abolish upper ID limits.
authorChristian Heller <c.heller@plomlompom.de>
Tue, 25 Aug 2015 02:15:29 +0000 (04:15 +0200)
committerChristian Heller <c.heller@plomlompom.de>
Tue, 25 Aug 2015 02:15:29 +0000 (04:15 +0200)
SERVER_COMMANDS
plomrogue-server.py

index d49e1e16f53d28716822a86e23c526c7b3c300bd..cb1635da037ee7c736283ab6a00a56ebefefc8cd 100644 (file)
@@ -89,7 +89,7 @@ God commands
 TURN [0 to 65535]
 Set world turn to argument. (Initial value: 0.)
 
-PLAYER_TYPE [0 to 255]
+PLAYER_TYPE [0 to infinity]
 Set to argument ID of thing type into which a new world's player character will
 be generated. (Initial value: 0.)
 
@@ -117,7 +117,7 @@ action is defined, and a thing of ID 0 (= a player character) that is not part
 of any other thing's inventory, (re-)build all animate things' fields of view,
 and activate world. (Initial value: 0.)
 
-TA_ID [0 to 255]
+TA_ID [0 to infinity]
 Select thing action to manipulate by argument as ID. If argument is 0, change it
 to the lowest unused thing action ID greater than 0. If action of ID does not
 exist yet, create it with default name "wait" and default effort 1.
@@ -131,14 +131,14 @@ command). Legal worlds need at least one action of name "wait", so if this
 unsets the world's only "wait" action, the world is deactivated, and the
 ./server/worldstate file removed.
 
-T_ID [-32768 to 32767]
-Select thing to manipulate by argument as ID. If argument is <0 or >255, change
-it to the lowest unused thing ID. If thing of ID does not exist yet, create it
-with default position of y=0/x=0, the first thing type's ID, and that type's
+T_ID [-1 to infinity]
+Select thing to manipulate by argument as ID. If argument is <0, change it to
+the lowest unused thing ID. If thing of ID does not exist yet, create it with
+default position of y=0/x=0, the first thing type's ID, and that type's
 lifepoints value; if world is active and the thing is animate, build its field
 of view.
 
-T_TYPE [0 to 255]
+T_TYPE [0 to infinity]
 Set selected thing's type ID to argument, if the respective ThingType exists.
 
 T_POSY [0 to 255]
@@ -149,7 +149,7 @@ T_POSX [0 to 255]
 Set selected thing's map column position to argument. Delete thing's field of
 view and, if world is active, rebuild it.
 
-T_COMMAND [0 to 255]
+T_COMMAND [0 to infinity]
 Set to argument the action thing is currently performing, as identified by its
 thing action ID, if a thing action of that ID is defined. If argument is 0, the
 thing's command ID is set to that, implying that it is not performing any
@@ -171,7 +171,7 @@ below its thing type's initial lifepoints, there is a 1/32 chance each turn of
 waiting action that the thing's lifepoints will rise. For values affecting the
 thing's lifepoints negatively, see note on TT_LIFEPOINTS.
 
-T_CARRIES [0 to 255]
+T_CARRIES [0 to infinity]
 Add thing of ID in argument to inventory of selected thing, if said thing is
 available for carrying and not the selected thing.
 
@@ -183,15 +183,15 @@ T_MEMDEPTHMAP [0 to 255] [string]
 Set part of selected thing's game map memory depth map to string argument: the
 line of the argument's number.
 
-T_MEMTHING [0 to 255] [0 to 255] [0 to 255]
+T_MEMTHING [0 to infinity] [0 to 255] [0 to 255]
 Add to selected thing's memory of things on map thing of ID of first argument,
 y position of second argument and x position of third argument.
 
-TT_ID [-32768 to 32767]
-Select thing type to manipulate by argument as ID. If argument is < 0 or > 255,
-change it to the lowest unused thing type ID. If thing type of ID does not exist
-yet, create it with default name "(none)", corpse ID equal to the new thing
-type's ID, symbol "?", and remaining thing type attributes to 0.
+TT_ID [-1 to infinity]
+Select thing type to manipulate by argument as ID. If argument is < 0, change it
+to the lowest unused thing type ID. If thing type of ID does not exist yet,
+create it with default name "(none)", corpse ID equal to the new thing type's
+ID, symbol "?", and remaining thing type attributes to 0.
 
 TT_CONSUMABLE [0-65535]
 Set selected thing type's consumability value to argument – the number of
@@ -220,7 +220,7 @@ TT_NAME [string]
 Set selected thing type's name to argument. This name identifies things in the
 game log and the inventory.
 
-TT_CORPSE_ID [0-255]
+TT_CORPSE_ID [0 to infinity]
 Set to argument the ID of the thing type that things of the selected type
 transform into when their state changes from animate to inanimate.
 
index 204c131282d512fc20459c78ed32b21dde70a67c..772277c8b3916de15234d838004589a9dff210de 100755 (executable)
@@ -506,20 +506,23 @@ def set_world_inactive():
     world_db["WORLD_ACTIVE"] = 0
 
 
-def integer_test(val_string, min, max):
-    """Return val_string if possible integer >= min and <= max, else None."""
+def integer_test(val_string, min, max=None):
+    """Return val_string if integer >= min & (if max set) <= max, else None."""
     try:
         val = int(val_string)
-        if val < min or val > max:
+        if val < min or (max != None and val > max):
             raise ValueError
         return val
     except ValueError:
-        print("Ignoring: Please use integer >= " + str(min) + " and <= " +
-              str(max) + ".")
+        msg = "Ignoring: Please use integer >= " + str(min)
+        if max != None:
+            msg += " and <= " + str(max)
+        msg += "."
+        print(msg)
         return None
 
 
-def setter(category, key, min, max):
+def setter(category, key, min, max=None):
     """Build setter for world_db([category + "s"][id])[key] to >=min/<=max."""
     if category is None:
         def f(val_string):
@@ -1057,17 +1060,14 @@ def new_Thing(type, pos=(0, 0)):
 
 def id_setter(id, category, id_store=False, start_at_1=False):
     """Set ID of object of category to manipulate ID unused? Create new one.
-
     The ID is stored as id_store.id (if id_store is set). If the integer of the
-    input is valid (if start_at_1, >= 0 and <= 255, else >= -32768 and <=
-    32767), but <0 or (if start_at_1) <1, calculate new ID: lowest unused ID
-    >=0 or (if start_at_1) >= 1, and <= 255. None is always returned when no
-    new object is created, otherwise the new object's ID.
+    input is valid (if start_at_1, >= 0, else >= -1), but <0 or (if start_at_1)
+    <1, calculate new ID: lowest unused ID >=0 or (if start_at_1) >= 1. None is
+    always returned when no new object is created, else the new object's ID.
     """
-    min = 0 if start_at_1 else -32768
-    max = 255 if start_at_1 else 32767
+    min = 0 if start_at_1 else -1
     if str == type(id):
-        id = integer_test(id, min, max)
+        id = integer_test(id, min)
     if None != id:
         if id in world_db[category]:
             if id_store:
@@ -1075,15 +1075,12 @@ def id_setter(id, category, id_store=False, start_at_1=False):
             return None
         else:
             if (start_at_1 and 0 == id) \
-               or ((not start_at_1) and (id < 0 or id > 255)):
-                id = -1
+               or ((not start_at_1) and (id < 0)):
+                id = 0 if start_at_1 else -1
                 while 1:
                     id = id + 1
                     if id not in world_db[category]:
                         break
-                if id > 255:
-                    print("Ignoring: "
-                          "No unused ID available to add to ID list.")
                     return None
             if id_store:
                 id_store.id = id
@@ -1328,7 +1325,7 @@ test_Thing_id = test_for_id_maker(command_tid, "Thing")
 @test_Thing_id
 def command_tcommand(str_int):
     """Set T_COMMAND of selected Thing."""
-    val = integer_test(str_int, 0, 255)
+    val = integer_test(str_int, 0)
     if None != val:
         if 0 == val or val in world_db["ThingActions"]:
             world_db["Things"][command_tid.id]["T_COMMAND"] = val
@@ -1339,7 +1336,7 @@ def command_tcommand(str_int):
 @test_Thing_id
 def command_ttype(str_int):
     """Set T_TYPE of selected Thing."""
-    val = integer_test(str_int, 0, 255)
+    val = integer_test(str_int, 0)
     if None != val:
         if val in world_db["ThingTypes"]:
             world_db["Things"][command_tid.id]["T_TYPE"] = val
@@ -1354,7 +1351,7 @@ def command_tcarries(str_int):
     The ID int(str_int) must not be of the selected Thing, and must belong to a
     Thing with unset "carried" flag. Its "carried" flag will be set on owning.
     """
-    val = integer_test(str_int, 0, 255)
+    val = integer_test(str_int, 0)
     if None != val:
         if val == command_tid.id:
             print("Ignoring: Thing cannot carry itself.")
@@ -1375,7 +1372,7 @@ def command_tmemthing(str_t, str_y, str_x):
 
     The type must fit to an existing ThingType, and the position into the map.
     """
-    type = integer_test(str_t, 0, 255)
+    type = integer_test(str_t, 0)
     posy = integer_test(str_y, 0, 255)
     posx = integer_test(str_x, 0, 255)
     if None != type and None != posy and None != posx:
@@ -1472,7 +1469,7 @@ def command_ttsymbol(char):
 @test_ThingType_id
 def command_ttcorpseid(str_int):
     """Set TT_CORPSE_ID of selected ThingType."""
-    val = integer_test(str_int, 0, 255)
+    val = integer_test(str_int, 0)
     if None != val:
         if val in world_db["ThingTypes"]:
             world_db["ThingTypes"][command_ttid.id]["TT_CORPSE_ID"] = val
@@ -1540,7 +1537,7 @@ commands_db = {
     "SEED_MAP": (1, False, command_seedmap),
     "SEED_RANDOMNESS": (1, False, command_seedrandomness),
     "TURN": (1, False, setter(None, "TURN", 0, 65535)),
-    "PLAYER_TYPE": (1, False, setter(None, "PLAYER_TYPE", 0, 255)),
+    "PLAYER_TYPE": (1, False, setter(None, "PLAYER_TYPE", 0)),
     "MAP_LENGTH": (1, False, command_maplength),
     "WORLD_ACTIVE": (1, False, command_worldactive),
     "TA_ID": (1, False, command_taid),