Skip to content

bugfix: Фикс кражи вортекс шотгана#8510

Open
vacken12 wants to merge 2 commits intoss220-space:master220from
vacken12:master220
Open

bugfix: Фикс кражи вортекс шотгана#8510
vacken12 wants to merge 2 commits intoss220-space:master220from
vacken12:master220

Conversation

@vacken12
Copy link
Contributor

@vacken12 vacken12 commented Feb 7, 2026

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

https://discord.com/channels/617003227182792704/1464562385405870214

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

Дюпа вортекса теперь нету

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

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

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

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/datums/ai/monkey/monkey_controller.dm:102: Вместо прямой проверки типа istype() для конкретного оружия, рекомендуется использовать более общую систему, например, через трейты. Это улучшит расширяемость и поддерживаемость кода в будущем.

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

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

Comment on lines +102 to +103
if(istype(held_weapon, /obj/item/gun/energy/vortex_shotgun))
continue
Copy link
Contributor

Choose a reason for hiding this comment

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

medium

🟡 Рекомендация по улучшению поддерживаемости

Текущая реализация с istype() решает проблему для вортекс-шотгана, но является жесткой привязкой к конкретному типу. Если в будущем появятся другие предметы, которые обезьяны не должны воровать, придется добавлять новые проверки istype(), что усложнит код.

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

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

		if(HAS_TRAIT(held_weapon, TRAIT_MONKEY_NO_STEAL))
			continue
References
  1. Код должен быть читаемым и легко поддерживаемым для будущих контрибьюторов, что является одним из ключевых принципов проекта. (link)

@vacken12
Copy link
Contributor Author

vacken12 commented Feb 7, 2026

/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/datums/ai/monkey/monkey_controller.dm:102: Вместо прямого сравнения типа (istype) для исключения вортекс-шотгана, рекомендуется использовать систему трейтов (например, TRAIT_MONKEY_PROOF). Это сделает код более гибким и упростит добавление других исключений в будущем.

Вы отлично справились с исправлением двух несвязанных проблем. Изменение в atmosgrenade.dm корректно устраняет ошибку, из-за которой объект гранаты не удалялся после детонации.

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

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

var/pickpocket = FALSE
for(var/mob/living/carbon/human/human in oview(5, living_pawn))
var/obj/item/held_weapon = GetBestWeapon(list(human.get_active_hand(), human.get_inactive_hand()) + weapon, list(living_pawn.get_active_hand(), living_pawn.get_inactive_hand()))
if(istype(held_weapon, /obj/item/gun/energy/vortex_shotgun))
Copy link
Contributor

Choose a reason for hiding this comment

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

medium

🟡 Рекомендация по улучшению поддерживаемости

Ваше исправление корректно решает проблему с кражей вортекс-шотгана. Однако, для улучшения поддерживаемости кода в будущем, я бы рекомендовал использовать систему трейтов (traits) вместо прямого сравнения типа (istype). Это позволит легко добавлять другие предметы, которые обезьяны не должны воровать, не изменяя логику контроллера обезьян.

Например, можно добавить трейт TRAIT_MONKEY_PROOF к вортекс-шотгану и проверять его наличие здесь. Для этого потребуется добавить ADD_TRAIT(src, TRAIT_MONKEY_PROOF, INNATE_TRAIT) в Initialize() для /obj/item/gun/energy/vortex_shotgun.

if(HAS_TRAIT(held_weapon, TRAIT_MONKEY_PROOF))

@vacken12
Copy link
Contributor Author

Когда-то этот пр рассмотрят

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant