Skip to content

Limited telecommunications#2413

Draft
m-dzianishchyts wants to merge 4 commits into
ss220club:masterfrom
m-dzianishchyts:feat/limited-telecommunications
Draft

Limited telecommunications#2413
m-dzianishchyts wants to merge 4 commits into
ss220club:masterfrom
m-dzianishchyts:feat/limited-telecommunications

Conversation

@m-dzianishchyts

Copy link
Copy Markdown
Member

Что этот PR делает

Полностью (?) ограничивает доступ к общему каналу.
Добавляет для интеркомов выделенный канал, ползунок "громкости" и рунчат.

Почему это хорошо для игры

На станции есть множество средств связи, среди которых:

  • каналы отделов;
  • консоли запросов;
  • интеркомы;
  • мод-линк;
  • факсы;
  • мессенджер;
  • голопады.

У каждого средства есть своя область применения, они добавляют атмосферу, но из-за наличия общего канала связи в них нет нужды. Мы можем популяризировать альтернативные средства связи, если удалим общий канал.
Кроме того, в общий канал часто попадает бесполезная информация, спам, брейнрот, который засоряет очередь ТТС, что может портить игровой опыт.

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

  1. При нападении трудно позвать на помощь.

На паре для компенсирования этого недостатка в ПДА была добавлена тревожная кнопка. О ней хорошо отзывались, можно портировать.

  1. В случае мажорной угрозы затруднена коммуникация.

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

  1. На лоупопе в тишине будет скучно.

Аналогично проблеме 2.

Тестирование

Базово протестировано на локалке, но неизвестно, как оно будет играться на мейне. Нужен ТМ.

Changelog

🆑 Maxiemar
add: Не знаю, что сюда написать пока. Если это вмержили...
/:cl:

@github-actions github-actions Bot added :trollface: Фича Новая, определённо уникальная и интересная фича. Она совершенно точно не сломает ничего! TGUI Добавление или изменение существующего интерфейса на базе фреймворка TGUI :finnadie: НЕ МОДУЛЬНО Па-ху-ю. 🖌️ Спрайты Вы заработали свою миска-рис и кошко-жена. Партия гордится вами! labels Apr 10, 2026

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Code Review

Анализ от ЦЕНКОМ-Анализатора. Запрос обработан. Здравствуйте! Данный Pull Request заменяет общестанционный канал связи (Common) на систему интеркомов, обновляет соответствующие частоты, ключи шифрования и логику анонсов для различных систем, машин и ботов. Также добавлена возможность регулировки громкости радио (интеркомов). В ходе ревью выявлена критическая ошибка в обработке ввода громкости в файле radio.dm, где отсутствие проверки результата text2num() может привести к runtime-ошибкам. Рекомендуется удалить закомментированный код в подсистеме blackbox и внедрить механизм предотвращения дублирования сообщений в рунчате при наличии нескольких интеркомов в одной зоне. В части интерфейса TGUI необходимо устранить нарушения стайлгайда, заменив стрелочные функции на стандартное объявление компонентов и обеспечив типизацию пропсов.

if("set_volume")
if(!tunable_volume)
return
var/volume = clamp(text2num(params["volume"]), 1, 9)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

high

🔴 Критическая ошибка

Вызов text2num() может вернуть null. В таком случае clamp(null, 1, 9) также вернет null, что приведет к установке canhear_range в null. Это вызовет ошибки выполнения (runtime errors) в процедурах, рассчитывающих дальность слышимости (например, при поиске слушателей). Необходимо добавить значение по умолчанию.

			var/volume = clamp(text2num(params["volume"]) || 1, 1, 9)

Comment on lines +132 to +133
// if(FREQ_INTERCOM)
// record_feedback("tally", "radio_usage", 1, "intercom")

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

🟡 Рекомендация

Обнаружен закомментированный код. Если этот функционал не планируется к реализации в рамках данного PR, его следует удалить для поддержания чистоты кодовой базы. В противном случае стоит добавить комментарий TODO с пояснением.

if(src == radio)
return

for(var/mob/hearer in hearers)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

🟡 Рекомендация по UI

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

volume: number;
};

export const Radio = (props) => {

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

🟡 Нарушение стайлгайда

Согласно пункту 5.1 стайлгайда репозитория, компоненты должны объявляться с использованием ключевого слова function, а не через const. Также необходимо определить тип для пропсов вместо использования неявного any.

Comment on lines +61 to +62
if (tunable_volume)
height += 25;

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

💡 Стилистическое предложение

Рекомендуется использовать фигурные скобки для блоков if. Это соответствует общему стилю проекта и предотвращает возможные ошибки при дальнейшем расширении логики.

  if (tunable_volume) {
    height += 25;
  }

@CaptainSqrBeard

Copy link
Copy Markdown

Нельзя нормально общаться в социальной ролевой игре?

@ss220club ss220club locked as spam and limited conversation to collaborators Apr 10, 2026
@github-actions github-actions Bot added the Merge Conflict Это невозможно замержить до исправления конфликта. label Jun 9, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

:finnadie: НЕ МОДУЛЬНО Па-ху-ю. Merge Conflict Это невозможно замержить до исправления конфликта. 🖌️ Спрайты Вы заработали свою миска-рис и кошко-жена. Партия гордится вами! TGUI Добавление или изменение существующего интерфейса на базе фреймворка TGUI :trollface: Фича Новая, определённо уникальная и интересная фича. Она совершенно точно не сломает ничего!

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants