Inform 7: flying and landing

i need a code that will allow the player to fly to rooms and land on objects. Also i want a code for the player to hover or glide. When the player is gliding i would like it to still say the room description but say from far up and will continue to do so until the player lands. so obviously i need a landing command to bring the player back down too.

To actually put the player (say a bird) on another object, that other object must be of the kind enterable supporter. Just declare it to be that when you create it The clothesline is an enterable supporter in the Backyard or whatever.

You can change the descriptions of rooms with conditions like this

Piccadilly Circus is a room. "[if the player is airborn]Below you lots of your fellow-pigeons have gathered. Many of them sit resting on the stone chap up here atop the pillar as well[otherwise]The large square is full of pigeons fluttering everywhere around you. In the center a tall column with a statue high up on top of it looms over you[end if]."

And for flying and landing you could try something like:

Birdie can be airborn.
Peter Pan can be airborn. 

Flying is an action applying to one direction.
Understand "fly [direction]" as flying.

Check flying:
	if the player is Birdie or the player is Peter Pan:
		say "You soar up into the air."
		continue the action;
	otherwise:
		say "Sure … and pigs can fly!";
		stop the action.

Carry out flying:
	now the player is airborn;
	try going the direction understood instead.


Landing on is an action applying to one thing.
Understand "land on [something]" as landing on.

Check landing on:
	if the player is not airborn:
		say "You're already safely on the ground.";
		stop the action.

Carry out landing on:
	if the noun is an enterable supporter:
		now the player is not airborn;
		move the player to the noun;
	otherwise:
		instead say "You flutter away from [the noun]. It doesn't afford landing."

Report landing on:
	say "You land on [the noun]."

!!! Be warned that none of the above is tested, so it’s bound to be buggy (interacting as it does with going and moving the player around). !!!