Place Grasslands "Grasslands, near Hut" with name "grasslands" "grass" "hut" "path", description "The grasslands sway over low hills in all directions: it is a peaceful wilderness, broken only by this hut and a faint path to the north.", in_to Hut, e_to Hut, n_to Valley, cant_go "You wander around for a while but end up back at the hut."; Place Valley "Pocket Valley" with name "valley" "trail", description "A pleasant pocket valley in the grassy hills, through which a trail runs north-to-south.", n_to "The trail runs out to nothing, and you retreat for fear of getting so lost you couldn't find the hut again by nightfall.", cant_go "You wander around the pleasant valley, but are afraid to lose sight of the trail.", s_to Grasslands; [ RideSub; print_ret "You can hardly ride ", (a) noun, "."; ]; Object -> horse "horse" with short_name [; if (self has general) print "winged horse"; else print "chestnut horse"; rtrue; ], parse_name [ i j; if (self has general) j='winged'; else j=-1; while (NextWord()==j or 'horse' or 'chestnut') i++; return i; ], describe [; print_ret "There is ", (a) self, " here, munching on a pile of oats."; ], before [; Cast: if (the_spell_was == bozbar_spell) { give self general; "A pair of handsome brown wings suddenly appears on the horse's powerful shoulders. The horse turns in a complete circle, a look of puzzlement on his face."; } if (the_spell_was == yomin_spell) "He is mainly thinking about oats. Partly who you are and what you're up to, but mainly oats."; Enter: <>; Ride: if (horse hasnt general) "You ride around for a while, exercising the horse, but soon enough he tires of this and pointedly brings you back to the oats. Obligingly you dismount and he begins grazing again."; print "You begin to ride north. Then, slowly at first but with increasing sureness, the horse begins beating its powerful wings. You rise majestically through the air, sailing gracefully across a chasm where the hills fall away. The horse lands gently on the far side and deposits you, taking to the skies again.^"; PlayerTo(Edge); rtrue; ], has animate; Object -> oats "pile of oats" with name "oats" "pile" "of", before [; Examine, Search, LookUnder: self.before=NULL; move shiny_scroll to player; score=score+5; itobj=shiny_scroll; "Sifting through the oats, you find a shiny scroll! Lucky you got to it before the horse did. As you turn it over in your hands, it seems undamaged."; Take: "What would you want with all those oats?"; ], has scenery; Scroll shiny_scroll "shiny scroll" with name "shiny"; Spell -> bozbar_spell with name "bozbar", purpose "cause an animal to sprout wings", magic [; if (second==0 || second hasnt animate) "The spell dies away in vain."; if (second==player) "Your elbows twitch, but there is no other effect."; print_ret "For a moment, ", (the) second, " looks highly discomforted, but the moment passes."; ], unmagic [; if (second==0 || second hasnt animate) "The spell dies away in vain."; if (second==player) "What wings?"; if (second==horse && horse has general) { give horse ~general; "The Enchanter giveth, and the Enchanter taketh away. The horse looks disconsolate but returns to the oats."; } print_ret (The) second, " has no wings to lose."; ];