TauCetiStation / TauCetiClassic

Франкенштейн жив
GNU Affero General Public License v3.0
143 stars 417 forks source link

[Proposal] Концепт анти-реагентов #9573

Open volas opened 2 years ago

volas commented 2 years ago

Тема стимуляторов, которым требуется какой-то дебафф-отходняк, всё еще будет всплывать в будущем. Как может и вопрос зависимостей.

Идея, как можно было бы это реализовать - создавать нужным реагентам абстрактный анти-реагент

/datum/reagent/hyperzine
    antireagent = /datum/reagent/anti/antihyperzine

/datum/reagent/anti/antihyperzine
    reagent_state = ABSTRACT

В метаболизме реагентов можно проверять наличие у реагента антиреагента, и если присутствует - давать человеку количество антиреагента, равное количеству метабилизированного реагента

/datum/reagents/proc/metabolize(mob/M)
    for(var/datum/reagent/R in reagent_list)
...
                remove_reagent(R.id, remove_amount)
                if(R.antireagent)
                    add_reagent(R.antireagent.id, remove_amount) // упрощенно, нужно будет делать тайпкаст

+возможно сделать ABSTRACT реагенты невидимыми в IC и непередаваемыми.

Что по итогу можно будет с этими делать?

  1. Мы можем их процессить в on_general_digest как любые другие реагенты, добавляя какие-то дебаффы или другие последствия. Можно реализовать механику отходняка/абстинентного синдрома, где нужно.
  2. Перед тем, как их процессить, мы можем проверять наличие исходного реагента в крови. Можно будет откладывать действие какого-нибудь антиникотина, если у нас в крови есть никотин - механика зависимости.
  3. В on_general_digest основного реагента можно проверять наличие и количество его антиреагента, и сбавлять баффы/дебаффы - механика привыкания и толерантности.

Антиреагент может процесситься с любой удобной ему скоростью и в общем-то тут вся прочая гибкость реагентов.

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

Mercurialaste commented 2 years ago

Абуз с калием+вода для вывода антиреагентов или банальный диализ? (В теории к слову, антиреагент не будет виден в IC но при этом, будет заполнять колбы?) (Если я правильно понимаю, анти-реагент будет служить тригером для срабатываения ивента. Муд ивента к примеру и тд.)

Из того что мне приходит в голову, это сделать мб, проверку на наличие реагента в крови, а после, если реагент был обнаружен, дергать флаги зависимостей, или типа того.

Как пример, гиперцин. Если кукла приняла гиперцин, флаг зависимости от гипера - TRUE и если у куклы в крови заканчивается гипер, то у неё собственно и начинаются отдхода, с минус мудом, мб с ускорением появления голода. (Ну и в случае передозв, который в 5 унций, заставляль куклу несколько раз вытошнить, опустошив не только желудок, но и выкидывая весь гипер из крови.)

По сути, можно было бы сделать что-то, из-за чего у куклы флаг зависимости должен будет упасть, условно, после 10 минут не приема гипера или "наркотикнейм" флаг становится FALSE и перестает мучать куклу. (За эти 10 минут можно будет напихать кучу всего. От рандомных параличей, до минус муда в -100 на последней минуте и частичные падения в обморок.)_

volas commented 2 years ago

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

Mercurialaste commented 2 years ago

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

Это по сути, хорошо и удобно... Но как условно антиреагенты будут взаимодействовать с тем же липозином? Он ускоряет метаболизм, а как следствие, выход реагентов. Как понимаю, в свою очередь и анти-реагентов.

Анти-реагенты, как я также понимаю, могут быть вообще использованы для гриф машины, а именно, кукла накачивает себя антиреагентом от того же гипера. Идет в толпу и варит в себе дым, ВСЕ реагенты что в кукле уходят в дым и вдыхаются окружающими куклами, от чего те ловят дебаф анти-реагента.

И также, как я понимаю, анти-реагенты в теории могут забить всю куклу. Т.е. наполнить её на 1000 реагентов, из-за чего уже медикаментами её лечить не получится. (Будет выглядеть, как то, что в кукле ничего нет, но и уколы медикаментами в куклу не будут добавлять ей реагентов.)

kalazus commented 2 years ago

Можно просто добавить какое-нибудь истощение, которое лечится только временем? Чтобы влиять на него нельзя было кроме какой-то магии, а при достижении определенного кол-ва замедлял/отключал органы (внутренние или наружные).