.gm fly on sets only the CAN_FLY movement flag, but flight physics were
gated on isPlayerFlying() which also requires FLYING (only set once
already airborne) — a chicken-and-egg that left the player unable to take
off. Drive setFlyingActive() from a new canFly() (CAN_FLY set) instead,
and ungate the descend key (X) so it works on foot, not just on a flying
mount. Space ascends, X descends, gravity off while CAN_FLY is set.