Сабж сделан в коммите 2639.
Теперь можно просто создать нужную функцию на лету, и добавить её чару. Можно через яву, можно через форт.
Есть три способа создать функцию:
- обычный, передаётся тип функции (Add, Div, Mul, etc), стат (RUN_SPEED, POWER_ATTACK), порядок применения aka order, и аргумент для функции; Слово
createFunc.base
- как предыдущий, различие только в том, что можно указывать владельца функции - чтобы было проще удалять функции из калькулятора (в обычном конструкторе владелец - фабрика); Слово
createFunc.owner
- третий, нужно передать Форт-слово (к примеру, с помощью
['] word), которое и будет обсчитывать наш параметр, стат, order, и булевое значение - является слово владельцем функции или фабрика. Слово
createFunc.word
Полученную функцию можно добавить чару -
c.addFunc, можно удалить функцию из чара по её указателю -
c.removeFunc, можно удалить все функции из чара по
c.removeFuncOwner.
Саму фабрику можно получить по
FuncFactory, для того, например, чтобы удалить из чара все нестандартные функции.
Все слова определены в словаре
stats:.
Вся эта бодяга может понадобиться для того, чтобы делать территории с баффами/дебаффами - например кланхоллы, ловушки в замке, тень Mother Tree, болота разные там