From 716cad0ec38accba222c5c40d90b752469a91f4a Mon Sep 17 00:00:00 2001 From: hondacrx Date: Wed, 7 Sep 2022 15:26:20 -0400 Subject: [PATCH] Core/Players: Properly mark all class/specialization/talent/pvp talent learned spells as dependent Port From (https://github.com/TrinityCore/TrinityCore/commit/d7f5c19e1a1b969bf34fcf5cb38f54c1472583ea) --- Source/Game/Entities/Player/Player.Spells.cs | 2 +- Source/Game/Entities/Player/Player.Talents.cs | 36 ++++++++++++------- Source/Game/Entities/Player/Player.cs | 2 -- 3 files changed, 25 insertions(+), 15 deletions(-) diff --git a/Source/Game/Entities/Player/Player.Spells.cs b/Source/Game/Entities/Player/Player.Spells.cs index 32ce11eb9..ee1060a31 100644 --- a/Source/Game/Entities/Player/Player.Spells.cs +++ b/Source/Game/Entities/Player/Player.Spells.cs @@ -307,7 +307,7 @@ namespace Game.Entities if (spellInfo == null || spellInfo.SpellLevel > GetLevel()) continue; - LearnSpell(specSpell.SpellID, false); + LearnSpell(specSpell.SpellID, true); if (specSpell.OverridesSpellID != 0) AddOverrideSpell(specSpell.OverridesSpellID, specSpell.SpellID); } diff --git a/Source/Game/Entities/Player/Player.Talents.cs b/Source/Game/Entities/Player/Player.Talents.cs index faa73eefe..f879f651d 100644 --- a/Source/Game/Entities/Player/Player.Talents.cs +++ b/Source/Game/Entities/Player/Player.Talents.cs @@ -86,14 +86,18 @@ namespace Game.Entities return false; } - if (spec == GetActiveTalentGroup() && talent.OverridesSpellID != 0) - AddOverrideSpell(talent.OverridesSpellID, talent.SpellID); - if (GetTalentMap(spec).ContainsKey(talent.Id)) GetTalentMap(spec)[talent.Id] = PlayerSpellState.Unchanged; else GetTalentMap(spec)[talent.Id] = learning ? PlayerSpellState.New : PlayerSpellState.Unchanged; + if (spec == GetActiveTalentGroup()) + { + LearnSpell(talent.SpellID, true); + if (talent.OverridesSpellID != 0) + AddOverrideSpell(talent.OverridesSpellID, talent.SpellID); + } + if (learning) RemoveAurasWithInterruptFlags(SpellAuraInterruptFlags2.ChangeTalent); @@ -211,8 +215,6 @@ namespace Game.Entities if (!AddTalent(talentInfo, GetActiveTalentGroup(), true)) return TalentLearnResult.FailedUnknown; - LearnSpell(spellid, false); - Log.outDebug(LogFilter.Misc, "Player.LearnTalent: TalentID: {0} Spell: {1} Group: {2}", talentId, spellid, GetActiveTalentGroup()); return TalentLearnResult.LearnOk; @@ -367,7 +369,7 @@ namespace Game.Entities if (HasTalent(talentInfo.Id, GetActiveTalentGroup())) { - LearnSpell(talentInfo.SpellID, false); // add the talent to the PlayerSpellMap + LearnSpell(talentInfo.SpellID, true); // add the talent to the PlayerSpellMap if (talentInfo.OverridesSpellID != 0) AddOverrideSpell(talentInfo.OverridesSpellID, talentInfo.SpellID); } @@ -393,7 +395,7 @@ namespace Game.Entities { uint mastery = spec.MasterySpellID[i]; if (mastery != 0) - LearnSpell(mastery, false); + LearnSpell(mastery, true); } } @@ -733,12 +735,14 @@ namespace Game.Entities return false; } - if (HasPvpRulesEnabled()) - LearnSpell(talent.SpellID, false); + if (activeTalentGroup == GetActiveTalentGroup() && HasAuraType(AuraType.PvpTalents)) + { + LearnSpell(talent.SpellID, true); - // Move this to toggle ? - if (talent.OverridesSpellID != 0) - AddOverrideSpell(talent.OverridesSpellID, talent.SpellID); + // Move this to toggle ? + if (talent.OverridesSpellID != 0) + AddOverrideSpell(talent.OverridesSpellID, talent.SpellID); + } GetPvpTalentMap(activeTalentGroup)[slot] = talent.Id; @@ -775,9 +779,17 @@ namespace Game.Entities if (pvpTalentInfo != null) { if (enable) + { LearnSpell(pvpTalentInfo.SpellID, false); + if (pvpTalentInfo.OverridesSpellID != 0) + AddOverrideSpell(pvpTalentInfo.OverridesSpellID, pvpTalentInfo.SpellID); + } else + { + if (pvpTalentInfo.OverridesSpellID != 0) + RemoveOverrideSpell(pvpTalentInfo.OverridesSpellID, pvpTalentInfo.SpellID); RemoveSpell(pvpTalentInfo.SpellID, true); + } } } } diff --git a/Source/Game/Entities/Player/Player.cs b/Source/Game/Entities/Player/Player.cs index 272776058..16130a271 100644 --- a/Source/Game/Entities/Player/Player.cs +++ b/Source/Game/Entities/Player/Player.cs @@ -4570,13 +4570,11 @@ namespace Game.Entities if (enabled) { SetPlayerFlag(PlayerFlags.WarModeDesired); - TogglePvpTalents(true); SetPvP(true); } else { RemovePlayerFlag(PlayerFlags.WarModeDesired); - TogglePvpTalents(false); SetPvP(false); }