I don’t think it’s a bug, more likely a flaw in my logic.
(current player #player)
(#player is #in #in_secret_canyon)
(name *) in secret canyon
(inherently dark *)
(from * go #east to #in_secret_e_w_canyon)
(prevent [leave * #east])
(player can see #dragon)
The dragon looks rather nasty. You'd best not try to get by.
(name *) dragon
(* is #in #in_secret_canyon)
(descr *) I wouldn't mess with it if I were you.
(name *) secret E/W canyon above tight canyon
(from * go #west to #in_secret_canyon)
Going east in the dark avoids the dragon, with light the dragon blocks your way. Adventure is meant to be played with light, and I worked the puzzles as if light was always there - after all moving in the dark could cause death. and when the lantern finally expires the game ends.
The new darkness rules has made me look again at the code and remove the assumption that there will always be light. Replacing (player can see $) with either (player can reach $) or ($ is in scope) or ($ is #in $room) works.
In the example above the fix is simple, any of the above work. for more complicated scenarios it may not be so simple. My question therefore is “what is the best method to use” given that: (player can reach $) isn’t documented, ($ is in scope) shouldn’t be negated, ($ is #in $room) is good for a single room but if multiple room are involved could get messy.