Merge branch 'NetHack-3.6'
This commit is contained in:
+6
-1
@@ -1,4 +1,4 @@
|
|||||||
$NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.49 $ $NHDT-Date: 1560089250 2019/06/09 14:07:30 $
|
$NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.50 $ $NHDT-Date: 1560161804 2019/06/10 10:16:44 $
|
||||||
|
|
||||||
This fixes36.3 file is here to capture information about updates in the 3.6.x
|
This fixes36.3 file is here to capture information about updates in the 3.6.x
|
||||||
lineage following the release of 3.6.2 in May 2019. Please note, however,
|
lineage following the release of 3.6.2 in May 2019. Please note, however,
|
||||||
@@ -68,6 +68,11 @@ unlike watching a monster trying to swap out a cursed weapon for some other
|
|||||||
that weapon becoming welded to the monster's hand/claw/whatever
|
that weapon becoming welded to the monster's hand/claw/whatever
|
||||||
accept "hidden" as an attribute for wizard mode ^G monster creation; created
|
accept "hidden" as an attribute for wizard mode ^G monster creation; created
|
||||||
monsters which can't be seen will have their locations highlighted
|
monsters which can't be seen will have their locations highlighted
|
||||||
|
don't give feedback for monster zapping a wand if a monster plays a fire horn
|
||||||
|
directed at self to burn away slime
|
||||||
|
if hero knows the number of charges in a wand or magical horn and a monster
|
||||||
|
acquires it and zaps/plays it when not in view, remove the hero's
|
||||||
|
memory of the number of charges
|
||||||
|
|
||||||
|
|
||||||
Fixes to Post-3.6.2 Problems that Were Exposed Via git Repository
|
Fixes to Post-3.6.2 Problems that Were Exposed Via git Repository
|
||||||
|
|||||||
+2
-1
@@ -1,4 +1,4 @@
|
|||||||
/* NetHack 3.6 extern.h $NHDT-Date: 1560085861 2019/06/09 13:11:01 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.713 $ */
|
/* NetHack 3.6 extern.h $NHDT-Date: 1560161804 2019/06/10 10:16:44 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.714 $ */
|
||||||
/* Copyright (c) Steve Creps, 1988. */
|
/* Copyright (c) Steve Creps, 1988. */
|
||||||
/* NetHack may be freely redistributed. See license for details. */
|
/* NetHack may be freely redistributed. See license for details. */
|
||||||
|
|
||||||
@@ -448,6 +448,7 @@ E char *FDECL(Adjmonnam, (struct monst *, const char *));
|
|||||||
E char *FDECL(Amonnam, (struct monst *));
|
E char *FDECL(Amonnam, (struct monst *));
|
||||||
E char *FDECL(a_monnam, (struct monst *));
|
E char *FDECL(a_monnam, (struct monst *));
|
||||||
E char *FDECL(distant_monnam, (struct monst *, int, char *));
|
E char *FDECL(distant_monnam, (struct monst *, int, char *));
|
||||||
|
E char *FDECL(mon_nam_too, (struct monst *, struct monst *));
|
||||||
E char *FDECL(rndmonnam, (char *));
|
E char *FDECL(rndmonnam, (char *));
|
||||||
E const char *FDECL(hcolor, (const char *));
|
E const char *FDECL(hcolor, (const char *));
|
||||||
E const char *NDECL(rndcolor);
|
E const char *NDECL(rndcolor);
|
||||||
|
|||||||
+28
-1
@@ -1,4 +1,4 @@
|
|||||||
/* NetHack 3.6 do_name.c $NHDT-Date: 1555627306 2019/04/18 22:41:46 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.145 $ */
|
/* NetHack 3.6 do_name.c $NHDT-Date: 1560161806 2019/06/10 10:16:46 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.147 $ */
|
||||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||||
/*-Copyright (c) Pasi Kallinen, 2018. */
|
/*-Copyright (c) Pasi Kallinen, 2018. */
|
||||||
/* NetHack may be freely redistributed. See license for details. */
|
/* NetHack may be freely redistributed. See license for details. */
|
||||||
@@ -1924,6 +1924,33 @@ char *outbuf;
|
|||||||
return outbuf;
|
return outbuf;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* returns mon_nam(mon) relative to other_mon; normal name unless they're
|
||||||
|
the same, in which case the reference is to {him|her|it} self */
|
||||||
|
char *
|
||||||
|
mon_nam_too(mon, other_mon)
|
||||||
|
struct monst *mon, *other_mon;
|
||||||
|
{
|
||||||
|
char *outbuf;
|
||||||
|
|
||||||
|
if (mon != other_mon) {
|
||||||
|
outbuf = mon_nam(mon);
|
||||||
|
} else {
|
||||||
|
outbuf = nextmbuf();
|
||||||
|
switch (pronoun_gender(mon, FALSE)) {
|
||||||
|
case 0:
|
||||||
|
Strcpy(outbuf, "himself");
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
Strcpy(outbuf, "herself");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
Strcpy(outbuf, "itself");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return outbuf;
|
||||||
|
}
|
||||||
|
|
||||||
/* fake monsters used to be in a hard-coded array, now in a data file */
|
/* fake monsters used to be in a hard-coded array, now in a data file */
|
||||||
STATIC_OVL char *
|
STATIC_OVL char *
|
||||||
bogusmon(buf, code)
|
bogusmon(buf, code)
|
||||||
|
|||||||
+5
-30
@@ -1,4 +1,4 @@
|
|||||||
/* NetHack 3.6 mhitm.c $NHDT-Date: 1555720096 2019/04/20 00:28:16 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.113 $ */
|
/* NetHack 3.6 mhitm.c $NHDT-Date: 1560161806 2019/06/10 10:16:46 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.116 $ */
|
||||||
/* 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. */
|
||||||
@@ -9,7 +9,6 @@
|
|||||||
static const char brief_feeling[] =
|
static const char brief_feeling[] =
|
||||||
"have a %s feeling for a moment, then it passes.";
|
"have a %s feeling for a moment, then it passes.";
|
||||||
|
|
||||||
STATIC_DCL char *FDECL(mon_nam_too, (char *, struct monst *, struct monst *));
|
|
||||||
STATIC_DCL int FDECL(hitmm, (struct monst *, struct monst *,
|
STATIC_DCL int FDECL(hitmm, (struct monst *, struct monst *,
|
||||||
struct attack *));
|
struct attack *));
|
||||||
STATIC_DCL int FDECL(gazemm, (struct monst *, struct monst *,
|
STATIC_DCL int FDECL(gazemm, (struct monst *, struct monst *,
|
||||||
@@ -29,30 +28,6 @@ STATIC_DCL int FDECL(passivemm, (struct monst *, struct monst *,
|
|||||||
BOOLEAN_P, int));
|
BOOLEAN_P, int));
|
||||||
|
|
||||||
|
|
||||||
/* returns mon_nam(mon) relative to other_mon; normal name unless they're
|
|
||||||
the same, in which case the reference is to {him|her|it} self */
|
|
||||||
STATIC_OVL char *
|
|
||||||
mon_nam_too(outbuf, mon, other_mon)
|
|
||||||
char *outbuf;
|
|
||||||
struct monst *mon, *other_mon;
|
|
||||||
{
|
|
||||||
if (mon != other_mon)
|
|
||||||
Strcpy(outbuf, mon_nam(mon));
|
|
||||||
else
|
|
||||||
switch (pronoun_gender(mon, FALSE)) {
|
|
||||||
case 0:
|
|
||||||
Strcpy(outbuf, "himself");
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
Strcpy(outbuf, "herself");
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
Strcpy(outbuf, "itself");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return outbuf;
|
|
||||||
}
|
|
||||||
|
|
||||||
STATIC_OVL void
|
STATIC_OVL void
|
||||||
noises(magr, mattk)
|
noises(magr, mattk)
|
||||||
register struct monst *magr;
|
register struct monst *magr;
|
||||||
@@ -76,7 +51,7 @@ register struct monst *magr, *mdef;
|
|||||||
struct attack *mattk;
|
struct attack *mattk;
|
||||||
{
|
{
|
||||||
const char *fmt;
|
const char *fmt;
|
||||||
char buf[BUFSZ], mdef_name[BUFSZ];
|
char buf[BUFSZ];
|
||||||
|
|
||||||
if (g.vis) {
|
if (g.vis) {
|
||||||
if (!canspotmon(magr))
|
if (!canspotmon(magr))
|
||||||
@@ -91,7 +66,7 @@ struct attack *mattk;
|
|||||||
? "%s pretends to be friendly to"
|
? "%s pretends to be friendly to"
|
||||||
: "%s misses";
|
: "%s misses";
|
||||||
Sprintf(buf, fmt, Monnam(magr));
|
Sprintf(buf, fmt, Monnam(magr));
|
||||||
pline("%s %s.", buf, mon_nam_too(mdef_name, mdef, magr));
|
pline("%s %s.", buf, mon_nam_too(mdef, magr));
|
||||||
} else
|
} else
|
||||||
noises(magr, mattk);
|
noises(magr, mattk);
|
||||||
}
|
}
|
||||||
@@ -528,7 +503,7 @@ struct attack *mattk;
|
|||||||
{
|
{
|
||||||
if (g.vis) {
|
if (g.vis) {
|
||||||
int compat;
|
int compat;
|
||||||
char buf[BUFSZ], mdef_name[BUFSZ];
|
char buf[BUFSZ];
|
||||||
|
|
||||||
if (!canspotmon(magr))
|
if (!canspotmon(magr))
|
||||||
map_invisible(magr->mx, magr->my);
|
map_invisible(magr->mx, magr->my);
|
||||||
@@ -572,7 +547,7 @@ struct attack *mattk;
|
|||||||
default:
|
default:
|
||||||
Sprintf(buf, "%s hits", magr_name);
|
Sprintf(buf, "%s hits", magr_name);
|
||||||
}
|
}
|
||||||
pline("%s %s.", buf, mon_nam_too(mdef_name, mdef, magr));
|
pline("%s %s.", buf, mon_nam_too(mdef, magr));
|
||||||
}
|
}
|
||||||
} else
|
} else
|
||||||
noises(magr, mattk);
|
noises(magr, mattk);
|
||||||
|
|||||||
+46
-30
@@ -1,4 +1,4 @@
|
|||||||
/* NetHack 3.6 muse.c $NHDT-Date: 1547025167 2019/01/09 09:12:47 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.92 $ */
|
/* NetHack 3.6 muse.c $NHDT-Date: 1560161807 2019/06/10 10:16:47 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.96 $ */
|
||||||
/* Copyright (C) 1990 by Ken Arromdee */
|
/* Copyright (C) 1990 by Ken Arromdee */
|
||||||
/* NetHack may be freely redistributed. See license for details. */
|
/* NetHack may be freely redistributed. See license for details. */
|
||||||
|
|
||||||
@@ -16,7 +16,8 @@
|
|||||||
|
|
||||||
STATIC_DCL struct permonst *FDECL(muse_newcham_mon, (struct monst *));
|
STATIC_DCL struct permonst *FDECL(muse_newcham_mon, (struct monst *));
|
||||||
STATIC_DCL int FDECL(precheck, (struct monst *, struct obj *));
|
STATIC_DCL int FDECL(precheck, (struct monst *, struct obj *));
|
||||||
STATIC_DCL void FDECL(mzapmsg, (struct monst *, struct obj *, BOOLEAN_P));
|
STATIC_DCL void FDECL(mzapwand, (struct monst *, struct obj *, BOOLEAN_P));
|
||||||
|
STATIC_DCL void FDECL(mplayhorn, (struct monst *, struct obj *, BOOLEAN_P));
|
||||||
STATIC_DCL void FDECL(mreadmsg, (struct monst *, struct obj *));
|
STATIC_DCL void FDECL(mreadmsg, (struct monst *, struct obj *));
|
||||||
STATIC_DCL void FDECL(mquaffmsg, (struct monst *, struct obj *));
|
STATIC_DCL void FDECL(mquaffmsg, (struct monst *, struct obj *));
|
||||||
STATIC_DCL boolean FDECL(m_use_healing, (struct monst *));
|
STATIC_DCL boolean FDECL(m_use_healing, (struct monst *));
|
||||||
@@ -124,7 +125,7 @@ struct obj *obj;
|
|||||||
pline("%s zaps %s, which suddenly explodes!", Monnam(mon),
|
pline("%s zaps %s, which suddenly explodes!", Monnam(mon),
|
||||||
an(xname(obj)));
|
an(xname(obj)));
|
||||||
} else {
|
} else {
|
||||||
/* same near/far threshold as mzapmsg() */
|
/* same near/far threshold as mzapwand() */
|
||||||
int range = couldsee(mon->mx, mon->my) /* 9 or 5 */
|
int range = couldsee(mon->mx, mon->my) /* 9 or 5 */
|
||||||
? (BOLT_LIM + 1) : (BOLT_LIM - 3);
|
? (BOLT_LIM + 1) : (BOLT_LIM - 3);
|
||||||
|
|
||||||
@@ -144,8 +145,10 @@ struct obj *obj;
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* when a monster zaps a wand give a message, deduct a charge, and if it
|
||||||
|
isn't directly seen, remove hero's memory of the number of charges */
|
||||||
STATIC_OVL void
|
STATIC_OVL void
|
||||||
mzapmsg(mtmp, otmp, self)
|
mzapwand(mtmp, otmp, self)
|
||||||
struct monst *mtmp;
|
struct monst *mtmp;
|
||||||
struct obj *otmp;
|
struct obj *otmp;
|
||||||
boolean self;
|
boolean self;
|
||||||
@@ -156,6 +159,7 @@ boolean self;
|
|||||||
|
|
||||||
You_hear("a %s zap.", (distu(mtmp->mx, mtmp->my) <= range * range)
|
You_hear("a %s zap.", (distu(mtmp->mx, mtmp->my) <= range * range)
|
||||||
? "nearby" : "distant");
|
? "nearby" : "distant");
|
||||||
|
otmp->known = 0;
|
||||||
} else if (self) {
|
} else if (self) {
|
||||||
pline("%s zaps %sself with %s!", Monnam(mtmp), mhim(mtmp),
|
pline("%s zaps %sself with %s!", Monnam(mtmp), mhim(mtmp),
|
||||||
doname(otmp));
|
doname(otmp));
|
||||||
@@ -163,6 +167,33 @@ boolean self;
|
|||||||
pline("%s zaps %s!", Monnam(mtmp), an(xname(otmp)));
|
pline("%s zaps %s!", Monnam(mtmp), an(xname(otmp)));
|
||||||
stop_occupation();
|
stop_occupation();
|
||||||
}
|
}
|
||||||
|
otmp->spe -= 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* similar to mzapwand() but for magical horns (only instrument mons play) */
|
||||||
|
STATIC_OVL void
|
||||||
|
mplayhorn(mtmp, otmp, self)
|
||||||
|
struct monst *mtmp;
|
||||||
|
struct obj *otmp;
|
||||||
|
boolean self;
|
||||||
|
{
|
||||||
|
if (!canseemon(mtmp)) {
|
||||||
|
int range = couldsee(mtmp->mx, mtmp->my) /* 9 or 5 */
|
||||||
|
? (BOLT_LIM + 1) : (BOLT_LIM - 3);
|
||||||
|
|
||||||
|
You_hear("a horn being played %s.",
|
||||||
|
(distu(mtmp->mx, mtmp->my) <= range * range)
|
||||||
|
? "nearby" : "in the distance");
|
||||||
|
otmp->known = 0; /* hero doesn't know how many charges are left */
|
||||||
|
} else {
|
||||||
|
otmp->dknown = 1;
|
||||||
|
pline("%s plays a %s directed at %s!", Monnam(mtmp), xname(otmp),
|
||||||
|
self ? mon_nam_too(mtmp, mtmp) : (char *) "you");
|
||||||
|
makeknown(otmp->otyp); /* (wands handle this slightly differently) */
|
||||||
|
if (!self)
|
||||||
|
stop_occupation();
|
||||||
|
}
|
||||||
|
otmp->spe -= 1; /* use a charge */
|
||||||
}
|
}
|
||||||
|
|
||||||
STATIC_OVL void
|
STATIC_OVL void
|
||||||
@@ -626,8 +657,7 @@ struct monst *mtmp;
|
|||||||
if ((mtmp->isshk && inhishop(mtmp)) || mtmp->isgd || mtmp->ispriest)
|
if ((mtmp->isshk && inhishop(mtmp)) || mtmp->isgd || mtmp->ispriest)
|
||||||
return 2;
|
return 2;
|
||||||
m_flee(mtmp);
|
m_flee(mtmp);
|
||||||
mzapmsg(mtmp, otmp, TRUE);
|
mzapwand(mtmp, otmp, TRUE);
|
||||||
otmp->spe--;
|
|
||||||
how = WAN_TELEPORTATION;
|
how = WAN_TELEPORTATION;
|
||||||
mon_tele:
|
mon_tele:
|
||||||
if (tele_restrict(mtmp)) { /* mysterious force... */
|
if (tele_restrict(mtmp)) { /* mysterious force... */
|
||||||
@@ -649,8 +679,7 @@ struct monst *mtmp;
|
|||||||
return 2;
|
return 2;
|
||||||
case MUSE_WAN_TELEPORTATION:
|
case MUSE_WAN_TELEPORTATION:
|
||||||
g.zap_oseen = oseen;
|
g.zap_oseen = oseen;
|
||||||
mzapmsg(mtmp, otmp, FALSE);
|
mzapwand(mtmp, otmp, FALSE);
|
||||||
otmp->spe--;
|
|
||||||
g.m_using = TRUE;
|
g.m_using = TRUE;
|
||||||
mbhit(mtmp, rn1(8, 6), mbhitm, bhito, otmp);
|
mbhit(mtmp, rn1(8, 6), mbhitm, bhito, otmp);
|
||||||
/* monster learns that teleportation isn't useful here */
|
/* monster learns that teleportation isn't useful here */
|
||||||
@@ -696,8 +725,7 @@ struct monst *mtmp;
|
|||||||
struct trap *ttmp;
|
struct trap *ttmp;
|
||||||
|
|
||||||
m_flee(mtmp);
|
m_flee(mtmp);
|
||||||
mzapmsg(mtmp, otmp, FALSE);
|
mzapwand(mtmp, otmp, FALSE);
|
||||||
otmp->spe--;
|
|
||||||
if (oseen)
|
if (oseen)
|
||||||
makeknown(WAN_DIGGING);
|
makeknown(WAN_DIGGING);
|
||||||
if (IS_FURNITURE(levl[mtmp->mx][mtmp->my].typ)
|
if (IS_FURNITURE(levl[mtmp->mx][mtmp->my].typ)
|
||||||
@@ -742,8 +770,7 @@ struct monst *mtmp;
|
|||||||
|
|
||||||
if (!enexto(&cc, mtmp->mx, mtmp->my, pm))
|
if (!enexto(&cc, mtmp->mx, mtmp->my, pm))
|
||||||
return 0;
|
return 0;
|
||||||
mzapmsg(mtmp, otmp, FALSE);
|
mzapwand(mtmp, otmp, FALSE);
|
||||||
otmp->spe--;
|
|
||||||
mon = makemon((struct permonst *) 0, cc.x, cc.y, NO_MM_FLAGS);
|
mon = makemon((struct permonst *) 0, cc.x, cc.y, NO_MM_FLAGS);
|
||||||
if (mon && canspotmon(mon) && oseen)
|
if (mon && canspotmon(mon) && oseen)
|
||||||
makeknown(WAN_CREATE_MONSTER);
|
makeknown(WAN_CREATE_MONSTER);
|
||||||
@@ -1376,8 +1403,7 @@ struct monst *mtmp;
|
|||||||
case MUSE_WAN_COLD:
|
case MUSE_WAN_COLD:
|
||||||
case MUSE_WAN_LIGHTNING:
|
case MUSE_WAN_LIGHTNING:
|
||||||
case MUSE_WAN_MAGIC_MISSILE:
|
case MUSE_WAN_MAGIC_MISSILE:
|
||||||
mzapmsg(mtmp, otmp, FALSE);
|
mzapwand(mtmp, otmp, FALSE);
|
||||||
otmp->spe--;
|
|
||||||
if (oseen)
|
if (oseen)
|
||||||
makeknown(otmp->otyp);
|
makeknown(otmp->otyp);
|
||||||
g.m_using = TRUE;
|
g.m_using = TRUE;
|
||||||
@@ -1388,12 +1414,7 @@ struct monst *mtmp;
|
|||||||
return (DEADMONSTER(mtmp)) ? 1 : 2;
|
return (DEADMONSTER(mtmp)) ? 1 : 2;
|
||||||
case MUSE_FIRE_HORN:
|
case MUSE_FIRE_HORN:
|
||||||
case MUSE_FROST_HORN:
|
case MUSE_FROST_HORN:
|
||||||
if (oseen) {
|
mplayhorn(mtmp, otmp, FALSE);
|
||||||
makeknown(otmp->otyp);
|
|
||||||
pline("%s plays a %s!", Monnam(mtmp), xname(otmp));
|
|
||||||
} else
|
|
||||||
You_hear("a horn being played.");
|
|
||||||
otmp->spe--;
|
|
||||||
g.m_using = TRUE;
|
g.m_using = TRUE;
|
||||||
buzz(-30 - ((otmp->otyp == FROST_HORN) ? AD_COLD - 1 : AD_FIRE - 1),
|
buzz(-30 - ((otmp->otyp == FROST_HORN) ? AD_COLD - 1 : AD_FIRE - 1),
|
||||||
rn1(6, 6), mtmp->mx, mtmp->my, sgn(mtmp->mux - mtmp->mx),
|
rn1(6, 6), mtmp->mx, mtmp->my, sgn(mtmp->mux - mtmp->mx),
|
||||||
@@ -1403,8 +1424,7 @@ struct monst *mtmp;
|
|||||||
case MUSE_WAN_TELEPORTATION:
|
case MUSE_WAN_TELEPORTATION:
|
||||||
case MUSE_WAN_STRIKING:
|
case MUSE_WAN_STRIKING:
|
||||||
g.zap_oseen = oseen;
|
g.zap_oseen = oseen;
|
||||||
mzapmsg(mtmp, otmp, FALSE);
|
mzapwand(mtmp, otmp, FALSE);
|
||||||
otmp->spe--;
|
|
||||||
g.m_using = TRUE;
|
g.m_using = TRUE;
|
||||||
mbhit(mtmp, rn1(8, 6), mbhitm, bhito, otmp);
|
mbhit(mtmp, rn1(8, 6), mbhitm, bhito, otmp);
|
||||||
g.m_using = FALSE;
|
g.m_using = FALSE;
|
||||||
@@ -1795,8 +1815,7 @@ struct monst *mtmp;
|
|||||||
case MUSE_WAN_MAKE_INVISIBLE:
|
case MUSE_WAN_MAKE_INVISIBLE:
|
||||||
case MUSE_POT_INVISIBILITY:
|
case MUSE_POT_INVISIBILITY:
|
||||||
if (otmp->otyp == WAN_MAKE_INVISIBLE) {
|
if (otmp->otyp == WAN_MAKE_INVISIBLE) {
|
||||||
mzapmsg(mtmp, otmp, TRUE);
|
mzapwand(mtmp, otmp, TRUE);
|
||||||
otmp->spe--;
|
|
||||||
} else
|
} else
|
||||||
mquaffmsg(mtmp, otmp);
|
mquaffmsg(mtmp, otmp);
|
||||||
/* format monster's name before altering its visibility */
|
/* format monster's name before altering its visibility */
|
||||||
@@ -1822,8 +1841,7 @@ struct monst *mtmp;
|
|||||||
}
|
}
|
||||||
return 2;
|
return 2;
|
||||||
case MUSE_WAN_SPEED_MONSTER:
|
case MUSE_WAN_SPEED_MONSTER:
|
||||||
mzapmsg(mtmp, otmp, TRUE);
|
mzapwand(mtmp, otmp, TRUE);
|
||||||
otmp->spe--;
|
|
||||||
mon_adjust_speed(mtmp, 1, otmp);
|
mon_adjust_speed(mtmp, 1, otmp);
|
||||||
return 2;
|
return 2;
|
||||||
case MUSE_POT_SPEED:
|
case MUSE_POT_SPEED:
|
||||||
@@ -1836,8 +1854,7 @@ struct monst *mtmp;
|
|||||||
m_useup(mtmp, otmp);
|
m_useup(mtmp, otmp);
|
||||||
return 2;
|
return 2;
|
||||||
case MUSE_WAN_POLYMORPH:
|
case MUSE_WAN_POLYMORPH:
|
||||||
mzapmsg(mtmp, otmp, TRUE);
|
mzapwand(mtmp, otmp, TRUE);
|
||||||
otmp->spe--;
|
|
||||||
(void) newcham(mtmp, muse_newcham_mon(mtmp), TRUE, FALSE);
|
(void) newcham(mtmp, muse_newcham_mon(mtmp), TRUE, FALSE);
|
||||||
if (oseen)
|
if (oseen)
|
||||||
makeknown(WAN_POLYMORPH);
|
makeknown(WAN_POLYMORPH);
|
||||||
@@ -2470,8 +2487,7 @@ boolean by_you; /* true: if mon kills itself, hero gets credit/blame */
|
|||||||
dmg = 0; /* damage has been applied by explode() */
|
dmg = 0; /* damage has been applied by explode() */
|
||||||
}
|
}
|
||||||
} else { /* wand/horn of fire w/ positive charge count */
|
} else { /* wand/horn of fire w/ positive charge count */
|
||||||
mzapmsg(mon, obj, TRUE);
|
mplayhorn(mon, obj, TRUE);
|
||||||
obj->spe--;
|
|
||||||
/* -1 => monster's wand of fire; 2 => # of damage dice */
|
/* -1 => monster's wand of fire; 2 => # of damage dice */
|
||||||
dmg = zhitm(mon, by_you ? 1 : -1, 2, &odummyp);
|
dmg = zhitm(mon, by_you ? 1 : -1, 2, &odummyp);
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-3
@@ -2594,13 +2594,13 @@ struct _create_particular_data *d;
|
|||||||
or vision issues (line-of-sight, invisibility, blindness) */
|
or vision issues (line-of-sight, invisibility, blindness) */
|
||||||
if (d->hidden && !canspotmon(mtmp)) {
|
if (d->hidden && !canspotmon(mtmp)) {
|
||||||
int count = couldsee(mx, my) ? 8 : 4;
|
int count = couldsee(mx, my) ? 8 : 4;
|
||||||
char saveviz = viz_array[my][mx];
|
char saveviz = g.viz_array[my][mx];
|
||||||
|
|
||||||
if (!flags.sparkle)
|
if (!flags.sparkle)
|
||||||
count /= 2;
|
count /= 2;
|
||||||
viz_array[my][mx] |= (IN_SIGHT | COULD_SEE);
|
g.viz_array[my][mx] |= (IN_SIGHT | COULD_SEE);
|
||||||
flash_glyph_at(mx, my, mon_to_glyph(mtmp, newsym_rn2), count);
|
flash_glyph_at(mx, my, mon_to_glyph(mtmp, newsym_rn2), count);
|
||||||
viz_array[my][mx] = saveviz;
|
g.viz_array[my][mx] = saveviz;
|
||||||
newsym(mx, my);
|
newsym(mx, my);
|
||||||
}
|
}
|
||||||
madeany = TRUE;
|
madeany = TRUE;
|
||||||
|
|||||||
Reference in New Issue
Block a user