public void EndClaimList(Mobile from, BaseCreature pet) { if (pet == null || pet.Deleted || from.Map != this.Map || !from.Stabled.Contains(pet) || !from.CheckAlive()) { return; } if (!from.InRange(this, 14)) { from.SendLocalizedMessage(500446); // That is too far away. } else if (CanClaim(from, pet)) { int totalClaim = StablePrice * ((DateTime.Now - pet.StabledDate).Days / ChargeFrequency); if (totalClaim <= 0 || from.AccessLevel >= AccessLevel.GameMaster || Banker.WithdrawPackAndBank(from, totalClaim)) { DoClaim(from, pet); from.Stabled.Remove(pet); if (from is PlayerMobile) { ((PlayerMobile)from).AutoStabled.Remove(pet); } } else { SayTo(from, "Thou requires {0} gold pieces to claim thy pet.", totalClaim); } } else { SayTo(from, 1049612, pet.Name); // ~1_NAME~ remained in the stables because you have too many followers. } }
public void EndStable(Mobile from, BaseCreature pet) { if (Deleted || !from.CheckAlive()) { return; } if (pet.Body.IsHuman) { SayTo(from, 502672); // HA HA HA! Sorry, I am not an inn. } else if (!pet.Controlled) { SayTo(from, 1048053); // You can't stable that! } else if (pet.ControlMaster != from) { SayTo(from, 1042562); // You do not own that pet! } else if (pet.IsDeadPet) { SayTo(from, 1049668); // Living pets only, please. } else if (pet.Summoned) { SayTo(from, 502673); // I can not stable summoned creatures. } else if ((pet is PackLlama || pet is PackHorse || pet is Beetle) && (pet.Backpack != null && pet.Backpack.Items.Count > 0)) { SayTo(from, 1042563); // You need to unload your pet. } else if (pet.Combatant != null && pet.InRange(pet.Combatant, 12) && pet.Map == pet.Combatant.Map) { SayTo(from, 1042564); // I'm sorry. Your pet seems to be busy. } else if (from.Stabled.Count >= GetMaxStabled(from)) { SayTo(from, 1042565); // You have too many pets in the stables! } else { Container bank = from.FindBankNoCreate(); if (from.AccessLevel >= AccessLevel.GameMaster || Banker.WithdrawPackAndBank(from, StablePrice)) { if (from is PlayerMobile) { ((PlayerMobile)from).StablePet(pet, true); } SayTo(from, "Very well, thy pet is stabled. Thou mayst recover it by saying 'claim' to me. Thou mayst pay outstanding charges when thy pet is claimed."); //SayTo( from, Core.AOS ? 1049677 : 502679 ); // [AOS: Your pet has been stabled.] Very well, thy pet is stabled. Thou mayst recover it by saying 'claim' to me. In one real world week, I shall sell it off if it is not claimed! } else { SayTo(from, 502677); // But thou hast not the funds in thy bank account! } } }
public void Claim(Mobile from, string petName) { if (Deleted || !from.CheckAlive()) { return; } bool claimed = false; int stabled = 0; bool claimByName = (petName != null); for (int i = 0; i < from.Stabled.Count; ++i) { BaseCreature pet = from.Stabled[i] as BaseCreature; if (pet == null || pet.Deleted) { pet.IsStabled = false; from.Stabled.RemoveAt(i); --i; continue; } ++stabled; if (claimByName && !Insensitive.Equals(pet.Name, petName)) { continue; } else if (CanClaim(from, pet)) { int totalClaim = StablePrice * ((DateTime.Now - pet.StabledDate).Days / ChargeFrequency); if (totalClaim <= 0 || from.AccessLevel >= AccessLevel.GameMaster || Banker.WithdrawPackAndBank(from, totalClaim)) { DoClaim(from, pet); from.Stabled.RemoveAt(i--); if (from is PlayerMobile) { ((PlayerMobile)from).AutoStabled.Remove(pet); } claimed = true; } else { SayTo(from, "{0} remained in the stables because you require {0} gold pieces.", pet.Name, totalClaim); } } else { SayTo(from, 1049612, pet.Name); // ~1_NAME~ remained in the stables because you have too many followers. } } if (claimed) { SayTo(from, 1042559); // Here you go... and good day to you! } else if (stabled == 0) { SayTo(from, 502671); // But I have no animals stabled with me at the moment! } else if (claimByName) { BeginClaimList(from); } }