home · contact · privacy
7DRL: Make "Things here" window scrollable.
[plomrogue] / roguelike-server
index 792b7c4f47db887b5593b49c256b37b55d1b4ef8..959d769ea899e0eb6cfbae6315cc7af0f9d6df5e 100755 (executable)
@@ -614,12 +614,13 @@ def log_help():
     strong_write(io_db["file_out"], "LOG "
                  + "Some objects can be used (such as: eaten) by 'u' if "
                  + "they are in your inventory. "
-                 + "Use 'UP'/'DOWN' to navigate the inventory.\n")
+                 + "Use 'Up'/'Down' to navigate the inventory.\n")
     strong_write(io_db["file_out"], "LOG "
                  + "Use 'l' to toggle 'look' mode (move an exploration cursor "
                  + "instead of the player over the map).\n")
+    strong_write(io_db["file_out"], "LOG "
+                 + "Use 'PgUp'/PgDn' to scroll the 'Things here' window.\n")
     strong_write(io_db["file_out"], "LOG See README file for more details.\n")
-    strong_write(io_db["file_out"], "LOG \n")
 
 
 def decrement_lifepoints(t):
@@ -809,7 +810,8 @@ def actor_move(t):
                     strong_write(io_db["file_out"], "LOG With your "  # #
                                                     + axe_name  # #
                                                     + ", you chop!\n")  # #
-                    add_gods_favor(-1)  # #
+                    if ord("X") == world_db["MAP"][pos]:  # #
+                        add_gods_favor(-1)  # #
                 chop_power = world_db["ThingTypes"][type]["TT_TOOLPOWER"]
                 case_X = world_db["MAP"][pos] == ord("X")  # #
                 if (chop_power > 0  # #
@@ -820,7 +822,8 @@ def actor_move(t):
                     if t == world_db["Things"][0]:  # #
                         strong_write(io_db["file_out"],  # #
                                      "LOG You chop it down.\n")  # #
-                    add_gods_favor(-10)  # #
+                    if world_db["MAP"][pos] == ord("X"):  # #
+                        add_gods_favor(-10)  # #
                     world_db["MAP"][pos] = ord(".")   # #
                     i = 3 if case_X else 1  # #
                     for i in range(i):  # #
@@ -990,23 +993,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  # #
@@ -1416,6 +1427,7 @@ def command_quit():
 
 def command_thingshere(str_y, str_x):
     """Write to out file list of Things known to player at coordinate y, x."""
+    # 7DRL: terrain, too
     if world_db["WORLD_ACTIVE"]:
         y = integer_test(str_y, 0, 255)
         x = integer_test(str_x, 0, 255)
@@ -1423,6 +1435,20 @@ 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")
+            pos = y * world_db["MAP_LENGTH"] + x;  # #
+            if world_db["Things"][0]["T_MEMMAP"][pos] == ord("~"):  # #
+                name = "(terrain: SEA)"  # #
+            elif world_db["Things"][0]["T_MEMMAP"][pos] == ord("."):  # #
+                name = "(terrain: EARTH)"  # #
+            elif world_db["Things"][0]["T_MEMMAP"][pos] == ord(":"):  # #
+                name = "(terrain: SOIL)"  # #
+            elif world_db["Things"][0]["T_MEMMAP"][pos] == ord("X"):  # #
+                name = "(terrain: TREE)"  # #
+            elif world_db["Things"][0]["T_MEMMAP"][pos] == ord("|"):  # #
+                name = "(terrain: WALL)"  # #
+            elif world_db["Things"][0]["T_MEMMAP"][pos] == ord("_"):  # #
+                name = "(terrain: ALTAR)"  # #
+            strong_write(io_db["file_out"], name + "\n")  # #
             if "v" == chr(world_db["Things"][0]["fovmap"][pos]):
                 for id in world_db["Things"]:
                     if y == world_db["Things"][id]["T_POSY"] \