mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-19 00:48:56 +01:00
Core/Spell: Fixed Shaman Masteries
This commit is contained in:
7
sql/updates/world/4.3.4/2017_11_25_00_world.sql
Normal file
7
sql/updates/world/4.3.4/2017_11_25_00_world.sql
Normal file
@@ -0,0 +1,7 @@
|
||||
DELETE FROM `spell_script_names` WHERE `ScriptName`= 'spell_sha_elemental_overload';
|
||||
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
|
||||
(77222, 'spell_sha_elemental_overload');
|
||||
|
||||
DELETE FROM `spell_proc` WHERE `SpellID`= 77222;
|
||||
INSERT INTO `spell_proc` (`SpellID`, `SpellFamilyName`, `SpellFamilyMask0`, `ProcFlags`, `SpellTypeMask`, `SpellPhaseMask`, `HitMask`, `AttributesMask`) VALUES
|
||||
(77222, 11, 0, 0x00010000, 1, 2, 0, 0x0000020);
|
||||
@@ -7375,6 +7375,17 @@ float Unit::SpellHealingPctDone(Unit* victim, SpellInfo const* spellProto) const
|
||||
}
|
||||
}
|
||||
|
||||
AuraEffectList const& mHealingFromTargetHealthPct = owner->GetAuraEffectsByType(SPELL_AURA_MOD_HEALING_FROM_TARGET_HEALTH);
|
||||
for (AuraEffectList::const_iterator i = mHealingFromTargetHealthPct.begin(); i != mHealingFromTargetHealthPct.end(); ++i)
|
||||
{
|
||||
if ((*i)->IsAffectingSpell(spellProto))
|
||||
{
|
||||
uint32 masteryBonus = (*i)->GetAmount();
|
||||
float healthPct = 100.0f - victim->GetHealthPct();
|
||||
AddPct(DoneTotalMod, CalculatePct(masteryBonus, healthPct));
|
||||
}
|
||||
}
|
||||
|
||||
return DoneTotalMod;
|
||||
}
|
||||
|
||||
|
||||
@@ -413,7 +413,7 @@ enum AuraType
|
||||
SPELL_AURA_351 = 351,
|
||||
SPELL_AURA_352 = 352,
|
||||
SPELL_AURA_MOD_CAMOUFLAGE = 353, // NYI
|
||||
SPELL_AURA_354 = 354, // Restoration Shaman mastery - mod healing based on target's health (less = more healing)
|
||||
SPELL_AURA_MOD_HEALING_FROM_TARGET_HEALTH = 354, // Restoration Shaman mastery - mod healing based on target's health (less = more healing)
|
||||
SPELL_AURA_355 = 355,
|
||||
SPELL_AURA_356 = 356, // Arcane Mage mastery - mod damage based on current mana
|
||||
SPELL_AURA_ENABLE_BOSS1_UNIT_FRAME = 357,
|
||||
|
||||
@@ -412,7 +412,7 @@ pAuraEffectHandler AuraEffectHandler[TOTAL_AURAS]=
|
||||
&AuraEffect::HandleNULL, //351 SPELL_AURA_351
|
||||
&AuraEffect::HandleNULL, //352 SPELL_AURA_352
|
||||
&AuraEffect::HandleNULL, //353 SPELL_AURA_MOD_CAMOUFLAGE
|
||||
&AuraEffect::HandleNULL, //354 SPELL_AURA_354
|
||||
&AuraEffect::HandleNoImmediateEffect, //354 SPELL_AURA_MOD_HEALING_FROM_TARGET_HEALTH implemented in Unit::SpellHealingPctDone
|
||||
&AuraEffect::HandleUnused, //355 unused (4.3.4)
|
||||
&AuraEffect::HandleNULL, //356 SPELL_AURA_356
|
||||
&AuraEffect::HandleNULL, //357 SPELL_AURA_ENABLE_BOSS1_UNIT_FRAME
|
||||
|
||||
@@ -34,6 +34,8 @@ enum ShamanSpells
|
||||
SPELL_SHAMAN_ANCESTRAL_AWAKENING = 52759,
|
||||
SPELL_SHAMAN_ANCESTRAL_AWAKENING_PROC = 52752,
|
||||
SPELL_SHAMAN_BIND_SIGHT = 6277,
|
||||
SPELL_SHAMAN_CHAIN_LIGHTNING = 421,
|
||||
SPELL_SHAMAN_CHAIN_LIGHTNING_TRIGGERED = 45297,
|
||||
SPELL_SHAMAN_EARTH_SHIELD_HEAL = 379,
|
||||
SPELL_SHAMAN_ELEMENTAL_MASTERY = 16166,
|
||||
SPELL_SHAMAN_EXHAUSTION = 57723,
|
||||
@@ -46,9 +48,12 @@ enum ShamanSpells
|
||||
SPELL_SHAMAN_GLYPH_OF_MANA_TIDE = 55441,
|
||||
SPELL_SHAMAN_GLYPH_OF_THUNDERSTORM = 62132,
|
||||
SPELL_SHAMAN_LAVA_BURST = 51505,
|
||||
SPELL_SHAMAN_LAVA_BURST_TRIGGERED = 77451,
|
||||
SPELL_SHAMAN_LAVA_FLOWS_R1 = 51480,
|
||||
SPELL_SHAMAN_LAVA_FLOWS_TRIGGERED_R1 = 65264,
|
||||
SPELL_SHAMAN_LAVA_SURGE = 77762,
|
||||
SPELL_SHAMAN_LIGHTNING_BOLT = 403,
|
||||
SPELL_SHAMAN_LIGHTNING_BOLT_TRIGGERED = 45284,
|
||||
SPELL_SHAMAN_ITEM_LIGHTNING_SHIELD = 23552,
|
||||
SPELL_SHAMAN_ITEM_LIGHTNING_SHIELD_DAMAGE = 27635,
|
||||
SPELL_SHAMAN_ITEM_MANA_SURGE = 23571,
|
||||
@@ -1272,6 +1277,65 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
// 77222 - Elemental Overload
|
||||
class spell_sha_elemental_overload : public SpellScriptLoader
|
||||
{
|
||||
public:
|
||||
spell_sha_elemental_overload() : SpellScriptLoader("spell_sha_elemental_overload") { }
|
||||
|
||||
class spell_sha_elemental_overload_AuraScript : public AuraScript
|
||||
{
|
||||
PrepareAuraScript(spell_sha_elemental_overload_AuraScript);
|
||||
|
||||
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||
{
|
||||
return ValidateSpellInfo({ SPELL_SHAMAN_LIGHTNING_BOLT, SPELL_SHAMAN_LIGHTNING_BOLT_TRIGGERED,
|
||||
SPELL_SHAMAN_CHAIN_LIGHTNING, SPELL_SHAMAN_CHAIN_LIGHTNING_TRIGGERED,
|
||||
SPELL_SHAMAN_LAVA_BURST, SPELL_SHAMAN_LAVA_BURST_TRIGGERED });
|
||||
}
|
||||
|
||||
bool CheckProc(ProcEventInfo& eventInfo)
|
||||
{
|
||||
return roll_chance_i(GetEffect(EFFECT_0)->GetAmount());
|
||||
}
|
||||
|
||||
void HandleEffectProc(AuraEffect const* /*aurEff*/, ProcEventInfo& eventInfo)
|
||||
{
|
||||
if (Unit* target = eventInfo.GetProcTarget())
|
||||
{
|
||||
if (Unit* caster = GetCaster())
|
||||
{
|
||||
switch (eventInfo.GetProcSpell()->GetSpellInfo()->Id)
|
||||
{
|
||||
case SPELL_SHAMAN_LIGHTNING_BOLT:
|
||||
caster->CastSpell(target, SPELL_SHAMAN_LIGHTNING_BOLT_TRIGGERED, true);
|
||||
break;
|
||||
case SPELL_SHAMAN_CHAIN_LIGHTNING:
|
||||
caster->CastSpell(target, SPELL_SHAMAN_CHAIN_LIGHTNING_TRIGGERED, true);
|
||||
break;
|
||||
case SPELL_SHAMAN_LAVA_BURST:
|
||||
caster->CastSpell(target, SPELL_SHAMAN_LAVA_BURST_TRIGGERED, true);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
DoCheckProc += AuraCheckProcFn(spell_sha_elemental_overload_AuraScript::CheckProc);
|
||||
OnEffectProc += AuraEffectProcFn(spell_sha_elemental_overload_AuraScript::HandleEffectProc, EFFECT_0, SPELL_AURA_DUMMY);
|
||||
}
|
||||
};
|
||||
|
||||
AuraScript* GetAuraScript() const override
|
||||
{
|
||||
return new spell_sha_elemental_overload_AuraScript();
|
||||
}
|
||||
};
|
||||
|
||||
void AddSC_shaman_spell_scripts()
|
||||
{
|
||||
new spell_sha_ancestral_awakening();
|
||||
@@ -1281,6 +1345,7 @@ void AddSC_shaman_spell_scripts()
|
||||
new spell_sha_earth_shield();
|
||||
new spell_sha_earthbind_totem();
|
||||
new spell_sha_earthen_power();
|
||||
new spell_sha_elemental_overload();
|
||||
new spell_sha_feedback();
|
||||
new spell_sha_fire_nova();
|
||||
new spell_sha_flame_shock();
|
||||
|
||||
Reference in New Issue
Block a user