Решитворк электрического стула: Месть шиткода - #1023
Conversation
|
Часть системы может быть перенесена в |
|
не очень понимаю зачем надо было это ревьювить |
Интересно, почему комментарии отсюда не идут в ветку гитхаба сборки. |
cfif126
left a comment
There was a problem hiding this comment.
стоит удалить локаль (мне подсказал чат гпт 7)
| private bool TryGetChairComponents( | ||
| EntityUid uid, | ||
| [NotNullWhen(true)] out ApcPowerReceiverComponent? receiver, | ||
| [NotNullWhen(true)] out StrapComponent? strap, | ||
| [NotNullWhen(true)] out ElectrifiedComponent? electrified, | ||
| [NotNullWhen(true)] out TransformComponent? transform) | ||
| { |
There was a problem hiding this comment.
Я не понимаю откуда нейронка взяла такой подход к работе с несколькими компонентами, это перегружает простую систему, обычно если нам нужен какой-то компонент, то при его отсутствии просто не работает какая-то логика, а не отключается вся система, это же относиться и к OnComponentRemoved (который можно удалить)
| TurnOff(ent.Owner, true); | ||
| } | ||
|
|
||
| private void OnDamageModifyEvent(Entity<HumanoidAppearanceComponent> ent, ref DamageModifyEvent args) |
There was a problem hiding this comment.
Это злой подход, мы не должны реализовывать логику компонентов в системе не связанной с этим компонентом. Просто изначально не нужно поджаривать тех, кого не нужно
| private static bool IsBuckledTo(EntityUid target, StrapComponent strap) | ||
| { | ||
| foreach (var buckled in strap.BuckledEntities) | ||
| { | ||
| if (buckled == target) | ||
| return true; | ||
| } | ||
|
|
||
| return false; | ||
| } |
There was a problem hiding this comment.
| private static bool IsBuckledTo(EntityUid target, StrapComponent strap) | |
| { | |
| foreach (var buckled in strap.BuckledEntities) | |
| { | |
| if (buckled == target) | |
| return true; | |
| } | |
| return false; | |
| } | |
| private static bool IsBuckledTo(EntityUid target, StrapComponent strap) | |
| { | |
| return strap.BuckledEntities.Contains(target); | |
| } |
Описание PR
Полностью переработан шиткод электрического стула. Прошлая версия была написана ChatGPT-4o, текущая написана ChatGPT 5.6 Sol xhight с подключением MCP от Roslyn для изучения графов проекта и дополнительно дообученная на документации от оффов по SS14. Потрачено 50% недельных токенов подписки за 100 баксов. Это точно стоит записать в плюсы.
Основные изменения:
On,OffиToggleперенесены в прототип, теперь настроенные на замороженных картах подключения больше не будут теряться при инициализации, так что можно сразу маппить комнаты для казни с кнопкой.ElectrocutionSystem. Короче, теперь он бьёт током примерно как решётка под напряжением. Но он не бьёт током проходящих рядом или взаимодействующих с ним персонажей.Неинтересные мелочи:
Изменения ограничены собственным кодом ExecutionChair. Ванильные системы, карты, кнопки и прочее не менялось.
Почему / Баланс
Потому что был шиткод, у которого не работала половина функционала. А если работала, то криво. А ещё параметр звука вместо звука менял урон, да. Шиткод был переписан в другой предположительный шиткод. Да и просто интересно сравнить развитие шиткодинга за полтора года разницы. Бтв, полтора года прошлый шиткод был на всех картах и ничо не падало.
Технические детали
Полный реворк.
Медиа
2321354124154321334552344214.mp4
Требования
Критические изменения
ExecutionChairсохранён, поэтому размещённые на картах сущности не требуют миграции.Content.Server._CorvaxGoob.ExecutionChair.Тестирование
Прогнала все интеграционные тесты, ну так на всякий случай, 1636 пройдено.
А также все остальные тесты что есть в сборке, 3812 пройдено 1 пропущен (не виноватая я, он сам попустился)
Ну и ручками балду погоняла десяток тестов небольших, чисто чтобы убедиться в работоспособности.
Список изменений