Здравствуйте, гость ( Вход | Регистрация )

> Necromancy
Hubble
сообщение 27.10.2015, 22:26
Сообщение #1


**

Группа: Пользователи
Наличность: 0
Пользователь №: 17.656



При использовании магии wraith from ( некро магии ) некромант наносит демедж к примеру на чемпах и должен получать за это манну.

Вопрос. Как это исправить ?
Спасибо
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
 
Ответить в эту темуОткрыть новую тему
Ответов
Juzzver
сообщение 7.11.2015, 22:13
Сообщение #2


**********

Модератор RunUO
Сообщений: 3.432
Регистрация: 1.11.2008
Группа: Супермодераторы
Наличность: 22498
Из: Северная Корея
Пользователь №: 11.273



Надо добавить метод в этот скрипт:

Код
        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


--------------------
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения



Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 17.7.2025, 12:20
Designed by Nickostyle