X-Git-Url: https://plomlompom.com/repos/?a=blobdiff_plain;f=plugins%2Fserver%2FPleaseTheIslandGod.py;h=4629a15a03c73b2c4f26a3017e689ec346d9b3b2;hb=428f55c523a2995e6c4e80d4b4f7c8726202a5b4;hp=04ae0e16e59ea8bdae0bd8e834dd0d92c131c6d7;hpb=f8865085362ad23898ac4b6a00db3b915226d9d3;p=plomrogue diff --git a/plugins/server/PleaseTheIslandGod.py b/plugins/server/PleaseTheIslandGod.py index 04ae0e1..4629a15 100644 --- a/plugins/server/PleaseTheIslandGod.py +++ b/plugins/server/PleaseTheIslandGod.py @@ -253,20 +253,21 @@ def actor_move(t): from server.actions import actor_move test = actor_move(t) - if 2 == len(test): - if test[0] > 0: - if world_db["FAVOR_STAGE"] >= 3 and \ - test[1] == world_db["ANIMAL_0"]: - world_db["GOD_FAVOR"] += 125 + if test != None: + if 2 == len(test): + if test[0] > 0: + if world_db["FAVOR_STAGE"] >= 3 and \ + test[1] == world_db["ANIMAL_0"]: + world_db["GOD_FAVOR"] += 125 + elif t == world_db["Things"][0]: + world_db["GOD_FAVOR"] -= 2 * test[1] elif t == world_db["Things"][0]: - world_db["GOD_FAVOR"] -= 2 * test[1] - elif t == world_db["Things"][0]: - world_db["GOD_FAVOR"] -= 1 - elif 3 == len(test): - if (t == world_db["Things"][0] and - test[1] == world_db["altar"][0] and - test[2] == world_db["altar"][1]): - enter_altar() + world_db["GOD_FAVOR"] -= 1 + elif 3 == len(test): + if (t == world_db["Things"][0] and + test[1] == world_db["altar"][0] and + test[2] == world_db["altar"][1]): + enter_altar() def actor_move_attempts_hook(t, move_result, pos): if (ord("X") == world_db["MAP"][pos] or ord("|") == world_db["MAP"][pos]): @@ -290,10 +291,10 @@ def actor_move_attempts_hook(t, move_result, pos): world_db["GOD_FAVOR"] -= 10 world_db["MAP"][pos] = ord(".") i = 3 if case_X else 1 + from server.new_thing import new_Thing for i in range(i): tid = id_setter(-1, "Things") - world_db["Things"][tid] = \ - new_Thing(world_db["LUMBER"], + world_db["Things"][tid] = new_Thing(world_db["LUMBER"], (move_result[1], move_result[2])) build_fov_map(t) return True @@ -323,83 +324,31 @@ def decrement_lifepoints(t): "at the altar.") return test -def command_worldactive(worldactive_string): - val = integer_test(worldactive_string, 0, 1) - if None != val: - if 0 != world_db["WORLD_ACTIVE"]: - if 0 == val: - set_world_inactive() - else: - print("World already active.") - elif 0 == world_db["WORLD_ACTIVE"]: - for ThingAction in world_db["ThingActions"]: - if "wait" == world_db["ThingActions"][ThingAction]["TA_NAME"]: - break - else: - print("Ignored: No wait action defined for world to activate.") - return - for Thing in world_db["Things"]: - if 0 == Thing: - break - else: - print("Ignored: No player defined for world to activate.") - return - if world_db["MAP"]: - pos = world_db["MAP"].find(b'_') - if pos > 0: - y = int(pos / world_db["MAP_LENGTH"]) - x = pos % world_db["MAP_LENGTH"] - world_db["altar"] = (y, x) - else: - print("Ignored: No altar defined for world to activate.") - return - else: - print("Ignored: No map defined for world to activate.") - return - for name in world_db["specials"]: - if world_db[name] not in world_db["ThingTypes"]: - print("Ignored: Not all specials set for world to " - "activate.") - return - for id in world_db["Things"]: - if world_db["Things"][id]["T_LIFEPOINTS"]: - build_fov_map(world_db["Things"][id]) - if 0 == id: - update_map_memory(world_db["Things"][id], False) - if not world_db["Things"][0]["T_LIFEPOINTS"]: - empty_fovmap = bytearray(b" " * world_db["MAP_LENGTH"] ** 2) - world_db["Things"][0]["fovmap"] = empty_fovmap - world_db["WORLD_ACTIVE"] = 1 - -def play_move(str_arg): - if action_exists("move"): - from server.config.world_data import directions_db, symbols_passable - t = world_db["Things"][0] - if not str_arg in directions_db: - print("Illegal move direction string.") - return - dir = ord(directions_db[str_arg]) - global mv_yx_in_dir_legal - move_result = mv_yx_in_dir_legal(chr(dir), t["T_POSY"], t["T_POSX"]) - if 1 == move_result[0]: - pos = (move_result[1] * world_db["MAP_LENGTH"]) + move_result[2] - if ord("~") == world_db["MAP"][pos]: - log("You can't SWIM.") - return - if (ord("X") == world_db["MAP"][pos] - or ord("|") == world_db["MAP"][pos]): - carries_axe = False - for id in t["T_CARRIES"]: - type = world_db["Things"][id]["T_TYPE"] - if world_db["ThingTypes"][type]["TT_TOOL"] == "axe": - world_db["Things"][0]["T_ARGUMENT"] = dir - set_command("move") - return - if chr(world_db["MAP"][pos]) in symbols_passable: - world_db["Things"][0]["T_ARGUMENT"] = dir +def command_worldactive_test_hook(): + pos = world_db["MAP"].find(b'_') + if pos > 0: + y = int(pos / world_db["MAP_LENGTH"]) + x = pos % world_db["MAP_LENGTH"] + world_db["altar"] = (y, x) + else: + print("Ignored: No altar defined for world to activate.") + return False + for name in world_db["specials"]: + if world_db[name] not in world_db["ThingTypes"]: + print("Ignored: Not all specials set for world to activate.") + return False + return True + +def play_move_attempt_hook(t, direction, pos): + if (ord("X") == world_db["MAP"][pos] or ord("|") == world_db["MAP"][pos]): + carries_axe = False + for tid in t["T_CARRIES"]: + ty = world_db["Things"][tid]["T_TYPE"] + if world_db["ThingTypes"][ty]["TT_TOOL"] == "axe": + world_db["Things"][0]["T_ARGUMENT"] = direction set_command("move") - return - log("You CAN'T move there.") + return True + return False def play_use(str_arg): if action_exists("use"): @@ -589,7 +538,6 @@ from server.config.commands import commands_db commands_db["GOD_FAVOR"] = (1, False, setter(None, "GOD_FAVOR", -32768, 32767)) commands_db["TT_STORAGE"] = (1, False, setter("ThingType", "TT_STORAGE", 0, 255)) commands_db["T_PLAYERDROP"] = (1, False, setter("Thing", "T_PLAYERDROP", 0, 1)) -commands_db["WORLD_ACTIVE"] = (1, False, command_worldactive) commands_db["FAVOR_STAGE"] = (1, False, setter(None, "FAVOR_STAGE", 0, 1)) commands_db["SLIPPERS"] = (1, False, specialtypesetter("SLIPPERS")) commands_db["TOOL_0"] = (1, False, specialtypesetter("TOOL_0")) @@ -601,8 +549,11 @@ 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["use"] = (1, False, play_use) -commands_db["move"] = (1, False, play_move) 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 import server.config.misc server.config.misc.make_map_func = make_map