Accessibility: more message locations
Add a new pline_mon() which sets the message location to the monster location. Add locations to several trap messages.
This commit is contained in:
@@ -63,8 +63,7 @@ cursetxt(struct monst *mtmp, boolean undirected)
|
||||
else
|
||||
point_msg = "at you, then curses";
|
||||
|
||||
pline_xy(mtmp->mx, mtmp->my,
|
||||
"%s points %s.", Monnam(mtmp), point_msg);
|
||||
pline_mon(mtmp, "%s points %s.", Monnam(mtmp), point_msg);
|
||||
} else if ((!(gm.moves % 4) || !rn2(4))) {
|
||||
if (!Deaf)
|
||||
Norep("You hear a mumbled curse."); /* Deaf-aware */
|
||||
@@ -245,7 +244,7 @@ castmu(
|
||||
*/
|
||||
if (!foundyou && thinks_it_foundyou
|
||||
&& !is_undirected_spell(mattk->adtyp, spellnum)) {
|
||||
pline_xy(mtmp->mx, mtmp->my, "%s casts a spell at %s!",
|
||||
pline_mon(mtmp, "%s casts a spell at %s!",
|
||||
canseemon(mtmp) ? Monnam(mtmp) : "Something",
|
||||
is_waterwall(mtmp->mux, mtmp->muy) ? "empty water"
|
||||
: "thin air");
|
||||
@@ -262,7 +261,7 @@ castmu(
|
||||
return M_ATTK_MISS;
|
||||
}
|
||||
if (canspotmon(mtmp) || !is_undirected_spell(mattk->adtyp, spellnum)) {
|
||||
pline_xy(mtmp->mx, mtmp->my, "%s casts a spell%s!",
|
||||
pline_mon(mtmp, "%s casts a spell%s!",
|
||||
canspotmon(mtmp) ? Monnam(mtmp) : "Something",
|
||||
is_undirected_spell(mattk->adtyp, spellnum) ? ""
|
||||
: (Invis && !perceives(mtmp->data)
|
||||
|
||||
10
src/mhitu.c
10
src/mhitu.c
@@ -35,7 +35,7 @@ hitmsg(struct monst *mtmp, struct attack *mattk)
|
||||
if same gender, "engagingly" for nymph, normal msg for others. */
|
||||
if ((compat = could_seduce(mtmp, &gy.youmonst, mattk)) != 0
|
||||
&& !mtmp->mcan && !mtmp->mspec_used) {
|
||||
pline_xy(mtmp->mx, mtmp->my, "%s %s you %s.", Monst_name,
|
||||
pline_mon(mtmp, "%s %s you %s.", Monst_name,
|
||||
!Blind ? "smiles at" : !Deaf ? "talks to" : "touches",
|
||||
(compat == 2) ? "engagingly" : "seductively");
|
||||
} else {
|
||||
@@ -73,7 +73,7 @@ hitmsg(struct monst *mtmp, struct attack *mattk)
|
||||
&& gh.hitmsg_prev != NULL
|
||||
&& mattk == gh.hitmsg_prev + 1
|
||||
&& mattk->aatyp == gh.hitmsg_prev->aatyp) ? " again" : "";
|
||||
pline_xy(mtmp->mx, mtmp->my, "%s %s%s%s", Monst_name, verb, again, punct);
|
||||
pline_mon(mtmp, "%s %s%s%s", Monst_name, verb, again, punct);
|
||||
}
|
||||
gh.hitmsg_mid = mtmp->m_id;
|
||||
gh.hitmsg_prev = mattk;
|
||||
@@ -90,9 +90,9 @@ missmu(struct monst *mtmp, boolean nearmiss, struct attack *mattk)
|
||||
map_invisible(mtmp->mx, mtmp->my);
|
||||
|
||||
if (could_seduce(mtmp, &gy.youmonst, mattk) && !mtmp->mcan)
|
||||
pline_xy(mtmp->mx, mtmp->my, "%s pretends to be friendly.", Monnam(mtmp));
|
||||
pline_mon(mtmp, "%s pretends to be friendly.", Monnam(mtmp));
|
||||
else
|
||||
pline_xy(mtmp->mx, mtmp->my, "%s %smisses!", Monnam(mtmp),
|
||||
pline_mon(mtmp, "%s %smisses!", Monnam(mtmp),
|
||||
(nearmiss && flags.verbose) ? "just " : "");
|
||||
|
||||
stop_occupation();
|
||||
@@ -132,7 +132,7 @@ mswings(
|
||||
boolean bash) /* True: polearm used at too close range */
|
||||
{
|
||||
if (flags.verbose && !Blind && mon_visible(mtmp)) {
|
||||
pline_xy(mtmp->mx, mtmp->my, "%s %s %s%s %s.", Monnam(mtmp), mswings_verb(otemp, bash),
|
||||
pline_mon(mtmp, "%s %s %s%s %s.", Monnam(mtmp), mswings_verb(otemp, bash),
|
||||
(otemp->quan > 1L) ? "one of " : "", mhis(mtmp), xname(otemp));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1786,8 +1786,7 @@ mpickgold(struct monst *mtmp)
|
||||
add_to_minv(mtmp, gold);
|
||||
if (cansee(mtmp->mx, mtmp->my)) {
|
||||
if (flags.verbose && !mtmp->isgd)
|
||||
pline_xy(mtmp->mx, mtmp->my,
|
||||
"%s picks up some %s.", Monnam(mtmp),
|
||||
pline_mon(mtmp, "%s picks up some %s.", Monnam(mtmp),
|
||||
mat_idx == GOLD ? "gold" : "money");
|
||||
newsym(mtmp->mx, mtmp->my);
|
||||
}
|
||||
@@ -1847,8 +1846,8 @@ mpickstuff(struct monst *mtmp)
|
||||
char *otmpname = distant_name(otmp, doname);
|
||||
|
||||
if (flags.verbose)
|
||||
pline_xy(mtmp->mx, mtmp->my,
|
||||
"%s picks up %s.", Monnam(mtmp), otmpname);
|
||||
pline_mon(mtmp, "%s picks up %s.",
|
||||
Monnam(mtmp), otmpname);
|
||||
}
|
||||
obj_extract_self(otmp3); /* remove from floor */
|
||||
(void) mpickobj(mtmp, otmp3); /* may merge and free otmp3 */
|
||||
|
||||
@@ -1927,8 +1927,8 @@ use_offensive(struct monst *mtmp)
|
||||
*/
|
||||
if (cansee(mtmp->mx, mtmp->my)) {
|
||||
otmp->dknown = 1;
|
||||
pline_xy(mtmp->mx, mtmp->my,
|
||||
"%s hurls %s!", Monnam(mtmp), singular(otmp, doname));
|
||||
pline_mon(mtmp, "%s hurls %s!",
|
||||
Monnam(mtmp), singular(otmp, doname));
|
||||
}
|
||||
m_throw(mtmp, mtmp->mx, mtmp->my, sgn(mtmp->mux - mtmp->mx),
|
||||
sgn(mtmp->muy - mtmp->my),
|
||||
|
||||
12
src/pline.c
12
src/pline.c
@@ -116,6 +116,18 @@ pline_xy(coordxy x, coordxy y, const char *line, ...)
|
||||
va_end(the_args);
|
||||
}
|
||||
|
||||
void
|
||||
pline_mon(struct monst *mtmp, const char *line, ...)
|
||||
{
|
||||
va_list the_args;
|
||||
|
||||
set_msg_xy(mtmp->mx, mtmp->my);
|
||||
|
||||
va_start(the_args, line);
|
||||
vpline(line, the_args);
|
||||
va_end(the_args);
|
||||
}
|
||||
|
||||
/* set the direction where next message happens */
|
||||
void
|
||||
set_msg_dir(int dir)
|
||||
|
||||
@@ -846,7 +846,7 @@ mdrop_obj(
|
||||
}
|
||||
/* obj_no_longer_held(obj); -- done by place_object */
|
||||
if (verbosely && cansee(omx, omy))
|
||||
pline_xy(mon->mx, mon->my, "%s drops %s.", Monnam(mon), obj_name);
|
||||
pline_mon(mon, "%s drops %s.", Monnam(mon), obj_name);
|
||||
if (!flooreffects(obj, omx, omy, "fall")) {
|
||||
place_object(obj, omx, omy);
|
||||
stackobj(obj);
|
||||
|
||||
@@ -1916,8 +1916,8 @@ mlevel_tele_trap(
|
||||
assign_level(&tolevel, &valley_level);
|
||||
} else if (Is_botlevel(&u.uz)) {
|
||||
if (in_sight && trap->tseen)
|
||||
pline_xy(mtmp->mx, mtmp->my,
|
||||
"%s avoids the %s.", Monnam(mtmp),
|
||||
pline_mon(mtmp, "%s avoids the %s.",
|
||||
Monnam(mtmp),
|
||||
(tt == HOLE) ? "hole" : "trap");
|
||||
return Trap_Effect_Finished;
|
||||
} else {
|
||||
@@ -1929,9 +1929,9 @@ mlevel_tele_trap(
|
||||
|| is_home_elemental(mtmp->data)
|
||||
|| rn2(7))) {
|
||||
if (in_sight && mtmp->data->mlet != S_ELEMENTAL) {
|
||||
pline_xy(mtmp->mx, mtmp->my,
|
||||
"%s seems to shimmer for a moment.",
|
||||
Monnam(mtmp));
|
||||
pline_mon(mtmp,
|
||||
"%s seems to shimmer for a moment.",
|
||||
Monnam(mtmp));
|
||||
seetrap(trap);
|
||||
}
|
||||
return Trap_Effect_Finished;
|
||||
@@ -1949,7 +1949,7 @@ mlevel_tele_trap(
|
||||
currently inside his or her own special room */
|
||||
|| (tt == NO_TRAP && onscary(0, 0, mtmp))) {
|
||||
if (in_sight)
|
||||
pline_xy(mtmp->mx, mtmp->my,
|
||||
pline_mon(mtmp,
|
||||
"%s seems very disoriented for a moment.",
|
||||
Monnam(mtmp));
|
||||
return Trap_Effect_Finished;
|
||||
@@ -1964,8 +1964,8 @@ mlevel_tele_trap(
|
||||
nlev = random_teleport_level();
|
||||
if (nlev == depth(&u.uz)) {
|
||||
if (in_sight)
|
||||
pline_xy(mtmp->mx, mtmp->my,
|
||||
"%s shudders for a moment.", Monnam(mtmp));
|
||||
pline_mon(mtmp, "%s shudders for a moment.",
|
||||
Monnam(mtmp));
|
||||
return Trap_Effect_Finished;
|
||||
}
|
||||
get_level(&tolevel, nlev);
|
||||
@@ -1976,8 +1976,7 @@ mlevel_tele_trap(
|
||||
}
|
||||
|
||||
if (in_sight) {
|
||||
pline_xy(mtmp->mx, mtmp->my,
|
||||
"Suddenly, %s %s.", mon_nam(mtmp),
|
||||
pline_mon(mtmp, "Suddenly, %s %s.", mon_nam(mtmp),
|
||||
(tt == HOLE) ? "falls into a hole"
|
||||
: (tt == TRAPDOOR) ? "falls through a trap door"
|
||||
: "disappears out of sight");
|
||||
|
||||
115
src/trap.c
115
src/trap.c
@@ -805,6 +805,7 @@ animate_statue(
|
||||
pline("Instead of shattering, %s suddenly %s!", statuename,
|
||||
comes_to_life);
|
||||
} else { /* cause == ANIMATE_NORMAL */
|
||||
set_msg_xy(x, y);
|
||||
You("find %s posing as a statue.",
|
||||
canspotmon(mon) ? a_monnam(mon) : something);
|
||||
if (!canspotmon(mon) && Blind)
|
||||
@@ -950,7 +951,8 @@ mu_maybe_destroy_web(
|
||||
(flaming(mptr)) ? "burn" : "dissolve",
|
||||
a_your[trap->madeby_u]);
|
||||
else
|
||||
pline("%s %s %s spider web!", Monnam(mtmp),
|
||||
pline_mon(mtmp,
|
||||
"%s %s %s spider web!", Monnam(mtmp),
|
||||
(flaming(mptr)) ? "burns" : "dissolves",
|
||||
a_your[trap->madeby_u]);
|
||||
}
|
||||
@@ -962,7 +964,8 @@ mu_maybe_destroy_web(
|
||||
if (isyou) {
|
||||
You("flow through %s spider web.", a_your[trap->madeby_u]);
|
||||
} else {
|
||||
pline("%s flows through %s spider web.", Monnam(mtmp),
|
||||
pline_mon(mtmp,
|
||||
"%s flows through %s spider web.", Monnam(mtmp),
|
||||
a_your[trap->madeby_u]);
|
||||
seetrap(trap);
|
||||
}
|
||||
@@ -1173,7 +1176,8 @@ trapeffect_arrow_trap(
|
||||
|
||||
if (trap->once && trap->tseen && !rn2(15)) {
|
||||
if (in_sight && see_it)
|
||||
pline("%s triggers a trap but nothing happens.",
|
||||
pline_mon(mtmp,
|
||||
"%s triggers a trap but nothing happens.",
|
||||
Monnam(mtmp));
|
||||
deltrap(trap);
|
||||
newsym(mtmp->mx, mtmp->my);
|
||||
@@ -1242,7 +1246,8 @@ trapeffect_dart_trap(
|
||||
|
||||
if (trap->once && trap->tseen && !rn2(15)) {
|
||||
if (in_sight && see_it)
|
||||
pline("%s triggers a trap but nothing happens.",
|
||||
pline_mon(mtmp,
|
||||
"%s triggers a trap but nothing happens.",
|
||||
Monnam(mtmp));
|
||||
deltrap(trap);
|
||||
newsym(mtmp->mx, mtmp->my);
|
||||
@@ -1322,7 +1327,8 @@ trapeffect_rocktrap(
|
||||
|
||||
if (trap->once && trap->tseen && !rn2(15)) {
|
||||
if (in_sight && see_it)
|
||||
pline("A trap door above %s opens, but nothing falls out!",
|
||||
pline_mon(mtmp,
|
||||
"A trap door above %s opens, but nothing falls out!",
|
||||
mon_nam(mtmp));
|
||||
deltrap(trap);
|
||||
newsym(mtmp->mx, mtmp->my);
|
||||
@@ -1388,11 +1394,13 @@ trapeffect_sqky_board(
|
||||
if (IndexOk(trap->tnote, tsnds)) {
|
||||
Soundeffect(tsnds[trap->tnote], 50);
|
||||
}
|
||||
pline("A board beneath %s squeaks %s loudly.",
|
||||
pline_mon(mtmp,
|
||||
"A board beneath %s squeaks %s loudly.",
|
||||
mon_nam(mtmp), trapnote(trap, FALSE));
|
||||
seetrap(trap);
|
||||
} else if (!mindless(mtmp->data)) {
|
||||
pline("%s stops momentarily and appears to cringe.",
|
||||
pline_mon(mtmp,
|
||||
"%s stops momentarily and appears to cringe.",
|
||||
Monnam(mtmp));
|
||||
}
|
||||
} else {
|
||||
@@ -1467,7 +1475,8 @@ trapeffect_bear_trap(
|
||||
&& !is_whirly(mptr) && !unsolid(mptr)) {
|
||||
mtmp->mtrapped = 1;
|
||||
if (in_sight) {
|
||||
pline("%s is caught in %s bear trap!", Monnam(mtmp),
|
||||
pline_mon(mtmp,
|
||||
"%s is caught in %s bear trap!", Monnam(mtmp),
|
||||
a_your[trap->madeby_u]);
|
||||
seetrap(trap);
|
||||
} else {
|
||||
@@ -1479,7 +1488,8 @@ trapeffect_bear_trap(
|
||||
}
|
||||
} else if (forcetrap) {
|
||||
if (in_sight) {
|
||||
pline("%s evades %s bear trap!", Monnam(mtmp),
|
||||
pline_mon(mtmp,
|
||||
"%s evades %s bear trap!", Monnam(mtmp),
|
||||
a_your[trap->madeby_u]);
|
||||
seetrap(trap);
|
||||
}
|
||||
@@ -1516,7 +1526,8 @@ trapeffect_slp_gas_trap(
|
||||
if (!resists_sleep(mtmp) && !breathless(mtmp->data)
|
||||
&& !helpless(mtmp)) {
|
||||
if (sleep_monst(mtmp, rnd(25), -1) && in_sight) {
|
||||
pline("%s suddenly falls asleep!", Monnam(mtmp));
|
||||
pline_mon(mtmp,
|
||||
"%s suddenly falls asleep!", Monnam(mtmp));
|
||||
seetrap(trap);
|
||||
}
|
||||
}
|
||||
@@ -1594,14 +1605,16 @@ trapeffect_rust_trap(
|
||||
switch (rn2(5)) {
|
||||
case 0:
|
||||
if (in_sight)
|
||||
pline("%s %s on the %s!", A_gush_of_water_hits,
|
||||
pline_mon(mtmp,
|
||||
"%s %s on the %s!", A_gush_of_water_hits,
|
||||
mon_nam(mtmp), mbodypart(mtmp, HEAD));
|
||||
target = which_armor(mtmp, W_ARMH);
|
||||
(void) water_damage(target, helm_simple_name(target), TRUE);
|
||||
break;
|
||||
case 1:
|
||||
if (in_sight)
|
||||
pline("%s %s's left %s!", A_gush_of_water_hits,
|
||||
pline_mon(mtmp,
|
||||
"%s %s's left %s!", A_gush_of_water_hits,
|
||||
mon_nam(mtmp), mbodypart(mtmp, ARM));
|
||||
target = which_armor(mtmp, W_ARMS);
|
||||
if (water_damage(target, "shield", TRUE) != ER_NOTHING)
|
||||
@@ -1615,7 +1628,8 @@ trapeffect_rust_trap(
|
||||
break;
|
||||
case 2:
|
||||
if (in_sight)
|
||||
pline("%s %s's right %s!", A_gush_of_water_hits,
|
||||
pline_mon(mtmp,
|
||||
"%s %s's right %s!", A_gush_of_water_hits,
|
||||
mon_nam(mtmp), mbodypart(mtmp, ARM));
|
||||
(void) water_damage(MON_WEP(mtmp), 0, TRUE);
|
||||
goto mglovecheck;
|
||||
@@ -1639,7 +1653,7 @@ trapeffect_rust_trap(
|
||||
|
||||
if (completelyrusts(mptr)) {
|
||||
if (in_sight)
|
||||
pline("%s %s to pieces!", Monnam(mtmp),
|
||||
pline_mon(mtmp, "%s %s to pieces!", Monnam(mtmp),
|
||||
!mlifesaver(mtmp) ? "falls" : "starts to fall");
|
||||
monkilled(mtmp, (const char *) 0, AD_RUST);
|
||||
if (DEADMONSTER(mtmp))
|
||||
@@ -1672,12 +1686,14 @@ trapeffect_fire_trap(
|
||||
int orig_dmg = d(2, 4);
|
||||
|
||||
if (in_sight)
|
||||
pline("A %s erupts from the %s under %s!", tower_of_flame,
|
||||
pline_mon(mtmp,
|
||||
"A %s erupts from the %s under %s!", tower_of_flame,
|
||||
surface(mtmp->mx, mtmp->my), mon_nam(mtmp));
|
||||
else if (see_it) /* evidently `mtmp' is invisible */
|
||||
else if (see_it) { /* evidently `mtmp' is invisible */
|
||||
set_msg_xy(mtmp->mx, mtmp->my);
|
||||
You_see("a %s erupt from the %s!", tower_of_flame,
|
||||
surface(mtmp->mx, mtmp->my));
|
||||
|
||||
}
|
||||
if (resists_fire(mtmp)) {
|
||||
if (in_sight) {
|
||||
shieldeff(mtmp->mx, mtmp->my);
|
||||
@@ -1897,7 +1913,7 @@ trapeffect_pit(
|
||||
/* openfallingtrap; not inescapable here */
|
||||
if (in_sight) {
|
||||
seetrap(trap);
|
||||
pline_xy(mtmp->mx, mtmp->my,
|
||||
pline_mon(mtmp,
|
||||
"%s doesn't fall into the pit.", Monnam(mtmp));
|
||||
}
|
||||
return Trap_Effect_Finished;
|
||||
@@ -1909,7 +1925,7 @@ trapeffect_pit(
|
||||
if (!passes_walls(mptr))
|
||||
mtmp->mtrapped = 1;
|
||||
if (in_sight) {
|
||||
pline_xy(mtmp->mx, mtmp->my,
|
||||
pline_mon(mtmp,
|
||||
"%s %s into %s pit!", Monnam(mtmp), fallverb,
|
||||
a_your[trap->madeby_u]);
|
||||
if (mptr == &mons[PM_PIT_VIPER]
|
||||
@@ -1961,11 +1977,11 @@ trapeffect_hole(
|
||||
if (in_sight) {
|
||||
seetrap(trap);
|
||||
if (tt == TRAPDOOR)
|
||||
pline_xy(mtmp->mx, mtmp->my,
|
||||
pline_mon(mtmp,
|
||||
"A trap door opens, but %s doesn't fall through.",
|
||||
mon_nam(mtmp));
|
||||
else /* (tt == HOLE) */
|
||||
pline_xy(mtmp->mx, mtmp->my,
|
||||
pline_mon(mtmp,
|
||||
"%s doesn't fall through the hole.",
|
||||
Monnam(mtmp));
|
||||
}
|
||||
@@ -1973,7 +1989,7 @@ trapeffect_hole(
|
||||
}
|
||||
if (inescapable) { /* sokoban hole */
|
||||
if (in_sight) {
|
||||
pline_xy(mtmp->mx, mtmp->my,
|
||||
pline_mon(mtmp,
|
||||
"%s seems to be yanked down!", Monnam(mtmp));
|
||||
/* suppress message in mlevel_tele_trap() */
|
||||
in_sight = FALSE;
|
||||
@@ -2151,7 +2167,8 @@ trapeffect_web(
|
||||
|| (mtmp->wormno && count_wsegs(mtmp) > 5)) {
|
||||
tear_web = TRUE;
|
||||
} else if (in_sight) {
|
||||
pline("%s is caught in %s spider web.", Monnam(mtmp),
|
||||
pline_mon(mtmp,
|
||||
"%s is caught in %s spider web.", Monnam(mtmp),
|
||||
a_your[trap->madeby_u]);
|
||||
seetrap(trap);
|
||||
}
|
||||
@@ -2176,13 +2193,15 @@ trapeffect_web(
|
||||
}
|
||||
if (tear_web) {
|
||||
if (in_sight)
|
||||
pline("%s tears through %s spider web!", Monnam(mtmp),
|
||||
pline_mon(mtmp,
|
||||
"%s tears through %s spider web!", Monnam(mtmp),
|
||||
a_your[trap->madeby_u]);
|
||||
deltrap(trap);
|
||||
newsym(mtmp->mx, mtmp->my);
|
||||
} else if (forcetrap && !mtmp->mtrapped) {
|
||||
if (in_sight) {
|
||||
pline("%s avoids %s spider web!", Monnam(mtmp),
|
||||
pline_mon(mtmp,
|
||||
"%s avoids %s spider web!", Monnam(mtmp),
|
||||
a_your[trap->madeby_u]);
|
||||
seetrap(trap);
|
||||
}
|
||||
@@ -2308,7 +2327,8 @@ trapeffect_anti_magic(
|
||||
mtmp->mspec_used += d(2, 6);
|
||||
if (in_sight) {
|
||||
seetrap(trap);
|
||||
pline("%s seems lethargic.", Monnam(mtmp));
|
||||
pline_mon(mtmp, "%s seems lethargic.",
|
||||
Monnam(mtmp));
|
||||
}
|
||||
}
|
||||
} else { /* take some damage */
|
||||
@@ -2476,7 +2496,8 @@ trapeffect_landmine(
|
||||
boolean already_seen = trap->tseen;
|
||||
|
||||
if (in_sight && !already_seen) {
|
||||
pline("A trigger appears in a pile of soil below %s.",
|
||||
pline_mon(mtmp,
|
||||
"A trigger appears in a pile of soil below %s.",
|
||||
mon_nam(mtmp));
|
||||
seetrap(trap);
|
||||
}
|
||||
@@ -2489,7 +2510,8 @@ trapeffect_landmine(
|
||||
}
|
||||
} else if (in_sight) {
|
||||
newsym(mtmp->mx, mtmp->my);
|
||||
pline("%s%s triggers %s land mine!",
|
||||
pline_mon(mtmp,
|
||||
"%s%s triggers %s land mine!",
|
||||
!Deaf ? "KAABLAMM!!! " : "", Monnam(mtmp),
|
||||
a_your[trap->madeby_u]);
|
||||
}
|
||||
@@ -2550,7 +2572,7 @@ trapeffect_rolling_boulder_trap(
|
||||
|
||||
newsym(mtmp->mx, mtmp->my);
|
||||
if (in_sight)
|
||||
pline("%s%s triggers %s.",
|
||||
pline_mon(mtmp, "%s%s triggers %s.",
|
||||
!Deaf ? "Click! " : "", Monnam(mtmp),
|
||||
trap->tseen ? "a rolling boulder trap" : something);
|
||||
if (launch_obj(BOULDER, trap->launch.x, trap->launch.y,
|
||||
@@ -3228,7 +3250,8 @@ launch_obj(
|
||||
if (otyp == BOULDER && throws_rocks(mtmp->data)) {
|
||||
if (rn2(3)) {
|
||||
if (cansee(x, y))
|
||||
pline("%s snatches the boulder.", Monnam(mtmp));
|
||||
pline_mon(mtmp, "%s snatches the boulder.",
|
||||
Monnam(mtmp));
|
||||
singleobj->otrapped = 0;
|
||||
(void) mpickobj(mtmp, singleobj);
|
||||
used_up = TRUE;
|
||||
@@ -3265,6 +3288,8 @@ launch_obj(
|
||||
switch (t->ttyp) {
|
||||
case LANDMINE:
|
||||
if (rn2(10) > 2) {
|
||||
if (cansee(x, y))
|
||||
set_msg_xy(x, y);
|
||||
pline("KAABLAMM!!!%s",
|
||||
cansee(x, y)
|
||||
? " The rolling boulder triggers a land mine."
|
||||
@@ -3294,7 +3319,7 @@ launch_obj(
|
||||
/*FALLTHRU*/
|
||||
case TELEP_TRAP:
|
||||
if (cansee(x, y))
|
||||
pline("Suddenly the rolling boulder disappears!");
|
||||
pline_xy(x, y, "Suddenly the rolling boulder disappears!");
|
||||
else if (!Deaf)
|
||||
You_hear("a rumbling stop abruptly.");
|
||||
singleobj->otrapped = 0;
|
||||
@@ -3356,8 +3381,10 @@ launch_obj(
|
||||
}
|
||||
}
|
||||
if (otyp == BOULDER && closed_door(x, y)) {
|
||||
if (cansee(x, y))
|
||||
if (cansee(x, y)) {
|
||||
set_msg_xy(x, y);
|
||||
pline_The("boulder crashes through a door.");
|
||||
}
|
||||
levl[x][y].doormask = D_BROKEN;
|
||||
if (dist)
|
||||
unblock_point(x, y);
|
||||
@@ -3577,11 +3604,13 @@ mintrap(struct monst *mtmp, unsigned mintrapflags)
|
||||
if (!rn2(2)) {
|
||||
mtmp->mtrapped = 0;
|
||||
if (canseemon(mtmp))
|
||||
pline("%s pulls free...", Monnam(mtmp));
|
||||
pline_mon(mtmp, "%s pulls free...",
|
||||
Monnam(mtmp));
|
||||
fill_pit(mtmp->mx, mtmp->my);
|
||||
}
|
||||
} else {
|
||||
if (canseemon(mtmp)) {
|
||||
set_msg_xy(mtmp->mx, mtmp->my);
|
||||
if (is_pit(trap->ttyp))
|
||||
pline("%s climbs %sout of the pit.", Monnam(mtmp),
|
||||
m_easy_escape_pit(mtmp) ? "easily " : "");
|
||||
@@ -3594,13 +3623,15 @@ mintrap(struct monst *mtmp, unsigned mintrapflags)
|
||||
} else if (metallivorous(mptr)) {
|
||||
if (trap->ttyp == BEAR_TRAP) {
|
||||
if (canseemon(mtmp))
|
||||
pline("%s eats a bear trap!", Monnam(mtmp));
|
||||
pline_mon(mtmp, "%s eats a bear trap!",
|
||||
Monnam(mtmp));
|
||||
deltrap(trap);
|
||||
mtmp->meating = 5;
|
||||
mtmp->mtrapped = 0;
|
||||
} else if (trap->ttyp == SPIKED_PIT) {
|
||||
if (canseemon(mtmp))
|
||||
pline("%s munches on some spikes!", Monnam(mtmp));
|
||||
pline_mon(mtmp, "%s munches on some spikes!",
|
||||
Monnam(mtmp));
|
||||
trap->ttyp = PIT;
|
||||
mtmp->meating = 5;
|
||||
}
|
||||
@@ -3646,7 +3677,7 @@ mintrap(struct monst *mtmp, unsigned mintrapflags)
|
||||
|
||||
maybe_unhide_at(mtmp->mx, mtmp->my);
|
||||
if (!alreadyspotted && canseemon(mtmp))
|
||||
pline("%s appears.", Amonnam(mtmp));
|
||||
pline_mon(mtmp, "%s appears.", Amonnam(mtmp));
|
||||
}
|
||||
}
|
||||
return trap_result;
|
||||
@@ -3684,7 +3715,7 @@ minstapetrify(struct monst *mon, boolean byplayer)
|
||||
mon_adjust_speed(mon, -3, (struct obj *) 0);
|
||||
|
||||
if (cansee(mon->mx, mon->my))
|
||||
pline("%s turns to stone.", Monnam(mon));
|
||||
pline_mon(mon, "%s turns to stone.", Monnam(mon));
|
||||
if (byplayer) {
|
||||
gs.stoned = TRUE;
|
||||
xkilled(mon, XKILL_NOMSG);
|
||||
@@ -3733,7 +3764,7 @@ mselftouch(
|
||||
if (mwep && mwep->otyp == CORPSE && touch_petrifies(&mons[mwep->corpsenm])
|
||||
&& !resists_ston(mon)) {
|
||||
if (cansee(mon->mx, mon->my)) {
|
||||
pline("%s%s touches %s.", arg ? arg : "",
|
||||
pline_mon(mon, "%s%s touches %s.", arg ? arg : "",
|
||||
arg ? mon_nam(mon) : Monnam(mon),
|
||||
corpse_xname(mwep, (const char *) 0, CXN_PFX_THE));
|
||||
}
|
||||
@@ -6471,15 +6502,17 @@ thitm(
|
||||
*/
|
||||
if (!strike) {
|
||||
if (obj && cansee(mon->mx, mon->my))
|
||||
pline("%s is almost hit by %s!", Monnam(mon), doname(obj));
|
||||
pline_mon(mon, "%s is almost hit by %s!",
|
||||
Monnam(mon), doname(obj));
|
||||
} else {
|
||||
int dam = 1;
|
||||
boolean harmless = (obj && stone_missile(obj)
|
||||
&& passes_rocks(mon->data));
|
||||
|
||||
if (obj && cansee(mon->mx, mon->my))
|
||||
pline("%s is hit by %s%s", Monnam(mon), doname(obj),
|
||||
harmless ? " but is not harmed." : "!");
|
||||
pline_mon(mon, "%s is hit by %s%s",
|
||||
Monnam(mon), doname(obj),
|
||||
harmless ? " but is not harmed." : "!");
|
||||
if (d_override) {
|
||||
dam = d_override;
|
||||
} else if (obj) {
|
||||
|
||||
@@ -839,9 +839,9 @@ mon_wield_item(struct monst *mon)
|
||||
if (canseemon(mon)) {
|
||||
boolean newly_welded;
|
||||
|
||||
pline_xy(mon->mx, mon->my,
|
||||
"%s wields %s%c", Monnam(mon), doname(obj),
|
||||
exclaim ? '!' : '.');
|
||||
pline_mon(mon, "%s wields %s%c",
|
||||
Monnam(mon), doname(obj),
|
||||
exclaim ? '!' : '.');
|
||||
/* 3.6.3: mwelded() predicate expects the object to have its
|
||||
W_WEP bit set in owormmask, but the pline here and for
|
||||
artifact_light don't want that because they'd have '(weapon
|
||||
|
||||
Reference in New Issue
Block a user