Esempio n. 1
0
//bounty system here
        public override bool OnDragDrop(Mobile from, Item item)
        {
            try
            {
                bool IsHandled = false;

                // Check if the item being dropped is a head
                if (item is Head)
                {
                    Head head = (Head)item;

                    this.Say(500670);               // Ah, a head! Let me check to see if there is a bounty on this.

                    BountyBoardEntry entry;
                    bool             canClaim = false;
                    Mobile           murderer = (Mobile)head.Owner;

                    // Check if the head is a valid head
                    if (murderer != null && head.Killer != null)
                    {
                        // check if there is a bounty and if the murderer can claim it
                        if (BountyBoard.hasBounty(from, murderer, out entry, out canClaim))
                        {
                            // check if the claimer killed the murderer
                            if (head.Killer != from)
                            {
                                Say(500543);                           // I had heard this scum was taken care of...but not by you
                            }
                            else
                            {
                                //check age of head
                                if (head.CreationTime < (entry.ExpireTime - BountyBoardEntry.DefaultDecayRate))
                                {
                                    Say("Their is a bounty on this murderer but this head is from long ago!");
                                }
                                else
                                {
                                    // Check that the player does not have negative karma or is a criminal
                                    if (from.Karma >= 0 && from.Kills < 5 && !from.Criminal)
                                    {
                                        if (canClaim)
                                        {
                                            if (entry.Expired)
                                            {
                                                Say("The bounty on this murderer has expired.");
                                                BountyBoard.RemoveEntry(entry, true);
                                            }
                                            else
                                            {
                                                IsHandled = true;
                                                Say(1042855, String.Format("{0}\t{1}\t", murderer.Name, entry.Price.ToString()));                                             // The bounty on ~1_PLAYER_NAME~ was ~2_AMOUNT~ gold, and has been credited to your account.
                                                from.BankBox.DropItem(new Gold(entry.Price));

                                                // Give the karma they lost back + an amount equal to the bounty
                                                from.Karma += entry.Price;
                                                BountyBoard.RemoveEntry(entry, false);
                                                head.Delete();
                                            }
                                        }
                                        else
                                        {
                                            Say("The bounty owner did not approve a reward to you!");
                                        }
                                    }
                                    else
                                    {
                                        Say(500542);                                   // We only accept bounty hunting from honorable folk! Away with thee!
                                    }
                                }
                            }
                        }
                        else
                        {
                            this.Say(1042854, murderer.Name);                       // There was no bounty on ~1_PLAYER_NAME~.
                        }
                    }
                    else
                    {
                        Say(500660);                   // If this were the head of a murderer, I would check for a bounty.
                    }
                }
                else
                {
                    return(base.OnDragDrop(from, item));
                }

                return(IsHandled);
            }
            catch
            {
                return(false);
            }
        }