コード例 #1
0
        public void Target( TrapableContainer item )
        {
            if ( !Caster.CanSee( item ) )
            {
                Caster.SendLocalizedMessage( 500237 ); // Target can not be seen.
            }
            else if ( item.Trapped && item.TrapType != TrapType.MagicTrap )
            {
                base.DoFizzle();
            }
            else if ( CheckSequence() )
            {
                SpellHelper.Turn( Caster, item );

                Point3D loc = item.GetWorldLocation();

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

                item.TrapType = TrapType.None;
                item.Trapped = false;
                item.TrapPower = 0;
            }

            FinishSequence();
        }
コード例 #2
0
ファイル: RemoveTrap.cs プロジェクト: greeduomacro/UO-Forever
		public void Target( TrapableContainer item )
		{
			if ( !Caster.CanSee( item ) )
			{
				Caster.SendLocalizedMessage( 500237 ); // Target can not be seen.
			}
			else if ( item.TrapType != TrapType.None && item.TrapType != TrapType.MagicTrap )
			{
				base.DoFizzle();
			}
			else if ( CheckSequence() )
			{
				SpellHelper.Turn( Caster, item );

				Point3D loc = item.GetWorldLocation();

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

				TreasureMapChest chest = item as TreasureMapChest;

				double skill = Caster.Skills[SkillName.Magery].Value;

				if ( ( chest != null && skill >= 100.0 && chest.TrapLevel <= 2 ) || ( chest == null && ( ( item.TrapCreator == null && item.TrapLevel <= (int)(skill/33.3) ) || ( item.TrapCreator != null && item.TrapLevel <= (int)(skill/20.0) ) ) ) )
				{
					//Treasure Chests: Must be GM, up to level 2
					//Non Treasure Chests:  Up to level 3, Player constructed, up to level 5.
					item.TrapType = TrapType.None;
					item.TrapPower = 0;
					item.TrapLevel = 0;
				}
			}

			FinishSequence();
		}
コード例 #3
0
ファイル: MagicTrap.cs プロジェクト: suiy187/runuocustom
        public void Target(TrapableContainer item)
        {
            if (!Caster.CanSee(item))
            {
                Caster.SendLocalizedMessage(500237); // Target can not be seen.
            }
            else if (item.TrapType != TrapType.None && item.TrapType != TrapType.MagicTrap)
            {
                base.DoFizzle();
            }
            else if (CheckSequence())
            {
                SpellHelper.Turn(Caster, item);

                item.TrapType = TrapType.MagicTrap;
                item.TrapPower = Core.AOS ? Utility.RandomMinMax(10, 50) : 1;
                item.TrapLevel = 0;

				Point3D loc = item.GetWorldLocation();

				Effects.SendLocationParticles( EffectItem.Create( new Point3D( loc.X + 1, loc.Y, loc.Z ), item.Map, EffectItem.DefaultDuration ), 0x376A, 9, 10, 9502 );
				Effects.SendLocationParticles( EffectItem.Create( new Point3D( loc.X, loc.Y - 1, loc.Z ), item.Map, EffectItem.DefaultDuration ), 0x376A, 9, 10, 9502 );
				Effects.SendLocationParticles( EffectItem.Create( new Point3D( loc.X - 1, loc.Y, loc.Z ), item.Map, EffectItem.DefaultDuration ), 0x376A, 9, 10, 9502 );
				Effects.SendLocationParticles( EffectItem.Create( new Point3D( loc.X, loc.Y + 1, loc.Z ), item.Map, EffectItem.DefaultDuration ), 0x376A, 9, 10, 9502 );
				Effects.SendLocationParticles( EffectItem.Create( new Point3D( loc.X, loc.Y,     loc.Z ), item.Map, EffectItem.DefaultDuration ), 0, 0, 0, 5014 );

                Effects.PlaySound(loc, item.Map, 0x1EF);
            }

            FinishSequence();
        }
コード例 #4
0
ファイル: MagicTrap.cs プロジェクト: greeduomacro/UO-Forever
		public void Target(TrapableContainer item)
		{
			if (!Caster.CanSee(item))
			{
				Caster.SendLocalizedMessage(500237); // Target can not be seen.
			}
			else if (item.TrapType != TrapType.None && item.TrapType != TrapType.MagicTrap)
			{
				base.DoFizzle();
			}
			else if (CheckSequence())
			{
				SpellHelper.Turn(Caster, item);

                var pouch = item as ChargeableTrapPouch;

                if (pouch != null)
			    {
                    if (pouch.Charges == 0)
			        {
                        item.TrapType = TrapType.MagicTrap;
                        item.TrapPower = Caster.EraAOS ? Utility.RandomMinMax(10, 50) : 4; //Change to depend on magery skill?
                        item.TrapLevel = 0;
                        pouch.Charges++;
			        }
			        else if (pouch.Charges < 30)
			        {
			            pouch.Charges++;
			        }
			        else
			        {
			            Caster.SendMessage(54, "This pouch can only hold 30 charges.");
			        }
			    }
			    else
			    {
                    item.TrapType = TrapType.MagicTrap;
                    item.TrapPower = Caster.EraAOS ? Utility.RandomMinMax(10, 50) : 4; //Change to depend on magery skill?
                    item.TrapLevel = 0;			        
			    }

				Point3D loc = item.GetWorldLocation();

				Effects.SendLocationParticles(
					EffectItem.Create(new Point3D(loc.X + 1, loc.Y, loc.Z), item.Map, EffectItem.DefaultDuration), 0x376A, 9, 10, 9502);
				Effects.SendLocationParticles(
					EffectItem.Create(new Point3D(loc.X, loc.Y - 1, loc.Z), item.Map, EffectItem.DefaultDuration), 0x376A, 9, 10, 9502);
				Effects.SendLocationParticles(
					EffectItem.Create(new Point3D(loc.X - 1, loc.Y, loc.Z), item.Map, EffectItem.DefaultDuration), 0x376A, 9, 10, 9502);
				Effects.SendLocationParticles(
					EffectItem.Create(new Point3D(loc.X, loc.Y + 1, loc.Z), item.Map, EffectItem.DefaultDuration), 0x376A, 9, 10, 9502);
				Effects.SendLocationParticles(
					EffectItem.Create(new Point3D(loc.X, loc.Y, loc.Z), item.Map, EffectItem.DefaultDuration), 0, 0, 0, 5014);

				Effects.PlaySound(loc, item.Map, 0x1EF);
			}

			FinishSequence();
		}