Limited telecommunications#2413
Conversation
There was a problem hiding this comment.
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) |
There was a problem hiding this comment.
🔴 Критическая ошибка
Вызов text2num() может вернуть null. В таком случае clamp(null, 1, 9) также вернет null, что приведет к установке canhear_range в null. Это вызовет ошибки выполнения (runtime errors) в процедурах, рассчитывающих дальность слышимости (например, при поиске слушателей). Необходимо добавить значение по умолчанию.
var/volume = clamp(text2num(params["volume"]) || 1, 1, 9)
| // if(FREQ_INTERCOM) | ||
| // record_feedback("tally", "radio_usage", 1, "intercom") |
| if(src == radio) | ||
| return | ||
|
|
||
| for(var/mob/hearer in hearers) |
There was a problem hiding this comment.
🟡 Рекомендация по UI
Данная реализация вызывает create_chat_message для каждого интеркома, принявшего сигнал. Если в одной области находится несколько интеркомов на одной частоте, игроки увидят дублирующиеся сообщения в рунчате. Рекомендуется внедрить механизм, предотвращающий повторный вывод одного и того же сообщения одному и тому же игроку от разных источников в рамках одного тика.
| volume: number; | ||
| }; | ||
|
|
||
| export const Radio = (props) => { |
| if (tunable_volume) | ||
| height += 25; |
|
Нельзя нормально общаться в социальной ролевой игре? |
Что этот PR делает
Полностью (?) ограничивает доступ к общему каналу.
Добавляет для интеркомов выделенный канал, ползунок "громкости" и рунчат.
Почему это хорошо для игры
На станции есть множество средств связи, среди которых:
У каждого средства есть своя область применения, они добавляют атмосферу, но из-за наличия общего канала связи в них нет нужды. Мы можем популяризировать альтернативные средства связи, если удалим общий канал.
Кроме того, в общий канал часто попадает бесполезная информация, спам, брейнрот, который засоряет очередь ТТС, что может портить игровой опыт.
Похожие изменения вводились на паре и маринах. Известны следующие возможные проблемы, которые это изменение может вызвать:
Тестирование
Базово протестировано на локалке, но неизвестно, как оно будет играться на мейне. Нужен ТМ.
Changelog
🆑 Maxiemar
add: Не знаю, что сюда написать пока. Если это вмержили...
/:cl: