Skip to content

Tel-Adi: контент-пак корпорации (компания, снаряжение, флот, промышленость)#228

Open
lenta212 wants to merge 4 commits into
Forge-Station:mainfrom
lenta212:teladi-content
Open

Tel-Adi: контент-пак корпорации (компания, снаряжение, флот, промышленость)#228
lenta212 wants to merge 4 commits into
Forge-Station:mainfrom
lenta212:teladi-content

Conversation

@lenta212

@lenta212 lenta212 commented Jun 5, 2026

Copy link
Copy Markdown

О 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.

Медиа

Требования

  • [✓] Я прочитал(а) релевантные гайдлайны/документацию для этого PR на нашем devwiki.
  • [×] Я добавил(а) медиа в этот PR, либо для него не требуется демонстрация в игре.
  • [✓] Подтверждаю, что PR либо не содержит AI-сгенерированного контента, либо этот контент соответствует нашим правилам.

Как тестировать

  • C.У.И: заспавнить ядро + капсулу, связать мультитулом → положить тело КПБ в капсулу →
    оператор управляет ИИ, око летает.
    Вскрыть капсулу → 30 сек → носителя предупреждает и выкидывает.
  • Компания: зайти за Tel-Adi → PDA/ID фирменные, в рюкзаке ключ канала (:g, 606.7).
  • Верфь: купить шаттлы Tel-Adi; убедиться, что «billion» лимит 1.
  • Промышленность: открыть древо , напечатать платы/одежду Tel-Adi на станках.
  • Имплант: взять в руку включить выбрать конечность на кукле слева снизу и использовать на себе или же вживить через операцию в тело

Ломающие изменения

Нет. Только аддитивно: новые прототипы/неймспейсы, новые значения enum
ShipyardConsoleUiKey (TelAdi, TelAdiAurora) и добавления в dynamicPacks станков.
Единственная правка Content.ClientStationAiOverlay считает зрение по гриду цели
ока (нужно для межгридового Душегуба; для обычного Station AI поведение не меняется вероятно будет удалено).

Changelog

🆑 lenta212

  • add: Добавлена корпорация Tel-Adi: компания, снаряжение, модсьюты, флот и верфь.
  • add: Добавлена ИИ-механика «Душегуб» (С.У.И): ядро, капсула извлечения, релейный сервер с межгридовым оком.
  • add: Добавлен аварийный имплант-конечность, промышленность и древо исследований Tel-Adi.

…нность, Душегуб)

Корпорация 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>

@vsixst vsixst left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Ладно, я устал..

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.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Хардкод, лучше не класть подобные проверки в if (companyName == "TelAdi") в системы, особенно если завязаны на прототипе.
В целом, присутствие этого куска здесь вызывает сомнения: это общая система компаний.
В системе уже существует поддержка JobSpecial'ов - попробуй перекинуть это в него и сделать его настраиваемым. Позволит переиспользовать для других компаний. Либо сделать аналог.

В любом случае, этот кусок надо вынести за пределы системы компаний и сделать настраиваемым.

Federation // Forge-Change

Federation, // Forge-Change
TelAdi, // Forge-Change

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Добавление лишнего ключа тоже не имеет под собой никакого смысла. Обычного Custom ключа и корректно настроенной верфи хватит.

id: BannerTelAdi
parent: BannerBase
name: баннер Tel-Adi
description: Баннер корпорации Tel-Adi. Символ прибыли и порядка.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Вроде и можно, но для чистоты лучше вынести всё в .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);

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Выноси время в прототип, для лёгкой настройки. Всё таки странно такое хранить здесь, а не в компоненте

/// <summary>
/// Finds the core currently connected through this capsule, if any.
/// </summary>
private bool TryGetConnectedCore(EntityUid connector, out Entity<SoulkillerComponent> core)

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Ты перебираешь все ентити с SoulkillerComponent? Может лучше хранить активное подключение прямо в SoulkillerConnectorComponent? Условное

[ViewVariables]
public EntityUid? ActiveSoulkiller;

/// КПБ = IPC.
/// </summary>
[DataField]
public string RequiredSpecies = "IPC";

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Может ProtoId<SpeciesPrototype>?

@@ -0,0 +1,9 @@
# Tel-Adi
- type: accessLevel
id: TelAdi

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

А нет, ещё про это скажу. Не совсем понимаю зачем тут отдельный accessLevel + accessGroup.
У компании уже есть CompanyAccess - есть отдельная система (см. CompanyAccessReader.cs), он есть и в обычной системе (см. AccessReaderComponent.cs)

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Комментарий нагло врёт, см. AccessReaderSystem.cs.

@vsixst

vsixst commented Jun 5, 2026

Copy link
Copy Markdown
Collaborator

Лично меня не так заботит система Soulkiller - я откровенно говоря просмотрел её мимоходом. С этим тебя будет терроризировать @mersen-tyn.
Меня заботит твой кусок в CompanySystem.cs‎ - это неправильно, это плохо, так не надо. Особенно с учётом того, что это невозможно переиспользовать или перенастроить. Лучше либо попытаться использовать JobSpecial, либо делать аналог и применять его в системе компаний.

@github-actions github-actions Bot added size/XL and removed size/L labels Jun 6, 2026
@github-actions github-actions Bot added size/L and removed size/XL labels Jun 6, 2026
lenta212 and others added 2 commits June 6, 2026 15:50
…бора), company-special вместо хардкода (+ брендовый PDA через SwapPdaSpecial), верфь на Custom+ShipyardListing, убран мёртвый accessGroup

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@github-actions github-actions Bot added the UI label Jun 11, 2026
@lenta212 lenta212 force-pushed the teladi-content branch 2 times, most recently from ecf6a68 to bb9c656 Compare June 11, 2026 23:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants