Decay Buff
Возможно, кому то это пригодится.
При создании РПГ игры рано или поздно придется занятся заклинаниями. Некоторая часть из них - баффы. Как обычно работают баффы?
Какое нибудь заклинание с определенной силой существует некоторое время (пример - увиличение интеллекта на 150 в течении 10 секунд).
Такая система используется практически во всех играх. Однако это не всегда удобно.
Например: у героя есть 2 заклинания - 100 урона ядом в течении 10 секунд и 200 урона ядом в течении 15 секунд. Герой использовал на противника первое заклинание, а затем второе. Что должно произойти? Старое заклинание должно заменится новым? Или останется старое? А может сложить их? Или стоит просто обновить время действия? Непонятно!
Предлагаю такую систему баффов:
баффы одного типа суммируются, совершают свое действие с каждой секундой (например - наносит урон. Или лечит) и уменьшают свою силу на... 25%, например.
Просуммировать силу баффа до заоблачного значения не получится. Пример - Герой каждую секунду отравляет противника ядом с силой 100.
Вот сила баффа со временем:
1 сек.: 100
2 сек.: 100*0.75+100=175
3 сек.: 175*0.75+100=231
4 сек.: 231*0.75+100=273
5 сек.: 273*0.75+100=308
.........................
10 сек.: 377
20 сек.: 398
...........................
50 сек.: 399.9998
Как видите, сила баффа не поднимется выше 400, то есть четырехкратному (1/0.25) значению "входящего" баффа.
Впрочем, стандартный "временной" бафф стоит оставить, скажем, для оглушения.
Хотя можно использовать такой алгоритм: чем выше сила баффа "оглушение", тем меньше шанс, что при прошествии секунды оглушение прекратиться.
Вот такой алгоритм. Надеюсь, он будет Вам полезен.
Всего наилучшего!
__________________
Мечта программиста: запрограммировать процесс программирования.
Всё гениальное - просто.
http://passcall.ucoz.com
|