Метаболизм

Метаболизм в SS14 сильно отличается от метаболизма в SS13. В SS13 у реагентов просто была процедура on_mob_life, которая вызывалась, чтобы определить, что должно произойти. Наша система гораздо более модульная и позволяет, например, разным органам метаболизировать разные реагенты, метаболизм, специфичный для вида, а также передозировки или недодозировки без каких-либо хлопот.

Органы и метаболизаторы

В SS14 органы — это сущности с MechanismComponent (mechanism — просто обобщающий термин для «органа»). У органов также есть другие компоненты, придающие им развязанное поведение; StomachComponent, CirculatorComponent, RespiratorComponent и так далее. Однако важный здесь — MetabolizerComponent.

Метаболизаторы (органы с этим компонентом) определяют список «групп метаболизма», которые они метаболизируют. «Группы метаболизма» — это такие вещи, как «Narcotic», «Food» или «Medicine». Это позволяет нам определять, как органы метаболизируют разные химические вещества.

Это указано на OrganHumanStomach. То есть желудок обрабатывает любые реагенты с метаболизмом Food или Drink:

  - type: Metabolizer
    # мм, вкусно
    maxReagents: 3
    metabolizerTypes: [Human]
    groups:
    - id: Food
    - id: Drink

Метаболизаторы могут обрабатывать лишь определённое количество реагентов одновременно, чтобы избежать распространённой в SS13 ситуации, когда наложение тонны ядов на одну сущность наносило бы ей значительно больше урона, чем один концентрированный яд.

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

Виды

Определить, как разные виды реагируют на разные химические вещества, довольно легко. Метаболизаторы помечаются «типами органов», что по сути является маркером вида, но локализованным на органе (так что если заменить своё сердце на сердце гориллы, вы будете метаболизировать лекарства/яды/и т. д. так же, как горилла). Затем можно использовать условие OrganType для проверки. Вот пример из кодовой базы для теобромина (химического вещества, содержащегося в шоколаде):

  metabolisms:
    Poison:
      effects:
      - !type:HealthChange
        conditions:
        - !type:ReagentThreshold
          min: 1
        - !type:OrganType
          type: Animal # Нанесение урона мобам с меньшими способностями к метаболизму
        damage:
          types:
            Poison: 4

Как следует из комментария, для людей это химическое вещество ничего не делает, но для животных (существ с животными органами) оно может быть смертельным.

Subpages