<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:
37
src/mhitu.c
37
src/mhitu.c
@@ -477,15 +477,36 @@ mattacku(mtmp)
|
||||
mdat = mtmp->data;
|
||||
|
||||
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));
|
||||
} else
|
||||
You_feel("hemmed in.");
|
||||
/* Technically wrong; we really should check if you can see the
|
||||
* help, but close enough...
|
||||
*/
|
||||
if (!were_summon(mdat,FALSE) && youseeit)
|
||||
pline("But none comes.");
|
||||
if (numhelp > 0) {
|
||||
if (numseen == 0)
|
||||
You_feel("hemmed in.");
|
||||
} else pline("But none comes.");
|
||||
} else {
|
||||
char *from_nowhere;
|
||||
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 */
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user