Надо добавить метод в этот скрипт:
Код
public static void DoLeech( int damageGiven, Mobile from, Mobile target )
{
TransformContext context = TransformationSpellHelper.GetContext( from );
if ( context != null ) /* cleanup */
{
if ( context.Type == typeof( WraithFormSpell ) )
{
int wraithLeech = ( 5 + (int)( ( 15 * from.Skills.SpiritSpeak.Value ) / 100 ) ); // Wraith form gives 5-20% mana leech
int manaLeech = AOS.Scale( damageGiven, wraithLeech );
if ( manaLeech != 0 )
{
from.Mana += manaLeech;
from.PlaySound( 0x44D );
}
}
else if ( context.Type == typeof( VampiricEmbraceSpell ) )
{
from.Hits += AOS.Scale( damageGiven, 20 );
from.PlaySound( 0x44D );
}
}
}
Потом настроить его вызовы в методах:
public static void Damage( Spell spell, TimeSpan delay, Mobile target, Mobile from, double damage, int phys, int fire, int cold, int pois, int nrgy, DFAlgorithm dfa )
добавляем проверку:
Код
if ( from != null ) // sanity check
{
DoLeech( damageGiven, from, target );
}
Аналогичным образом делаем в методе:
protected override void OnTick()
Код
if ( m_From != null ) // sanity check
{
DoLeech( damageGiven, m_From, m_Target );
}
Если непонятно где и куда вставлять эти строки, смотрим как это уже сделано в оригинале:
http://runuo.googlecode.com/svn/devel/Scri.../SpellHelper.cs