Ejemplo n.º 1
0
        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.
            }
        }
Ejemplo n.º 2
0
        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!
                }
            }
        }
Ejemplo n.º 3
0
        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);
            }
        }