home
·
contact
·
privacy
projects
/
plomrogue
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Server: Tell player about deaths his wounding is responsible for.
[plomrogue]
/
server
/
actions.py
diff --git
a/server/actions.py
b/server/actions.py
index 1c835814ab51b6714413945c3648996e86f69eb1..22d165a4023c6652cb02706be7b0b01ac3cf79f9 100644
(file)
--- a/
server/actions.py
+++ b/
server/actions.py
@@
-15,9
+15,10
@@
def actor_wait(t):
def actor_move(t):
"""If passable, move/collide(=attack) thing into T_ARGUMENT's direction."""
def actor_move(t):
"""If passable, move/collide(=attack) thing into T_ARGUMENT's direction."""
- from server.world import build_fov_map, decrement_lifepoints
+ from server.build_fov_map import build_fov_map
+ from server.config.misc import decrement_lifepoints_func
from server.utils import mv_yx_in_dir_legal
from server.utils import mv_yx_in_dir_legal
- from server.config.world_data import directions_db
+ from server.config.world_data import directions_db
, symbols_passable
passable = False
move_result = mv_yx_in_dir_legal(chr(t["T_ARGUMENT"]),
t["T_POSY"], t["T_POSX"])
passable = False
move_result = mv_yx_in_dir_legal(chr(t["T_ARGUMENT"]),
t["T_POSY"], t["T_POSX"])
@@
-30,16
+31,17
@@
def actor_move(t):
if world_db["Things"][id]["T_POSX"] == move_result[2]]
if len(hitted):
hit_id = hitted[0]
if world_db["Things"][id]["T_POSX"] == move_result[2]]
if len(hitted):
hit_id = hitted[0]
+ hitted_type_id = world_db["Things"][hit_id]["T_TYPE"]
if t == world_db["Things"][0]:
if t == world_db["Things"][0]:
- hitted_type = world_db["Things"][hit_id]["T_TYPE"]
- hitted_name = world_db["ThingTypes"][hitted_type]["TT_NAME"]
- log("You WOUND" + hitted_name + ".")
+ hitted_name = world_db["ThingTypes"][hitted_type_id]["TT_NAME"]
+ log("You WOUND " + hitted_name + ".")
elif 0 == hit_id:
hitter_name = world_db["ThingTypes"][t["T_TYPE"]]["TT_NAME"]
log(hitter_name +" WOUNDS you.")
elif 0 == hit_id:
hitter_name = world_db["ThingTypes"][t["T_TYPE"]]["TT_NAME"]
log(hitter_name +" WOUNDS you.")
- decrement_lifepoints(world_db["Things"][hit_id])
- return
- passable = "." == chr(world_db["MAP"][pos])
+ decr_test = decrement_lifepoints_func(world_db["Things"][hit_id])
+ if decr_test > 0 and t == world_db["Things"][0]:
+ log(hitted_name + " dies.")
+ passable = chr(world_db["MAP"][pos]) in symbols_passable
dir = [dir for dir in directions_db
if directions_db[dir] == chr(t["T_ARGUMENT"])][0]
if passable:
dir = [dir for dir in directions_db
if directions_db[dir] == chr(t["T_ARGUMENT"])][0]
if passable:
@@
-53,8
+55,8
@@
def actor_move(t):
log("You MOVE " + dir + ".")
log("You MOVE " + dir + ".")
-def actor_pick
_
up(t):
- """Make t pick up (topmost?) Thing from ground into inventory.
+def actor_pickup(t):
+ """Make t pick up (topmost?) Thing from ground into inventory.
Return it.
Define topmostness by how low the thing's type ID is.
"""
Define topmostness by how low the thing's type ID is.
"""
@@
-66,17
+68,19
@@
def actor_pick_up(t):
lowest_tid = -1
for iid in ids:
tid = world_db["Things"][iid]["T_TYPE"]
lowest_tid = -1
for iid in ids:
tid = world_db["Things"][iid]["T_TYPE"]
- if lowest_tid == -1 or tid < lowest_tid:
+ from server.config.actions import actor_pickup_test_hook
+ if (lowest_tid == -1 or tid < lowest_tid) and \
+ actor_pickup_test_hook(t, tid):
id = iid
lowest_tid = tid
world_db["Things"][id]["carried"] = True
t["T_CARRIES"].append(id)
if t == world_db["Things"][0]:
log("You PICK UP an object.")
id = iid
lowest_tid = tid
world_db["Things"][id]["carried"] = True
t["T_CARRIES"].append(id)
if t == world_db["Things"][0]:
log("You PICK UP an object.")
-
+ return world_db["Things"][id]
def actor_drop(t):
def actor_drop(t):
- """
Make t rop Thing from inventory to ground indexed by T_ARGUMENT
."""
+ """
Drop to ground from t's inventory, return T_ARGUMENT-indexed Thing
."""
# TODO: Handle case where T_ARGUMENT matches nothing.
if len(t["T_CARRIES"]):
id = t["T_CARRIES"][t["T_ARGUMENT"]]
# TODO: Handle case where T_ARGUMENT matches nothing.
if len(t["T_CARRIES"]):
id = t["T_CARRIES"][t["T_ARGUMENT"]]
@@
-84,7
+88,7
@@
def actor_drop(t):
world_db["Things"][id]["carried"] = False
if t == world_db["Things"][0]:
log("You DROP an object.")
world_db["Things"][id]["carried"] = False
if t == world_db["Things"][0]:
log("You DROP an object.")
-
+ return world_db["Things"][id]
def actor_use(t):
"""Make t use (for now: consume) T_ARGUMENT-indexed Thing in inventory."""
def actor_use(t):
"""Make t use (for now: consume) T_ARGUMENT-indexed Thing in inventory."""
@@
-97,6
+101,7
@@
def actor_use(t):
del world_db["Things"][id]
t["T_SATIATION"] += world_db["ThingTypes"][type]["TT_TOOLPOWER"]
if t == world_db["Things"][0]:
del world_db["Things"][id]
t["T_SATIATION"] += world_db["ThingTypes"][type]["TT_TOOLPOWER"]
if t == world_db["Things"][0]:
- log("You CONSUME this object.")
- elif t == world_db["Things"][0]:
- log("You try to use this object, but FAIL.")
+ log("You CONSUME this thing.")
+ else:
+ from server.config.actions import actor_use_attempts_hook
+ actor_use_attempts_hook(t, type)