mplayer valkyries w/ Mjollnir

If an mplayer Valkyrie on the Astral Plane is given a war hammer,
give her gauntlets of power instead of random gloves since that will
either be Mjollnir or a very wimpy endgame weapon.  (Maybe someday
mplayer Valkyrie's will be able to throw Mjollnir; their chance of
having it on the Astral Plane is moderately high if it hasn't already
been created prior to arriving there.)

I also gave monsters wearing gauntlets of power a 3..6 damage bonus
for hand-to-hand.  While making that change, I noticed that monsters
wielding a scalpel or tsurugi wouldn't split puddings, unlike the
hero (a post-3.6.0 change), so fix that.
This commit is contained in:
PatR
2018-03-09 14:11:04 -08:00
parent cba6761ee6
commit e408c48bb3
3 changed files with 22 additions and 5 deletions

View File

@@ -412,8 +412,9 @@ register struct monst *magr, *mdef;
if (strike) {
res[i] = hitmm(magr, mdef, mattk);
if ((mdef->data == &mons[PM_BLACK_PUDDING]
|| mdef->data == &mons[PM_BROWN_PUDDING]) && otmp
&& objects[otmp->otyp].oc_material == IRON
|| mdef->data == &mons[PM_BROWN_PUDDING])
&& (otmp && (objects[otmp->otyp].oc_material == IRON
|| objects[otmp->otyp].oc_material == METAL))
&& mdef->mhp > 1
&& !mdef->mcan) {
if (clone_mon(mdef, 0, 0)) {
@@ -908,10 +909,17 @@ register struct attack *mattk;
tmp = 0;
} else if (mattk->aatyp == AT_WEAP) {
if (otmp) {
struct obj *marmg;
if (otmp->otyp == CORPSE
&& touch_petrifies(&mons[otmp->corpsenm]))
goto do_stone;
tmp += dmgval(otmp, mdef);
if ((marmg = which_armor(magr, W_ARMG)) != 0
&& marmg->otyp == GAUNTLETS_OF_POWER)
tmp += rn1(4, 3); /* 3..6 */
if (tmp < 1) /* is this necessary? mhitu.c has it... */
tmp = 1;
if (otmp->oartifact) {
(void) artifact_hit(magr, mdef, otmp, &tmp, dieroll);
if (mdef->mhp <= 0)