14
15:- include(prologmud(mud_header)). 16
18
19can_move_into(_LOC,XXYY):-var(XXYY),!,fail.
20can_move_into(_LOC,XXYY):-not(mudAtLoc(_,XXYY)),!.
21can_move_into(_LOC,XXYY):-ground(XXYY).
22
25vtActionTemplate(actClimb(vtDirection)).
28
29
30baseKB:agent_call_command(Agent,actClimb(Dir)):- once(actClimb(Agent,Dir)).
31
33actClimb(Agent,Dir) :-
34 mudAtLoc(Agent,LOC),
35 from_dir_target(LOC,Dir,XXYY),
36 can_move_into(LOC,XXYY),
37 in_world_move(_,Agent,Dir),
38 call_update_stats(Agent,trip),
39 call_update_charge(Agent,actClimb).
40
42actClimb(Agent,Dir) :-
43 \+ climbable(Agent,Dir),
44 call_update_stats(Agent,pulled),
45 call_update_charge(Agent,actClimb).
46
48actClimb(Agent,Dir) :-
49 in_world_move(_,Agent,Dir),
50 call_update_charge(Agent,actClimb).
51
53climbable(Agent,Dir) :-
54 mudAtLoc(Agent,LOC),
55 from_dir_target(LOC,Dir,XXYY),
56 mudAtLoc(Obj,XXYY),
57 props(Obj,mudHeight(ObjHt)), 58 mudHeightOnObj(Agent,AgHt),
59 mudAtLoc(Obj2,LOC), prop_or(Obj2,mudHeight,0,Obj2Ht),
60 ObjHt =< (AgHt + Obj2Ht),
61 ObjHt > 1.
62
64update_charge(Agent,actClimb) :- call(padd(Agent,mudEnergy(+ -5))).
65
66prologBuiltin(padd/2).
67update_stats(Agent,trip) :- padd(Agent,mudHealth(+ -3)).
68
69update_stats(Agent,pulled) :- call(padd(Agent,mudHealth(+ -2))),
70 (add_cmdfailure(Agent,pulled)).
71
72
73:- include(prologmud(mud_footer)).