<Someone>'s were_summon rules
>Hemmed in by one invisible wererat? ><Someone>: Should I feel hemmed in if I can see that a wererat summons >zero rats? Can the invisible wererat hem me in all by itself? And >even if it had summoned anything, wouldn't a different message had >been clearer (for isntance, "Rats appear around you!"); after all, >I could see *what* was hemming me in. >I agree that the current messages (and even the ones aspired to by the >comment) are non-ideal. <Someone>'s suggested set-up: Seen summoner, seen help : "The wererat summons help!" Seen summoner, unseen help: "The wererat summons help! You feel hemmed in." Seen summoner, no help: "The wererat summons help! But none comes." Unseen summoner, seen help: "(A rat appears|Rats appear) from nowhere!" Unseen summoner, unseen help: "You feel hemmed in." Unseen summoner, no help: No message.
This commit is contained in:
@@ -73,6 +73,7 @@ reading a cursed scroll of light in a corridor wouldn't display correctly
|
|||||||
barbarians can become export in short sword skill
|
barbarians can become export in short sword skill
|
||||||
samurai are now limited to master in martial arts skill; barbarians and
|
samurai are now limited to master in martial arts skill; barbarians and
|
||||||
cavemen are now limited to master in bare-handed combat skill
|
cavemen are now limited to master in bare-handed combat skill
|
||||||
|
tweak messages when werefoo summons help
|
||||||
|
|
||||||
|
|
||||||
Platform- and/or Interface-Specific Fixes
|
Platform- and/or Interface-Specific Fixes
|
||||||
|
|||||||
37
src/mhitu.c
37
src/mhitu.c
@@ -477,15 +477,36 @@ mattacku(mtmp)
|
|||||||
mdat = mtmp->data;
|
mdat = mtmp->data;
|
||||||
|
|
||||||
if(!rn2(10) && !mtmp->mcan) {
|
if(!rn2(10) && !mtmp->mcan) {
|
||||||
if(youseeit) {
|
int numseen, numhelp;
|
||||||
|
char buf[BUFSZ];
|
||||||
|
|
||||||
|
numhelp = were_summon(mdat, FALSE, &numseen);
|
||||||
|
if (youseeit) {
|
||||||
pline("%s summons help!", Monnam(mtmp));
|
pline("%s summons help!", Monnam(mtmp));
|
||||||
} else
|
if (numhelp > 0) {
|
||||||
You_feel("hemmed in.");
|
if (numseen == 0)
|
||||||
/* Technically wrong; we really should check if you can see the
|
You_feel("hemmed in.");
|
||||||
* help, but close enough...
|
} else pline("But none comes.");
|
||||||
*/
|
} else {
|
||||||
if (!were_summon(mdat,FALSE) && youseeit)
|
char *from_nowhere;
|
||||||
pline("But none comes.");
|
if (!Deaf) {
|
||||||
|
pline("%s %s!", Something,
|
||||||
|
makeplural(growl_sound(mtmp)));
|
||||||
|
from_nowhere = "";
|
||||||
|
} else from_nowhere = " from nowhere";
|
||||||
|
if (numhelp > 0) {
|
||||||
|
if (numseen < 1) You_feel("hemmed in.");
|
||||||
|
else {
|
||||||
|
if (numseen == 1)
|
||||||
|
Sprintf(buf, "%s appears",
|
||||||
|
an(mdat->mname));
|
||||||
|
else
|
||||||
|
Sprintf(buf, "%s appear",
|
||||||
|
s_suffix(mdat->mname));
|
||||||
|
pline("%s%s!", upstart(buf), from_nowhere);
|
||||||
|
}
|
||||||
|
} /* else no help came; but you didn't know it tried */
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -913,6 +913,7 @@ dospinweb()
|
|||||||
int
|
int
|
||||||
dosummon()
|
dosummon()
|
||||||
{
|
{
|
||||||
|
int placeholder;
|
||||||
if (u.uen < 10) {
|
if (u.uen < 10) {
|
||||||
You("lack the energy to send forth a call for help!");
|
You("lack the energy to send forth a call for help!");
|
||||||
return(0);
|
return(0);
|
||||||
@@ -922,7 +923,7 @@ dosummon()
|
|||||||
|
|
||||||
You("call upon your brethren for help!");
|
You("call upon your brethren for help!");
|
||||||
exercise(A_WIS, TRUE);
|
exercise(A_WIS, TRUE);
|
||||||
if (!were_summon(youmonst.data,TRUE))
|
if (!were_summon(youmonst.data, TRUE, &placeholder))
|
||||||
pline("But none arrive.");
|
pline("But none arrive.");
|
||||||
return(1);
|
return(1);
|
||||||
}
|
}
|
||||||
|
|||||||
17
src/were.c
17
src/were.c
@@ -81,17 +81,19 @@ register struct monst *mon;
|
|||||||
possibly_unwield(mon, FALSE);
|
possibly_unwield(mon, FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean
|
int
|
||||||
were_summon(ptr,yours) /* were-creature (even you) summons a horde */
|
were_summon(ptr,yours,visible) /* were-creature (even you) summons a horde */
|
||||||
register struct permonst *ptr;
|
register struct permonst *ptr;
|
||||||
register boolean yours;
|
register boolean yours;
|
||||||
|
int *visible; /* number of visible helpers created */
|
||||||
{
|
{
|
||||||
register int i, typ, pm = monsndx(ptr);
|
register int i, typ, pm = monsndx(ptr);
|
||||||
register struct monst *mtmp;
|
register struct monst *mtmp;
|
||||||
boolean success = FALSE;
|
int total = 0;
|
||||||
|
|
||||||
|
*visible = 0;
|
||||||
if(Protection_from_shape_changers && !yours)
|
if(Protection_from_shape_changers && !yours)
|
||||||
return FALSE;
|
return 0;
|
||||||
for(i = rnd(5); i > 0; i--) {
|
for(i = rnd(5); i > 0; i--) {
|
||||||
switch(pm) {
|
switch(pm) {
|
||||||
|
|
||||||
@@ -111,11 +113,14 @@ register boolean yours;
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
mtmp = makemon(&mons[typ], u.ux, u.uy, NO_MM_FLAGS);
|
mtmp = makemon(&mons[typ], u.ux, u.uy, NO_MM_FLAGS);
|
||||||
if (mtmp) success = TRUE;
|
if (mtmp) {
|
||||||
|
total++;
|
||||||
|
if (canseemon(mtmp)) *visible += 1;
|
||||||
|
}
|
||||||
if (yours && mtmp)
|
if (yours && mtmp)
|
||||||
(void) tamedog(mtmp, (struct obj *) 0);
|
(void) tamedog(mtmp, (struct obj *) 0);
|
||||||
}
|
}
|
||||||
return success;
|
return total;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|||||||
Reference in New Issue
Block a user