aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDoctorKraft <david.serdobbel.bizness@gmail.com>2017-02-07 21:17:47 +0100
committerShauren <shauren.trinity@gmail.com>2017-02-07 21:17:47 +0100
commita692ebdcb0d7870d3433f01163fc8f737a7b12d1 (patch)
tree5245cba8224f3ff12c2910e28e8b76add05ed361
parent941f7d2bbefcefc3dc7f1bfebbe8f211e0db5b10 (diff)
Core/Spell: Conjure Refreshment (#19035)
-rw-r--r--sql/updates/world/master/9999_99_99_99_world.sql3
-rw-r--r--src/server/scripts/Spells/spell_mage.cpp127
2 files changed, 22 insertions, 108 deletions
diff --git a/sql/updates/world/master/9999_99_99_99_world.sql b/sql/updates/world/master/9999_99_99_99_world.sql
new file mode 100644
index 00000000000..4d6dc5692ad
--- /dev/null
+++ b/sql/updates/world/master/9999_99_99_99_world.sql
@@ -0,0 +1,3 @@
+DELETE FROM `spell_script_names` WHERE `ScriptName` IN('spell_mage_conjure_refreshment','spell_mage_conjure_refreshment_table');
+INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
+(190336, 'spell_mage_conjure_refreshment');
diff --git a/src/server/scripts/Spells/spell_mage.cpp b/src/server/scripts/Spells/spell_mage.cpp
index c70cd708b23..781e894e5b1 100644
--- a/src/server/scripts/Spells/spell_mage.cpp
+++ b/src/server/scripts/Spells/spell_mage.cpp
@@ -38,6 +38,8 @@ enum MageSpells
SPELL_MAGE_BLAZING_SPEED = 31643,
SPELL_MAGE_BURNOUT = 29077,
SPELL_MAGE_COLD_SNAP = 11958,
+ SPELL_MAGE_CONJURE_REFRESHMENT = 116136,
+ SPELL_MAGE_CONJURE_REFRESHMENT_TABLE = 167145,
SPELL_MAGE_FOCUS_MAGIC_PROC = 54648,
SPELL_MAGE_FROST_NOVA = 122,
SPELL_MAGE_FROST_WARDING_R1 = 11189,
@@ -301,136 +303,46 @@ class spell_mage_cone_of_cold : public SpellScriptLoader
}
};
-// 42955 Conjure Refreshment
-/// Updated 6.0.3
-struct ConjureRefreshmentData
-{
- uint32 minLevel;
- uint32 maxLevel;
- uint32 spellId;
-};
-
-uint8 const MAX_CONJURE_REFRESHMENT_SPELLS = 9;
-ConjureRefreshmentData const _conjureData[MAX_CONJURE_REFRESHMENT_SPELLS] =
-{
- { 33, 43, 92739 },
- { 44, 53, 92799 },
- { 54, 63, 92802 },
- { 64, 73, 92805 },
- { 74, 79, 74625 },
- { 80, 84, 92822 },
- { 85, 89, 92727 },
- { 90, 99, 116130 },
- { 100, 100, 167143 }
-};
-
-// 42955 - Conjure Refreshment
+// 190336 - Conjure Refreshment
class spell_mage_conjure_refreshment : public SpellScriptLoader
{
- public:
- spell_mage_conjure_refreshment() : SpellScriptLoader("spell_mage_conjure_refreshment") { }
-
- class spell_mage_conjure_refreshment_SpellScript : public SpellScript
- {
- PrepareSpellScript(spell_mage_conjure_refreshment_SpellScript);
-
- bool Validate(SpellInfo const* /*spellInfo*/) override
- {
- for (uint8 i = 0; i < MAX_CONJURE_REFRESHMENT_SPELLS; ++i)
- if (!sSpellMgr->GetSpellInfo(_conjureData[i].spellId))
- return false;
- return true;
- }
-
- bool Load() override
- {
- if (GetCaster()->GetTypeId() != TYPEID_PLAYER)
- return false;
- return true;
- }
-
- void HandleDummy(SpellEffIndex /*effIndex*/)
- {
- uint8 level = GetHitUnit()->getLevel();
- for (uint8 i = 0; i < MAX_CONJURE_REFRESHMENT_SPELLS; ++i)
- {
- ConjureRefreshmentData const& spellData = _conjureData[i];
- if (level < spellData.minLevel || level > spellData.maxLevel)
- continue;
- GetHitUnit()->CastSpell(GetHitUnit(), spellData.spellId);
- break;
- }
- }
-
- void Register() override
- {
- OnEffectHitTarget += SpellEffectFn(spell_mage_conjure_refreshment_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
- }
- };
-
- SpellScript* GetSpellScript() const override
- {
- return new spell_mage_conjure_refreshment_SpellScript();
- }
-};
-
-uint8 const MAX_CONJURE_REFRESHMENT_TABLE_SPELLS = 5;
-ConjureRefreshmentData const _conjureTableData[MAX_CONJURE_REFRESHMENT_TABLE_SPELLS] =
-{
- { 73, 79, 120056 },
- { 80, 84, 120055 },
- { 85, 89, 120054 },
- { 90, 99, 120053 },
- { 100, 100, 167145 }
-};
-
-// 43987 - Conjure Refreshment Table
-class spell_mage_conjure_refreshment_table : public SpellScriptLoader
-{
public:
- spell_mage_conjure_refreshment_table() : SpellScriptLoader("spell_mage_conjure_refreshment_table") { }
+ spell_mage_conjure_refreshment() : SpellScriptLoader("spell_mage_conjure_refreshment") { }
- class spell_mage_conjure_refreshment_table_SpellScript : public SpellScript
+ class spell_mage_conjure_refreshment_SpellScript : public SpellScript
{
- PrepareSpellScript(spell_mage_conjure_refreshment_table_SpellScript);
+ PrepareSpellScript(spell_mage_conjure_refreshment_SpellScript);
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- for (uint8 i = 0; i < MAX_CONJURE_REFRESHMENT_TABLE_SPELLS; ++i)
- if (!sSpellMgr->GetSpellInfo(_conjureTableData[i].spellId))
- return false;
- return true;
- }
-
- bool Load() override
- {
- if (GetCaster()->GetTypeId() != TYPEID_PLAYER)
- return false;
- return true;
+ return ValidateSpellInfo
+ ({
+ SPELL_MAGE_CONJURE_REFRESHMENT,
+ SPELL_MAGE_CONJURE_REFRESHMENT_TABLE
+ });
}
void HandleDummy(SpellEffIndex /*effIndex*/)
{
- uint8 level = GetHitUnit()->getLevel();
- for (uint8 i = 0; i < MAX_CONJURE_REFRESHMENT_TABLE_SPELLS; ++i)
+ if (Player* caster = GetCaster()->ToPlayer())
{
- ConjureRefreshmentData const& spellData = _conjureTableData[i];
- if (level < spellData.minLevel || level > spellData.maxLevel)
- continue;
- GetHitUnit()->CastSpell(GetHitUnit(), spellData.spellId);
- break;
+ Group* group = caster->GetGroup();
+ if (group)
+ caster->CastSpell(caster, SPELL_MAGE_CONJURE_REFRESHMENT_TABLE, true);
+ else
+ caster->CastSpell(caster, SPELL_MAGE_CONJURE_REFRESHMENT, true);
}
}
void Register() override
{
- OnEffectHitTarget += SpellEffectFn(spell_mage_conjure_refreshment_table_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
+ OnEffectHitTarget += SpellEffectFn(spell_mage_conjure_refreshment_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
}
};
SpellScript* GetSpellScript() const override
{
- return new spell_mage_conjure_refreshment_table_SpellScript();
+ return new spell_mage_conjure_refreshment_SpellScript();
}
};
@@ -1450,7 +1362,6 @@ void AddSC_mage_spell_scripts()
new spell_mage_cold_snap();
new spell_mage_cone_of_cold();
new spell_mage_conjure_refreshment();
- new spell_mage_conjure_refreshment_table();
new spell_mage_fire_frost_ward();
new spell_mage_focus_magic();
new spell_mage_frostbolt();