Core/BattlePets: Fixes when adding pets
Port From (https://github.com/TrinityCore/TrinityCore/commit/7c15ec00c7c1a4d5bd3ce37de6776b8a407b65b7)
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user