allow reading many more items
when you're hiding under something a zap downward should not hit that
something, while a zap upward should
+show more explicit reason why player was helpless at death
Platform- and/or Interface-Specific New Features
E NEARDATA int bases[MAXOCLASSES];
E NEARDATA int multi;
+E const char *multi_reason;
E NEARDATA int nroom;
E NEARDATA int nsubroom;
E NEARDATA int occtime;
pline("Yow! The %s stares back!", mirror);
else
pline("Yikes! You've frozen yourself!");
- if (!Hallucination || !rn2(4))
+ if (!Hallucination || !rn2(4)) {
nomul(-rnd(MAXULEV + 6 - u.ulevel));
+ multi_reason = "gazing into a mirror";
+ }
nomovemsg = 0; /* default, "you can move again" */
}
} else if (youmonst.data->mlet == S_VAMPIRE)
break;
case 2: /* no explanation; it just happens... */
nomovemsg = "";
+ multi_reason = NULL;
nomul(-rnd(2));
break;
}
teleds(cc.x, cc.y, TRUE);
sokoban_guilt();
nomul(-1);
+ multi_reason = "jumping around";
nomovemsg = "";
morehungry(rnd(25));
return 1;
resisted = TRUE;
} else {
nomul(-3);
+ multi_reason = "being scared stiff";
nomovemsg = "";
if (magr && magr == u.ustuck && sticks(youmonst.data)) {
u.ustuck = (struct monst *)0;
NEARDATA int bases[MAXOCLASSES] = DUMMY;
NEARDATA int multi = 0;
+const char *multi_reason = NULL;
NEARDATA int nroom = 0;
NEARDATA int nsubroom = 0;
NEARDATA int occtime = 0;
}
You("peer into %s...", the(xname(obj)));
nomul(-rnd(10));
+ multi_reason = "gazing into a crystal ball";
nomovemsg = "";
if (obj->spe <= 0)
pline_The("vision is unclear.");
/* you ought to be able to let go; tough luck */
/* (maybe `move_into_trap()' would be better) */
nomul(-d(2,2));
+ multi_reason = "stuck in a spider web";
nomovemsg = "You pull free.";
} else if (lev->typ == IRONBARS) {
pline("Clang!");
if(cursed(otmp)) return(0);
if(delay) {
nomul(delay);
+ multi_reason = "disrobing";
if (is_helmet(otmp)) {
/* ick... */
nomovemsg = !strcmp(helm_simple_name(otmp), "hat") ?
delay = -objects[otmp->otyp].oc_delay;
if(delay){
nomul(delay);
+ multi_reason = "dressing up";
if(is_boots(otmp)) afternmv = Boots_on;
if(is_helmet(otmp)) afternmv = Helmet_on;
if(is_gloves(otmp)) afternmv = Gloves_on;
if(!range || (!dx && !dy) || u.ustuck) return; /* paranoia */
nomul(-range);
+ multi_reason = "moving through the air";
nomovemsg = ""; /* it just happens */
if (verbose)
You("%s in the opposite direction.", range > 1 ? "hurtle" : "float");
/* A pile of gold can't ride. */
if (u.usteed) dismount_steed(DISMOUNT_FELL);
nomul(-tmp);
+ multi_reason = "pretending to be a pile of gold";
Sprintf(buf, Hallucination ?
"You suddenly dread being peeled and mimic %s again!" :
"You now prefer mimicking %s again.",
pline_The("world spins and %s %s.", what, where);
incr_itimeout(&HDeaf, duration);
nomul(-duration);
+ multi_reason = "unconscious from rotten food";
nomovemsg = "You are conscious again.";
afternmv = Hear_again;
return(1);
if (!Levitation) selftouch("Falling, you");
incr_itimeout(&HDeaf, duration);
nomul(-duration);
+ multi_reason = "fainted from lack of food";
nomovemsg = "You regain consciousness.";
afternmv = unfaint;
newhs = FAINTED;
else
make_sick(0L, (char *)0, TRUE, SICK_VOMITABLE);
nomul(-2);
+ multi_reason = "vomiting";
nomovemsg = You_can_move_again;
}
Sprintf(eos(buf), " called %s", MNAME(mtmp));
}
- if (multi) Strcat(buf, ", while helpless");
+ if (multi) {
+ if (multi_reason)
+ Sprintf(eos(buf), ", while %s", multi_reason);
+ else
+ Strcat(buf, ", while helpless");
+ }
Strcpy(killer.name, buf);
if (mptr->mlet == S_WRAITH)
u.ugrave_arise = PM_WRAITH;
/* must come after we finished picking up, in spoteffects() */
if (cause_delay) {
nomul(-2);
+ multi_reason = "dragging an iron ball";
nomovemsg = "";
}
u.uinvulnerable = FALSE; /* Kludge to avoid ctrl-C bug -dlc */
u.usleep = 0;
multi = nval;
+ if (nval == 0) multi_reason = NULL;
context.travel = context.travel1 = context.mv = context.run = 0;
}
if (*nomovemsg) pline1(nomovemsg);
nomovemsg = 0;
u.usleep = 0;
+ multi_reason = NULL;
if (afternmv) (*afternmv)();
afternmv = 0;
}
if (multi >= 0)
You("stiffen briefly.");
nomul(-1);
+ multi_reason = "paralyzed by a monster";
} else {
if (multi >= 0)
You("are frozen in place!");
dmg = 4 + (int)mtmp->m_lev;
if (Half_spell_damage) dmg = (dmg + 1) / 2;
nomul(-dmg);
+ multi_reason = "paralyzed by a monster";
}
nomovemsg = 0;
dmg = 0;
else You("are frozen by %s!", mon_nam(mtmp));
nomovemsg = You_can_move_again;
nomul(-rnd(10));
+ multi_reason = "paralyzed by a monster";
exercise(A_DEX, FALSE);
}
}
/* even if the trap fails, you've used up this turn */
if (multi >= 0) { /* in case we didn't become paralyzed */
nomul(-1);
+ multi_reason = "opening a container";
nomovemsg = "";
}
return 1;
/* even if the trap fails, you've used up this turn */
if (multi >= 0) { /* in case we didn't become paralyzed */
nomul(-1);
+ multi_reason = "tipping a container";
nomovemsg = "";
}
} else if (box->otyp == BAG_OF_TRICKS || box->otyp == HORN_OF_PLENTY) {
-d((int)mtmp->m_lev+1,
(int)mtmp->data->mattk[0].damd)
: -200);
+ multi_reason = "frozen by a monster's gaze";
nomovemsg = 0;
return 1;
} else
if(flags.verbose)
You("are frightened to death, and unable to move.");
nomul(-3);
+ multi_reason = "being frightened to death";
nomovemsg = "You regain your composure.";
}
Your("%s are frozen to the %s!",
makeplural(body_part(FOOT)), surface(u.ux, u.uy));
nomul(-(rn1(10, 25 - 12*bcsign(otmp))));
+ multi_reason = "frozen by a potion";
nomovemsg = You_can_move_again;
exercise(A_DEX, FALSE);
}
if (!Free_action) {
pline("%s seems to be holding you.", Something);
nomul(-rnd(5));
+ multi_reason = "frozen by a potion";
nomovemsg = You_can_move_again;
exercise(A_DEX, FALSE);
} else You("stiffen momentarily.");
if (!Free_action && !Sleep_resistance) {
You_feel("rather tired.");
nomul(-rnd(5));
+ multi_reason = "sleeping off a magical draught";
nomovemsg = You_can_move_again;
exercise(A_DEX, FALSE);
} else You("yawn.");
dmon->mpeaceful = TRUE;
You("are terrified, and unable to move.");
nomul(-3);
+ multi_reason = "being terrified of a demon";
nomovemsg = 0;
} else pline_The("%s.", demonless_msg);
}
}
}
nomul(-3);
+ multi_reason = "praying";
nomovemsg = "You finish your prayer.";
afternmv = prayer_done;
}
}
nomul(-5);
+ multi_reason = "trying to turn the monsters";
nomovemsg = You_can_move_again;
return(1);
}
if (flags.verbose)
You("are frightened to death, and unable to move.");
nomul(-3);
+ multi_reason = "being terrified of a demon";
nomovemsg = "You regain your composure.";
}
}
pline("%s rattles noisily.", Monnam(mtmp));
You("freeze for a moment.");
nomul(-2);
+ multi_reason = "scared by rattling";
nomovemsg = 0;
break;
case MS_LAUGH:
context.spbook.book = 0; /* no longer studying */
context.spbook.o_id = 0;
nomul(context.spbook.delay); /* remaining delay is uninterrupted */
+ multi_reason = "reading a book";
nomovemsg = 0;
context.spbook.delay = 0;
return(0);
boolean gone = cursed_book(spellbook);
nomul(context.spbook.delay); /* study time */
+ multi_reason = "reading a book";
nomovemsg = 0;
context.spbook.delay = 0;
if(gone || !rn2(3)) {
spellbook->in_use = FALSE;
}
nomul(context.spbook.delay);
+ multi_reason = "reading a book";
nomovemsg = 0;
context.spbook.delay = 0;
return(1);
named++;
/* the following is to set multi for later on */
nomul(-armordelay);
+ multi_reason = "taking off clothes";
nomovemsg = 0;
remove_worn_item(otmp, TRUE);
otmp->cursed = curssv;
case 3: /* limbs turned to stone */
stop_occupation();
nomul(-3); /* can't move anymore */
+ multi_reason = "getting stoned";
nomovemsg = You_can_move_again; /* not unconscious */
break;
default:
if (u.umoved && !Levitation) {
slip_or_trip();
nomul(-2);
+ multi_reason = "fumbling";
nomovemsg = "";
/* The more you are carrying the more likely you
* are to make noise when you fumble. Adjustments
{
stop_occupation();
nomul(how_long);
+ multi_reason = "sleeping";
/* generally don't notice sounds while sleeping */
if (wakeup_msg && multi == how_long) {
/* caller can follow with a direct call to Hear_again() if
if(!u.uinvulnerable) {
stop_occupation();
nomul(-3);
+ multi_reason = "hiding from thunderstorm";
nomovemsg = 0;
}
} else
if (!Free_action) {
pline("Suddenly you are frozen in place!");
nomul(-d(5, 6));
+ multi_reason = "frozen by a trap";
exercise(A_DEX, FALSE);
nomovemsg = You_can_move_again;
} else You("momentarily stiffen.");
You("digest %s.", mon_nam(mdef));
if (Slow_digestion) tmp *= 2;
nomul(-tmp);
+ multi_reason = "digesting something";
nomovemsg = msgbuf;
} else pline1(msgbuf);
if (pd == &mons[PM_GREEN_SLIME]) {
You("are frozen by %s gaze!",
s_suffix(mon_nam(mon)));
nomul((ACURR(A_WIS) > 12 || rn2(4)) ? -tmp : -127);
+ multi_reason = "frozen by a monster's gaze";
nomovemsg = 0;
}
} else {
You("are frozen by %s!", mon_nam(mon));
nomovemsg = You_can_move_again;
nomul(-tmp);
+ multi_reason = "frozen by a monster";
exercise(A_DEX, FALSE);
}
break;