示例#1
0
		public static void Sacrifice( Mobile from, object targeted )
		{
			if ( !from.CheckAlive() )
				return;

			PlayerMobile pm = from as PlayerMobile;

			if ( pm == null )
				return;

			Mobile targ = targeted as Mobile;

			if ( targ == null )
				return;

			if ( !ValidateCreature( targ ) )
			{
				from.SendLocalizedMessage( 1052014 ); // You cannot sacrifice your fame for that creature.
			}
			else if ( ((targ.Hits * 100) / Math.Max( targ.HitsMax, 1 )) < 90 )
			{
				from.SendLocalizedMessage( 1052013 ); // You cannot sacrifice for this monster because it is too damaged.
			}
			else if ( from.Hidden )
			{
				from.SendLocalizedMessage( 1052015 ); // You cannot do that while hidden.
			}
			else if ( VirtueHelper.IsHighestPath( from, VirtueName.Sacrifice ) )
			{
				from.SendLocalizedMessage( 1052068 ); // You have already attained the highest path in this virtue.
			}
			else if ( from.Fame < 2500 )
			{
				from.SendLocalizedMessage( 1052017 ); // You do not have enough fame to sacrifice.
			}
			else if ( DateTime.Now < (pm.LastSacrificeGain + GainDelay) )
			{
				from.SendLocalizedMessage( 1052016 ); // You must wait approximately one day before sacrificing again.
			}
			else
			{
				int toGain;

				if( from.Fame < 5000 )
					toGain = 500;
				else if( from.Fame < 10000 )
					toGain = 1000;
				else
					toGain = 2000;

				from.Fame = 0;

				// I have seen the error of my ways!
				targ.PublicOverheadMessage( MessageType.Regular, 0x3B2, 1052009 );

				from.SendLocalizedMessage( 1052010 ); // You have set the creature free.

				Timer.DelayCall( TimeSpan.FromSeconds( 1.0 ), new TimerCallback( targ.Delete ) );

				pm.LastSacrificeGain = DateTime.Now;

				bool gainedPath = false;

				if ( VirtueHelper.Award( from, VirtueName.Sacrifice, toGain, ref gainedPath ) )
				{
					if ( gainedPath )
					{
						from.SendLocalizedMessage( 1052008 ); // You have gained a path in Sacrifice!

						if ( pm.AvailableResurrects < 3 )
							++pm.AvailableResurrects;
					}
					else
					{
						from.SendLocalizedMessage( 1054160 ); // You have gained in sacrifice.
					}
				}

				from.SendLocalizedMessage( 1052016 ); // You must wait approximately one day before sacrificing again.
			}
		}