from server.config.world_data import world_db
from server.io import log
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):
def hunger(t):
"""Decrement t's satiation,dependent on it trigger lifepoint dec chance."""
+ from server.config.misc import decrement_lifepoints
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"])):
def turn_over():
"""Run game world and its inhabitants until new player input expected."""
- from server.config.actions import action_db, ai_func
- from server.config.misc import thingproliferation_func
+ from server.ai import ai
+ from server.config.actions import action_db
+ from server.config.misc import calc_effort
from server.update_map_memory import update_map_memory
+ from server.thingproliferation import thingproliferation
id = 0
- whilebreaker = False
while world_db["Things"][0]["T_LIFEPOINTS"]:
proliferable_map = world_db["MAP"][:]
for id in [id for id in world_db["Things"]
if not Thing["T_COMMAND"]:
update_map_memory(Thing)
if 0 == id:
- whilebreaker = True
- break
- ai_func(Thing)
+ return
+ ai(Thing)
try_healing(Thing)
hunger(Thing)
if Thing["T_LIFEPOINTS"]:
taid = [a for a in world_db["ThingActions"]
if a == Thing["T_COMMAND"]][0]
ThingAction = world_db["ThingActions"][taid]
- if Thing["T_PROGRESS"] == ThingAction["TA_EFFORT"]:
+ effort = calc_effort(ThingAction, Thing)
+ if Thing["T_PROGRESS"] == effort:
action = action_db["actor_" + ThingAction["TA_NAME"]]
action(Thing)
Thing["T_COMMAND"] = 0
Thing["T_PROGRESS"] = 0
- thingproliferation_func(Thing, proliferable_map)
- if whilebreaker:
- break
+ thingproliferation(Thing, proliferable_map)
world_db["TURN"] += 1