From 0dd5be3b48b45d1be5cec5ff18f3cb633f99886d Mon Sep 17 00:00:00 2001 From: Christian Heller Date: Wed, 24 Feb 2016 00:00:30 +0100 Subject: [PATCH] Server: Make decrement_lifepoints function selectable. --- server/actions.py | 4 ++-- server/config/misc.py | 2 ++ server/decrement_lifepoints.py | 31 +++++++++++++++++++++++++++++++ server/world.py | 29 ++--------------------------- 4 files changed, 37 insertions(+), 29 deletions(-) create mode 100644 server/decrement_lifepoints.py diff --git a/server/actions.py b/server/actions.py index 302c36d..0fd5986 100644 --- a/server/actions.py +++ b/server/actions.py @@ -16,7 +16,7 @@ def actor_wait(t): def actor_move(t): """If passable, move/collide(=attack) thing into T_ARGUMENT's direction.""" from server.build_fov_map import build_fov_map - from server.world import decrement_lifepoints + from server.config.misc import decrement_lifepoints_func from server.utils import mv_yx_in_dir_legal from server.config.world_data import directions_db, symbols_passable passable = False @@ -38,7 +38,7 @@ def actor_move(t): elif 0 == hit_id: hitter_name = world_db["ThingTypes"][t["T_TYPE"]]["TT_NAME"] log(hitter_name +" WOUNDS you.") - decrement_lifepoints(world_db["Things"][hit_id]) + decrement_lifepoints_func(world_db["Things"][hit_id]) return passable = chr(world_db["MAP"][pos]) in symbols_passable dir = [dir for dir in directions_db diff --git a/server/config/misc.py b/server/config/misc.py index 8d0b6b0..c7a701e 100644 --- a/server/config/misc.py +++ b/server/config/misc.py @@ -5,7 +5,9 @@ from server.make_map import make_map from server.thingproliferation import thingproliferation from server.make_world import make_world +from server.decrement_lifepoints import decrement_lifepoints +decrement_lifepoints_func = decrement_lifepoints make_map_func = make_map thingproliferation_func = thingproliferation make_world_func = make_world diff --git a/server/decrement_lifepoints.py b/server/decrement_lifepoints.py new file mode 100644 index 0000000..8fe5de8 --- /dev/null +++ b/server/decrement_lifepoints.py @@ -0,0 +1,31 @@ +# 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. + + +def decrement_lifepoints(t): + """Decrement t's lifepoints by 1, and if to zero, corpse it. + + If t is the player avatar, only blank its fovmap, so that the client may + still display memory data. On non-player things, erase fovmap and memory. + Dying actors drop all their things. + """ + from server.config.world_data import world_db + from server.io import log + t["T_LIFEPOINTS"] -= 1 + if 0 == t["T_LIFEPOINTS"]: + for id in t["T_CARRIES"]: + t["T_CARRIES"].remove(id) + world_db["Things"][id]["T_POSY"] = t["T_POSY"] + world_db["Things"][id]["T_POSX"] = t["T_POSX"] + world_db["Things"][id]["carried"] = False + t["T_TYPE"] = world_db["ThingTypes"][t["T_TYPE"]]["TT_CORPSE_ID"] + if world_db["Things"][0] == t: + t["fovmap"] = bytearray(b' ' * (world_db["MAP_LENGTH"] ** 2)) + log("You die.") + log("See README on how to start over.") + else: + t["fovmap"] = False + t["T_MEMMAP"] = False + t["T_MEMDEPTHMAP"] = False + t["T_MEMTHING"] = [] diff --git a/server/world.py b/server/world.py index 6b03d0a..3a68ee4 100644 --- a/server/world.py +++ b/server/world.py @@ -9,32 +9,6 @@ from server.utils import rand from server.utils import id_setter -def decrement_lifepoints(t): - """Decrement t's lifepoints by 1, and if to zero, corpse it. - - If t is the player avatar, only blank its fovmap, so that the client may - still display memory data. On non-player things, erase fovmap and memory. - Dying actors drop all their things. - """ - t["T_LIFEPOINTS"] -= 1 - if 0 == t["T_LIFEPOINTS"]: - for id in t["T_CARRIES"]: - t["T_CARRIES"].remove(id) - world_db["Things"][id]["T_POSY"] = t["T_POSY"] - world_db["Things"][id]["T_POSX"] = t["T_POSX"] - world_db["Things"][id]["carried"] = False - t["T_TYPE"] = world_db["ThingTypes"][t["T_TYPE"]]["TT_CORPSE_ID"] - if world_db["Things"][0] == t: - t["fovmap"] = bytearray(b' ' * (world_db["MAP_LENGTH"] ** 2)) - log("You die.") - log("See README on how to start over.") - else: - t["fovmap"] = False - t["T_MEMMAP"] = False - t["T_MEMDEPTHMAP"] = False - t["T_MEMTHING"] = [] - - def try_healing(t): """If t's HP < max, increment them if well-nourished, maybe waiting.""" if t["T_LIFEPOINTS"] < \ @@ -57,6 +31,7 @@ def hunger_per_turn(type_id): def hunger(t): """Decrement t's satiation,dependent on it trigger lifepoint dec chance.""" + from server.config.misc import decrement_lifepoints_func if t["T_SATIATION"] > -32768: t["T_SATIATION"] -= hunger_per_turn(t["T_TYPE"]) if 0 != t["T_SATIATION"] and 0 == int(rand.next() / abs(t["T_SATIATION"])): @@ -65,7 +40,7 @@ def hunger(t): log("You SUFFER from hunger.") else: log("You SUFFER from over-eating.") - decrement_lifepoints(t) + decrement_lifepoints_func(t) def set_world_inactive(): -- 2.30.2