diff options
Diffstat (limited to 'src')
-rwxr-xr-x | src/server/game/Entities/Unit/Unit.cpp | 38 | ||||
-rw-r--r-- | src/server/scripts/Spells/spell_generic.cpp | 65 |
2 files changed, 38 insertions, 65 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index f1f552ef045..e14fd4e81ed 100755 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -8470,6 +8470,27 @@ bool Unit::HandleProcTriggerSpell(Unit* victim, uint32 damage, AuraEffect* trigg target = victim; break; } + // Soul Preserver Trinket + 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; + } default: // Illumination if (auraSpellInfo->SpellIconID == 241) @@ -8538,6 +8559,23 @@ bool Unit::HandleProcTriggerSpell(Unit* victim, uint32 damage, AuraEffect* trigg target = this; break; } + case 30881: // Nature's Guardian Rank 1 + case 30883: // Nature's Guardian Rank 2 + case 30884: // Nature's Guardian Rank 3 + case 30885: // Nature's Guardian Rank 4 + case 30886: // Nature's Guardian Rank 5 + { + if (GetHealthPct() < 30) + { + basepoints0 = int32(auraSpellInfo->Effects[EFFECT_0].CalcValue() * GetMaxHealth() / 100.0f); + target = this; + trigger_spell_id = 31616; + // TODO: Threat part + } + else + return false; + break; + } default: { // Lightning Shield (overwrite non existing triggered spell call in spell.dbc diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp index a0f83997d30..48deb028625 100644 --- a/src/server/scripts/Spells/spell_generic.cpp +++ b/src/server/scripts/Spells/spell_generic.cpp @@ -1206,70 +1206,6 @@ class spell_gen_launch : public SpellScriptLoader } }; -class spell_gen_soul_preserver : public SpellScriptLoader -{ - enum Spells - { - SOUL_PRESERVER = 60510, - HEALING_TRANCE_DRUID = 60512, - HEALING_TRANCE_PALADIN = 60513, - HEALING_TRANCE_PRIEST = 60514, - HEALING_TRANCE_SHAMAN = 60515, - }; - - public: - spell_gen_soul_preserver() : SpellScriptLoader("spell_gen_soul_preserver") { } - - class spell_gen_soul_preserver_SpellScript : public SpellScript - { - PrepareSpellScript(spell_gen_soul_preserver_SpellScript); - - bool Load() - { - // 18350 is a common placeholder for trigered spells - // this script only applies to 60510 - return GetTriggeringSpell()->Id == SOUL_PRESERVER; - } - - void HandleScript(SpellEffIndex /*effIndex*/) - { - uint32 triggeredSpell = 0; - Player* caster = GetCaster()->ToPlayer(); - if (!caster) - return; - - switch (caster->getClass()) - { - case CLASS_DRUID: - triggeredSpell = HEALING_TRANCE_DRUID; - break; - case CLASS_PALADIN: - triggeredSpell = HEALING_TRANCE_PALADIN; - break; - case CLASS_PRIEST: - triggeredSpell = HEALING_TRANCE_PRIEST; - break; - case CLASS_SHAMAN: - triggeredSpell = HEALING_TRANCE_SHAMAN; - break; - } - - if (triggeredSpell) - caster->CastSpell(caster, triggeredSpell, true); - } - - void Register() - { - OnEffect += SpellEffectFn(spell_gen_soul_preserver_SpellScript::HandleScript, EFFECT_0, SPELL_EFFECT_DUMMY); - } - }; - - SpellScript* GetSpellScript() const - { - return new spell_gen_soul_preserver_SpellScript(); - } -}; - class spell_gen_vehicle_scaling : public SpellScriptLoader { public: @@ -1350,6 +1286,5 @@ void AddSC_generic_spell_scripts() new spell_gen_magic_rooster(); new spell_gen_allow_cast_from_item_only(); new spell_gen_launch(); - new spell_gen_soul_preserver(); new spell_gen_vehicle_scaling(); } |