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:
+10
-2
@@ -412,8 +412,9 @@ register struct monst *magr, *mdef;
|
|||||||
if (strike) {
|
if (strike) {
|
||||||
res[i] = hitmm(magr, mdef, mattk);
|
res[i] = hitmm(magr, mdef, mattk);
|
||||||
if ((mdef->data == &mons[PM_BLACK_PUDDING]
|
if ((mdef->data == &mons[PM_BLACK_PUDDING]
|
||||||
|| mdef->data == &mons[PM_BROWN_PUDDING]) && otmp
|
|| mdef->data == &mons[PM_BROWN_PUDDING])
|
||||||
&& objects[otmp->otyp].oc_material == IRON
|
&& (otmp && (objects[otmp->otyp].oc_material == IRON
|
||||||
|
|| objects[otmp->otyp].oc_material == METAL))
|
||||||
&& mdef->mhp > 1
|
&& mdef->mhp > 1
|
||||||
&& !mdef->mcan) {
|
&& !mdef->mcan) {
|
||||||
if (clone_mon(mdef, 0, 0)) {
|
if (clone_mon(mdef, 0, 0)) {
|
||||||
@@ -908,10 +909,17 @@ register struct attack *mattk;
|
|||||||
tmp = 0;
|
tmp = 0;
|
||||||
} else if (mattk->aatyp == AT_WEAP) {
|
} else if (mattk->aatyp == AT_WEAP) {
|
||||||
if (otmp) {
|
if (otmp) {
|
||||||
|
struct obj *marmg;
|
||||||
|
|
||||||
if (otmp->otyp == CORPSE
|
if (otmp->otyp == CORPSE
|
||||||
&& touch_petrifies(&mons[otmp->corpsenm]))
|
&& touch_petrifies(&mons[otmp->corpsenm]))
|
||||||
goto do_stone;
|
goto do_stone;
|
||||||
tmp += dmgval(otmp, mdef);
|
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) {
|
if (otmp->oartifact) {
|
||||||
(void) artifact_hit(magr, mdef, otmp, &tmp, dieroll);
|
(void) artifact_hit(magr, mdef, otmp, &tmp, dieroll);
|
||||||
if (mdef->mhp <= 0)
|
if (mdef->mhp <= 0)
|
||||||
|
|||||||
+8
-1
@@ -972,6 +972,7 @@ register struct attack *mattk;
|
|||||||
struct obj *otmp = mon_currwep;
|
struct obj *otmp = mon_currwep;
|
||||||
|
|
||||||
if (mattk->aatyp == AT_WEAP && otmp) {
|
if (mattk->aatyp == AT_WEAP && otmp) {
|
||||||
|
struct obj *marmg;
|
||||||
int tmp;
|
int tmp;
|
||||||
|
|
||||||
if (otmp->otyp == CORPSE
|
if (otmp->otyp == CORPSE
|
||||||
@@ -983,6 +984,9 @@ register struct attack *mattk;
|
|||||||
goto do_stone;
|
goto do_stone;
|
||||||
}
|
}
|
||||||
dmg += dmgval(otmp, &youmonst);
|
dmg += dmgval(otmp, &youmonst);
|
||||||
|
if ((marmg = which_armor(mtmp, W_ARMG)) != 0
|
||||||
|
&& marmg->otyp == GAUNTLETS_OF_POWER)
|
||||||
|
dmg += rn1(4, 3); /* 3..6 */
|
||||||
if (dmg <= 0)
|
if (dmg <= 0)
|
||||||
dmg = 1;
|
dmg = 1;
|
||||||
if (!(otmp->oartifact
|
if (!(otmp->oartifact
|
||||||
@@ -1003,7 +1007,10 @@ register struct attack *mattk;
|
|||||||
tmp -= rnd(-u.uac);
|
tmp -= rnd(-u.uac);
|
||||||
if (tmp < 1)
|
if (tmp < 1)
|
||||||
tmp = 1;
|
tmp = 1;
|
||||||
if (u.mh - tmp > 1 && objects[otmp->otyp].oc_material == IRON
|
if (u.mh - tmp > 1
|
||||||
|
&& (objects[otmp->otyp].oc_material == IRON
|
||||||
|
/* relevant 'metal' objects are scalpel and tsurugi */
|
||||||
|
|| objects[otmp->otyp].oc_material == METAL)
|
||||||
&& (u.umonnum == PM_BLACK_PUDDING
|
&& (u.umonnum == PM_BLACK_PUDDING
|
||||||
|| u.umonnum == PM_BROWN_PUDDING)) {
|
|| u.umonnum == PM_BROWN_PUDDING)) {
|
||||||
if (tmp > 1)
|
if (tmp > 1)
|
||||||
|
|||||||
+4
-2
@@ -285,7 +285,9 @@ register boolean special;
|
|||||||
mk_mplayer_armor(mtmp, cloak);
|
mk_mplayer_armor(mtmp, cloak);
|
||||||
mk_mplayer_armor(mtmp, helm);
|
mk_mplayer_armor(mtmp, helm);
|
||||||
mk_mplayer_armor(mtmp, shield);
|
mk_mplayer_armor(mtmp, shield);
|
||||||
if (rn2(8))
|
if (weapon == WAR_HAMMER) /* valkyrie: wimpy weapon or Mjollnir */
|
||||||
|
mk_mplayer_armor(mtmp, GAUNTLETS_OF_POWER);
|
||||||
|
else if (rn2(8))
|
||||||
mk_mplayer_armor(mtmp, rnd_class(LEATHER_GLOVES,
|
mk_mplayer_armor(mtmp, rnd_class(LEATHER_GLOVES,
|
||||||
GAUNTLETS_OF_DEXTERITY));
|
GAUNTLETS_OF_DEXTERITY));
|
||||||
if (rn2(8))
|
if (rn2(8))
|
||||||
@@ -337,7 +339,7 @@ boolean special;
|
|||||||
int tryct = 0;
|
int tryct = 0;
|
||||||
|
|
||||||
/* roll for character class */
|
/* roll for character class */
|
||||||
pm = PM_ARCHEOLOGIST + rn2(PM_WIZARD - PM_ARCHEOLOGIST + 1);
|
pm = rn1(PM_WIZARD - PM_ARCHEOLOGIST + 1, PM_ARCHEOLOGIST);
|
||||||
set_mon_data(&fakemon, &mons[pm], -1);
|
set_mon_data(&fakemon, &mons[pm], -1);
|
||||||
|
|
||||||
/* roll for an available location */
|
/* roll for an available location */
|
||||||
|
|||||||
Reference in New Issue
Block a user