80 lines
1.8 KiB
C#
80 lines
1.8 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Text;
|
|
using Server.Spells;
|
|
|
|
namespace Server.Ethics.Hero
|
|
{
|
|
public sealed class Bless : Power
|
|
{
|
|
public Bless()
|
|
{
|
|
m_Definition = new PowerDefinition(
|
|
15,
|
|
"Bless",
|
|
"Erstok Ontawl",
|
|
""
|
|
);
|
|
}
|
|
|
|
public override void BeginInvoke( Player from )
|
|
{
|
|
from.Mobile.BeginTarget( 12, true, Targeting.TargetFlags.None, new TargetStateCallback( Power_OnTarget ), from );
|
|
from.Mobile.SendMessage( "Where do you wish to bless?" );
|
|
}
|
|
|
|
private void Power_OnTarget( Mobile fromMobile, object obj, object state )
|
|
{
|
|
Player from = state as Player;
|
|
|
|
IPoint3D p = obj as IPoint3D;
|
|
|
|
if ( p == null )
|
|
return;
|
|
|
|
if ( !CheckInvoke( from ) )
|
|
return;
|
|
|
|
bool powerFunctioned = false;
|
|
|
|
SpellHelper.GetSurfaceTop( ref p );
|
|
|
|
foreach ( Mobile mob in from.Mobile.GetMobilesInRange( 6 ) )
|
|
{
|
|
if ( mob != from.Mobile && SpellHelper.ValidIndirectTarget( from.Mobile, mob ) )
|
|
continue;
|
|
|
|
if ( mob.GetStatMod( "Holy Bless" ) != null )
|
|
continue;
|
|
|
|
if ( !from.Mobile.CanBeBeneficial( mob, false ) )
|
|
continue;
|
|
|
|
from.Mobile.DoBeneficial( mob );
|
|
|
|
mob.AddStatMod( new StatMod( StatType.All, "Holy Bless", 10, TimeSpan.FromMinutes( 30.0 ) ) );
|
|
|
|
mob.FixedParticles( 0x373A, 10, 15, 5018, EffectLayer.Waist );
|
|
mob.PlaySound( 0x1EA );
|
|
|
|
powerFunctioned = true;
|
|
}
|
|
|
|
if ( powerFunctioned )
|
|
{
|
|
SpellHelper.Turn( from.Mobile, p );
|
|
|
|
Effects.PlaySound( p, from.Mobile.Map, 0x299 );
|
|
|
|
from.Mobile.LocalOverheadMessage( Server.Network.MessageType.Regular, 0x3B2, false, "You consecrate the area." );
|
|
|
|
FinishInvoke( from );
|
|
}
|
|
else
|
|
{
|
|
from.Mobile.FixedEffect( 0x3735, 6, 30 );
|
|
from.Mobile.PlaySound( 0x5C );
|
|
}
|
|
}
|
|
}
|
|
}
|