enthh / FeralSnapshots

World of Warcraft Feral Druid bleed and DoT snapshot tracker. Usable by WeakAuras, Plater and other addons.
GNU Lesser General Public License v3.0
1 stars 2 forks source link

FeralSnapshots

This World of Warcraft AddOn tracks the talents, buffs and damage modifiers applied for Rake, Rip, Thrash and Lunar Inspiration Moonfire. These damage modifiers are then displayed from WeakAuras, Plater and other addons.

Feral Druid is the only class where damage over time abilities "snapshot". The buffs apply for the full duration of the debuff, even after they have expired. Deciding when to replace a weaker snapshot is what makes Feral so much fun to play.

![logo](https://raw.githubusercontent.com/enthh/FeralSnapshots/main/icon.jpg "FeralSnapshots Logo")

Features

Feral Snapshot Name Plate Indicators

Enabling the FeralSnapshots NamePlates addon, snapshot strength will show on Blizzard NamePlates.

NamePlate Example

Each bleed that can snapshot shows indicators on the current and next snapshots based on the player's current buffs. Use this to decide to overwrite a bleed with a stronger or weaker version.

Indicators

The shape and color of the indicator compares the current snapshot to what would be applied if the bleed is overwritten.

Indicator Has Snapshot Would apply snapshot Power Action
None Equal Gain snapshotting buff (Tiger's Fury, Shadowmeld, Bloodtalons)
Yellow X X Equal (buffed) Reapply in pandemic window
Green reversed X Gain Reapply soon
Red X Loss Gain snapshotting buff or wait for expiration

The lower indicator is for Tiger's Fury snapshots which applies to all Rake, Rip, Thrash and Moonfire with Lunar Inspiration.

Upper Indicators

The upper indicator is for bleed specific snapshots like Stealth, Bloodtalons and Clear Casting with Moment of Clarity.

Indicator Buffs Strength
Rake Stealth Prowl, Sudden Ambush (Talented), Shadowmeld (Racial) 160%
Rip Bloodtalons Bloodtalons (Talented) 125%
Thrash Clear Casting Clear Casting (Moment of Clarity) 115%

Other Examples

ExamplePack

ExamplePlater

Usage

The global FeralSnapshots table provides functions that return a damage modifier table by buff class.

When buffs are active, the damage modifiers will reflect the power of each buff by spell. For example for rake, with tigersFury and a stealth spell active.

-- Snapshot examples with: Tiger's Fury, Sudden Ambush, and Bloodtalons auras

{ -- Rake
    tigersFury = 1.15,
    bloodtalons = 1,
    momentOfClarity = 1,
    stealth = 1.6,
    total = 1.84,
}

{ -- Rip
    tigersFury = 1.15,
    bloodtalons = 1.25,
    momentOfClarity = 1,
    stealth = 1,
    total = 1.4375,
}

API

The API functions return damage modifier tables for the spell per unit.

-- Next damage modifiers that would snapshot on next application based on
-- current buffs and talents.
--
-- Modifiers are >= 1
--
-- Returns nil if the spell will not snapshot.
FeralSnapshots.Next(spellId)
FeralSnapshots.NextRake()
FeralSnapshots.NextRip()
FeralSnapshots.NextThrash()
FeralSnapshots.NextMoonfire()

-- Current snapshot damage modifier applied to the unit.
--
-- Modifiers are >= 1
--
-- Returns nil if the spell is not applied.
-- Returns nil if the spell will not snapshot.
FeralSnapshots.Current(GUID, spellId)
FeralSnapshots.CurrentRake(GUID)
FeralSnapshots.CurrentRip(GUID)
FeralSnapshots.CurrentThrash(GUID)
FeralSnapshots.CurrentMoonfire(GUID)

-- Relative damage modifiers to the applied snapshot.
--
-- Stronger damage modifiers are > 1
-- Weaker damage modifiers are < 1
--
-- Returns the next damage modifiers if the spell is not applied.
-- Returns nil if the spell will not snapshot.
FeralSnapshots.Relative(GUID, spellId)
FeralSnapshots.RelativeRake(GUID)
FeralSnapshots.RelativeRip(GUID)
FeralSnapshots.RelativeThrash(GUID)
FeralSnapshots.RelativeMoonfire(GUID)

Spell IDs cast in Cat Form that snapshot:

{
    rake = 155722,     -- DoT portion
    rip = 1079,        -- DoT
    thrash = 405233,   -- DoT portion
    moonfire = 155625, -- lunar inspiration DoT portion
}

Usage - WeakAuras

Add a Custom Status Trigger to your aura on events UNIT_AURA:player:target PLAYER_TARGET_CHANGED that exposes the relative damage percentage with dynamic stacks info:

ExampleTrigger

Use conditions to.

ExampleConditions

Alternatives / Inspiration / Credits

FAQ

Where did this project come from?

This project came from asking "What is the minimum information needed to be an amazing Feral Druid?".

Deciding when to cast a bleed is the most dynamic aspect of Feral gameplay. I wanted to aid that decision in any addon, like WeakAuras, Plater or other AddOns, without custom scripts in one addon depending on scripts in another.

Why AddOn and not WeakAura?

How is this different to MoonBunnie's weakaura?

Similar:

Different: