home
·
contact
·
privacy
projects
/
plomrogue
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Minor optimization in update_map_memory().
[plomrogue]
/
roguelike-server
diff --git
a/roguelike-server
b/roguelike-server
index b9eb86bc140cb2e48866cee3e28edcb5c53986ae..56354d51e23b3b2a090a0f8fe8b39601c7a15da5 100755
(executable)
--- a/
roguelike-server
+++ b/
roguelike-server
@@
-222,7
+222,7
@@
def save_world():
for id in sorted(world_db["Things"].keys()):
if [] != world_db["Things"][id]["T_CARRIES"]:
string = string + "T_ID " + str(id) + "\n"
for id in sorted(world_db["Things"].keys()):
if [] != world_db["Things"][id]["T_CARRIES"]:
string = string + "T_ID " + str(id) + "\n"
- for carried in sorted(world_db["Things"][id]["T_CARRIES"]
.keys()
):
+ for carried in sorted(world_db["Things"][id]["T_CARRIES"]):
string = string + "T_CARRIES " + str(carried) + "\n"
string = string + "SEED_RANDOMNESS " + str(rand.seed) + "\n" + \
"WORLD_ACTIVE " + str(world_db["WORLD_ACTIVE"])
string = string + "T_CARRIES " + str(carried) + "\n"
string = string + "SEED_RANDOMNESS " + str(rand.seed) + "\n" + \
"WORLD_ACTIVE " + str(world_db["WORLD_ACTIVE"])
@@
-500,10
+500,9
@@
def update_map_memory(t, age_map=True):
t["T_MEMMAP"][pos] = world_db["MAP"][pos]
if age_map:
age_some_memdepthmap_on_nonfov_cells()
t["T_MEMMAP"][pos] = world_db["MAP"][pos]
if age_map:
age_some_memdepthmap_on_nonfov_cells()
- for mt in [mt for mt in t["T_MEMTHING"]
- if ord_v == t["fovmap"][(mt[1] * world_db["MAP_LENGTH"])
- + mt[2]]]:
- t["T_MEMTHING"].remove(mt)
+ t["T_MEMTHING"] = [mt for mt in t["T_MEMTHING"]
+ if ord_v != t["fovmap"][(mt[1] * world_db["MAP_LENGTH"])
+ + mt[2]]]
for id in [id for id in world_db["Things"]
if not world_db["Things"][id]["carried"]]:
type = world_db["Things"][id]["T_TYPE"]
for id in [id for id in world_db["Things"]
if not world_db["Things"][id]["carried"]]:
type = world_db["Things"][id]["T_TYPE"]
@@
-578,9
+577,15
@@
def decrement_lifepoints(t):
If t is the player avatar, only blank its fovmap, so that the client may
still display memory data. On non-player things, erase fovmap and memory.
If t is the player avatar, only blank its fovmap, so that the client may
still display memory data. On non-player things, erase fovmap and memory.
+ Dying actors drop all their things.
"""
t["T_LIFEPOINTS"] -= 1
if 0 == t["T_LIFEPOINTS"]:
"""
t["T_LIFEPOINTS"] -= 1
if 0 == t["T_LIFEPOINTS"]:
+ for id in t["T_CARRIES"]:
+ t["T_CARRIES"].remove(id)
+ world_db["Things"][id]["T_POSY"] = t["T_POSY"]
+ world_db["Things"][id]["T_POSX"] = t["T_POSX"]
+ world_db["Things"][id]["carried"] = False
t["T_TYPE"] = world_db["ThingTypes"][t["T_TYPE"]]["TT_CORPSE_ID"]
if world_db["Things"][0] == t:
t["fovmap"] = bytearray(b' ' * (world_db["MAP_LENGTH"] ** 2))
t["T_TYPE"] = world_db["ThingTypes"][t["T_TYPE"]]["TT_CORPSE_ID"]
if world_db["Things"][0] == t:
t["fovmap"] = bytearray(b' ' * (world_db["MAP_LENGTH"] ** 2))
@@
-625,8
+630,8
@@
def actor_move(t):
if t == world_db["Things"][0]:
hitted_type = world_db["Things"][hit_id]["T_TYPE"]
hitted_name = world_db["ThingTypes"][hitted_type]["TT_NAME"]
if t == world_db["Things"][0]:
hitted_type = world_db["Things"][hit_id]["T_TYPE"]
hitted_name = world_db["ThingTypes"][hitted_type]["TT_NAME"]
- strong_write(io_db["file_out"], "LOG You wound "
+ hitted +
- ".\n")
+ strong_write(io_db["file_out"], "LOG You wound "
+
+ hitted_name +
".\n")
elif 0 == hit_id:
hitter_name = world_db["ThingTypes"][t["T_TYPE"]]["TT_NAME"]
strong_write(io_db["file_out"], "LOG " + hitter_name +
elif 0 == hit_id:
hitter_name = world_db["ThingTypes"][t["T_TYPE"]]["TT_NAME"]
strong_write(io_db["file_out"], "LOG " + hitter_name +
@@
-650,15
+655,18
@@
def actor_move(t):
def actor_pick_up(t):
"""Make t pick up (topmost?) Thing from ground into inventory."""
def actor_pick_up(t):
"""Make t pick up (topmost?) Thing from ground into inventory."""
- # Topmostness is actually not defined so far. Picks
Thing with highest ID
.
+ # Topmostness is actually not defined so far. Picks
most nutritious Thing
.
ids = [id for id in world_db["Things"] if world_db["Things"][id] != t
if not world_db["Things"][id]["carried"]
if world_db["Things"][id]["T_POSY"] == t["T_POSY"]
if world_db["Things"][id]["T_POSX"] == t["T_POSX"]]
if len(ids):
ids = [id for id in world_db["Things"] if world_db["Things"][id] != t
if not world_db["Things"][id]["carried"]
if world_db["Things"][id]["T_POSY"] == t["T_POSY"]
if world_db["Things"][id]["T_POSX"] == t["T_POSX"]]
if len(ids):
- highest_id = 0
+ highest_id = ids[0]
+ nutritious = 0
for id in ids:
for id in ids:
- if id > highest_id:
+ type = world_db["Things"][id]["T_TYPE"]
+ if world_db["ThingTypes"][type]["TT_CONSUMABLE"] > nutritious:
+ nutritious = world_db["ThingTypes"][type]["TT_CONSUMABLE"]
highest_id = id
world_db["Things"][highest_id]["carried"] = True
t["T_CARRIES"].append(highest_id)
highest_id = id
world_db["Things"][highest_id]["carried"] = True
t["T_CARRIES"].append(highest_id)
@@
-1111,8
+1119,9
@@
def command_ping():
def command_quit():
"""Abort server process."""
def command_quit():
"""Abort server process."""
- save_world()
- atomic_write(io_db["path_record"], io_db["record_chunk"], do_append=True)
+ if None == opts.replay:
+ save_world()
+ atomic_write(io_db["path_record"], io_db["record_chunk"], do_append=True)
raise SystemExit("received QUIT command")
raise SystemExit("received QUIT command")