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

> Оверрайд элементального урона у мобайла с оружием
Sergius Grey
сообщение 29.9.2015, 22:10
Сообщение #1


****

Apprentice
Сообщений: 149
Регистрация: 20.6.2011
Группа: Пользователи
Наличность: 0
Пользователь №: 13.734
Возраст: 23



Есть мобайл, наемник, гуманоид. У него в руке может быть разное оружие, артовое к примеру, но нужно сделать так, чтобы элементальный урон (огнем колдом и тд) был всегда одинаковый и не брался с оружия.

Альтернативно, если это не получится сделать адекватно, прописать мобайлу постоянный эффект заклинания консекрус арма, типа
weapon.Consecrated = true;
Но как это прописать точно, я опять же не знаю из за незнания языка.


На счет первого варианта - нужно прописать следующее, но через оверрайд

SetDamageType( ResistanceType.Physical, 20 );
SetDamageType( ResistanceType.Fire, 20 );
SetDamageType( ResistanceType.Cold, 20 );
SetDamageType( ResistanceType.Poison, 20 );
SetDamageType( ResistanceType.Energy, 20 );

Но как бы оно не конфликтовало с оружием в руках моба =(
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
 
Ответить в эту темуОткрыть новую тему
Ответов
Sergius Grey
сообщение 1.10.2015, 2:19
Сообщение #2


****

Apprentice
Сообщений: 149
Регистрация: 20.6.2011
Группа: Пользователи
Наличность: 0
Пользователь №: 13.734
Возраст: 23



Juzzver, setdamagetype перекрывает лишь в том случаи, когда на оружии ничего не прописано по элемент.урону и он по дефолту 100 физ. А если прописано через:
Код
public override void GetDamageTypes( Mobile wielder, out int phys, out int fire, out int cold, out int pois, out int nrgy )
        {
            phys = fire = cold = pois = 0;
            nrgy = 100;
        }

, какую бы стихию (включая физ 100) тут не прописывать, урон эта хрень на оружии перекрывает мобайловский, увы.

Aimed, мысль интересная, завтра опробую и отпишу, спасибо. А то сейчас уже спать пора.

Буду так же рад, если подскажите как прописать постоянный эффект консекруса у моба, если в руках оружие. Это даже более лучшая идея (по концепции больше подходит).
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Aimed
сообщение 1.10.2015, 2:40
Сообщение #3


*********

Grandmaster
Сообщений: 2.250
Регистрация: 29.12.2012
Группа: Пользователи
Наличность: 5689
Пользователь №: 15.607



Цитата(Sergius Grey @ 1.10.2015, 1:19) *

Juzzver, setdamagetype перекрывает лишь в том случаи, когда на оружии ничего не прописано по элемент.урону и он по дефолту 100 физ. А если прописано через:
Код
public override void GetDamageTypes( Mobile wielder, out int phys, out int fire, out int cold, out int pois, out int nrgy )
        {
            phys = fire = cold = pois = 0;
            nrgy = 100;
        }

, какую бы стихию (включая физ 100) тут не прописывать, урон эта хрень на оружии перекрывает мобайловский, увы.

Aimed, мысль интересная, завтра опробую и отпишу, спасибо. А то сейчас уже спать пора.

Буду так же рад, если подскажите как прописать постоянный эффект консекруса у моба, если в руках оружие. Это даже более лучшая идея (по концепции больше подходит).


Проблема в том, что этот эффект не у моба, а у оружия.
Тоесть, если ты хочешь сделать через weapon.Consecrated = true;
Тогда делаешь тоже самое что я тебе сказал и просто его выставляешь если item is BaseWeapon.
Вот пример с одеванием и новым методом:
Код
    public override void AddItemBonuses(Item item)
        {
            var weapon = item as BaseWeapon;
            if(weapon != null)
            {
                weapon.Consecrated = true;
            }
            item.OnAdded( this );
        }


Цитата(Juzzver @ 1.10.2015, 0:34) *

Имеется ввиду, чтобы на оружие вешался элементальный дамаг по фаеру к примеру, в момент одевания вепона, и в момент снятия - чтобы возвращались исходные дамаги на оружие. Сделать это можно через переопределение методов OnAdded и OnRemove. Но я бы не стал прибегать к такому варианту.

Если не ошибаюсь, SetDamageType перекрывает элементальные дамаги орудия.
Какой урон прошел, скорее всего будет определяется в OnHit методе, соответственно там можно организовать проверку с броадкастом или выводом на консоль, куда будет выводится прошедший дамаг по мобайлу, ну и исходя из этого сделать выводы подходит такой вариант или нет.



Кстати да.
Они перекрывают, просто у него они выставляются при создании персонажа, а потом он одевается и как итог от перекрытия толку 0.
Нужно вывести выставление этих дамагов в отдельный метод и сделав оверрайд в самом Esquire.OnItemAdded(Item item)/OnItemRemoved(Item item)
Уже в них выставлять вызывая этот новый метод.
Эти методы вызываются после того как вещь оделась и добавила бонусы персонажу.
Так легче сделать, правда получается что выполняется куча кода впустую. Сначало добавляем бонусы при одевании, потом их оверрайдим...
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения



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

 

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