From f2b75c3b0eca99cc0404a1319fe806f21aa9b7d2 Mon Sep 17 00:00:00 2001 From: Pasi Kallinen Date: Fri, 17 Mar 2023 14:14:06 +0200 Subject: [PATCH] Fuzzer randomly teleports between dungeon branches Previously the fuzzer usually stayed in the Dungeons of Doom, only very rarely going to other dungeon branches. Now, it will randomly choose a dungeon branch and a level in that branch to level teleport to. --- src/teleport.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/teleport.c b/src/teleport.c index 9027dbef9..1eef5a146 100644 --- a/src/teleport.c +++ b/src/teleport.c @@ -859,8 +859,16 @@ level_tele(void) char buf[BUFSZ]; boolean force_dest = FALSE; - if (iflags.debug_fuzzer) - goto random_levtport; + if (iflags.debug_fuzzer) { + do { + newlevel.dnum = rn2(gn.n_dgns); + } while (newlevel.dnum == astral_level.dnum + || gd.dungeons[newlevel.dnum].flags.unconnected + || !gd.dungeons[newlevel.dnum].num_dunlevs); + newlevel.dlevel = 1 + rn2(dunlevs_in_dungeon(&newlevel)); + schedule_goto(&newlevel, UTOTYPE_NONE, (char *) 0, (char *) 0); + return; + } if ((u.uhave.amulet || In_endgame(&u.uz) || In_sokoban(&u.uz)) && !wizard) { You_feel("very disoriented for a moment.");