From: Christian Heller <c.heller@plomlompom.de>
Date: Mon, 29 Feb 2016 02:10:05 +0000 (+0100)
Subject: Server, plugin: Refactor thing proliferation.
X-Git-Tag: tce~114
X-Git-Url: https://plomlompom.com/repos/%7B%7Bprefix%7D%7D/%7B%7B%20web_path%20%7D%7D/static/balance?a=commitdiff_plain;h=5b2e37b6247c2853a7cedaa70e0de37815365d18;p=plomrogue

Server, plugin: Refactor thing proliferation.
---

diff --git a/plugins/server/PleaseTheIslandGod.py b/plugins/server/PleaseTheIslandGod.py
index 95b46d0..d3a5239 100644
--- a/plugins/server/PleaseTheIslandGod.py
+++ b/plugins/server/PleaseTheIslandGod.py
@@ -46,16 +46,16 @@ def make_map():
             world_db["altar"] = (y, x)
             altar_placed = True
 
-def field_spreadable(c, t):
+def thingprol_field_spreadable(c, t):
     return ":" == c or (world_db["ThingTypes"][t["T_TYPE"]]["TT_LIFEPOINTS"]
                         and "." == c)
 
-def thingprol_plugin_conditions(t):
+def thingprol_test(t):
     tt = world_db["ThingTypes"][t["T_TYPE"]]
     return (tt["TT_LIFEPOINTS"] == 0 or \
             t["T_LIFEPOINTS"] >= 0.9 * tt["TT_LIFEPOINTS"])
 
-def thingprol_plugin_post_create_hook(t):
+def thingprol_post_create(t):
     tt = world_db["ThingTypes"][t["T_TYPE"]]
     if (world_db["FAVOR_STAGE"] > 0 and t["T_TYPE"] == world_db["PLANT_0"]):
         world_db["GOD_FAVOR"] += 5
@@ -492,6 +492,9 @@ io_db["worldstate_write_order"] += [[write_metamap_B, "func"]]
 
 import server.config.world_data
 server.config.world_data.symbols_passable += ":_"
+server.config.world_data.thingprol_field_spreadable = thingprol_field_spreadable
+server.config.world_data.thingprol_test_hook = thingprol_test
+server.config.world_data.thingprol_post_create_hook = thingprol_post_create
 
 from server.config.world_data import thing_defaults, thingtype_defaults
 thing_defaults["T_PLAYERDROP"] = 0
@@ -536,12 +539,5 @@ server.config.make_world_helpers.pos_test = pos_test
 server.config.make_world_helpers.world_makable = world_makable
 server.config.make_world_helpers.make_map = make_map
 
-import server.config.thingproliferation
-server.config.thingproliferation.field_spreadable = field_spreadable
-server.config.thingproliferation.thingprol_plugin_conditions = \
-    thingprol_plugin_conditions
-server.config.thingproliferation.thingprol_plugin_post_create_hook = \
-    thingprol_plugin_post_create_hook
-
 import server.config.ai
 server.config.ai.ai_hook_pickup = ai_hook_pickup_test
diff --git a/server/config/thingproliferation.py b/server/config/thingproliferation.py
deleted file mode 100644
index 3e55c8b..0000000
--- a/server/config/thingproliferation.py
+++ /dev/null
@@ -1,11 +0,0 @@
-# This file is part of PlomRogue. PlomRogue is licensed under the GPL version 3
-# or any later version. For details on its copyright, license, and warranties,
-# see the file NOTICE in the root directory of the PlomRogue source package.
-
-
-from server.config.world_data import symbols_passable
-
-
-field_spreadable = lambda x, y: x in symbols_passable
-thingprol_plugin_conditions = lambda x: True
-thingprol_plugin_post_create_hook = lambda x: None
diff --git a/server/config/world_data.py b/server/config/world_data.py
index dcedabd..f9e5494 100644
--- a/server/config/world_data.py
+++ b/server/config/world_data.py
@@ -50,3 +50,7 @@ thingtype_defaults = {
 }
 
 symbols_passable = "."
+
+thingprol_field_spreadable = lambda x, y: x in symbols_passable
+thingprol_test_hook = lambda x: True
+thingprol_post_create_hook = lambda x: None
diff --git a/server/thingproliferation.py b/server/thingproliferation.py
index fec8eb4..90230d1 100644
--- a/server/thingproliferation.py
+++ b/server/thingproliferation.py
@@ -10,21 +10,21 @@ def thingproliferation(t, prol_map):
     marked passable in prol_map. If there are several map cell candidates, one
     is selected randomly.
     """
-    from server.config.world_data import directions_db, world_db
-    from server.config.thingproliferation import field_spreadable, \
-        thingprol_plugin_conditions, thingprol_plugin_post_create_hook
+    from server.config.world_data import directions_db, world_db, \
+        thingprol_field_spreadable, thingprol_test_hook, \
+        thingprol_post_create_hook
     from server.utils import mv_yx_in_dir_legal, rand, id_setter
     from server.new_thing import new_Thing
     prolscore = world_db["ThingTypes"][t["T_TYPE"]]["TT_PROLIFERATE"]
     if prolscore and (1 == prolscore or 1 == (rand.next() % prolscore)) and \
-        thingprol_plugin_conditions(t):
+        thingprol_test_hook(t):
         candidates = []
         for key in sorted(directions_db.keys()):
             mv_result = mv_yx_in_dir_legal(directions_db[key], t["T_POSY"],
                                            t["T_POSX"])
             c = chr(prol_map[mv_result[1] * world_db["MAP_LENGTH"]
                 + mv_result[2]])
-            if mv_result[0] and field_spreadable(c, t):
+            if mv_result[0] and thingprol_field_spreadable(c, t):
                 from server.io import log
                 log("PROL")
                 candidates.append((mv_result[1], mv_result[2]))
@@ -33,4 +33,4 @@ def thingproliferation(t, prol_map):
             tid = id_setter(-1, "Things")
             newT = new_Thing(t["T_TYPE"], (candidates[i][0], candidates[i][1]))
             world_db["Things"][tid] = newT
-            thingprol_plugin_post_create_hook(t)
+            thingprol_post_create_hook(t)