Fix fuzzer teleporting out of Fort Ludios
This commit is contained in:
4
src/do.c
4
src/do.c
@@ -1635,7 +1635,9 @@ goto_level(
|
||||
/* returning from tutorial via portal */
|
||||
u_on_newpos(stway->sx, stway->sy);
|
||||
} else {
|
||||
panic("goto_level: no corresponding portal!");
|
||||
if (!iflags.debug_fuzzer)
|
||||
impossible("goto_level: no corresponding portal!");
|
||||
u_on_rndspot(0);
|
||||
}
|
||||
} else {
|
||||
seetrap(ttrap);
|
||||
|
||||
@@ -490,6 +490,9 @@ mon_arrive(struct monst *mtmp, int when)
|
||||
if (t) {
|
||||
xlocale = t->tx, ylocale = t->ty;
|
||||
break;
|
||||
} else if (iflags.debug_fuzzer && (stway = stairway_find_dir(TRUE)) != 0) {
|
||||
/* debugfuzzer returning from knox */
|
||||
xlocale = stway->sx, ylocale = stway->sy;
|
||||
} else if (!(u.uevent.qexpelled
|
||||
&& (Is_qstart(&u.uz0) || Is_qstart(&u.uz)))) {
|
||||
impossible("mon_arrive: no corresponding portal?");
|
||||
|
||||
@@ -1313,7 +1313,10 @@ place_branch(
|
||||
}
|
||||
|
||||
if (br->type == BR_PORTAL) {
|
||||
mkportal(x, y, dest->dnum, dest->dlevel);
|
||||
if (u.ucamefrom.dnum || u.ucamefrom.dlevel)
|
||||
mkportal(x, y, u.ucamefrom.dnum, u.ucamefrom.dlevel);
|
||||
else
|
||||
mkportal(x, y, dest->dnum, dest->dlevel);
|
||||
} else if (make_stairs) {
|
||||
boolean goes_up = on_level(&br->end1, &u.uz) ? br->end1_up
|
||||
: !br->end1_up;
|
||||
|
||||
@@ -866,6 +866,7 @@ level_tele(void)
|
||||
|| gd.dungeons[newlevel.dnum].flags.unconnected
|
||||
|| !gd.dungeons[newlevel.dnum].num_dunlevs);
|
||||
newlevel.dlevel = 1 + rn2(dunlevs_in_dungeon(&newlevel));
|
||||
assign_level(&u.ucamefrom, &u.uz);
|
||||
schedule_goto(&newlevel, UTOTYPE_NONE, (char *) 0, (char *) 0);
|
||||
return;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user