Give barbed devils a sticking attack

This commit is contained in:
Pasi Kallinen
2023-10-04 11:09:21 +03:00
parent f83a57c5bf
commit 3946c5a01d
3 changed files with 12 additions and 2 deletions

View File

@@ -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

View File

@@ -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,

View File

@@ -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) {