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"
flyers can get out of pits more easily than non-flyers
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

View File

@@ -2447,32 +2447,34 @@ long hmask, emask; /* might cancel timeout */
if (!(emask & W_SADDLE))
#endif
{
boolean sokoban_trap = (In_sokoban(&u.uz) && trap);
if (Hallucination)
pline("Bummer! You've %s.",
is_pool(u.ux,u.uy) ?
"splashed down" : sokoban_trap ? "crashed" :
"hit the ground");
else {
if (!sokoban_trap)
You("float gently to the %s.",
surface(u.ux, u.uy));
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.
*/
if (In_sokoban(&u.uz) && trap) {
/* 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.
*/
if (Hallucination)
pline("Bummer! You've crashed.");
else
You("fall over.");
losehp(rnd(2), "dangerous winds", KILLED_BY);
losehp(rnd(2), "dangerous winds", KILLED_BY);
#ifdef STEED
if (u.usteed) dismount_steed(DISMOUNT_FELL);
if (u.usteed) dismount_steed(DISMOUNT_FELL);
#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));
}
}
}