Prevent wizmode panic

In wizard mode, if you angered your quest leader and got expelled from
the quest (which removes the quest portal from the dungeon), then used
the wizmode level teleport menu to teleport back to the quest start and
talked with the angry leader, you would get booted back to the dungeon,
and the game panicked because the dungeon end of the portal didn't
exist anymore.
This commit is contained in:
Pasi Kallinen
2020-03-10 08:02:08 +02:00
parent a2cb638236
commit 67d3cd31f8

View File

@@ -1506,10 +1506,21 @@ boolean at_stairs, falling, portal;
if (ttrap->ttyp == MAGIC_PORTAL)
break;
if (!ttrap)
panic("goto_level: no corresponding portal!");
seetrap(ttrap);
u_on_newpos(ttrap->tx, ttrap->ty);
if (!ttrap) {
if (u.uevent.qexpelled && Is_qstart(&u.uz0)) {
/* we're coming back from the quest home level, after
already getting expelled once. The portal back doesn't
exist anymore - see expulsion(). This can only happen
in wizmode.
*/
u_on_rndspot(0);
} else {
panic("goto_level: no corresponding portal!");
}
} else {
seetrap(ttrap);
u_on_newpos(ttrap->tx, ttrap->ty);
}
} else if (at_stairs && !In_endgame(&u.uz)) {
if (up) {
if (g.at_ladder)