aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/base/world_database.sql3
-rw-r--r--sql/scripts/world_scripts_full.sql1
-rw-r--r--sql/updates/world/2011_08_01_03_world_spell_misc.sql7
-rw-r--r--src/server/scripts/Spells/spell_generic.cpp57
4 files changed, 67 insertions, 1 deletions
diff --git a/sql/base/world_database.sql b/sql/base/world_database.sql
index 812dd8c6b99..75970291fe4 100644
--- a/sql/base/world_database.sql
+++ b/sql/base/world_database.sql
@@ -17299,7 +17299,8 @@ INSERT INTO `spell_dbc` (`Id`,`Dispel`,`Mechanic`,`Attributes`,`AttributesEx`,`A
(60937, 0, 0, 562036736, 32, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 101, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'Seaforium charges damaging wall achievement credit'),
(62791, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'XT-002 Heart Overload Trigger Spell'),
(65037, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'Nerf the Scrapbots Achievement Criteria Marker'),
-(65074, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 30, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, Freya Achievement spell - Criteria Marker);
+(65074, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 30, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, Freya Achievement spell - Criteria Marker),
+(18350, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'Soul Preserver trinket spell');
/*!40000 ALTER TABLE `spell_dbc` ENABLE KEYS */;
UNLOCK TABLES;
diff --git a/sql/scripts/world_scripts_full.sql b/sql/scripts/world_scripts_full.sql
index 0902944f312..e164fc19989 100644
--- a/sql/scripts/world_scripts_full.sql
+++ b/sql/scripts/world_scripts_full.sql
@@ -2001,6 +2001,7 @@ INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES
(66666, 'spell_gen_vehicle_scaling'),
(66667, 'spell_gen_vehicle_scaling'),
(66668, 'spell_gen_vehicle_scaling'),
+ (18350, 'spell_gen_soul_preserver'),
-- instances
-- Black Temple
( 41475, 'spell_boss_lady_malande_shield'),
diff --git a/sql/updates/world/2011_08_01_03_world_spell_misc.sql b/sql/updates/world/2011_08_01_03_world_spell_misc.sql
new file mode 100644
index 00000000000..b6bd71a9965
--- /dev/null
+++ b/sql/updates/world/2011_08_01_03_world_spell_misc.sql
@@ -0,0 +1,7 @@
+DELETE FROM `spell_dbc` WHERE `id`=18350;
+INSERT INTO `spell_dbc` (`id`,`Effect1`,`EffectImplicitTargetA1`,`Comment`) VALUES
+(18350,3,1,'Soul Preserver trinket spell');
+
+DELETE FROM `spell_script_names` WHERE `spell_id`=18350;
+INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES
+(18350,'spell_gen_soul_preserver'); \ No newline at end of file
diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp
index 48deb028625..0285699a621 100644
--- a/src/server/scripts/Spells/spell_generic.cpp
+++ b/src/server/scripts/Spells/spell_generic.cpp
@@ -1206,6 +1206,62 @@ class spell_gen_launch : public SpellScriptLoader
}
};
+class spell_gen_soul_preserver : public SpellScriptLoader
+{
+ enum Spells
+ {
+ 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);
+
+ 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:
@@ -1286,5 +1342,6 @@ 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();
}