Core/Pets: Pet management refactoring
Port From (https://github.com/TrinityCore/TrinityCore/commit/ca92686b44cc8c53a8991bf02d6e8534797fc115)
This commit is contained in:
@@ -5217,6 +5217,35 @@ namespace Game.Spells
|
||||
|
||||
if (!unitCaster.GetCharmedGUID().IsEmpty())
|
||||
return SpellCastResult.AlreadyHaveCharm;
|
||||
|
||||
Player playerCaster = unitCaster.ToPlayer();
|
||||
if (playerCaster != null && playerCaster.GetPetStable() != null)
|
||||
{
|
||||
var info = Pet.GetLoadPetInfo(playerCaster.GetPetStable(), (uint)spellEffectInfo.MiscValue, 0, false);
|
||||
if (info.Item1 == null)
|
||||
{
|
||||
playerCaster.SendTameFailure(PetTameResult.NoPetAvailable);
|
||||
return SpellCastResult.DontReport;
|
||||
}
|
||||
|
||||
if (info.Item1.Type == PetType.Hunter && info.Item1.Health == 0)
|
||||
{
|
||||
playerCaster.SendTameFailure(PetTameResult.Dead);
|
||||
return SpellCastResult.DontReport;
|
||||
}
|
||||
|
||||
CreatureTemplate creatureInfo = Global.ObjectMgr.GetCreatureTemplate(info.Item1.CreatureId);
|
||||
if (creatureInfo == null || !creatureInfo.IsTameable(playerCaster.CanTameExoticPets()))
|
||||
{
|
||||
// if problem in exotic pet
|
||||
if (creatureInfo != null && creatureInfo.IsTameable(true))
|
||||
playerCaster.SendTameFailure(PetTameResult.CantControlExotic);
|
||||
else
|
||||
playerCaster.SendTameFailure(PetTameResult.NoPetAvailable);
|
||||
|
||||
return SpellCastResult.DontReport;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case SpellEffectName.SummonPlayer:
|
||||
|
||||
Reference in New Issue
Block a user