or role monster, bias the random form towards humanoid
salamanders can use green slime corpses to cure themselves of petrification
feedback about summoned monsters may use singular when it should use plural
+rogue's backstab bonus doesn't apply for throwing attacks
Platform- and/or Interface-Specific Fixes
boolean silvermsg = FALSE, silverobj = FALSE;
boolean valid_weapon_attack = FALSE;
boolean unarmed = !uwep && !uarm && !uarms;
+ boolean hand_to_hand = (thrown == HMON_MELEE ||
+ /* not grapnels; applied implies uwep */
+ (thrown == HMON_APPLIED && is_pole(uwep)));
#ifdef STEED
int jousting = 0;
#endif
valid_weapon_attack = (tmp > 1);
if (!valid_weapon_attack || mon == u.ustuck || u.twoweap) {
; /* no special bonuses */
- } else if (mon->mflee && Role_if(PM_ROGUE) && !Upolyd) {
+ } else if (mon->mflee && Role_if(PM_ROGUE) && !Upolyd &&
+ /* multi-shot throwing is too powerful here */
+ hand_to_hand) {
You("strike %s from behind!", mon_nam(mon));
tmp += rnd(u.ulevel);
hittxt = TRUE;
/* iron weapon using melee or polearm hit */
obj && obj == uwep &&
objects[obj->otyp].oc_material == IRON &&
- (thrown == HMON_MELEE ||
- (thrown == HMON_APPLIED && is_pole(obj)))) {
+ hand_to_hand) {
if (clone_mon(mon, 0, 0)) {
pline("%s divides as you hit it!", Monnam(mon));
hittxt = TRUE;
} else if (destroyed) {
if (!already_killed)
killed(mon); /* takes care of most messages */
- } else if (u.umconf &&
- (thrown == HMON_MELEE || thrown == HMON_APPLIED)) {
+ } else if (u.umconf && hand_to_hand) {
nohandglow(mon);
if (!mon->mconf && !resist(mon, SPBOOK_CLASS, 0, NOTELL)) {
mon->mconf = 1;