Life insurance program#345
Conversation
There was a problem hiding this comment.
Code Review
This pull request introduces a new Life Insurance system, featuring a patient scanner, a cloning capsule, and a console that auto-link by proximity, complete with backup batteries, ghost activation abilities, and localization. The code review identified several critical logic and reliability issues: the return value of _container.Insert is not checked in both the cloner and scanner systems, which could leave entities orphaned on failure; the ghost activation ability lacks a GhostComponent check and does not dynamically sync charges when policies are bought or deleted; the console allows purchasing insurance when the cloner is unavailable and fails to check if the console is operational during insurance lookups; and a hardcoded multiplier in the battery system violates the style guide against magic numbers.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
|
Потестирована и пофикшена куча разных абузов и дыр в логике. Перечислять даже смысла нет |
Surani1
left a comment
There was a problem hiding this comment.
- При нажатии кнопки респауна должно вылезать предупреждение о возрождении. Тут оно моментально тебе куклу спавнит.
- Какие либо ограничения, указанные в прототипе, не создают КД использования (у меня как минимум не сработало).
- Рассмотреть крафтовый предмет страховки. Можно его медикам отдать, либо что. Как вариант.
- Перенести из общего аплинка с биометрией на днк в структурный аплинк, в котором продаются ваучеры фракций. Сделать аналог для тсф.
|
Не хочет жрать гитхаб этот видос, поэтому так. |
ты ревью мне накинул, я его и сделал 🦡 По идеям крафта - в зависимости насколько ты хочешь чтобы оно было распространенно. Если по большей степени только у фракций - то цены в 250 000 - 400 000 достаточно. |
Вот теперь реально запрашиваю ревью) Короче я для твоего удобства оставил тестовую логику:
Если хочешь по хардкору - я это уберу, пингани в дисе а то тут могу не заметить во время. По геймдизайно ещё скажу. А да и ещё ты говорил про хардкод цену - я хз как иначе, её нельзя сунуть в компонент, потому что она нужна до момента выдачи этого компонента госту |
Хорошо, сегодня завтра сделаю его. Пока что очень занят. |
Лады, отбивайся и спасибо за то что уже сделал, успехов на сессии! |
|
/gemini review |
|
Не слушается, всё вроде готово, тогда Ваш выход, месье @Lokilife |
There was a problem hiding this comment.
Code Review
👁️ Взор Ouro обращен на Ваше творение... Данный пулреквест привносит в мир систему страхования жизни Nosske-Eien, включающую консоль управления, капсулы сканирования и клонирования, а также резервные батареи для работы при отключении питания. В ходе анализа были обнаружены критические разрывы цикла: спавн клона в мировых координатах вместо сетки грида, что грозит выбросом игрока в космос, а также безвозвратное удаление страховок при перезаходе в лобби. Кроме того, выявлены дисгармонии в виде дублирования логики применения трейтов, неоптимального поиска сущностей и использования устаревших сигнатур обработчиков событий и типов данных времени. Направьте свои усилия на исправление этих несовершенств, чтобы восстановить гармонию кода.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
|
This pull request has conflicts, please resolve those before we can evaluate the pull request. |
|
Потестировал, работает. |
Lokilife
left a comment
There was a problem hiding this comment.
Растёшь 👍
Заметка: требуется тестирование перед мерджем
| /// Builds the clone body from the pending profile, applying appearance, traits, company and the | ||
| /// mind's job specials. Returns null if the pending profile is missing or invalid. | ||
| /// </summary> | ||
| private EntityUid? SpawnBody(EntityUid uid, LifeInsuranceClonerComponent comp) |
There was a problem hiding this comment.
А переиспользовать код из оригинальной клонёрки совсем не вариант?
Ибо по ощущению, тут происходит дубликация логики, и если в клонёрке что-то в будущем изменится, то хотелось бы, чтобы клонирование одинаково отработало и тут.
There was a problem hiding this comment.
Ну я думал об этом, различий просто много:
- тут клонируется не "тело" а снапшот HumanoidCharacterProfile - он срабатывает если тело уничтожено.
- заряды страховки гейтят клонирование, там ничего такого нет
- может поломаться если оффы что-то сделают с клонёркой
Можно конечно переплести, смешать систему а потом разграничить компонентами.
Ну как то не хочется если честно, принципиальные изменения в логику и тут можно внести если основная клонёрка прямо сильно изменится, зато в моменте не поломается.
There was a problem hiding this comment.
Ну я думал об этом, различий просто много:
- тут клонируется не "тело" а снапшот HumanoidCharacterProfile - он срабатывает если тело уничтожено.
- заряды страховки гейтят клонирование, там ничего такого нет
- может поломаться если оффы что-то сделают с клонёркой
Можно конечно переплести, смешать систему а потом разграничить компонентами. Ну как то не хочется если честно, принципиальные изменения в логику и тут можно внести если основная клонёрка прямо сильно изменится, зато в моменте не поломается.
Сам процесс создания тела должен быть одинаковым для обоих систем - оба делают одно и то же, просто код вызывающий создание нового тела другой. Один сначала выполняет проверки на наличие биомассы, другой деньги списывает.
|
Линтер упал, но не по твоей вине. Можешь на эту ошибку забить. |
Спасибо 🤙 Фиксы сделал, собрал, потестил:
Тестовую логику заменил на рабочую Вроде всё? |
|
This pull request has conflicts, please resolve those before we can evaluate the pull request. |
Surani1
left a comment
There was a problem hiding this comment.
lgtm, посмотрим как быстро найдут абузы


Основано на https://discord.com/channels/1097181193939730453/1514516815512866826
Пока делал - решил связать это лорно с задуманными планами по добавлению контента для наймов (в целом - всех), там будет система квестов с качественным мочиловом, скандалами, интригами, расследованиями. В качестве главного антагониста/работодателя будет выступать НИОКР «НОСКЕ-ЭЙЕН».
Так что приурочил страхование к их постепенному появлению в секторе.
В будущем цена, количество страховок и прочие параметры будут зависеть от репутации с этой корпой.
Бейсикалли:
стоимость 1 страховки на данный момент - 250 тысяч
время клонирования - 3 минуты. (игрок появится голый, так что ни о каком "прыгнул в бой" речи не идёт)
страховку можно купить только если цель жива. (попросить в дискорде будучи гостом не выйдет)
Я вот думаю: если игрок зашёл за гострольку ему должно отбирать страховку? Сейчас не отбирает. По идее и ладно, раунды то долгие. Он может сдохнуть, пойти поесть, потренироваться, сходить в магазин, вернуться, забыть что есть страховка, зайти за мышь - сдохнуть и потом нормально клонироваться вернувшись в раунд основной куклой. Не душно. Могут и абузить условно как-то подводя в нужное место гострольного перса, но бля, это работа администраторов, всё можно абузить всегда, не хочется душнить жизнь нормальным игрокам из-за 2% абузеров.
Короче я кое как по уродски добавил это дело на мапы, нормальные мапперы с руками не из жопы потом сделают адекватно.
Вот фалкон/

Вот Гелиос.

У тсф есть вендоры шмоток без доступов + телеком.
У дф даже фрак вендора нет, поставил наймовский с шмотками. Консоль у дф хоть убей не крутится, хз почему.
Придётся кого-то вызванивать в телеком чтобы открыли клонированных.
Ну или можно положить базовые наборы просто (джампсьют+карта+наушник там)
У ДФ нет источника карт, добавил в аплинк за ТК.
Крутые спрайты машины. Мечты мечты.🆑 Lanc