예제 #1
0
        public void Target( LockableContainer targ )
        {
            if ( Multis.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 || targ is ParagonChest )
            {
                // Target must be an unlocked chest.
                Caster.SendLocalizedMessage( 501762 );
            }
            else if ( CheckSequence() )
            {
                SpellHelper.Turn( Caster, targ );

                Point3D 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();
        }
예제 #2
0
        public void Target( LockableContainer targ )
        {
            if ( targ.Locked || targ.LockLevel == 0 || targ.MaxLockLevel == 0 )
            {
                Caster.SendLocalizedMessage( 501762 ); // Target must be an unlocked chest.
            }
            else if ( targ.MaxLockLevel > 65 )
            {
                Caster.SendAsciiMessage( "This chest cannot be magically locked." );
            }
            else if ( CheckSequence() )
            {
                SpellHelper.Turn( Caster, targ );

                Point3D 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();
        }
예제 #3
0
		public void Target( LockableContainer targ )
		{
			if ( Multis.BaseHouse.CheckSecured( targ ) )
			{
				// You cannot cast this on a secure item.
				Caster.SendLocalizedMessage( 503098 );
			}
			else if ( CheckSequence() )
			{
				SpellHelper.Turn( Caster, targ );

				Point3D loc = targ.GetWorldLocation();

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

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

				if ( targ.Locked && targ.LockLevel != 0 )
				{
					double magery = Caster.Skills[SkillName.Magery].Value;
					int level = (int)(magery * 0.8) - 4;

					if ( targ.LockLevel == -255 )
					{
						targ.Locked = false;
						FinishSequence();
						return;
					}
					if ( level >= targ.RequiredSkill && !(targ is TreasureMapChest && ((TreasureMapChest)targ).Level > 2) )
					{
						targ.Locked = false;

						

						if ( targ.LockLevel == 0 )
							targ.LockLevel = -1;
					}
					else
					{
						// My spell does not seem to have an effect on that lock.
						Caster.LocalOverheadMessage( MessageType.Regular, 0x3B2, 503099 );
					}
				}
				else
				{
					// That did not need to be unlocked.
					Caster.LocalOverheadMessage( MessageType.Regular, 0x3B2, 503101 );
				}
			}

			FinishSequence();
		}
예제 #4
0
        public void Target( LockableContainer targ )
        {
            if ( CheckSequence() )
            {
                SpellHelper.Turn( Caster, targ );

                Point3D loc = targ.GetWorldLocation();

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

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

                if ( targ.Locked )
                {
                    if ( targ.LockLevel != 0 && ( targ.LockLevel == -255 || ( targ.MaxLockLevel <= 50 && Caster.Skills[SkillName.Magery].Value > targ.RequiredSkill ) ) )
                    {
                        targ.Locked = false;

                        if ( targ.LockLevel == -255 )
                        {
                            targ.LockLevel = targ.MaxLockLevel - 30;

                            if ( targ.RequiredSkill < targ.LockLevel )
                                targ.LockLevel = targ.RequiredSkill;

                            if ( targ.LockLevel < 1 )
                                targ.LockLevel = 1;
                        }
                    }
                    else
                    {
                        // My spell does not seem to have an effect on that lock.
                        Caster.LocalOverheadMessage( MessageType.Regular, 0x3B2, 503099 );
                    }
                }
                else
                {
                    // That did not need to be unlocked.
                    Caster.LocalOverheadMessage( MessageType.Regular, 0x3B2, 503101 );
                }
            }

            FinishSequence();
        }
예제 #5
0
		private int Verify( LockableContainer container )
		{
			if ( container == null || container.KeyValue == 0 )
				return 1005638; // You can only trap lockable chests.
			if ( From.Map != container.Map || !From.InRange( container.GetWorldLocation(), 2 ) )
				return 500446; // That is too far away.
			if ( !container.Movable )
				return 502944; // You cannot trap this item because it is locked down.
			if ( !container.IsAccessibleTo( From ) )
				return 502946; // That belongs to someone else.
			if ( container.Locked )
				return 502943; // You can only trap an unlocked object.
			if ( container.TrapType != TrapType.None )
				return 502945; // You can only place one trap on an object at a time.

			return 0;
		}
예제 #6
0
        private int Verify( LockableContainer container )
        {
            if (container == null || container.KeyValue == 0)
            {
                From.SendAsciiMessage("You can only trap lockable chests.");
                return 1005638; // You can only trap lockable chests.
            }
            if (From.Map != container.Map || !From.InRange(container.GetWorldLocation(), 2))
            {
                int OldHue = From.SpeechHue;
                From.SpeechHue = 0;
                From.SayTo(From, true, "I can't reach that.");
                From.SpeechHue = OldHue;
                return 500446; // That is too far away.
            }
            if (!container.Movable)
            {
                return 502944; // You cannot trap this item because it is locked down.
            }
            if (!container.IsAccessibleTo(From))
            {
                From.SendAsciiMessage("That belongs to someone else.");
                return 502946; // That belongs to someone else.
            }
            if (container.Locked)
            {
                From.SendAsciiMessage("You can only trap an unlocked object.");
                return 502943; // You can only trap an unlocked object.
            }
            if (container.TrapType != TrapType.None)
            {
                From.SendAsciiMessage("You can only place one trap on an object at a time.");
                return 502945; // You can only place one trap on an object at a time.
            }

            return 0;
        }