From: Pasi Kallinen Date: Thu, 10 Dec 2020 16:10:05 +0000 (+0200) Subject: Unify magic portals X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=d537ceb2c4d3e9fcc4e84a0b7bc1b4157b6afa0e;p=nethack Unify magic portals --- diff --git a/src/trap.c b/src/trap.c index 739fd3909..9a8d88668 100644 --- a/src/trap.c +++ b/src/trap.c @@ -31,7 +31,7 @@ static int FDECL(trapeffect_anti_magic, (struct monst *, struct trap *, unsigned static int FDECL(trapeffect_poly_trap, (struct monst *, struct trap *, unsigned)); static int FDECL(trapeffect_landmine, (struct monst *, struct trap *, unsigned)); static int FDECL(trapeffect_rolling_boulder_trap, (struct monst *, struct trap *, unsigned)); -static void FDECL(trapeffect_magic_portal, (struct trap *, unsigned)); +static int FDECL(trapeffect_magic_portal, (struct monst *, struct trap *, unsigned)); static char *FDECL(trapnote, (struct trap *, BOOLEAN_P)); static int FDECL(steedintrap, (struct trap *, struct obj *)); static void FDECL(launch_drop_spot, (struct obj *, XCHAR_P, XCHAR_P)); @@ -2255,13 +2255,19 @@ unsigned trflags; return 0; } -static void -trapeffect_magic_portal(trap, trflags) +static int +trapeffect_magic_portal(mtmp, trap, trflags) +struct monst *mtmp; struct trap *trap; unsigned trflags; { - feeltrap(trap); - domagicportal(trap); + if (mtmp == &g.youmonst) { + feeltrap(trap); + domagicportal(trap); + } else { + return trapeffect_level_telep(mtmp, trap, trflags); + } + return 0; } void @@ -2413,7 +2419,7 @@ unsigned trflags; break; case MAGIC_PORTAL: - trapeffect_magic_portal(trap, trflags); + (void) trapeffect_magic_portal(&g.youmonst, trap, trflags); break; case VIBRATING_SQUARE: @@ -3087,8 +3093,9 @@ register struct monst *mtmp; case TRAPDOOR: return trapeffect_hole(mtmp, trap, 0); case LEVEL_TELEP: - case MAGIC_PORTAL: return trapeffect_level_telep(mtmp, trap, 0); + case MAGIC_PORTAL: + return trapeffect_magic_portal(mtmp, trap, 0); case TELEP_TRAP: return trapeffect_telep_trap(mtmp, trap, 0); case WEB: