home · contact · privacy
Server: Also use symbols_passable direction in thingproliferation().
[plomrogue] / server / world.py
index a05a010dc4636310e4c95b259862b802c07119af..e50774ca716158e4ce42415a25485f82ec461347 100644 (file)
@@ -8,19 +8,18 @@ def thingproliferation(t, prol_map):
     """To chance of 1/TT_PROLIFERATE, create t offspring in open neighbor cell.
 
     Naturally only works with TT_PROLIFERATE > 0. The neighbor cell must be be
-    marked '.' in prol_map. If there are several map cell candidates, one is
+    marked "." in prol_map. If there are several map cell candidates, one is
     selected randomly.
     """
-    from server.config.world_data import directions_db
+    from server.config.world_data import directions_db, symbols_passable
     from server.utils import mv_yx_in_dir_legal
     prolscore = world_db["ThingTypes"][t["T_TYPE"]]["TT_PROLIFERATE"]
     if prolscore and (1 == prolscore or 1 == (rand.next() % prolscore)):
         candidates = []
         for dir in [directions_db[key] for key in sorted(directions_db.keys())]:
             mv_result = mv_yx_in_dir_legal(dir, t["T_POSY"], t["T_POSX"])
-            if mv_result[0] and  ord('.') == prol_map[mv_result[1]
-                                                      * world_db["MAP_LENGTH"]
-                                                      + mv_result[2]]:
+            c = prol_map[mv_result[1] + world_db["MAP_LENGTH"] + mv_result[2]]
+            if mv_result[0] and c in symbols_passable:
                 candidates.append((mv_result[1], mv_result[2]))
         if len(candidates):
             i = rand.next() % len(candidates)
@@ -235,6 +234,7 @@ def make_world(seed):
     of ID = world["PLAYER_TYPE"]. Place Things randomly, and actors not on each
     other. Init player's memory map. Write "NEW_WORLD" line to out file.
     """
+    from server.config.world_data import symbols_passable
 
     def free_pos():
         i = 0
@@ -243,7 +243,8 @@ def make_world(seed):
             while 1:
                 y = rand.next() % world_db["MAP_LENGTH"]
                 x = rand.next() % world_db["MAP_LENGTH"]
-                if "." == chr(world_db["MAP"][y * world_db["MAP_LENGTH"] + x]):
+                if chr(world_db["MAP"][y * world_db["MAP_LENGTH"] + x]) in \
+                    symbols_passable:
                     break
                 i += 1
                 if i == 65535: