Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(druid): many fixes and improvements to feral script #803

Merged
merged 13 commits into from Jan 8, 2021

Conversation

johnnylam88
Copy link
Contributor

This pullup makes many fixes to the feral druid spell definitions,
adds an implementation for TicksGainedOnRefresh() used by the
default feral scripts, and fixes the importer to emit the correct
script code for druid.<spell>.ticks_gained_on_refresh.

The feral script seems usable now with some light testing against
a target dummy on a level 52 feral druid.

This fixes issue #777.

The following buffs work with feral snapshotting:

* Tiger's Fury buffs Rake, Rip, Thrash, and Moonfire.
* Bloodtalons buffs Rip.
* Improved Rake (from stealth) buffs Rake.

Add the corresponding SpellDamageBuff() lines to the spell
definitions so that the *Multiplier() conditions will return the
correct values instead of the default of 1.
Balance specialization or Balance Affinity is required for casting
Moonkin Form, Starfire, Starsurge, Sunfire, or Typhoon.

Guardian specialization or Guardian Affinity is required for
casting Frenzied Regeneration or Incapacitating Roar.

Feral specialization or Feral Affinity is required for Maim, Rake,
Rip, Main, or Swipe.
GetBaseDuration() is meant to return the duration of an aura if it
was applied by a specific spellcast or in the current state. When
called with no spellcast argument, it was assuming zero combopoints
and not correctly extending the duration via the property
"add_duration_combopoints". In this case, grab the number of
combopoints from the current state instead.

Since GetBaseDuration() now uses state, adjust it to take atTime
as an optional parameter to figure out which state to use.
The return value of TickTimeRemaining() isn't a constant, since it
varies over a time interval. Use the correct (value, origin, time)
triplet instead.
This is extremely basic support for an aura that is applied at two
different durations by two different spells. The spell identified
with "half_duration=spellId" in SpellInfo() causes the base
duration calculation to be halved.
Add a basic implementation of ticksGainedOnRefresh() to replace the
incorrect "ReturnConstant(0)".
Add a new section to EmitOperandSpecial() to parse and translate
"druid.<spell>.ticks_gained_on_refresh", with a special case for
primal_wrath.
The current SimC feral druid profile used as a basis for the
default feral Ovale script sometimes suggest Primal Wrath on single
target. Fix this by emitting an extra condition to check for more
than one enemy when suggesting the Primal Wrath action.
Regenerate feral druid scripts for ticks_gained_on_refresh and
primal_wrath changes to simulationcraft/emiter.ts.
@Sidoine Sidoine merged commit 10a6054 into Sidoine:master Jan 8, 2021
@johnnylam88 johnnylam88 deleted the fix/feral-druid branch January 8, 2021 08:40
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.

None yet

2 participants