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 344f5a5618f59f80ae521404587334a467dbca38..56354d51e23b3b2a090a0f8fe8b39601c7a15da5 100755
(executable)
--- a/
roguelike-server
+++ b/
roguelike-server
@@
-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))
@@
-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")