Skip to content

[Priest] Baseline implementation for Forever - #33

Merged
lgkern merged 44 commits into
mainfrom
shadow_beta
Oct 26, 2026
Merged

lgkern merged 44 commits into
mainfrom
shadow_beta

Conversation

@lgkern

@lgkern lgkern commented Oct 24, 2026

Copy link
Copy Markdown
Collaborator

Implements most baseline priest spells and talents for Forever:

  • SWP
  • Mind Blast
  • Devouring Plague
  • Mind Flay
  • SWD
  • Holy Fire
  • Shadowform
  • Shadow Weaving
  • Inner Focus
  • Early Demise
  • Improved Mind Flay
  • Penance
  • Devouring Contagion
  • Power in the Light
  • Dark Inspiration
  • Holy Nova
  • Searing Light
  • Starshards
  • Dark Sacrifice

It also touches on a few core things:

  • Auto parses mana cost reduction based on school (used by Shadowform)
  • Auto parses mana regen inside 5sr (used by Meditation and Spirit Tap)
  • Auto parses aura 85 (mana regen)
  • Auto parses hit effect (aura 16) (used by Shadow Focus)
  • Adds support for spell power from spirit effects (used by Power in the Light)

Comment thread engine/class_modules/sc_priest.cpp Outdated
{
priest_spell_t::execute();

player->resource_gain( RESOURCE_MANA, player->cache.spirit(), gain, this );

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This seems like it gains the spirit in 1 tick, and not spread across the 5 ticks every 3 sec

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

True, I've changed it to spread the spirit around the ticks. Something I didn't know and have to check is whether the spirit is a snapshot on cast or if it updates dynamically every tick. I implemented it as a snapshot, but if it is dynamic, it is an easy fix.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It should be snapshot as it will divide the full value on cast across the ticks so I think it's indeed fine to assume that for now. (assumption based on other Classic-esque talents/wordings)

@1337LutZ

1337LutZ commented Oct 25, 2026 •

Copy link
Copy Markdown

Might be worth to add Vampiric Embrace as Shadow will also cast this, since the heal can proc things like the Revelation enchant
Also missing the race specific abilities like Touch of Weakness, Hex of Weakness etc.

Unsure how SimC exactly reads talent ranks, but to me it seems like it always use the max rank of a talent (?)

@lgkern

lgkern commented Oct 25, 2026

Copy link
Copy Markdown
Collaborator Author

Might be worth to add Vampiric Embrace as Shadow will also cast this, since the heal can proc things like the Revelation enchant Also missing the race specific abilities like Touch of Weakness, Hex of Weakness etc.

Unsure how SimC exactly reads talent ranks, but to me it seems like it always use the max rank of a talent (?)

Added implementations for VE, HoE, and ToW. Healing things are still TODO, mostly looking to get a baseline out first.

For spell ranks, it always picks the highest rank a given actor can use based on level. Each spell declares the levels with spell_container_t. Implementation is at player:L10866, player_t::find_rank

@1337LutZ

@1337LutZ

Copy link
Copy Markdown

Might be worth to add Vampiric Embrace as Shadow will also cast this, since the heal can proc things like the Revelation enchant Also missing the race specific abilities like Touch of Weakness, Hex of Weakness etc.
Unsure how SimC exactly reads talent ranks, but to me it seems like it always use the max rank of a talent (?)

Added implementations for VE, HoE, and ToW. Healing things are still TODO, mostly looking to get a baseline out first.

For spell ranks, it always picks the highest rank a given actor can use based on level. Each spell declares the levels with spell_container_t. Implementation is at player:L10866, player_t::find_rank

@1337LutZ

I mostly meant Talent ranks

@lgkern

lgkern commented Oct 25, 2026

Copy link
Copy Markdown
Collaborator Author

Might be worth to add Vampiric Embrace as Shadow will also cast this, since the heal can proc things like the Revelation enchant Also missing the race specific abilities like Touch of Weakness, Hex of Weakness etc.
Unsure how SimC exactly reads talent ranks, but to me it seems like it always use the max rank of a talent (?)

Added implementations for VE, HoE, and ToW. Healing things are still TODO, mostly looking to get a baseline out first.
For spell ranks, it always picks the highest rank a given actor can use based on level. Each spell declares the levels with spell_container_t. Implementation is at player:L10866, player_t::find_rank
@1337LutZ

I mostly meant Talent ranks

Oh, for talent ranks, it picks up whatever is parsed by the core when the profile is set. It all works automagically.

@lgkern
lgkern merged commit 4e0bb83 into main Oct 26, 2026
16 checks passed
@lgkern
lgkern deleted the shadow_beta branch October 26, 2026 16:07
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.

3 participants