aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorariel- <ariel-@users.noreply.github.com>2018-01-02 02:58:19 -0300
committerfunjoker <funjoker109@gmail.com>2021-05-06 07:06:27 +0200
commit87d5544f05a1963ec8bec09056d9bad60b5f697c (patch)
tree30ff5f30c529ad16bf08a4774f47fbe360894fb6
parent5ac40cf9d159a74ebb36d06821d4f895afc974c4 (diff)
Core/Scripts: Implemented Shifting Naaru Sliver
(cherry picked from commit a5d4f34c3158bbbd65436bd2bd1dd8a9fad1ff52)
-rw-r--r--sql/updates/world/master/2021_05_01_03_world_2018_01_02_03_world.sql3
-rw-r--r--src/server/scripts/Spells/spell_item.cpp42
2 files changed, 45 insertions, 0 deletions
diff --git a/sql/updates/world/master/2021_05_01_03_world_2018_01_02_03_world.sql b/sql/updates/world/master/2021_05_01_03_world_2018_01_02_03_world.sql
new file mode 100644
index 00000000000..7110f22eaf0
--- /dev/null
+++ b/sql/updates/world/master/2021_05_01_03_world_2018_01_02_03_world.sql
@@ -0,0 +1,3 @@
+DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_item_power_circle';
+INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
+(45043, 'spell_item_power_circle');
diff --git a/src/server/scripts/Spells/spell_item.cpp b/src/server/scripts/Spells/spell_item.cpp
index 654667762af..b430b514fac 100644
--- a/src/server/scripts/Spells/spell_item.cpp
+++ b/src/server/scripts/Spells/spell_item.cpp
@@ -1522,6 +1522,47 @@ class spell_item_piccolo_of_the_flaming_fire : public SpellScript
}
};
+enum PowerCircle
+{
+ SPELL_LIMITLESS_POWER = 45044
+};
+
+// 45043 - Power Circle (Shifting Naaru Sliver)
+class spell_item_power_circle : public AuraScript
+{
+ PrepareAuraScript(spell_item_power_circle);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_LIMITLESS_POWER });
+ }
+
+ bool CheckCaster(Unit* target)
+ {
+ return target->GetGUID() == GetCasterGUID();
+ }
+
+ void OnApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
+ {
+ GetTarget()->CastSpell(nullptr, SPELL_LIMITLESS_POWER, true);
+ if (Aura* buff = GetTarget()->GetAura(SPELL_LIMITLESS_POWER))
+ buff->SetDuration(GetDuration());
+ }
+
+ void OnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
+ {
+ GetTarget()->RemoveAurasDueToSpell(SPELL_LIMITLESS_POWER);
+ }
+
+ void Register() override
+ {
+ DoCheckAreaTarget += AuraCheckAreaTargetFn(spell_item_power_circle::CheckCaster);
+
+ AfterEffectApply += AuraEffectApplyFn(spell_item_power_circle::OnApply, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
+ AfterEffectRemove += AuraEffectRemoveFn(spell_item_power_circle::OnRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
+ }
+};
+
// http://www.wowhead.com/item=6657 Savory Deviate Delight
// 8213 Savory Deviate Delight
enum SavoryDeviateDelight
@@ -4120,6 +4161,7 @@ void AddSC_item_spell_scripts()
RegisterAuraScript(spell_item_persistent_shield);
RegisterAuraScript(spell_item_pet_healing);
RegisterSpellScript(spell_item_piccolo_of_the_flaming_fire);
+ RegisterAuraScript(spell_item_power_circle);
RegisterSpellScript(spell_item_savory_deviate_delight);
RegisterSpellScript(spell_item_scroll_of_recall);
RegisterAuraScript(spell_item_unsated_craving);