if not world_db["test_air"](t):
return
t["T_BLADDER"] -= 1
- world_db["wetmap"][t["pos"]] += 1
+ if chr(world_db["MAP"][t["pos"]]) not in "*&":
+ world_db["wetmap"][t["pos"]] += 1
def play_drop():
world_db["MAP"][t["pos"]] = ord("-")
elif world_db["MAP"][t["pos"]] == ord("-"):
world_db["MAP"][t["pos"]] = ord("0")
- else:
+ elif chr(world_db["MAP"][t["pos"]]) not in "*&":
world_db["MAP"][t["pos"]] += 1
t["T_BOWEL"] -= 1
world_db["Things"][0]["T_ARGUMENT"] = d
world_db["set_command"]("eat")
return
- if chr(world_db["MAP"][pos]) in "34":
+ legal_targets = "34"
+ if world_db["GRACE"] >= 8:
+ legal_targets += "5"
+ if chr(world_db["MAP"][pos]) in legal_targets:
if t["T_STOMACH"] >= 32:
if t == world_db["Things"][0]:
log("You're too FULL to eat.")
log("You try to EAT, but fail.")
else:
height = world_db["MAP"][pos] - ord("0")
- if t["T_STOMACH"] >= 32 or height == 5:
+ if t["T_STOMACH"] >= 32:
+ return
+ if height == 5 and not \
+ (t == world_db["Things"][0] and world_db["GRACE"] >= 8):
return
t["T_STOMACH"] += 1
if t == world_db["Things"][0]:
log("You EAT.")
eaten = (height == 3 and 0 == int(rand.next() % 2)) or \
- (height == 4 and 0 == int(rand.next() % 5))
+ (height == 4 and 0 == int(rand.next() % 5)) or \
+ (height == 5 and 0 == int(rand.next() % 10))
if eaten:
world_db["MAP"][pos] = ord("0")
if t["T_STOMACH"] > 32:
t["T_POSX"] = move_result[2]
t["pos"] = move_result[1] * world_db["MAP_LENGTH"] + move_result[2]
world_db["soundmap"][t["pos"]] = ord("9")
+ if t == world_db["Things"][0] and world_db["MAP"][t["pos"]] == ord("$"):
+ world_db["MAP"][t["pos"]] = ord("0")
+ if world_db["GRACE"] < 8:
+ log("You can now eat ALL walls.")
+ if world_db["GRACE"] < 24:
+ log("You will now LEVITATE over holes.")
+ world_db["GRACE"] += 8
elif t == world_db["Things"][0]:
log("You try to MOVE there, but fail.")
def test_hole(t):
- if world_db["MAP"][t["pos"]] == ord("&"):
- world_db["die"](t, "YOU WIN, CONGRATULATIONS.")
- return False
+ if t == world_db["Things"][0]:
+ if world_db["GRACE"] >= 32 and world_db["MAP"][t["pos"]] == ord("&"):
+ world_db["die"](t, "YOU WIN, CONGRATULATIONS.")
+ return False
+ if world_db["GRACE"] >= 24:
+ return True
if chr(world_db["MAP"][t["pos"]]) in "*&":
world_db["die"](t, "You FALL in a hole, and die.")
return False
t["T_MEMMAP"][t["pos"]] = ord("@")
log(message)
else:
- world_db["MAP"][t["pos"]] = ord("5")
+ if world_db["MAP"][t["pos"]] != ord("$"):
+ world_db["MAP"][t["pos"]] = ord("5")
world_db["HUMILITY"] = t["T_KIDNEY"] + t["T_BLADDER"] + \
(world_db["wetmap"][t["pos"]] - ord("0"))
world_db["wetmap"][t["pos"]] = 0
ord("0") == world_db["wetmap"][pos]:
world_db["wetmap"][pos] = ord("3")
i_water += 1
+ n_altars = 4
+ i_altars = 0
+ while (i_altars < n_altars):
+ y, x, pos = new_pos()
+ if ord("0") == world_db["MAP"][pos]:
+ world_db["MAP"][pos] = ord("$")
+ i_altars += 1
def calc_effort(ta, t):
t["T_POSY"], t["T_POSX"])
if 1 == move_result[0]:
pos = (move_result[1] * world_db["MAP_LENGTH"]) + move_result[2]
- narrowness = world_db["MAP"][pos] - ord("0")
- return 2 ** narrowness
+ if chr(world_db["MAP"][pos]) in "012":
+ narrowness = world_db["MAP"][pos] - ord("0")
+ return 2 ** narrowness
return 1
world_db["calc_effort"] = calc_effort
height = -1
elif world_db["MAP"][pos] == ord("+"):
height = -2
+ elif world_db["MAP"][pos] == ord("$"):
+ height = -3
if height == -2 and wetness > 1 \
and 0 == rand.next() % ((2 ** 11) / (2 ** wetness)):
world_db["MAP"][pos] = ord("*")
io_db["worldstate_write_order"] += [["T_BLADDER", "player_int"]]
io_db["worldstate_write_order"] += [[write_wetmap, "func"]]
io_db["worldstate_write_order"] += [[write_soundmap, "func"]]
+io_db["worldstate_write_order"] += [["GRACE", "world_int"]]
import server.config.world_data
server.config.world_data.symbols_hide = "345"
-server.config.world_data.symbols_passable = "012-+*&"
+server.config.world_data.symbols_passable = "012-+*&$"
server.config.world_data.thing_defaults["T_STOMACH"] = 16
server.config.world_data.thing_defaults["T_BOWEL"] = 0
server.config.world_data.thing_defaults["T_KIDNEY"] = 16
world_db["NEW_SPAWN"] = 0
if not "HUMIDITY" in world_db:
world_db["HUMIDITY"] = 0
+if not "GRACE" in world_db:
+ world_db["GRACE"] = 0
io_db["hook_save"] = save_maps
import server.config.make_world_helpers
server.config.make_world_helpers.make_map = make_map
commands_db["pee"] = (0, False, play_pee)
commands_db["use"] = (1, False, lambda x: None)
commands_db["pickup"] = (0, False, lambda: None)
+commands_db["GRACE"] = (1, False, setter(None, "GRACE", 0, 255))
commands_db["NEW_SPAWN"] = (1, False, setter(None, "NEW_SPAWN", 0, 255))
commands_db["HUMIDITY"] = (1, False, setter(None, "HUMIDITY", 0, 65535))
commands_db["T_STOMACH"] = (1, False, setter("Thing", "T_STOMACH", 0, 255))