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. } }