Skip to content

[Warlock] Refine Seed of Corruption smart targeting and detonation#11440

Merged
nyterage merged 1 commit intosimulationcraft:midnightfrom
millanzarreta:wl-mid-seed-smart-target
May 5, 2026
Merged

[Warlock] Refine Seed of Corruption smart targeting and detonation#11440
nyterage merged 1 commit intosimulationcraft:midnightfrom
millanzarreta:wl-mid-seed-smart-target

Conversation

@millanzarreta
Copy link
Copy Markdown
Contributor

Several Seed of Corruption behaviors have been tested in-game and replicated in SimC:

  • Damage dealt by pets and guardians does not contribute to the damage required on a SoC target to trigger its detonation.
  • The main_seed_target variable has been removed from the custom SoC state seed_of_corruption_state_t, as it is no longer used. It was previously used for the logic that determined which target should be affected by Patient Zero, but testing done in PR #11405 confirmed that the behavior is more general and not specifically tied to the SoC debuff state. This is now handled through the player-scope variable patient_zero_target.
  • Reapplying a SoC debuff to a target that already has one increases its duration, but does not change the time until the next tick / detonation. This is already implemented correctly in SimC, so no changes are needed for this.
  • The smart targeting logic for Seed of Corruption appears to have changed somewhat compared to older implementations.

Let's expand on this last point.

In-game tests were done both with and without the Sow the Seeds talent, and the observed behavior is as the code comment indicates:

Seed of Corruption has special target selection behavior (smart targeting):
- The primary seed prefers the original target if it does not already have a SoC debuff.
  - If the original target already has a SoC debuff, the primary seed is redirected to a random target (from the original target list) without a SoC debuff.
  - If no such target exists, the primary seed falls back to the original target even though it already has a SoC debuff.
- With Sow the Seeds, secondary seeds are selected from the remaining targets.
  - Normally they can only select targets without a SoC debuff; if none are available, no secondary seed is applied.
  - If the primary seed had to fall back to the original target, secondary seeds may select targets that already have a SoC debuff.
- Targets selected by this cast are not duplicated; the primary seed is kept in first position, and the remaining targets are shuffled for secondary seed selection. Invalid secondary targets are removed from the target list.
- Formerly, SoC smart targeting was based on whether the target had the debuff or had a seed in travel. This is no longer the case, and only the presence of the SoC debuff matters. (maybe a bug?)

Explained more simply:

main seed:
  original target if it does not have SoC
  random target without SoC if original target already has SoC
  fallback to original target if no target without SoC is available

secondary seeds:
  if main seed did not fallback:
    random remaining targets without SoC
    no fallback; if none are available, no secondary seed is applied
  if main seed did fallback:
    random remaining secondary targets, even if they already have SoC

This logic has been implemented in SimC, mainly in the available_targets function, with the target cache being invalidated when needed.

Since Seed of Corruption can now redirect the primary seed to a target different from the original cast target, some extra changes were needed in snapshot_state() and execute():

  • snapshot_state() now uses chain_target == 0 to identify the primary seed, so Sow the Seeds effectiveness is assigned correctly even when the primary seed is redirected.
  • execute() resolves the actual primary seed target from the generated target list and uses it for follow-up effects.

In-game testing also confirmed that other actions/effects triggered by Seed of Corruption use the main seed’s actual target, not the original SoC cast target. This applies to actions/effects such as Shared Fate, Wicked Reaping (and by extension Soul Anathema), Demonic Soul, and the Patient Zero talent. This behavior has also been replicated in SimC.

@millanzarreta millanzarreta force-pushed the wl-mid-seed-smart-target branch from a7c84a7 to da45b2e Compare May 5, 2026 01:28
@nyterage nyterage merged commit a4a1582 into simulationcraft:midnight May 5, 2026
28 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants