Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Modval, metabolism refactoring #13961

Open
wants to merge 5 commits into
base: master
Choose a base branch
from
Open

Conversation

volas
Copy link
Member

@volas volas commented Mar 16, 2025

Описание изменений

Мне тут как-то потребовались модвалы.

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))

Кто-то наверно даже узнает формулу и откуда я её позаимствовал.

Я еще пытаюсь как-то понятно сформулировать объяснения для параметров в комментариях, но грубо говоря на языке RPG терминов (безотносительно к станции):

Аддитивы складываются и скейлятся от основного значения, это типичное +20% к скорости из-за сапогов-скороходов, добавь +5% баф скорости от кольца и общий баф будет +25% (а не +31%, если бы мы их перемножали).

Множители же перемножаются между собой и это например персонаж застрял в болоте и надо всю скорость помножить на ноль.

Я пока убрал статичные модификаторы +/-, они на данный момент не требуются и это вопрос, как применять к ним множители. Но я думаю в будущем это будет что-то вроде:
value = (base_value + SUM(statics)) * PRODUCT(multiplicatives) * (1 + SUM(additives))

Нужно быть осторожным с изменениями базы и статичными модами, если есть постоянные мультипликативные моды (и наоборот).

Теперь modval может в качестве модификатора принимать другой modval - можно посмотреть на примере сердца.

Метаболизм

С обновлением modval поправил его использование в мобах для метаболизма - коэффициенты имеют больший смысл и более понятны.

Скриншот 2025-03-16 02 29 01

(надо может убавить баф от накачки)

Сделал еще точечный косметический рефакторинг, заодно сам разобрался в метаболизме и могу больше не делегировать ревью в этой части кому-то еще.

Сам метаболизм не трогал, но из-за изменений порядка вызовы процедур есть шанс, что что-то могло поломаться.

Добавил дебаг-верб для метаболизма, который видно выше, поможет с отладкой проблем (нужно убрать куда-то админам. пока доступно как верб living-ов).

У метаболизма мобов есть вторая часть - метаболизм реагентов и нутришены, если проблемы с голодом остались, то будут где-то там.

mobs beauty

Убрал beauty компоненту и модвал с мобов. Оно было криво имплементировано, у нас за смерть отвечает одна переменная и сейчас её изменения достоверно не отследить. И в целом это ничего не приносило игре. Влияли только трупы, а трупы и так обливают всё вокруг кровью с отрицательным beauty. Само по себе тело не сказать что должно влиять на красоту комнаты, дышит оно или мертвое.

Почему и что этот ПР улучшит

Авторство

Чеинжлог

🆑

  • tweak: Рефакторинг метаболизма, на игру не должно повлиять, но пишу в чеинжлоге на всякий случай.

@volas volas added the Refactor label Mar 16, 2025
@TauKitty
Copy link
Contributor

Changelog status: ✔️

@TauKitty TauKitty added the Tweak label Mar 16, 2025
var/mob_met_factor = 1
if(iscarbon(M))
var/mob/living/carbon/C = M
mob_met_factor = C.get_metabolism_factor() * 0.25
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Этот магический коэффициент в 0.25 был смержен в FOOD_METABOLISM. По итогу тоже самое, только чуть правильнее, но может где-то этот дефайн использовался не по назначению.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants