상속: Item, IRewardItem
예제 #1
0
        public bool Demolish(Mobile by)
        {
            CharacterStatueDeed deed = new CharacterStatueDeed(null);

            if (by.PlaceInBackpack(deed))
            {
                Delete();

                deed.Statue       = this;
                deed.StatueType   = m_Type;
                deed.IsRewardItem = m_IsRewardItem;

                if (m_Plinth != null)
                {
                    m_Plinth.Delete();
                }

                return(true);
            }
            else
            {
                by.SendLocalizedMessage(500720);                   // You don't have enough room in your backpack!
                deed.Delete();

                return(false);
            }
        }
예제 #2
0
        public bool Demolish(Mobile m)
        {
            var deed = new CharacterStatueDeed(null);

            if (m.PlaceInBackpack(deed))
            {
                Delete();

                deed.Statue     = this;
                deed.StatueType = m_Type;

                if (Plinth != null)
                {
                    Plinth.Delete();
                    Plinth = null;
                }

                return(true);
            }

            m.SendLocalizedMessage(500720); // You don't have enough room in your backpack!
            deed.Delete();

            return(false);
        }
예제 #3
0
        public void Demolish(Mobile by)
        {
            CharacterStatueDeed deed = new CharacterStatueDeed(null);

            if (by.PlaceInBackpack(deed))
            {
                Internalize();

                deed.Statue = this;

                if (m_Plinth != null)
                {
                    m_Plinth.Internalize();
                }
            }
            else
            {
                by.SendLocalizedMessage(500720);                   // You don't have enough room in your backpack!
                deed.Delete();
            }
        }
        public void Demolish(Mobile by)
        {
            CharacterStatueDeed deed = new CharacterStatueDeed(null);

            if (by.PlaceInBackpack(deed))
            {
                by.CloseGump(typeof(CharacterStatueGump));                     //They don't get the deed back twice
                Internalize();

                deed.Statue       = this;
                deed.IsRewardItem = m_IsRewardItem;

                if (m_Plinth != null)
                {
                    m_Plinth.Internalize();
                }
            }
            else
            {
                by.SendLocalizedMessage(500720);                   // You don't have enough room in your backpack!
                deed.Delete();
            }
        }
        protected override void OnTarget(Mobile from, object targeted)
        {
            IPoint3D p   = targeted as IPoint3D;
            Map      map = from.Map;

            if (p == null || map == null || m_Maker == null || m_Maker.Deleted)
            {
                return;
            }

            if (m_Maker.IsChildOf(from.Backpack))
            {
                SpellHelper.GetSurfaceTop(ref p);
                BaseHouse house = null;
                Point3D   loc   = new Point3D(p);

                if (targeted is Item && !((Item)targeted).IsLockedDown && !((Item)targeted).IsSecure && !(targeted is AddonComponent))
                {
                    from.SendLocalizedMessage(1076191);                       // Statues can only be placed in houses.
                    return;
                }
                else if (from.IsBodyMod)
                {
                    from.SendLocalizedMessage(1073648);                       // You may only proceed while in your original state...
                    return;
                }

                AddonFitResult result = CouldFit(loc, map, from, ref house);

                if (result == AddonFitResult.Valid || from.AccessLevel >= AccessLevel.GameMaster)
                {
                    CharacterStatue       statue = new CharacterStatue(from, m_Type);
                    CharacterStatuePlinth plinth = new CharacterStatuePlinth(statue);

                    if (house != null)
                    {
                        house.Addons.Add(plinth);
                    }

                    if (m_Maker is IRewardItem)
                    {
                        statue.IsRewardItem = ((IRewardItem)m_Maker).IsRewardItem;
                    }

                    statue.Plinth = plinth;
                    plinth.Hue    = statue.Hue;
                    plinth.MoveToWorld(loc, map);
                    statue.InvalidatePose();

                    CharacterStatue     backup = null;
                    CharacterStatueDeed deed   = m_Maker as CharacterStatueDeed;

                    if (deed != null)
                    {
                        backup = deed.Statue;
                        deed.Delete(true);
                    }
                    else
                    {
                        m_Maker.Delete();
                    }

                    CharacterStatue.CloseGump(from);

                    from.SendGump(new CharacterStatueGump(statue, from, backup));
                }
                else if (result == AddonFitResult.Blocked)
                {
                    from.SendLocalizedMessage(500269);                       // You cannot build that there.
                }
                else if (result == AddonFitResult.NotInHouse)
                {
                    from.SendLocalizedMessage(1076192);                       // Statues can only be placed in houses where you are the owner or co-owner.
                }
                //else if ( result == AddonFitResult.DoorsNotClosed )
                //	from.SendMessage( "You must close all house doors before placing this." );
                else if (result == AddonFitResult.DoorTooClose)
                {
                    from.SendLocalizedMessage(500271);                       // You cannot build near the door.
                }
            }
            else
            {
                from.SendLocalizedMessage(1042001);                   // That must be in your pack for you to use it.
            }
        }