string = ""
for key in world_db:
- if dict != type(world_db[key]) \
- and key != "MAP" and key != "WORLD_ACTIVE":
+ if (dict != type(world_db[key])
+ and key != "ALTAR" # #
+ and key != "MAP" and key != "WORLD_ACTIVE"):
string = string + key + " " + str(world_db[key]) + "\n"
string = string + mapsetter("MAP")()
+ string = (string + "ALTAR " + str(world_db["ALTAR"][0]) + " " # #
+ + str(world_db["ALTAR"][1]) + "\n") # #
string = string + helper("ThingActions", "TA_ID")
string = string + helper("ThingTypes", "TT_ID", {"TT_CORPSE_ID": False})
for id in world_db["ThingTypes"]:
t["T_POSY"], t["T_POSX"])
if 1 == move_result[0]:
pos = (move_result[1] * world_db["MAP_LENGTH"]) + move_result[2]
- passable = "." == chr(world_db["MAP"][pos]) or \
- ":" == chr(world_db["MAP"][pos]) # #
+ passable = ("." == chr(world_db["MAP"][pos]) or
+ ":" == chr(world_db["MAP"][pos]) or # #
+ "_" == chr(world_db["MAP"][pos])) # #
hitted = [id for id in world_db["Things"]
if world_db["Things"][id] != t
if world_db["Things"][id]["T_LIFEPOINTS"]
break
ai(Thing)
try_healing(Thing)
- Thing["T_PROGRESS"] += 1
- 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"]:
- eval("actor_" + ThingAction["TA_NAME"])(Thing)
- Thing["T_COMMAND"] = 0
- Thing["T_PROGRESS"] = 0
hunger(Thing)
+ if Thing["T_LIFEPOINTS"]:
+ Thing["T_PROGRESS"] += 1
+ 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"]:
+ eval("actor_" + ThingAction["TA_NAME"])(Thing)
+ Thing["T_COMMAND"] = 0
+ Thing["T_PROGRESS"] = 0
thingproliferation(Thing, proliferable_map)
if whilebreaker:
break
return
world_db["Things"] = {}
make_map()
+ world_db["ALTAR"] = free_pos() # #
+ world_db["MAP"][world_db["ALTAR"][0] * world_db["MAP_LENGTH"] # #
+ + world_db["ALTAR"][1]] = ord("_") # #
world_db["WORLD_ACTIVE"] = 1
world_db["TURN"] = 1
for i in range(world_db["ThingTypes"][playertype]["TT_START_NUMBER"]):
strong_write(io_db["file_out"], "NEW_WORLD\n")
+def command_altar(str_y, str_x): # #
+ """Set position of Island God's altar."""
+ y = integer_test(str_y, 0, 255)
+ x = integer_test(str_x, 0, 255)
+ if None != y and None != x:
+ if y < world_db["MAP_LENGTH"] and x < world_db["MAP_LENGTH"]:
+ world_db["ALTAR"] = (y, x)
+ world_db["MAP"][y * world_db["MAP_LENGTH"] + x] = ord("_")
+ else:
+ print("Ignoring: Position is outside of map.")
+
+
def command_maplength(maplength_string):
"""Redefine map length. Invalidate map, therefore lose all things on it."""
val = integer_test(maplength_string, 1, 256)
set active with a "wait" ThingAction, and a player Thing (of ID 0), and a
map. On activation, rebuild all Things' FOVs, and the player's map memory.
"""
+ # 7DRL: Altar position must also be set for world activation.
val = integer_test(worldactive_string, 0, 1)
- if val:
+ if None != val:
if 0 != world_db["WORLD_ACTIVE"]:
if 0 == val:
set_world_inactive()
if 0 == Thing:
player_exists = True
break
- if wait_exists and player_exists and world_db["MAP"]:
+ if wait_exists and player_exists and world_db["MAP"] \
+ and world_db["ALTAR"]: # #
for id in world_db["Things"]:
if world_db["Things"][id]["T_LIFEPOINTS"]:
build_fov_map(world_db["Things"][id])
"MAP_LENGTH": (1, False, command_maplength),
"WORLD_ACTIVE": (1, False, command_worldactive),
"MAP": (2, False, setter_map("MAP")),
+ "ALTAR": (2, False, command_altar), # #
"TA_ID": (1, False, command_taid),
"TA_EFFORT": (1, False, setter("ThingAction", "TA_EFFORT", 0, 255)),
"TA_NAME": (1, False, command_taname),
"GOD_MOOD": 0, # #
"GOD_FAVOR": 0, # #
"MAP": False,
+ "ALTAR": False,
"ThingActions": {},
"ThingTypes": {},
"Things": {}