mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-19 17:05:44 +01:00
Core/Spells:
* fixed Seal of Truth procs * added damage formular for Judgement when casted with Seal of Truth * fixed Judgemenets of the Bold passive
This commit is contained in:
16
sql/updates/world/custom/custom_2018_07_14_00_world.sql
Normal file
16
sql/updates/world/custom/custom_2018_07_14_00_world.sql
Normal file
@@ -0,0 +1,16 @@
|
||||
DELETE FROM `spell_script_names` WHERE `ScriptName` IN
|
||||
('spell_pal_seal_of_truth',
|
||||
'spell_pal_judgements_of_the_wise',
|
||||
'spell_pal_judgements');
|
||||
|
||||
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
|
||||
(31801, 'spell_pal_seal_of_truth'),
|
||||
(31878, 'spell_pal_judgements'),
|
||||
(89901, 'spell_pal_judgements');
|
||||
|
||||
DELETE FROM `spell_proc` WHERE `SpellId` IN (31801, 89901);
|
||||
INSERT INTO `spell_proc` (`SpellId`, `SpellFamilyName`, `SpellFamilyMask0`, `SpellFamilyMask1`, `SpellFamilyMask2`, `ProcFlags`, `SpellTypeMask`, `SpellPhaseMask`, `HitMask`, `AttributesMask`, `Cooldown`, `Charges`, `Chance`) VALUES
|
||||
(31801, 0, 0, 0, 0, 0, 1, 2, 0, 32 | 64, 0, 0, 0),
|
||||
(89901, 10, 0x00800000, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0);
|
||||
|
||||
UPDATE `spell_bonus_data` SET `dot_bonus`= 0, `ap_dot_bonus`= 0, `comments`= 'Paladin - Censure' WHERE `entry`= 31803;
|
||||
@@ -31,7 +31,7 @@
|
||||
|
||||
enum PaladinSpells
|
||||
{
|
||||
SPELL_PALADIN_AVENGERS_SHIELD = 31935,
|
||||
SPELL_PALADIN_AVENGERS_SHIELD = 31935,
|
||||
SPELL_PALADIN_AURA_MASTERY_IMMUNE = 64364,
|
||||
SPELL_PALADIN_BEACON_OF_LIGHT = 53563,
|
||||
SPELL_PALADIN_BEACON_OF_LIGHT_HEAL = 53652,
|
||||
@@ -39,6 +39,7 @@ enum PaladinSpells
|
||||
SPELL_PALADIN_BLESSING_OF_LOWER_CITY_PALADIN = 37879,
|
||||
SPELL_PALADIN_BLESSING_OF_LOWER_CITY_PRIEST = 37880,
|
||||
SPELL_PALADIN_BLESSING_OF_LOWER_CITY_SHAMAN = 37881,
|
||||
SPELL_PALADIN_CENSURE = 31803,
|
||||
SPELL_PALADIN_CONCENTRACTION_AURA = 19746,
|
||||
SPELL_PALADIN_CONSECRATION_TRIGGERED = 81297,
|
||||
SPELL_PALADIN_CRUSADER_STRIKE = 35395,
|
||||
@@ -63,7 +64,10 @@ enum PaladinSpells
|
||||
SPELL_PALADIN_IMPROVED_DEVOTION_AURA = 63514,
|
||||
SPELL_PALADIN_ITEM_HEALING_TRANCE = 37706,
|
||||
SPELL_PALADIN_JUDGEMENT_DAMAGE = 54158,
|
||||
SPELL_PALADIN_JUDGEMENTS_OF_THE_BOLD = 89906,
|
||||
SPELL_PALADIN_JUDGEMENTS_OF_THE_WISE_PASSIVE = 31878,
|
||||
SPELL_PALADIN_JUDGEMENTS_OF_THE_WISE = 31930,
|
||||
SPELL_PALADIN_JUDGEEMENT_OF_TRUTH = 31804,
|
||||
SPELL_PALADIN_RIGHTEOUS_DEFENSE_TAUNT = 31790,
|
||||
SPELL_PALADIN_SANCTIFIED_RETRIBUTION_AURA = 63531,
|
||||
SPELL_PALADIN_SANCTIFIED_RETRIBUTION_R1 = 31869,
|
||||
@@ -71,6 +75,8 @@ enum PaladinSpells
|
||||
SPELL_PALADIN_SANCTIFIED_WRATH_TALENT_R1 = 53375,
|
||||
SPELL_PALADIN_SEAL_OF_RIGHTEOUSNESS = 20154,
|
||||
SPELL_PALADIN_SEAL_OF_RIGHTEOUSNESS_DAMAGE = 25742,
|
||||
SPELL_PALADIN_SEAL_OF_TRUTH = 31801,
|
||||
SPELL_PALADIN_SEAL_OF_TRUTH_DAMAGE = 42463,
|
||||
SPELL_PALADIN_SWIFT_RETRIBUTION_R1 = 53379,
|
||||
SPELL_PALADIN_TEMPLARS_VERDICT = 85256
|
||||
};
|
||||
@@ -894,7 +900,8 @@ class spell_pal_judgement : public SpellScriptLoader
|
||||
return ValidateSpellInfo(
|
||||
{
|
||||
SPELL_PALADIN_JUDGEMENT_DAMAGE,
|
||||
SPELL_PALADIN_SEAL_OF_RIGHTEOUSNESS
|
||||
SPELL_PALADIN_SEAL_OF_RIGHTEOUSNESS,
|
||||
SPELL_PALADIN_SEAL_OF_TRUTH,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -915,15 +922,19 @@ class spell_pal_judgement : public SpellScriptLoader
|
||||
for (Unit::AuraEffectList::const_iterator i = auras.begin(); i != auras.end(); ++i)
|
||||
{
|
||||
if ((*i)->GetSpellInfo()->GetSpellSpecific() == SPELL_SPECIFIC_SEAL && (*i)->GetEffIndex() == EFFECT_2)
|
||||
{
|
||||
if (sSpellMgr->GetSpellInfo((*i)->GetAmount()))
|
||||
{
|
||||
spellId = (*i)->GetAmount();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (caster->HasAura(SPELL_PALADIN_SEAL_OF_RIGHTEOUSNESS))
|
||||
bp = 1 + int32(ap * 0.2f + 0.32f * holy);
|
||||
else if (caster->HasAura(SPELL_PALADIN_SEAL_OF_TRUTH))
|
||||
bp = 1 + int32(ap * 0.142f + 0.223f * holy);
|
||||
else
|
||||
bp = 1 + int32(ap * 0.16f + 0.25f * holy);
|
||||
|
||||
@@ -1403,44 +1414,43 @@ class spell_pal_hand_of_light : public SpellScriptLoader
|
||||
};
|
||||
|
||||
// 31878 - Judgements of the Wise (Passive)
|
||||
class spell_pal_judgements_of_the_wise : public SpellScriptLoader
|
||||
// 89901 - Judgements of the Bold (Passive)
|
||||
class spell_pal_judgements : public AuraScript
|
||||
{
|
||||
public:
|
||||
spell_pal_judgements_of_the_wise() : SpellScriptLoader("spell_pal_judgements_of_the_wise") { }
|
||||
PrepareAuraScript(spell_pal_judgements);
|
||||
|
||||
class spell_pal_judgements_of_the_wise_AuraScript : public AuraScript
|
||||
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||
{
|
||||
return ValidateSpellInfo(
|
||||
{
|
||||
SPELL_PALADIN_JUDGEMENTS_OF_THE_WISE,
|
||||
SPELL_PALADIN_JUDGEMENTS_OF_THE_WISE_PASSIVE,
|
||||
SPELL_PALADIN_JUDGEMENTS_OF_THE_BOLD
|
||||
});
|
||||
}
|
||||
|
||||
void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
|
||||
{
|
||||
PreventDefaultAction();
|
||||
uint32 spellId = GetSpellInfo()->Id == SPELL_PALADIN_JUDGEMENTS_OF_THE_WISE_PASSIVE ?
|
||||
SPELL_PALADIN_JUDGEMENTS_OF_THE_WISE : SPELL_PALADIN_JUDGEMENTS_OF_THE_BOLD;
|
||||
|
||||
Unit* actor = eventInfo.GetActor();
|
||||
|
||||
if (SpellInfo const* spell = sSpellMgr->GetSpellInfo(spellId))
|
||||
{
|
||||
PrepareAuraScript(spell_pal_judgements_of_the_wise_AuraScript);
|
||||
int32 bp = 0;
|
||||
if (uint32 mana = actor->GetCreateMana())
|
||||
bp = CalculatePct(CalculatePct(mana, spell->Effects[EFFECT_0].BasePoints), spell->GetMaxTicks());
|
||||
|
||||
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||
{
|
||||
return ValidateSpellInfo({ SPELL_PALADIN_JUDGEMENTS_OF_THE_WISE });
|
||||
}
|
||||
|
||||
void HandleProc(AuraEffect const* aurEff, ProcEventInfo& /*eventInfo*/)
|
||||
{
|
||||
PreventDefaultAction();
|
||||
if (Unit* target = GetTarget())
|
||||
if (SpellInfo const* spell = sSpellMgr->GetSpellInfo(SPELL_PALADIN_JUDGEMENTS_OF_THE_WISE))
|
||||
{
|
||||
int32 bp = 0;
|
||||
if (uint32 mana = target->GetCreateMana())
|
||||
bp = CalculatePct(CalculatePct(mana, spell->Effects[EFFECT_0].BasePoints), spell->GetMaxTicks());
|
||||
|
||||
target->CastCustomSpell(target, SPELL_PALADIN_JUDGEMENTS_OF_THE_WISE, &bp, nullptr, nullptr, true, nullptr, aurEff);
|
||||
}
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnEffectProc += AuraEffectProcFn(spell_pal_judgements_of_the_wise_AuraScript::HandleProc, EFFECT_0, SPELL_AURA_DUMMY);
|
||||
}
|
||||
};
|
||||
|
||||
AuraScript* GetAuraScript() const override
|
||||
{
|
||||
return new spell_pal_judgements_of_the_wise_AuraScript();
|
||||
actor->CastCustomSpell(actor, spellId, &bp, nullptr, nullptr, true, nullptr, aurEff);
|
||||
}
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnEffectProc += AuraEffectProcFn(spell_pal_judgements::HandleProc, EFFECT_0, SPELL_AURA_DUMMY);
|
||||
}
|
||||
};
|
||||
|
||||
// 879 - Exorcism
|
||||
@@ -1496,6 +1506,47 @@ class spell_pal_exorcism : public SpellScriptLoader
|
||||
}
|
||||
};
|
||||
|
||||
class spell_pal_seal_of_truth : public AuraScript
|
||||
{
|
||||
PrepareAuraScript(spell_pal_seal_of_truth);
|
||||
|
||||
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||
{
|
||||
return ValidateSpellInfo(
|
||||
{
|
||||
SPELL_PALADIN_CENSURE,
|
||||
SPELL_PALADIN_SEAL_OF_TRUTH_DAMAGE,
|
||||
});
|
||||
}
|
||||
|
||||
void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
|
||||
{
|
||||
PreventDefaultAction();
|
||||
Unit* actor = eventInfo.GetActor();
|
||||
Unit* target = eventInfo.GetProcTarget();
|
||||
|
||||
if (Aura* aura = target->GetAura(SPELL_PALADIN_CENSURE, actor->GetGUID()))
|
||||
if (aura->GetStackAmount() == 5)
|
||||
actor->CastSpell(target, SPELL_PALADIN_SEAL_OF_TRUTH_DAMAGE, true, nullptr, aurEff);
|
||||
|
||||
float ap = eventInfo.GetActor()->GetTotalAttackPowerValue(BASE_ATTACK) * 0.0270f;
|
||||
int32 holy = eventInfo.GetActor()->SpellBaseDamageBonusDone(SPELL_SCHOOL_MASK_HOLY);
|
||||
holy += eventInfo.GetProcTarget()->SpellBaseDamageBonusTaken(SPELL_SCHOOL_MASK_HOLY);
|
||||
holy *= 0.01f;
|
||||
|
||||
if (ap || holy)
|
||||
{
|
||||
int32 damage = int32(holy + ap);
|
||||
actor->CastCustomSpell(target, SPELL_PALADIN_CENSURE, &damage, nullptr, nullptr, true, nullptr, aurEff);
|
||||
}
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnEffectProc += AuraEffectProcFn(spell_pal_seal_of_truth::HandleProc, EFFECT_0, SPELL_AURA_DUMMY);
|
||||
}
|
||||
};
|
||||
|
||||
void AddSC_paladin_spell_scripts()
|
||||
{
|
||||
//new spell_pal_ardent_defender();
|
||||
@@ -1521,7 +1572,7 @@ void AddSC_paladin_spell_scripts()
|
||||
new spell_pal_improved_aura_effect("spell_pal_sanctified_retribution_effect");
|
||||
new spell_pal_item_healing_discount();
|
||||
new spell_pal_judgement();
|
||||
new spell_pal_judgements_of_the_wise();
|
||||
RegisterAuraScript(spell_pal_judgements);
|
||||
new spell_pal_lay_on_hands();
|
||||
new spell_pal_light_s_beacon();
|
||||
new spell_pal_righteous_defense();
|
||||
@@ -1529,4 +1580,5 @@ void AddSC_paladin_spell_scripts()
|
||||
new spell_pal_shield_of_the_righteous();
|
||||
new spell_pal_templar_s_verdict();
|
||||
new spell_pal_seal_of_righteousness();
|
||||
RegisterAuraScript(spell_pal_seal_of_truth);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user