public override void OnClick()
{
if (!m_Mobile.Deleted && m_Mobile.Controlled && m_From.CheckAlive())
{
if (m_Mobile.IsDeadPet && (m_Order == OrderType.Guard || m_Order == OrderType.Attack || m_Order == OrderType.Transfer || m_Order == OrderType.Drop))
return;
bool isOwner = (m_From == m_Mobile.ControlMaster);
bool isFriend = (!isOwner && m_Mobile.IsPetFriend(m_From));
if (!isOwner && !isFriend)
return;
else if (isFriend && m_Order != OrderType.Follow && m_Order != OrderType.Stay && m_Order != OrderType.Stop)
return;
switch (m_Order)
{
case OrderType.Follow:
case OrderType.Attack:
case OrderType.Transfer:
case OrderType.Friend:
case OrderType.Unfriend:
{
if (m_Order == OrderType.Transfer && m_From.HasTrade)
m_From.SendLocalizedMessage(1010507); // You cannot transfer a pet with a trade pending
else if (m_Order == OrderType.Friend && m_From.HasTrade)
m_From.SendLocalizedMessage(1070947); // You cannot friend a pet with a trade pending
else
m_AI.BeginPickTarget(m_From, m_Order);
break;
}
case OrderType.Release:
{
if (m_Mobile.Summoned)
goto default;
else
m_From.SendGump(new Gumps.ConfirmReleaseGump(m_From, m_Mobile));
break;
}
default:
{
if (m_Mobile.CheckControlChance(m_From))
m_Mobile.ControlOrder = m_Order;
break;
}
}
}
}
}