teleporting of engulfer
Commit ba731a346b "fix shop steal when
teleporting your engulfer" mentioned that there was no longer any
message given if engulfer+hero got teleported. Add such. It is a
bit lame but the situation is rare enough that it should suffice.
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
/* NetHack 3.7 teleport.c $NHDT-Date: 1685863331 2023/06/04 07:22:11 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.206 $ */
|
/* NetHack 3.7 teleport.c $NHDT-Date: 1736129950 2025/01/05 18:19:10 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.235 $ */
|
||||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||||
/*-Copyright (c) Robert Patrick Rankin, 2011. */
|
/*-Copyright (c) Robert Patrick Rankin, 2011. */
|
||||||
/* NetHack may be freely redistributed. See license for details. */
|
/* NetHack may be freely redistributed. See license for details. */
|
||||||
@@ -1653,14 +1653,16 @@ rloc_to_core(
|
|||||||
maybe_unhide_at(x, y);
|
maybe_unhide_at(x, y);
|
||||||
newsym(x, y); /* update new location */
|
newsym(x, y); /* update new location */
|
||||||
set_apparxy(mtmp); /* orient monster */
|
set_apparxy(mtmp); /* orient monster */
|
||||||
if (domsg && (canspotmon(mtmp) || appearmsg) && (u.ustuck != mtmp)) {
|
if (domsg && (canspotmon(mtmp) || appearmsg || mtmp == u.ustuck)) {
|
||||||
int du = distu(x, y), olddu;
|
int du = distu(x, y), olddu;
|
||||||
const char *next = (du <= 2) ? " next to you" : 0, /* next2u() */
|
const char *next = (du <= 2) ? " next to you" : 0, /* next2u() */
|
||||||
*nearu = (du <= BOLT_LIM * BOLT_LIM) ? " close by" : 0;
|
*nearu = (du <= BOLT_LIM * BOLT_LIM) ? " close by" : 0;
|
||||||
|
|
||||||
set_msg_xy(x, y);
|
set_msg_xy(x, y);
|
||||||
mtmp->mstrategy &= ~STRAT_APPEARMSG; /* one chance only */
|
mtmp->mstrategy &= ~STRAT_APPEARMSG; /* one chance only */
|
||||||
if (telemsg && (couldsee(x, y) || sensemon(mtmp))) {
|
if (mtmp == u.ustuck && !u_at(u.ux0, u.uy0)) {
|
||||||
|
You("and %s teleport together.", mon_nam(mtmp));
|
||||||
|
} else if (telemsg && (couldsee(x, y) || sensemon(mtmp))) {
|
||||||
pline("%s vanishes and reappears%s.",
|
pline("%s vanishes and reappears%s.",
|
||||||
Monnam(mtmp),
|
Monnam(mtmp),
|
||||||
next ? next
|
next ? next
|
||||||
@@ -1675,11 +1677,18 @@ rloc_to_core(
|
|||||||
!Blind ? "appears" : "arrives",
|
!Blind ? "appears" : "arrives",
|
||||||
next ? next : nearu ? nearu : "");
|
next ? next : nearu ? nearu : "");
|
||||||
}
|
}
|
||||||
|
/* wand discovery only happens if a messaage is delivered (bug?);
|
||||||
|
if spell or q.mechanic attack or artifact #invoke for banish
|
||||||
|
then current_wand will be Null */
|
||||||
|
if (gc.current_wand && gc.current_wand->otyp == WAN_TELEPORTATION)
|
||||||
|
makeknown(WAN_TELEPORTATION);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* shopkeepers will only teleport if you zap them with a wand of
|
/* shopkeepers will only teleport if you zap them with a wand of
|
||||||
teleportation or if they've been transformed into a jumpy monster;
|
teleportation or if they've been transformed into a jumpy monster;
|
||||||
the latter only happens if you've attacked them with polymorph */
|
the latter only happens if you've attacked them with polymorph
|
||||||
|
[FIXME? or they've been hit by a genetic engineer, which won't
|
||||||
|
necessarily be due to Conflict by hero] */
|
||||||
if (resident_shk && !inhishop(mtmp))
|
if (resident_shk && !inhishop(mtmp))
|
||||||
make_angry_shk(mtmp, oldx, oldy);
|
make_angry_shk(mtmp, oldx, oldy);
|
||||||
|
|
||||||
@@ -2200,7 +2209,9 @@ random_teleport_level(void)
|
|||||||
/* you teleport a monster (via wand, spell, or poly'd q.mechanic attack);
|
/* you teleport a monster (via wand, spell, or poly'd q.mechanic attack);
|
||||||
return false iff the attempt fails */
|
return false iff the attempt fails */
|
||||||
boolean
|
boolean
|
||||||
u_teleport_mon(struct monst *mtmp, boolean give_feedback)
|
u_teleport_mon(
|
||||||
|
struct monst *mtmp,
|
||||||
|
boolean give_feedback)
|
||||||
{
|
{
|
||||||
coord cc;
|
coord cc;
|
||||||
|
|
||||||
@@ -2215,10 +2226,12 @@ u_teleport_mon(struct monst *mtmp, boolean give_feedback)
|
|||||||
if (!rloc(mtmp, RLOC_MSG))
|
if (!rloc(mtmp, RLOC_MSG))
|
||||||
m_into_limbo(mtmp);
|
m_into_limbo(mtmp);
|
||||||
} else if ((is_rider(mtmp->data) || control_teleport(mtmp->data))
|
} else if ((is_rider(mtmp->data) || control_teleport(mtmp->data))
|
||||||
&& rn2(13) && enexto(&cc, u.ux, u.uy, mtmp->data))
|
&& rn2(13) && enexto(&cc, u.ux, u.uy, mtmp->data)) {
|
||||||
rloc_to(mtmp, cc.x, cc.y);
|
rloc_to(mtmp, cc.x, cc.y);
|
||||||
else
|
} else {
|
||||||
(void) rloc(mtmp, RLOC_MSG);
|
if (!rloc(mtmp, RLOC_MSG))
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user