aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rwxr-xr-xsrc/server/game/Entities/Unit/Unit.cpp38
-rw-r--r--src/server/scripts/Spells/spell_generic.cpp65
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();
}