summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--data/sql/updates/pending_db_world/healing-trance-script.sql4
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp22
-rw-r--r--src/server/scripts/Spells/spell_item.cpp76
3 files changed, 60 insertions, 42 deletions
diff --git a/data/sql/updates/pending_db_world/healing-trance-script.sql b/data/sql/updates/pending_db_world/healing-trance-script.sql
new file mode 100644
index 0000000000..162e93a0ea
--- /dev/null
+++ b/data/sql/updates/pending_db_world/healing-trance-script.sql
@@ -0,0 +1,4 @@
+DELETE FROM `spell_script_names` WHERE `spell_id` IN (37705, 60510);
+INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
+(37705, 'spell_item_healing_trance'),
+(60510, 'spell_item_healing_trance');
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index addcf5b2b8..4a26367b53 100644
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -9289,28 +9289,6 @@ bool Unit::HandleProcTriggerSpell(Unit* victim, uint32 damage, AuraEffect* trigg
{
switch (auraSpellInfo->Id)
{
- // Soul Preserver
- case 60510:
- {
- switch (getClass())
- {
- case CLASS_DRUID:
- trigger_spell_id = 60512;
- break;
- case CLASS_PALADIN:
- trigger_spell_id = 60513;
- break;
- case CLASS_PRIEST:
- trigger_spell_id = 60514;
- break;
- case CLASS_SHAMAN:
- trigger_spell_id = 60515;
- break;
- }
-
- target = this;
- break;
- }
case 37657: // Lightning Capacitor
case 54841: // Thunder Capacitor
case 67712: // Item - Coliseum 25 Normal Caster Trinket
diff --git a/src/server/scripts/Spells/spell_item.cpp b/src/server/scripts/Spells/spell_item.cpp
index 823ad36d37..44d52f0e7d 100644
--- a/src/server/scripts/Spells/spell_item.cpp
+++ b/src/server/scripts/Spells/spell_item.cpp
@@ -1206,27 +1206,38 @@ class spell_item_direbrew_remote_aura : public AuraScript
}
};
-enum EyeOfGruul
+enum HealingTrance
{
- SPELL_DRUID_ITEM_HEALING_TRANCE = 37721,
- SPELL_PALADIN_ITEM_HEALING_TRANCE = 37723,
- SPELL_PRIEST_ITEM_HEALING_TRANCE = 37706,
- SPELL_SHAMAN_ITEM_HEALING_TRANCE = 37722
+ SPELL_HEALING_DISCOUNT = 37705,
+ SPELL_SOUL_PRESERVER = 60510,
+ SPELL_PRIEST_EYE_OF_GRUUL_HEALING_TRANCE = 37706,
+ SPELL_DRUID_EYE_OF_GRUUL_HEALING_TRANCE = 37721,
+ SPELL_SHAMAN_EYE_OF_GRUUL_HEALING_TRANCE = 37722,
+ SPELL_PALADIN_EYE_OF_GRUUL_HEALING_TRANCE = 37723,
+ SPELL_DRUID_SOUL_PRESERVER_HEALING_TRANCE = 60512,
+ SPELL_PALADIN_SOUL_PRESERVER_HEALING_TRANCE = 60513,
+ SPELL_PRIEST_SOUL_PRESERVER_HEALING_TRANCE = 60514,
+ SPELL_SHAMAN_SOUL_PRESERVER_HEALING_TRANCE = 60515,
};
// 37705 - Healing Discount
-class spell_item_eye_of_gruul_healing_discount : public AuraScript
+// 60510 - Soul Preserver
+class spell_item_healing_trance : public AuraScript
{
- PrepareAuraScript(spell_item_eye_of_gruul_healing_discount);
+ PrepareAuraScript(spell_item_healing_trance);
bool Validate(SpellInfo const* /*spellInfo*/) override
{
return ValidateSpellInfo(
{
- SPELL_DRUID_ITEM_HEALING_TRANCE,
- SPELL_PALADIN_ITEM_HEALING_TRANCE,
- SPELL_PRIEST_ITEM_HEALING_TRANCE,
- SPELL_SHAMAN_ITEM_HEALING_TRANCE
+ SPELL_PRIEST_EYE_OF_GRUUL_HEALING_TRANCE,
+ SPELL_DRUID_EYE_OF_GRUUL_HEALING_TRANCE,
+ SPELL_SHAMAN_EYE_OF_GRUUL_HEALING_TRANCE,
+ SPELL_PALADIN_EYE_OF_GRUUL_HEALING_TRANCE,
+ SPELL_DRUID_SOUL_PRESERVER_HEALING_TRANCE,
+ SPELL_PALADIN_SOUL_PRESERVER_HEALING_TRANCE,
+ SPELL_PRIEST_SOUL_PRESERVER_HEALING_TRANCE,
+ SPELL_SHAMAN_SOUL_PRESERVER_HEALING_TRANCE,
});
}
@@ -1235,32 +1246,57 @@ class spell_item_eye_of_gruul_healing_discount : public AuraScript
PreventDefaultAction();
if (Unit* unitTarget = GetTarget())
{
- uint32 spell_id = 0;
- switch (unitTarget->getClass())
+ uint32 const itemSpell = GetSpellInfo()->Id;
+ uint32 spellId = 0;
+
+ if (itemSpell == SPELL_HEALING_DISCOUNT)
+ {
+ switch (unitTarget->getClass())
+ {
+ case CLASS_DRUID:
+ spellId = SPELL_DRUID_EYE_OF_GRUUL_HEALING_TRANCE;
+ break;
+ case CLASS_PALADIN:
+ spellId = SPELL_PALADIN_EYE_OF_GRUUL_HEALING_TRANCE;
+ break;
+ case CLASS_PRIEST:
+ spellId = SPELL_PRIEST_EYE_OF_GRUUL_HEALING_TRANCE;
+ break;
+ case CLASS_SHAMAN:
+ spellId = SPELL_SHAMAN_EYE_OF_GRUUL_HEALING_TRANCE;
+ break;
+ default:
+ return; // ignore for non-healing classes
+ }
+ }
+ else if (itemSpell == SPELL_SOUL_PRESERVER)
{
+ switch (unitTarget->getClass())
+ {
case CLASS_DRUID:
- spell_id = SPELL_DRUID_ITEM_HEALING_TRANCE;
+ spellId = SPELL_DRUID_SOUL_PRESERVER_HEALING_TRANCE;
break;
case CLASS_PALADIN:
- spell_id = SPELL_PALADIN_ITEM_HEALING_TRANCE;
+ spellId = SPELL_PALADIN_SOUL_PRESERVER_HEALING_TRANCE;
break;
case CLASS_PRIEST:
- spell_id = SPELL_PRIEST_ITEM_HEALING_TRANCE;
+ spellId = SPELL_PRIEST_SOUL_PRESERVER_HEALING_TRANCE;
break;
case CLASS_SHAMAN:
- spell_id = SPELL_SHAMAN_ITEM_HEALING_TRANCE;
+ spellId = SPELL_SHAMAN_SOUL_PRESERVER_HEALING_TRANCE;
break;
default:
return; // ignore for non-healing classes
+ }
}
- unitTarget->CastSpell(unitTarget, spell_id, true, nullptr, aurEff);
+ unitTarget->CastSpell(unitTarget, spellId, true, nullptr, aurEff);
}
}
void Register() override
{
- OnEffectProc += AuraEffectProcFn(spell_item_eye_of_gruul_healing_discount::HandleProc, EFFECT_0, SPELL_AURA_PROC_TRIGGER_SPELL);
+ OnEffectProc += AuraEffectProcFn(spell_item_healing_trance::HandleProc, EFFECT_0, SPELL_AURA_PROC_TRIGGER_SPELL);
}
};
@@ -4292,7 +4328,7 @@ void AddSC_item_spell_scripts()
RegisterSpellScript(spell_item_summon_or_dismiss);
RegisterSpellScript(spell_item_draenic_pale_ale);
RegisterSpellAndAuraScriptPair(spell_item_direbrew_remote, spell_item_direbrew_remote_aura);
- RegisterSpellScript(spell_item_eye_of_gruul_healing_discount);
+ RegisterSpellScript(spell_item_healing_trance);
RegisterSpellScript(spell_item_summon_argent_knight);
RegisterSpellScript(spell_item_instant_statue);
// 23074 Arcanite Dragonling