Here's a sample spell script (energy bolt). Internal target excluded, simply calls the Target function.
[code:1] public EnergyBoltSpell( Mobile caster, Server.Items.SpellScroll scroll ) : base( caster, scroll, "Energy Bolt", "Corp Por", SpellCircle.Sixth, Reagent.BlackPearl, Reagent.Nightshade )
{
}
public override void OnCast()
{
Caster.Target = new InternalTarget( this );
}
public void Target( Mobile m )
{
if ( !Caster.CanSee( m ) )
{
Caster.SendLocalizedMessage( 500237 ); // Target can not be seen.
}
else if ( Caster.HarmfulCheck( m ) && CheckSequence() )
{
// Base damage 20-50
double damage = Utility.Random( 20, 30 );
if ( CheckResisted( m ) )
{ // Resisted, take half damage
damage *= 0.5;
m.SendLocalizedMessage( 501783 ); // You feel yourself resisting magical energy.
}
// Scale damage based on evalint and resist
damage *= GetDamageScalar( m );
// Deal the damage
m.Damage( (int) damage );
if ( Caster != m )
Caster.Direction = Caster.GetDirectionTo( m ); // Turn to them
// Do the effects
Caster.PlaySound( 0x20A );
Effects.SendMovingEffect( Caster, m, 0x379F, 7, 0, false, true );
}
FinishSequence();
}[/code:1]