Уверен, есть десятки и сотни способов, которые близзард использовали для подобных алгоритмов. Я говорил о другом. С одной стороны, есть эффекты с "шаблонными" алгоритмами. Например, эффект
Modifies Damage/Healing Done. Это достаточно простой алгоритм - если эффект есть, множитель урона определенного заклинания увеличивается на %, соответствующий его значению. Список зависимых заклинаний указывается дополнительно в параметре
"Влияет на заклинания:". В игре может быть сотни бафов/дебафов с этим эффектом. И сотни заклинаний, на которые они будут влиять. Но алгоритм у всех них будет один. Это напоминает мастер подстановки в ворде (я потому его и называю шаблонным), используемый для создания рассылки: структура одна, меняется лишь ее наполнение.
Но допустим баф должен увеличивать урон умения, но с определенным дополнительным условием. Если существующий шаблонный эффект таких условий не поддерживает, его могут поменять, подстраивая под новые требования. И тогда создается новый шаблонный эффект, который может быть использован и для других пар баф-заклинание. Например, это близзард сделали то ли с катаклизмом, то ли с моп, когда создали шаблонный эффект влияния на поглощения. Ранее существовали лишь шаблонные эффекты, влияющие на исцеление, и влияние на поглощения реализовывали используя эти эффекты, "вручную" внедряя новые элементы в алгоритм.
Либо разработчику надо писать новый уникальный код конкретно для данного взаимодействия. Его не применить к другой паре баф-заклинание. Так возникает очередной эффект "дамми". Их тоже не мало, но все они уникальны. Каждый хранится отдельно, и запрос к каждом тоже совершается отдельно.
Мое наблюдение - багов, связанных с шаблонными эффектами на порядок меньше, чем с дамми. Думаю это из-за того, что шаблонный эффект достаточно написать один раз в коде, и лишь организовать порядок запроса к нему и подстановку значений. На этом этапе и возникают типичные для этого эффекта баги - то заклинание "потеряется" из списка, то значение эффекта не выставлено правильно. А вот с "дамми" сложнее, каждый раз надо писать новый код, причем не обладая достаточными данными для этого. Поэтому много таких эффектов банально не реализованы - в их ячейке памяти "пусто". МрРобот использовал в случае Первой крови разбивку на подгруппы, что облегчило ему реализовать этот "дамми" эффект. Этот метод не претендует на право официального (как это делали близзард знают пожалуй лишь сами близзард). Но не спорю, нечто подобное могут использовать наши разработчики в своем ядре.
Я очень далек от среды программирования, мангосов, и подобных им. Поэтому все вышенаписанное не претендует на непреложную истину, в чем то могу ошибаться. Поправьте, если такие случаи будут.
[свернуть]