U1258 - removing ring of levitation while riding a flying steed

As reported, you'd get the "float gently to the ground" message even while
riding a flying steed.  Rearranged the code and added a new case for this.
I found it odd that Hallucination protected you from falling out of the
saddle due to the Sokoban air currents.  The message implied otherwise, so
I've made the sokoban_trap code apply in both cases.
This commit is contained in:
cohrs
2005-01-21 22:27:19 +00:00
parent c90746c670
commit c40d876c3b
2 changed files with 26 additions and 23 deletions

View File

@@ -77,6 +77,7 @@ message order when swapping places with a pet (e.g. into a trap), also use
different term instead of "displace" different term instead of "displace"
flyers can get out of pits more easily than non-flyers flyers can get out of pits more easily than non-flyers
allow use of the < command to try to exit a pit allow use of the < command to try to exit a pit
clean up messages when you stop levitation while riding a flying steed
Platform- and/or Interface-Specific Fixes Platform- and/or Interface-Specific Fixes

View File

@@ -2447,32 +2447,34 @@ long hmask, emask; /* might cancel timeout */
if (!(emask & W_SADDLE)) if (!(emask & W_SADDLE))
#endif #endif
{ {
boolean sokoban_trap = (In_sokoban(&u.uz) && trap); if (In_sokoban(&u.uz) && trap) {
if (Hallucination) /* Justification elsewhere for Sokoban traps
pline("Bummer! You've %s.", * is based on air currents. This is
is_pool(u.ux,u.uy) ? * consistent with that.
"splashed down" : sokoban_trap ? "crashed" : * The unexpected additional force of the
"hit the ground"); * air currents once leviation
else { * ceases knocks you off your feet.
if (!sokoban_trap) */
You("float gently to the %s.", if (Hallucination)
surface(u.ux, u.uy)); pline("Bummer! You've crashed.");
else { else
/* Justification elsewhere for Sokoban traps
* is based on air currents. This is
* consistent with that.
* The unexpected additional force of the
* air currents once leviation
* ceases knocks you off your feet.
*/
You("fall over."); You("fall over.");
losehp(rnd(2), "dangerous winds", KILLED_BY); losehp(rnd(2), "dangerous winds", KILLED_BY);
#ifdef STEED #ifdef STEED
if (u.usteed) dismount_steed(DISMOUNT_FELL); if (u.usteed) dismount_steed(DISMOUNT_FELL);
#endif #endif
selftouch("As you fall, you"); selftouch("As you fall, you");
} #ifdef STEED
} } else if (u.usteed && (is_floater(u.usteed->data) ||
is_flyer(u.usteed->data))) {
You("settle more firmly in the saddle.");
#endif
} else if (Hallucination)
pline("Bummer! You've %s.",
is_pool(u.ux,u.uy) ? "splashed down" :
"hit the ground");
else
You("float gently to the %s.", surface(u.ux, u.uy));
} }
} }
} }