public static BandageContext BeginHeal(Mobile healer, Mobile patient)
{
//vira para quem vai curar
SpellHelper.Turn(healer, patient);
bool isDeadPet = (patient is BaseCreature && ((BaseCreature)patient).IsDeadPet);
if (patient is Golem)
{
healer.SendLocalizedMessage(500970); // Bandages cannot be used on that.
}
else if (patient is BaseCreature && ((BaseCreature)patient).IsAnimatedDead)
{
healer.SendLocalizedMessage(500951); // You cannot heal that.
}
else if (!patient.Poisoned && patient.Hits == patient.HitsMax && !BleedAttack.IsBleeding(patient) && !isDeadPet)
{
healer.SendLocalizedMessage(500955); // That being is not damaged!
}
else if (!patient.Alive && (patient.Map == null || !patient.Map.CanFit(patient.Location, 16, false, false)))
{
healer.SendLocalizedMessage(501042); // Target cannot be resurrected at that location.
}
else if (healer.CanBeBeneficial(patient, true, true))
{
healer.DoBeneficial(patient);
bool onSelf = (healer == patient);
int dex = healer.Dex;
double seconds;
double resDelay = (patient.Alive ? 0.0 : 5.0);
if (onSelf)
{
if (Core.AOS)
{
seconds = 5.0 + (0.5 * ((double)(120 - dex) / 10)); // TODO: Verify algorithm
}
else
{
seconds = 9.4 + (0.6 * ((double)(120 - dex) / 10));
}
}
else
{
if (Core.AOS && GetPrimarySkill(patient) == SkillName.Veterinary)
{
//if ( dex >= 40 )
seconds = 2.0;
//else
// seconds = 3.0;
}
else
{
if (dex >= 100)
{
seconds = 3.0 + resDelay;
}
else if (dex >= 40)
{
seconds = 4.0 + resDelay;
}
else
{
seconds = 5.0 + resDelay;
}
}
}
BandageContext context = GetContext(healer);
if (context != null)
{
context.StopHeal();
}
context = new BandageContext(healer, patient, TimeSpan.FromSeconds(seconds));
m_Table[healer] = context;
if (!onSelf)
{
patient.SendLocalizedMessage(1008078, false, healer.Name); // : Attempting to heal you.
}
//mensagens
if (patient.Alive)
{
healer.Emote("*{0} esta tratando os ferimentos de {1}*", healer.Name, patient.Name);
if (healer.Body.Type == BodyType.Human && !healer.Mounted)
{
healer.Animate(10, 5, 1, true, false, 0);
healer.PlaySound(72);
}
}
else
{
healer.Emote("*{0} esta estancando os ferimentos de {1}*", healer.Name, patient.Name);
if (healer.Body.Type == BodyType.Human && !healer.Mounted)
{
healer.Animate(10, 5, 4, true, false, 0);
healer.PlaySound(72);
}
}
healer.SendLocalizedMessage(500956); // You begin applying the bandages.
return(context);
}
return(null);
}