Baldur's Gate 3
0 of 0

File information

Last updated

Original upload

Created by

Armarui

Uploaded by

Armarui

Virus scan

Safe to use

About this mod

Allow gear to spread status conditions onto multiple targets with a single attack or spell.

Requirements
Permissions and credits
Overview

Many pieces of equipment that apply status effects have an internal cooldown of "once per attack", likely to prevent damage rider sources from inflicting debuffs more times than intended. However, this has a pretty serious problem: it makes these items completely incompatible with area-of-effect (AOE) attacks. For example, if you're wearing the Gloves of Belligerent Skies, and you drop a fat Thunderwave on a cluster of three enemies, only one of them will receive any Reverberation stacks.

This mod reworks the internal cooldowns for these items to instead be "once per attack per enemy". This significantly improves the viability of this gear for AOE builds, letting your Tiger Heart Barbarian spread Reverberation onto three enemies in a single cleave, and your Wizard disperse Poison onto an entire battlefield with one array of Magic Missiles.

Methodology
Spoiler:  
Show

The way this all works is pretty simple. Basically, this mod removes the `OncePerAttack` property from each equipment passive, but instead of applying the desired status effect on each proc, it applies a custom, invisible placeholder status. This placeholder status has an `Ignore` stack type, meaning subsequent applications of the same status are ignored instead of stacking or re-applying.

In the Script Extender, we subscribe to all status applications, listening for any of our placeholder statuses. When a placeholder status is applied, we swap it out with the real status. Since the placeholder status cannot stack on top of itself, this means that we've successfully applied our desired statuses onto each enemy.

To emulate the `OncePerAttack` interaction, though, this placeholder needs to be removed so that the status can proc again on future attacks. To achieve this, we want to wait until all of the effects of the attack have resolved. There isn't a super easy way to do this, so I went for a naive approach: we simply wait for a few ticks of the game loop to pass, then remove the status. In my local testing, 10 ticks (~330 ms) was long enough for any damage and statuses to resolve, but not so long that the placeholder would still be blocking the next attack (I used dual-wielded daggers to time this).

Lastly, some attacks, like upcasted Magic Missile, could have a duration between the first and last damage applications considerably longer than 10 ticks. To work around this, I set up an additional, lightweight subscription for all spell casts. If the latest spell cast is one of these long-running spells, the placeholder will not be removed until 30 ticks (a full second) have passed.

While the tick subscription logic is a bit superficial, the risk of getting that timeout wrong is quite low. In the worst case, a max cast Magic Missile could potentially proc the same status twice, or a very fast clicker might be able to initiate an attack before the placeholders have been removed, causing status applications not to work for that attack. I wasn't able to produce either of these scenarios in my local tests, so I'm not that worried about it. Let me know if you notice any bugs.



Encrusted with Frost

Winter's Clutches: When the wearer deals Cold damage, inflict 2 turns of Encrusted with Frost upon the target(s).

  • Can now be applied to enemies that have already accumulated stacks of Frost within the turn.
  • Unlike most of the other equipment fixed by this mod, these gloves kind of work with AOE moves in the base game. The problem is that, instead of using an internal cooldown, they only work if the target hasn't already been Encrusted with Frost that turn. This implementation severely limited synergies with other Frost gear, and it doesn't really seem intentional.


Coldbrim Hat: Once per turn, any spell condition inflicted on a target also applies 2 turns of Encrusted with Frost.

  • Can now be applied to any number of enemies once per turn.



Noxious Fumes

Ichorous Gloves: When the wearer deals Acid damage, they also inflict Noxious Fumes on the target(s).

  • Can now be applied to multiple enemies in a single attack.
  • Save DC increased from a flat 13 to the wielder's Manoeuvre save DC.



Reverberation

Boots of Stormy Clamour: When the wearer inflicts a condition upon a hostile creature, they also inflict 2 turns of Reverberation.

  • Can now be applied to multiple enemies in a single attack.

Gloves of Belligerent Skies: When the wielder deals Radiant, Lightning, or Thunder damage, apply 2 turns of Reverberation to the target(s).

  • Can now be applied to multiple enemies in a single attack.
  • Note that this differs from the fix implemented in the Unofficial Bug Fixer mod, which allows these gloves to spread Reverberation, but only once, and only if the target does not already have the status, which makes them somewhat incompatible with the other Reverberation items. As a result, I'd strongly recommend loading the Unofficial Bug Fixer before this mod, so that it can be overwritten.

Spineshudder Amulet: When the wearer deals damage with a ranged Spell Attack, inflict 2 turns of Reverberation on the target(s).

  • Can now be applied to multiple enemies in a single attack.



Faerie Fire

Hellrider Longbow: Once per turn, a creature hit by this weapon will possibly be afflicted with Faerie Fire.

  • Can now inflict the saving throw to any number of enemies once per turn, regardless of outcome.
  • Save DC increased from a flat 13 to the wielder's Spell save DC.
  • Refactored internal logic to only roll a saving throw if it will be used. Before, any attack from the wielder of the Hellrider Longbow would add a saving throw to the combat log, even if the result wouldn't be used because the attack was initiated with a different weapon.



Snowburst

Snowburst Ring: When the wearer deals Cold damage, they also create a 4.5 m / 15 ft circle of Ice around the target(s).

  • Can now be applied to multiple enemies in a single attack.



Kereska's Favour

Markoheshkir's special ability, Kereska's Favour, has six elemental variants. Four of them apply statuses — but only once per attack, which makes this legendary staff feel a little bit less legendary. This mod improves all four of these variants:

Sizzling Cataclysm (Acid): When you deal spell damage, inflict 1 turn of Noxious Fumes upon the target.

  • Can now be applied to multiple enemies in a single attack.
  • Save DC increased from a flat 13 to the wielder's Spell save DC.
  • Note that the tooltip is bugged, and this actually inflicts 3 turns of Noxious Fumes on a failed saving throw. This was not changed.

Deadlier than Arsenic (Poison): When you deal spell damage, inflict 1 turn of Poisoned upon the target.

  • Can now be applied to multiple enemies in a single attack.

Bone-shaking Thunder (Thunder): When you deal spell damage, inflict 1 turn of Reverberation upon the target.

  • Can now be applied to multiple enemies in a single attack.
  • Note that the tooltip is bugged, and this actually inflicts 2 turns of Reverberation. This was not changed.

Frost of Dark Winter (Cold): When you deal spell damage, inflict 1 turn of Frost upon the target.

  • Can now be applied to multiple enemies in a single attack.
  • Note that the tooltip is bugged, and this actually inflicts 2 turns of Encrusted with Frost. This was not changed.


Installation

Use the BG3ModManager. Add this mod to your load order.

The BG3 Script Extender is required. You can install it with the mod manager through its Tools tab, or by pressing CTRL + Shift + Alt + T while the mod manager is focused. No additional configuration is required.

This mod can be installed or uninstalled at any time.

Compatibility

This mod is compatible with, but overwrites, the Unofficial Bug Fixer mod. For the best results, this must be loaded after that mod, like so:



This mod is compatible with Rebalance - Common Effects.

Contributing

All of my mods are open source, and hosted on GitHub. I accept pull requests, but can't guarantee that I'll respond to issues.

My mods

The Barbarian collection


Other mods



Support & acknowledgements

100% of the donations that any of my projects receive go to the Wildlife Conservation Society. If you'd like to show support to me for whatever reason, please consider making a donation directly to them instead.

Thanks to pals in the BG3 Modding Community for helping me ramp up as a modder, and for all the rubberducking & brainstorming.