diff options
| author | Traesh <traesh@farahlon.com> | 2022-04-14 23:31:16 +0200 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2022-04-16 12:15:37 +0200 |
| commit | 87723e32e24f03ac1d062e33edcbe935e4e59421 (patch) | |
| tree | 9c7c655929ee19dd827c6ee48eee6c7438592e6e /src/server/game/Spells | |
| parent | c4ef231e2a25234099391f574942f6490d400f15 (diff) | |
Core/Battlegrounds: Implement mercenary system
Diffstat (limited to 'src/server/game/Spells')
| -rw-r--r-- | src/server/game/Spells/Auras/SpellAuraDefines.h | 6 | ||||
| -rw-r--r-- | src/server/game/Spells/Auras/SpellAuraEffects.cpp | 13 | ||||
| -rw-r--r-- | src/server/game/Spells/Auras/SpellAuraEffects.h | 1 | ||||
| -rw-r--r-- | src/server/game/Spells/SpellMgr.cpp | 17 |
4 files changed, 33 insertions, 4 deletions
diff --git a/src/server/game/Spells/Auras/SpellAuraDefines.h b/src/server/game/Spells/Auras/SpellAuraDefines.h index 90c3f3ebc45..7ec70366e36 100644 --- a/src/server/game/Spells/Auras/SpellAuraDefines.h +++ b/src/server/game/Spells/Auras/SpellAuraDefines.h @@ -580,9 +580,9 @@ enum AuraType : uint32 SPELL_AURA_486 = 486, SPELL_AURA_COSMETIC_MOUNTED = 487, SPELL_AURA_488 = 488, - SPELL_AURA_MOD_ALTERNATIVE_DEFAULT_LANGUAGE = 489, - SPELL_AURA_490 = 490, - SPELL_AURA_491 = 491, + SPELL_AURA_MOD_ALTERNATIVE_DEFAULT_LANGUAGE = 489, // NYI + SPELL_AURA_SWITCH_TEAM = 490, + SPELL_AURA_491 = 491, // NYI SPELL_AURA_492 = 492, SPELL_AURA_493 = 493, // 1 spell, 267116 - Animal Companion (modifies Call Pet) SPELL_AURA_SET_POWER_POINT_CHARGE = 494, // NYI diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp index 51bcda8d306..c0e88613e1c 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp +++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp @@ -556,7 +556,7 @@ NonDefaultConstructible<pAuraEffectHandler> AuraEffectHandler[TOTAL_AURAS]= &AuraEffect::HandleCosmeticMounted, //487 SPELL_AURA_COSMETIC_MOUNTED &AuraEffect::HandleNULL, //488 &AuraEffect::HandleNULL, //489 SPELL_AURA_MOD_ALTERNATIVE_DEFAULT_LANGUAGE - &AuraEffect::HandleNULL, //490 + &AuraEffect::HandleSwitchTeam, //490 SPELL_AURA_SWITCH_TEAM &AuraEffect::HandleNULL, //491 &AuraEffect::HandleNULL, //492 &AuraEffect::HandleNULL, //493 @@ -6011,6 +6011,17 @@ void AuraEffect::HandleLinkedSummon(AuraApplication const* aurApp, uint8 mode, b } } +void AuraEffect::HandleSwitchTeam(AuraApplication const* aurApp, uint8 mode, bool apply) const +{ + if (!(mode & AURA_EFFECT_HANDLE_REAL)) + return; + + Unit* target = aurApp->GetTarget(); + + if (Player* player = target->ToPlayer()) + player->SwitchToOppositeTeam(apply); +} + void AuraEffect::HandleSetFFAPvP(AuraApplication const* aurApp, uint8 mode, bool /*apply*/) const { if (!(mode & AURA_EFFECT_HANDLE_REAL)) diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.h b/src/server/game/Spells/Auras/SpellAuraEffects.h index 8ed3ef13e41..0ba6283c94b 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.h +++ b/src/server/game/Spells/Auras/SpellAuraEffects.h @@ -317,6 +317,7 @@ class TC_GAME_API AuraEffect void HandlePlayScene(AuraApplication const* aurApp, uint8 mode, bool apply) const; void HandleCreateAreaTrigger(AuraApplication const* aurApp, uint8 mode, bool apply) const; void HandleLinkedSummon(AuraApplication const* aurApp, uint8 mode, bool apply) const; + void HandleSwitchTeam(AuraApplication const* aurApp, uint8 mode, bool apply) const; void HandleSetFFAPvP(AuraApplication const* aurApp, uint8 mode, bool apply) const; void HandleModOverrideZonePVPType(AuraApplication const* aurApp, uint8 mode, bool apply) const; void HandleBattlegroundPlayerPosition(AuraApplication const* aurApp, uint8 mode, bool apply) const; diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp index 55fd950d129..c6d34d035ec 100644 --- a/src/server/game/Spells/SpellMgr.cpp +++ b/src/server/game/Spells/SpellMgr.cpp @@ -4658,6 +4658,23 @@ void SpellMgr::LoadSpellInfoCorrections() spellInfo->Attributes |= SPELL_ATTR0_UNAFFECTED_BY_INVULNERABILITY; }); + // Horde / Alliance switch (BG mercenary system) + ApplySpellFix({ 195838, 195843 }, [](SpellInfo* spellInfo) + { + ApplySpellEffectFix(spellInfo, EFFECT_0, [](SpellEffectInfo* spellEffectInfo) + { + spellEffectInfo->Effect = SPELL_EFFECT_APPLY_AURA; + }); + ApplySpellEffectFix(spellInfo, EFFECT_1, [](SpellEffectInfo* spellEffectInfo) + { + spellEffectInfo->Effect = SPELL_EFFECT_APPLY_AURA; + }); + ApplySpellEffectFix(spellInfo, EFFECT_2, [](SpellEffectInfo* spellEffectInfo) + { + spellEffectInfo->Effect = SPELL_EFFECT_APPLY_AURA; + }); + }); + for (SpellInfo const& s : mSpellInfoMap) { SpellInfo* spellInfo = &const_cast<SpellInfo&>(s); |
