Fix fuzzer teleporting out of Fort Ludios

This commit is contained in:
Pasi Kallinen
2023-03-18 08:51:33 +02:00
parent f360dee4dd
commit e37428d5cd
4 changed files with 11 additions and 2 deletions

View File

@@ -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);

View File

@@ -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?");

View File

@@ -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;

View File

@@ -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;
}