From 4f88b914763e1a8e3ab8889d4affc6205b158e9b Mon Sep 17 00:00:00 2001 From: Christian Heller Date: Mon, 29 Feb 2016 02:24:47 +0100 Subject: [PATCH] Server, plugin: Refactor play_pickup plugin hooking. --- plugins/server/PleaseTheIslandGod.py | 24 +++++++----------------- server/commands.py | 11 ++++++----- server/config/commands.py | 1 + 3 files changed, 14 insertions(+), 22 deletions(-) diff --git a/plugins/server/PleaseTheIslandGod.py b/plugins/server/PleaseTheIslandGod.py index 0159f66..fba17fc 100644 --- a/plugins/server/PleaseTheIslandGod.py +++ b/plugins/server/PleaseTheIslandGod.py @@ -388,6 +388,12 @@ def play_use_attempt_hook(t, tt): elif type == world_db["SLIPPERS"]: return True +def play_pickup_attempt_hook(t): + if len(t["T_CARRIES"]) >= world_db["ThingTypes"][t["T_TYPE"]]["TT_STORAGE"]: + log("CAN'T pick up: No storage room to carry anything more.") + return False + return True + def specialtypesetter(name): def helper(str_int): val = integer_test(str_int, 0) @@ -463,22 +469,6 @@ 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") def set_zero_if_undefined(key): @@ -529,12 +519,12 @@ commands_db["PLANT_0"] = (1, False, specialtypesetter("PLANT_0")) commands_db["PLANT_1"] = (1, False, specialtypesetter("PLANT_1")) commands_db["LUMBER"] = (1, False, specialtypesetter("LUMBER")) commands_db["EMPATHY"] = (1, False, setter(None, "EMPATHY", 0, 1)) -commands_db["pickup"] = (0, False, play_pickup) import server.config.commands server.config.commands.command_worldactive_test_hook = \ command_worldactive_test_hook server.config.commands.play_move_attempt_hook = play_move_attempt_hook server.config.commands.play_use_attempt_hook = play_use_attempt_hook +server.config.commands.play_pickup_attempt_hook = play_pickup_attempt_hook import server.config.misc server.config.misc.make_map_func = make_map diff --git a/server/commands.py b/server/commands.py index 493fb76..7755f88 100644 --- a/server/commands.py +++ b/server/commands.py @@ -440,13 +440,14 @@ 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"]] + ids = [tid for tid in world_db["Things"] if tid + if not world_db["Things"][tid]["carried"] + if world_db["Things"][tid]["T_POSY"] == t["T_POSY"] + if world_db["Things"][tid]["T_POSX"] == t["T_POSX"]] + from server.config.commands import play_pickup_attempt_hook if not len(ids): log("NOTHING to pick up.") - else: + elif play_pickup_attempt_hook(t): set_command("pickup") diff --git a/server/config/commands.py b/server/config/commands.py index 60b77fc..ec5583a 100644 --- a/server/config/commands.py +++ b/server/config/commands.py @@ -70,3 +70,4 @@ commands_db = { command_worldactive_test_hook = lambda: True play_move_attempt_hook = lambda x, y, z: False play_use_attempt_hook = lambda x, y: None +play_pickup_attempt_hook = lambda x: True -- 2.30.2