Возвращаясь к началу.
Что должент делать каст "щит силы"?
В завимости от разности статов хозяина щита и кастящего моба:
• должен пытаться отражать враждебную магию за счет маны хозяина щита
• Должен пытаться поглощать ее если не смог отразить
Раскачка влияет на:
• Общую вероятность отражения/поглощения
Левел влияет на:
• Длительность аффекта, например левел_кастера/2
Щит должен исчезать при успешном применении диспела, щит не может
функционировать если на хозяине щита висит печать дружбы моба/персонажа,
враждебные касты которого направлены на "подзащитно" хозяина щита.
(Либо щит так же исчезает)
Также щит не работает, если у "подзащитного" агрофлаг, а у хозяина
реж агро нет.
Щит исчезает после исчерпания магических сил своего хозяина.
Если на "подзащитного" кастится очень сильное заклинание, на отражение
которого потребуется отдать более 1/3 от общего кол-ва маны,
то щит рассыпется не выпив маны хозяина.
Пока для простоты поглощаемое кол-во урона = вероятности срабатывания
поглощения (в принципе не так уж и плохо
)
Теперь знать бы как устроены кубики совы) Но т.к. не знаю, придется
писать банальный rand() )
Итак, параметры, определяющие спелл:
- Начальная вероятность отражения, нормированная
по некоторому мобу с некоторыми статами |25%
- Начальная вероятность поглощения, тоже нормированная |50%
- Мановая стоимость полного(частичного) поглощения,
зависящая от:
разности статов врага и кастера щита
раскачки спела
- Мановая стоимость отражения каста
- Передача маг.урона цели в случае частичного поглощения
- Флаг действия: поглощение/отражение
------------------
Учтем, что щит пытается сначала отразить атаку, а если
не повезло - то поглотить.
Далее щит пытается поглотить маг.урон, кол-во урона в %,
который способен поглотить щит зависит от разности статов
и раскачки.
Код:
int spell; // - раскачка щита (0.3 = 30%)
int c_int, c_wiz; // - интеллект и мудрость хозяина щита
int m_int, m_wiz; // - интеллект и мудрость вражины
int delta; // - разность суммы статов
int damage; // - первоначальный урон
int tran_dam; // - кол-во передаваемого урона в %
int ref_cost; // - мановая стоимость отражения
int abs_cost; // - мановая стоимость поглощения
int ref_chance; // - веротяность отражения
int abs_chance; // - вероятность поглощения
bool cast; // - флаг каста, 0 = отражение
delta = c_int + c_wiz - m_int - m_wiz;
ref_chance = spell/5 + delta/4;
if ( ref_chance >4 )
ref_chance += rand()%(ref_chance/2+1);
else
ref_chance = 5;
abs_chance = 5 + spell/3 + delta/4;
if ( abs_chance >14 )
abs_chance += rand()%(abs_chance/2+1);
else
abs_chance = 15;
ref_cost = damage/ref_chance*5;
abs_cost = damage/abs_chance*5;
Прилагается мелкая прожка если вдруг кто захочет потыкать
http://flyfolder.ru/5318830
--------------------------------------------
П.С. Есть вариант проще - спелл дает +25 к резистам, ас и броне
Ну и перезарядка 5-10 мин) Давать !паладам, у них и так зом есь