home · contact · privacy
7DRL: Wounding (worse: killing) other creatures lowers God's favor.
[plomrogue] / roguelike-server
index fcdf0ff7da59af8545bb421d2ed015e7ffbb0779..ffc75e664c2bf9676ed46f882498e803ae3f570e 100755 (executable)
@@ -330,7 +330,7 @@ def try_worldstate_update():
                 type_id = world_db["Things"][id]["T_TYPE"]
                 name = world_db["ThingTypes"][type_id]["TT_NAME"]
                 inventory = inventory + name + "\n"
                 type_id = world_db["Things"][id]["T_TYPE"]
                 name = world_db["ThingTypes"][type_id]["TT_NAME"]
                 inventory = inventory + name + "\n"
-        ## 7DRL additions:  GOD_MOOD, GOD_FAVOR
+        # # 7DRL additions:  GOD_MOOD, GOD_FAVOR
         string = str(world_db["TURN"]) + "\n" + \
                  str(world_db["GOD_MOOD"]) + "\n" + \
                  str(world_db["GOD_FAVOR"]) + "\n" + \
         string = str(world_db["TURN"]) + "\n" + \
                  str(world_db["GOD_MOOD"]) + "\n" + \
                  str(world_db["GOD_FAVOR"]) + "\n" + \
@@ -582,8 +582,12 @@ def decrement_lifepoints(t):
     If t is the player avatar, only blank its fovmap, so that the client may
     still display memory data. On non-player things, erase fovmap and memory.
     """
     If t is the player avatar, only blank its fovmap, so that the client may
     still display memory data. On non-player things, erase fovmap and memory.
     """
+    # # 7DRL: also decrements God's mood; deaths heavily so
+    # # 7DRL: return 1 if death, else 0
     t["T_LIFEPOINTS"] -= 1
     t["T_LIFEPOINTS"] -= 1
+    world_db["GOD_MOOD"] -= 1  # #
     if 0 == t["T_LIFEPOINTS"]:
     if 0 == t["T_LIFEPOINTS"]:
+        world_db["GOD_MOOD"] -= 9  # #
         t["T_TYPE"] = world_db["ThingTypes"][t["T_TYPE"]]["TT_CORPSE_ID"]
         if world_db["Things"][0] == t:
             t["fovmap"] = bytearray(b' ' * (world_db["MAP_LENGTH"] ** 2))
         t["T_TYPE"] = world_db["ThingTypes"][t["T_TYPE"]]["TT_CORPSE_ID"]
         if world_db["Things"][0] == t:
             t["fovmap"] = bytearray(b' ' * (world_db["MAP_LENGTH"] ** 2))
@@ -593,6 +597,8 @@ def decrement_lifepoints(t):
             t["T_MEMMAP"] = False
             t["T_MEMDEPTHMAP"] = False
             t["T_MEMTHING"] = []
             t["T_MEMMAP"] = False
             t["T_MEMDEPTHMAP"] = False
             t["T_MEMTHING"] = []
+        return 1  # #
+    return 0  # #
 
 
 def mv_yx_in_dir_legal(dir, y, x):
 
 
 def mv_yx_in_dir_legal(dir, y, x):
@@ -612,6 +618,7 @@ def actor_wait(t):
 
 def actor_move(t):
     """If passable, move/collide(=attack) thing into T_ARGUMENT's direction."""
 
 def actor_move(t):
     """If passable, move/collide(=attack) thing into T_ARGUMENT's direction."""
+    # # 7DRL: Player wounding (worse: killing) others will lower God's favor.
     passable = False
     move_result = mv_yx_in_dir_legal(chr(t["T_ARGUMENT"]),
                                      t["T_POSY"], t["T_POSX"])
     passable = False
     move_result = mv_yx_in_dir_legal(chr(t["T_ARGUMENT"]),
                                      t["T_POSY"], t["T_POSX"])
@@ -628,13 +635,16 @@ def actor_move(t):
             if t == world_db["Things"][0]:
                 hitted_type = world_db["Things"][hit_id]["T_TYPE"]
                 hitted_name = world_db["ThingTypes"][hitted_type]["TT_NAME"]
             if t == world_db["Things"][0]:
                 hitted_type = world_db["Things"][hit_id]["T_TYPE"]
                 hitted_name = world_db["ThingTypes"][hitted_type]["TT_NAME"]
-                strong_write(io_db["file_out"], "LOG You wound " + hitted +
-                                                ".\n")
+                strong_write(io_db["file_out"], "LOG You wound " + hitted_name
+                                                + ".\n")
+                world_db["GOD_FAVOR"] -= 1  # #
             elif 0 == hit_id:
                 hitter_name = world_db["ThingTypes"][t["T_TYPE"]]["TT_NAME"]
                 strong_write(io_db["file_out"], "LOG " + hitter_name +
                                                 " wounds you.\n")
             elif 0 == hit_id:
                 hitter_name = world_db["ThingTypes"][t["T_TYPE"]]["TT_NAME"]
                 strong_write(io_db["file_out"], "LOG " + hitter_name +
                                                 " wounds you.\n")
-            decrement_lifepoints(world_db["Things"][hit_id])
+            test = decrement_lifepoints(world_db["Things"][hit_id])  # #
+            if test and t == world_db["Things"][0]:  # #
+                world_db["GOD_FAVOR"] -= 10  # #
             return
     dir = [dir for dir in directions_db
            if directions_db[dir] == chr(t["T_ARGUMENT"])][0]
             return
     dir = [dir for dir in directions_db
            if directions_db[dir] == chr(t["T_ARGUMENT"])][0]
@@ -720,6 +730,7 @@ def thingproliferation(t):
     animate, any other animate Thing. If there are several map cell candidates,
     one is selected randomly.
     """
     animate, any other animate Thing. If there are several map cell candidates,
     one is selected randomly.
     """
+    # # 7DRL: success increments God's mood
     def test_cell(t, y, x):
         if "." == chr(world_db["MAP"][(y * world_db["MAP_LENGTH"]) + x]):
             for id in [id for id in world_db["Things"]
     def test_cell(t, y, x):
         if "." == chr(world_db["MAP"][(y * world_db["MAP_LENGTH"]) + x]):
             for id in [id for id in world_db["Things"]
@@ -743,6 +754,7 @@ def thingproliferation(t):
             id = id_setter(-1, "Things")
             newT = new_Thing(t["T_TYPE"], (candidates[i][0], candidates[i][1]))
             world_db["Things"][id] = newT
             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  # #
 
 
 def try_healing(t):
 
 
 def try_healing(t):
@@ -750,6 +762,7 @@ def try_healing(t):
 
     On success, decrease satiation score by 32.
     """
 
     On success, decrease satiation score by 32.
     """
+    # # 7DRL: Successful heals increment God's mood.
     if t["T_SATIATION"] > 0 \
        and t["T_LIFEPOINTS"] < \
            world_db["ThingTypes"][t["T_TYPE"]]["TT_LIFEPOINTS"] \
     if t["T_SATIATION"] > 0 \
        and t["T_LIFEPOINTS"] < \
            world_db["ThingTypes"][t["T_TYPE"]]["TT_LIFEPOINTS"] \
@@ -758,6 +771,7 @@ def try_healing(t):
                               if world_db["ThingActions"][id]["TA_NAME"] ==
                                  "wait"][0]:
         t["T_LIFEPOINTS"] += 1
                               if world_db["ThingActions"][id]["TA_NAME"] ==
                                  "wait"][0]:
         t["T_LIFEPOINTS"] += 1
+        world_db["GOD_MOOD"] += 1  # #
         t["T_SATIATION"] -= 32
         if t == world_db["Things"][0]:
             strong_write(io_db["file_out"], "LOG You heal.\n")
         t["T_SATIATION"] -= 32
         if t == world_db["Things"][0]:
             strong_write(io_db["file_out"], "LOG You heal.\n")
@@ -1010,7 +1024,7 @@ def ai(t):
     none, they will explore parts of the map unseen since ever or for at least
     one turn; if there is nothing to explore, they will simply wait.
     """
     none, they will explore parts of the map unseen since ever or for at least
     one turn; if there is nothing to explore, they will simply wait.
     """
-    # 7DRL add: Don't pick up or search things when inventory is full.
+    # 7DRL add: Don't pick up or search things when inventory is full.
     t["T_COMMAND"] = [id for id in world_db["ThingActions"]
                       if world_db["ThingActions"][id]["TA_NAME"] == "wait"][0]
     if not get_dir_to_target(t, "f"):
     t["T_COMMAND"] = [id for id in world_db["ThingActions"]
                       if world_db["ThingActions"][id]["TA_NAME"] == "wait"][0]
     if not get_dir_to_target(t, "f"):