from server.config.io import io_db
from server.io import log, strong_write
from server.utils import integer_test, id_setter
-from server.world import set_world_inactive, turn_over
+from server.world import set_world_inactive, turn_over, eat_vs_hunger_threshold
from server.update_map_memory import update_map_memory
from server.build_fov_map import build_fov_map
for id in world_db["Things"]
if not world_db["Things"][id]["carried"]
if world_db["Things"][id]["T_TYPE"] == tid
- if y == world_db["Things"][id]["T_POSY"]
- if x == world_db["Things"][id]["T_POSX"]]:
+ if pos == world_db["Things"][id]["pos"]]:
type = world_db["Things"][id]["T_TYPE"]
name = world_db["ThingTypes"][type]["TT_NAME"]
strong_write(io_db["file_out"], name + "\n")
print("Ignoring: Corpse ID belongs to no known ThignType.")
+@test_ThingType_id
+def command_ttlifepoints(val_string):
+ setter("ThingType", "TT_LIFEPOINTS", 0, 255)(val_string)
+ tt = world_db["ThingTypes"][command_ttid.id]
+ tt["eat_vs_hunger_threshold"] = eat_vs_hunger_threshold(command_ttid.id)
+
+
@test_ThingAction_id
def command_taname(name):
"""Set TA_NAME of selected ThingAction.
The name must match a valid thing action function. If after the name
setting no ThingAction with name "wait" remains, call set_world_inactive().
"""
- if name == "wait" or name == "move" or name == "use" or name == "drop" \
- or name == "pickup":
+ from server.config.commands import commands_db
+ if name in commands_db and name.islower():
world_db["ThingActions"][command_taid.id]["TA_NAME"] = name
if 1 == world_db["WORLD_ACTIVE"]:
for id in world_db["ThingActions"]:
print("Ignoring: Invalid action name.")
+@test_ThingAction_id
+def command_taeffort(val_string):
+ setter("ThingAction", "TA_EFFORT", 0, 255)(val_string)
+ if world_db["ThingActions"][command_taid.id]["TA_NAME"] == "use":
+ for ttid in world_db["ThingTypes"]:
+ tt = world_db["ThingTypes"][ttid]
+ tt["eat_vs_hunger_threshold"] = eat_vs_hunger_threshold(ttid)
+
+
def setter(category, key, min, max=None):
"""Build setter for world_db([category + "s"][id])[key] to >=min/<=max."""
if category is None:
val = integer_test(str_int, 0, 255)
if None != val:
if val < world_db["MAP_LENGTH"]:
- world_db["Things"][command_tid.id]["T_POS" + axis] = val
+ t = world_db["Things"][command_tid.id]
+ t["T_POS" + axis] = val
+ t["pos"] = t["T_POSY"] * world_db["MAP_LENGTH"] + t["T_POSX"]
if world_db["WORLD_ACTIVE"] \
and world_db["Things"][command_tid.id]["T_LIFEPOINTS"]:
build_fov_map(world_db["Things"][command_tid.id])
def play_wait():
"""Try "wait" as player's T_COMMAND."""
- set_command("wait")
+ if world_db["WORLD_ACTIVE"]:
+ set_command("wait")
def action_exists(action):
def play_pickup():
"""Try "pickup" as player's T_COMMAND"."""
- if action_exists("pickup"):
+ if action_exists("pickup") and world_db["WORLD_ACTIVE"]:
t = world_db["Things"][0]
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"]]
+ if world_db["Things"][tid]["pos"] == t["pos"]]
from server.config.commands import play_pickup_attempt_hook
if not len(ids):
log("NOTHING to pick up.")
def play_drop(str_arg):
"""Try "drop" as player's T_COMMAND, int(str_arg) as T_ARGUMENT / slot."""
- if action_exists("drop"):
+ if action_exists("drop") and world_db["WORLD_ACTIVE"]:
t = world_db["Things"][0]
if 0 == len(t["T_CARRIES"]):
log("You have NOTHING to drop in your inventory.")
def play_use(str_arg):
"""Try "use" as player's T_COMMAND, int(str_arg) as T_ARGUMENT / slot."""
- if action_exists("use"):
+ if action_exists("use") and world_db["WORLD_ACTIVE"]:
t = world_db["Things"][0]
if 0 == len(t["T_CARRIES"]):
log("You have NOTHING to use in your inventory.")
def play_move(str_arg):
"""Try "move" as player's T_COMMAND, str_arg as T_ARGUMENT / direction."""
- if action_exists("move"):
+ if action_exists("move") and world_db["WORLD_ACTIVE"]:
from server.config.world_data import directions_db, symbols_passable
t = world_db["Things"][0]
if not str_arg in directions_db:
def command_ai():
"""Call ai() on player Thing, then turn_over()."""
from server.ai import ai
- ai(world_db["Things"][0])
- turn_over()
+ if world_db["WORLD_ACTIVE"]:
+ ai(world_db["Things"][0])
+ turn_over()