Esempio n. 1
0
            protected override void OnTarget(Mobile from, object targeted)
            {
                if (m_Powder.Deleted)
                {
                    return;
                }

                if (!from.InRange(m_Powder.GetWorldLocation(), 2))
                {
                    from.LocalOverheadMessage(MessageType.Regular, 0x3B2, 1019045);                     // I can't reach that.
                }
                else if (targeted is ITranslocationItem)
                {
                    var transItem = (ITranslocationItem)targeted;

                    if (transItem.Charges >= transItem.MaxCharges)
                    {
                        MessageHelper.SendLocalizedMessageTo(m_Powder, from, 1054137, 0x59);
                        // This item cannot absorb any more powder of translocation.
                    }
                    else if (transItem.Recharges >= transItem.MaxRecharges)
                    {
                        MessageHelper.SendLocalizedMessageTo(m_Powder, from, 1054138, 0x59);
                        // This item has been oversaturated with powder of translocation and can no longer be recharged.
                    }
                    else
                    {
                        if (transItem.Charges + m_Powder.Amount > transItem.MaxCharges)
                        {
                            int delta = transItem.MaxCharges - transItem.Charges;

                            m_Powder.Amount     -= delta;
                            transItem.Charges    = transItem.MaxCharges;
                            transItem.Recharges += delta;
                        }
                        else
                        {
                            transItem.Charges   += m_Powder.Amount;
                            transItem.Recharges += m_Powder.Amount;
                            m_Powder.Delete();
                        }

                        if (transItem is Item)
                        {
                            // The ~1_translocationItem~ glows with green energy and absorbs magical power from the powder.
                            MessageHelper.SendLocalizedMessageTo((Item)transItem, from, 1054139, transItem.TranslocationItemName, 0x43);
                        }
                    }
                }
                else
                {
                    MessageHelper.SendLocalizedMessageTo(m_Powder, from, 1054140, 0x59);
                    // Powder of translocation has no effect on this item.
                }
            }
Esempio n. 2
0
            protected override void OnTarget(Mobile from, object targeted)
            {
                if (m_Powder.Deleted)
                {
                    return;
                }

                if (!from.InRange(m_Powder.GetWorldLocation(), 2))
                {
                    from.LocalOverheadMessage(MessageType.Regular, 0x3B2, 1019045);                     // I can't reach that.
                }
                else if (targeted is Moonstone)
                {
                    Moonstone stone = (Moonstone)targeted;
                    if (!from.CanSee(stone))
                    {
                        from.SendLocalizedMessage(500237);                         // Target can not be seen.
                    }
                    else if (!SpellHelper.CheckTravel(from, TravelCheckType.Mark))
                    {
                    }
                    else if (SpellHelper.CheckMulti(from.Location, from.Map, !Core.AOS))
                    {
                        from.SendLocalizedMessage(501942);                         // That location is blocked.
                    }
                    else if (!stone.IsChildOf(from.Backpack))
                    {
                        from.LocalOverheadMessage(MessageType.Regular, 0x3B2, true, "That must be in your pack");
                    }
                    else
                    {
                        stone.Mark(from);

                        from.PlaySound(0x1FA);
                        Effects.SendLocationEffect(from, from.Map, 14201, 16);
                        m_Powder.Amount = m_Powder.Amount - 1;
                        if (m_Powder.Amount <= 0)
                        {
                            m_Powder.Delete();
                        }
                    }
                }
                else
                {
                    from.SendMessage("Powder of translocation has no effect on this item");                     // Powder of translocation has no effect on this item.
                }
            }
		public static void GiveRewardTo( PlayerMobile player, ref bool bagOfSending, ref bool powderOfTranslocation, ref bool gold )
		{
			if ( bagOfSending )
			{
				Item reward = new BagOfSending();

				if ( player.PlaceInBackpack( reward ) )
				{
					player.SendLocalizedMessage( 1054074, "", 0x59 ); // You have been given a bag of sending.
					bagOfSending = false;
				}
				else
				{
					reward.Delete();
				}
			}

			if ( powderOfTranslocation )
			{
				Item reward = new PowderOfTranslocation( Utility.RandomMinMax( 10, 12 ) );

				if ( player.PlaceInBackpack( reward ) )
				{
					player.SendLocalizedMessage( 1054075, "", 0x59 ); // You have been given some powder of translocation.
					powderOfTranslocation = false;
				}
				else
				{
					reward.Delete();
				}
			}

			if ( gold )
			{
				Item reward = new Gold( Utility.RandomMinMax( 250, 350 ) );

				if ( player.PlaceInBackpack( reward ) )
				{
					player.SendLocalizedMessage( 1054076, "", 0x59 ); // You have been given some gold.
					gold = false;
				}
				else
				{
					reward.Delete();
				}
			}
		}