예제 #1
0
        public bool PlaceStone(Mobile from)
        {
            BaseHouse house = BaseHouse.FindHouseAt(from);

            if (house == null)
            {
                from.SendLocalizedMessage(501138);                 // You can only place a guildstone in a house.
            }
            else if (house.FindGuildstone() != null)
            {
                from.SendLocalizedMessage(501142);                //Only one guildstone may reside in a given house.
            }
            else if (!house.IsOwner(from))
            {
                from.SendLocalizedMessage(501141);                 // You can only place a guildstone in a house you own!
            }
            else
            {
                if (from.Map != Map.Internal)
                {
                    RetrieveItemFromIntStorage(from.Location, from.Map);
                    return(true);
                }
                else
                {
                    //should never get here - it's a safety catch.
                    return(false);
                }
            }

            return(false);
        }
예제 #2
0
            public override void OnResponse(Mobile from, string text)
            {
                if (m_Deed.Deleted)
                {
                    return;
                }

                if (!m_Deed.IsChildOf(from.Backpack))
                {
                    from.SendLocalizedMessage(1042001);                       // That must be in your pack for you to use it.
                }
                else if (from.Guild != null)
                {
                    from.SendLocalizedMessage(501137);                       // You must resign from your current guild before founding another!
                }
                else
                {
                    BaseHouse house = BaseHouse.FindHouseAt(from);

                    BaseGuild NameTest = Guild.FindByName(text);
                    //make sure we dont initially create a guild with same name as a exsisting one.
                    if (NameTest != null)
                    {
                        from.SendMessage("A guild with that name already exsists.");
                    }

                    else if (house == null)
                    {
                        from.SendLocalizedMessage(501138);                           // You can only place a guildstone in a house.
                    }
                    else if (house.FindGuildstone() != null)
                    {
                        from.SendLocalizedMessage(501142);                          //Only one guildstone may reside in a given house.
                    }
                    else if (!house.IsOwner(from))
                    {
                        from.SendLocalizedMessage(501141);                           // You can only place a guildstone in a house you own!
                    }
                    else
                    {
                        m_Deed.Delete();

                        if (text.Length > 40)
                        {
                            text = text.Substring(0, 40);
                        }

                        Guild guild = new Guild(from, text, "none");

                        from.Guild      = guild;
                        from.GuildTitle = "Guildmaster";

                        Guildstone stone = new Guildstone(guild);

                        stone.MoveToWorld(from.Location, from.Map);

                        guild.Guildstone = stone;
                    }
                }
            }
예제 #3
0
        public override void OnDoubleClick(Mobile from)
        {
            if (!IsChildOf(from.Backpack))
            {
                from.SendAsciiMessage("That must be in your pack for you to use it.");
            }
            else if (from.Guild != null)
            {
                from.SendAsciiMessage("You must resign from your current guild before founding another!");
            }
            else
            {
                BaseHouse house = BaseHouse.FindHouseAt(from);

                if (house == null)
                {
                    from.SendAsciiMessage("You can only place a guildstone in a house.");
                }
                else if (house.FindGuildstone() != null)
                {
                    from.SendAsciiMessage("Only one guildstone may reside in a given house.");
                }
                else if (!house.IsOwner(from))
                {
                    from.SendAsciiMessage("You can only place a guildstone in a house you own!");
                }
                else
                {
                    from.SendAsciiMessage("Enter new guild name (40 characters max):");
                    from.Prompt = new InternalPrompt(this);
                }
            }
        }
예제 #4
0
        public override void OnDoubleClick(Mobile from)
        {
            if (!IsChildOf(from.Backpack))
            {
                from.SendLocalizedMessage(1042001);                   // That must be in your pack for you to use it.
            }
            else if (from.Guild != null)
            {
                from.SendLocalizedMessage(501137);                   // You must resign from your current guild before founding another!
            }
            else
            {
                BaseHouse house = BaseHouse.FindHouseAt(from);

                if (house == null)
                {
                    from.SendLocalizedMessage(501138);                       // You can only place a guildstone in a house.
                }
                else if (house.FindGuildstone() != null)
                {
                    from.SendLocalizedMessage(501142);                      //Only one guildstone may reside in a given house.
                }
                else if (!house.IsOwner(from))
                {
                    from.SendLocalizedMessage(501141);                       // You can only place a guildstone in a house you own!
                }
                else
                {
                    from.SendLocalizedMessage(1013060);                       // Enter new guild name (40 characters max):
                    from.Prompt = new InternalPrompt(this);
                }
            }
        }
예제 #5
0
            public override void OnResponse(Mobile from, string text)
            {
                if (m_Deed.Deleted)
                {
                    return;
                }

                if (!m_Deed.IsChildOf(from.Backpack))
                {
                    from.SendMessage("O Item precisa estar na sua Bag!");
                    //from.SendLocalizedMessage( 1042001 ); // That must be in your pack for you to use it.
                }
                else if (from.Guild != null)
                {
                    from.SendMessage("Voce precisa sair da Guilda Atual antes de Fundar outra!");
                    //from.SendLocalizedMessage( 501137 ); // You must resign from your current guild before founding another!
                }
                else
                {
                    BaseHouse house = BaseHouse.FindHouseAt(from);

                    if (house == null)
                    {
                        from.SendMessage("Voce so pode colocar uma GuildStone dentro da sua casa!");
                        //from.SendLocalizedMessage( 501138 ); // You can only place a guildstone in a house.
                    }
                    else if (house.FindGuildstone() != null)
                    {
                        from.SendMessage("Apenas uma GuildStone pode estar dentro da casa!");
                        //from.SendLocalizedMessage( 501142 );//Only one guildstone may reside in a given house.
                    }
                    else if (!house.IsOwner(from))
                    {
                        from.SendMessage("Voce so pode colocar a GuildStone dentro de sua propria casa!");
                        //from.SendLocalizedMessage( 501141 ); // You can only place a guildstone in a house you own!
                    }
                    else
                    {
                        m_Deed.Delete();

                        if (text.Length > 40)
                        {
                            text = text.Substring(0, 40);
                        }

                        Guild guild = new Guild(from, text, "none");

                        from.Guild      = guild;
                        from.GuildTitle = "Guildmaster";

                        Guildstone stone = new Guildstone(guild);

                        stone.MoveToWorld(from.Location, from.Map);

                        guild.Guildstone = stone;
                    }
                }
            }
        public override void OnDoubleClick(Mobile from)
        {
            Guildstone stone = m_Stone as Guildstone;

            if (!IsChildOf(from.Backpack))
            {
                from.SendLocalizedMessage(1042001);                   // That must be in your pack for you to use it.
            }
            else if (stone == null || stone.Deleted || stone.Guild == null || stone.Guild.Teleporter != this)
            {
                from.SendLocalizedMessage(501197);                   // This teleporting object can not determine what guildstone to teleport
            }
            else
            {
                BaseHouse       house       = BaseHouse.FindHouseAt(from);
                StaticHouseSign staticHouse = StaticHouseSign.StaticFindHouseAt(from);

                if (house == null && staticHouse == null)
                {
                    from.SendLocalizedMessage(501138);                       // You can only place a guildstone in a house.
                }
                else if (staticHouse == null)
                {
                    if (house.FindGuildstone() != null)
                    {
                        from.SendLocalizedMessage(501142);                          //Only one guildstone may reside in a given house.
                    }
                    else if (!house.IsOwner(from))
                    {
                        from.SendLocalizedMessage(501141);                           // You can only place a guildstone in a house you own!
                    }
                    else
                    {
                        m_Stone.MoveToWorld(from.Location, from.Map);
                        Delete();
                        stone.Guild.Teleporter = null;
                    }
                }
                else
                {
                    if (staticHouse.FindGuildstone(from) != null)
                    {
                        from.SendLocalizedMessage(501142);                           //Only one guildstone may reside in a given house.
                    }
                    else if (!staticHouse.IsOwner(from))
                    {
                        from.SendLocalizedMessage(501141);                           // You can only place a guildstone in a house you own!
                    }
                    else
                    {
                        m_Stone.MoveToWorld(from.Location, from.Map);
                        Delete();
                        stone.Guild.Teleporter = null;
                    }
                }
            }
        }
예제 #7
0
            public override void OnResponse(Mobile from, string text)
            {
                if (m_Deed.Deleted)
                {
                    return;
                }

                if (!m_Deed.IsChildOf(from.Backpack))
                {
                    from.SendAsciiMessage("That must be in your pack for you to use it.");                       // That must be in your pack for you to use it.
                }
                else if (from.Guild != null)
                {
                    from.SendAsciiMessage("You must resign from your current guild before founding another!");                       // You must resign from your current guild before founding another!
                }
                else
                {
                    BaseHouse house = BaseHouse.FindHouseAt(from);
                    BaseBoat  boat  = BaseBoat.FindBoatAt(from.Location, from.Map);

                    if (house == null && boat == null)
                    {
                        from.SendAsciiMessage("You can only place a guildstone in a house or on a ship."); // You can only place a guildstone in a house.
                    }
                    else if ((house != null && (house.FindGuildstone() != null)) || (boat != null && (boat.FindGuildstone() != null)))
                    {
                        from.SendAsciiMessage("Only one guildstone may reside in a given house or ship.");//Only one guildstone may reside in a given house.
                    }
                    else if ((house != null && (!Key.ContainsKey(from.Backpack, house.keyValue))) || (boat != null && !Key.ContainsKey(from.Backpack, boat.PPlank.KeyValue)))
                    {
                        from.SendAsciiMessage("You can only place a guildstone in a house or ship you own!"); // You can only place a guildstone in a house you own!
                    }
                    else
                    {
                        m_Deed.Delete();

                        if (text.Length > 40)
                        {
                            text = text.Substring(0, 40);
                        }

                        Guild guild = new Guild(from, text, text);

                        from.Guild      = guild;
                        from.GuildTitle = "Guildmaster";

                        Guildstone stone = new Guildstone(guild);

                        stone.MoveToWorld(from.Location, from.Map);

                        guild.Guildstone = stone;
                    }
                }
            }
예제 #8
0
            public override void OnResponse(Mobile from, string text)
            {
                if (m_Deed.Deleted)
                {
                    return;
                }

                if (!m_Deed.IsChildOf(from.Backpack))
                {
                    from.SendAsciiMessage("That must be in your pack for you to use it.");
                }
                else if (from.Guild != null)
                {
                    from.SendAsciiMessage("You must resign from your current guild before founding another!");
                }
                else
                {
                    BaseHouse house = BaseHouse.FindHouseAt(from);

                    if (house == null)
                    {
                        from.SendAsciiMessage("You can only place a guildstone in a house.");
                    }
                    else if (house.FindGuildstone() != null)
                    {
                        from.SendAsciiMessage("Only one guildstone may reside in a given house.");
                    }
                    else if (!house.IsOwner(from))
                    {
                        from.SendAsciiMessage("You can only place a guildstone in a house you own!");
                    }
                    else
                    {
                        m_Deed.Delete();

                        if (text.Length > 40)
                        {
                            text = text.Substring(0, 40);
                        }

                        Guild guild = new Guild(from, text, "none");

                        from.Guild      = guild;
                        from.GuildTitle = "Guildmaster";

                        Guildstone stone = new Guildstone(guild);

                        stone.MoveToWorld(from.Location, from.Map);

                        guild.Guildstone = stone;
                    }
                }
            }
예제 #9
0
        public override void OnDoubleClick(Mobile from)
        {
            if (!IsChildOf(from.Backpack))
            {
                from.SendLocalizedMessage(1042001);                   // That must be in your pack for you to use it.
            }
            else if (from.Guild != null)
            {
                from.SendLocalizedMessage(501137);                   // You must resign from your current guild before founding another!
            }
            else
            {
                BaseHouse house = BaseHouse.FindHouseAt(from);

                if (house == null || house is Tent)
                {
                    from.SendLocalizedMessage(501138);                       // You can only place a guildstone in a house.
                }
                else if (house.FindGuildstone() != null)
                {
                    from.SendLocalizedMessage(501142);                      //Only one guildstone may reside in a given house.
                }
                else if (!house.IsOwner(from))
                {
                    from.SendLocalizedMessage(501141);                       // You can only place a guildstone in a house you own!
                }
                else
                {
                    IPooledEnumerable eable = from.GetItemsInRange(1);
                    foreach (Item item in eable)
                    {
                        if (item is BaseDoor && (item.X == from.X || item.Y == from.Y) && item.Z - 5 < from.Z && item.Z + 5 > from.Z)
                        {
                            from.SendAsciiMessage("You cannot place this in front of a door.");
                            eable.Free();
                            return;
                        }
                    }
                    eable.Free();

                    from.SendLocalizedMessage(1013060);                       // Enter new guild name (40 characters max):
                    from.Prompt = new InternalPrompt(this);
                }
            }
        }
예제 #10
0
        public override void OnDoubleClick(Mobile from)
        {
            if (Guild.NewGuildSystem)
            {
                return;
            }

            if (!IsChildOf(from.Backpack))
            {
                from.SendMessage("O Item precisa estar na sua Bag!");
                //from.SendLocalizedMessage( 1042001 ); // That must be in your pack for you to use it.
            }
            else if (from.Guild != null)
            {
                from.SendMessage("Voce precisa sair da Guilda Atual antes de Fundar outra!");
                //from.SendLocalizedMessage( 501137 ); // You must resign from your current guild before founding another!
            }
            else
            {
                BaseHouse house = BaseHouse.FindHouseAt(from);

                if (house == null)
                {
                    from.SendMessage("Voce so pode colocar uma GuildStone dentro da sua casa!");
                    //from.SendLocalizedMessage( 501138 ); // You can only place a guildstone in a house.
                }
                else if (house.FindGuildstone() != null)
                {
                    from.SendMessage("Apenas uma GuildStone pode estar dentro da casa!");
                    //from.SendLocalizedMessage( 501142 );//Only one guildstone may reside in a given house.
                }
                else if (!house.IsOwner(from))
                {
                    from.SendMessage("Voce so pode colocar a GuildStone dentro de sua propria casa!");
                    //from.SendLocalizedMessage( 501141 ); // You can only place a guildstone in a house you own!
                }
                else
                {
                    from.SendMessage("Digite o Nome da Guilda! (max 40 caracteres)");
                    //from.SendLocalizedMessage( 1013060 ); // Enter new guild name (40 characters max):
                    from.Prompt = new InternalPrompt(this);
                }
            }
        }
예제 #11
0
        public override void OnDoubleClick(Mobile from)
        {
            if (Guild.NewGuildSystem)
            {
                return;
            }

            if (!IsChildOf(from.Backpack))
            {
                from.SendAsciiMessage("That must be in your pack for you to use it.");                   // That must be in your pack for you to use it.
            }
            else if (from.Guild != null)
            {
                from.SendAsciiMessage("You must resign from your current guild before founding another!");                   // You must resign from your current guild before founding another!
            }
            else
            {
                BaseHouse house = BaseHouse.FindHouseAt(from);
                BaseBoat  boat  = BaseBoat.FindBoatAt(from.Location, from.Map);

                if (house == null && boat == null)
                {
                    from.SendAsciiMessage("You can only place a guildstone in a house or on a ship."); // You can only place a guildstone in a house.
                }
                else if ((house != null && (house.FindGuildstone() != null)) || (boat != null && (boat.FindGuildstone() != null)))
                {
                    from.SendAsciiMessage("Only one guildstone may reside in a given house or ship.");//Only one guildstone may reside in a given house.
                }
                else if ((house != null && (!Key.ContainsKey(from.Backpack, house.keyValue))) || (boat != null && !Key.ContainsKey(from.Backpack, boat.PPlank.KeyValue)))
                {
                    from.SendAsciiMessage("You can only place a guildstone in a house or ship you own!");                       // You can only place a guildstone in a house you own!
                }
                else
                {
                    from.SendAsciiMessage("Enter new guild name (40 characters max):");                       // Enter new guild name (40 characters max):
                    from.Prompt = new InternalPrompt(this);
                }
            }
        }
예제 #12
0
        public override void OnDoubleClick(Mobile from)
        {
            if (!IsChildOf(from.Backpack))
            {
                from.SendLocalizedMessage(1042001);                   // That must be in your pack for you to use it.
            }
            else if (from.Guild != null)
            {
                from.SendLocalizedMessage(501137);                   // You must resign from your current guild before founding another!
            }
            else if (from is Mobiles.PlayerMobile && ((Mobiles.PlayerMobile)from).IOBAlignment != IOBAlignment.None)
            {
                from.SendMessage("You cannot start a guild while you are still kin aligned after leaving your old guild.");
                from.SendMessage("You must wait seven days from when you left your last guild.");
            }
            else
            {
                BaseHouse house = BaseHouse.FindHouseAt(from);

                if (house == null)
                {
                    from.SendLocalizedMessage(501138);                       // You can only place a guildstone in a house.
                }
                else if (house.FindGuildstone() != null)
                {
                    from.SendLocalizedMessage(501142);                      //Only one guildstone may reside in a given house.
                }
                else if (!house.IsOwner(from))
                {
                    from.SendLocalizedMessage(501141);                       // You can only place a guildstone in a house you own!
                }
                else
                {
                    from.SendLocalizedMessage(1013060);                       // Enter new guild name (40 characters max):
                    from.Prompt = new InternalPrompt(this);
                }
            }
        }
예제 #13
0
        public override void OnResponse(NetState state, RelayInfo info)
        {
            if (info.ButtonID == 1 && !m_House.Deleted)
            {
                if (m_House.IsOwner(m_Mobile))
                {
                    if (m_House.FindGuildstone() != null)
                    {
                        m_Mobile.SendLocalizedMessage(501389);                         // You cannot redeed a house with a guildstone inside.
                        return;
                    }
                    else if (m_House.FindPlayerVendor() != null)
                    {
                        m_Mobile.SendLocalizedMessage(503236);                         // You need to collect your vendor's belongings before moving.
                        return;
                    }
                    else if (m_House.FindPlayer() != null)
                    {
                        m_Mobile.SendMessage("It is not safe to demolish this tent with someone still inside.");                         // You need to collect your vendor's belongings before moving.
                        //Tell staff that an exploit is in progress
                        //Server.Commands.CommandHandlers.BroadcastMessage( AccessLevel.Counselor,
                        //0x482,
                        //String.Format( "Exploit in progress at {0}. Stay hidden, Jail involved players, get acct name, ban.", m_House.Location.ToString() ) );
                        return;
                    }

                    Item toGive;

                    if (m_House is Tent)
                    {
                        toGive = (TentBag)((Tent)m_House).GetDeed();
                    }
                    else if (m_House is SiegeTent)
                    {
                        toGive = (SiegeTentBag)((SiegeTent)m_House).GetDeed();
                    }
                    else
                    {
                        Console.WriteLine("Invalid type detected");
                        return;
                    }


                    // Find the roof
                    IEnumerator ta_enum = m_House.Addons.GetEnumerator();

                    while (ta_enum.MoveNext())
                    {
                        if (ta_enum.Current is TentRoof)
                        {
                            break;
                        }
                    }

                    // Hue the tent bag to the roof hue
                    toGive.Hue = ((TentRoof)ta_enum.Current).Hue;
                    toGive.MoveToWorld(m_House.Location, m_Mobile.Map);

                    m_House.Delete();
                }
                else
                {
                    m_Mobile.SendMessage("Only the tent owner may do this.");
                }
            }
        }
        public override void OnResponse(NetState state, RelayInfo info)
        {
            if (info.ButtonID == 1 && !m_House.Deleted)
            {
                if (m_House.IsOwner(m_Mobile))
                {
                    if (m_House.MovingCrate != null || m_House.InternalizedVendors.Count > 0)
                    {
                        return;
                    }
                    else if (!Guilds.Guild.NewGuildSystem && m_House.FindGuildstone() != null)
                    {
                        m_Mobile.SendMessage("Voce nao pode fazer isto com uma GuildStone dentro.");                           // You cannot redeed a house with a guildstone inside.
                        return;
                    }

                    /*else if ( m_House.PlayerVendors.Count > 0 )
                     * {
                     *      m_Mobile.SendLocalizedMessage( 503236 ); // You need to collect your vendor's belongings before moving.
                     *      return;
                     * }*/
                    else if (m_House.HasRentedVendors && m_House.VendorInventories.Count > 0)
                    {
                        m_Mobile.SendMessage("Voce nao pode fazer isto com vendedores na casa."); // You cannot do that that while you still have contract vendors or unclaimed contract vendor inventory in your house.
                        return;
                    }
                    else if (m_House.HasRentedVendors)
                    {
                        m_Mobile.SendMessage("Voce nao pode fazer isto com vendedores na casa."); // You cannot do that that while you still have contract vendors in your house.
                        return;
                    }
                    else if (m_House.VendorInventories.Count > 0)
                    {
                        m_Mobile.SendMessage("Voce nao pode fazer isto com vendedores na casa."); // You cannot do that that while you still have unclaimed contract vendor inventory in your house.
                        return;
                    }


                    if (m_Mobile.AccessLevel >= AccessLevel.GameMaster)
                    {
                        //m_Mobile.SendMessage( "You do not get a refund for your house as you are not a player" );
                        m_House.RemoveKeys(m_Mobile);
                        m_House.Delete();
                    }
                    else
                    {
                        Item toGive = null;

                        if (m_House.IsAosRules)
                        {
                            if (m_House.Price > 0)
                            {
                                toGive = new BankCheck(m_House.Price);
                            }
                            else
                            {
                                toGive = m_House.GetDeed();
                            }
                        }
                        else
                        {
                            toGive = m_House.GetDeed();

                            if (toGive == null && m_House.Price > 0)
                            {
                                toGive = new BankCheck(m_House.Price);
                            }
                        }

                        if (toGive != null)
                        {
                            BankBox box = m_Mobile.BankBox;

                            if (box.TryDropItem(m_Mobile, toGive, false))
                            {
                                if (toGive is BankCheck)
                                {
                                    m_Mobile.SendMessage(string.Format("Voce recebeu {0} de gold pela transacao. O valor foi depositado em seu banco.", ((BankCheck)toGive).Worth.ToString()));                                         // ~1_AMOUNT~ gold has been deposited into your bank box.
                                }
                                m_House.RemoveKeys(m_Mobile);
                                m_House.Delete();
                            }
                            else
                            {
                                toGive.Delete();
                                m_Mobile.SendMessage("Seu banco está cheio!"); // Your bank box is full.
                            }
                        }
                        else
                        {
                            m_Mobile.SendMessage("Voce nao pode fazer isto ..");
                        }
                    }
                }
                else
                {
                    m_Mobile.SendMessage("Apenas o dono da casa pode fazer isto"); // Only the house owner may do this.
                }
            }
        }
예제 #15
0
        public override void OnResponse(NetState sender, RelayInfo info)
        {
            if (m_House.Deleted)
            {
                return;
            }

            Mobile from = sender.Mobile;

            bool isOwner   = m_House.IsOwner(from);
            bool isCoOwner = isOwner || m_House.IsCoOwner(from);
            bool isFriend  = isCoOwner || m_House.IsFriend(from);

            if (!isFriend || !from.Alive)
            {
                return;
            }

            Item sign = m_House.Sign;

            if (sign == null || from.Map != sign.Map || !from.InRange(sign.GetWorldLocation(), 18))
            {
                return;
            }

            switch (info.ButtonID)
            {
            case 1:                     // Rename sign
            {
                from.Prompt = new RenamePrompt(m_House);
                from.SendLocalizedMessage(501302);                           // What dost thou wish the sign to say?

                break;
            }

            case 2:                     // List of co-owners
            {
                from.CloseGump <HouseGump>();;
                from.CloseGump <HouseListGump>();;
                from.CloseGump <HouseRemoveGump>();;
                from.SendGump(new HouseListGump(1011275, m_House.CoOwners, m_House, false));

                break;
            }

            case 3:                     // Add co-owner
            {
                if (isOwner)
                {
                    from.SendLocalizedMessage(501328);                               // Target the person you wish to name a co-owner of your household.
                    from.Target = new CoOwnerTarget(true, m_House);
                }
                else
                {
                    from.SendLocalizedMessage(501327);                               // Only the house owner may add Co-owners.
                }

                break;
            }

            case 4:                     // Remove co-owner
            {
                if (isOwner)
                {
                    from.CloseGump <HouseGump>();;
                    from.CloseGump <HouseListGump>();;
                    from.CloseGump <HouseRemoveGump>();;
                    from.SendGump(new HouseRemoveGump(1011274, m_House.CoOwners, m_House, false));
                }
                else
                {
                    from.SendLocalizedMessage(501329);                               // Only the house owner may remove co-owners.
                }

                break;
            }

            case 5:                     // Clear co-owners
            {
                if (isOwner)
                {
                    if (m_House.CoOwners != null)
                    {
                        m_House.CoOwners.Clear();
                    }

                    from.SendLocalizedMessage(501333);                               // All co-owners have been removed from this house.
                }
                else
                {
                    from.SendLocalizedMessage(501330);                               // Only the house owner may remove co-owners.
                }

                break;
            }

            case 6:                     // List friends
            {
                from.CloseGump <HouseGump>();;
                from.CloseGump <HouseListGump>();;
                from.CloseGump <HouseRemoveGump>();;
                from.SendGump(new HouseListGump(1011273, m_House.Friends, m_House, false));

                break;
            }

            case 7:                     // Add friend
            {
                if (isCoOwner)
                {
                    from.SendLocalizedMessage(501317);                               // Target the person you wish to name a friend of your household.
                    from.Target = new HouseFriendTarget(true, m_House);
                }
                else
                {
                    from.SendLocalizedMessage(501316);                               // Only the house owner may add friends.
                }

                break;
            }

            case 8:                     // Remove friend
            {
                if (isCoOwner)
                {
                    from.CloseGump <HouseGump>();;
                    from.CloseGump <HouseListGump>();;
                    from.CloseGump <HouseRemoveGump>();;
                    from.SendGump(new HouseRemoveGump(1011272, m_House.Friends, m_House, false));
                }
                else
                {
                    from.SendLocalizedMessage(501318);                               // Only the house owner may remove friends.
                }

                break;
            }

            case 9:                     // Clear friends
            {
                if (isCoOwner)
                {
                    if (m_House.Friends != null)
                    {
                        m_House.Friends.Clear();
                    }

                    from.SendLocalizedMessage(501332);                               // All friends have been removed from this house.
                }
                else
                {
                    from.SendLocalizedMessage(501319);                               // Only the house owner may remove friends.
                }

                break;
            }

            case 10:                               // Ban
            {
                from.SendLocalizedMessage(501325); // Target the individual to ban from this house.
                from.Target = new HouseBanTarget(true, m_House);

                break;
            }

            case 11:                               // Eject
            {
                from.SendLocalizedMessage(501326); // Target the individual to eject from this house.
                from.Target = new HouseKickTarget(m_House);

                break;
            }

            case 12:                     // List bans
            {
                from.CloseGump <HouseGump>();;
                from.CloseGump <HouseListGump>();;
                from.CloseGump <HouseRemoveGump>();;
                from.SendGump(new HouseListGump(1011271, m_House.Bans, m_House, true));

                break;
            }

            case 13:                     // Remove ban
            {
                from.CloseGump <HouseGump>();;
                from.CloseGump <HouseListGump>();;
                from.CloseGump <HouseRemoveGump>();;
                from.SendGump(new HouseRemoveGump(1011269, m_House.Bans, m_House, true));

                break;
            }

            case 14:                     // Transfer ownership
            {
                if (isOwner)
                {
                    from.SendLocalizedMessage(501309);                               // Target the person to whom you wish to give this house.
                    from.Target = new HouseOwnerTarget(m_House);
                }
                else
                {
                    from.SendLocalizedMessage(501310);                               // Only the house owner may do this.
                }

                break;
            }

            case 15:                     // Demolish house
            {
                if (isOwner)
                {
                    if (m_House.FindGuildstone() != null)
                    {
                        from.SendLocalizedMessage(501389);                                   // You cannot redeed a house with a guildstone inside.
                    }
                    else
                    {
                        Item toGive = m_House.GetDeed();

                        Container backpack = from.Backpack;


                        if (backpack.TryDropItem(from, toGive, false))
                        {
                            from.SendLocalizedMessage(501391);         // You place the deed in your backpack.

                            m_House.RemoveKeys(from);
                            m_House.Delete();
                        }
                        else
                        {
                            from.SendLocalizedMessage(501294);         // Redeeding the house has failed.
                            from.SendLocalizedMessage(501390);         // You do not have room in your backpack for a house deed.

                            toGive.Delete();
                        }
                    }
                }
                else
                {
                    from.SendLocalizedMessage(501320);                               // Only the house owner may do this.
                }

                break;
            }

            case 16:                     // Change locks
            {
                if (m_House.Public)
                {
                    from.SendLocalizedMessage(501669);                              // Public houses are always unlocked.
                }
                else
                {
                    if (isOwner)
                    {
                        m_House.RemoveKeys(from);
                        m_House.ChangeLocks(from);

                        from.SendLocalizedMessage(501306);                                   // The locks on your front door have been changed, and new master keys have been placed in your bank and your backpack.
                    }
                    else
                    {
                        from.SendLocalizedMessage(501303);                                   // Only the house owner may change the house locks.
                    }
                }

                break;
            }

            case 17:                     // Declare public/private
            {
                if (isOwner)
                {
                    if (m_House.Public && m_House.PlayerVendors.Count > 0)
                    {
                        from.SendLocalizedMessage(501887);                                   // You have vendors working out of this building. It cannot be declared private until there are no vendors in place.
                        break;
                    }

                    m_House.Public = !m_House.Public;
                    if (!m_House.Public)
                    {
                        m_House.ChangeLocks(from);

                        from.SendLocalizedMessage(501888);                                   // This house is now private.
                        from.SendLocalizedMessage(501306);                                   // The locks on your front door have been changed, and new master keys have been placed in your bank and your backpack.
                    }
                    else
                    {
                        m_House.RemoveKeys(from);
                        m_House.RemoveLocks();
                        from.SendLocalizedMessage(501886);                                  //This house is now public. Friends of the house my now have vendors working out of this building.
                    }
                }
                else
                {
                    from.SendLocalizedMessage(501307);                               // Only the house owner may do this.
                }

                break;
            }

            case 18:                     // Change type
            {
                if (isOwner)
                {
                    if (m_House.Public && info.Switches.Length > 0)
                    {
                        int index = info.Switches[0] - 1;

                        if (index >= 0 && index < 53)
                        {
                            m_House.ChangeSignType(2980 + index * 2);
                        }
                    }
                }
                else
                {
                    from.SendLocalizedMessage(501307);                               // Only the house owner may do this.
                }

                break;
            }
            }
        }
        public override void OnResponse(NetState state, RelayInfo info)
        {
            if (info.ButtonID == 1 && !m_House.Deleted)
            {
                if (m_House.IsOwner(m_Mobile))
                {
                    if (m_House.MovingCrate != null || m_House.InternalizedVendors.Count > 0)
                    {
                        return;
                    }
                    else if (!Guilds.Guild.NewGuildSystem && m_House.FindGuildstone() != null)
                    {
                        m_Mobile.SendLocalizedMessage(501389);                           // You cannot redeed a house with a guildstone inside.
                        return;
                    }

                    /*else if ( m_House.PlayerVendors.Count > 0 )
                     * {
                     *      m_Mobile.SendLocalizedMessage( 503236 ); // You need to collect your vendor's belongings before moving.
                     *      return;
                     * }*/
                    else if (m_House.HasRentedVendors && m_House.VendorInventories.Count > 0)
                    {
                        m_Mobile.SendLocalizedMessage(1062679);                           // You cannot do that that while you still have contract vendors or unclaimed contract vendor inventory in your house.
                        return;
                    }
                    else if (m_House.HasRentedVendors)
                    {
                        m_Mobile.SendLocalizedMessage(1062680);                           // You cannot do that that while you still have contract vendors in your house.
                        return;
                    }
                    else if (m_House.VendorInventories.Count > 0)
                    {
                        m_Mobile.SendLocalizedMessage(1062681);                           // You cannot do that that while you still have unclaimed contract vendor inventory in your house.
                        return;
                    }


                    if (m_Mobile.AccessLevel >= AccessLevel.GameMaster)
                    {
                        m_Mobile.SendMessage("You do not get a refund for your house as you are not a player");
                    }
                    else
                    {
                        Item toGive = null;

                        if (m_House.IsAosRules)
                        {
                            if (m_House.Price > 0)
                            {
                                toGive = new BankCheck(m_House.Price);
                            }
                            else
                            {
                                toGive = m_House.GetDeed();
                            }
                        }
                        else
                        {
                            toGive = m_House.GetDeed();

                            if (toGive == null && m_House.Price > 0)
                            {
                                toGive = new BankCheck(m_House.Price);
                            }
                        }

                        if (toGive != null)
                        {
                            BankBox box = m_Mobile.BankBox;

                            if (box.TryDropItem(m_Mobile, toGive, false))
                            {
                                if (toGive is BankCheck)
                                {
                                    m_Mobile.SendLocalizedMessage(1060397, ((BankCheck)toGive).Worth.ToString());                                         // ~1_AMOUNT~ gold has been deposited into your bank box.
                                }
                                m_House.RemoveKeys(m_Mobile);
                                m_House.Delete();
                            }
                            else
                            {
                                toGive.Delete();
                                m_Mobile.SendLocalizedMessage(500390);                                   // Your bank box is full.
                            }
                        }
                        else
                        {
                            m_Mobile.SendMessage("Unable to refund house.");
                        }
                    }
                }
                else
                {
                    m_Mobile.SendLocalizedMessage(501320);                       // Only the house owner may do this.
                }
            }
        }
예제 #17
0
        public static void ProcessResponse( Mobile from, BaseHouse house, int type, int index, ArrayList vendorList, HouseGumpPage page )
        {
            if ( house.Deleted )
                return;

            bool isCombatRestricted = house.IsCombatRestricted( from );

            bool isOwner = house.IsOwner( from );
            bool isCoOwner = isOwner || house.IsCoOwner( from );
            bool isFriend = isCoOwner || house.IsFriend( from );

            if ( isCombatRestricted )
                isFriend = isCoOwner = isFriend = false;

            if ( !from.CheckAlive() )
                return;

            Item sign = house.Sign;

            if ( sign == null || from.Map != sign.Map || !from.InRange( sign.GetWorldLocation(), 18 ) )
                return;

            HouseFoundation foundation = house as HouseFoundation;
            bool isCustomizable = ( foundation != null );

            if ( page == HouseGumpPage.Vendors )
            {
                if ( index >= 0 && index < vendorList.Count )
                {
                    PlayerVendor vendor = (PlayerVendor) vendorList[index];

                    if ( !vendor.CanInteractWith( from, false ) )
                        return;

                    if ( from.Map != sign.Map || !from.InRange( sign, 5 ) )
                        from.SendLocalizedMessage( 1062429 ); // You must be within five paces of the house sign to use this option.
                    else if ( vendor.IsOwner( from ) )
                        vendor.SendOwnerGump( from );
                    else
                        vendor.OpenBackpack( from );
                }

                return;
            }

            if ( !isFriend )
                return;

            switch ( type )
            {
                case 0:
                    {
                        switch ( index )
                        {
                            case 0: // Banish
                                {
                                    if ( house.Public )
                                    {
                                        from.SendLocalizedMessage( 501325 ); // Target the individual to ban from this house.
                                        from.Target = new HouseBanTarget( true, house );
                                    }

                                    break;
                                }
                            case 1: // Lift Ban
                                {
                                    if ( house.Public )
                                        from.SendGump( new HouseGump( HouseGumpPage.RemoveBan, from, house ) );

                                    break;
                                }
                            case 2: // Grant Access
                                {
                                    if ( !house.Public )
                                    {
                                        from.SendLocalizedMessage( 1060711 ); // Target the person you would like to grant access to.
                                        from.Target = new HouseAccessTarget( house );
                                    }

                                    break;
                                }
                            case 3: // Revoke Access
                                {
                                    if ( !house.Public )
                                        from.SendGump( new HouseGump( HouseGumpPage.RemoveAccess, from, house ) );

                                    break;
                                }
                        }

                        break;
                    }
                case 1:
                    {
                        HouseGumpPage gpage;

                        switch ( index )
                        {
                            case 0:
                                gpage = HouseGumpPage.Information;
                                break;
                            case 1:
                                gpage = HouseGumpPage.Security;
                                break;
                            case 2:
                                gpage = HouseGumpPage.Storage;
                                break;
                            case 3:
                                gpage = HouseGumpPage.Customize;
                                break;
                            case 4:
                                gpage = HouseGumpPage.Ownership;
                                break;
                            default:
                                return;
                        }

                        from.SendGump( new HouseGump( gpage, from, house ) );
                        break;
                    }
                case 3:
                    {
                        switch ( index )
                        {
                            case 0: // View Co-Owner List
                                {
                                    if ( isCoOwner )
                                        from.SendGump( new HouseGump( HouseGumpPage.ListCoOwner, from, house ) );

                                    break;
                                }
                            case 1: // Add a Co-Owner
                                {
                                    if ( isOwner )
                                    {
                                        from.SendLocalizedMessage( 501328 ); // Target the person you wish to name a co-owner of your household.
                                        from.Target = new CoOwnerTarget( true, house );
                                    }

                                    break;
                                }
                            case 2: // Remove a Co-Owner
                                {
                                    if ( isOwner )
                                        from.SendGump( new HouseGump( HouseGumpPage.RemoveCoOwner, from, house ) );

                                    break;
                                }
                            case 3: // Clear Co-Owner List
                                {
                                    if ( isOwner )
                                        from.SendGump( new WarningGump( 1060635, 30720, 1060736, 32512, 420, 280, new WarningGumpCallback( ClearCoOwners_Callback ), house ) );

                                    break;
                                }
                            case 4: // View Friends List
                                {
                                    from.SendGump( new HouseGump( HouseGumpPage.ListFriend, from, house ) );

                                    break;
                                }
                            case 5: // Add a Friend
                                {
                                    if ( isCoOwner )
                                    {
                                        from.SendLocalizedMessage( 501317 ); // Target the person you wish to name a friend of your household.
                                        from.Target = new HouseFriendTarget( true, house );
                                    }

                                    break;
                                }
                            case 6: // Remove a Friend
                                {
                                    if ( isCoOwner )
                                        from.SendGump( new HouseGump( HouseGumpPage.RemoveFriend, from, house ) );

                                    break;
                                }
                            case 7: // Clear Friend List
                                {
                                    if ( isCoOwner )
                                        from.SendGump( new WarningGump( 1060635, 30720, 1018039, 32512, 420, 280, new WarningGumpCallback( ClearFriends_Callback ), house ) );

                                    break;
                                }
                            case 8: // View Ban List
                                {
                                    from.SendGump( new HouseGump( HouseGumpPage.ListBan, from, house ) );

                                    break;
                                }
                            case 9: // Clear Ban List
                                {
                                    from.SendGump( new WarningGump( 1060635, 30720, 1060753, 32512, 420, 280, new WarningGumpCallback( ClearBans_Callback ), house ) );

                                    break;
                                }
                            case 10: // View Access List
                                {
                                    from.SendGump( new HouseGump( HouseGumpPage.ListAccess, from, house ) );

                                    break;
                                }
                            case 11: // Clear Access List
                                {
                                    from.SendGump( new WarningGump( 1060635, 30720, 1061842, 32512, 420, 280, new WarningGumpCallback( ClearAccess_Callback ), house ) );

                                    break;
                                }
                            case 12: // Make Private
                                {
                                    if ( isOwner )
                                    {
                                        if ( house.PlayerVendors.Count > 0 )
                                        {
                                            // You have vendors working out of this building. It cannot be declared private until there are no vendors in place.
                                            from.SendGump( new NoticeGump( 1060637, 30720, 501887, 32512, 320, 180, new NoticeGumpCallback( PublicPrivateNotice_Callback ), house ) );
                                            break;
                                        }

                                        if ( house.VendorRentalContracts.Count > 0 )
                                        {
                                            // You cannot currently take this action because you have vendor contracts locked down in your home.  You must remove them first.
                                            from.SendGump( new NoticeGump( 1060637, 30720, 1062351, 32512, 320, 180, new NoticeGumpCallback( PublicPrivateNotice_Callback ), house ) );
                                            break;
                                        }

                                        house.Public = false;

                                        house.ChangeLocks( from );

                                        // This house is now private.
                                        from.SendGump( new NoticeGump( 1060637, 30720, 501888, 32512, 320, 180, new NoticeGumpCallback( PublicPrivateNotice_Callback ), house ) );

                                        Region r = house.Region;
                                        List<Mobile> list = r.GetMobiles();

                                        for ( int i = 0; i < list.Count; ++i )
                                        {
                                            Mobile m = list[i];

                                            if ( !house.HasAccess( m ) && house.IsInside( m ) )
                                                m.Location = house.BanLocation;
                                        }
                                    }

                                    break;
                                }
                            case 13: // Make Public
                                {
                                    if ( isOwner )
                                    {
                                        house.Public = true;

                                        house.RemoveKeys( from );
                                        house.RemoveLocks();

                                        // This house is now public. The owner may now place vendors and vendor rental contracts.
                                        from.SendGump( new NoticeGump( 1060637, 30720, 501886, 32512, 320, 180, new NoticeGumpCallback( PublicPrivateNotice_Callback ), house ) );

                                        Region r = house.Region;
                                        List<Mobile> list = r.GetMobiles();

                                        for ( int i = 0; i < list.Count; ++i )
                                        {
                                            Mobile m = list[i];

                                            if ( house.IsBanned( m ) && house.IsInside( m ) )
                                                m.Location = house.BanLocation;
                                        }
                                    }

                                    break;
                                }
                        }

                        break;
                    }
                case 5:
                    {
                        switch ( index )
                        {
                            case 0: // Convert Into Customizable House
                                {
                                    if ( isOwner && !isCustomizable )
                                    {
                                        if ( house.HasRentedVendors )
                                        {
                                            // You cannot perform this action while you still have vendors rented out in this house.
                                            from.SendGump( new NoticeGump( 1060637, 30720, 1062395, 32512, 320, 180, new NoticeGumpCallback( CustomizeNotice_Callback ), house ) );
                                        }
                                        else
                                        {
                                            HousePlacementEntry e = house.ConvertEntry;

                                            if ( e != null )
                                            {
                                                /* You are about to turn your house into a customizable house.
                                                * You will be refunded the value of this house, and then be charged the cost of the equivalent customizable dirt lot.
                                                * All of your possessions in the house will be transported to a Moving Crate.
                                                * Deed-based house add-ons will be converted back into deeds.
                                                * Vendors and barkeeps will also be stored in the Moving Crate.
                                                * Your house will be leveled to its foundation, and you will be able to build new walls, windows, doors, and stairs.
                                                * Are you sure you wish to continue?
                                                */
                                                from.SendGump( new WarningGump( 1060635, 30720, 1060013, 32512, 420, 280, new WarningGumpCallback( ConvertHouse_Callback ), house ) );
                                            }
                                        }
                                    }

                                    break;
                                }
                            case 1: // Customize This House
                                {
                                    if ( isOwner && isCustomizable )
                                    {
                                        if ( house.HasRentedVendors )
                                        {
                                            // You cannot perform this action while you still have vendors rented out in this house.
                                            from.SendGump( new NoticeGump( 1060637, 30720, 1062395, 32512, 320, 180, new NoticeGumpCallback( CustomizeNotice_Callback ), house ) );
                                        }
                                        else
                                        {
                                            foundation.BeginCustomize( from );
                                        }
                                    }

                                    break;
                                }
                            case 2: // Relocate Moving Crate
                                {
                                    MovingCrate crate = house.MovingCrate;

                                    if ( isOwner && crate != null )
                                    {
                                        if ( !house.IsInside( from ) )
                                        {
                                            from.SendLocalizedMessage( 502092 ); // You must be in your house to do this.
                                        }
                                        else
                                        {
                                            crate.MoveToWorld( from.Location, from.Map );
                                            crate.RestartTimer();
                                        }
                                    }

                                    break;
                                }
                            case 3: // Change House Sign
                                {
                                    if ( isOwner && house.Public )
                                        from.SendGump( new HouseGump( HouseGumpPage.ChangeSign, from, house ) );

                                    break;
                                }
                            case 4: // Change House Sign Hanger
                                {
                                    if ( isOwner && isCustomizable )
                                        from.SendGump( new HouseGump( HouseGumpPage.ChangeHanger, from, house ) );

                                    break;
                                }
                            case 5: // Change Signpost
                                {
                                    if ( isOwner && isCustomizable && foundation.Signpost != null )
                                        from.SendGump( new HouseGump( HouseGumpPage.ChangePost, from, house ) );

                                    break;
                                }
                            case 6: // Change Foundation Style
                                {
                                    if ( isOwner && isCustomizable )
                                        from.SendGump( new HouseGump( HouseGumpPage.ChangeFoundation, from, house ) );

                                    break;
                                }
                            case 7: // Rename House
                                {
                                    if ( isCoOwner )
                                        from.Prompt = new RenamePrompt( house );

                                    break;
                                }
                        }

                        break;
                    }
                case 6:
                    {
                        switch ( index )
                        {
                            case 0: // Demolish
                                {
                                    if ( isOwner && house.MovingCrate == null )
                                    {
                                        if ( house.FindGuildstone() != null )
                                            from.SendLocalizedMessage( 501389 ); // You cannot redeed a house with a guildstone inside.
                                        else
                                            from.SendGump( new HouseDemolishGump( from, house ) );
                                    }

                                    break;
                                }
                            case 1: // Trade House
                                {
                                    if ( isOwner )
                                    {
                                        if ( house.HasPersonalVendors )
                                        {
                                            from.SendLocalizedMessage( 1062467 ); // You cannot trade this house while you still have personal vendors inside.
                                        }
                                        else if ( house.DecayLevel == DecayLevel.DemolitionPending )
                                        {
                                            from.SendLocalizedMessage( 1005321 ); // This house has been marked for demolition, and it cannot be transferred.
                                        }
                                        else
                                        {
                                            from.SendLocalizedMessage( 501309 ); // Target the person to whom you wish to give this house.
                                            from.Target = new HouseOwnerTarget( house );
                                        }
                                    }

                                    break;
                                }
                            case 2: // Make Primary
                                {
                                    break;
                                }
                        }

                        break;
                    }
                case 7:
                    {
                        if ( isOwner && isCustomizable && index >= 0 && index < m_HangerNumbers.Length )
                        {
                            Item hanger = foundation.SignHanger;

                            if ( hanger != null )
                                hanger.ItemID = m_HangerNumbers[index];

                            from.SendGump( new HouseGump( HouseGumpPage.Customize, from, house ) );
                        }

                        break;
                    }
                case 8:
                    {
                        if ( isOwner && isCustomizable )
                        {
                            FoundationType newType;

                            switch ( index )
                            {
                                case 0:
                                    newType = FoundationType.DarkWood;
                                    break;
                                case 1:
                                    newType = FoundationType.LightWood;
                                    break;
                                case 2:
                                    newType = FoundationType.Dungeon;
                                    break;
                                case 3:
                                    newType = FoundationType.Brick;
                                    break;
                                case 4:
                                    newType = FoundationType.Stone;
                                    break;
                                case 5:
                                    newType = FoundationType.ElvenStone;
                                    break;
                                case 6:
                                    newType = FoundationType.ElvenWood;
                                    break;
                                case 7:
                                    newType = FoundationType.ElvenSimple;
                                    break;
                                case 8:
                                    newType = FoundationType.ElvenPlain;
                                    break;
                                case 9:
                                    newType = FoundationType.Crystal;
                                    break;
                                case 10:
                                    newType = FoundationType.Shadow;
                                    break;
                                case 11:
                                    newType = FoundationType.GargishGreenMarble;
                                    break;
                                case 12:
                                    newType = FoundationType.GargishTwoToneStone;
                                    break;
                                default:
                                    return;
                            }

                            foundation.Type = newType;

                            DesignState state = foundation.BackupState;
                            HouseFoundation.ApplyFoundation( newType, state.Components );
                            state.OnRevised();

                            state = foundation.DesignState;
                            HouseFoundation.ApplyFoundation( newType, state.Components );
                            state.OnRevised();

                            state = foundation.CurrentState;
                            HouseFoundation.ApplyFoundation( newType, state.Components );
                            state.OnRevised();

                            foundation.Delta( ItemDelta.Update );

                            from.SendGump( new HouseGump( HouseGumpPage.Customize, from, house ) );
                        }

                        break;
                    }
                case 9:
                    {
                        if ( isOwner && house.Public && index >= 0 && index < 54 )
                        {
                            house.ChangeSignType( 2980 + ( index * 2 ) );
                            from.SendGump( new HouseGump( HouseGumpPage.Customize, from, house ) );
                        }

                        break;
                    }
                case 10:
                    {
                        if ( isOwner && vendorList != null && index >= 0 && index < vendorList.Count )
                        {
                            house.RemoveCoOwner( from, (Mobile) vendorList[index] );

                            if ( house.CoOwners.Count > 0 )
                                from.SendGump( new HouseGump( HouseGumpPage.RemoveCoOwner, from, house ) );
                            else
                                from.SendGump( new HouseGump( HouseGumpPage.Security, from, house ) );
                        }

                        break;
                    }
                case 11:
                    {
                        if ( isCoOwner && vendorList != null && index >= 0 && index < vendorList.Count )
                        {
                            house.RemoveFriend( from, (Mobile) vendorList[index] );

                            if ( house.Friends.Count > 0 )
                                from.SendGump( new HouseGump( HouseGumpPage.RemoveFriend, from, house ) );
                            else
                                from.SendGump( new HouseGump( HouseGumpPage.Security, from, house ) );
                        }

                        break;
                    }
                case 12:
                    {
                        if ( vendorList != null && index >= 0 && index < vendorList.Count )
                        {
                            house.RemoveBan( from, (Mobile) vendorList[index] );

                            if ( house.Bans.Count > 0 )
                                from.SendGump( new HouseGump( HouseGumpPage.RemoveBan, from, house ) );
                            else
                                from.SendGump( new HouseGump( HouseGumpPage.Security, from, house ) );
                        }

                        break;
                    }
                case 13:
                    {
                        if ( vendorList != null && index >= 0 && index < vendorList.Count )
                        {
                            house.RemoveAccess( from, (Mobile) vendorList[index] );

                            if ( house.Access.Count > 0 )
                                from.SendGump( new HouseGump( HouseGumpPage.RemoveAccess, from, house ) );
                            else
                                from.SendGump( new HouseGump( HouseGumpPage.Security, from, house ) );
                        }

                        break;
                    }
                case 14:
                    {
                        if ( isOwner && isCustomizable && index >= 0 && index < m_PostNumbers.Length )
                        {
                            foundation.SignpostGraphic = m_PostNumbers[index];
                            foundation.CheckSignpost();

                            from.SendGump( new HouseGump( HouseGumpPage.Customize, from, house ) );
                        }

                        break;
                    }
            }
        }
예제 #18
0
        public override void OnResponse(NetState state, RelayInfo info)
        {
            if (info.ButtonID == 1 && !m_House.Deleted)
            {
                if (m_House.IsOwner(m_Mobile))
                {
                    if (m_House.MovingCrate != null || m_House.InternalizedVendors.Count > 0)
                    {
                        m_Mobile.SendLocalizedMessage(1080455); // You can not resize your house at this time. Please remove all items fom the moving crate and try again.
                        return;
                    }
                    else if (!Guilds.Guild.NewGuildSystem && m_House.FindGuildstone() != null)
                    {
                        m_Mobile.SendLocalizedMessage(501389); // You cannot redeed a house with a guildstone inside.
                        return;
                    }

                    /*else if ( m_House.PlayerVendors.Count > 0 )
                     * {
                     * m_Mobile.SendLocalizedMessage( 503236 ); // You need to collect your vendor's belongings before moving.
                     * return;
                     * }*/
                    else if (m_House.HasRentedVendors && m_House.VendorInventories.Count > 0)
                    {
                        m_Mobile.SendLocalizedMessage(1062679); // You cannot do that that while you still have contract vendors or unclaimed contract vendor inventory in your house.
                        return;
                    }
                    else if (m_House.HasRentedVendors)
                    {
                        m_Mobile.SendLocalizedMessage(1062680); // You cannot do that that while you still have contract vendors in your house.
                        return;
                    }
                    else if (m_House.VendorInventories.Count > 0)
                    {
                        m_Mobile.SendLocalizedMessage(1062681); // You cannot do that that while you still have unclaimed contract vendor inventory in your house.
                        return;
                    }

                    if (m_Mobile.AccessLevel >= AccessLevel.GameMaster)
                    {
                        m_Mobile.SendMessage("You do not get a refund for your house as you are not a player");
                        m_House.RemoveKeys(m_Mobile);

                        var region = new TempNoHousingRegion(m_House, m_Mobile);
                        Timer.DelayCall(m_House.RestrictedPlacingTime, region.Unregister);

                        m_House.Delete();
                    }
                    else
                    {
                        Item toGive = null;

                        if (m_House.IsAosRules)
                        {
                            if (m_House.Price > 0)
                            {
                                if (!Core.TOL)
                                {
                                    toGive = new BankCheck(m_House.Price);
                                }
                                else
                                {
                                    Banker.Deposit(m_Mobile, m_House.Price, true);

                                    m_House.RemoveKeys(m_Mobile);

                                    var region = new TempNoHousingRegion(m_House, m_Mobile);
                                    Timer.DelayCall(m_House.RestrictedPlacingTime, region.Unregister);

                                    m_House.Delete();

                                    return;
                                }
                            }
                            else
                            {
                                toGive = m_House.GetDeed();
                            }
                        }
                        else
                        {
                            toGive = m_House.GetDeed();

                            if (toGive == null && m_House.Price > 0)
                            {
                                toGive = new BankCheck(m_House.Price);
                            }
                        }

                        if (toGive != null)
                        {
                            BankBox box = m_Mobile.BankBox;

                            if (box.TryDropItem(m_Mobile, toGive, false))
                            {
                                if (toGive is BankCheck)
                                {
                                    m_Mobile.SendLocalizedMessage(1060397, ((BankCheck)toGive).Worth.ToString()); // ~1_AMOUNT~ gold has been deposited into your bank box.
                                }
                                m_House.RemoveKeys(m_Mobile);

                                var region = new TempNoHousingRegion(m_House, m_Mobile);
                                Timer.DelayCall(m_House.RestrictedPlacingTime, region.Unregister);

                                m_House.Delete();
                            }
                            else
                            {
                                toGive.Delete();
                                m_Mobile.SendLocalizedMessage(500390); // Your bank box is full.
                            }
                        }
                        else
                        {
                            m_Mobile.SendMessage("Unable to refund house.");
                        }
                    }
                }
                else
                {
                    m_Mobile.SendLocalizedMessage(501320); // Only the house owner may do
                }
            }
            else if (info.ButtonID == 0)
            {
                m_Mobile.CloseGump(typeof(ConfirmHouseResize));
                m_Mobile.SendGump(new HouseGumpAOS(HouseGumpPageAOS.Customize, m_Mobile, m_House));
            }
        }
예제 #19
0
        public override void OnResponse(NetState state, RelayInfo info)
        {
            if (info.ButtonID == 1 && !m_House.Deleted)
            {
                if (m_House.IsOwner(m_Mobile))
                {
                    if (m_House.FindGuildstone() != null)
                    {
                        m_Mobile.SendLocalizedMessage(501389);                           // You cannot redeed a house with a guildstone inside.
                        return;
                    }
//Pix: 7/13/2008 - Removing the requirement of a townshipstone to be in a house.
//					else if (m_House.FindTownshipStone() != null)
//					{
//						m_Mobile.SendMessage("You can't demolish a house which holds a Township stone.");
//						return;
//					}
                    //It was decided that we should just auto-dismiss the township NPC if the house is demolished
                    //else if (m_House.FindTownshipNPC() != null)
                    //{
                    //	m_Mobile.SendMessage("You need to dismiss your Township NPC before moving.");
                    //	return;
                    //}
                    else if (m_House.FindPlayerVendor() != null)
                    {
                        m_Mobile.SendLocalizedMessage(503236);                         // You need to collect your vendor's belongings before moving.
                        return;
                    }
                    else if (m_House.FindPlayer() != null)
                    {
                        m_Mobile.SendMessage("It is not safe to demolish this house with someone still inside.");                         // You need to collect your vendor's belongings before moving.
                        //Tell staff that an exploit is in progress
                        //Server.Scripts.Commands.CommandHandlers.BroadcastMessage( AccessLevel.Counselor,
                        //0x482,
                        //String.Format( "Exploit in progress at {0}. Stay hidden, Jail involved players, get acct name, ban.", m_House.Location.ToString() ) );
                        return;
                    }

                    Item toGive = null;
                    Item Refund = null;     // for various home upgrades

                    if (m_House.IsAosRules)
                    {
                        if (m_House.Price > 0)
                        {
                            toGive = new BankCheck(m_House.Price);
                        }
                        else
                        {
                            toGive = m_House.GetDeed();
                        }
                    }
                    else
                    {
                        toGive = m_House.GetDeed();

                        if (toGive == null && m_House.Price > 0)
                        {
                            toGive = new BankCheck(m_House.Price);
                        }

                        if (m_House.UpgradeCosts > 0)
                        {
                            Refund = new BankCheck((int)m_House.UpgradeCosts);
                        }
                    }

                    if (toGive != null)
                    {
                        BankBox box = m_Mobile.BankBox;

                        // Adam: TryDropItem() fails if trhe bank is full, and this isn't the time to be
                        //  failing .. just overload their bank.
                        if (box != null /*&& box.TryDropItem( m_Mobile, toGive, false )*/)
                        {
                            box.AddItem(toGive);
                            if (toGive is BankCheck)
                            {
                                m_Mobile.SendLocalizedMessage(1060397, ((BankCheck)toGive).Worth.ToString());                                   // ~1_AMOUNT~ gold has been deposited into your bank box.
                            }
                            if (Refund != null)
                            {
                                box.AddItem(Refund);
                                if (Refund is BankCheck)
                                {
                                    m_Mobile.SendLocalizedMessage(1060397, ((BankCheck)Refund).Worth.ToString()); // ~1_AMOUNT~ gold has been deposited into your bank box.
                                }
                            }

                            m_House.RemoveKeys(m_Mobile);
                            m_House.Delete();
                        }
                        else
                        {
                            toGive.Delete();
                            m_Mobile.SendLocalizedMessage(500390);                               // Your bank box is full.
                        }
                    }
                    else
                    {
                        m_Mobile.SendMessage("Unable to refund house.");
                    }
                }
                else
                {
                    m_Mobile.SendLocalizedMessage(501320);                       // Only the house owner may do this.
                }
            }
        }
예제 #20
0
        public override void OnResponse(NetState sender, RelayInfo info)
        {
            if (m_House.Deleted)
            {
                return;
            }

            Mobile from = sender.Mobile;

            bool isCombatRestricted = m_House.IsCombatRestricted(from);

            bool isOwner   = m_House.IsOwner(from);
            bool isCoOwner = isOwner || m_House.IsCoOwner(from);
            bool isFriend  = isCoOwner || m_House.IsFriend(from);

            if (isCombatRestricted)
            {
                isFriend = isCoOwner = isOwner = false;
            }

            if (!isFriend || !from.Alive)
            {
                return;
            }

            Item sign = m_House.Sign;

            if (sign == null || from.Map != sign.Map || !from.InRange(sign.GetWorldLocation(), 18))
            {
                return;
            }

            switch (info.ButtonID)
            {
            case 1:                     // Rename sign
            {
                from.Prompt = new RenamePrompt(m_House);
                from.SendMessage("Digite o nome da casa");     // What dost thou wish the sign to say?

                break;
            }

            case 2:                     // List of co-owners
            {
                from.CloseGump(typeof(HouseGump));
                from.CloseGump(typeof(HouseListGump));
                from.CloseGump(typeof(HouseRemoveGump));
                from.SendGump(new HouseListGump(1011275, m_House.CoOwners, m_House, false));

                break;
            }

            case 3:                     // Add co-owner
            {
                if (isOwner)
                {
                    //from.SendLocalizedMessage( 501328 ); // Target the person you wish to name a co-owner of your household.
                    from.SendMessage("Selecione a pessoa para ser Sócio da casa");
                    from.Target = new CoOwnerTarget(true, m_House);
                }
                else
                {
                    from.SendMessage("Apenas o Dono da Casa pode adicionar Sócios");
                    //from.SendLocalizedMessage( 501327 ); // Only the house owner may add Co-owners.
                }

                break;
            }

            case 4:                     // Remove co-owner
            {
                if (isOwner)
                {
                    from.CloseGump(typeof(HouseGump));
                    from.CloseGump(typeof(HouseListGump));
                    from.CloseGump(typeof(HouseRemoveGump));
                    from.SendGump(new HouseRemoveGump(1011274, m_House.CoOwners, m_House, false));
                }
                else
                {
                    from.SendMessage("Apenas o Dono da Casa pode remover Sócios");
                    //from.SendLocalizedMessage( 501329 ); // Only the house owner may remove co-owners.
                }

                break;
            }

            case 5:                     // Clear co-owners
            {
                if (isOwner)
                {
                    if (m_House.CoOwners != null)
                    {
                        m_House.CoOwners.Clear();
                    }

                    //from.SendLocalizedMessage( 501333 ); // All co-owners have been removed from this house.
                    from.SendMessage("Todos os Sócios da Casa foram removidos.");
                }
                else
                {
                    from.SendMessage("Apenas o Dono da Casa pode remover Sócios");
                    //from.SendLocalizedMessage( 501330 ); // Only the house owner may remove co-owners.
                }

                break;
            }

            case 6:                     // List friends
            {
                from.CloseGump(typeof(HouseGump));
                from.CloseGump(typeof(HouseListGump));
                from.CloseGump(typeof(HouseRemoveGump));
                from.SendGump(new HouseListGump(1011273, m_House.Friends, m_House, false));

                break;
            }

            case 7:                     // Add friend
            {
                if (isCoOwner)
                {
                    from.SendMessage("Selecione a pessoa para ser Amigo na casa");
                    //from.SendLocalizedMessage( 501317 ); // Target the person you wish to name a friend of your household.
                    from.Target = new HouseFriendTarget(true, m_House);
                }
                else
                {
                    //from.SendMessage("Apenas o Dono da Casa pode adicionar Amigos");
                    from.SendLocalizedMessage(501316);                               // Only the house owner may add friends.
                }

                break;
            }

            case 8:                     // Remove friend
            {
                if (isCoOwner)
                {
                    from.CloseGump(typeof(HouseGump));
                    from.CloseGump(typeof(HouseListGump));
                    from.CloseGump(typeof(HouseRemoveGump));
                    from.SendGump(new HouseRemoveGump(1011272, m_House.Friends, m_House, false));
                }
                else
                {
                    from.SendMessage("Apenas o Dono da Casa pode remover Amigos");
                    //from.SendLocalizedMessage( 501318 ); // Only the house owner may remove friends.
                }

                break;
            }

            case 9:                     // Clear friends
            {
                if (isCoOwner)
                {
                    if (m_House.Friends != null)
                    {
                        m_House.Friends.Clear();
                    }

                    from.SendMessage("Todos os Amigos da Casa foram removidos.");
                    //from.SendLocalizedMessage( 501332 ); // All friends have been removed from this house.
                }
                else
                {
                    from.SendMessage("Apenas o Dono da Casa pode remover Amigos");
                    //from.SendLocalizedMessage( 501319 ); // Only the house owner may remove friends.
                }

                break;
            }

            case 10:                     // Ban
            {
                from.SendMessage("Selecione a pessoa que você deseja Banir da Casa");
                //from.SendLocalizedMessage( 501325 ); // Target the individual to ban from this house.
                from.Target = new HouseBanTarget(true, m_House);

                break;
            }

            case 11:                     // Eject
            {
                from.SendMessage("Selecione a pessoa que você deseja Kickar da Casa");
                from.SendLocalizedMessage(501326);                           // Target the individual to eject from this house.
                from.Target = new HouseKickTarget(m_House);

                break;
            }

            case 12:                     // List bans
            {
                from.CloseGump(typeof(HouseGump));
                from.CloseGump(typeof(HouseListGump));
                from.CloseGump(typeof(HouseRemoveGump));
                from.SendGump(new HouseListGump(1011271, m_House.Bans, m_House, true));

                break;
            }

            case 13:                     // Remove ban
            {
                from.CloseGump(typeof(HouseGump));
                from.CloseGump(typeof(HouseListGump));
                from.CloseGump(typeof(HouseRemoveGump));
                from.SendGump(new HouseRemoveGump(1011269, m_House.Bans, m_House, true));

                break;
            }

            case 14:                     // Transfer ownership
            {
                if (isOwner)
                {
                    from.SendMessage("Selecione a pessoa que você deseja Transferir a Casa");
                    //from.SendLocalizedMessage( 501309 ); // Target the person to whom you wish to give this house.
                    from.Target = new HouseOwnerTarget(m_House);
                }
                else
                {
                    from.SendMessage("Apenas o dono da Casa pode realizar esta acao");
                    //from.SendLocalizedMessage( 501310 ); // Only the house owner may do this.
                }

                break;
            }

            case 15:                     // Demolish house
            {
                if (isOwner)
                {
                    if (!Guilds.Guild.NewGuildSystem && m_House.FindGuildstone() != null)
                    {
                        from.SendMessage("Voce nao pode demolir a casa com uma GuildStone dentro");
                        //from.SendLocalizedMessage( 501389 ); // You cannot redeed a house with a guildstone inside.
                    }
                    else
                    {
                        from.CloseGump(typeof(HouseDemolishGump));
                        from.SendGump(new HouseDemolishGump(from, m_House));
                    }
                }
                else
                {
                    from.SendMessage("Apenas o dono da Casa pode realizar esta acao");
                    //from.SendLocalizedMessage( 501320 ); // Only the house owner may do this.
                }

                break;
            }

            case 16:                     // Change locks
            {
                if (m_House.Public)
                {
                    from.SendMessage("Casas publicas ficam sempre abertas");
                    //from.SendLocalizedMessage( 501669 );// Public houses are always unlocked.
                }
                else
                {
                    if (isOwner)
                    {
                        m_House.RemoveKeys(from);
                        m_House.ChangeLocks(from);

                        from.SendMessage("As fechaduras foram trocas. Uma copia da chave foi colocada na sua Mochila e outra em seu Banco");
                        //from.SendLocalizedMessage( 501306 ); // The locks on your front door have been changed, and new master keys have been placed in your bank and your backpack.
                    }
                    else
                    {
                        from.SendMessage("Apenas o Dono da Casa pode trocar as fechaduras");
                        //from.SendLocalizedMessage( 501303 ); // Only the house owner may change the house locks.
                    }
                }

                break;
            }

            case 17:                     // Declare public/private
            {
                if (isOwner)
                {
                    if (m_House.Public && m_House.PlayerVendors.Count > 0)
                    {
                        from.SendMessage("Existem vendedores na sua casa. Voce nao pode torna-la privada neste momento.");
                        //from.SendLocalizedMessage( 501887 ); // You have vendors working out of this building. It cannot be declared private until there are no vendors in place.
                        break;
                    }

                    m_House.Public = !m_House.Public;
                    if (!m_House.Public)
                    {
                        m_House.ChangeLocks(from);

                        from.SendMessage("Sua Casa agora foi definida como Privada");
                        from.SendMessage("As fechaduras foram trocas. Uma copia da chave foi colocada na sua Mochila e outra em seu Banco");
                        //from.SendLocalizedMessage( 501888 ); // This house is now private.
                        //from.SendLocalizedMessage( 501306 ); // The locks on your front door have been changed, and new master keys have been placed in your bank and your backpack.
                    }
                    else
                    {
                        m_House.RemoveKeys(from);
                        m_House.RemoveLocks();

                        from.SendMessage("Sua Casa agora é Publica. Amigos podem adicionar vendedores nesta casa");
                        //from.SendLocalizedMessage( 501886 );//This house is now public. Friends of the house my now have vendors working out of this building.
                    }
                }
                else
                {
                    from.SendMessage("Apenas o dono da Casa pode realizar esta acao");
                    //from.SendLocalizedMessage( 501307 ); // Only the house owner may do this.
                }

                break;
            }

            case 18:                     // Change type
            {
                if (isOwner)
                {
                    if (m_House.Public && info.Switches.Length > 0)
                    {
                        int index = info.Switches[0] - 1;

                        if (index >= 0 && index < 53)
                        {
                            m_House.ChangeSignType(2980 + (index * 2));
                        }
                    }
                }
                else
                {
                    from.SendMessage("Apenas o dono da Casa pode realizar esta acao");
                    //from.SendLocalizedMessage( 501307 ); // Only the house owner may do this.
                }

                break;
            }
            }
        }
        public override void OnResponse(NetState state, RelayInfo info)
        {
            if (info.ButtonID == 1 && !m_House.Deleted)
            {
                if (m_House.IsOwner(m_Mobile))
                {
                    if (m_House.MovingCrate != null || m_House.InternalizedVendors.Count > 0)
                    {
                        return;
                    }
                    else if (!Guilds.Guild.NewGuildSystem && m_House.FindGuildstone() != null)
                    {
                        m_Mobile.SendLocalizedMessage(501389);                           // You cannot redeed a house with a guildstone inside.
                        return;
                    }

                    /*else if ( m_House.PlayerVendors.Count > 0 )
                     * {
                     *      m_Mobile.SendLocalizedMessage( 503236 ); // You need to collect your vendor's belongings before moving.
                     *      return;
                     * }*/
                    else if (m_House.HasRentedVendors && m_House.VendorInventories.Count > 0)
                    {
                        m_Mobile.SendLocalizedMessage(1062679);                           // You cannot do that that while you still have contract vendors or unclaimed contract vendor inventory in your house.
                        return;
                    }
                    else if (m_House.HasRentedVendors)
                    {
                        m_Mobile.SendLocalizedMessage(1062680);                           // You cannot do that that while you still have contract vendors in your house.
                        return;
                    }
                    else if (m_House.VendorInventories.Count > 0)
                    {
                        m_Mobile.SendLocalizedMessage(1062681);                           // You cannot do that that while you still have unclaimed contract vendor inventory in your house.
                        return;
                    }

                    Item toGive = null;

                    if (m_House.IsAosRules)
                    {
                        if (m_House.Price > 0)
                        {
                            toGive = new BankCheck(m_House.Price);
                        }
                        else
                        {
                            toGive = m_House.GetDeed();
                        }
                    }
                    else
                    {
                        toGive = m_House.GetDeed();

                        if (toGive == null && m_House.Price > 0)
                        {
                            toGive = new BankCheck(m_House.Price);
                        }
                    }

                    if (toGive != null)
                    {
                        Container bp = m_Mobile.Backpack;

                        if (bp == null || !bp.TryDropItem(m_Mobile, toGive, true))
                        {
                            toGive.MoveToWorld(m_Mobile.Location, m_Mobile.Map);
                        }

                        m_House.RemoveKeys(m_Mobile);
                        m_House.Delete();
                    }
                    else
                    {
                        m_Mobile.SendMessage("Unable to refund house.");
                    }
                }
                else
                {
                    m_Mobile.SendLocalizedMessage(501320);                       // Only the house owner may do this.
                }
            }
        }
예제 #22
0
        public override void OnResponse(NetState state, RelayInfo info)
        {
            if (info.ButtonID == 1 && !m_House.Deleted)
            {
                if (m_House.IsOwner(m_Mobile))
                {
                    if (m_House.MovingCrate != null || m_House.InternalizedVendors.Count > 0)
                    {
                        return;
                    }
                    else if (!Guilds.Guild.NewGuildSystem && m_House.FindGuildstone() != null)
                    {
                        m_Mobile.SendLocalizedMessage(501389);                           // You cannot redeed a house with a guildstone inside.
                        return;
                    }

                    /*else if ( m_House.PlayerVendors.Count > 0 )
                     * {
                     *      m_Mobile.SendLocalizedMessage( 503236 ); // You need to collect your vendor's belongings before moving.
                     *      return;
                     * }*/
                    else if (m_House.HasRentedVendors && m_House.VendorInventories.Count > 0)
                    {
                        m_Mobile.SendLocalizedMessage(1062679);                           // You cannot do that that while you still have contract vendors or unclaimed contract vendor inventory in your house.
                        return;
                    }
                    else if (m_House.HasRentedVendors)
                    {
                        m_Mobile.SendLocalizedMessage(1062680);                           // You cannot do that that while you still have contract vendors in your house.
                        return;
                    }
                    else if (m_House.VendorInventories.Count > 0)
                    {
                        m_Mobile.SendLocalizedMessage(1062681);                           // You cannot do that that while you still have unclaimed contract vendor inventory in your house.
                        return;
                    }

                    if (m_Mobile.AccessLevel >= AccessLevel.GameMaster)
                    {
                        m_Mobile.SendMessage("You do not get a refund for your house as you are not a player");
                        m_House.RemoveKeys(m_Mobile);
                        m_House.Delete();
                    }
                    else
                    {
                        Item      toGive = null;
                        BankCheck check  = null;
                        BankBox   box    = m_Mobile.BankBox;

                        if (m_House.IsAosRules)
                        {
                            if (m_House.Price > 0)
                            {
                                check = new BankCheck(m_House.Price);
                            }

                            toGive = m_House.GetDeed();
                        }
                        else
                        {
                            toGive = m_House.GetDeed();

                            if (toGive == null && m_House.Price > 0)
                            {
                                check = new BankCheck(m_House.Price);
                            }
                        }

                        if (check != null)
                        {
                            if (box.TryDropItem(m_Mobile, check, false))
                            {
                                m_Mobile.SendLocalizedMessage(1060397, check.Worth.ToString());                                   // ~1_AMOUNT~ gold has been deposited into your bank box.
                            }
                            else
                            {
                                check.Delete();
                                if (toGive != null)
                                {
                                    toGive.Delete();
                                }
                                m_Mobile.SendLocalizedMessage(500390);                                   // Your bank box is full.
                                return;
                            }
                        }

                        if (toGive != null)
                        {
                            if (box.TryDropItem(m_Mobile, toGive, false))
                            {
/*								if ( pm.HasDonated )
 *                                                              {
 *                                                                      m_House.KillVendors( true );
 *                                                                      HouseDecayingCrate crate = m_House.MoveAllDecayingToCrate();
 *                                                                      if ( crate.Items.Count == 0 )
 *                                                                              crate.Delete();
 *                                                                      else
 *                                                                              m_Mobile.BankBox.DropItem( crate );
 *                                                              } */

                                m_Mobile.CloseGump(typeof(ConfirmCommitGump));

                                m_House.RemoveKeys(m_Mobile);
                                m_House.Delete();
                            }
                            else
                            {
                                if (check != null)
                                {
                                    check.Delete();
                                }
                                toGive.Delete();
                                m_Mobile.SendLocalizedMessage(500390);                                   // Your bank box is full.
                                return;
                            }
                        }
                        else if (TestCenter.Enabled)
                        {
                            m_Mobile.SendMessage("This house cannot be refunded during beta.  Please contact a Gamemaster for replacement options.");
                        }
                        else
                        {
                            m_Mobile.SendMessage("Your house cannot be refunded.");
                        }
                    }
                }
                else
                {
                    m_Mobile.SendLocalizedMessage(501320);                       // Only the house owner may do this.
                }
            }
        }
예제 #23
0
        public override void OnResponse(NetState state, RelayInfo info)
        {
            if (info.ButtonID != 1 || m_House.Deleted)
            {
                return;
            }

            if (m_House.IsOwner(m_Mobile))
            {
                if (m_House.MovingCrate != null || m_House.InternalizedVendors.Count > 0)
                {
                    return;
                }

                if (!Guild.NewGuildSystem && m_House.FindGuildstone() != null)
                {
                    m_Mobile.SendLocalizedMessage(501389);                     // You cannot redeed a house with a guildstone inside.
                    return;
                }

                /*
                 * if ( m_House.PlayerVendors.Count > 0 )
                 * {
                 *      m_Mobile.SendLocalizedMessage( 503236 ); // You need to collect your vendor's belongings before moving.
                 *      return;
                 * }
                 */
                if (m_House.HasRentedVendors && m_House.VendorInventories.Count > 0)
                {
                    m_Mobile.SendLocalizedMessage(1062679);
                    // You cannot do that that while you still have contract vendors or unclaimed contract vendor inventory in your house.
                    return;
                }

                if (m_House.HasRentedVendors)
                {
                    m_Mobile.SendLocalizedMessage(1062680);
                    // You cannot do that that while you still have contract vendors in your house.
                    return;
                }

                if (m_House.VendorInventories.Count > 0)
                {
                    m_Mobile.SendLocalizedMessage(1062681);
                    // You cannot do that that while you still have unclaimed contract vendor inventory in your house.
                    return;
                }

                if (m_Mobile.AccessLevel >= AccessLevel.GameMaster)
                {
                    m_Mobile.SendMessage("You do not get a refund for your house as you are not a player");
                    m_House.RemoveKeys(m_Mobile);
                    m_House.Delete();
                }
                else
                {
                    Item toGive = m_House.GetDeed();

                    if (toGive == null && m_House.Price > 0)
                    {
                        toGive = new BankCheck(m_House.Price);
                    }

                    if (toGive != null)
                    {
                        BankBox box = m_Mobile.FindBank(m_House.Expansion) ?? m_Mobile.BankBox;

                        if (box != null)
                        {
                            box.AddItem(toGive);

                            if (toGive is BankCheck)
                            {
                                m_Mobile.LocalOverheadMessage(
                                    MessageType.Regular,
                                    0x38,
                                    false,
                                    "A check for " + ((BankCheck)toGive).Worth + " gold has been placed in your bank.");
                            }
                            else                             // it's a deed
                            {
                                m_Mobile.LocalOverheadMessage(MessageType.Regular, 0x38, false, "A deed has been placed in your bank.");
                            }
                        }
                        else if (m_Mobile.Backpack != null)
                        {
                            m_Mobile.Backpack.AddItem(toGive);
                            m_Mobile.SendMessage(
                                38,
                                "The house deed was placed IN YOUR BACKPACK because there was an error accessing your bank. Contact staff asap!");
                        }
                        else
                        {
                            LoggingCustom.Log("ERROR_HouseDemolish.txt", DateTime.Now + "\t" + m_Mobile + "\t" + m_House);
                        }
                        m_House.RemoveKeys(m_Mobile);
                        m_House.Delete();
                    }
                    else
                    {
                        m_Mobile.SendMessage("Unable to refund house.");
                    }
                }
            }
            else
            {
                m_Mobile.SendLocalizedMessage(501320);                 // Only the house owner may do this.
            }
        }
예제 #24
0
        public void Place(Mobile from, Point3D location, bool bCheck)
        {
            Guild g = from.Guild as Guild;;

            if (!IsChildOf(from.Backpack))
            {
                from.SendLocalizedMessage(1042001);                 //This must be in your backpack
            }
            else if (g == null)
            {
                from.SendMessage("You must be a member of a guild to use this.");
            }
            else
            {
                BaseHouse  house = BaseHouse.FindHouseAt(from);
                Guildstone stone = null;

                if (house != null)
                {
                    stone = house.FindGuildstone();
                }
                else
                {
                    stone = g.Guildstone as Guildstone;
                }

                //if (house == null || stone == null || stone.Guild != from.Guild)
                if (stone == null || stone.Guild != from.Guild)
                {
                    //from.SendMessage("You must be in the house with your guild's guildstone to use this.");
                    from.SendMessage("You must be a member of a guild and not be in a building which houses another guildstone to use this.");
                }
                else
                {
                    bool bZoneOverlaps = false;
                    bZoneOverlaps = DoesTownshipRegionConflict(location, from.Map, TownshipStone.INITIAL_RADIUS, null);

                    if (bZoneOverlaps)
                    {
                        from.SendMessage("You can't create a township that conflicts with another township, guardzone, or other special area.");
                        return;
                    }

                    double guildPercentage = GetPercentageOfGuildedHousesInArea(location, from.Map, TownshipStone.INITIAL_RADIUS, from.Guild as Guild, true);

                    if (guildPercentage >= Township.TownshipSettings.GuildHousePercentage)
                    {
                        if (bCheck)
                        {
                            from.SendGump(new ConfirmPlacementGump(from, location, this));
                        }
                        else
                        {
                            TownshipStone ts = new TownshipStone(stone.Guild);
                            ts.GoldHeld = Township.TownshipSettings.InitialFunds;                             //initial gold :-)
                            ts.MoveToWorld(location, from.Map);
                            ts.CreateInitialArea(location);

                            from.SendMessage("The township has been created.");

                            this.Delete();
                        }
                    }
                    else
                    {
                        from.SendMessage("You can't create a township without owning most of the houses in the area.");
                    }
                }
            }
        }
예제 #25
0
        public override void OnResponse(NetState state, RelayInfo info)
        {
            if (m_House.Deleted)
            {
                return;
            }

            Mobile from = state.Mobile;

            if (m_List != null && info.ButtonID == 1) // Remove now
            {
                if (m_House.IsOwner(from))
                {
                    if (m_House.InternalizedVendors.Count > 0)
                    {
                        return;
                    }
                    else if (m_House.FindGuildstone() != null)
                    {
                        from.SendLocalizedMessage(501389); // You cannot redeed a house with a guildstone inside.
                        return;
                    }
                    else if (m_House.PlayerVendors.Count > 0)
                    {
                        from.SendLocalizedMessage(503236); // You need to collect your vendor's belongings before moving.
                        return;
                    }
                    else if (m_House.VendorInventories.Count > 0)
                    {
                        from.SendLocalizedMessage(1062681); // You cannot do that that while you still have unclaimed contract vendor inventory in your house.
                        return;
                    }

                    Item toGive = m_House.GetDeed();

                    if (toGive != null)
                    {
                        Container backpack = from.Backpack;

                        if (backpack == null)
                        {
                            from.SendLocalizedMessage(501393); // You do not seem to have a backpack.
                        }
                        else if (backpack.TryDropItem(from, toGive, false))
                        {
                            from.SendLocalizedMessage(501391); // You place the deed in your backpack.
                            m_House.RemoveKeys(from);
                            m_House.Delete();
                        }
                        else
                        {
                            from.SendLocalizedMessage(501390); // You do not have room in your backpack for a house deed.
                        }
                    }
                    else
                    {
                        from.SendLocalizedMessage(501294); // Redeeding the house has failed.
                    }
                }
                else
                {
                    from.SendLocalizedMessage(501320); // Only the house owner may do this.
                }
            }

            int[] switches = info.Switches;

            if (switches.Length > 0)
            {
                for (int i = 0; i < switches.Length; ++i)
                {
                    int index = switches[i];

                    if (index >= 0 && index < m_Copy.Count)
                    {
                        m_List.Remove(m_Copy[index]);
                    }
                }

                if (m_List.Count > 0)
                {
                    from.CloseGump(typeof(HouseGump));
                    from.CloseGump(typeof(HouseListGump));
                    from.CloseGump(typeof(HouseRemoveGump));
                    from.SendGump(new HouseRemoveGump(m_Number, m_List, m_House, m_AccountOf));
                    return;
                }
            }

            from.SendGump(new HouseGump(from, m_House));
        }