Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Описание изменений
Мне тут как-то потребовались модвалы.
Modval
Переписал
/datum/modval
, убрал половину модификаторов, пофиксил баг с тем, что множители между собой складывались вместо перемножения (серьезно из-за этого бага пострадал, кажется, только квирк на голод, а всё остальное уже успели пофиксить костылями), добавил пару фич и попробовал сделать более простым для понимания и использования.Было:
value = (base_value * (1 + SUM(base_multipliers)) + SUM(base_additives)) * (1 + SUM(multiples)) + SUM(additives)
Стало:
value = base_value * PRODUCT(multiplicatives) * (1 + SUM(additives))
Кто-то наверно даже узнает формулу и откуда я её позаимствовал.
Аддитивы складываются и скейлятся от основного значения, это типичное +20% к скорости из-за сапогов-скороходов, добавь +5% баф скорости от кольца и общий баф будет +25% (а не +31%, если бы мы их перемножали).
Множители же перемножаются между собой и это например персонаж застрял в болоте и надо всю скорость помножить на ноль.
Я пока убрал статичные модификаторы +/-, они на данный момент не требуются и это вопрос, как применять к ним множители. Но я думаю в будущем это будет что-то вроде:
value = (base_value + SUM(statics)) * PRODUCT(multiplicatives) * (1 + SUM(additives))
Нужно быть осторожным с изменениями базы и статичными модами, если есть постоянные мультипликативные моды (и наоборот).
Теперь modval может в качестве модификатора принимать другой modval - можно посмотреть на примере сердца.
Метаболизм
С обновлением modval поправил его использование в мобах для метаболизма - коэффициенты имеют больший смысл и более понятны.
(надо может убавить баф от накачки)
Сделал еще точечный косметический рефакторинг, заодно сам разобрался в метаболизме и могу больше не делегировать ревью в этой части кому-то еще.
Сам метаболизм не трогал, но из-за изменений порядка вызовы процедур есть шанс, что что-то могло поломаться.
Добавил дебаг-верб для метаболизма, который видно выше, поможет с отладкой проблем (нужно убрать куда-то админам. пока доступно как верб living-ов).
У метаболизма мобов есть вторая часть - метаболизм реагентов и нутришены, если проблемы с голодом остались, то будут где-то там.
mobs beauty
Убрал beauty компоненту и модвал с мобов. Оно было криво имплементировано, у нас за смерть отвечает одна переменная и сейчас её изменения достоверно не отследить. И в целом это ничего не приносило игре. Влияли только трупы, а трупы и так обливают всё вокруг кровью с отрицательным beauty. Само по себе тело не сказать что должно влиять на красоту комнаты, дышит оно или мертвое.
Почему и что этот ПР улучшит
Авторство
Чеинжлог
🆑