Skip to content

add/refactor: Пластитаниумные стены#8477

Open
Ssheya wants to merge 11 commits intoss220-space:master220from
Ssheya:walls
Open

add/refactor: Пластитаниумные стены#8477
Ssheya wants to merge 11 commits intoss220-space:master220from
Ssheya:walls

Conversation

@Ssheya
Copy link
Contributor

@Ssheya Ssheya commented Jan 28, 2026

Что этот ПР делает

Меняет пластитаниумную стену на подтип усиленной стены, добавляет ей свой гирдер, меняет характеристики
Чутка рефакторит код усиленной стены, чтобы легче сделать пластитаниумную
Меняет в куче мест код пластитановой стены и самого пластитана

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

Очень давно была предложка, прошла, я не сделал, сделал щас, чутка поковырял дополнительно цифры, думаю всё норм

Демонстрация изменений

Демонстрации изменений

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

На локалке протестировал, поспавнил их, сделал фейковую, разобрал, потыкал.

@Ssheya Ssheya requested a review from a team as a code owner January 28, 2026 20:27
@github-actions github-actions bot added 🗺️ Изменение карты PR содержит изменения в файлах карт. 🎨 Спрайты PR содержит изменения в файлах DMI. 🛠️ Инструменты PR вносит изменения в инструменты разработки, CI/CD или конфигурации IDE. labels Jan 28, 2026
Copy link
Contributor

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

Choose a reason for hiding this comment

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

Code Review

Аналитический отчёт от Большого Брата. Обработка запроса завершена.

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

Сводка анализа:

  • 🔴 Критических замечаний: 0
  • 🟡 Рекомендаций: 5
  • 💡 Предложений: 0

🟡 Рекомендации по улучшению:

  • .vscode/settings.json:43: Обнаружен локальный путь к файлу в настройках проекта. Такие файлы не должны попадать в репозиторий.
  • code/game/objects/structures/girders.dm:296: Обнаружена опечатка в сообщении для игрока. Вместо «plasteel» должно быть «plastitanium».
  • code/game/objects/structures/girders.dm:277: Выявлено дублирование кода при обработке листов пластитаниума, аналогичное логике для пластали. Рекомендуется рефакторинг для избежания повторений.
  • code/game/turfs/simulated/walls_reinforced.dm:314: Обнаружена проблема с балансом: при разрушении пластитаниумной стены выпадает больше ресурсов, чем требуется для её постройки, что может быть использовано для их дублирования.
  • code/game/turfs/simulated/walls_reinforced.dm:351: Обнаружено дублирование кода в процедуре copyTurf, на что указывает комментарий //have to copypaste this code. Рекомендуется найти способ избежать этого повторения.

Пожалуйста, ознакомьтесь с комментариями к отдельным строкам кода для получения более подробной информации.

Спасибо за ваш вклад в проект!

I am having trouble creating individual review comments. Click here to see my feedback.

code/game/turfs/simulated/walls_reinforced.dm (314-316)

high

🟡 Рекомендация по балансу

Процедура devastate_wall() для пластитаниумной стены возвращает больше ресурсов, чем требуется для её постройки. Она создаёт sheet_amount (наследуется как 4) листов, а затем ещё 2, что в сумме даёт 6 листов пластитаниума. При этом для постройки стены на пластитаниумной балке требуется всего 2 листа. Это создаёт возможность для бесконечного получения ресурсов.

Рекомендуется скорректировать количество возвращаемых ресурсов. Вероятно, стоит переопределить sheet_amount для этого типа стены на 2 и убрать дополнительное создание листов в devastate_wall().

/turf/simulated/wall/r_wall/plastitanium/devastate_wall()
	new sheet_type(src, 2) // Или другое сбалансированное значение

.vscode/settings.json (43-45)

medium

🟡 Рекомендация по конфигурации проекта

Этот файл содержит специфичные для пользователя настройки, включая абсолютный путь к локальным файлам (C:\Users\Администратор\...). Подобные конфигурационные файлы не должны попадать в общий репозиторий, так как они могут вызвать проблемы у других разработчиков или перезаписать их локальные настройки. Рекомендуется добавить .vscode/settings.json в файл .gitignore, чтобы избежать подобных ситуаций в будущем.

code/game/objects/structures/girders.dm (296)

medium

🟡 Рекомендация по улучшению

В сообщении для игрока допущена опечатка: упоминается «plasteel» вместо «plastitanium». Это может ввести в заблуждение. Рекомендую исправить текст для соответствия используемому материалу.

					to_chat(user, span_warning("You need at least two sheets of plastitanium to finalize the plastitanium wall!"))

code/game/objects/structures/girders.dm (277-322)

medium

🟡 Рекомендация по улучшению кода

Логика обработки листов пластитаниума практически полностью дублирует существующую логику для пластали. Это нарушает принцип DRY (Don't Repeat Yourself) и усложняет дальнейшее сопровождение кода.

В соответствии со стайлгайдом (правило 67), рекомендуется вынести повторяющийся код в отдельную, более универсальную процедуру, которая могла бы принимать тип материала и соответствующие ему типы стены/балки в качестве аргументов. Это сделает код чище и проще для модификации в будущем.

code/game/turfs/simulated/walls_reinforced.dm (351-370)

medium

🟡 Рекомендация по улучшению кода

Комментарий //have to copypaste this code прямо указывает на дублирование кода в процедуре copyTurf. Согласно стайлгайду (правило 67), дублирование следует избегать.

Рекомендуется рассмотреть возможность вынесения этой логики в родительский класс /turf/simulated/wall/r_wall или найти другой способ избежать копирования, чтобы улучшить поддерживаемость кода.

@Pelmenik123
Copy link
Contributor

/gemini review

Copy link
Contributor

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

Choose a reason for hiding this comment

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

Code Review

Аналитический отчёт от Большого Брата. Обработка запроса завершена.

Приветствую! Я проанализировал предложенные Вами изменения. С технической точки зрения, работа выглядит отлично. Выполнен масштабный и качественный рефакторинг пластитаниумных стен, который унифицирует их с усиленными стенами. Это значительное улучшение архитектуры и поддерживаемости кода.

Сводка анализа:

  • 🔴 Критических замечаний: 0
  • 🟡 Рекомендаций: 1
  • 💡 Предложений: 0

🟡 Рекомендации по улучшению:

  • code/game/objects/structures/girders.dm:277-322: Обнаружено дублирование кода при проверке количества листов пластитаниума. Рекомендуется вынести проверку перед блоком switch для улучшения читаемости и упрощения поддержки.

Пожалуйста, ознакомьтесь с комментариями к отдельным строкам кода для получения более подробной информации.

Спасибо за ваш вклад в проект!

@Pelmenik123
Copy link
Contributor

/gemini review

Copy link
Contributor

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

Choose a reason for hiding this comment

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

Code Review

Аналитический отчёт от Большого Брата. Обработка запроса завершена.

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

Сводка анализа:

  • 🔴 Критических замечаний: 0
  • 🟡 Рекомендаций: 1
  • 💡 Предложений: 0

🟡 Рекомендации по улучшению:

  • code/game/turfs/simulated/walls_reinforced.dm:298: Обнаружена логическая несостыковка при починке пластитановых стен. Текущая реализация предполагает использование обычных листов металла, что не соответствует материалу стены. Рекомендуется переопределить логику починки для использования пластитана.

Пожалуйста, ознакомьтесь с комментариями к отдельным строкам кода для получения более подробной информации.

Спасибо за ваш вклад в проект!

@Ssheya Ssheya changed the title Пластитаниумные стены add: Пластитаниумные стены Jan 29, 2026
@Ssheya Ssheya changed the title add: Пластитаниумные стены add/refactor: Пластитаниумные стены Jan 29, 2026
smoothing_groups = SMOOTH_GROUP_PLASTITANIUM_WALLS

/obj/structure/falsewall/reinforced/plastitanium/ChangeToWall(delete = 1)
var/turf/T = get_turf(src)
Copy link
Collaborator

Choose a reason for hiding this comment

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

имя переменной

transfer_fingerprints_to(girder)
girder.add_fingerprint(user)
qdel(src)
return ATTACK_CHAIN_BLOCKED_ALL
Copy link
Collaborator

Choose a reason for hiding this comment

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

В отдельный прок

switch(state)
if(GIRDER_DISPLACED)
if(plastitanium.get_amount() < 2)
to_chat(user, span_warning("You need at least two sheets of plastitanium to create a false wall!"))
Copy link
Collaborator

Choose a reason for hiding this comment

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

текст не помешает перевести, но это не критично

qdel(src)
return ATTACK_CHAIN_BLOCKED_ALL

if(istype(sheet, /obj/item/stack/sheet/plastitanium))
Copy link
Collaborator

Choose a reason for hiding this comment

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

изхелпер и заменить на него все istype(переменная, /obj/item/stack/sheet/plastitanium)

var/d_state = RWALL_INTACT
var/can_be_reinforced = 1

/turf/simulated/wall/r_wall/proc/metal_repair(obj/item/I, mob/user)
Copy link
Collaborator

Choose a reason for hiding this comment

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

имя переменной

to_chat(user, span_notice("You repair the last of the damage."))
return ATTACK_CHAIN_SUCCESS

/turf/simulated/wall/r_wall/proc/coating(obj/item/I, mob/user)
Copy link
Collaborator

Choose a reason for hiding this comment

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

и тут

icon_state = "plastitanium_wall-d-[d_state]"
smooth = NONE
clear_smooth_overlays()
else
Copy link
Collaborator

Choose a reason for hiding this comment

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

ранний ретурн

to_chat(user, span_warning("You need at least two sheets of plastitanium to reinforce the girder!"))
return .
to_chat(user, span_notice("You start reinforcing the girder..."))
if(!do_after(user, 6 SECONDS * plastitanium.toolspeed, src, category = DA_CAT_TOOL) || state == GIRDER_DISPLACED || state == GIRDER_REINF || QDELETED(plastitanium) || !plastitanium.use(2))
Copy link
Collaborator

Choose a reason for hiding this comment

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

Что значит 2? нужно дефайнизировать

return ATTACK_CHAIN_BLOCKED_ALL

if(GIRDER_REINF)
if(plastitanium.get_amount() < 2)
Copy link
Collaborator

Choose a reason for hiding this comment

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

скорее всего это должен быть тот же дефайн

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

🎨 Спрайты PR содержит изменения в файлах DMI. 🛠️ Инструменты PR вносит изменения в инструменты разработки, CI/CD или конфигурации IDE. 🗺️ Изменение карты PR содержит изменения в файлах карт.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants