aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/game/DataStores/GameTables.cpp8
-rw-r--r--src/server/game/DataStores/GameTables.h98
-rw-r--r--src/server/game/Entities/Player/Player.cpp42
-rw-r--r--src/server/game/Entities/Player/Player.h2
-rw-r--r--src/server/game/Entities/Unit/StatSystem.cpp30
-rw-r--r--src/server/game/Spells/Auras/SpellAuraDefines.h2
-rw-r--r--src/server/game/Spells/Auras/SpellAuraEffects.cpp30
-rw-r--r--src/server/game/Spells/Auras/SpellAuraEffects.h1
-rw-r--r--src/server/game/Spells/SpellInfo.cpp1
-rw-r--r--src/server/game/Spells/SpellMgr.cpp3
-rw-r--r--src/server/scripts/Spells/spell_priest.cpp52
11 files changed, 181 insertions, 88 deletions
diff --git a/src/server/game/DataStores/GameTables.cpp b/src/server/game/DataStores/GameTables.cpp
index d7bc4adb2cb..505f1c2242c 100644
--- a/src/server/game/DataStores/GameTables.cpp
+++ b/src/server/game/DataStores/GameTables.cpp
@@ -35,6 +35,10 @@ GameTable<GtCombatRatingsMultByILvl> sCombatRatingsMultByILvlGameTabl
GameTable<GtHpPerStaEntry> sHpPerStaGameTable;
GameTable<GtItemSocketCostPerLevelEntry> sItemSocketCostPerLevelGameTable;
GameTable<GtNpcManaCostScalerEntry> sNpcManaCostScalerGameTable;
+GameTable<GtOCTRegenHPEntry> sOCTRegenHPGameTable;
+GameTable<GtOCTRegenMPEntry> sOCTRegenMPGameTable;
+GameTable<GtRegenHPPerSptEntry> sRegenHPPerSptGameTable;
+GameTable<GtRegenMPPerSptEntry> sRegenMPPerSptGameTable;
GameTable<GtSpellScalingEntry> sSpellScalingGameTable;
GameTable<GtXpEntry> sXpGameTable;
@@ -121,6 +125,10 @@ void LoadGameTables(std::string const& dataPath)
LOAD_GT(sItemSocketCostPerLevelGameTable, "ItemSocketCostPerLevel.txt");
LOAD_GT(sHpPerStaGameTable, "HpPerSta.txt");
LOAD_GT(sNpcManaCostScalerGameTable, "NPCManaCostScaler.txt");
+ LOAD_GT(sOCTRegenHPGameTable, "OCTRegenHP.txt");
+ LOAD_GT(sOCTRegenMPGameTable, "OCTRegenMP.txt");
+ LOAD_GT(sRegenHPPerSptGameTable, "RegenHPPerSpt.txt");
+ LOAD_GT(sRegenMPPerSptGameTable, "RegenMPPerSpt.txt");
LOAD_GT(sSpellScalingGameTable, "SpellScaling.txt");
LOAD_GT(sXpGameTable, "xp.txt");
diff --git a/src/server/game/DataStores/GameTables.h b/src/server/game/DataStores/GameTables.h
index 32b5805ba45..ea0f5f043ed 100644
--- a/src/server/game/DataStores/GameTables.h
+++ b/src/server/game/DataStores/GameTables.h
@@ -121,6 +121,66 @@ struct GtNpcManaCostScalerEntry
float Scaler = 0.0f;
};
+struct GtOCTRegenHPEntry
+{
+ float Warrior = 0.0f;
+ float Paladin = 0.0f;
+ float Hunter = 0.0f;
+ float Rogue = 0.0f;
+ float Priest = 0.0f;
+ float DeathKnight = 0.0f;
+ float Shaman = 0.0f;
+ float Mage = 0.0f;
+ float Warlock = 0.0f;
+ float Monk = 0.0f;
+ float Druid = 0.0f;
+};
+
+struct GtOCTRegenMPEntry
+{
+ float Warrior = 0.0f;
+ float Paladin = 0.0f;
+ float Hunter = 0.0f;
+ float Rogue = 0.0f;
+ float Priest = 0.0f;
+ float DeathKnight = 0.0f;
+ float Shaman = 0.0f;
+ float Mage = 0.0f;
+ float Warlock = 0.0f;
+ float Monk = 0.0f;
+ float Druid = 0.0f;
+};
+
+struct GtRegenHPPerSptEntry
+{
+ float Warrior = 0.0f;
+ float Paladin = 0.0f;
+ float Hunter = 0.0f;
+ float Rogue = 0.0f;
+ float Priest = 0.0f;
+ float DeathKnight = 0.0f;
+ float Shaman = 0.0f;
+ float Mage = 0.0f;
+ float Warlock = 0.0f;
+ float Monk = 0.0f;
+ float Druid = 0.0f;
+};
+
+struct GtRegenMPPerSptEntry
+{
+ float Warrior = 0.0f;
+ float Paladin = 0.0f;
+ float Hunter = 0.0f;
+ float Rogue = 0.0f;
+ float Priest = 0.0f;
+ float DeathKnight = 0.0f;
+ float Shaman = 0.0f;
+ float Mage = 0.0f;
+ float Warlock = 0.0f;
+ float Monk = 0.0f;
+ float Druid = 0.0f;
+};
+
struct GtSpellScalingEntry
{
float Rogue = 0.0f;
@@ -190,6 +250,10 @@ TC_GAME_API extern GameTable<GtCombatRatingsMultByILvl> sCombatRatin
TC_GAME_API extern GameTable<GtHpPerStaEntry> sHpPerStaGameTable;
TC_GAME_API extern GameTable<GtItemSocketCostPerLevelEntry> sItemSocketCostPerLevelGameTable;
TC_GAME_API extern GameTable<GtNpcManaCostScalerEntry> sNpcManaCostScalerGameTable;
+TC_GAME_API extern GameTable<GtOCTRegenHPEntry> sOCTRegenHPGameTable;
+TC_GAME_API extern GameTable<GtOCTRegenMPEntry> sOCTRegenMPGameTable;
+TC_GAME_API extern GameTable<GtRegenHPPerSptEntry> sRegenHPPerSptGameTable;
+TC_GAME_API extern GameTable<GtRegenMPPerSptEntry> sRegenMPPerSptGameTable;
TC_GAME_API extern GameTable<GtSpellScalingEntry> sSpellScalingGameTable;
TC_GAME_API extern GameTable<GtXpEntry> sXpGameTable;
@@ -231,6 +295,40 @@ inline float GetGameTableColumnForClass(T const* row, int32 class_)
return 0.0f;
}
+template<class T>
+inline float GetRegenGameTableColumnForClass(T const* row, int32 class_)
+{
+ switch (class_)
+ {
+ case CLASS_WARRIOR:
+ return row->Warrior;
+ case CLASS_PALADIN:
+ return row->Paladin;
+ case CLASS_HUNTER:
+ return row->Hunter;
+ case CLASS_ROGUE:
+ return row->Rogue;
+ case CLASS_PRIEST:
+ return row->Priest;
+ case CLASS_DEATH_KNIGHT:
+ return row->DeathKnight;
+ case CLASS_SHAMAN:
+ return row->Shaman;
+ case CLASS_MAGE:
+ return row->Mage;
+ case CLASS_WARLOCK:
+ return row->Warlock;
+ case CLASS_MONK:
+ return row->Monk;
+ case CLASS_DRUID:
+ return row->Druid;
+ default:
+ break;
+ }
+
+ return 0.0f;
+}
+
inline float GetSpellScalingColumnForClass(GtSpellScalingEntry const* row, int32 class_)
{
switch (class_)
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 09d98ec22e4..f1a9831ab7b 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -1912,6 +1912,10 @@ void Player::RegenerateHealth()
return;
float HealthIncreaseRate = sWorld->getRate(RATE_HEALTH);
+
+ if (GetLevel() < 15)
+ HealthIncreaseRate = sWorld->getRate(RATE_HEALTH) * (2.066f - (GetLevel() * 0.066f));
+
float addValue = 0.0f;
// polymorphed case
@@ -1920,15 +1924,10 @@ void Player::RegenerateHealth()
// normal regen case (maybe partly in combat case)
else if (!IsInCombat() || HasAuraType(SPELL_AURA_MOD_REGEN_DURING_COMBAT))
{
- addValue = HealthIncreaseRate;
+ addValue = OCTRegenHPPerSpirit() * HealthIncreaseRate;
if (!IsInCombat())
{
- if (GetLevel() < 15)
- addValue = (0.20f * ((float)GetMaxHealth()) / GetLevel() * HealthIncreaseRate);
- else
- addValue = 0.015f * ((float)GetMaxHealth()) * HealthIncreaseRate;
-
addValue *= GetTotalAuraMultiplier(SPELL_AURA_MOD_HEALTH_REGEN_PERCENT);
addValue += GetTotalAuraModifier(SPELL_AURA_MOD_REGEN) * 0.4f;
@@ -5263,6 +5262,37 @@ inline float GetGameTableColumnForCombatRating(GtCombatRatingsEntry const* row,
return 1.0f;
}
+float Player::OCTRegenHPPerSpirit() const
+{
+ GtOCTRegenHPEntry const* baseGt = sOCTRegenHPGameTable.GetRow(GetLevel());
+ GtRegenHPPerSptEntry const* moreGt = sRegenHPPerSptGameTable.GetRow(GetLevel());
+ if (!baseGt || !moreGt)
+ return 0.0f;
+
+ float baseRatio = GetRegenGameTableColumnForClass(baseGt, GetClass());
+ float moreRatiob = GetRegenGameTableColumnForClass(moreGt, GetClass());
+
+ // Formula from PaperDollFrame script
+ float spirit = GetStat(STAT_SPIRIT);
+ float baseSpirit = spirit;
+ if (baseSpirit > 50)
+ baseSpirit = 50;
+ float moreSpirit = spirit - baseSpirit;
+ float regen = baseSpirit * baseRatio + moreSpirit * moreRatiob;
+ return regen;
+}
+
+float Player::OCTRegenMPPerSpirit() const
+{
+ GtRegenMPPerSptEntry const* gt = sRegenMPPerSptGameTable.GetRow(GetLevel());
+ if (!gt)
+ return 0.0f;
+
+ float ratio = GetRegenGameTableColumnForClass(gt, GetClass());
+ // Formula from PaperDollFrame script
+ return static_cast<float>(GetStat(STAT_SPIRIT)) * ratio;
+}
+
float Player::GetRatingMultiplier(CombatRating cr) const
{
GtCombatRatingsEntry const* Rating = sCombatRatingsGameTable.GetRow(GetLevel());
diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h
index 214c326d32f..b236a5b7df1 100644
--- a/src/server/game/Entities/Player/Player.h
+++ b/src/server/game/Entities/Player/Player.h
@@ -2026,6 +2026,8 @@ class TC_GAME_API Player : public Unit, public GridObject<Player>
void RecalculateRating(CombatRating cr) { ApplyRatingMod(cr, 0, true);}
void GetDodgeFromAgility(float &diminishing, float &nondiminishing) const;
+ float OCTRegenHPPerSpirit() const;
+ float OCTRegenMPPerSpirit() const;
float GetRatingMultiplier(CombatRating cr) const;
float GetRatingBonusValue(CombatRating cr) const;
diff --git a/src/server/game/Entities/Unit/StatSystem.cpp b/src/server/game/Entities/Unit/StatSystem.cpp
index 48a81505c26..fd5464cdddd 100644
--- a/src/server/game/Entities/Unit/StatSystem.cpp
+++ b/src/server/game/Entities/Unit/StatSystem.cpp
@@ -792,21 +792,29 @@ void Player::UpdateManaRegen()
if (manaIndex == MAX_POWERS)
return;
- // Get base of Mana Pool in sBaseMPGameTable
- uint32 basemana = 0;
- sObjectMgr->GetPlayerClassLevelInfo(GetClass(), GetLevel(), basemana);
- float base_regen = basemana / 100.f;
-
- base_regen += GetTotalAuraModifierByMiscValue(SPELL_AURA_MOD_POWER_REGEN, POWER_MANA);
+ float intellect = GetStat(STAT_INTELLECT);
+ // Mana regen from spirit and intellect
+ float power_regen = std::sqrt(intellect) * OCTRegenMPPerSpirit();
// Apply PCT bonus from SPELL_AURA_MOD_POWER_REGEN_PERCENT
- base_regen *= GetTotalAuraMultiplierByMiscValue(SPELL_AURA_MOD_POWER_REGEN_PERCENT, POWER_MANA);
-
+ power_regen *= GetTotalAuraMultiplierByMiscValue(SPELL_AURA_MOD_POWER_REGEN_PERCENT, POWER_MANA);
// Apply PCT bonus from SPELL_AURA_MOD_MANA_REGEN_PCT
- base_regen *= GetTotalAuraMultiplierByMiscValue(SPELL_AURA_MOD_MANA_REGEN_PCT, POWER_MANA);
+ power_regen *= GetTotalAuraMultiplierByMiscValue(SPELL_AURA_MOD_MANA_REGEN_PCT, POWER_MANA);
+
+ // Mana regen from SPELL_AURA_MOD_POWER_REGEN aura
+ float power_regen_mp5 = (GetTotalAuraModifierByMiscValue(SPELL_AURA_MOD_POWER_REGEN, POWER_MANA) + m_baseManaRegen) / 5.0f;
+
+ // Get bonus from SPELL_AURA_MOD_MANA_REGEN_FROM_STAT aura
+ for (AuraEffect const* aurEff : GetAuraEffectsByType(SPELL_AURA_MOD_MANA_REGEN_FROM_STAT))
+ power_regen_mp5 += GetStat(Stats(aurEff->GetMiscValue())) * aurEff->GetAmount() / 500.0f;
+
+ // Set regen rate in cast state apply only on spirit based regen
+ int32 modManaRegenInterrupt = GetTotalAuraModifier(SPELL_AURA_MOD_MANA_REGEN_INTERRUPT);
+ if (modManaRegenInterrupt > 100)
+ modManaRegenInterrupt = 100;
- SetUpdateFieldValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::PowerRegenFlatModifier, manaIndex), base_regen);
- SetUpdateFieldValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::PowerRegenInterruptedFlatModifier, manaIndex), base_regen);
+ SetUpdateFieldValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::PowerRegenFlatModifier, manaIndex), power_regen_mp5 + CalculatePct(power_regen, modManaRegenInterrupt));
+ SetUpdateFieldValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::PowerRegenInterruptedFlatModifier, manaIndex), power_regen_mp5 + power_regen);
}
void Player::UpdateAllRunesRegen()
diff --git a/src/server/game/Spells/Auras/SpellAuraDefines.h b/src/server/game/Spells/Auras/SpellAuraDefines.h
index 97aa5d5fd83..b0c7825d6bf 100644
--- a/src/server/game/Spells/Auras/SpellAuraDefines.h
+++ b/src/server/game/Spells/Auras/SpellAuraDefines.h
@@ -310,7 +310,7 @@ enum AuraType : uint32
SPELL_AURA_HASTE_SPELLS = 216,
SPELL_AURA_MOD_MELEE_HASTE_2 = 217,
SPELL_AURA_ADD_PCT_MODIFIER_BY_SPELL_LABEL = 218,
- SPELL_AURA_ADD_FLAT_MODIFIER_BY_SPELL_LABEL = 219,
+ SPELL_AURA_MOD_MANA_REGEN_FROM_STAT = 219,
SPELL_AURA_MOD_ABILITY_SCHOOL_MASK = 220, // NYI
SPELL_AURA_MOD_DETAUNT = 221,
SPELL_AURA_REMOVE_TRANSMOG_COST = 222,
diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp
index af36a0adfe2..d386b7a3c0f 100644
--- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp
+++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp
@@ -286,7 +286,7 @@ NonDefaultConstructible<pAuraEffectHandler> AuraEffectHandler[TOTAL_AURAS]=
&AuraEffect::HandleModCastingSpeed, //216 SPELL_AURA_HASTE_SPELLS
&AuraEffect::HandleModMeleeSpeedPct, //217 SPELL_AURA_MOD_MELEE_HASTE_2
&AuraEffect::HandleNoImmediateEffect, //218 SPELL_AURA_ADD_PCT_MODIFIER_BY_SPELL_LABEL implemented in AuraEffect::CalculateSpellMod()
- &AuraEffect::HandleNoImmediateEffect, //219 SPELL_AURA_ADD_FLAT_MODIFIER_BY_SPELL_LABEL implemented in AuraEffect::CalculateSpellMod()
+ &AuraEffect::HandleModManaRegen, //219 SPELL_AURA_MOD_MANA_REGEN_FROM_STAT
&AuraEffect::HandleNULL, //220 SPELL_AURA_MOD_ABILITY_SCHOOL_MASK
&AuraEffect::HandleModDetaunt, //221 SPELL_AURA_MOD_DETAUNT
&AuraEffect::HandleNoImmediateEffect, //222 SPELL_AURA_REMOVE_TRANSMOG_COST implemented in WorldSession::HandleTransmogrifyItems
@@ -899,20 +899,6 @@ void AuraEffect::CalculateSpellMod()
}
static_cast<SpellModifierByClassMask*>(m_spellmod)->value = GetAmount();
break;
- case SPELL_AURA_ADD_FLAT_MODIFIER_BY_SPELL_LABEL:
- if (!m_spellmod)
- {
- SpellFlatModifierByLabel* spellmod = new SpellFlatModifierByLabel(GetBase());
- spellmod->op = SpellModOp(GetMiscValue());
-
- spellmod->type = SPELLMOD_LABEL_FLAT;
- spellmod->spellId = GetId();
- spellmod->value.ModIndex = GetMiscValue();
- spellmod->value.LabelID = GetMiscValueB();
- m_spellmod = spellmod;
- }
- static_cast<SpellFlatModifierByLabel*>(m_spellmod)->value.ModifierValue = GetAmount();
- break;
case SPELL_AURA_ADD_PCT_MODIFIER_BY_SPELL_LABEL:
if (!m_spellmod)
{
@@ -3815,6 +3801,20 @@ void AuraEffect::HandleAuraModMaxPower(AuraApplication const* aurApp, uint8 mode
target->HandleStatFlatModifier(unitMod, TOTAL_VALUE, float(GetAmount()), apply);
}
+void AuraEffect::HandleModManaRegen(AuraApplication const* aurApp, uint8 mode, bool /*apply*/) const
+{
+ if (!(mode & (AURA_EFFECT_HANDLE_CHANGE_AMOUNT_MASK | AURA_EFFECT_HANDLE_STAT)))
+ return;
+
+ Unit* target = aurApp->GetTarget();
+
+ if (target->GetTypeId() != TYPEID_PLAYER)
+ return;
+
+ //Note: an increase in regen does NOT cause threat.
+ target->ToPlayer()->UpdateManaRegen();
+}
+
/********************************/
/*** HEAL & ENERGIZE ***/
/********************************/
diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.h b/src/server/game/Spells/Auras/SpellAuraEffects.h
index fc72fb89e6a..11d26f00731 100644
--- a/src/server/game/Spells/Auras/SpellAuraEffects.h
+++ b/src/server/game/Spells/Auras/SpellAuraEffects.h
@@ -248,6 +248,7 @@ class TC_GAME_API AuraEffect
void HandleOverrideAttackPowerBySpellPower(AuraApplication const* aurApp, uint8 mode, bool apply) const;
void HandleModVersatilityByPct(AuraApplication const* aurApp, uint8 mode, bool apply) const;
void HandleAuraModMaxPower(AuraApplication const* aurApp, uint8 mode, bool apply) const;
+ void HandleModManaRegen(AuraApplication const* aurApp, uint8 mode, bool apply) const;
// heal and energize
void HandleModPowerRegen(AuraApplication const* aurApp, uint8 mode, bool apply) const;
void HandleModPowerRegenPCT(AuraApplication const* aurApp, uint8 mode, bool apply) const;
diff --git a/src/server/game/Spells/SpellInfo.cpp b/src/server/game/Spells/SpellInfo.cpp
index 9276801cc6a..581578ebc10 100644
--- a/src/server/game/Spells/SpellInfo.cpp
+++ b/src/server/game/Spells/SpellInfo.cpp
@@ -4864,7 +4864,6 @@ bool _isPositiveEffectImpl(SpellInfo const* spellInfo, SpellEffectInfo const& ef
}
case SPELL_AURA_ADD_FLAT_MODIFIER: // mods
case SPELL_AURA_ADD_PCT_MODIFIER:
- case SPELL_AURA_ADD_FLAT_MODIFIER_BY_SPELL_LABEL:
case SPELL_AURA_ADD_PCT_MODIFIER_BY_SPELL_LABEL:
{
switch (SpellModOp(effect.MiscValue))
diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp
index bc92cac0b64..20ab87f8188 100644
--- a/src/server/game/Spells/SpellMgr.cpp
+++ b/src/server/game/Spells/SpellMgr.cpp
@@ -1607,7 +1607,7 @@ void SpellMgr::LoadSpellProcs()
continue;
if (spellEffectInfo.ApplyAuraName == SPELL_AURA_ADD_PCT_MODIFIER || spellEffectInfo.ApplyAuraName == SPELL_AURA_ADD_FLAT_MODIFIER
- || spellEffectInfo.ApplyAuraName == SPELL_AURA_ADD_PCT_MODIFIER_BY_SPELL_LABEL || spellEffectInfo.ApplyAuraName == SPELL_AURA_ADD_FLAT_MODIFIER_BY_SPELL_LABEL
+ || spellEffectInfo.ApplyAuraName == SPELL_AURA_ADD_PCT_MODIFIER_BY_SPELL_LABEL
|| spellEffectInfo.ApplyAuraName == SPELL_AURA_IGNORE_SPELL_COOLDOWN)
{
found = true;
@@ -2516,7 +2516,6 @@ void SpellMgr::LoadSpellInfoStore()
case SPELL_AURA_ADD_FLAT_MODIFIER:
case SPELL_AURA_ADD_PCT_MODIFIER:
case SPELL_AURA_ADD_PCT_MODIFIER_BY_SPELL_LABEL:
- case SPELL_AURA_ADD_FLAT_MODIFIER_BY_SPELL_LABEL:
ASSERT(effect->EffectMiscValue[0] < MAX_SPELLMOD, "MAX_SPELLMOD must be at least %d", effect->EffectMiscValue[0] + 1);
break;
default:
diff --git a/src/server/scripts/Spells/spell_priest.cpp b/src/server/scripts/Spells/spell_priest.cpp
index 883d92321c9..2e38dd5ebbb 100644
--- a/src/server/scripts/Spells/spell_priest.cpp
+++ b/src/server/scripts/Spells/spell_priest.cpp
@@ -271,57 +271,6 @@ struct areatrigger_pri_angelic_feather : AreaTriggerAI
}
};
-// 391387 - Answered Prayers
-class spell_pri_answered_prayers : public AuraScript
-{
- bool Validate(SpellInfo const* spellInfo) override
- {
- return ValidateSpellInfo({ SPELL_PRIEST_ANSWERED_PRAYERS, SPELL_PRIEST_APOTHEOSIS })
- && ValidateSpellEffect({ { spellInfo->Id, EFFECT_1 } });
- }
-
- void HandleOnProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo) const
- {
- Milliseconds extraDuration = 0ms;
- if (AuraEffect const* durationEffect = GetEffect(EFFECT_1))
- extraDuration = Seconds(durationEffect->GetAmount());
-
- Unit* target = eventInfo.GetActor();
-
- Aura* answeredPrayers = target->GetAura(SPELL_PRIEST_ANSWERED_PRAYERS);
-
- // Note: if caster has no aura, we must cast it first.
- if (!answeredPrayers)
- target->CastSpell(target, SPELL_PRIEST_ANSWERED_PRAYERS, TRIGGERED_IGNORE_CAST_IN_PROGRESS);
- else
- {
- // Note: there's no BaseValue dummy that we can use as reference, so we hardcode the increasing stack value.
- answeredPrayers->ModStackAmount(1);
-
- // Note: if current stacks match max. stacks, trigger Apotheosis.
- if (answeredPrayers->GetStackAmount() != aurEff->GetAmount())
- return;
-
- answeredPrayers->Remove();
-
- if (Aura* apotheosis = GetTarget()->GetAura(SPELL_PRIEST_APOTHEOSIS))
- {
- apotheosis->SetDuration(apotheosis->GetDuration() + extraDuration.count());
- apotheosis->SetMaxDuration(apotheosis->GetMaxDuration() + extraDuration.count());
- }
- else
- target->CastSpell(target, SPELL_PRIEST_APOTHEOSIS,
- CastSpellExtraArgs(TRIGGERED_FULL_MASK & ~TRIGGERED_CAST_DIRECTLY)
- .AddSpellMod(SPELLVALUE_DURATION, extraDuration.count()));
- }
- }
-
- void Register() override
- {
- OnEffectProc += AuraEffectProcFn(spell_pri_answered_prayers::HandleOnProc, EFFECT_0, SPELL_AURA_ADD_FLAT_MODIFIER_BY_SPELL_LABEL);
- }
-};
-
// 26169 - Oracle Healing Bonus
class spell_pri_aq_3p_bonus : public AuraScript
{
@@ -2793,7 +2742,6 @@ void AddSC_priest_spell_scripts()
RegisterSpellScript(spell_pri_angelic_feather_trigger);
RegisterAreaTriggerAI(areatrigger_pri_angelic_feather);
RegisterSpellScript(spell_pri_abyssal_reverie);
- RegisterSpellScript(spell_pri_answered_prayers);
RegisterSpellScript(spell_pri_aq_3p_bonus);
RegisterSpellScript(spell_pri_atonement);
RegisterSpellScript(spell_pri_atonement_effect);