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

Модули для ригов #2971

Merged
merged 49 commits into from Mar 10, 2019
Merged

Conversation

Alexofp
Copy link
Contributor

@Alexofp Alexofp commented Jan 12, 2019

Частично портированные с бея и адаптированные под наши риги модули
default

owo what's this

Риги теперь будут пикать халф лайф стайл

Подробное описание:

В риги можно устанавливать различные модули от простых аналогов устройств типа анализатора здоровья или флешки до очень продвинутых, таких как наплечное оружие или портативного ядерного реактора. Обычные риги могут иметь до 4-х модулей, риги глав могут иметь до 6-ти

Использование модулей

Активный модуль можно выбрать через меню или с помощью кнопок, которые появляются при надевании рига. Так же с помощью них можно активировать некоторые модули. Выбранный активный модуль используется при левом клике

изображение

Настраивать или использовать модули можно так же через интерфейс рига. Открыть его можно с помощью Hardsuit - Open Hardsuit Interface. В этом интерфейсе видно работает ли риг, заряд батареи и список установленных модулей с кнопками управления. Например можно выбрать какой химикат вколоть через инъектор лекарств или узнать сколько метала осталось в модуле самопочинки.
default

Повреждение модулей

От повреждений и ЭМИ модули могут ломаться. Модуль может быть в трёх состояниях: без урона, поврежденный, уничтоженный. Поврежденные модули могут не срабатывать или делать что-то плохое, полностью сломанные модули вообще не работают.

Починка модулей

  • Снять риг
  • Вынуть поврежденный модуль с помощью отвертки
  • Поврежденные модули можно починить с помощью проводов или нанопасты
  • Уничтоженные модули чинятся только нанопастой
  • Вставить модуль обратно в риг

Энергия

В каждом риге есть батарейка которая разряжается при ношении рига и использовании модулей. Риг с разряженной батарейкой становится бесполезным, так как не может использовать модули и сильно замедляет пользователя, хотя и не теряет способности защищать от космоса. Поэтому всегда следите за зарядом и меняйте батарейку при низком заряде.

Замена батареи

  • Снять риг
  • Вынуть батарейку с помощью отвертки
  • Зарядить батарейку с помощью станции зарядки или найти новую
  • Вставить батарейку в риг

Пополнение зарядов модулей

У некоторых модулей есть ограниченный запас чего-либо. Например, у модуля самопочинки ограниченный запас метала, у инъектора химикатов ограниченное количество лекарств, у встроенного гранатомёта ограниченный запас гранат. Эти заряды модуля можно пополнять, кликая необходимым предметом по надетому ригу.

  • Самопочинка заправляется листами металла
  • Инъектор химикатов можно заправить с помощью баночки с лекарствами. Инъектор примет только те химикаты, которые поддерживает
  • Гранатомёт можно пополнить с помощью гранат поддерживаемого типа
  • Встроенный огнетушитель заправляется как обычный, кликая по баку с водой
  • Спрей с металической пеной можно заправить с помощью баночки с химикатом foaming agent

Список модулей

Модуль автоматической/продвинутой диагностики

Стоимость использования: 10 энергии на каждое сообщение
Данный модуль стоит в любом риге и может сообщать пользователю различную полезную информацию. В ригах глав стоит продвинутая версия, обладающая дополнительным функционалом. Данный модуль делает следующее:

  • Сообщает о здоровье пользователя
  • Сообщает о физическом состояние рига и возможности выхода в космос
  • Сообщает о низком заряде батареи
  • Сообщает о поврежденных и уничтоженных модулях

Продвинутая версия имеет следующие отличия:

  • Имеет персональный "голос"
  • Может автоматически использовать модуль самопочинки в случае наличия критических повреждений
  • Может автоматически вкалывать необходимые лекарства через инъектор химикатов в случае наличия определенного урона у пользователя

Встроенный сканер здоровья

Стоимость использования: 100 энергии
Полный аналог обычного сканера здоровья.

Дрель

Стоимость использования: 100 энергии
Позволяет добывать руду на астеройде, копает по три турфа сразу

Ксеноархеологический сканер аномалий

Стоимость использования: 200 энергии
Полный аналог обычного сканера аномалий

Сканер руды

Стоимость использования: 200 энергии
Полный аналог обычного сканера руды

РЦД

Стоимость использования: зависит от режима
Обычный рцд переделанный для работы от батарейки. Может быстро строить или ломать пол, стены и шлюзы.

Флеш

Стоимость использования: бесплатно
Просто встроенный в риг флеш, может перегореть отчего становится бесполезным

Инъектор химикатов

Стоимость использования: 500 энергии и химикаты
Вкалывает 10 единиц выбранного химиката при использовании. Могут быть дозаправлены с помощью баночек с поддерживаемыми лекарствами. Имеется 3 версии: боевая, медицинская и для ерт. Боевая версия не может вкалывать лекарства в других и имеет следующие химикаты: Трик, Инапровалин, Трамадол, Дексалин. Медицинский поддерживает практически все лекарства но изначально не заправлен. Версия ерт предназначена для медиков и заправлена следующим набором лекарств: Трик, Инапровалин, Трамадол, Дексалин Плюс, Анти-Токсин, Келотан, Бикаридин

Модуль самопочинки

Стоимость использования: по 150 энергии за каждый использованный лист металла. Использование всех 30 листов тратит 4500 энергии
При активации начинает использовать по 3 листа металла каждую секунду для ремонта повреждений рига.

Мед телепорт

Стоимость использования: бесплатно
В случае смерти или критического урона у носителя ждёт пару минут и пытается телепортировать тело в медбей (аналог medical body teleporter). Одноразовый. Сам риг не телепортируется и остаётся. Если модуль поврежден может не срабатывать несколько раз.

Компактный ядерный реактор

Стоимость использования: вырабатывает по 50 энергии
Пасивно и бесконечно вырабатывает немного энергии. При легких повреждениях начинает облучать пользователя радиацией. При полной поломке становится нестабильным. В этом случае необходимо немедленно снять риг, вынуть этот модуль и выкинуть подальше ибо через минуту-две взорвётся

Огнетушитель

Стоимость использования: 20 энергии и вода
Обычный огнетушитель. Можно заправлять водой как обычный с помощью баков с водой

Охлаждающий модуль

Стоимость использования: зависит от температуры, максимально 200 энергии в секунду
При активации начинает очень сильно охлаждать пользователя, используя много энергии. Позволяет небольшое время гулять в фороновых пожарах

Спрей с металической пеной

Стоимость использования: 100 энергии и пена
Позволяет временно заделать дырки в космос. Не самый предпочтительный вариант ибо пена долго застывает, ломается даже рукой ассистента

Наплечный тазер

Стоимость использования: зависит от режима, электрод использует 100 энергии, становый луч - 50
Медленно подзаряжается от батареи рига. Наплечное оружие можно использовать даже если пользователь в наручниках

Наплечный лазер

Стоимость использования: 100 энергии
Обычная лазерная винтовка в наплечной форме. Имеет ограниченный заряд которого хватает на 4 выстрела подряд после чего надо ждать дозарядки.

Гранатомёт

Стоимость использования: 500 энергии и граната
Стреляет выбранной гранатой. Гранатомёт который можно получить на станции поддерживает только светошумовые

Предустановленные модули

Риги глав в этом плане более продвинуты ибо поддерживают больше одновременно установленных модулей (до 6-ти против 4-х) и сами модули лучше

Риг главного инженера

Идеален для быстрой постройки/разборки/ремонта частей станции

  • Продвинутым модуль диагностики
  • Самопочинка
  • РЦД
  • Портативный ядерный реактор
  • Огнетушитель
  • Модуль охлаждения

Риг СМО

Предназначен для спасения, включая спасения самого СМО

  • Продвинутым модуль диагностики
  • Самопочинка
  • Мед телепорт
  • Медицинский инъектор химикатов
  • Сканер здоровья

Риг ХоСа

Предназначен для помощи в устранении беспорядков и спасения пользователя в боевых ситуациях

  • Продвинутым модуль диагностики
  • Самопочинка
  • Наплечный тазер
  • Гранатомёт со светошумовыми
  • Боевой инъектор химии
  • Мед телепорт

Инженерный и атмосферный риги

  • Обычный модуль диагностики
  • Огнетушитель
  • Модуль охлаждения
  • Спрей с металической пеной

Шахтерский риг

  • Обычный модуль диагностики
  • Дрель
  • Сканер руды

Медицинский риг

  • Обычный модуль диагностики
  • Сканер здоровья

Риг службы безопасности

  • Обычный модуль диагностики
  • Самопочинка
  • Флеш

Риг оперативника синдиката

  • Обычный модуль диагностики
  • Самопочинка

Риг командира ЕРТ

  • Продвинутым модуль диагностики
  • Самопочинка
  • Наплечный тазер
  • Наплечная лазерная винтовка
  • Гранатомёт со светошумовыми
  • Модуль охлаждения

Боевой риг ЕРТ

  • Обычный модуль диагностики
  • Самопочинка
  • Наплечный тазер
  • Флеш

Медицинский риг ЕРТ

  • Обычный модуль диагностики
  • Самопочинка
  • Флеш
  • ЕРТ-версия инъектора химикатов

Инженерный риг ЕРТ

  • Обычный модуль диагностики
  • Самопочинка
  • Флеш
  • РЦД
  • Огнетушитель
  • Модуль охлаждения

Создание модулей

Все модули можно сделать в рнд в протолате. Большинство продвинутых модулей требует высокий уровень исследований и много ресурсов

Другие небольшие изменения

Упрощена процедура прицепления шлема и ботинок, больше не надо выставлять интент на хелп, целится в голову и ноги
Suit patcher теперь можно юзать и на других, кликая по кукле а не ригу, возрадуйтесь

🆑

  • rscadd[link]: Модули для ригов. Создаются в рнд
  • tweak: Suit patcher можно юзать на других, кликая по кукле

@TauKitty
Copy link
Contributor

TauKitty commented Jan 12, 2019

Changelog status: ✔️

@RichardJones1
Copy link
Contributor

Мой мозг ВЗОРВАН... <3

@Alexofp Alexofp changed the title [WiP] Модули для ригов Модули для ригов Feb 7, 2019
@Alexofp
Copy link
Contributor Author

Alexofp commented Feb 7, 2019

В целом готово, всё что хотел сделал, ревью реди

@Alexofp
Copy link
Contributor Author

Alexofp commented Feb 8, 2019

а этот ПР всё ещё готов и всё ещё ждет ревью, да

var/list/stat_rig_module/stat_modules = new()

/obj/item/rig_module/atom_init()
. =..()
Copy link
Contributor

Choose a reason for hiding this comment

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

(пробела не хватает)

to_chat(holder.wearer, "<span class='warning'>You cannot use the suit in this state.</span>")
return 0

if(!holder.check_power_cost(holder.wearer, use_power_cost, FALSE, src) )
Copy link
Contributor

Choose a reason for hiding this comment

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

пробел перед скобкой лишний наверное

stat(SRM.module.interface_name,SRM)

/stat_rig_module
parent_type = /atom/movable
Copy link
Contributor

Choose a reason for hiding this comment

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

мне что-то подсказывает что это может что-нибудь да сломать, почему не подтип обжекта?

Copy link
Member

@volas volas left a comment

Choose a reason for hiding this comment

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

Пока не всё просмотрел, еще вернусь к ПРу после.

@@ -38,3 +38,9 @@
#define PARALLAX_DELAY_DEFAULT world.tick_lag
#define PARALLAX_DELAY_MED 1
#define PARALLAX_DELAY_LOW 2

// Hardsuit module activation method
#define HARDSUIT_ACTIVATION_MIDDLE_CLICK 0
Copy link
Member

Choose a reason for hiding this comment

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

ИМХО лучше мидлклик оставить только для смены рук.

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

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Какую тогда оставить? Альт клик как у меня раньше было? Она тоже пересекалась с менюшкой предметов на полу. По идее контрл клик вроде не используется нигде у людей

Copy link
Contributor Author

Choose a reason for hiding this comment

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

А не, контр клик этож пул, тогда не знаю какую комбинацию сделать

Copy link
Contributor

Choose a reason for hiding this comment

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

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

var/list/nonimportant_messages = list()
var/list/important_messages = list()

var/saved_health
Copy link
Member

Choose a reason for hiding this comment

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

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

var/charges = 0

// Used to limit subtypes of the same module
var/const/module_mount_other = 0
Copy link
Member

Choose a reason for hiding this comment

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

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

var/activate_string = "Activate"
var/deactivate_string = "Deactivate"

var/list/stat_modules = new()
Copy link
Member

Choose a reason for hiding this comment

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

комментарий бы

/obj/item/rig_module/examine()
. = ..()
switch(damage)
if(0)
Copy link
Member

Choose a reason for hiding this comment

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

Можно переделать на дефайны для читаемости. Не критично.

STOP_PROCESSING(SSobj, src)
return ..()

/obj/item/clothing/suit/space/rig/proc/check_power_cost(var/mob/living/user, var/cost, var/use_unconcious, var/obj/item/rig_module/mod)
Copy link
Member

Choose a reason for hiding this comment

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

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

code/modules/clothing/spacesuits/rig/rig.dm Outdated Show resolved Hide resolved
set category = "Hardsuit"
set src = usr.contents

if(!check_power_cost(usr, 0, 0, 0, 0))
Copy link
Member

Choose a reason for hiding this comment

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

Для чего оно в подобном виде?
Еще тут нуль лишний, функция принимает только 4 параметра

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Понятия не имею зачем оно тут, спросите бей :x

Copy link
Member

Choose a reason for hiding this comment

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

Ага, вы попались на бездумном копипасте!

to_chat(holder.wearer, "<span class='warning'>You cannot use the [interface_name] again so soon.</span>")
return 0

if(holder.wearer.lying || holder.wearer.stat || holder.wearer.stunned || holder.wearer.paralysis || holder.wearer.weakened)
Copy link
Member

Choose a reason for hiding this comment

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

Отчасти пересекается с check_power_cost ниже, как минимум и там и тут проверка на stat

На твоё усмотрение, но может имеет смысл перенести check_power_cost (если переименуешь сам check_power_cost, см. ниже)

return

// Called by the hardsuit each rig process tick.
/obj/item/rig_module/process()
Copy link
Member

Choose a reason for hiding this comment

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

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

return 0

/mob/living/carbon/human/can_use_rig()
return 1
Copy link
Contributor

Choose a reason for hiding this comment

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

В половине проков выше TRUE/FALSE, а тут 0 и 1, которые используются с той же целью?

@seekin4u
Copy link
Contributor

seekin4u commented Feb 9, 2019

А обновления этих самых ригов с human/update_icon стянул? Или слепой и не вижу где еще используется оверлей модуля, либо он не используется для этих целей (там есть две такие переменные, вроде), по задумке авторов, модули должны были отрисовываться на мобах.

@Alexofp
Copy link
Contributor Author

Alexofp commented Feb 9, 2019

В целом всё

@EdlerN
Copy link
Member

EdlerN commented Mar 2, 2019

Запишу тут, а то потом забуду. В нынешнем виде у модулей есть одна небольшая проблема. А именно то, что их все можно навесить на один риг. Один любой риг. Вдобавок, та самая формула, которая по идее должна отвечать за баланс всего этого дела работает не слишком хорошо. То есть, даже расстреливая с эми такой обвешанный риг - он живет слишком долго. Я уже молчу о том что в случае если это не эми - ненужные модули таки впитывают урон, делая тот же реактор условно юзабельным на боевом риге (что не есть хорошо). Вдобавок, не хватало нам шахтеров с оружейкой в блюспейс сумке - теперь они еще и обвешаны всякими лазерами-тазерами-гранатометами, а еще рцд и реактором. Весело но нет.

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

По поводу адекватных значений количества модулей - можно глянуть на мехи те же. 3-4 для базового за глаза. 5-6 для улучшенного. Ерт и главам уникальные на 6+. Что-то такое.

Copy link
Member

@SpaiR SpaiR left a comment

Choose a reason for hiding this comment

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

По коду, кроме пары моментов, которые я обозначил, с пивом пойдёт. Остаётся вопрос с информацией, но об этом я писал: либо вики, либо оформить дескрипшн ПРа. Как будет готово - можно будет смержить.

code/modules/clothing/spacesuits/rig/modules/ai.dm Outdated Show resolved Hide resolved

var/power_waste = 0

var/datum/rig_message/message = message_queue[message_queue[1]] // take the first message
Copy link
Member

Choose a reason for hiding this comment

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

var/message_type = message_queue[1]
var/datum/rig_message/message = message_queue[message_type]

Этот участок и message_queue[1] ниже, наверное лучше сделать так. Очень упростит кому-нибудь жизнь в будущем.

/obj/item/rig_module/proc/accepts_item(obj/item/input_device)
return FALSE

/mob/proc/Rig_SetupStat(obj/item/clothing/suit/space/rig/R)
Copy link
Member

Choose a reason for hiding this comment

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

Стоит придерживаться более консистентного нэйминга методов. Понимаю, что у нас в принципе по кодбазе намешано, там снэйккейс, тут кэмелкейс. Но в данном случае что-то совсем новое 😅 Классический rig_setup_stat, учитывая названия методов выше и ниже, подойдёт сюда лучше

SpaiR and others added 2 commits March 9, 2019 12:23
@Alexofp
Copy link
Contributor Author

Alexofp commented Mar 9, 2019

Описание пра обновлено, вроде всё

@SpaiR
Copy link
Member

SpaiR commented Mar 9, 2019

За описание отдельный лайк, всё круто! 👍

destroyed_message = voice.destroyed_message

for (var/i in 1 to health_warnings.len)
health_warnings[i].message = voice.health_warnings[i]
Copy link
Contributor

Choose a reason for hiding this comment

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

Не стоит такие конструкции использовать с применением "дот чейна", это тоже самое что :. Приводит потом к проблемам. Надо приводить к типу вида /datum/rig_warning/RW = health_warnings[i]. Естественно при таком примере скорее всего будут рантаймы, но моя цель натолкнуть на мысль к чему надо это привести.
Ну и плюс такое на самом деле сбивает с толку и запутывает, учитывая что в одном месте это лист со стрингами, в другом с датумами.

Co-Authored-By: Alexofp <vip-ak47@yandex.ru>
module.holder.Topic(usr, href_list)

/obj/stat_rig_module/DblClick()
return Click()
Copy link
Contributor

Choose a reason for hiding this comment

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

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

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Вся эта часть честно скопирована с бея без раздумий. Думаю, что можно заменить на return, да


for(var/obj/item/rig_module/module in installed_modules)
if(module.suit_overlay_image)
user.overlays -= module.suit_overlay_image
Copy link
Contributor

Choose a reason for hiding this comment

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

У мобов которые хуманы, порядка 15+ оверлеев все время. Удалять и добавлять поштучно будет довольно дорогим удовольствием, т.е каждое изменение будет пересобирать в рендере бъенда моба, по этой причине в свое время обновление в хуманов перешло на сборку всего что надо сделать сначала в лист, а потом минусовать/плюсовать эти листы.
Возможно вообще это стоит встроить в прок update_wear_suit()

var/list/selectable = list()
for(var/obj/item/rig_module/module in installed_modules)
if(module.toggleable)
selectable |= module
Copy link
Contributor

@ZVee ZVee Mar 9, 2019

Choose a reason for hiding this comment

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

А есть причина по которой добавление не идет через +=? (если что, это не единственное место, ниже и выше тоже есть такое).

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Нету, поменяю

@volas volas merged commit b953299 into TauCetiStation:master Mar 10, 2019
TauKitty added a commit to TauCetiStation/ClassicChangelog that referenced this pull request Mar 10, 2019
SpaiR pushed a commit that referenced this pull request Mar 10, 2019
volas pushed a commit that referenced this pull request Mar 10, 2019
Skippeer12 added a commit to Skippeer12/TauCetiClassic that referenced this pull request May 23, 2019
* Трогаем бумажки в бриге v2 (TauCetiStation#3265)

* init commit

* moved paper from map to paper.dmm

* пощадил бумажку

* Miner Hud MK II (TauCetiStation#3268)

* Miner MK II

Очки шахтеров для враждебной фауны.

* Update code/modules/research/xenoarchaeology/finds/finds_special.dm

Co-Authored-By: DarkLevelSS13 <45293346+DarkLevelSS13@users.noreply.github.com>

* Забыл изменить

Увеличил пул рандома.

* Смена описания

Добавлено предложение Richard Jones на счет смены описания предмета.

* Замена осколка форонового стекла на МК II очки

* Обновление MK II

Добавления деталей к MK II

* Исправление недочетов

* Добавление предложения от ZVee

Переместил MK II с find_special в mining\scanners

* Удаления двух не нужных абзаца

* Небольшие багфиксы

* verb has no parent here

* Исправление бага со срабатыванием нютоновского движения когда не происходит выстрела из оружия.

* Исправление возможности поставить больше одного апц в зоне, а также рантайма:
Runtime in apc.dm,119: undefined variable /area/assembly/assembly_line/var/master
  proc name: atom init (/obj/machinery/power/apc/atom_init)
  usr: Abid Hussein (someplayer) (/mob/living/carbon/human)
  usr.loc: The floor (113,89,1) (/turf/simulated/floor)
  src: the area power controller (/obj/machinery/power/apc)
  src.loc: the floor (113,89,1) (/turf/simulated/floor)
  call stack:
  the area power controller (/obj/machinery/power/apc): atom init(0, 1, 1)
  Atoms (/datum/subsystem/atoms): InitAtom(the area power controller (/obj/machinery/power/apc), /list (/list))
  the area power controller (/obj/machinery/power/apc): New(0, 1, 1)
  APC frame (/obj/item/apc_frame): try build(the wall (113,90,1) (/turf/simulated/wall))
  the wall (113,90,1) (/turf/simulated/wall): attackby(APC frame (/obj/item/apc_frame), Abid Hussein (/mob/living/carbon/human), "icon-x=10;icon-y=16;left=1;scr...")
  Abid Hussein (/mob/living/carbon/human): ClickOn(the wall (113,90,1) (/turf/simulated/wall), "icon-x=10;icon-y=16;left=1;scr...")
  Abid Hussein (/mob/living/carbon/human): ClickOn(the wall (113,90,1) (/turf/simulated/wall), "icon-x=10;icon-y=16;left=1;scr...")
  the wall (113,90,1) (/turf/simulated/wall): Click(the wall (113,90,1) (/turf/simulated/wall), "mapwindow.map", "icon-x=10;icon-y=16;left=1;scr...")
  someplayer (/client): Click(the wall (113,90,1) (/turf/simulated/wall), the wall (113,90,1) (/turf/simulated/wall), "mapwindow.map", "icon-x=10;icon-y=16;left=1;scr...")

* Исправление еолов на файле ридми компонентов.

* Монетки с ТГ (TauCetiStation#3126)

* Монетки с ТГ

Новые спрайты монеток, suicide_act, анимированный флип с озвучкой, реагенты и металл в монетках, ценность в кредитах. MANUAL_SUICIDE для кастомной смерти. Бонусом пофиксил пресс для монеток (платиновая была забагована)

* избавился от лишнего, починил клоунские монетки

* Электрохромные стёкла с Baystation12. (TauCetiStation#3229)

* medbay remap (TauCetiStation#3266)

* medbay remap

* Поправлены название зон техтуннелей, добавлена зона техов атмоса (иначе техи медбея слишком много на себя берут). Убрал лишнюю зону коридора медбея

* Перекраска мед. спрайтов в голубой

"Бонусом" поправил оверлеи ХУДов, добавил аирлок вирусолога, добавил шкаф химика. Обновил наноУИ z1

* Фиксы по фидбеку и мелочи. Поправил цвета стекол для медбея

* Merge pull request TauCetiStation#2971 from Alexofp/rigmodules-feature

Модули для ригов

* Фикс открытого стейта шкафчика химика

* центрирует suits.dmi

* Runtime in browserOutput.dm,220: DEBUG: to_chat called with invalid message:
  proc name: to chat (/proc/to_chat)
  usr: Ayden Linton (someplayer) (/mob/living/carbon/human)
  usr.loc: The floor (65,133,1) (/turf/simulated/floor)
  src: null
  call stack:
  to chat(Sparsae Ramos Juniperus (/mob/living/carbon/human), null, 1)
  the paper (/obj/item/weapon/paper): attack(Sparsae Ramos Juniperus (/mob/living/carbon/human), Ayden Linton (/mob/living/carbon/human), "eyes")
  Sparsae Ramos Juniperus (/mob/living/carbon/human): attackby(the paper (/obj/item/weapon/paper), Ayden Linton (/mob/living/carbon/human), "icon-x=13;icon-y=18;left=1;scr...")
  Ayden Linton (/mob/living/carbon/human): ClickOn(Sparsae Ramos Juniperus (/mob/living/carbon/human), "icon-x=13;icon-y=18;left=1;scr...")
  Ayden Linton (/mob/living/carbon/human): ClickOn(Sparsae Ramos Juniperus (/mob/living/carbon/human), "icon-x=13;icon-y=18;left=1;scr...")
  Sparsae Ramos Juniperus (/mob/living/carbon/human): Click(the floor (66,133,1) (/turf/simulated/floor), "mapwindow.map", "icon-x=13;icon-y=18;left=1;scr...")
  someplayer (/client): Click(Sparsae Ramos Juniperus (/mob/living/carbon/human), the floor (66,133,1) (/turf/simulated/floor), "mapwindow.map", "icon-x=13;icon-y=18;left=1;scr...")

* Исправление жалобы атом_инита на то что кудель в ините и добавление стек трейса на случай конфликта от мапперов.

* Runtime in Chemistry-Holder.dm,520: Cannot read null.id
  proc name: get reagent amount (/datum/reagents/proc/get_reagent_amount)
  src: /datum/reagents (/datum/reagents)
  call stack:
  /datum/reagents (/datum/reagents): get reagent amount("spaceacillin")
  the heart (/obj/item/organ/internal/heart): handle antibiotics()
  the heart (/obj/item/organ/internal/heart): process()
  Keith Beck (/mob/living/carbon/human): handle bodyparts()
  Keith Beck (/mob/living/carbon/human): handle regular status updates()
  Keith Beck (/mob/living/carbon/human): Life(2)
  Mobs (/datum/subsystem/mobs): fire(0)
  Mobs (/datum/subsystem/mobs): ignite(0)
  Master (/datum/controller/master): RunQueue()
  Master (/datum/controller/master): Loop()
  Master (/datum/controller/master): StartProcessing(0)

* Исправление дестроев glowstick и /datum/action.
/datum/action похоже никогда не удалялся и всегда висел в памяти, к чему это приводило даже не знаю.

* Runtime in airlock.dm,121: Cannot execute null.is index cut().
  proc name: isWireCut (/obj/machinery/door/airlock/proc/isWireCut)
  usr: Ryan Fallson (someplayer) (/mob/living/carbon/human)
  usr.loc: The floor (106,77,1) (/turf/simulated/floor)
  src: Engineering Maintainance (/obj/machinery/door/airlock/maintenance)
  src.loc: null
  call stack:
  Engineering Maintainance (/obj/machinery/door/airlock/maintenance): isWireCut(2)
  Engineering Maintainance (/obj/machinery/door/airlock/maintenance): loseMainPower()

* Runtime in special.dm,198: Cannot modify null.view.
  proc name: dropped (/obj/item/weapon/gun/energy/sniperrifle/dropped)
  usr: SkrellDestroyer (someplayer) (/mob/living/carbon/human)
  usr.loc: space (134,197,1) (/turf/space)
  src: the sniper rifle (/obj/item/weapon/gun/energy/sniperrifle)
  src.loc: space (135,197,1) (/turf/space)
  call stack:
  the sniper rifle (/obj/item/weapon/gun/energy/sniperrifle): dropped(Killer (/mob/living/carbon/human))
  Killer (/mob/living/carbon/human): remove from mob(the sniper rifle (/obj/item/weapon/gun/energy/sniperrifle), null)
  Killer (/mob/living/carbon/human): drop from inventory(the sniper rifle (/obj/item/weapon/gun/energy/sniperrifle), null)
  Killer (/mob/living/carbon/human): u equip(the scorched emergency respons... (/obj/item/clothing/suit/space/rig/ert/security))
  Killer (/mob/living/carbon/human): remove from mob(the scorched emergency respons... (/obj/item/clothing/suit/space/rig/ert/security), null)
  Killer (/mob/living/carbon/human): do stripPanelUnEquip(SkrellDestroyer (/mob/living/carbon/human), 14, null, 0)
  Killer (/mob/living/carbon/human): stripPanelUnEquip(SkrellDestroyer (/mob/living/carbon/human), 14, null)
  Killer (/mob/living/carbon/human): Topic("src=\[0x300008b];item=14", /list (/list))
  Killer (/mob/living/carbon/human): Topic("src=\[0x300008b];item=14", /list (/list))
  someplayer (/client): Topic("src=\[0x300008b];item=14", /list (/list), Killer (/mob/living/carbon/human))

* Runtime in garbage.dm,310: /obj/item/weapon/stool destroy proc was called multiple times, likely due to a qdel loop in the Destroy logic
  proc name: qdel (/proc/qdel)
  usr: Andre Mcmullen (someplayer) (/mob/living/carbon/human)
  usr.loc: The floor (140,155,1) (/turf/simulated/floor)
  src: null
  call stack:
  qdel(the stool (/obj/item/weapon/stool), 0)
  the stool (/obj/item/weapon/stool): dropped(Andre Mcmullen (/mob/living/carbon/human))
  Andre Mcmullen (/mob/living/carbon/human): remove from mob(the stool (/obj/item/weapon/stool), null)
  Andre Mcmullen (/mob/living/carbon/human): drop from inventory(the stool (/obj/item/weapon/stool), null)
  the stool (/obj/item/weapon/stool): Destroy(0)
  the stool (/obj/item/weapon/stool): Destroy(0)
  the stool (/obj/item/weapon/stool): Destroy(0)
  qdel(the stool (/obj/item/weapon/stool), 0)
  the stool (/obj/item/weapon/stool): attack(Sinon Moon (/mob/living/carbon/human), Andre Mcmullen (/mob/living/carbon/human), "chest")
  Sinon Moon (/mob/living/carbon/human): attackby(the stool (/obj/item/weapon/stool), Andre Mcmullen (/mob/living/carbon/human), "icon-x=17;icon-y=21;left=1;scr...")
  Andre Mcmullen (/mob/living/carbon/human): ClickOn(Sinon Moon (/mob/living/carbon/human), "icon-x=17;icon-y=21;left=1;scr...")
  Andre Mcmullen (/mob/living/carbon/human): ClickOn(Sinon Moon (/mob/living/carbon/human), "icon-x=17;icon-y=21;left=1;scr...")
  Sinon Moon (/mob/living/carbon/human): Click(the floor (140,156,1) (/turf/simulated/floor), "mapwindow.map", "icon-x=17;icon-y=21;left=1;scr...")
  someplayer (/client): Click(Sinon Moon (/mob/living/carbon/human), the floor (140,156,1) (/turf/simulated/floor), "mapwindow.map", "icon-x=17;icon-y=21;left=1;scr...")

* editorconfig newline true.

* Path : /obj/effect/decal/cleanable/liquid_fuel
- Didn't return an atom_init() hint

* Исправление неверных параметров иконки хамелеон вещей после эми и рантаймов:
Runtime in chameleon.dm,88: Cannot execute null.update inv head().
  proc name: emp act (/obj/item/clothing/head/chameleon/emp_act)
  src: the grey cap (/obj/item/clothing/head/chameleon)
  src.loc: the backpack (/obj/item/weapon/storage/backpack)
  call stack:
  the grey cap (/obj/item/clothing/head/chameleon): emp act(1)
  Mira Special (/mob/living/carbon/human): emp act(1)
  Mira Special (/mob/living/carbon/human): emp act(1)
  empulse(space (118,62,1) (/turf/space), 8, 10, 0)
  the gravitational singularity (/obj/singularity): emp area()
  the gravitational singularity (/obj/singularity): event()
  the gravitational singularity (/obj/singularity): process()
  Objects (/datum/subsystem/objects): fire(0)
  Objects (/datum/subsystem/objects): ignite(0)
  Master (/datum/controller/master): RunQueue()
  Master (/datum/controller/master): Loop()
  Master (/datum/controller/master): StartProcessing(0)

* Path : /obj/item/projectile/kinetic
- Didn't call atom/atom_init()
- Didn't return an atom_init() hint

* Runtime in dna2.dm,196: list index out of bounds
  proc name: GetUIState (/datum/dna/proc/GetUIState)
  usr: Keith Beck (someplayer) (/mob/living/carbon/human)
  usr.loc: The floor (160,121,1) (/turf/simulated/floor)
  src: /datum/dna (/datum/dna)
  call stack:
  /datum/dna (/datum/dna): GetUIState(14)
  God Emperor of Mankind (/mob/living/carbon/human): UpdateAppearance(/list (/list))
  DNA Modifier Access Console (/obj/machinery/computer/scan_consolenew): Topic("src=\[0x21022484];bufferOption...", /list (/list), 0, /datum/topic_state (/datum/topic_state))
  /datum/nanoui (/datum/nanoui): Topic("src=\[0x21022484];bufferOption...", /list (/list))
  someplayer (/client): Topic("src=\[0x21022484];bufferOption...", /list (/list), /datum/nanoui (/datum/nanoui))

* Чиним взаимодействие гостов со стульями от конфига  (TauCetiStation#3293)

* карта

* что это тут забыло...

* чиним взаимодействие гостов со стульями

* Звуки (с tg) медбота, ходьбы по кишкам, офисных кресел

при включении лампочек, при отправке игроку печенья. Избавился от ненужных списков в sound.dm и какие-то мелочи со звуками

* Добавил проверку на гравитацию для звука и звук каталке

* Починил звук печати, добавил звук гипоспрею

* Feedback messages for shuttle cancellation

* добавил Sound лэйбл для бота

* Предупреждение о том что при ините карты в зоне находится больше одного АПЦ.

* Изменение рецептов цветных красок для волос

* istool (TauCetiStation#3299)

* Фреймворк юнит тестов с бея.

* Убрана полицейская дубина с дереликта

* Отображение битфлагов ВВ в виде их наименований.
Убрал свой старый метод который когда-то добавлял.

* Редактирование битфлагов через ВВ теперь происходит через специальное окно с чекбоксами.
Обновлен browser.dm кодом с tgstation. Добавлен фреймворк модальных окон (хотя насчет бъенда не уверен что они модальные).

* Скрипты для баша необходимые для запуска юнит тестов. Модифицированы под текущие нужды - т.е удалены части кода (возможны косяки).

* info() хелпер, для вывода некоторых сообщений которые не совсем подходят для ошибок или предупреждений.

* electrohromic windows, access fixes (TauCetiStation#3294)

* electrohromic windows, fixes

* фиксы дубликатов АПЦ в зонах, фикс сброса в церкви

* Удалил лишний стаканный lattice с карты z1.

* Чистка run-test от лишнего.

* Тесты на проверку файлов на предмет уникальности и отсутствия пустоты в папках кода, наноуи и иконок.

* Тест проверающий корректность спанов.

* Тест на наличие step_x/y на картах.

* Тест на отступы. На мой взгляд конечно есть и жертвы на которые приходится идти, но польза от этого точно весомая.

* Тест на корректность тэгов.

* Тест на корректность хекс цветов.

* Тест на наличие tag переменной на картах.

* Перенос скриптов в соответствующую папку.

* Изменения в работе импланта лояльности (TauCetiStation#3101)

* импланты лояльности и цели

* добавил запрет на таторки посл начала раунда для тех у кого mindshield

* небольшие изменения

* список реконвертнутых, реконверт

* теперь убираются просто задания

* перемещаем в нужные файлы

* Переход вендоматов в 3/4 (TauCetiStation#3066)

* Отвязал чекер цветов от третьего питона (проверил - с виду ничего не поломалось и все работает).
Убрал еще лишнее из run-test то что пришло с бея, но у нас вряд ли будет использоваться сейчас.

* Правка регулярки под awk (т.к беевский вариант расчитан под gawk).

* Изменения симплмобов. (TauCetiStation#3272)

* Изменения симплмобов

* Переносим проверку

* Update code/modules/mob/living/simple_animal/simple_animal.dm

Co-Authored-By: RichardJones1 <39438947+RichardJones1@users.noreply.github.com>

* Изменения, которые предложил сделать Spair

* Рефактор сглаживания объектов с тг (модифицированный). (TauCetiStation#3267)

* Рефактор сглаживания объектов с тг (модифицированный).
Удалены неиспользуемые vault типа пол и стена.
Усиленная фальшстена вмержена в основной класс.
В "Game Panel" спавна турфов оторвана работа мультивыбора и спавна больше одного турфа за раз - т.к все равно в итоге каждая итерация просто заменяет собой предыдущую.
Рефактор коснулся основных и минеральных стен.

* Для сглаживания требуется только 4-8 стейтов (в зависимости от типа).
Анимации дверей фальш стен генерируются сами (все что требуется это положить дми файл в соответствующую папку).
Выключил даблклик - со стороны взаимодействия ни на что не влияет, но убирает конфликты вроде билдмода, когда для апгрейда турфа вместо двух кликов происходят три. Да и нажимая дабл, срабатывают два одиночных, а потом сверху накидывается еще дополнительный от двойного, что явно некорректно.
mutable_appearance прок получил аргумент плейнов.

* Перевел структуры ксеноморфов на новое сглаживание (как минимум для того чтобы был пример, что можно сглаживать и спрайты отличные от 32х32 (трава к примеру 40х40 из-за особых боков).
Переименовал `/obj/effect/alien` -> `/obj/structure/alien`. Оставил `/obj/effect/alien/acid`, т.к этому в структуры явно не место.
Пока смотрел что там в родителе структур и не потребуется ли каких-то модификаций после переноса, заметил что в лазанье на структуры climbable идет вторым, а первым идет прок с выводом сообщений и прочих проверок, поэтому поменял их местами, т.к в первую очередь нас интересует вообще возможность взбираться, а уж потом прочие проверки.

* В завершающем тесте заметил что фороновые и урановые стены некорректно склеиваются. Причиной было тем, что им не подходит вариант симметричного сглаживания из 4-х стейтов. Залил исправленные с 5-ю.

* Apply suggestions from code review

Co-Authored-By: ZVee <ZVee@users.noreply.github.com>

* Переиначил заглушку на двойной клик, что исправляет отвалившийся механ.

* Исправление несоздававшихся анимаций фальш стен.

* Убрал пример который является копией файла со стенами по сути, за которым можно сходить и к нормальным дми, а примеров и так хватает.

* фикс бага с флагами запрета ношения вещей у ксеносов (TauCetiStation#3314)

* ksenos-will-can-r-pocket

* Update clothing.dm

* Новые звуки для машинерии и хуманов (TauCetiStation#3277)

* Новые звуки для машинерии и мобов

* Мелкофиксы звуков, случайно выпиленная фича вернулась

* Упростил структуру вывода сообщения гасп-эмоутов

* Звуки при хождении по воде возвращены до старой версии, о7

* ** Изменил звуки рвотного позыва. Нужно обсуждение **

* Исправление по замечанию воласа

* Забытое при переносе TRUE у кашля вернулось

* Revert "** Изменил звуки рвотного позыва. Нужно обсуждение **"

This reverts commit 038d49d.

* Мелочи; забыл удалить свои легстепы; звуки звук срыгивания возвращен до старой версии

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

* Предметы больше не остаются на спрайте мешочков криминалиста при сканировании

* Новые экраны для СПУ (TauCetiStation#3322)

* Новые экраны для СПУ

* Фикс

* Исправление бесконечных выстрелов из двустволки при спиливании (TauCetiStation#3311)

* Больше не проигрывается эффект выстрела, когда отпиливается двустволка с пустой гильзой внутри

* Больше не проигрывается эффект выстрела, когда отпиливается двустволка с пустой гильзой внутри

* Отпечатки теперь сохраняются при сборке/разборке машинерии и консолей

* Тикеты с tgstaion на замену ахелпа.

* Исправление невидимых слотов загрузки персонажей.

* Юнит тест на atom_init().

* Юнит тест на корректность айди для реакций химии.

* Убираем из рандома 6 радиус взрыва

* Исправление некорректного атом инита для ticket_list.

* Apply suggestions from code review

Co-Authored-By: ZVee <ZVee@users.noreply.github.com>

* Светлая тема для /datum/browser с минимально возможными изменениями.

* Исправления пробелов в common.css которые редактор сам убирает.

* Некоторые правки санитайза. Убран лишний, заменен трим на санитайз (видимо с ТГ прицепилось). Комментарий для строки с возвращенным сообщением.

* Сообщения нотесов дублируются в открытый тикет (варны тоже будут, т.к они летят в нотесы, а значит и в тикет). Убрал лишнюю скобку в нотесах.

* Задержка на использование here для созданных тикетов при отправки сообщения в дискорд.

* Перенесено русифицированное сообщение при получении первого сообщения от администратора игроком. Т.к гит в очередной раз поломал кодировку там где не надо.

* Звуки тошноты, интернала и их небольшие фичи. Багфикс занятости при вторичных действиях (TauCetiStation#3301)

* Попутные правки в выводе сообщений в разных файлах

* Звуки переключения интернала(осн)

* Звуки пассивного дыхания через интернал+звуки переключения(доп)

* Листы всех звуков + их сортировка и форматирование

* Рвотные позывы, их звуки и фичи

А я говорил что я еще не закончил! Надеюсь теперь они не такие мерзкие.

* Пытаясь образумить дифбота, обнаружил файл со старого пра

* Списки sound теперь не имеют выравнивания

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

* Исправления в коде рвотных позывов по замечаниям зве

* Слишком поторопился. Исправления исправлений по азмечанию зве

* Снова что то забыл поменять. Плюс поменял spawn-задержку на переменную

Щас буит второй бан на гитхабе за спам коммитами. Продолжу исправлять интернал лучше завтра, слишком невнимательный сейчас.

* Еще одни мелкоправки в вомитах

Кажется я начинаю запутываться в коде этих 4 файлах. Надеюсь это все что было необходимо исправить. Убрал свою глупейшую "ластвомит" которая только вчера казалась мне хорошим решением для замены spawn. Интересно как я не додумался что оно не будет работать... Плюс еще пара правок там кому сделать звук или куда добавить срыгню

* Перенес дыхание в life.dm, фиксы по замечаниям зве и без них

Спам звуками при удушье не идет, зато при никзом давлении - да.  Но это звучит не так уж и плохо, даже в каком то смысле реалистично. Я подумаю насчет этого, но думаю придется все же убрать это, ибо там впритык звуки накладываются, еще немного и моб будет вдыхать еще не выдохнув.
Плюс еще бы хотел добавить такой же звук переключений интернала со стороным другого момба, его сейчас нет. Займусь позже, прошу пока не мержить несмотря на исправленные косяки по ревью зве.

* Пред-финальные правки в интернале; изменил звук срыгивания в риг

* Исправление мержконфликтов с TauCetiStation#3279

* Пытаюсь переубедить дифф бота что у меня больше нет мержконфликтов!

Удалил свои наставленные пробелы. Врят ли конечно это решит проблему с ботом, но мало ли...

* Теперь нельзя выполнять "вторичные" действия моба к мобу, если занят

А именно переключать интерналы, чистить карманы, переключать сенсоры, редактировать медицинскую/охранную БД и так далее пока занят нельзя

* Проверка на занятость в топиках теперь принадлежит конкретному действию

* Привязал занятость моба к хелперу CanUseTopicInventory

* Исправления по замечания Зве. Подробности в описании коммита

Заменил названия некоторых переменных на одну заглавную букву вместо слова. Добавил проверку на шлем в добавлении срыгни на пол, убрал эту проверку из самих проков срыгивания. Вместо "лесенки" в tanks.dm сделал ретурн если время переклчюения больше ворлдтайма

* Перенес все вомиты в единый прок со спавном вомита

Теперь сообщения не зависят от причины рвотного позыва, потому что лизурт знает что такое аргумент функции только в алгеброическом понятии

* Забыл перенести условия срыгивания из carbon.dm

* СПУ/големы/тенелинги/абдукторы могли блевать от воронки. Твоарищ мейнтейнер прочти описание!

Это же нормально что я обошелся без дефайнов и флагов? Я думаю если добавить флаг на подобии no_vomit - он особо не будет использоваться, кроме этого случая. Зачем лишние переменные, верно? Лучше устроить проверку на проке который срабатывает редко.

* Снизил громкость и дальность всех интерналов по критике

Переключение интернала снизил на 15%. Дальность - дальше 6 тайлов не слышно
Дыхание через риг или маску снизил на 20%. Дальность - дальше 3 тайлов не слышно
Дыхание через противогаз на 10%. Дальность - дальше 6 тайлов не слышно

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

* Путь к gasmaskbreath теперь в get_sfx(soundin)

Надеюсь это то что от меня требовали

* Добавил разнообразия вомиту хуманов в риге

* Убрал свой бесполезный комментарий в sound.dm

* Для одного звука gasmaskbreath список подбора не нужен был

Co-Authored-By: Lizurt <42589308+Lizurt@users.noreply.github.com>

* Более качественный багфикс срыгни мобов после вормхола

* Проверку на человечность можно было не дублировать

* Еще более качественный багфикс вомита. Зве пощади

* Маски воксов защищают от кислорода (TauCetiStation#3304)

* меняем маске воксов родителя

с breath на gas, убирая 1 лишнюю переменную и позволяя теперь воксам дышать хуманским воздухом

* надеюсь я всё верно сделал

* теперь точно родитель правильно сменён

* а теперь я думаю всё что нужно?

* фильтрация разных газов для разных масок

* ReArmed (TauCetiStation#3315)

- Новые спрайты одежды службы безопасности
- Новые спрайты оружия
- Гранатомет и лазерную винтовку можно носить на спине

* Update PULL_REQUEST_TEMPLATE.md

* Предложения деспеира

* Исправление бага с невозможностью отвечать на менторхелпы.

* Действия типа открыть, закрыть и т.д. в отношении тикетов со стороны администрации также отправляются в "дискорд" чат.

* Исправил проводку в изоляторе РнД

* Update PULL_REQUEST_TEMPLATE.md

text corrections

* Исправлен вывод имени в чат "дискорда".

* Русификация Синдрома Туррета (TauCetiStation#3334)

* Убрал timezoneOffset и заменил gameTimestamp на time_stamp. Время открытия тикета стало фиксировать серверное время.

* Удалил файл с админколом.

* Респрайт книг, штампов и бумаги (TauCetiStation#3335)

* Поменял немного подход к отображению времени.

* Убран лишний санитайз в cmd_admin_pm.

* Добавляет рамки для фото (TauCetiStation#3248)

Добавлены рамки для фото. Крафтятся из листа металла или дерева, можно вставлять стекло и вешать на стену.

* Config flag for proxy autoban, proxy whitelist (TauCetiStation#3354)

* Config flag for proxy autoban, proxy whitelist

* New message for proxy autoban

* Example config for proxy autoban

* Actually, proxy whitelist load

* Фикс plastellium'а

* катание на стуле по по вещям

* механические органы не лечатся от химии

* Удаляет access_court

* Перенос ashtray.dmi в папку obj

* Добавляет спрайту bodybag'а замочек

* Пачка фиксов

* Убрал ковычки из анонса шаттла ЕРТ

* Фикс фоторамок (TauCetiStation#3359)

* Фикс фоторамок

* Меняем на forceMove

* Double definition fix, minor grammar correction

* Переименовал last_slap_mention_used в next_slap_mention_time - так понятнее.

* Добавлено отображение времени до следующего использования ахепла.
Изменен тип окна ахепла на message с text.

* Вернул обратно строку вместо окна для ввода текста для ответов на ПМ.

* Создание тикетов также дублируется в дискорд, вне зависимости от наличия администраторов.

* Исправил съедание последнего символа в стат панели.

* Добавлено логирование для игнитера

* Изменение в превращение в слаймо-человека при помощи ксенобиологии V2.0 (TauCetiStation#3326)

изменение эффекта превращения в слаймо человека

* Безопасный режим телебатона (TauCetiStation#3339)

Добавляем голоурон телебатону на интент хелп

* Изменения мелков. (TauCetiStation#3362)

Белый мелок добавлен в шкафчики детектива и криминалиста, плюс в вендомат СБ

* Флаги для спешуса слаймов + убирания доп урона (TauCetiStation#3365)

* изменение слаймов как расы

*  Больше функционала стетоскопу. (TauCetiStation#3387)

* Больше функционала стетоскопу.

* New wall-mounted monitors sprites by WatlerJe (TauCetiStation#3390)

* Новые спрайты настенной техники

* Запрещает боргам и остальным синтетикам садиться (TauCetiStation#3391)

* Add silicon mob type check before buckling

* Remove outdated hack for я letter in datum/browser (TauCetiStation#3396)

* No randomify for holocarps (TauCetiStation#3397)

* num2hex shouldn't ignore placeholder parameter for num==0 (TauCetiStation#3399)

* num2hex shouldn't ignore placeholder parameter for num==0

* Apply suggestions from code review

Co-Authored-By: volas <volas@ya.ru>

* Звуки аркадного автомата (TauCetiStation#3393)

* Звуки для аркадного автомата

* Балончик с краской может красить меха (TauCetiStation#3374)

* Балончик с краской может красить меха

* use_tool c tg (TauCetiStation#3276)

* Отдельный халк для клованов (TauCetiStation#3352)

* Отдельный халк для клованов
* Фикс Зиллы

* Перк немоты (TauCetiStation#3366)

* Добавлен перк немоты.
* Мимы могут использовать эмоуты(*scream).

* Новые звуки для эскейп шаттла (TauCetiStation#3341)

* Паникбункер по дате регистрации (TauCetiStation#3371)

* Registration panic bunker

* ревью правки

* Plasticflaps don't pass lying hostile mobs (TauCetiStation#3398)

* Hotfix

* Fixed NT breacher helmet vision

* Helmet light

* NT breacher 0.5 slowdown

* NT breacher blue light

* Fixes

* Cherry-pick fix

* Changed slowdown to 2.3

* Фикс anchored у фоторамок (TauCetiStation#3407)

* фикс пэйнтера (TauCetiStation#3412)

* tourette fix (TauCetiStation#3416)

* Нуарные очки, плащ и галстук детективу. (TauCetiStation#3410)

* Нуарные очки, плащ и галстук детективу

* Небольшой фикс, плюс черные ботинки в шкаф детектива

* Вендомат + новая одежда

* Фиксы вдогонку

* Сигареты и спички можно также получить в вендомате детектива, НО купив

* Небольшие изменения фотокамеры (TauCetiStation#3409)

* Изменения фотокамеры: Возможность делать фото 5x5, новые спрайты на мобе, добавлена репортёру при спавне.

* GNOME spell (TauCetiStation#3379)

* Магу добавлено новое заклинание школы трансмутации - Проклятие Гнома! Превращает людей... в гномов.

* Фасовка профильных ассистентов по их отделам.   (TauCetiStation#3297)

* Расширение свойств никотина и его синтез (TauCetiStation#3418)

* Новые свойства никотина

* Возможность синтеза никотина

* Звуки оружия. Сортировка и стандартизация звуков в sound/weapons (TauCetiStation#3395)

* Правки кода путей звука выстрелов и их добавления

* Все отсортированные и стандартизированные звуки

* Звуки перезарядки. Чистка копипастных проков перезарядки

* Повысил битрейт звуков дробовика до 128 кб/с

Качество конкретно этих звуков при битрейте 32 кб/с ощуитмо было ниже исходного. Вместо 64, решил перестраховаться, сделал 128

* Мелкокалибровка звуков и их громкости

* Не ну теперь точно все. Ревьювнул сам свои диффы и нашел недоработки

* Немного снизил громкость копьемета

* Быстрофикс доступов.

* Вернул РД доступ в генетику

* Edlern issue fix pack (TauCetiStation#3425)

* Фикс цкшного жакета

* Фиксим стейты голостульев

* Фикс стейтов некоторых отдельных стульев

* Небольшие логические правки в зумах

* Fix list2json din not handle tabs

* Another fixes for list2json: should not eat character after \n and \t; should not escape \n and \t twice

* list2json converted wrong some of non associative lists, possible out of bound error fixes

* Звуки автоматических анонсов ИИ. Привязка этих звуков к прокам анонсов (TauCetiStation#3367)

* Добавления,изменения и удаления звуков анонсов

* Основная часть кода для анонсов для ревьюверов

* poweoff.ogg получил свой собственный эмбиент

Пока искал звуки для своего будущего нового ПРа нашел этот неплохой эмбиент, вписывающийся в данную обстановку

* Много эмбиентов разным 4 звукам. Плюс один звук-бонс для ивентов

Добавлены эмбиенты в их различных вариациях к звукам: lifesigns.ogg(3 варианта), outbreak5.ogg(2 варианта), poweroff.ogg(2 варианта), radiation.ogg(3 варианта).
Варианты эмбиентов сделаны для того чтобы игроку не приелись старые эмбиенты, и звуки окружения, напряжение и т. д. все еще оказывали на него эффект погружения в атмосферу.
Мейнтейнерам прошу не боятся, использовал вместо своего обычного битрейта 64 кб/с урезанный - 32 кб/с. Эти звуки  будут занимать меньше места.

Так же отдельным пунктом хочу сказать о _admin_horror_music.ogg. Этот звук создан в качестве жуткой музыки с тремя различными и бережно склеянными эмбиентами. Используется только при форсе звука педалями и призван помочь им в организации хоррор-ивентов. Краткое содержания звука - типичный анонс с аэропорта, глючный Atten-ten%#@$@--*играет музыка на фоне эмбиентов*. Звук длится около 30-40 секунд

* aimalf.ogg тоже заслуживает эхо

Один проклятый animes.ogg остался без изменений! Ничего, я найду способ разговорить свой синтезатор речи, потому что это единственный звук, синтезированный через старый текст ту спич. Аималф не в счет!

* Сделал все звуки анонсов слегка потише

Все же, некоторым игрокам может не понравится завышенная по сравнению с предедущей версией анонсов громкость. Теперь они звучат немного тише от того,
для какой громкостью они задумывались при создании

* Заменил переменные эха и окружения на is_global

Пока работал с эхом и окружением в другом ПРе, обратил внимание на эту переменную. Надеюсь тот, кто будет в дальнейшем работать с эхом и окружением тоже обратит на нее внимание.
Теперь эхо и окружение всегда будет значением по умолчанию, то есть нулл и -1, то есть нет ни того, ни другого.

* ...И повысил звук в связи с тем, что перестало добавляться эхо

Co-Authored-By: Lizurt <42589308+Lizurt@users.noreply.github.com>

* Исправлен неснимаемый урон от снарядов арбалетов и тому подобного (TauCetiStation#3431)

* Human resprite (TauCetiStation#3402)

* Изменено количество деклеров, необходимое для старта режимов (TauCetiStation#3388)

* New fancy late join menu (TauCetiStation#3427)

* New fancy late join menu

* Small fix

* no more </center> in LA

* Фикс наличия доступа у парамедиков к экипировке инженеров и АПЦ (TauCetiStation#3429)

* Больше футболок в лоадаут (TauCetiStation#3435)

* Больше футболок в лоадаут

* Update loadout_clothing.dm

* Новые спрайты шприцов с Бэя (TauCetiStation#3432)

* syringes

* syringe sprites from bay

* Реворк приправы [Kitchen Overhaul p.2] (TauCetiStation#3067)

* Реворк приправы

* забыл удалить

* косяк

* Update food.dmi

* инхэнды

* Ревью людука, часть первая

* Собственные фиксы

* Война с билдчеками

* Нахожу всё больше ошибок

* Ревью людуцка, часть 2

* Ревью людука, часть 3

* Ревью Спейра

* Лишний \

* Убрал ретюрны из ex_act

* Самораспространяющиеся блоб наниты (TauCetiStation#3363)

* Main Biome Nanite

* v.2

* v.3

* Не было пустой строки

* неизвестно откуда появившиеся пробелы

* Привет код в надлежащий вид

* Нашел ошибку, исправил

* Исправил регистр в цветах, добавил немного кадров

* Привел код в надлежищий вид v.2

* обновил спрайты

* Исправил недочет

* привел код в порядок

* Делаем хорроров из мартышек и делаем гибсы поверх пола

* фикс единоразового обращения, и спавна лендмарков

* Изменил спрайт, надеюсь окончательно

* код в надлежащий вид

* забыл вернуть назад один спрайт

* Апдейт v0.5

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

* фикс

* Добавил ограничение по количеству мобов отк аждого инженера

* фикс

* увеличил шанс в связи с появлениеем ограничения

* фикс 2

* фикс 3(надеюсь последний)

* доработка

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

* Убрал деление для инженера, а то имбово. Это последний коммит, если не найду еще багов

* баг отображения атаки

* баланс в надлежащий вид, это последний коммит

* добавил спрайт самому контроллеру, чтобы было красиво

* Сделал правки

* правки

* уменьшил хп стен

* Сделал нормальный дестрой метод

* Поправки

* Update code/game/gamemodes/events/cellular_biomass/biome_nanite.dm

Co-Authored-By: Dominig12 <daliskandarov.ru@mail.ru>

* Update code/game/gamemodes/events/cellular_biomass/biome_nanite.dm

Co-Authored-By: Dominig12 <daliskandarov.ru@mail.ru>

* Fix wrong converting of nanoui camera data

* Move custom json converters to separate folder

* Fixed wrong syntax in update char pref (TauCetiStation#3439)

* Изменения панели крафта и самодельной гранаты (TauCetiStation#3373)

* Изменения панели крафта и самодельной бомбы

* mutable_appearance

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

* рандомные провода могут создать такие же цвета проводов как и ранее (случайно урезал количество цветов, но теперь поправил)

* ревью людука

* Вместо верба Attackby

* Быстрофиксы

* Update code/modules/crafting/craft.dm

Co-Authored-By: RichardJones1 <39438947+RichardJones1@users.noreply.github.com>

* Ревью Спейра

* Update code/modules/crafting/craft.dm

Co-Authored-By: RichardJones1 <39438947+RichardJones1@users.noreply.github.com>

* Добавил [ADMIN_JMP(F)] + убрал  лишние скобки в meteors.dm

* Убрал неиспользуемые дефайны.

* Добавление возможности устанавливать и демонтировать панели управления дверьми (TauCetiStation#3386)

* Добавление возможности строить панели управления дверьми

* Изменение системы подключения дверей, добавление возможности настраивать режим переключения шлюзов

* Update code/game/machinery/door_control.dm

Co-Authored-By: Naryvan <48354762+Naryvan@users.noreply.github.com>

* Update code/game/machinery/door_control.dm

Co-Authored-By: Naryvan <48354762+Naryvan@users.noreply.github.com>

* Update code/game/machinery/door_control.dm

Co-Authored-By: Naryvan <48354762+Naryvan@users.noreply.github.com>

* Update code/game/machinery/door_control.dm

Co-Authored-By: Naryvan <48354762+Naryvan@users.noreply.github.com>

* Update code/game/machinery/door_control.dm

Co-Authored-By: Naryvan <48354762+Naryvan@users.noreply.github.com>

* Update code/game/objects/items/devices/multitool.dm

Co-Authored-By: Naryvan <48354762+Naryvan@users.noreply.github.com>

* Исправление названий, константы вместо дефайнов и магических чилес, андефайны

* Проверка ограничения соединений теперь работает корректно, убрана лишняя переменная

* Побитовые операции вместо новых дефайнов

* spawn заменен на INVOKE_ASYNC и CALLBACK

* req_access вместо req_access_txt, Cut для списков, overlays.Cut вынесен за свитч

* Добавлено ограничение по радиусу, дестрой, различные правки

* Добавлено ограничение по радиусу, дестрой, различные правки

* Правка последнего коммита

* spawn не используем..

* Забыл убрать изменения, когда переделывал систему подключений

* Исправил дестрои

* Revert "Исправил дестрои"

This reverts commit 7653282.

* Отсутствующий return

* Фикс

* Часть ревью, проверка на z-слой для поддоров

Часть ревью, проверка на z-слой для поддоров

* Использование переменной emagged, фикс случайного бага.

* Изменение работы доступов, больше функционала при емаге.

* Проверка на борга

* Лишние изменения

* Дефайны

Co-Authored-By: Naryvan <48354762+Naryvan@users.noreply.github.com>

* Update code/game/machinery/door_control.dm

Co-Authored-By: Naryvan <48354762+Naryvan@users.noreply.github.com>

* Update code/game/machinery/door_control.dm

Co-Authored-By: Naryvan <48354762+Naryvan@users.noreply.github.com>

* Запрашиваемые правки

* Небольшой фейл во время мержа

* req_one_access вместо req_access

* Игнорирование безопасности

* Ревью, update_icon при инициализации

* Только заметил

* Переход с `<<` на send_sound(). Эффекты для спящих. Переменная звука для источника (TauCetiStation#3413)

* Звуки для спящих; Разделение звука для его источника и окружающих

* Калибровка звука дыхания

* Подробности описания переменных в sound.dm; Специальное оформление описания

Ща буит встроенная вики в коде.
Перенес в место перед проком, потому что столько строчек уже мешало читать сам код - такого не должно быть.
Еще добавил описание переменной is_global, чтобы, если добавляли эхо, не забывали о ней. Некоторые звуки недавно уже используют эту переменную для блокировки эха. Будет плохо если кто то будет кодить не в этом ифе с is_global.

* ...И все же сделаю как попросил спейр пока не поздно

Обдумал решение. Была слишком грубая настройка, не позволяющая настроить звук для источника более тонко. Пока эта переменная используется только в проке дыхания, стоит ее переделать, чтобы потом не мучаться другим, кто будет работать с ней.

* Убрал окружение и снизил звук еще сильнее

* Переход с `<<` на `send_sound()`. Основная волна перехода

* Замена `<<` на `send_sound()`. Вторая волна

Добавил настройки громкости, повторения, ожидания и канала, так как некоторые звуки использовали это. Если переходить, то полностью!
Есть еще проблема - с добавлением окружения громкость всех звуков, проигрываемых через send_sound() повышается на 5-10%. Стоит ли снижать ее автоматически на 10% в проке или снизить вручную у каждого проигрывания?

* Есть сомнения по поводу этого пункта

Щас играл - был стерео звук, как и должен. Понятия не имею от чего это все зависит, но иногда это моно, а иногда - стерео. Лучше не писать это, чтобы не вводить в заблуюдение

* Немного оформил заметки в sound.dm и добавил пункт

* Мелкоправка громкости. Простите что после Merge Ready

Только щас заметил, что забыл снизить громкость в своем проке в одном из звуков в два раза. Не зря свои же диффы пересмотрел еще раз.
Ну а мейнтейнеров прошу простить, что изменил это уже после плашки Merge Ready. Лучше поздно чем никогда, верно?

* Звуки клавиатуры и кликов на КПК (TauCetiStation#3414)

* Звуки клавиатуры и кликов на КПК

* Забыл убрать старые звуки из artifact_harvester.dm

* Сделал КД на звуки по рекомендации жонеса

* Пара мелкофиксов для анонсов: Наложение звуков шаттла и спам звуками уровня угрозы (TauCetiStation#3442)

* Фикс наложения аннонса и звуков шаттла при отбытии

* Фикс возможности спама звуками смены уровня угрозы

Бонусом убрал spawn(600) из "announce"

* Опечатка в комментарии

* Случайно выпеленная фича вернулась на свое место

Кажется, мой диагноз - дебилизм.

* Замена тиков на минуты

Co-Authored-By: Ilya <klimbetoo@gmail.com>

* Заменя проверки зоны на более адекватную и компактную

Co-Authored-By: Ilya <klimbetoo@gmail.com>

* Перенос переменных; Замена is_type_in_list на альтернативу

И все же пока я не понимаю в чем отличие между этими двумя проками. В обоих листы, оба проверяют схожесть чего то одного с листом... Да и не особо нравится что пришлось переменную добавлять в прок, она же теперь будет для всего прока при каждом анонсе создаваться. Либо я что то не так сделал, либо так и должно быть.
Да и непонятно чем переменная для атома лучше чем статичная переменная для прока этогож е атома.

* Обошелся без новых переменных в проке.

Дядя спейр не грусти, когда нибудь я перестану тупить. Надеюсь теперь правильно, ведь, похоже, что надо было просто добавить typecacheof(), а я пошел в какие то переменные и потратил больше часа времени на замену is_type_in_list.

* Обнаружил опечатку в crew_shut_scalled во время игры

Не зря на сервер зашел. Странно что раньше я заметил это опечатку

* Анонс о флюксе не проигрывал свой анонс

Плюс попутные правки *sound = "..."*

* Очепятка в анонсах о метеорах

* Вынес typecacheof(list()) в отдельную переменную

* Фикс наличия тулбокса на слоях. (TauCetiStation#3458)

Все подозрительные тулбоксы дающие нелегальную технологию убраны со всех слоев (слой 3 - 1шт., слой 4 - 2шт.). На слое 3, заменен на красный тулбокс.

* Увеличено окно для анонсов. (TauCetiStation#3459)

* Удаление стекла на тандере (TauCetiStation#3460)

* Пропадал спрайт бинтов и мази у боргов-парамедиков (TauCetiStation#3461)

* Возврат доступа для АВД (TauCetiStation#3462)

* Водолазная маска (TauCetiStation#3464)

* кадет антаг уходи (TauCetiStation#3466)

* Technical assistant acess list fix (TauCetiStation#3467)

* Обновление панели проводов при взаимодействии

* fix GC for random cables

* Runtime fix in send_sound

Runtime in ,: positional parameters must precede all named args
proc name: send sound (/proc/send_sound)

* Фикс логики разбивания столов, из-за которой те вешали MC

* Звуки для эскейп пода (TauCetiStation#3440)

* Звуки для эскейп пода

* Попутный фикс громкостей некоторых анонсов

* Добавляем проверку на форс языков в шёпот

Воксы теперь могут автоматически шептать на родном языке.

* Небольшая доработка контроля воздушных насосов в аир алярмах

* Исправлено направление выбрасывания предметов из мусорного выбрасывателя

* Фикс массы нанитов, или бесконечный спавн и лаги (TauCetiStation#3451)

* Update taucetistation.dme

* ff

* d

* Изменение некоторого принципа работы

* Изменил шанс исчезновения (баланс)

* пусть после спавна объект уничтожается

* баланс

* фикс

* фикс

* оптимизация кода

* убрал точку

* исправления дестроя

* исправил орфографические ошибки

* Добавил привязку к фракциям, для ивонта

* Update code/game/gamemodes/events/cellular_biomass/biome_nanite.dm

Co-Authored-By: Ilya <klimbetoo@gmail.com>

* Proper sql sanitize

* Death is in old database, not feedback

* Добавил крафты других вендоматов.

Добавил возможность заказа рестоков к другим вендоматам, их создание и наполнение.

* Конечное изменение цен рестоков.

* Station announcments little refactoring

* Улучшения в визуальном отображении газовых труб

* Hunger hud

* Установка панелей управления дверьми на укрепленные столы (TauCetiStation#3469)

* Установка кнопок на столах

Co-Authored-By: Ilya <klimbetoo@gmail.com>

* Фиксы багов со шлюзами (TauCetiStation#3496)

* Revert "Новые спрайты шприцов с Бэя (TauCetiStation#3432)" (TauCetiStation#3499)

This reverts commit cfd7549.
@TauKitty
Copy link
Contributor

TauKitty commented Jan 5, 2020

This pull request has been mentioned on Tau Ceti Station Forum. There might be relevant details there:

https://forum.taucetistation.org/t/kakie-est-unikalnye-veshhi-na-tau-kite/14937/14

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Feature Новая фича Merge Ready Sprites Test Merge Candidate ПР с этим лэйблом будет или уже находится с тест мерже
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

9 participants