home · contact · privacy
Plugin: Add altar re-spawning of died-out species.
[plomrogue] / plugins / server / PleaseTheIslandGod.py
index f513300209122f240f762cfd829ca45ff8665524..80ace76bfbea2b11670bd1612daa6987368e1c2f 100644 (file)
@@ -319,9 +319,9 @@ def actor_use(t):
 
 def decrement_lifepoints(t):
     t["T_LIFEPOINTS"] -= 1
+    live_type = t["T_TYPE"]
     _id = [_id for _id in world_db["Things"] if world_db["Things"][_id] == t][0]
     if 0 == t["T_LIFEPOINTS"]:
-        sadness = world_db["ThingTypes"][t["T_TYPE"]]["TT_LIFEPOINTS"]
         for id in t["T_CARRIES"]:
             t["T_CARRIES"].remove(id)
             world_db["Things"][id]["T_POSY"] = t["T_POSY"]
@@ -337,7 +337,17 @@ def decrement_lifepoints(t):
             t["T_MEMMAP"] = False
             t["T_MEMDEPTHMAP"] = False
             t["T_MEMTHING"] = []
-        return sadness
+            n_species = len([id for id in world_db["Things"]
+                             if world_db["Things"][id]["T_TYPE"] == live_type])
+            if 0 == n_species:
+                from server.new_thing import new_Thing
+                id = id_setter(-1, "Things")
+                world_db["Things"][id] = new_Thing(live_type,
+                                                   world_db["altar"])
+                log("The " + world_db["ThingTypes"][live_type]["TT_NAME"]
+                    + " species has temporarily died out. "
+                    + "One new-born is spawned at the altar.")
+        return world_db["ThingTypes"][t["T_TYPE"]]["TT_LIFEPOINTS"]
     return 0
 
 def actor_move(t):
@@ -713,6 +723,22 @@ def calc_effort(thing_action, thing):
         effort = 1 if effort == 0 else effort
     return effort
 
+def play_pickup():
+    """Try "pickup" as player's T_COMMAND"."""
+    if action_exists("pickup"):
+        t = world_db["Things"][0]
+        ids = [id for id in world_db["Things"] if id
+               if not world_db["Things"][id]["carried"]
+               if world_db["Things"][id]["T_POSY"] == t["T_POSY"]
+               if world_db["Things"][id]["T_POSX"] == t["T_POSX"]]
+        if not len(ids):
+            log("NOTHING to pick up.")
+        elif len(t["T_CARRIES"]) >= world_db["ThingTypes"][t["T_TYPE"]] \
+                ["TT_STORAGE"]:
+            log("CAN'T pick up: No storage room to carry anything more.")
+        else:
+            set_command("pickup")
+
 strong_write(io_db["file_out"], "PLUGIN PleaseTheIslandGod\n")
 
 if not "GOD_FAVOR" in world_db:
@@ -770,6 +796,7 @@ commands_db["LUMBER"] = (1, False, specialtypesetter("LUMBER"))
 commands_db["EMPATHY"] = (1, False, setter(None, "EMPATHY", 0, 1))
 commands_db["use"] = (1, False, play_use)
 commands_db["move"] = (1, False, play_move)
+commands_db["pickup"] = (0, False, play_pickup)
 
 import server.config.misc
 server.config.misc.make_map_func = make_map