crystal balls and '~'
<Someone> wrote: - You currently appear to be able to specify '~' and have it try to detect monsters (though it won't detect any long worms) Show the entire worm when specifying either '~' or 'w' now.
This commit is contained in:
@@ -53,6 +53,8 @@ non-weapon iron objects should rust when dipped in fountains since
|
|||||||
suppress "turn to flee" message if monster is mfrozen
|
suppress "turn to flee" message if monster is mfrozen
|
||||||
don't silently interrupt monster's hold on you if Levitation/Flying ends
|
don't silently interrupt monster's hold on you if Levitation/Flying ends
|
||||||
while over water
|
while over water
|
||||||
|
you could specifiy '~' with crystal ball and have it try to detect monsters,
|
||||||
|
but it never revealed anything; show the entire long worm now
|
||||||
|
|
||||||
|
|
||||||
Platform- and/or Interface-Specific Fixes
|
Platform- and/or Interface-Specific Fixes
|
||||||
|
|||||||
@@ -2322,6 +2322,7 @@ E void FDECL(wormgone, (struct monst *));
|
|||||||
E void FDECL(wormhitu, (struct monst *));
|
E void FDECL(wormhitu, (struct monst *));
|
||||||
E void FDECL(cutworm, (struct monst *,XCHAR_P,XCHAR_P,struct obj *));
|
E void FDECL(cutworm, (struct monst *,XCHAR_P,XCHAR_P,struct obj *));
|
||||||
E void FDECL(see_wsegs, (struct monst *));
|
E void FDECL(see_wsegs, (struct monst *));
|
||||||
|
E void FDECL(detect_wsegs, (struct monst *,BOOLEAN_P));
|
||||||
E void FDECL(save_worm, (int,int));
|
E void FDECL(save_worm, (int,int));
|
||||||
E void FDECL(rest_worm, (int));
|
E void FDECL(rest_worm, (int));
|
||||||
E void FDECL(place_wsegs, (struct monst *));
|
E void FDECL(place_wsegs, (struct monst *));
|
||||||
|
|||||||
10
src/detect.c
10
src/detect.c
@@ -597,9 +597,13 @@ int mclass; /* monster class, 0 for all */
|
|||||||
cls();
|
cls();
|
||||||
for (mtmp = fmon; mtmp; mtmp = mtmp->nmon) {
|
for (mtmp = fmon; mtmp; mtmp = mtmp->nmon) {
|
||||||
if (DEADMONSTER(mtmp)) continue;
|
if (DEADMONSTER(mtmp)) continue;
|
||||||
if (!mclass || mtmp->data->mlet == mclass)
|
if (!mclass || mtmp->data->mlet == mclass ||
|
||||||
if (mtmp->mx > 0)
|
(mtmp->data == &mons[PM_LONG_WORM] && mclass == S_WORM_TAIL))
|
||||||
show_glyph(mtmp->mx,mtmp->my,mon_to_glyph(mtmp));
|
if (mtmp->mx > 0) {
|
||||||
|
show_glyph(mtmp->mx,mtmp->my,mon_to_glyph(mtmp));
|
||||||
|
/* don't be stingy - display entire worm */
|
||||||
|
if (mtmp->data == &mons[PM_LONG_WORM]) detect_wsegs(mtmp,0);
|
||||||
|
}
|
||||||
if (otmp && otmp->cursed &&
|
if (otmp && otmp->cursed &&
|
||||||
(mtmp->msleeping || !mtmp->mcanmove)) {
|
(mtmp->msleeping || !mtmp->mcanmove)) {
|
||||||
mtmp->msleeping = mtmp->mfrozen = 0;
|
mtmp->msleeping = mtmp->mfrozen = 0;
|
||||||
|
|||||||
24
src/worm.c
24
src/worm.c
@@ -450,6 +450,30 @@ see_wsegs(worm)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* detect_wsegs()
|
||||||
|
*
|
||||||
|
* Display all of the segments of the given worm for detection.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
detect_wsegs(worm, use_detection_glyph)
|
||||||
|
struct monst *worm;
|
||||||
|
boolean use_detection_glyph;
|
||||||
|
{
|
||||||
|
int num;
|
||||||
|
struct wseg *curr = wtails[worm->wormno];
|
||||||
|
|
||||||
|
/* if (!mtmp->wormno) return; bullet proofing */
|
||||||
|
|
||||||
|
while (curr != wheads[worm->wormno]) {
|
||||||
|
num = use_detection_glyph ?
|
||||||
|
detected_monnum_to_glyph(what_mon(PM_LONG_WORM_TAIL)) :
|
||||||
|
monnum_to_glyph(what_mon(PM_LONG_WORM_TAIL));
|
||||||
|
show_glyph(curr->wx,curr->wy,num);
|
||||||
|
curr = curr->nseg;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* save_worm()
|
* save_worm()
|
||||||
|
|||||||
Reference in New Issue
Block a user