Рефактор игрушек WIP#9244
Conversation
There was a problem hiding this comment.
Code Review
This pull request refactors the toy system by modularizing balloon and plushie definitions into dedicated files and updating their item paths. The reviewer has identified several instances where English strings, including item descriptions and player messages within the new code, violate the project's localization style guide and require translation into Russian.
|
/gemini review |
There was a problem hiding this comment.
Code Review
В данном пулл-реквизите проведена масштабная реорганизация системы игрушек с разделением кода на категории и обновлением путей типов в скриптах и файлах карт. Основные замечания касаются предотвращения критических ошибок выполнения (runtimes) при удалении удерживаемых игроками предметов без вызова transfer_item_to_loc(). Также предложены архитектурные правки для нового элемента update_icon_updates_onmob, рекомендации по оптимизации производительности через статические списки и требования по соблюдению стайлгайда в части локализации. Дополнительно отмечены мелкие недочеты: дублирование переменных и отсутствие проверок на null для реагентов.
| /datum/element/update_icon_updates_onmob/Attach(datum/target, flags, body = FALSE) | ||
| . = ..() | ||
| if(!isitem(target)) | ||
| return ELEMENT_INCOMPATIBLE | ||
| RegisterSignal(target, COMSIG_ATOM_UPDATED_ICON, PROC_REF(update_onmob)) | ||
| update_flags = flags | ||
| update_body = body |
There was a problem hiding this comment.
🟡 Рекомендация по архитектуре
Для элементов с флагом ELEMENT_BESPOKE инициализацию аргументов следует проводить в New(), а не в Attach(). Это связано с тем, что экземпляр элемента создается один раз для уникального набора аргументов и разделяется между всеми объектами, к которым он прикреплен.
Также переменная update_body устанавливается, но не используется в процедуре update_onmob(). Рекомендую добавить вызов M.update_body().
/datum/element/update_icon_updates_onmob/New(datum/target, flags, body = FALSE)
. = ..()
update_flags = flags
update_body = body
/datum/element/update_icon_updates_onmob/Attach(datum/target)
. = ..()
if(!isitem(target))
return ELEMENT_INCOMPATIBLE
RegisterSignal(target, COMSIG_ATOM_UPDATED_ICON, PROC_REF(update_onmob))
Что этот ПР делает
В первую очередь это рефактор файла toys.dm
Помимо этого были портированы воздушные шарики с тг. Они разноцветные и из них можно скручивать животных.
Также были добавлены новые плюшевые игрушки СМО, Глорп и пиздосик.
Ну и локализация игрушек идёт в комплекте
В планах раскидать дополнительные игрушки и спавнеры игрушек по картам, а также добавить больше игрушек в лоадауты
Почему это хорошо для игры
Рефактор для будущего удобства, я убрал кучу копипаста и обобщил код для всех игрушек
СМО, глорп и пиздосик это крутые игрушки, которые уже были проверены на сменах админскими кнопками
Демонстрация изменений
Изображения и видео
Новые воздушные шарики
Плюшевая кукла СМО
Глорп

Пиздосик в щитспавн

Список изменений
🆑
add: Новые шарики с возможностью скручивать фигурки животных
add: Плюшевая игрушка СМО, Глорп, пиздосик (щитспавн)
refactor: Файл игрушек разбит на подфайлы/Рефактор кода игрушек
image: inhand у игрушки грея
del: therapy doll, toddler, toy beacon, virus pop
/:cl: