protected override void OnTick() { if (m_BaseHenchman == null) { Stop(); return; } if (m_BaseHenchman.Deleted || !m_BaseHenchman.Alive) { Stop(); return; } if (!m_BaseHenchman.Recruitable) { Stop(); return; } if (m_BaseHenchman.DecayExpiration <= DateTime.UtcNow && !m_BaseHenchman.Controlled && m_BaseHenchman.TimesTamed == 0) { Stop(); m_BaseHenchman.Delete(); return; } }
public override void OnDoubleClick(Mobile from) { base.OnDoubleClick(from); PlayerMobile player = from as PlayerMobile; if (player == null) { return; } if (!IsChildOf(from.Backpack)) { from.SendMessage("That must be in your backpack for you to use it."); return; } Type creatureType = GetCreatureType(m_Creature); if (creatureType == null) { return; } BaseHenchman henchman = (BaseHenchman)Activator.CreateInstance(creatureType); if (henchman == null) { return; } if (DateTime.UtcNow < player.LastCombatTime + CombatDelay) { DateTime cooldown = player.LastCombatTime + CombatDelay; string nextActivationAllowed = Utility.CreateTimeRemainingString(DateTime.UtcNow, cooldown, false, false, false, true, true); player.SendMessage("You have been in combat too recently and must wait another " + nextActivationAllowed + " before you may use this."); henchman.Delete(); return; } if (DateTime.UtcNow < player.LastPlayerCombatTime + CombatPvPDelay) { DateTime cooldown = player.LastPlayerCombatTime + CombatPvPDelay; string nextActivationAllowed = Utility.CreateTimeRemainingString(DateTime.UtcNow, cooldown, false, false, false, true, true); player.SendMessage("You have been in combat with another player too recently and must wait another " + nextActivationAllowed + " before you may use this."); henchman.Delete(); return; } if (player.Skills.Begging.Value < henchman.MinTameSkill) { player.SendMessage("You do not have the neccessary Begging skill required to create and command that creature."); henchman.Delete(); return; } if (player.Skills.Camping.Value < henchman.MinTameSkill) { player.SendMessage("You do not have the neccessary Camping skill required to create and command that creature."); henchman.Delete(); return; } if (player.Followers + henchman.ControlSlots > player.FollowersMax) { player.SendMessage("You must have " + henchman.ControlSlots.ToString() + " free control slots in order to create and control that creature."); henchman.Delete(); return; } henchman.MoveToWorld(player.Location, player.Map); Timer.DelayCall(TimeSpan.FromSeconds(.1), delegate { if (player == null) { return; } if (player.Deleted) { return; } if (henchman == null) { return; } if (henchman.Deleted) { return; } henchman.Owners.Add(player); henchman.TimesTamed++; henchman.SetControlMaster(player); henchman.IsBonded = true; henchman.OwnerAbandonTime = DateTime.UtcNow + henchman.AbandonDelay; henchman.ResurrectionsRemaining = 2; henchman.Experience = Experience; if (henchman.recruitSpeech.Length > 0) { henchman.Say(henchman.recruitSpeech[Utility.Random(henchman.recruitSpeech.Length - 1)]); } henchman.Hits = henchman.HitsMax; henchman.Stam = henchman.StamMax; henchman.Mana = henchman.ManaMax; henchman.PlaySound(henchman.GetIdleSound()); player.SendMessage("You recruit the creature and they bond to you. They may be resurrected " + henchman.ResurrectionsRemaining.ToString() + " times before they fade from creation."); }); Delete(); }