void addPassiveHealing(ActionDistribution dist, TreeStats stats) { dist.AddPassive((int)TreePassive.HealingTrinkets, stats.Healed * stats.DirectHealMultiplier * getCritMultiplier(stats, 0, 0)); if (InsectSwarm) dist.AddActionOnCooldown((int)TreeAction.InsectSwarm); }
void addSelfHealing(ActionDistribution dist, ContinuousAction[] actions, ComputedSpell[] spells, double weight) { dist.AddPassive((int)TreePassive.Perserverance, PerseveranceHPS * weight); dist.AddPassive((int)TreePassive.NaturesWard, actions[(int)TreeAction.RaidRejuvenation].EPS * actions[(int)TreeAction.RaidRejuvenation].Time / spells[(int)TreeSpell.Rejuvenation].Duration * NaturesWardUptime * weight); }
void addLifebloomRefresh(ActionDistribution dist, ContinuousAction[] actions, ComputedSpell spell, TreeComputedData data, bool automatic, bool rejuvenationUp) { if (!automatic) dist.AddActionOnCooldown((int)TreeAction.ReLifebloom); dist.AddPassive((int)TreePassive.RollingLifebloom, (rejuvenationUp ? spell.TankAction.Periodic : spell.RaidAction.Periodic) * 3 * opts.TankLifebloomEH / spell.Duration, -data.LifebloomMPSGain); dist.AddPassiveTPS((int)TreePassive.RollingLifebloom, spell.TPS); }