E void NDECL(u_on_upstairs);
E void NDECL(u_on_dnstairs);
E boolean FDECL(On_stairs, (XCHAR_P, XCHAR_P));
+E boolean FDECL(On_ladder, (XCHAR_P, XCHAR_P));
+E boolean FDECL(On_stairs_up, (XCHAR_P, XCHAR_P));
+E boolean FDECL(On_stairs_dn, (XCHAR_P, XCHAR_P));
E void FDECL(get_level, (d_level *, int));
E boolean FDECL(Is_botlevel, (d_level *));
E boolean FDECL(Can_fall_thru, (d_level *));
add_herecmd_menuitem(win, dosit,
"Sit on the throne");
- if ((u.ux == xupstair && u.uy == yupstair)
- || (u.ux == g.sstairs.sx && u.uy == g.sstairs.sy && g.sstairs.up)
- || (u.ux == xupladder && u.uy == yupladder)) {
+ if (On_stairs_up(u.ux, u.uy)) {
Sprintf(buf, "Go up the %s",
(u.ux == xupladder && u.uy == yupladder)
? "ladder" : "stairs");
add_herecmd_menuitem(win, doup, buf);
}
- if ((u.ux == xdnstair && u.uy == ydnstair)
- || (u.ux == g.sstairs.sx && u.uy == g.sstairs.sy && !g.sstairs.up)
- || (u.ux == xdnladder && u.uy == ydnladder)) {
+ if (On_stairs_dn(u.ux, u.uy)) {
Sprintf(buf, "Go down the %s",
(u.ux == xupladder && u.uy == yupladder)
? "ladder" : "stairs");
} else if (IS_THRONE(levl[u.ux][u.uy].typ)) {
cmd[0] = cmd_from_func(dosit);
return cmd;
- } else if ((u.ux == xupstair && u.uy == yupstair)
- || (u.ux == g.sstairs.sx && u.uy == g.sstairs.sy
- && g.sstairs.up)
- || (u.ux == xupladder && u.uy == yupladder)) {
+ } else if (On_stairs_up(u.ux, u.uy)) {
cmd[0] = cmd_from_func(doup);
return cmd;
- } else if ((u.ux == xdnstair && u.uy == ydnstair)
- || (u.ux == g.sstairs.sx && u.uy == g.sstairs.sy
- && !g.sstairs.up)
- || (u.ux == xdnladder && u.uy == ydnladder)) {
+ } else if (On_stairs_dn(u.ux, u.uy)) {
cmd[0] = cmd_from_func(dodown);
return cmd;
} else if ((o = vobj_at(u.ux, u.uy)) != 0) {
} else if (IS_SINK(ltyp)) {
Strcpy(msg, "A tangled mass of plumbing remains below the sink.");
return FALSE;
- } else if ((cc->x == xupladder && cc->y == yupladder) /* ladder up */
- || (cc->x == xdnladder && cc->y == ydnladder)) { /* " down */
+ } else if (On_ladder(cc->x, cc->y)) {
Strcpy(msg, "The ladder is unaffected.");
return FALSE;
} else {
supporting = "throne";
else if (IS_ALTAR(ltyp))
supporting = "altar";
- else if ((cc->x == xupstair && cc->y == yupstair)
- || (cc->x == g.sstairs.sx && cc->y == g.sstairs.sy
- && g.sstairs.up))
- /* "staircase up" */
- supporting = "stairs";
- else if ((cc->x == xdnstair && cc->y == ydnstair)
- || (cc->x == g.sstairs.sx && cc->y == g.sstairs.sy
- && !g.sstairs.up))
- /* "staircase down" */
+ else if (On_stairs(cc->x, cc->y))
+ /* staircase up or down. On_ladder handled above. */
supporting = "stairs";
else if (ltyp == DRAWBRIDGE_DOWN /* "lowered drawbridge" */
|| ltyp == DBWALL) /* "raised drawbridge" */
|| (x == g.sstairs.sx && y == g.sstairs.sy));
}
+boolean
+On_ladder(x, y)
+xchar x, y;
+{
+ return (boolean) ((x == xdnladder && y == ydnladder)
+ || (x == xupladder && y == yupladder));
+}
+
+boolean
+On_stairs_up(x, y)
+xchar x, y;
+{
+ return ((x == xupstair && y == yupstair)
+ || (x == g.sstairs.sx && y == g.sstairs.sy && g.sstairs.up)
+ || (x == xupladder && y == yupladder));
+}
+
+boolean
+On_stairs_dn(x, y)
+xchar x, y;
+{
+ return ((x == xdnstair && y == ydnstair)
+ || (x == g.sstairs.sx && y == g.sstairs.sy && !g.sstairs.up)
+ || (x == xdnladder && y == ydnladder));
+}
+
boolean
Is_botlevel(lev)
d_level *lev;