From: Christian Heller 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%7Bdb.prefix%7D%7D/%7B%7B%20web_path%20%7D%7D/decks/%7B%7Bprefix%7D%7D/foo.html?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)