Tel-Adi: контент-пак корпорации (компания, снаряжение, флот, промышленость)#228
Tel-Adi: контент-пак корпорации (компания, снаряжение, флот, промышленость)#228lenta212 wants to merge 4 commits into
Conversation
…нность, Душегуб) Корпорация Tel-Adi и её механики (всё в _Forge/_Mono, без правок главных систем): - Компания Tel-Adi: прототип компании, фирменные PDA/ID/иконка, авто-выдача шифроключа корпоративного радиоканала при заходе (:g, частота 606.7). - Снаряжение: одежда, боевые модсьюты Mk1/Mk2, парадная одежда. - Флот: шаттлы Кредит, Долг, Банкрот и флагман «billion» (лимит 1/раунд). - Промышленность: станочные платы и рецепты, древо исследований (ARS), промышленные машины Drake. - Аварийный имплант-конечность (отращивание после операции). - Душегуб / «С.У.И»: ИИ-ядро (8 кВт), крио-капсула извлечения носителя (30 с, с предупреждением), релейный сервер и прыжок ока ИИ между гридами по связи мультитулом, зрение ИИ на чужом гриде. Точечные дополнения общих файлов (только добавление Tel-Adi-контента): lathe.yml/electronics.yml (паки), SharedShipyardSystem (enum верфи), CompanySystem (PDA-свап + ключ), StationAiOverlay (зрение ока на чужом гриде), role_loadouts/play_time_trackers, 6 meta.json (Tel-Adi-состояния спрайтов). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
| return _idCardSystem.TryChangeCompanyName(cardId, companyName, idCard); | ||
| _idCardSystem.TryChangeCompanyName(cardId, companyName, idCard); | ||
|
|
||
| // Forge-Change: Tel-Adi employees get a branded PDA + ID card + corp radio key. |
There was a problem hiding this comment.
Хардкод, лучше не класть подобные проверки в if (companyName == "TelAdi") в системы, особенно если завязаны на прототипе.
В целом, присутствие этого куска здесь вызывает сомнения: это общая система компаний.
В системе уже существует поддержка JobSpecial'ов - попробуй перекинуть это в него и сделать его настраиваемым. Позволит переиспользовать для других компаний. Либо сделать аналог.
В любом случае, этот кусок надо вынести за пределы системы компаний и сделать настраиваемым.
| Federation // Forge-Change | ||
|
|
||
| Federation, // Forge-Change | ||
| TelAdi, // Forge-Change |
There was a problem hiding this comment.
Добавление лишнего ключа тоже не имеет под собой никакого смысла. Обычного Custom ключа и корректно настроенной верфи хватит.
| id: BannerTelAdi | ||
| parent: BannerBase | ||
| name: баннер Tel-Adi | ||
| description: Баннер корпорации Tel-Adi. Символ прибыли и порядка. |
There was a problem hiding this comment.
Вроде и можно, но для чистоты лучше вынести всё в .ftl - не стоит оставлять здесь русский нейминг.
| private const string SoulkillerLinkPort = "SoulkillerLink"; | ||
|
|
||
| /// <summary>Time it takes to forcibly crack an occupied capsule open and rip the operator out.</summary> | ||
| private static readonly TimeSpan ExtractTime = TimeSpan.FromSeconds(30); |
There was a problem hiding this comment.
Выноси время в прототип, для лёгкой настройки. Всё таки странно такое хранить здесь, а не в компоненте
| /// <summary> | ||
| /// Finds the core currently connected through this capsule, if any. | ||
| /// </summary> | ||
| private bool TryGetConnectedCore(EntityUid connector, out Entity<SoulkillerComponent> core) |
There was a problem hiding this comment.
Ты перебираешь все ентити с SoulkillerComponent? Может лучше хранить активное подключение прямо в SoulkillerConnectorComponent? Условное
[ViewVariables]
public EntityUid? ActiveSoulkiller;
| /// КПБ = IPC. | ||
| /// </summary> | ||
| [DataField] | ||
| public string RequiredSpecies = "IPC"; |
There was a problem hiding this comment.
Может ProtoId<SpeciesPrototype>?
| @@ -0,0 +1,9 @@ | |||
| # Tel-Adi | |||
| - type: accessLevel | |||
| id: TelAdi | |||
There was a problem hiding this comment.
А нет, ещё про это скажу. Не совсем понимаю зачем тут отдельный accessLevel + accessGroup.
У компании уже есть CompanyAccess - есть отдельная система (см. CompanyAccessReader.cs), он есть и в обычной системе (см. AccessReaderComponent.cs)
There was a problem hiding this comment.
Комментарий нагло врёт, см. AccessReaderSystem.cs.
|
Лично меня не так заботит система Soulkiller - я откровенно говоря просмотрел её мимоходом. С этим тебя будет терроризировать @mersen-tyn. |
…бора), company-special вместо хардкода (+ брендовый PDA через SwapPdaSpecial), верфь на Custom+ShipyardListing, убран мёртвый accessGroup Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
ecf6a68 to
bb9c656
Compare
О PR
Контент-пак корпорации Tel-Adi и её механик. Всё в
_Forge/_Mono, главныесистемы не затронуты — общие файлы только дополнены аддитивно.
Корпорация Tel-Adi — прототип компании, фирменные PDA/ID-карта/иконка, доступы,
баннеры и флаги, статус-иконка. При заходе члену корпорации автоматически выдаётся
шифроключ корпоративного радиоканала (
:g, частота 606.7).Снаряжение — одежда, парадная одежда, боевые модсьюты Mk1/Mk2.
Флот (верфь Tel-Adi) — шаттлы «Кредит», «Долг», «Банкрот» и флагман «billion».
Промышленность — станочные платы и рецепты, древо исследований (ARS), машины Drake.
Медицина — аварийный имплант-конечность.
Душегуб / «С.У.И» — ИИ-механика на базе Station AI.
<-- как работает-->
Душегуб: ядро (
StationAiCore) с мозгом «С.У.И» и летающим оком (holo). К ядру посвязи мультитулом (network configurator) привязывается крио-капсула (
EntityStorage):тело внутри → оператор управляет ИИ; вскрытие капсулы — 30-сек do-after, который
выкидывает носителя и шлёт ему предупреждение. Релейный сервер на другом гриде (не используется),
привязанный мультитулом, позволяет ИИ перепрыгнуть око туда и видеть/взаимодействовать(в бета тестировании)
(зрение через
StationAiVision+ правка клиентского оверлея: считает видимость по гридуцели ока, а не игрока). Компания на заходе выдаёт брендированные PDA/ID + ключ радио.
Зачем / Баланс
Добавляет полноценную корпорацию со своим снаряжением, флотом, промышленностью
Баланс: флагман «billion» — 400к и лимит 1 активный за раунд; ядро С.У.И не имеет крафта присутствует только на флагмане Bilion;
извлечение из капсулы занимает 30 сек; аварийный имплант хуже обычних конечностей а так же хп в 50.
Медиа
Требования
Как тестировать
оператор управляет ИИ, око летает.
Вскрыть капсулу → 30 сек → носителя предупреждает и выкидывает.
:g, 606.7).Ломающие изменения
Нет. Только аддитивно: новые прототипы/неймспейсы, новые значения enum
ShipyardConsoleUiKey(TelAdi,TelAdiAurora) и добавления вdynamicPacksстанков.Единственная правка
Content.Client—StationAiOverlayсчитает зрение по гриду целиока (нужно для межгридового Душегуба; для обычного Station AI поведение не меняется вероятно будет удалено).
Changelog
🆑 lenta212