X-Git-Url: https://plomlompom.com/repos/foo.html?a=blobdiff_plain;f=roguelike-server;h=2f95b2ca7880f1fdf2dd91cd5ddb8233ac88b011;hb=9f15933271c9ca5db5d6a91145a01116f4f21740;hp=ece7c86e595c2975966fca584cbfcc2b059be2f8;hpb=c1044de74f1f47e91e14095e64cbc5abce2cad56;p=plomrogue
diff --git a/roguelike-server b/roguelike-server
index ece7c86..2f95b2c 100755
--- a/roguelike-server
+++ b/roguelike-server
@@ -211,10 +211,13 @@ def save_world():
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"]:
@@ -793,10 +796,10 @@ def thingproliferation(t, prol_map):
candidates = []
for dir in [directions_db[key] for key in directions_db]:
mv_result = mv_yx_in_dir_legal(dir, t["T_POSY"], t["T_POSX"])
- # if mv_result[0] and ord(":") == prol_map[mv_result[1]
- if mv_result[0] and ord(".") == prol_map[mv_result[1] # #
- * world_db["MAP_LENGTH"]
- + mv_result[2]]:
+ if mv_result[0] and ord(":") == prol_map[mv_result[1] # #
+ # if mv_result[0] and ord(".") == prol_map[mv_result[1]
+ * world_db["MAP_LENGTH"]
+ + mv_result[2]]:
candidates.append((mv_result[1], mv_result[2]))
if len(candidates):
i = rand.next() % len(candidates)
@@ -1348,9 +1351,21 @@ def command_makeworld(seed_string):
id = id_setter(-1, "Things")
plantness = world_db["ThingTypes"][type]["TT_PROLIFERATE"] # #
world_db["Things"][id] = new_Thing(type, free_pos(plantness))
+ world_db["ALTAR"] = free_pos() # #
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)
+ 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)
@@ -1369,8 +1384,9 @@ def command_worldactive(worldactive_string):
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()
@@ -1387,7 +1403,8 @@ def command_worldactive(worldactive_string):
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])
@@ -1672,6 +1689,7 @@ commands_db = {
"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),
@@ -1720,6 +1738,7 @@ world_db = {
"GOD_MOOD": 0, # #
"GOD_FAVOR": 0, # #
"MAP": False,
+ "ALTAR": False,
"ThingActions": {},
"ThingTypes": {},
"Things": {}