Core/BattlePets: Fixes when adding pets

Port From (https://github.com/TrinityCore/TrinityCore/commit/7c15ec00c7c1a4d5bd3ce37de6776b8a407b65b7)
This commit is contained in:
hondacrx
2021-10-17 09:16:27 -04:00
parent 0b64c4a02e
commit 6da7f7cb38
4 changed files with 12 additions and 19 deletions
@@ -357,6 +357,7 @@ namespace Game.BattlePets
updates.Add(pet);
SendUpdates(updates, true);
_owner.GetPlayer().UpdateCriteria(CriteriaType.UniquePetsOwned);
_owner.GetPlayer().UpdateCriteria(CriteriaType.LearnedNewPet, species);
}
@@ -2622,17 +2622,6 @@ namespace Game.Entities
if (Global.DB2Mgr.GetMount(spellId) != null)
GetSession().GetCollectionMgr().AddMount(spellId, MountStatusFlags.None, false, !IsInWorld);
// need to add Battle pets automatically into pet journal
foreach (BattlePetSpeciesRecord entry in CliDB.BattlePetSpeciesStorage.Values)
{
if (entry.SummonSpellID == spellId && GetSession().GetBattlePetMgr().GetPetCount(entry.Id) == 0)
{
GetSession().GetBattlePetMgr().AddPet(entry.Id, BattlePetMgr.SelectPetDisplay(entry), BattlePetMgr.RollPetBreed(entry.Id), BattlePetMgr.GetDefaultPetQuality(entry.Id));
UpdateCriteria(CriteriaType.UniquePetsOwned);
break;
}
}
// return true (for send learn packet) only if spell active (in case ranked spells) and not replace old spell
return active && !disabled && !superceded_old;
}
+3 -6
View File
@@ -1064,12 +1064,9 @@ namespace Game
if (itemEffect.TriggerType != ItemSpelltriggerType.LearnSpellId)
continue;
var entry = Global.SpellMgr.GetBattlePetSpecies((uint)itemEffect.SpellID);
if (entry != null)
{
GetBattlePetMgr().AddPet(entry.Id, BattlePetMgr.SelectPetDisplay(entry), BattlePetMgr.RollPetBreed(entry.Id), BattlePetMgr.GetDefaultPetQuality(entry.Id));
_player.UpdateCriteria(CriteriaType.UniquePetsOwned);
}
var speciesEntry = Global.SpellMgr.GetBattlePetSpecies((uint)itemEffect.SpellID);
if (speciesEntry != null)
GetBattlePetMgr().AddPet(speciesEntry.Id, BattlePetMgr.SelectPetDisplay(speciesEntry), BattlePetMgr.RollPetBreed(speciesEntry.Id), BattlePetMgr.GetDefaultPetQuality(speciesEntry.Id));
}
GetPlayer().DestroyItem(item.GetBagSlot(), item.GetSlot(), true);
+8 -2
View File
@@ -1824,6 +1824,11 @@ namespace Game.Spells
continue;
player.LearnSpell((uint)itemEffect.SpellID, false);
var speciesEntry = Global.SpellMgr.GetBattlePetSpecies((uint)itemEffect.SpellID);
if (speciesEntry != null)
player.GetSession().GetBattlePetMgr().AddPet(speciesEntry.Id, BattlePetMgr.SelectPetDisplay(speciesEntry), BattlePetMgr.RollPetBreed(speciesEntry.Id), BattlePetMgr.GetDefaultPetQuality(speciesEntry.Id));
}
}
@@ -5497,8 +5502,9 @@ namespace Game.Spells
battlePetMgr.AddPet(speciesId, displayId, breed, quality, level);
if (!plr.HasSpell(speciesEntry.SummonSpellID))
plr.LearnSpell(speciesEntry.SummonSpellID, false);
if (speciesEntry.SummonSpellID != 0)
if (!plr.HasSpell(speciesEntry.SummonSpellID))
plr.LearnSpell(speciesEntry.SummonSpellID, false);
plr.SendPlaySpellVisual(plr, SharedConst.SpellVisualUncagePet, 0, 0, 0.0f, false);