aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/scripts/world_scripts_full.sql1
-rw-r--r--sql/updates/world/2011_05_19_00_world_spell_script_names.sql3
-rw-r--r--src/server/scripts/Spells/spell_generic.cpp29
3 files changed, 33 insertions, 0 deletions
diff --git a/sql/scripts/world_scripts_full.sql b/sql/scripts/world_scripts_full.sql
index d0c266f1ba8..82b6cd76db9 100644
--- a/sql/scripts/world_scripts_full.sql
+++ b/sql/scripts/world_scripts_full.sql
@@ -1911,6 +1911,7 @@ INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES
( 57593, 'spell_generic_clone_weapon'),
( 52408, 'spell_gen_seaforium_blast'),
( 25281, 'spell_gen_turkey_marker'),
+(-55428, 'spell_gen_lifeblood'),
-- instances
-- Black Temple
( 41475, 'spell_boss_lady_malande_shield'),
diff --git a/sql/updates/world/2011_05_19_00_world_spell_script_names.sql b/sql/updates/world/2011_05_19_00_world_spell_script_names.sql
new file mode 100644
index 00000000000..b434d99d0f0
--- /dev/null
+++ b/sql/updates/world/2011_05_19_00_world_spell_script_names.sql
@@ -0,0 +1,3 @@
+DELETE FROM spell_script_names WHERE ScriptName = 'spell_gen_lifeblood';
+INSERT INTO spell_script_names (spell_id, ScriptName) VALUES
+(-55428, 'spell_gen_lifeblood');
diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp
index 3702d1a94ad..5424a2e59d6 100644
--- a/src/server/scripts/Spells/spell_generic.cpp
+++ b/src/server/scripts/Spells/spell_generic.cpp
@@ -1061,6 +1061,34 @@ class spell_gen_turkey_marker : public SpellScriptLoader
}
};
+class spell_gen_lifeblood : public SpellScriptLoader
+{
+ public:
+ spell_gen_lifeblood() : SpellScriptLoader("spell_gen_lifeblood") { }
+
+ class spell_gen_lifeblood_AuraScript : public AuraScript
+ {
+ PrepareAuraScript(spell_gen_lifeblood_AuraScript);
+
+ void HandleEffect(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/)
+ {
+ Unit * caster = GetCaster();
+
+ const_cast<AuraEffect *>(aurEff)->SetAmount(aurEff->GetAmount() + CalculatePctF(caster->GetMaxHealth(), 1.5f / aurEff->GetTotalTicks()));
+ }
+
+ void Register()
+ {
+ OnEffectApply += AuraEffectApplyFn(spell_gen_lifeblood_AuraScript::HandleEffect, EFFECT_0, SPELL_AURA_PERIODIC_HEAL, AURA_EFFECT_HANDLE_REAL);
+ }
+ };
+
+ AuraScript* GetAuraScript() const
+ {
+ return new spell_gen_lifeblood_AuraScript();
+ }
+};
+
void AddSC_generic_spell_scripts()
{
new spell_gen_absorb0_hitlimit1();
@@ -1085,4 +1113,5 @@ void AddSC_generic_spell_scripts()
new spell_generic_clone_weapon();
new spell_gen_seaforium_blast();
new spell_gen_turkey_marker();
+ new spell_gen_lifeblood();
}