type = world_db["Things"][id]["T_TYPE"]
if not world_db["ThingTypes"][type]["TT_LIFEPOINTS"]:
y = world_db["Things"][id]["T_POSY"]
- x = world_db["Things"][id]["T_POSY"]
+ x = world_db["Things"][id]["T_POSX"]
if "v" == chr(t["fovmap"][(y * world_db["MAP_LENGTH"]) + x]):
t["T_MEMTHING"].append((type, y, x))
maptype.from_buffer(t["fovmap"]),
maptype.from_buffer(world_db["MAP"]))
if test:
- raise SystemExit("Malloc error in build_fov_Map().")
+ raise RuntimeError("Malloc error in build_fov_Map().")
def decrement_lifepoints(t):
dir_c = dir.encode("ascii")[0]
test = libpr.mv_yx_in_dir_legal_wrap(dir_c, y, x)
if -1 == test:
- raise SystemExit("Too much wrapping in mv_yx_in_dir_legal_wrap()!")
+ raise RuntimeError("Too much wrapping in mv_yx_in_dir_legal_wrap()!")
return (test, libpr.result_y(), libpr.result_x())
world_db["Things"][id] = newT
+def hunger(t):
+ """Decrement t's satiation, dependent on it trigger lifepoint dec chance."""
+ if t["T_SATIATION"] > -32768:
+ t["T_SATIATION"] -= 1
+ testbase = t["T_SATIATION"] if t["T_SATIATION"] >= 0 else -t["T_SATIATION"]
+ if not world_db["ThingTypes"][t["T_TYPE"]]["TT_LIFEPOINTS"]:
+ raise RuntimeError("A thing that should not hunger is hungering.")
+ stomach = int(32767 / world_db["ThingTypes"][t["T_TYPE"]]["TT_LIFEPOINTS"])
+ if int(int(testbase / stomach) / ((rand.next() % stomach) + 1)):
+ if t == world_db["Things"][0]:
+ strong_write(io_db["file_out"], "LOG You suffer from hunger.\n")
+ else:
+ name = world_db["ThingTypes"][t["T_TYPE"]]["TT_NAME"]
+ strong_write(io_db["file_out"], "LOG " + name + \
+ " suffers from hunger.\n")
+ decrement_lifepoints(t)
+
+
def turn_over():
"""Run game world and its inhabitants until new player input expected."""
id = 0
eval("actor_" + ThingAction["TA_NAME"])(Thing)
Thing["T_COMMAND"] = 0
Thing["T_PROGRESS"] = 0
- # DUMMY: hunger
+ hunger(Thing)
thingproliferation(Thing)
if whilebreaker:
break
for id in world_db["Things"]:
write_thing_if_here()
else:
- for id in world_db["Things"]["T_MEMTHING"]:
+ for id in world_db["Things"][id]["T_MEMTHING"]:
write_thing_if_here()
strong_write(io_db["file_out"], "THINGS_HERE END\n")
else: