diff options
| -rw-r--r-- | sql/updates/3947_world_spell_proc_event.sql | 3 | ||||
| -rw-r--r-- | sql/world_spell_full.sql | 1 | ||||
| -rw-r--r-- | src/game/SpellAuras.cpp | 2 | ||||
| -rw-r--r-- | src/game/SpellEffects.cpp | 10 | ||||
| -rw-r--r-- | src/game/Unit.cpp | 13 | ||||
| -rw-r--r-- | src/game/Unit.h | 5 |
6 files changed, 32 insertions, 2 deletions
diff --git a/sql/updates/3947_world_spell_proc_event.sql b/sql/updates/3947_world_spell_proc_event.sql new file mode 100644 index 00000000000..620e46603c5 --- /dev/null +++ b/sql/updates/3947_world_spell_proc_event.sql @@ -0,0 +1,3 @@ +DELETE FROM `spell_proc_event` WHERE `entry` IN (53397); +INSERT INTO `spell_proc_event` (`entry`, `SchoolMask`, `SpellFamilyName`, `SpellFamilyMask0`, `SpellFamilyMask1`, `SpellFamilyMask2`, `procFlags`, `procEx`, `ppmRate`, `CustomChance`, `Cooldown`) VALUES +(53397, 0x00, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0, 0, 0); -- Invigoration
\ No newline at end of file diff --git a/sql/world_spell_full.sql b/sql/world_spell_full.sql index 61456af0c4a..3635237091b 100644 --- a/sql/world_spell_full.sql +++ b/sql/world_spell_full.sql @@ -1380,6 +1380,7 @@ INSERT INTO `spell_proc_event` (`entry`, `SchoolMask`, `SpellFamilyName`, `Spell (53382, 0x00, 10, 0x00800000, 0x00020000, 0x00000000, 0x00000000, 0x00000002, 0, 0, 0), -- Righteous Vengeance (Rank 3) (53383, 0x00, 10, 0x00800000, 0x00020000, 0x00000000, 0x00000000, 0x00000002, 0, 0, 0), -- Righteous Vengeance (Rank 4) (53384, 0x00, 10, 0x00800000, 0x00020000, 0x00000000, 0x00000000, 0x00000002, 0, 0, 0), -- Righteous Vengeance (Rank 5) +(53397, 0x00, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0, 0, 0), -- Invigoration (53486, 0x00, 10, 0x00800000, 0x00028000, 0x00000000, 0x00000000, 0x00000002, 0, 0, 0), -- The Art of War (Rank 1) (53488, 0x00, 10, 0x00800000, 0x00028000, 0x00000000, 0x00000000, 0x00000002, 0, 0, 0), -- The Art of War (Rank 2) (53501, 0x00, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0, 0, 0), -- Sheath of Light (Rank 1) diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp index cbfebbb065c..475b99579ee 100644 --- a/src/game/SpellAuras.cpp +++ b/src/game/SpellAuras.cpp @@ -7232,7 +7232,7 @@ void AuraEffect::HandleReflectSpells( bool Apply, bool Real , bool /*changeAmoun if (Unit * caster = GetCaster()) { // Improved Spell Reflection - if (caster->GetDummyAura(59089) || caster->GetDummyAura(59088)) + if (caster->GetDummyAura(SPELLFAMILY_WARRIOR,1935)) { // aura remove - remove auras from all party members std::list<Unit*> PartyMembers; diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp index 1552747f65c..051ff8bb198 100644 --- a/src/game/SpellEffects.cpp +++ b/src/game/SpellEffects.cpp @@ -5141,6 +5141,16 @@ void Spell::EffectScriptEffect(uint32 effIndex) { switch(m_spellInfo->Id) { + // Invigoration + case 53412: + { + if (AuraEffect * aurEff = unitTarget->GetDummyAura(SPELLFAMILY_HUNTER, 3487)) + { + if (roll_chance_i(aurEff->GetAmount())) + unitTarget->CastSpell(unitTarget, 53398, true); + } + break; + } // Heart of the Pheonix case 55709: { diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index 2510f045c6e..ab63bb42a0d 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -13039,6 +13039,19 @@ AuraEffect* Unit::GetDummyAura( uint32 spell_id ) const return NULL; } +AuraEffect* Unit::GetDummyAura(SpellFamilyNames name, uint32 iconId) const +{ + Unit::AuraEffectList const& mDummy = GetAurasByType(SPELL_AURA_DUMMY); + for(Unit::AuraEffectList::const_iterator itr = mDummy.begin(); itr != mDummy.end(); ++itr) + { + SpellEntry const * spell = (*itr)->GetSpellProto(); + if (spell->SpellIconID == iconId && spell->SpellFamilyName == name + && !spell->SpellFamilyFlags) + return *itr; + } + return NULL; +} + bool Unit::IsUnderLastManaUseEffect() const { return getMSTimeDiff(m_lastManaUse,getMSTime()) < 5000; diff --git a/src/game/Unit.h b/src/game/Unit.h index a9efdffcb9b..7c5bad7c94d 100644 --- a/src/game/Unit.h +++ b/src/game/Unit.h @@ -36,6 +36,8 @@ #include "DBCStructure.h" #include <list> +enum SpellFamilyNames; + #define WORLD_TRIGGER 12999 enum SpellInterruptFlags @@ -1563,6 +1565,8 @@ class TRINITY_DLL_SPEC Unit : public WorldObject bool HasAura(Aura * aur) const; bool HasAuraType(AuraType auraType) const; bool HasAuraTypeWithMiscvalue(AuraType auratype, uint32 miscvalue) const; + AuraEffect* GetDummyAura(uint32 spell_id) const; + AuraEffect* GetDummyAura(SpellFamilyNames name, uint32 iconId) const; uint32 GetDiseasesByCaster(uint64 casterGUID) const; uint32 GetDoTsByCaster(uint64 casterGUID) const; @@ -1581,7 +1585,6 @@ class TRINITY_DLL_SPEC Unit : public WorldObject int32 GetMaxPositiveAuraModifierByMiscValue(AuraType auratype, int32 misc_value) const; int32 GetMaxNegativeAuraModifierByMiscValue(AuraType auratype, int32 misc_value) const; - AuraEffect* GetDummyAura(uint32 spell_id) const; uint32 GetInterruptMask() const { return m_interruptMask; } void AddInterruptMask(uint32 mask) { m_interruptMask |= mask; } void UpdateInterruptMask(); |
