home · contact · privacy
7DRL: Let animals proliferate on all open map cells, not just soil.
authorChristian Heller <c.heller@plomlompom.de>
Fri, 13 Mar 2015 05:26:20 +0000 (06:26 +0100)
committerChristian Heller <c.heller@plomlompom.de>
Fri, 13 Mar 2015 05:26:20 +0000 (06:26 +0100)
roguelike-server

index 792b7c4f47db887b5593b49c256b37b55d1b4ef8..d1a3a0adebc092705415e80f8ce5943023d8a361 100755 (executable)
@@ -990,23 +990,31 @@ def thingproliferation(t, prol_map):
     selected randomly.
     """
     # 7DRL: success increments God's mood
-    # 7DRL: Things proliferate only on ":" ground.
+    # 7DRL: Plants (no TT_LIFEPOINTS) proliferate only on ":" ground.
     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 directions_db]:
             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]  # #
+            pos = mv_result[1] * world_db["MAP_LENGTH"] + mv_result[2]
+            if mv_result[0] and \
+               (ord(":") == prol_map[pos]  # #
+                or (world_db["ThingTypes"][t["T_TYPE"]]["TT_LIFEPOINTS"]  # #
+                    and ord(".") == prol_map[pos])):
             # if mv_result[0] and ord(".") == prol_map[mv_result[1]
-                                                     * world_db["MAP_LENGTH"]
-                                                     + mv_result[2]]:
+                                                     * world_db["MAP_LENGTH"]
+                                                     + mv_result[2]]:
                 candidates.append((mv_result[1], mv_result[2]))
         if len(candidates):
             i = rand.next() % len(candidates)
             id = id_setter(-1, "Things")
             newT = new_Thing(t["T_TYPE"], (candidates[i][0], candidates[i][1]))
             world_db["Things"][id] = newT
-            world_db["GOD_MOOD"] += 1  # #
+            animacy = world_db["ThingTypes"][t["T_TYPE"]]["TT_LIFEPOINTS"]  # #
+            if animacy:  # #
+                world_db["GOD_MOOD"] += animacy  # #
+            else:  # #
+                world_db["GOD_MOOD"] += 1  # #
             if (world_db["FAVOR_STAGE"] > 0  # #
                 and t["T_TYPE"] == world_db["PLANT_0"]):  # #
                 world_db["GOD_FAVOR"] += 5  # #