Elemental Planes balance adjustments

The previous commit caused air elementals to become almost totally
nonthreatening in the endgame (even the buffed ones on the Plane of
Air). This commit fixes that (whilst still leaving them somewhat
weaker than they were before against characters with good AC), by
doubling the damage of home-plane air elementals.

The damage of the other home-plane elementals was doubled too,
because they were mostly nonthreatening previously. On Fire, this
has no real effect as almost any character would be fire-resistant
by this point. On Earth, it makes the elementals more of a threat,
when they previously weren't.

However, it made Water too difficult (albeit more fun, because it
became important to avoid letting water elementals swam you). As
such, water elementals are made slightly slower to compensate.
(My own playtesting indicates that 6 is slightly too fast, but 4 is
too slow, so I'm hoping that 5 is the correct value.)
This commit is contained in:
Alex Smith
2026-01-15 00:06:42 +00:00
parent 7881d5b4b2
commit 253aea33fc
3 changed files with 10 additions and 1 deletions

View File

@@ -1570,6 +1570,8 @@ clarify in the #quit message that it doesn't save the game
cursed potion of invisibility removes intrinsic invisibility
fix bug which caused engulf damage from air elementals and fog clouds to
ignore damage reduction from armor class
elementals do double damage on their home plane
water elementals move slightly more slowly
Fixes to 3.7.0-x General Problems Exposed Via git Repository

View File

@@ -1600,7 +1600,7 @@
M2_STRONG | M2_NEUTER, 0,
10, CLR_BROWN, EARTH_ELEMENTAL),
MON(NAM("water elemental"), S_ELEMENTAL,
LVL(8, 6, 2, 30, 0), (G_NOCORPSE | 1),
LVL(8, 5, 2, 30, 0), (G_NOCORPSE | 1),
A(ATTK(AT_CLAW, AD_PHYS, 5, 6),
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
SIZ(2500, 0, MS_SILENT, MZ_HUGE), MR_POISON | MR_STONE, 0,

View File

@@ -431,6 +431,13 @@ getmattk(
}
/* elementals on their home plane do double damage */
if (attk != alt_attk_buf && is_home_elemental(mptr)) {
*alt_attk_buf = *attk;
attk = alt_attk_buf;
attk->damn *= 2;
}
return attk;
}