mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-25 03:12:09 +01:00
Scripts/Spells: Implement Dark Reprimand (#28925)
Co-authored-by: Shauren <shauren.trinity@gmail.com>
This commit is contained in:
19
sql/updates/world/master/2023_05_07_05_world.sql
Normal file
19
sql/updates/world/master/2023_05_07_05_world.sql
Normal file
@@ -0,0 +1,19 @@
|
||||
DELETE FROM `spell_script_names` WHERE `spell_id`=400169;
|
||||
DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_pri_dark_reprimand';
|
||||
INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES
|
||||
(400169,'spell_pri_dark_reprimand');
|
||||
|
||||
DELETE FROM `spell_script_names` WHERE `ScriptName` IN ('spell_pri_penance_channeled','spell_pri_penance_or_dark_reprimand_channeled');
|
||||
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
|
||||
(47758,'spell_pri_penance_or_dark_reprimand_channeled'),
|
||||
(47757,'spell_pri_penance_or_dark_reprimand_channeled'),
|
||||
(373129,'spell_pri_penance_or_dark_reprimand_channeled'),
|
||||
(400171,'spell_pri_penance_or_dark_reprimand_channeled');
|
||||
|
||||
DELETE FROM `spell_script_names` WHERE `spell_id`=373130 AND `ScriptName`='spell_pri_power_of_the_dark_side_damage_bonus';
|
||||
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
|
||||
(373130,'spell_pri_power_of_the_dark_side_damage_bonus');
|
||||
|
||||
DELETE FROM `spell_script_names` WHERE `spell_id`=400187 AND `ScriptName`='spell_pri_power_of_the_dark_side_healing_bonus';
|
||||
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
|
||||
(400187,'spell_pri_power_of_the_dark_side_healing_bonus');
|
||||
@@ -49,6 +49,11 @@ enum PriestSpells
|
||||
SPELL_PRIEST_BLESSED_HEALING = 70772,
|
||||
SPELL_PRIEST_BODY_AND_SOUL = 64129,
|
||||
SPELL_PRIEST_BODY_AND_SOUL_SPEED = 65081,
|
||||
SPELL_PRIEST_DARK_REPRIMAND = 400169,
|
||||
SPELL_PRIEST_DARK_REPRIMAND_CHANNEL_DAMAGE = 373129,
|
||||
SPELL_PRIEST_DARK_REPRIMAND_CHANNEL_HEALING = 400171,
|
||||
SPELL_PRIEST_DARK_REPRIMAND_DAMAGE = 373130,
|
||||
SPELL_PRIEST_DARK_REPRIMAND_HEALING = 400187,
|
||||
SPELL_PRIEST_DIVINE_BLESSING = 40440,
|
||||
SPELL_PRIEST_DIVINE_STAR_HOLY = 110744,
|
||||
SPELL_PRIEST_DIVINE_STAR_SHADOW = 122121,
|
||||
@@ -749,22 +754,25 @@ class spell_pri_mind_bomb : public AuraScript
|
||||
};
|
||||
|
||||
// 47540 - Penance
|
||||
// 400169 - Dark Reprimand
|
||||
class spell_pri_penance : public SpellScript
|
||||
{
|
||||
PrepareSpellScript(spell_pri_penance);
|
||||
|
||||
public:
|
||||
spell_pri_penance(uint32 damageSpellId, uint32 healingSpellId) : _damageSpellId(damageSpellId), _healingSpellId(healingSpellId)
|
||||
{
|
||||
}
|
||||
|
||||
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||
{
|
||||
return ValidateSpellInfo
|
||||
({
|
||||
SPELL_PRIEST_PENANCE_CHANNEL_DAMAGE,
|
||||
SPELL_PRIEST_PENANCE_CHANNEL_HEALING
|
||||
});
|
||||
return ValidateSpellInfo({ _damageSpellId, _healingSpellId });
|
||||
}
|
||||
|
||||
SpellCastResult CheckCast()
|
||||
{
|
||||
Unit* caster = GetCaster();
|
||||
|
||||
if (Unit* target = GetExplTargetUnit())
|
||||
{
|
||||
if (!caster->IsFriendlyTo(target))
|
||||
@@ -787,9 +795,9 @@ class spell_pri_penance : public SpellScript
|
||||
if (Unit* target = GetHitUnit())
|
||||
{
|
||||
if (caster->IsFriendlyTo(target))
|
||||
caster->CastSpell(target, SPELL_PRIEST_PENANCE_CHANNEL_HEALING, CastSpellExtraArgs().SetTriggeringSpell(GetSpell()));
|
||||
caster->CastSpell(target, _healingSpellId, CastSpellExtraArgs().SetTriggeringSpell(GetSpell()));
|
||||
else
|
||||
caster->CastSpell(target, SPELL_PRIEST_PENANCE_CHANNEL_DAMAGE, CastSpellExtraArgs().SetTriggeringSpell(GetSpell()));
|
||||
caster->CastSpell(target, _damageSpellId, CastSpellExtraArgs().SetTriggeringSpell(GetSpell()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -798,12 +806,17 @@ class spell_pri_penance : public SpellScript
|
||||
OnCheckCast += SpellCheckCastFn(spell_pri_penance::CheckCast);
|
||||
OnEffectHitTarget += SpellEffectFn(spell_pri_penance::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
|
||||
}
|
||||
|
||||
private:
|
||||
uint32 _damageSpellId;
|
||||
uint32 _healingSpellId;
|
||||
};
|
||||
|
||||
// 47758 - Penance (Channel Damage), 47757 - Penance (Channel Healing)
|
||||
class spell_pri_penance_channeled : public AuraScript
|
||||
// 373129 - Dark Reprimand (Channel Damage), 400171 - Dark Reprimand (Channel Healing)
|
||||
class spell_pri_penance_or_dark_reprimand_channeled : public AuraScript
|
||||
{
|
||||
PrepareAuraScript(spell_pri_penance_channeled);
|
||||
PrepareAuraScript(spell_pri_penance_or_dark_reprimand_channeled);
|
||||
|
||||
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||
{
|
||||
@@ -818,7 +831,7 @@ class spell_pri_penance_channeled : public AuraScript
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnEffectRemove += AuraEffectRemoveFn(spell_pri_penance_channeled::HandleOnRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
|
||||
OnEffectRemove += AuraEffectRemoveFn(spell_pri_penance_or_dark_reprimand_channeled::HandleOnRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -852,6 +865,7 @@ class spell_pri_power_of_the_dark_side : public AuraScript
|
||||
};
|
||||
|
||||
// 47666 - Penance (Damage)
|
||||
// 373130 - Dark Reprimand (Damage)
|
||||
class spell_pri_power_of_the_dark_side_damage_bonus : public SpellScript
|
||||
{
|
||||
PrepareSpellScript(spell_pri_power_of_the_dark_side_damage_bonus);
|
||||
@@ -882,6 +896,7 @@ class spell_pri_power_of_the_dark_side_damage_bonus : public SpellScript
|
||||
};
|
||||
|
||||
// 47750 - Penance (Healing)
|
||||
// 400187 - Dark Reprimand (Healing)
|
||||
class spell_pri_power_of_the_dark_side_healing_bonus : public SpellScript
|
||||
{
|
||||
PrepareSpellScript(spell_pri_power_of_the_dark_side_healing_bonus);
|
||||
@@ -1680,8 +1695,9 @@ void AddSC_priest_spell_scripts()
|
||||
RegisterSpellScript(spell_pri_leap_of_faith_effect_trigger);
|
||||
RegisterSpellScript(spell_pri_levitate);
|
||||
RegisterSpellScript(spell_pri_mind_bomb);
|
||||
RegisterSpellScript(spell_pri_penance);
|
||||
RegisterSpellScript(spell_pri_penance_channeled);
|
||||
RegisterSpellScriptWithArgs(spell_pri_penance, "spell_pri_penance", SPELL_PRIEST_PENANCE_CHANNEL_DAMAGE, SPELL_PRIEST_PENANCE_CHANNEL_HEALING);
|
||||
RegisterSpellScriptWithArgs(spell_pri_penance, "spell_pri_dark_reprimand", SPELL_PRIEST_DARK_REPRIMAND_CHANNEL_DAMAGE, SPELL_PRIEST_DARK_REPRIMAND_CHANNEL_HEALING);
|
||||
RegisterSpellScript(spell_pri_penance_or_dark_reprimand_channeled);
|
||||
RegisterSpellScript(spell_pri_power_of_the_dark_side);
|
||||
RegisterSpellScript(spell_pri_power_of_the_dark_side_damage_bonus);
|
||||
RegisterSpellScript(spell_pri_power_of_the_dark_side_healing_bonus);
|
||||
|
||||
Reference in New Issue
Block a user