diff --git a/doc/fixes3-7-0.txt b/doc/fixes3-7-0.txt index e7150921e..033dab527 100644 --- a/doc/fixes3-7-0.txt +++ b/doc/fixes3-7-0.txt @@ -1253,6 +1253,7 @@ steam vortices and fog clouds leave steam clouds behind fog clouds maintain any clouds they are in, even poisonous ones bone devils summon skeletons adjust wand of make invisible and potion of invisibility effects +barbed devils have an attack that sticks you to them Fixes to 3.7.0-x General Problems Exposed Via git Repository diff --git a/include/monsters.h b/include/monsters.h index b77a67245..c45757ecf 100644 --- a/include/monsters.h +++ b/include/monsters.h @@ -2498,7 +2498,7 @@ M3_INFRAVISIBLE | M3_INFRAVISION, 10, CLR_RED, ERINYS), MON("barbed devil", S_DEMON, LVL(8, 12, 0, 35, 8), (G_HELL | G_NOCORPSE | G_SGROUP | 2), - A(ATTK(AT_CLAW, AD_PHYS, 2, 4), ATTK(AT_CLAW, AD_PHYS, 2, 4), + A(ATTK(AT_CLAW, AD_PHYS, 2, 4), ATTK(AT_CLAW, AD_STCK, 2, 4), ATTK(AT_STNG, AD_PHYS, 3, 4), NO_ATTK, NO_ATTK, NO_ATTK), SIZ(WT_HUMAN, 400, MS_SILENT, MZ_HUMAN), MR_FIRE | MR_POISON, 0, M1_POIS | M1_THICK_HIDE, M2_DEMON | M2_STALK | M2_HOSTILE | M2_NASTY, diff --git a/src/uhitm.c b/src/uhitm.c index 1de10b4f0..424b2b04a 100644 --- a/src/uhitm.c +++ b/src/uhitm.c @@ -3175,16 +3175,22 @@ mhitm_ad_stck( { boolean negated = mhitm_mgc_atk_negated(magr, mdef, FALSE); struct permonst *pd = mdef->data; + boolean barbs = (magr->data == &mons[PM_BARBED_DEVIL]); if (magr == &gy.youmonst) { /* uhitm */ - if (!negated && !sticks(pd) && next2u(mdef->mx, mdef->my)) + if (!negated && !sticks(pd) && next2u(mdef->mx, mdef->my)) { set_ustuck(mdef); /* it's now stuck to you */ + if (barbs) + Your("barbs stick to %s!", y_monnam(mdef)); + } } else if (mdef == &gy.youmonst) { /* mhitu */ hitmsg(magr, mattk); if (!negated && !u.ustuck && !sticks(pd)) { set_ustuck(magr); + if (barbs) + pline("The barbs stick to you!"); } } else { /* mhitm */ @@ -5169,6 +5175,9 @@ mhitm_knockback( You_feel("%s be knocked %s!", some_mon_nam(mdef), knockedhow); } + if (u.ustuck && (u_def || u_agr)) + unstuck(u.ustuck); + /* do the actual knockback effect */ if (u_def) { if (dismount) {