![]() | ANSWER TO EXERCISE 13 |
The "plank breaking'' rule is implemented here in its door_to routine. Note that this returns 'true' after killing the player. Object -> PlankBridge "plank bridge" with description "Extremely fragile and precarious.", name "precarious" "fragile" "wooden" "plank" "bridge", when_open "A precarious plank bridge spans the chasm.", door_to [; if (children(player)~=0) { deadflag=1; "You step gingerly across the plank, which bows under your weight. But your meagre possessions are the straw which breaks the camel's back! There is a horrid crack..."; } print "You step gingerly across the plank, grateful that you're not burdened.^"; if (location==NearSide) return FarSide; return NearSide; ], door_dir [; if (location==NearSide) return s_to; return n_to; ], found_in NearSide FarSide, has static door open;There might be a problem with this solution if your game also contained a character who wandered about, and whose code was clever enough to run door_to routines for any doors it ran into. If so, door_to could perhaps be modified to check that the actor is the player. |