diff options
-rw-r--r-- | sql/base/world_database.sql | 3 | ||||
-rw-r--r-- | sql/scripts/world_scripts_full.sql | 1 | ||||
-rw-r--r-- | sql/updates/world/2011_08_07_05_world_spell_misc.sql | 2 | ||||
-rwxr-xr-x | src/server/game/Entities/Unit/Unit.cpp | 38 | ||||
-rw-r--r-- | src/server/scripts/Spells/spell_generic.cpp | 65 |
5 files changed, 41 insertions, 68 deletions
diff --git a/sql/base/world_database.sql b/sql/base/world_database.sql index fd56579cab4..484651c6867 100644 --- a/sql/base/world_database.sql +++ b/sql/base/world_database.sql @@ -17300,8 +17300,7 @@ 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), -(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'); +(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); /*!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 e164fc19989..0902944f312 100644 --- a/sql/scripts/world_scripts_full.sql +++ b/sql/scripts/world_scripts_full.sql @@ -2001,7 +2001,6 @@ 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_07_05_world_spell_misc.sql b/sql/updates/world/2011_08_07_05_world_spell_misc.sql new file mode 100644 index 00000000000..1d26731309f --- /dev/null +++ b/sql/updates/world/2011_08_07_05_world_spell_misc.sql @@ -0,0 +1,2 @@ +DELETE FROM `spell_dbc` WHERE `id`=18350; +DELETE FROM `spell_script_names` WHERE `spell_id`=18350; 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(); } |