From 253aea33fca7fdfbcd612d2493072342b34aa637 Mon Sep 17 00:00:00 2001 From: Alex Smith Date: Thu, 15 Jan 2026 00:06:42 +0000 Subject: [PATCH] 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.) --- doc/fixes3-7-0.txt | 2 ++ include/monsters.h | 2 +- src/mhitu.c | 7 +++++++ 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/doc/fixes3-7-0.txt b/doc/fixes3-7-0.txt index a53504e4d..17667be2f 100644 --- a/doc/fixes3-7-0.txt +++ b/doc/fixes3-7-0.txt @@ -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 diff --git a/include/monsters.h b/include/monsters.h index d13cc9178..bf4d30c3d 100644 --- a/include/monsters.h +++ b/include/monsters.h @@ -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, diff --git a/src/mhitu.c b/src/mhitu.c index 89f6006dd..160864c23 100644 --- a/src/mhitu.c +++ b/src/mhitu.c @@ -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; }