-
Notifications
You must be signed in to change notification settings - Fork 969
Question: should multi-hit attack windows for Magma/Storm remain as-is? #8506
Description
Summary
While looking into an older player report @Ruler2112 about sudden difficulty spikes, I found that some monster families can perform more than one damage window during a single attack animation.
This may be intended legacy behavior, but from a player point of view it can also feel like "duplicated hits", especially on higher difficulties where incoming damage is already much harsher.
I am opening this mainly to ask for direction before changing anything.
Historical context
This came up in an older player report here:
A maintainer replied that if this might be a DevilutionX-specific problem compared to vanilla, it would make sense to open a separate issue and investigate it:
The same player later referenced the same perceived issue again here:
What I found in code
In Source/monster.cpp, MonsterAttack() applies the normal attack hit once at:
animFrameNum - 1
But there are also hardcoded extra hit windows for specific monster families:
- Magma family gets an additional
MonsterAttackEnemy(...)call at frame8 - Storm family gets an additional
MonsterAttackEnemy(...)call at frame12
So from a code perspective, some monsters really can perform more than one attack check during what the player may perceive as a single attack animation.
The open question is whether this is intentional legacy behavior that should be preserved, or an old gameplay quirk / bug that simply survived unchanged from the original game.
Personally, this transition has always felt a bit odd to me in Hellfire too, which is why I took a closer look.
From a player-experience point of view, the rapid repeated metallic hit sounds in these encounters can sound quite harsh, which further reinforces the impression that something is malfunctioning rather than clearly behaving as intended.
Why I am bringing this up
I am not claiming this is definitely a bug.
What I am saying is:
- the player report is not completely baseless
- the current implementation can plausibly be perceived as "attack duplication"
- the current presentation can make the behavior feel more like a malfunction than a clearly telegraphed mechanic
- the logic is currently hardcoded in
MonsterAttack()for specific families, which makes the intent harder to read at first glance
Question for maintainers
Would you prefer one of these directions?
-
Leave it as-is
- treat this as intended legacy behavior
- maybe just add a clarifying comment and regression test
-
Refactor without gameplay change
- keep the exact same behavior
- but move these extra hit windows into monster data or a clearer abstraction instead of hardcoding them directly in
MonsterAttack()
-
Revisit gameplay / telegraphing
- if this behavior is considered too misleading or too punishing from a player point of view
- for example by changing how it is represented, documented, or possibly balanced
-
Adjust sound presentation only
- keep the existing attack windows and damage behavior unchanged
- but reduce how harsh / stacked the repeated attack sounds feel
- for example by rate-limiting repeated
MonsterSound::Attackplayback per monster or per attack animation
My personal preference would be option 4 first:
- it does not silently change gameplay behavior
- it directly addresses the most obvious player-facing "something feels wrong" signal
- and it still leaves room for a later refactor or gameplay discussion if needed
That said, I also would not be surprised if this turns out to be an old bug or design quirk that just survived for a long time because it became normalized.
I can follow up once direction is clear.