Example #1
0
        public void Target(LockableContainer targ)
        {
            if (BaseHouse.CheckLockedDownOrSecured(targ))
            {
                // You cannot cast this on a locked down item.
                Caster.LocalOverheadMessage(MessageType.Regular, 0x22, 501761);
            }
            else if (targ.Locked || targ.LockLevel == 0)
            {
                // Target must be an unlocked chest.
                Caster.SendLocalizedMessage(501762);
            }
            else if (CheckSequence())
            {
                SpellHelper.Turn(Caster, targ);

                var loc = targ.GetWorldLocation();

                Effects.SendLocationParticles(
                    EffectItem.Create(loc, targ.Map, EffectItem.DefaultDuration),
                    0x376A, 9, 32, 5020);

                Effects.PlaySound(loc, targ.Map, 0x1FA);

                // The chest is now locked!
                Caster.LocalOverheadMessage(MessageType.Regular, 0x3B2, 501763);

                targ.LockLevel = -255; // signal magic lock
                targ.Locked    = true;
            }

            FinishSequence();
        }
Example #2
0
        public override bool OnDragLift(Mobile from)
        {
            BaseHouse house = BaseHouse.FindHouseAt(from);

            if (!BaseHouse.CheckLockedDownOrSecured(this) && house != null)
            {
                house.AddSecure(from, (Item)this);
            }
            return(false);
        }
Example #3
0
        public override bool OnDragLift(Mobile from)
        {
            BaseHouse house = BaseHouse.FindHouseAt(this);            //changed from (from to this)

            if (!BaseHouse.CheckLockedDownOrSecured(this) && house != null)
            {
                house.AddSecure(from, (Item)this);
                this.Owner = house.Owner;
            }
            this.Say("Needs to be choped down to be moved.");
            this.Movable = false;
            return(false);
        }
Example #4
0
        private static void RemoveDupes_OnCommand(CommandEventArgs e)
        {
            List <Item> m_Deco = new List <Item>();

            foreach (Item item in World.Items.Values)
            {
                if (!item.Movable && !(item is Spawner) && !BaseHouse.CheckLockedDownOrSecured(item) && (item.RootParent == null || item.RootParent == item) && item.Map != null && item.Map != Map.Internal)
                {
                    m_Deco.Add(item);
                }
            }

            int origc = m_Deco.Count;

            Console.WriteLine(String.Format("Decoration Removal: {0} items acquired..", m_Deco.Count));

            for (int i = 0; i < m_Deco.Count; i++)
            {
                Item deco  = m_Deco[i];
                int  count = 0;

                for (int j = i + 1; j < m_Deco.Count; j++)
                {
                    Item check = m_Deco[j];

                    if (deco.GetType() == check.GetType() && deco.Location == check.Location && deco.Map == check.Map && deco.Hue == check.Hue && deco.ItemID == check.ItemID)
                    {
                        //if ( !(check is AddonComponent) || ((AddonComponent)check).Addon.GetType() == ((AddonComponent)deco).Addon.GetType() )
                        //{
                        m_Deco.RemoveAt(j);
                        j--;
                        count++;
                        check.Delete();
                        //}
                    }
                }

                //if ( count > 0 )
                //Console.WriteLine( String.Format( "Deleted {0} items of {1} ({3}) [{2}]", count, deco.GetType(), i, deco.Location ) );
            }

            Console.WriteLine(String.Format("Decoration Removal: {0} items deleted.", origc - m_Deco.Count));
        }
        public async Task OnTargetAsync(ITargetResponse <ILockpickable> response)
        {
            if (!response.HasValue || !(response.Target is Item item))
            {
                Caster.SendLocalizedMessage(501764); // Hmmm...I can't lock that.
                return;
            }

            var loc          = item.GetWorldLocation();
            var lockpickable = response.Target;

            if (item is BaseDoor && SpellHelper.IsTown(loc, Caster) || BaseHouse.CheckLockedDownOrSecured(item))
            {
                Caster.SendLocalizedMessage(501671); // You cannot currently lock that.
                return;
            }

            if (lockpickable.Locked)
            {
                // Target must be an unlocked chest.
                Caster.SendLocalizedMessage(501762);
                return;
            }

            SpellHelper.Turn(Caster, item);

            Caster.LocalOverheadMessage(MessageType.Regular, 0x3B2, 1048000); // You lock it.
            var difficulty = Caster.Skills[SkillName.Magery].Value;

            Caster.FireHook(h => h.OnModifyWithMagicEfficiency(Caster, ref difficulty));

            Effects.SendLocationParticles(
                EffectItem.Create(loc, item.Map, EffectItem.DefaultDuration),
                0x376A, 9, 32, 5020
                );

            Effects.PlaySound(loc, item.Map, 0x1FA);

            lockpickable.LockLevel     = (int)difficulty;
            lockpickable.RequiredSkill = (int)difficulty;
            lockpickable.Locked        = true;
        }
Example #6
0
        public override void OnDoubleClick(Mobile from)
        {
            BaseHouse house = BaseHouse.FindHouseAt(from);

            from.CloseGump(typeof(HitchGump));
            if (BaseHouse.CheckLockedDownOrSecured(this))
            {
                if (CheckAccess(from))
                {
                    if (Owner == null)
                    {
                        from.Target = new StablePostTarget(this);
                        from.SendMessage(68, "What do you wish to use this on?");
                    }
                    if (Owner != null && from == Owner)
                    {
                        from.Target = new StablePostTarget(this);
                        from.SendMessage(68, "Target the animal you wish to release from the stable.");
                    }
                    else if (Owner != null && Owner != from)
                    {
                        from.SendMessage(38, "This is under the control of another owner.");
                    }
                }
                else
                {
                    from.SendLocalizedMessage(1061637);                     // You are not allowed to access this.
                }
            }
            else
            {
                //from.SendMessage("You must secure this before it can be used!");
                if (house != null)
                {
                    house.AddSecure(from, (Item)this);
                }
            }
        }
Example #7
0
        public override void OnMovement(Mobile m, Point3D oldLocation)
        {
            BaseHouse house = BaseHouse.FindHouseAt(m);

            if (!BaseHouse.CheckLockedDownOrSecured(this) && house != null)
            {
                house.AddSecure(m, (Item)this);
            }
            if (m is BaseCreature)
            {
                if ((BaseCreature)m == Controlled)
                {
                    if (((BaseCreature)m).Loyalty <= 100)
                    {
                        ((BaseCreature)m).Loyalty = 100;
                    }
                    if (((BaseCreature)m).RangeHome != HomeRange)
                    {
                        ((BaseCreature)m).RangeHome = HomeRange;
                    }
                }
            }
            base.OnMovement(m, oldLocation);
        }