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