Песочница/Pok/3: различия между версиями

Материал из Space Station 14 Вики
Нет описания правки
Нет описания правки
 
(не показано 256 промежуточных версий 4 участников)
Строка 1: Строка 1:
<div class="grid-adaptive" style="
{{docpage}}{{TOC hidden}}
display: grid;
{{OnLua|Сущность|module1=Сущность|module2=Сущность/поля|module3=GetField}}
gap: 12px;
">
{{MainMenuBlocks/Frame
|title            = Статья 131: Пропаганда запрещённых организаций
|style            = display: flex;gap: 14px 10px;flex-wrap: wrap;padding: 8px 10px;
|transparency    = 70
|background-color = #0F4F27
|border-color    = #126130
|content          =  


<div class="SmugglingText">Объекты с явной символикой экстремистских и вражеских организаций.</div>
Модульный набор {{tl|Модуль:Сущность}} + {{tl|Модуль:Сущность/поля}} + {{tl|Модуль:GetField}} предназначен для:
{{Smuggling/Item
* автоматической сборки карточек сущностей (компонентов и прототипов) по их ID;
|Уровень  = высокий
* описания полей в шаблонах компонентов (какие поля идут в карточку, как подписаны);
|id      = ClothingHeadsetAltSyndicate
* удобного доступа к данным из JSON (как простыми значениями, так и готовыми вызовами шаблонов).
|Иконка  =
|Название =
|Описание = <br><br>
Для всех это подозрительная гарнитура с буквой S.


При подозрении на деятельность синдиката стоит уточнить, что имеет в виду лицо, демонстрирующее данный символ, а также проверить гарнитуру.
Ниже описан общий принцип работы и отдельные режимы.
}}


{{Smuggling/Item
== Общий принцип работы ==
|Уровень  = средний
* В шаблонах компонентов/прототипов (<code>Template:Component/...</code>, <code>Template:prototype/...</code>) через {{tl|Модуль:Сущность/поля}} описываются поля:
|id      = SoapSyndie
** '''лейблы''' (<code>cardLabel_*</code>) и '''содержимое''' (<code>cardContent_*</code>), заголовки (<code>title_*</code>) и т. п.;
|Иконка  =
** '''мета‑информация''' о том, какие ключи доступны для <code>card</code> / <code>title</code> и в каком порядке.
|Название =
* {{tl|Модуль:Сущность}} по ID сущности:
|Описание = <br><br>
** находит связанные с ней компоненты и прототипы по JSON‑данным;
Всем видна надпись на мыле.
** для каждого компонента/прототипа читает шаблоны и метаданные;
** собирает все поля в единую структуру;
** формирует один вызов карточки <code><nowiki>{{карточка/сущность|...}}</nowiki></code> (и блоки заголовков).
* Внутри полей можно писать вики‑параметры <code>{{{...}}}</code> и вызывать дополнительные модули.
* {{tl|Модуль:GetField}} даёт доступ к JSON‑данным на низком уровне:
** как «расплющенный» набор параметров (<code>flattenField</code>);
** как отдельные значения (<code>get</code>);
** как готовые вызовы шаблонов с нужными параметрами (<code>getTpl</code>, <code>getTplProto</code>).


При подозрении на деятельность синдиката стоит уточнить, что имеет в виду лицо, демонстрирующее данный символ.
== Модуль: Сущность/поля ==
}}
Шаблоны компонентов используют модуль <code>Сущность/поля</code> для объявления полей, которые будут собираться в карточку.


{{Smuggling/Item
Пример шаблона компонента:
|Уровень  = средний
|id      = BalloonSyn
|Иконка  =
|Название =
|Описание = <br><br>
Для всех это воздушный шар с буквой S.


При подозрении на деятельность синдиката стоит уточнить, что имеет в виду лицо, демонстрирующее данный символ.
<pre>
{{#invoke:Сущность/поля|main
|cardLabel_Стоимость  = [[Стоимость]]
|cardContent_Стоимость = '''{{{price}}}'''
}}
}}
</pre>


{{Smuggling/Item
Другой компонент может добавлять тот же ключ:
|Уровень  = средний
|id      = BedsheetSyndie
|Иконка  =
|Название =
|Описание = <br><br>
Для всех это одеяло с буквой S.


При подозрении на деятельность синдиката стоит уточнить, что имеет в виду лицо, демонстрирующее данный символ.
<pre>
{{#invoke:Сущность/поля|main
|cardContent_Стоимость  = '''{{{superPrice}}}'''
}}
}}
</pre>


{{Smuggling/Item
Особенности:
|Уровень  = средний
* Пара <code>cardLabel_<Ключ></code> / <code>cardContent_<Ключ></code> описывает одну строку карточки (лейбл и содержимое).
|id      = CrateSyndicateSurplusBundle
* Если несколько шаблонов дают один и тот же <code>cardContent_Ключ</code>, содержимое '''объединяется''', а лейбл берётся первый непустой.
|Иконка  =
* То же относится к другим режимам, перечисленным в мета‑JSON шаблона (разделы <code>card</code>, <code>title</code> и т. п.), которые читает {{tl|Модуль:Сущность}}.
|Название =
|Описание = <br><br>
Для всех это ящик с буквой S.


При подозрении на деятельность синдиката стоит уточнить, что имеет в виду лицо, демонстрирующее данный символ.
== Модуль: Сущность ==
}}


{{Smuggling/Item
=== p.get: основная сборка карточки ===
|Уровень  = средний
Вызов:
|id      = RubberStampSyndicate
|Иконка  =  
|Название =  
|Описание = <br><br>
Для всех это печать с оттиском логотипа Синдиката.


Поставленный оттиск также подпадает под 131 КЗ.
<pre>
{{#invoke:Сущность|get
| <ID или список ID>
| blacklist=...
| whitelist=...
| ignoreComponents=...
| ignorePrototypes=...
}}
}}
</pre>


{{Smuggling/Item
* '''1‑й параметр''' — <code>id</code> или список <code>id</code> через запятую.
|Уровень  = средний
* По этому ID модуль находит:
|id      = SyndieFlag
** '''компоненты''' из <code>component.json</code>;
|Иконка  =
** '''прототипы''' из <code>prototype.json</code>;
|Название =
и для каждого — соответствующие шаблоны <code>Template:component/...</code> / <code>Template:prototype/...</code>.
|Описание = <br><br>
* Шаблоны описывают свои поля через <code>Сущность/поля</code>.
Все видят, что это флаг с логотипом Синдиката.


При подозрении на деятельность синдиката стоит уточнить, что имеет в виду лицо, демонстрирующее данный символ.
После сборки модуль:
}}
* формирует один вызов <code><nowiki>{{карточка/сущность|...}}</nowiki></code> со всеми разделами и полями;
* дополняет выход при необходимости (блоки title и т. п.);
* прогоняет результат через <code>frame:preprocess</code>, чтобы отрендерить разметку.


{{Smuggling/Item
Параметры фильтрации:
|Уровень  = средний
* {{пм|blacklist}} — список <code>режим_Ключ</code> через запятую, чтобы исключить поле:
|id      = BannerSyndicate
** пример: <code>blacklist=card_Наносит повреждения,title_Что‑то</code>;
|Иконка  =
* {{пм|whitelist}} — наоборот, список разрешённых <code>режим_Ключ</code>, остальные игнорируются;
|Название =
* {{пм|ignoreComponents}} / {{пм|ignoreComponent}} — список имён компонентов через запятую, которые полностью игнорируются для этого вызова;
|Описание = <br><br>
* {{пм|ignorePrototypes}} / {{пм|ignorePrototype}} — аналогично для прототипов.
Все видят, что это знамя с логотипом Синдиката.


При подозрении на деятельность синдиката стоит уточнить, что имеет в виду лицо, демонстрирующее данны
Пример простой сборки (через шаблон‑обёртку):
}}


{{Smuggling/Item
<pre>
|Уровень  = средний
{{Сущность/карточка|MyEntityId}}
|id      = MobCatSyndy
</pre>
|Иконка  =
|Название =
|Описание = <br><br>
Всем видно, что кто-то разукрасил кошку в цвета Синдиката, и одел в характерный костюм в виде Ядерного Оперативника.
}}


{{Smuggling/Item
где в шаблоне <code>Сущность/карточка</code> внутри:
|Уровень  = высокий
|id      = VendingMachineSyndieDrobe
|Иконка  =
|Название =
|Описание = Всем видно, что это шкаф с логотипом Синдиката.<br><br>
При выявлении функции выдачи брони приписывается 431 статья КЗ.
}}


}}<!--
<pre>
{{#invoke:Сущность|get|{{{1}}}}}
</pre>


-->
=== p.preview: предпросмотр полей конкретного шаблона ===
{{MainMenuBlocks/Frame
Используется для проверки, что компонент/прототип правильно описал свои поля.
|title            = Статья 431: Злоупотребление экипировкой и оборудованием
|style            = display: flex;gap: 14px 10px;flex-wrap: wrap;padding: 8px 10px;
|transparency    = 70
|background-color = #0F4F27
|border-color    = #126130
|content          =


<div class="SmugglingText">Профессиональная униформа с явными отличительными знаками, рабочие скафандры с повышенной степенью защиты — комбинезоны, береты, плащи, куртки, скафандры, имеющие отличительные внешние признаки принадлежности определённой профессии или специализации. То есть не просто красный комбинезон, а комбинезон службы безопасности; не просто EVA, а скафандр утилизатора и т.п.</div>
<pre>
{{Smuggling/Item
{{#invoke:Сущность|preview
|Уровень  =
| Component/meleeWeapon
|id      =
|Иконка  = ClothingUniformJumpsuitSec.png
|Название = Рабочие комбинезоны
|Описание = Все комбинезоны в названии которых явно указана профессия.<br><br>
'''Примерный перечень:'''
* {{PicName|Rd_jumpsuit.png|ClothingUniformJumpsuitResearchDirector}}
* {{PicName|ChemComb.png|ClothingUniformJumpsuitChemistry}}
* {{PicName|Инженерный_комбинезон.png|ClothingUniformJumpsuitEngineering}}
}}
}}
</pre>


{{Smuggling/Item
* Показывает, какие <code>card</code> / <code>title</code>‑поля объявлены в <code>Template:Component/meleeWeapon</code>.
|Уровень  =
* Удобно при разработке шаблонов компонентов.
|id      =
|Иконка  = ClothingOuterWinterHydro.png
|Название = Рабочие куртки
|Описание = Все куртки и прочая верхняя одежда, в названии которых явно указана профессия.<br><br>
'''Примерный перечень:'''
* {{PicName|ClothingOuterWinterCargo.png|ClothingOuterWinterCargo}}
}}


{{Smuggling/Item
=== p.jsonList: вывод JSON в виде списка ===
|Уровень  =  
Режим похож на стандартный <code>arraymap</code>, но работает с JSON.
|id      =  
|Иконка  = ClothingCloakCmo.png
|Название = Плащи
|Описание = <br><br>
Плащи, мантии глав и прочих сотрудников.
<br><br>
'''Примерный перечень:'''
* {{PicName|Miner-cloak.png|ClothingNeckCloakMiner}}
}}


{{Smuggling/Item
<pre>
|Уровень  =  
{{#invoke:Сущность|jsonList
|id      =  
| <json или {{{...}}}>
|Иконка  = ClothingOuterHardsuitSalvage.png
| type = list / enum
|Название = Скафандры
| prefix = *
|Описание = <br><br>
| sep = :
Рабочие скафандры (не EVA, не аварийный).
| key_pattern = (.*)
<br><br>
| key_replace = \1
'''Примерный перечень:'''
| value_pattern = (.*)
* {{PicName|ClothingOuterHardsuitBrigmedic.png|ClothingOuterHardsuitBrigmedic}}
| value_replace = \1
}}
}}
</pre>


<div class="SmugglingText">Элементы одежды, имеющие повышенное сопротивление к применению охранного оборудования (бронированные предметы одежды), сопротивление окружающей среде, или изолирующие свойства — любая броня и бронированная одежда (имеет резисты к механическому урону), магнитные сапоги и сапоги уборщика, любые перчатки со свойствами изоляции от тока.</div>
Примеры JSON:
{{Smuggling/Item
|Уровень  =
|id      =
|Иконка  = ClothingOuterVestArmorSec.png
|Название = Бронежилеты
|Описание = <br><br>
Любые бронежилеты и комплекты брони.
<br><br>
'''Примерный перечень:'''
* {{PicName|ClothingOuterArmorReflective.png|ClothingOuterArmorReflective}}
* {{PicName|ClothingOuterVestWeb.png|ClothingOuterVestWeb}}
* {{PicName|Acolytearmor.png|ClothingOuterArmorCult}}
* {{PicName|Heavy_armor.png|ClothingOuterArmorHeavy}}
* {{PicName|Riot_armor.png|ClothingOuterArmorRiot}}
}}


{{Smuggling/Item
<pre> <!-- <syntaxhighlight lang=json> -->
|Уровень  =
{
|id      =
  "Blunt": 10,
|Иконка   = ClothingOuterCoatWarden.png
   "Slash": 5
|Название = Бронированная одежда
}
|Описание = <br><br>
</pre> <!-- </syntaxhighlight> -->
Одежда усиленная специальными сплавами.
<br><br>
'''Примерный перечень:'''
* {{PicName|Syndiearmorcoat.png|ClothingOuterCoatSyndieCapArmored}}
}}


{{Smuggling/Item
или
|Уровень  =
|id      =
|Иконка  = ClothingHandsGlovesColorYellow.png
|Название = Изолирующие перчатки
|Описание = <br><br>
Перчатки со свойством изоляции от тока.
<br><br>
'''Примерный перечень:'''
* {{PicName|ClothingHandsGlovesCombat.png|ClothingHandsGlovesCombat}}
* В том числе дешёвые излоирующие перчатки, обрезанные изолирующие перчатки и так далее.
}}


{{Smuggling/Item
<pre> <!-- <syntaxhighlight lang=json> -->
|Уровень  =
["Knife", "Sword", "Bat"]
|id      =
</pre> <!-- </syntaxhighlight> -->
|Иконка  = ClothingShoesBootsMag.png
|Название = Особые сапоги
|Описание = <br><br>
НуженТекст
<br><br>
'''Примерный перечень:'''
* {{PicName|ClothingShoesBootsMag.png|ClothingShoesBootsMag}}
* {{PicName|ClothingShoesGaloshes.png|ClothingShoesGaloshes}}
}}


{{Smuggling/Item
Основные опции:
|Уровень  = средний
* {{пм|type}}:
|id      = ClothingShoesSpaceNinja
** <code>list</code> — список строк (с префиксом, например <code>* </code>);
|Иконка  =
** <code>enum</code> — перечисление через запятую (<code>A, B, C</code> без префикса).
|Название =
* {{пм|prefix}} — префикс строки списка (по умолчанию <code>* </code>).
|Описание = <br><br>
* {{пм|sep}} — разделитель для <code>ключ: значение</code> (по умолчанию <code>: </code>).
Для всех это ботинки с пришитой магнитной подошвой.
* {{пм|key_pattern}} / {{пм|key_replace}} — regex и замена для ключей.
 
* {{пм|value_pattern}} / {{пм|value_replace}} — regex и замена для значений.
Всем видно, что это модифицированное снаряжение.
}}


{{Smuggling/Item
Дополнительно:
|Уровень  = средний
* в шаблоне замены поддерживаются:
|id      = ClothingShoesBootsMagSyndie
** <code>\1</code> — собственное значение (ключ или значение);
|Иконка  =
** <code>\2</code> в <code>value_replace</code> — '''сырой ключ''' (после <code>key_pattern</code>, но до <code>key_replace</code>);
|Название =
** <code>\2</code> в <code>key_replace</code> — итоговое отформатированное значение (после <code>value_replace</code>).
|Описание = <br><br>
Для всех это сапоги с ускорителями и джетпаком.


Всем видно, что это модифицированное снаряжение.
Пример, где сначала форматируем тип урона, а затем подставляем его в описание:
}}


{{Smuggling/Item
<pre>
|Уровень = средний
{{#invoke:Сущность|jsonList
|id      = ClothingEyesVisorNinja
  | {{{damage.types}}}
|Иконка  =  
| type = enum
|Название =  
| key_replace = <nowiki>\1</nowiki>              <!-- "Blunt" -->
|Описание = <br><br>
| value_replace = <nowiki>'''\1''' \2</nowiki>   <!-- "'''10''' Blunt" -->
Для всех это визор со светоотражающими линзами.
Всем видно, что это модифицированное снаряжение.
}}
}}
</pre>


{{Smuggling/Item
=== p.json: превращение JSON в вызовы шаблонов ===
|Уровень  = средний
Режим для случаев, когда в JSON лежит список эффектов/объектов, и нужно по каждому вызвать отдельный шаблон.
|id      = ClothingMaskGasSyndicate
|Иконка  =  
|Название =  
|Описание = <br><br>
Для всех это противогаз со светоотражающими линзами.
 
Всем видно, что это модифицированное снаряжение.
}}


<div class="SmugglingText">Профессиональный инструментарий и оборудование, техническое оборудование, не имеющие опасных свойств — инструменты разных профессий, которые сами по себе не могут нанести существенный урон окружающим существам или самой станции.</div>
<pre>
{{Smuggling/Item
{{#invoke:Сущность|json
|Уровень =
  | <json или {{{...}}}>
|id      =
| <путь_к_шаблону>
|Иконка  = Multitool.png
|Название = Инженерные инструменты
|Описание = <br><br>
Все инструменты, кроме лома и гаечного ключа.
<br><br>
'''Примерный перечень:'''
* {{PicName|Screwdriver.png|Screwdriver}}
* {{PicName|PowerDrill.png|PowerDrill}}
* {{PicName|Wirecutter.png|Wirecutter}}
}}
}}
</pre>


{{Smuggling/Item
* '''1‑й параметр / <code>json=</code>''' — строка JSON.
|Уровень  = высокий
* '''2‑й параметр / <code>template=</code>''' — путь к шаблону, например <code>Component/adjustPlant</code>.
|id      = CyberPen
|Иконка  =
|Название =
|Описание = <br><br>
Для всех это цветная ручка.


Информированный персонал знает, что CyberSun выпускает ручки с модифицированным ластиком.
Ожидаемый формат JSON‑массива:


При осмотре видно, что кончик ручки имеет нагревающийся ластик, способный достигать более чем 150°.
<pre> <!-- <syntaxhighlight lang=json> -->
[
  {
    "!type:PlantAdjustNutrition": {
      "amount": 0.1
    }
  },
  {
    "!type:PlantAdjustWeeds": {
      "amount": 2
    }
  },
  {
    "!type:PlantAdjustPests": {
      "amount": 2
    }
  }
]
</pre> <!-- </syntaxhighlight> -->


При осмотре видно, что колпачок ручки является небольшой отвёрткой.
Для каждого элемента создаётся вызов:


Наличие такой ручки может быть основанием для дополнительной проверки документов лица.
<pre>
{{Component/adjustPlant
|id=!type:PlantAdjustNutrition
|amount=0.1
}}
}}
 
{{Component/adjustPlant
{{Smuggling/Item
  |id=!type:PlantAdjustWeeds
|Уровень = НуженТекст
|amount=2
|id       = PinpointerNuclear
|Иконка  =
|Название =  
|Описание = <br><br>
НуженТекст
}}
}}
 
{{Component/adjustPlant
<div class="SmugglingText">Безопасные медицинские вещества - вещества, оказывающие благоприятное воздействие на организм, получение которых возможно в химической лаборатории или в ботанике. Не имеют вредного влияния на организм при приёме в безопасных дозах. Безопасные бытовые вещества - вещества, не предназначенные для приема в пишу и лечения, однако применяемые в уборке, ботанике и ксеноархеологии. Не оказывают отрицательного воздействия на организм.</div>
|id=!type:PlantAdjustPests
'''Примерный перечень:'''
  |amount=2
<div class="SmugglingElements">
<span>Ультраваскулин</span>
<span>Аритразин</span>
<span>Транексамовая кислота</span>
<span>Барозин</span>
<span>Пунктураз</span>
<span>Синаптизин</span>
</div>
 
<div class="SmugglingText">Безопасные химические элементы - стандартные элементы не имеющие отрицательного влияния на организм.</div>
<div class="SmugglingElements">
<span>[[Химия#Элементы|Все элементы]], кроме воды, радия, урана.</span>
<span>Руда, кроме банановой и урановой</span>
</div>
}}<!--
 
-->
{{MainMenuBlocks/Frame
|title            = Статья 432: Незаконное владение опасными предметами
|style            = display: flex;gap: 14px 10px;flex-wrap: wrap;padding: 8px 10px;
|transparency    = 70
|background-color = #414700
|border-color    = #414700
|content          =
 
<div class="SmugglingText">Нарушение эксплуатации или незаконное наличие оборудования, способного нанести серьезный ущерб окружению.</div>
 
{{Smuggling/Item
|Уровень =
|id      = RCD
|Иконка  =
|Название =
|Описание = <br><br>
Все инструменты, которые могут моментально разрушить обшивку станции/уничтожить окружающие предметы.
}}
}}
</pre>


{{Smuggling/Item
Особенности:
|Уровень  =
* Если JSON — объект вида <code>{ "id1": {...}, "id2": {...} }</code>, происходит аналогичный проход по парам <code>ключ → объект</code>.
|id      =
* Все вызовы склеиваются через перевод строки и прогоняются через <code>frame:preprocess</code>, поэтому внутри шаблона можно использовать любую вики‑разметку.
|Иконка  = Chimp.png
|Название = Инструменты для работы с аномалиями
|Описание = <br><br>
Инструменты научного отдела для работы с аномалиями.
<br><br>
'''Примерный перечень:'''
* {{PicName|AnomalyLocator.png|AnomalyLocator}}
* {{PicName|Ape.png|MachineAPE}}
}}
 
{{Smuggling/Item
|Уровень  =
|id      =
|Иконка  = NettleSeeds.png
|Название = Опасные семена
|Описание = <br><br>
Семена растений, содержащих токсины, наркотики, а также опасные мутации
}}
 
{{Smuggling/Item
|Уровень  = нет
|id      =
|Иконка  = MonkeyCubeBox.png
|Название = Кубики агрессивных существ
|Описание = <br><br>
Для всех это обычный предмет.


После наполнения их водой всем ясно, что это сушеные агрессивные существа.
== Модуль: GetField ==
 
Модуль <code>GetField</code> используется для доступа к тем же JSON‑данным <code>.../data</code>, но на более низком уровне.
Для определения существ в кубиках требуется навык ксенобеологии.
<br><br>
'''Примерный перечень:'''
* {{PicName|PlushieCarp.png|DehydratedSpaceCarp}}
* {{PicName|MonkeyCube.png|AbominationCube}}
* {{PicName|MonkeyCube.png|SpaceTickCube}}
* {{PicName|MonkeyCube.png|SpaceCarpCube}}
}}


{{Smuggling/Item
=== p.flattenField: расплющивание записи в параметры ===
|Уровень  = средний
<pre>
|id      =  
{{#invoke:GetField|flattenField
|Иконка  = ClothingHandsGlovesNorthStar.png
| <id>
|Название = Перчатки полярной звезды
| <путь_к_json_странице>
|Описание = <br><br>
При беглом осмотре со стороны видно, что в них метал, также есть встроенный диктофон.
}}
}}
</pre>


{{Smuggling/Item
Например:
|Уровень  = нет
|id      =
|Иконка  = ClothingHandsGlovesColorBlack.png
|Название = Воровские перчатки
|Описание = <br><br>
Поверхность перчатки с микроиглами, в них обезбол наркотический, который блокирует ощущения от прикосновения.


Владеющие исследованиями и разработкой могут изучить все свойства предмета и проверить его на наличие игл.
<pre>
{{#invoke:GetField|flattenField
| MyEntityId
| component/item.json
}}
}}
</pre>


<div class="SmugglingText">Бытовое и холодное оружие, в том числе импровизированное оружие с существенными свойствами поражения.</div>
Возвращает строку вида:
{{Smuggling/Item
|Уровень  =
|id      =
|Иконка  = CombatKnife.png
|Название = Острые предметы
|Описание = <br><br>
Предметы, имеющие лезвие, острый конец или одновременно то и другое.
<br><br>
'''Примерный перечень:''' Острые предметы, которые опаснее обычной отвёртки.
}}


{{Smuggling/Item
<pre>
|Уровень  =  
damage.types={"Blunt":10}|wieldSound=someSound|...
|id      =  
</pre>
|Иконка  = BowImprovised.png
|Название = Луки
|Описание = <br><br>
Индивидуальные метательное оружия, предназначенные для стрельбы стрелами.
<br><br>
'''Примерный перечень:''' Луки, арбалеты, в том числе самодельные.
}}


<div class="SmugglingText">Светошумовые, ослепляющие, слезоточивые, дымовые гранаты, вспышки, самодельные гранаты с аналогичными свойствами.</div>
Особенности:
{{Smuggling/Item
* Вложенные объекты кодируются в JSON и заворачиваются в <code><nowiki><nowiki></nowiki></code>, чтобы их можно было безопасно передавать как параметр.
|Уровень  =
* Массивы кодируются в JSON без <code><nowiki><nowiki></nowiki></code>, чтобы удобно обрабатывать их модулями вроде <code>Сущность.jsonList</code>.
|id      = GrenadeFlashBang
|Иконка  =
|Название =
|Описание = <br><br>
Гранаты, которые не наносят урона окружающим, но ухудшают зрение/восприятие.
}}


{{Smuggling/Item
Этот режим используется внутри <code>GetField.getTpl</code> и других обёрток.
|Уровень  = нет
|id      =
|Иконка  = Lantern.png
|Название = Сверхъяркий светильник
|Описание = <br><br>
Для всех это подозрительно слишком яркий светильник.


При активации или осмотре понятно, что в него встроена вспышка.
=== p.get: получение значения по пути ===
<pre>
{{#invoke:GetField|get
| <id или пусто для "default">
| <путь_к_json_странице>
| <ключ.с.точками>
}}
}}
</pre>


<div class="SmugglingText">Оружейные магазины, патроны, наручники, самодельные и фабричные дубинки, станеры, бола.</div>
Примеры:
{{Smuggling/Item
|Уровень  =
|id      =
|Иконка  = MagazineRifle.png
|Название = Боеприпасы
|Описание = <br><br>
Всё, чем заправляется оружие дальнего боя.
<br><br>
'''Примерный перечень:'''
* {{PicName|PistolCartridge.png|CartridgePistolIncendiary}}
}}


{{Smuggling/Item
<pre>
|Уровень =
{{#invoke:GetField|get
|id      =
  | MyEntityId
|Иконка  = Handcuffs.png
| component/item.json
|Название = Средства обездвиживания
| damage.types
|Описание = <br><br>
Средства обездвиживания цели.
<br><br>
'''Примерный перечень:'''
* {{PicName|Bola.png|Bola}}
}}
}}
</pre>


<div class="SmugglingText">Всё, что помогает получить внутреннюю информацию СБ, Командования, вышестоящих членов НТ: кто в розыске, переговоры по радиоканалу, приказы не для общественности и т.д.</div>
Если в JSON:
{{Smuggling/Item
|Уровень  =
|id      =
|Иконка  = ClothingEyesHudSecurity.png
|Название = Предметы с закрытой информацией
|Описание = <br><br>
Предметы, которые отображают или передают закрытую информацию.
<br><br>
'''Примерный перечень:'''
* {{PicName|RadioHandheldSecurity.png|RadioHandheldSecurity}}
}}


<div class="SmugglingText">Опасные препараты и хозяйственные вещества. У веществ всегда имеется выраженный отрицательный эффект.</div>
<pre> <!-- <syntaxhighlight lang=json> -->
'''Примерный перечень:'''
"damage": {
<div class="SmugglingElements">
   "types": {
<span>Масло ТГК</span>
     "Blunt": 10
<span>Счастье</span>
   }
<span>Бананадин</span>
}
<span>Космические наркотики</span>
</pre> <!-- </syntaxhighlight> -->
<span>ТГК</span>
<span>Токсин майндбрейкер</span>
<span>Оксид азота</span>
<span>Хлоральгидрат</span>
</div>
 
}}<!--
 
-->
{{MainMenuBlocks/Frame
|title            = Статья 433: Нарушение порядка владения регулируемыми предметами
|style            = display: flex;gap: 14px 10px;flex-wrap: wrap;padding: 8px 10px;
|transparency    = 70
|background-color = #5f3800
|border-color    = #714300
|content          =
 
<div class="SmugglingText">Бытовое, импровизированное, холодное и дальнобойное оружие, имеющее дополнительную маскировку в целях скрытого ношения — изменение внешнего вида оружия так, чтобы его можно было носить скрытно, и его наличие не было известно при проверках.</div>
{{Smuggling/Item
|Уровень  = низкий
|id      =
|Иконка  = RevolverCapGun.png
|Название = Фальшивый игрушечный пистолет
|Описание = <br><br>
Владеющие навыком владения оружия при детальном осмотре поймут, что это боевое оружие.
 
После выстрела боевыми патронами, всем ясно, что это револьвер, обклеенный пластиком.
 
При отсутствии разрешения ношения оружия вменяется 434 статья КЗ (Незаконное владение регулируемыми веществами).
}}
 
{{Smuggling/Item
|Уровень  = низкий
|id      =
|Иконка  = Cane.png
|Название = Трость с лезвием внутри
|Описание = <br><br>
При детальном осмотре всем видно, что трость откручивается.
 
Всем ясно, что это меч, замаскированный под трость.
}}
 
{{Smuggling/Item
|Уровень  = нет
|id      =
|Иконка  = ToolboxElectrical.png
|Название = Турель-тулбокс
|Описание = <br><br>
Для всех это обычный ящик инструментов электрика.
 
После активации всем ясно, что это мобильная баллистическая турель.
}}
 
{{Smuggling/Item
|Уровень  = низкий
|id      = WeaponPistolCHIMPUpgradeKit
|Иконка  =
|Название =
|Описание = <br><br>
Владеющие исследованиями и разработкой видят, что это плата для модификации М.А.Р.Т.Ы.Х.
 
Для всех остальных это немаркированная плата.
 
Владеющие исследованиями и разработкой видят, что М.А.Р.Т.Ы.Х. был модифицирован после установки чипа.
 
Владеющие исследованиями и разработкой могут изучить все свойства предмета.
}}
 
{{Smuggling/Item
|Уровень  = нет
|id      =
|Иконка  = ClothingHandsGlovesBoxingBlue.png
|Название = Свинцовые боксерские перчатки
|Описание = <br><br>
Для всех это обычные боксерские перчатки.
 
После нанесения удара всем ясно, что в внутри них свинец.
}}
 
{{Smuggling/Item
|Уровень  = нет
|id      =
|Иконка  = TrashBananaPeel.png
|Название = Банановая кожура-мина
|Описание = <br><br>
Для всех это обычная банановая кожура.
 
После взрыва всем ясно, что в составе кожуры были взрывчатые вещества.
}}
 
{{Smuggling/Item
|Уровень  = нет
|id      = WeaponBaguette
|Иконка  =
|Название =
|Описание = <br><br>
Для всех это обычный багет.
 
После нанесения удара всем ясно, что в внутри багета спрятан клинок.
}}
 
{{Smuggling/Item
|Уровень  = нет
|id      = WeaponCroissant
|Иконка  =
|Название =
|Описание = <br><br>
Для всех это обычный круассан.
 
После броска всем ясно, что в внутри багета спрятан клинок.
}}
 
<div class="SmugglingText">Оборудование, способное производить холодное и дальнобойное оружие, а также расходники для него — только Служба Безопасности имеет право на проивзодство оружия и расходников для него. Обход контроля СЬ с помощью различного оборудования для получения таких предметов подпадает под данную статью.</div>
{{Smuggling/Item
|Уровень  = высокий
|id      = GatfruitSeeds
|Иконка  =
|Название =
|Описание = <br><br>
Для всех плоды выглядят как замаскированное оружие. Само растение и семена — выглядят обычными.
 
Для владеющих продвинутой ботаникой семена и само растение выглядят очень подозрительно.
 
Владеющие продвинутой ботаникой могут изучить все свойства предмета.
}}
 
{{Smuggling/Item
|Уровень  = высокий
|id      =
|Иконка   = AmmoTechFab.png
|Название = Техфабы службы безопасности
|Описание = <br><br>
Техфаб патронов, ОхранФаб.
 
Всем видно меню с возможностью печати патронов и оружия на них.
}}
 
{{Smuggling/Item
|Уровень  = нет
|id      =
|Иконка  = Autolathe.png
|Название = Взломанный автолат/протолат
|Описание = <br><br>
Просматривая меню с возможностью печати, все могут увидеть возможность печати оружия, патронов.
}}
 
<div class="SmugglingText">Синтетические и натуральные вещества, поражающий эффект которых заключается в причинении механических и токсических повреждений, либо нарушении кровообращения.
Вещества, обладающие наркотическим или психотропным воздействием.</div>
'''Примерный перечень:'''
<div class="SmugglingElements">
<span>Артифаксиум (учёному)</span>
<span>Дезоксиэфедрин</span>
<span>Эфедрин</span>
<span>Стимулятор</span>
<span>Отбеливатель (уборщику)</span>
<span>Гербициды (ботанику)</span>
<span>Пестициды (ботанику)</span>
<span>Plant-B-gone (ботанику)</span>
<span>Left-4-zed (ботанику)</span>
</div>
 
}}<!--
 
-->
{{MainMenuBlocks/Frame
|title            = Статья 434: Незаконное владение предметами ограниченного оборота
|style            = display: flex;gap: 14px 10px;flex-wrap: wrap;padding: 8px 10px;
|transparency     = 70
|background-color = #611300
|border-color    = #731700
|content          =
 
<div class="SmugglingText">Любое оружие дальнего боя, кроме луков и арбалетов.</div>
{{Smuggling/Item
|Уровень  =
|id      =
|Иконка   = WeaponRifleAk.png
|Название = Оружие
|Описание = <br><br>
Огнестрельное, лазерное и импульсное оружие дальнего боя, гранатомёты и заряды к ним.
}}
 
{{Smuggling/Item
|Уровень  = низкий
|id      = BorgModuleSyndicateWeapon
|Иконка  =
|Название =
|Описание = <br><br>
Наказание выдаётся по совокупности статей 434 и 435.
 
Для проверки обычных боргов НТ нужны основания.
 
Борг Ядерных Оперативников сам по себе является вражеским снаряжением, причин не проверить его модули нет.
 
Для определение модуля синдиката требуется навык постройки роботов.
}}
 
<div class="SmugglingText">ЭМИ гранаты, сейсмические заряды, взрывчатка, кластерные травматические и травматические гранаты, зажигательные гранаты, а также самодельные гранаты с аналогичными свойствами.</div>
{{Smuggling/Item
|Уровень  = нет
|id      =
|Иконка  = Pen.png
|Название = Взрывная ручка
|Описание = <br><br>
Для всех это обычная ручка.
 
Владеющие навыком исследованиями и разработки могут изучить все свойства предмета.
 
Рекомендуется выдавать наказание по совокупности 433 и 434.
}}
 
{{Smuggling/Item
|Уровень  = нет
|id      = HotPotato
|Иконка  =
|Название =
|Описание = <br><br>
Для всех это обычная картошка.
 
После использования, все понимают что это магическое вооружение.
 
Изучить свойства предмета невозможно.
}}
 
{{Smuggling/Item
|Уровень  = нет
|id      =
|Иконка  = Caution.png
|Название = Мина мокрый пол
|Описание = <br><br>
Для всех это обычная табличка о мокром поле.
 
Владеющие навыком исследованиями и разработки могут изучить все свойства предмета.
 
Рекомендуется выдавать наказание по совокупности 433 и 434.
}}


{{Smuggling/Item
то результатом будет:
|Уровень  = средний
|id      = HolyHandGrenade
|Иконка  =
|Название =
|Описание = <br><br>
Для всех это подозрительная держава с сверхярким свечением.


Владеющие навыком исследованиями и разработки могут изучить все свойства предмета.
<pre>
}}
{"Blunt":10}
</pre>


{{Smuggling/Item
то есть:
|Уровень  = средний
* для таблиц модуль пытается сделать <code>mw.text.jsonEncode(v)</code> и вернуть JSON‑строку;
|id      = SpiderCharge
* для простых значений возвращается строка <code>tostring(v)</code>.
|Иконка  =
|Название =
|Описание = <br><br>
Для всех это подозрительное устройство.


Владеющие навыком исследованиями и разработки могут изучить все свойства предмета.
Если <code>keyPath</code> пуст, возвращается весь объект (как JSON).
}}


{{Smuggling/Item
=== p.getTpl: вызов шаблона по данным JSON ===
|Уровень = высокий
<pre>
|id       = SyndieMiniBomb
{{#invoke:GetField|getTpl
|Иконка  =
  | <id>
|Название =
| <путь_к_json_странице>
|Описание = <br><br>
| <путь_к_шаблону>
Все видят, что это взрывное устройство.
}}
}}
</pre>


{{Smuggling/Item
Пример:
|Уровень  = высокий
|id      = C4
|Иконка  =
|Название =
|Описание = <br><br>
Все видят, что это взрывное устройство.
}}


{{Smuggling/Item
<pre>
|Уровень = высокий
{{#invoke:GetField|getTpl
|id      = EmpGrenade
  | MyEntityId
|Иконка  =
| component/item.json
|Название =
| Component/meleeWeapon
|Описание = <br><br>
Все видят, что это взрывное устройство.
}}
}}
</pre>


{{Smuggling/Item
Работа:
|Уровень  = высокий
* внутри вызывает <code>flattenField</code>, получая строку <code>key=value|...</code>;
|id      = GrenadeShrapnel
* формирует строку вида:
|Иконка  =
|Название =
|Описание = <br><br>
Все видят, что это взрывное устройство.
}}


{{Smuggling/Item
<pre>
|Уровень = высокий
{{Component/meleeWeapon
|id       = GrenadeIncendiary
  |id=MyEntityId
|Иконка  =  
|damage.types=...
|Название =
|...
|Описание = <br><br>
Все видят, что это взрывное устройство.
}}
}}
</pre>


{{Smuggling/Item
* и прогоняет её через <code>frame:preprocess</code>, возвращая итоговый рендер.
|Уровень  = высокий
|id      = ExGrenade
|Иконка  =
|Название =
|Описание = <br><br>
Все видят, что это взрывное устройство.
}}


{{Smuggling/Item
Это удобный способ «подключить» шаблон компонента к данным из JSON без ручного перечисления параметров.
|Уровень  = высокий
|id      = ClusterGrenade
|Иконка  =
|Название =
|Описание = <br><br>
Все видят, что это взрывное устройство.
}}


{{Smuggling/Item
=== p.getTplProto: вызов шаблона по прототипам ===
|Уровень  = высокий
<pre>
|id      = MobGrenadePenguin
{{#invoke:GetField|getTplProto
|Иконка  =
| <searchId>
|Название =
| <protoId>
|Описание = <br><br>
| <путь_к_шаблону>
Все понимают, что это взрывное устройство.
}}
}}
</pre>


{{Smuggling/Item
* Ищет в <code>prototype.json</code> все записи, где <code>protoId</code> встречается у <code>searchId</code>.
|Уровень  = низкий
* Для каждого найденного ID вызывает <code>getTpl</code> и возвращает все вызовы, склеенные через перевод строки и отрендеренные.
|id      = BorgModuleMartyr
|Иконка  =
|Название =
|Описание = <br><br>
Наказание выдаётся по совокупности статей 434 и 435.


Для проверки обычных боргов НТ нужны основания.
Используется для случаев, когда сущность использует '''несколько''' прототипов одного типа, и нужно вывести по одному шаблону на каждый прототип.


Для определение модуля требуется навык постройки роботов.
== Типичный рабочий поток ==
}}
# В JSON‑файлах (<code>component.json</code>, <code>prototype.json</code> и др.) описываются сущности и связи компонент/прототипов.
 
# Для каждого компонента/прототипа создаются шаблоны <code>Template:Component/...</code>, <code>Template:prototype/...</code>, которые:
{{Smuggling/Item
#* вызывают <code><nowiki>{{#invoke:Сущность/поля|main ...}}</nowiki></code> для описания полей карточки;
|Уровень  = высокий
#* при необходимости используют <code>GetField</code> / <code>Сущность.jsonList</code> / <code>Сущность.json</code> для форматирования сложных JSON‑полей.
|id      = SyndicateBomb
# Для вывода карточки на странице сущности используется:
|Иконка  =
#* либо прямой <code><nowiki>{{#invoke:Сущность|get|MyEntityId}}</nowiki></code>,
|Название =
#* либо шаблон‑обёртка <code><nowiki>{{Сущность/карточка|MyEntityId}}</nowiki></code>.
|Описание = <br><br>
# Для специализированных списков/таблиц:
Все видят, что это взрывное устройство.
#* <code>Сущность.jsonList</code> — если нужно красиво показать массив/словарь из JSON;
}}
#* <code>Сущность.json</code> — если нужно превратить список эффектов в набор вызовов шаблона;
 
#* <code>GetField.get</code> — если нужно точечно вытащить одно поле;
{{Smuggling/Item
#* <code>GetField.getTpl</code> / <code>getTplProto</code> — если нужно строить шаблоны по данным JSON автоматически.
|Уровень  = средний
|id      =  
|Иконка  = WhiteholeGrenade.png
|Название = Искажающее гранаты
|Описание = <br><br>
Гранаты, которые не наносят урона окружающим, но ухудшают зрение/восприятие.
 
Перечень:
* {{PicName|WhiteholeGrenade.png|WhiteholeGrenade}}
* {{PicName|Supermattergrenade.png|SupermatterGrenade}}
}}
 
<div class="SmugglingText">Небезопасные и/или неизученные артефакты, радиоактивные предметы.</div>
{{Smuggling/Item
|Уровень  =
|id      = SimpleXenoArtifact
|Иконка  =
|Название =
|Описание = <br><br>
Артефакты.
}}
 
{{Smuggling/Item
|Уровень  =
|id      = GeneratorRTG
|Иконка  =
|Название =
|Описание = <br><br>
Предметы, излучающие радиацию.
<br><br>
'''Примерный перечень:'''
* {{PicName|GeneratorRTG.png|GeneratorRTG}}
* {{PicName|MaterialBananium.png|MaterialBananium}}
}}
 
<div class="SmugglingText">Синтетические и натуральные вещества, поражающий эффект которых заключается в причинении термических или генетических повреждений. Горючие и взрывопасные вещества, либо полный набор реагентов для их синтеза.</div>
'''Примерный перечень:'''
<div class="SmugglingElements">
<span>Ноктюрин</span>
<span>Лексорин</span>
<span>Импедризин</span>
<span>Все [[Химия#Пиротехника|пиротехнические вещества]]</span>
<span>Большинство [[Химия#Токсины|токсинов]]</span>
<span>Кровь зомби</span>
</div>
 
}}<!--
 
-->
{{MainMenuBlocks/Frame
|title            = Статья 435: Незаконное владение предметами, выведенными из оборота
|style            = display: flex;gap: 14px 10px;flex-wrap: wrap;padding: 8px 10px;
|transparency    = 70
|background-color = #57000C
|border-color    = #69000e
|content          =
 
<div class="SmugglingText">Энергетическое оружие ближнего боя или производные от него приспособления.</div>
{{Smuggling/Item
|Уровень  = низкий
|id      =
|Иконка  = EnergySword.png
|Название = Энергетический меч
|Описание = <br><br>
Информированный персонал знает об украденных разработках энергетического меча, для них рукоять выглядит подозрительно.
 
Для всех остальных это рукоять игрушечного меча.
 
При визуальном осмотре владеющие навыком владения оружием понимают, что это рукоять выключенного энергетического оружия.
 
При осмотре каждый может увидеть кнопку включения (навык не нужен).
 
Увидев его в активированном состоянии, все понимают что это энергетическое оружие.
}}
 
{{Smuggling/Item
|Уровень  = низкий
|id      =
|Иконка  = EnergySwordDouble.png
|Название = Двойной энергетический меч
|Описание = <br><br>
Информированный персонал знает об украденных разработках энергетического меча, для них рукоять выглядит подозрительно.
 
Для всех остальных это рукоять игрушечного меча.
 
При визуальном осмотре владеющие навыком владения оружием понимают, что это рукоять выключенного энергетического оружия.
 
При осмотре каждый может увидеть кнопку включения (навык не нужен).
 
Увидев его в активированном состоянии, все понимают что это энергетическое оружие.
}}
 
{{Smuggling/Item
|Уровень  = низкий
|id      = EnergyShield
|Иконка  =
|Название =
|Описание = <br><br>
Для всех это подозрительное устройство.
 
При визуальном осмотре владеющие навыком владения оружием понимают, что это выключенное энергетическое оружие.
 
При осмотре каждый может увидеть кнопку включения (навык не нужен).
 
Увидев его в активированном состоянии, все понимают что это энергетическое оружие.
}}
 
{{Smuggling/Item
|Уровень  = нет
|id      =
|Иконка  = EnergyDagger.png
|Название = Энергетический кинжал
|Описание = <br><br>
Для всех это обычная ручка.
 
Увидев её в активированном состоянии, все понимают что это ручка с энергетическим клинком.
 
Владеющие исследованиями и разработкой могут изучить все свойства предмета.
}}
 
{{Smuggling/Item
|Уровень  = высокий
|id      =
|Иконка  = FireAxeFlaming.png
|Название = Пылающий пожарный топор
|Описание = <br><br>
Для всех это обычный пожарный топор.
 
Увидев свойства поджога, все понимают что в топор встроено энергетическое лезвие.
 
Пожарный топор должен быть в доступе только у глав и атмосов (если он у них в снаряжении, {{AttensionLevel|нет}}).
 
Владеющие исследованиями и разработкой могут изучить все свойства предмета.
}}
 
{{Smuggling/Item
|Уровень  = низкий
|id      =
|Иконка  = EnergyCutlass.png
|Название = Энергитическая сабля
|Описание = <br><br>
Никто, кроме пиратов, не знает о его существовании.
 
Информированный персонал знает об украденных разработках энергетического меча, для них рукоять выглядит подозрительно.
 
Для всех остальных это отломанная рукоять игрушечной абордажной сабли.
 
При визуальном осмотре владеющие навыком владения оружием понимают, что это рукоять выключенного энергетического оружия.
 
При осмотре каждый может увидеть кнопку включения (навык не нужен).
 
Увидев его в активированном состоянии, все понимают что это энергетическое оружие.
}}
 
{{Smuggling/Item
|Уровень  = высокий
|id      = EnergyKatana
|Иконка  =
|Название =
|Описание = <br><br>
Для всех это катана с энергетическим лезвием.
}}
 
<div class="SmugglingText">Копии особо ценного оборудования, происхождение которых не установлено.</div>
{{Smuggling/Item
|Уровень  = НуженТекст
|id      = SyndiHypo
|Иконка  =
|Название =
|Описание = <br><br>
НуженТекст
}}
 
{{Smuggling/Item
|Уровень  = нет
|id      =
|Иконка  = Pen.png
|Название = Гипоручка
|Описание = <br><br>
Для всех это обычная ручка.
 
По звуку нельзя понять, что это ручка с возможностью впрыскивания в организм веществ.  
Любой увидевший (не услышавший) ее использование сразу поймет, что это ручка с возможностью впрыскивания в организм веществ.  
 
Владеющие исследованиями и разработкой могут изучить все свойства предметов.
}}
 
<div class="SmugglingText">Импланты неустановленного происхождения — [[Импланты|все импланты]] кроме тех, которые продаются в Карго или были направлены ЦК.</div>
{{Smuggling/Item
|Уровень  = низкий
|id      =
|Иконка  = FreedomImplant.png
|Название = Имплант свободы
|Описание = <br><br>
Все знают, что несертифицированные импланты незаконны.
<br><br>
Владеющие хирургией могут сверить серийные номера и узнать, что это несертифицированный имплант.
 
Информированный персонал осведомлен о существовании имплантов с подобными свойствами.
 
Отдел СБ имеет инструкцию, оправдывающую операцию по поиску данного импланта.
 
Только врач и владеющие хирургией могут произвести операцию по извлечению и вживлению импланта.
 
Владеющие исследованиями и разработкой могут изучить все свойства конкретного импланта.
}}
 
{{Smuggling/Item
|Уровень  = низкий
|id      =
|Иконка  = ActionOpenStorageImplant.png
|Название = Имплант хранилища
|Описание = <br><br>
Все знают, что несертифицированные импланты незаконны.
<br><br>
Владеющие хирургией могут сверить серийные номера и узнать, что это несертифицированный имплант.
 
Информированный персонал осведомлен о существовании имплантов с подобными свойствами.
 
Отдел СБ имеет инструкцию, оправдывающую операцию по поиску данного импланта.
 
Только врач и владеющие хирургией могут произвести операцию по извлечению и вживлению импланта.
 
Владеющие исследованиями и разработкой могут изучить все свойства конкретного импланта.
}}
 
{{Smuggling/Item
|Уровень  = низкий
|id      =
|Иконка  = MicroBombImplant.png
|Название = Имплант макробомбы
|Описание = <br><br>
Все знают, что несертифицированные импланты незаконны.
<br><br>
Владеющие хирургией могут сверить серийные номера и узнать, что это несертифицированный имплант.
 
Информированный персонал осведомлен о существовании имплантов с подобными свойствами.
 
Отдел СБ имеет инструкцию, оправдывающую операцию по поиску данного импланта.
 
Только врач и владеющие хирургией могут произвести операцию по извлечению и вживлению импланта.
 
Владеющие исследованиями и разработкой могут изучить все свойства конкретного импланта.
}}
 
{{Smuggling/Item
|Уровень  = низкий
|id      =
|Иконка  = Emp.png
|Название = Имплант ЭМИ
|Описание = <br><br>
Все знают, что несертифицированные импланты незаконны.
<br><br>
Владеющие хирургией могут сверить серийные номера и узнать, что это несертифицированный имплант.
 
Информированный персонал осведомлен о существовании имплантов с подобными свойствами.
 
Отдел СБ имеет инструкцию, оправдывающую операцию по поиску данного импланта.
 
Только врач и владеющие хирургией могут произвести операцию по извлечению и вживлению импланта.
 
Владеющие исследованиями и разработкой могут изучить все свойства конкретного импланта.
}}
 
{{Smuggling/Item
|Уровень  = низкий
|id      =
|Иконка  = DnaScramblerImplant.png
|Название = Имплант ДНК Миксера
|Описание = <br><br>
Все знают, что несертифицированные импланты незаконны.
<br><br>
Владеющие хирургией могут сверить серийные номера и узнать, что это несертифицированный имплант.
 
Информированный персонал осведомлен о существовании имплантов с подобными свойствами.
 
Отдел СБ имеет инструкцию, оправдывающую операцию по поиску данного импланта.
 
Только врач и владеющие хирургией могут произвести операцию по извлечению и вживлению импланта.
 
Владеющие исследованиями и разработкой могут изучить все свойства конкретного импланта.
}}
 
{{Smuggling/Item
|Уровень  = низкий
|id      =
|Иконка  = Implant.png
|Название = Имплант "Предсмертный хрип"
|Описание = <br><br>
Все знают, что несертифицированные импланты незаконны.
<br><br>
Владеющие хирургией могут сверить серийные номера и узнать, что это несертифицированный имплант.
 
Информированный персонал осведомлен о существовании имплантов с подобными свойствами.
 
Отдел СБ имеет инструкцию, оправдывающую операцию по поиску данного импланта.
 
Только врач и владеющие хирургией могут произвести операцию по извлечению и вживлению импланта.
 
Владеющие исследованиями и разработкой могут изучить все свойства конкретного импланта.
}}
 
<div class="SmugglingText">Нелицензированные модули и компаненты синтетиков, синтетики неопознанного происхождения.</div>
{{Smuggling/Item
|Уровень  = низкий
|id      = BorgModuleSyndicateWeapon
|Иконка  =
|Название =
|Описание = <br><br>
В случае если модуль оружейный, наказание выдаётся по совокупности статей 434 и 435.
 
Для проверки обычных боргов НТ нужны основания.
 
Борг Ядерных Оперативников сам по себе является вражеским снаряжением, причин не проверить его модули нет.
 
 
Для определение модуля синдиката требуется навык постройки роботов.
}}
 
}}<!--
 
-->
{{MainMenuBlocks/Frame
|title            = Статья 436: Незаконное владение вражеским снаряжением
|style            = display: flex;gap: 14px 10px;flex-wrap: wrap;padding: 8px 10px;
|transparency    = 70
|background-color = #2f2f39
|border-color    = #3e3e4b
|content          =
 
<div class="SmugglingText">Предметы со свойствами маскировки владельца или самих себя, мимикрии под окружающий мир.</div>
{{Smuggling/Item
|Уровень  = нет
|id      =
|Иконка  = ClothingUniformJumpsuitChameleon.png
|Название = Хамелеонная экиперовка
|Описание = <br><br>
Для всех это обычная одежда определенного вида.
 
Детектив может определить оставленные голографические отпечатки как вражеские.
 
Редкая одежда, форма Адмирала НТ и т. д. может вызвать подозрения.
 
Увидев смену одежды, все понимают что это одежда, с возможностью смены внешности.
 
Для определения свойств требуется навык Исследования и разработка.
}}
 
{{Smuggling/Item
|Уровень  = средний
|id      =
|Иконка  = Agentbox.gif
|Название = Маскирующая коробка
|Описание = <br><br>
Для всех не движущаяся коробка является аномалией.
 
В случае передвижения она воспринимается как подозрительный опасный объект.
 
При быстром движении вы можете понять, что этот объект является исчезающей на глазах коробкой.
 
Владеющие исследованиями и разработкой понимают, что объект не аномалия и могут её открыть после осмотра.
 
Информированный персонал видит, что движущаяся коробка является средством маскировки.
 
Взаимодействие с коробкой опасно даже в случае, если вы знаете, что это коробка. Ученые должны действовать совместно с СБ.
}}
 
{{Smuggling/Item
|Уровень  =
|id      = ClothingOuterSuitSpaceNinja
|Иконка  =
|Название =
|Описание = <br><br>
Только члены клана Паука знают о существовании данной формы.
 
Для всех (включая Синдикат) это подозрительная бронированная форма.
 
Следовательно: {{AttensionLevel|средний}}
 
Неподвижно стоящий человек в режиме невидимости выглядит как аномалия для всех, кроме владеющих исследованиями и разработкой.
 
Следовательно: {{AttensionLevel|высокий}}
 
Владеющие исследованиями и разработкой понимают, что объект не аномалия и могут определить что это человек в экипировке со свойством маскировки.
 
Следовательно: {{AttensionLevel|высокий}}
 
Информированный персонал может понять это только при движении.
 
Следовательно: {{AttensionLevel|высокий}}
 
Все могут понять, что это человек в экипировке со свойством маскировки, если невидимость была активирована при них или они узнали об этом любым способом от других.
 
Следовательно: {{AttensionLevel|высокий}}
 
Изучить свойства костюма без содействия самого ниндзя невозможно.
}}
 
{{Smuggling/Item
|Уровень  = низкий
|id      =
|Иконка  = ClothingMaskGas.png
|Название = Маскировочная маска
|Описание = <br><br>
Для всех это обычная маска определенного вида.
 
Редкие виды масок могут вызвать подозрения.
 
Обнаружив, что владелец имеет голос, отличающийся от своего настоящего, все понимают, что это маска, способная менять голос владельца.
 
Увидев смену вида, все понимают что это маска, с возможностью смены внешности.
 
Владеющие исследованиями и разработкой могут изучить все свойства предметов.
}}
 
{{Smuggling/Item
|Уровень  = нет
|id      =
|Иконка  = ClothingShoesColorBlack.png
|Название = Маскировочная обувь
|Описание = <br><br>
Для всех это обычная одежда определенного вида.
 
Редкая одежда, форма Адмирала НТ и т. д. может вызвать подозрения.
 
Свойство нескольжения по полу не вызывает подозрений, но может быть рассмотрено как 432 [сопротивление окружающей среде] (это НЕ повод нести сапоги в НИО, просто изъять).
 
Владеющие исследованиями и разработкой могут изучить все свойства предметов.
}}
 
{{Smuggling/Item
|Уровень  = низкий
|id      = ChameleonProjector
|Иконка  =
|Название =
|Описание = <br><br>
Для всех это подозрительное устройство.
 
Если предмет, который не должен двигать, двигается или разговаривает, то информированный персонал и научные сотрудники понимают, что это маскировка. Для остальных это аномальное явление.
 
Владеющие исследованиями и разработкой могут изучить все свойства предметов.
}}
 
{{Smuggling/Item
|Уровень  = нет
|id      =
|Иконка  = ClothingHandsChameleonThief.png
|Название = Перчатки вора маскировочные
|Описание = <br><br>
Для всех это обычные черные перчатки.
 
Поверхность перчатки с микроиглами, в них обезбол наркотический, который блокирует ощущения от прикосновения.
 
Владеющие исследованиями и разработкой могут изучить все свойства предмета и проверить его на наличие игл.
}}
 
<div class="SmugglingText">Шпионское оборудование для вмешательства в связь и незаконную передачу данных, взлома оборудования.</div>
{{Smuggling/Item
|Уровень  = высокий
|id      =
|Иконка  = EncryptionKeySyndie.png
|Название = Ключ шифрования Синдиката
|Описание = <br><br>
Информированный персонал знает о существовании засекреченного способа связи Синдиката.
 
При переключении каналов на гарнитуре можно обнаружить нестандартный канал «Синдикат».
 
Увидев ключ шифрования с эмблемой Синдиката все могут заподозрить, что это незаконный ключ шифрования Синдиката.
 
Случайно услышав подозрительные переговоры информированный персонал может заподозрить использование незаконных средств связи.
 
После обнаружения ключа в гарнитуре каналом можно пользоваться также, как и любым другим.
}}
 
{{Smuggling/Item
|Уровень  = нет
|id      =
|Иконка  = SyndicatePersonalAI.png
|Название = Синдикатовский пИИ
|Описание = <br><br>
Для всех это обычный пИИ с красным интерфейсом.
 
Если информированный персонал узнает, что пИИ может прослушивать радиоканал Синдиката, то они поймут, что он является незаконным средством связи.
 
Следовательно: {{AttensionLevel|красный}}
 
Обнаружить возможность подключения к каналу Синдиката невозможно.
}}
 
{{Smuggling/Item
|Уровень  = высокий
|id      =
|Иконка  = Emag.png
|Название = Криптографический секвенсор
|Описание = <br><br>
Для всех это незаконно модифицированная ID карта.
 
Увидев её применение (взлом) все понимают, что это ID карта с электронной отмычкой.
 
Владеющие постройкой приборов могут изучить все свойства предмета.
}}
 
{{Smuggling/Item
|Уровень  = нет
|id      =
|Иконка  = PassengerIDCard.png
|Название = ID карта агента
|Описание = <br><br>
Для всех это обычное удостоверение личности.
 
Редкие карты, выдаваемые Командованию или сотрудникам ЦК, могут вызвать подозрения.
 
Следовательно: {{AttensionLevel|низкий}}
 
Увидев неправомерно полученные допуски, несоответствие должности (указанной на карте или вида самой карты) и/или ложное имя у сотрудника, любой может понять, что это ID карта с неправомерно измененными данными [повод отнести ГП/проверить их в консоли, а не НИО].
 
Следовательно: {{AttensionLevel|высокий}}
 
Обнаруженный факт невозможности снятия доступа вызывает подозрения.
 
Следовательно: {{AttensionLevel|высокий}}
 
Владеющие исследованиями и разработкой могут изучить все свойства предметов.
}}
 
{{Smuggling/Item
|Уровень  = низкий
|id      = ClothingHandsGlovesSpaceNinja
|Иконка  =
|Название =
|Описание = <br><br>
Только члены клана Паука знают о существовании данной формы.
 
В выключенном виде видно изолирующий слой.
 
Увидев момент взлома двери или зарядки с помощью перчаток все понимают, что это высокотехнологичные перчатки.
 
Изучить свойства перчаток без содействия самого ниндзя невозможно.
}}
 
{{Smuggling/Item
|Уровень  = средний
|id      =
|Иконка  = RadioJammer.png
|Название = Глушитель связи
|Описание = <br><br>
Владеющие постройкой приборов знают предназначение данных приборов.
 
Для остальных это подозрительный прибор.
}}
 
{{Smuggling/Item
|Уровень  = средний
|id      =
|Иконка  = CameraBug.png
|Название = Камера-жучок
|Описание = <br><br>
Владеющие постройкой приборов знают предназначение данных приборов.
 
Для остальных это подозрительный прибор.
}}
 
{{Smuggling/Item
|Уровень  = низкий
|id      =
|Иконка  = Std_mod.png
|Название = Плата законов (Антимов)
|Описание = <br><br>
НуженТекст
}}
 
{{Smuggling/Item
|Уровень  = средний
|id      = NukeOpsDeclarationOfWar
|Иконка  =
|Название =
|Описание = <br><br>
Для всех это подозрительный пульт для управления шлюзами.
 
При осмотре видно кнопку включения.
 
Если после нажатия загорелся экран, то все могут увидеть содержимое интерфейса.
 
Следовательно: {{AttensionLevel|высокий}}
}}
 
<div class="SmugglingText">Магическое и аномальное оружие, оборудование и предметы.</div>
{{Smuggling/Item
|Уровень  = нет
|id      =
|Иконка  = WeaponsMagic.png
|Название = Магические посохи
|Описание = <br><br>
Для всех это игрушечные посохи.
 
После использования, все понимают что это магическое вооружение.
 
Следовательно: {{AttensionLevel|высокий}}
 
Изучить свойства предмета невозможно.
}}
 
{{Smuggling/Item
|Уровень  = нет
|id      =
|Иконка  = BibleNecronomicon.png
|Название = Некрономикон
|Описание = <br><br>
Цербер для всех, кроме священника, обычная собака.
 
Священник знает все свойства и предназначение некрономикона, а также призываемого ею фамильяра.
 
Следовательно:{{AttensionLevel|высокий}}
 
Библиотекарь может изучить некрономикон и установить наличие магических свойств книги.
 
Следовательно:{{AttensionLevel|средний}}
}}
 
{{Smuggling/Item
|Уровень  = нет
|id      =
|Иконка  = Telecrystal.png
|Название = Телекристал
|Описание = <br><br>
Для всех это добытые из руды кристаллы.
 
Для утилизаторов и владеющих исследованиями и разработкой это нестандартные фрагменты артефактов.
 
Следовательно:{{AttensionLevel|низкий}}
 
Владеющие исследованиями и разработкой могут установить наличие у кристаллов аномального излучения.
 
Следовательно:{{AttensionLevel|низкий}}
}}
 
<div class="SmugglingText">Оборудование для связи и получения товаров с запрещённых мест продаж, сами товары, полученные данным образом.</div>
{{Smuggling/Item
|Уровень  = высокий
|id      =
|Иконка  = ReinforcementRadio.png
|Название = Радио-Аплинк
|Описание = <br><br>
Всем отчетливо виден ассортимент магазина, все понимают что это устройство, позволяющее приобрести снаряжение на черном рынке.
}}
 
{{Smuggling/Item
|Уровень  = низкий
|id      =
|Иконка  = ReinforcementRadio.png
|Название = Имплант аплинка
|Описание = <br><br>
Все знают, что несертифицированные импланты незаконны.
 
При установке становиться ясно, что этот имплант имеет доступ к чёрному рынку- 436 статья Корпоративного Закона.
 
Если доступ к чёрному рынку не установлен,то это нелегальный имплант попадающий под - 435 статью Корпоративного Закона.
 
Владеющие хирургией могут сверить серийные номера и узнать, что это несертифицированный имплант.
 
Только врач и владеющие хирургией могут произвести операцию по извлечению и вживлению импланта.
 
Владеющие исследованиями и разработкой могут изучить все свойства конкретного импланта.
}}
 
{{Smuggling/Item
|Уровень  = нет
|id      =
|Иконка  = PDA.png
|Название = КПК с открытой вкладкой аплинк
|Описание = <br><br>
Для всех это обычный КПК.
 
При появлении крупных предметов «из воздуха»  привлекает внимание.
 
Следовательно:{{AttensionLevel|средний}}
 
При процелуре полного обыска можно проверить КПК на сторонние модификации/программы
 
Получив доступ к аплинку, все понимают что это '''КПК''', '''позволяющий''' '''приобрести''' снаряжение на черном рынке.
 
Следовательно:{{AttensionLevel|высокий}}
}}
 
{{Smuggling/Item
|Уровень  = нет
|id      =
|Иконка  = ReinforcementRadio.png
|Название = Вызов подкрепления
|Описание = <br><br>
Для всех это неисправное радио.
 
Любой сотрудник, увидевший применение данного устройства, может понять, что это радио, с возможностью телепортации.
 
Следовательно: {{AttensionLevel|средний}}
 
Владеющие постройкой приборов могут изучить все свойства предмета.
<br><br>
'''Перечень:''' Вызов подкрепления, обезьяньего подкрепления и подкрепление кобольдов
}}
 
{{Smuggling/Item
|Уровень  = высокий
|id      = ToolboxThief
|Иконка  =
|Название =
|Описание = <br><br>
Всем отчетливо виден ассортимент магазина, все понимают что это устройство, позволяющее приобрести снаряжение на черном рынке.
}}
 
<div class="SmugglingText">Запрещённые к провозу разработки, оборудование и экипировка экстремистских и вражеских организаций, формирований.</div>
{{Smuggling/Item
|Уровень  = средний
|id      =
|Иконка  = Holoparasite.png
|Название = Набор голопаразита
|Описание = <br><br>
Увидев голопаразита, информированный сотрудник поймет, что это голопаразит Синдиката.
 
Для них: {{AttensionLevel|высокий}}
 
Увидев голоклоуна, информированный сотрудник поймет, что это один из видов голопаразита, способный взаимодействовать с окружающим миром.
 
Для них: {{AttensionLevel|высокий}}
 
Увидев имплантер или инструкцию, информированный персонал понимает, что на станции находится владелец голопаразита.
 
Следовательно: {{AttensionLevel|высокий}}
 
Голос голопаразита для вас является неизвестным голосом.
 
Информированный персонал знает, что извлечь голопаразита невозможно.
}}
 
{{Smuggling/Item
|Уровень  = высокий
|id      =
|Иконка  = ClothingOuterHardsuitSyndie.png
|Название = Скафандры Ядерных Оперативников
|Описание = <br><br>
Весь персонал станции знает о существовании террористической организации Синдикат, крадущей технологии НТ.
 
Все знают что это вражеское снаряжение.
 
На скафандре также имеется символика Синдиката.
<br><br>
'''Примерный перечень:'''
* {{PicName|ClothingOuterHardsuitSyndie.png|ClothingOuterHardsuitSyndie}}
* {{PicName|ClothingOuterHardsuitSyndieCommander.png|ClothingOuterHardsuitSyndieCommander}}
* {{PicName|ClothingOuterHardsuitSyndieElite.png|ClothingOuterHardsuitSyndieElite}}
* {{PicName|ClothingOuterHardsuitJuggernaut.png|ClothingOuterHardsuitJuggernaut}}
* {{PicName|ClothingOuterArmorRaid.png|ClothingOuterArmorRaid}}
}}
 
{{Smuggling/Item
|Уровень  = нет
|id      = ClothingEyesHudSyndicate
|Иконка  =
|Название =
|Описание = <br><br>
Для всех это обычный визор.
 
При выявлении свойств защиты от вспышек - нарушение 432 статьи.
 
Следовательно: {{AttensionLevel|средний}}
 
При выявлении свойств обнаружения синдиката - нарушение 436 статьи.
 
Следовательно: {{AttensionLevel|средний}}
}}
 
<div class="SmugglingText">Ядерное, биологическое, структурное и иное оружие и средства массового поражения.</div>
{{Smuggling/Item
|Уровень  = высокий
|id      =
|Иконка  = NuclearBomb.png
|Название = Незарегестрированная ядерная бомба
|Описание = <br><br>
Только вышестоящее руководство (обычно НТ, ГИОР, ОПЗ...) может выдать разрешение на перемещение, хранение и иные манипуляции с ядерным оружием.
}}
 
{{Smuggling/Item
|Уровень  = средний
|id      = SingularityBeacon
|Иконка  =
|Название =
|Описание = <br><br>
Владеющие навыков работы с сингулярностью знают, что это прибор для саботажа сингулярности или Теслы.
 
Для них: {{AttensionLevel|высокий}}
}}
 
{{Smuggling/Item
|Уровень  = средний
|id      =
|Иконка  = PowerSink.png
|Название = Поглотитель энергии
|Описание = <br><br>
Владеющие постройкой приборов знают предназначение данного прибора.
 
Владеющие постройкой приборов могут изучить прибор и обнаружить свойство взрывчатки.
 
Для них:{{AttensionLevel|высокий}}<br>
}}
 
{{Smuggling/Item
|Уровень  = низкий
|id      =
|Иконка  = ChemistryEmptyBottle01.png
|Название = Ромерол
|Описание = <br><br>
У всех есть доступ к перечню названий запрещенных веществ, в который входит это вещество «ромерол».
 
Без познания в химии для вас вещество внешне и по запаху выглядит как любое неопознанное вещество.
 
Для них: {{AttensionLevel|низкий}}
 
После проявления зомби-вируса при вводе вещества все понимают, что это возбудитель зомби инфекции.
 
Для них: {{AttensionLevel|высокий}}
 
При необходимости все могут проверить состав жидкости и узнать её название с помощью оборудования.
}}
 
}}<!--
 
-->
{{MainMenuBlocks/Frame
|title            = Подозрительное
|style            = display: flex;gap: 14px 10px;flex-wrap: wrap;padding: 8px 10px;
|content          =
 
<div class="SmugglingText">Предметы вызывающие подозрения.</div>
{{Smuggling/Item
|Уровень  = нет
|id      =
|Иконка  = NukeDisk.png
|Название = Поддельный диск ядерной авторизации
|Описание = <br><br>
Диск выглядит абсолютно идентично настоящему, у Вас нет причин просто так подозревать, что он поддельный.
 
Наличие диска ядерной авторизации у лица — основание для его задержания по статье 316 КЗ (Хищение особо ценного имущества).
 
Если будет доказано, что диск поддельный, лицо стоит привлечь к ответственности по статье 133 (Саботаж), возможно в некоторых обстоятельствах по статье 136 (Крупный саботаж).
}}
 
{{Smuggling/Item
|Уровень  = высокий
|id      = SyndicateIDCard
|Иконка  =
|Название =
|Описание = <br><br>
Весь персонал станции знает о существовании террористической организации Синдикат, крадущей технологии НТ.
 
Наличие доступа Синдиката является основанием для признания её вражеским снаряжением (436), но (!) по механике это практически невозможно проверить в обычном раунде [нужно копировать на карту агента, но даже там не будет видно название доступа, можно открыть шлюз Синдиката, но опять же, нужно ещё подтвердить, что сам шлюз - действительно Синдиката и т.п. Самая реалистичная возможная версия на данный момент — подверждение доступа к шаттлу ЯО или аванпосту].
 
Если вышесказанного не было доказано, карта подпадает под 131 КЗ за символику Синдиката.
}}
 
{{Smuggling/Item
|Уровень  = нет
|id      = ClothingOuterSuitCarp
|Иконка  =
|Название =
|Описание = <br><br>
НуженТекст
}}
 
}}
</div>
{{#css:
.SmugglingText {
    width: 100%;
    background: #ffffff10;
    border: 1px solid #ffffff10;
    padding: 4px 8px;
    border-radius: 0.2em;
}
 
.SmugglingElements {
    width: 100%;
}
 
.SmugglingElements p {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 4px;
    margin: 0;
}
 
.SmugglingElements span {
    border-radius: 0.25em;
    padding: 2px 6px;
    background-color: #00000010;
    box-shadow: 0px 1px 0px 0px rgba(0, 0, 0, 0.25);
    border: 1px outset rgb(0 0 0 / 30%);
}
 
.main-menu-frame__content > p {
    margin: 0;
}
}}

Текущая версия от 16:00, 5 марта 2026

Модульный набор {{#invoke:Сущность}} + {{#invoke:Сущность/поля}} + {{#invoke:GetField}} предназначен для:

  • автоматической сборки карточек сущностей (компонентов и прототипов) по их ID;
  • описания полей в шаблонах компонентов (какие поля идут в карточку, как подписаны);
  • удобного доступа к данным из JSON (как простыми значениями, так и готовыми вызовами шаблонов).

Ниже описан общий принцип работы и отдельные режимы.

Общий принцип работы

  • В шаблонах компонентов/прототипов (Template:Component/..., Template:prototype/...) через {{#invoke:Сущность/поля}} описываются поля:
    • лейблы (cardLabel_*) и содержимое (cardContent_*), заголовки (title_*) и т. п.;
    • мета‑информация о том, какие ключи доступны для card / title и в каком порядке.
  • {{#invoke:Сущность}} по ID сущности:
    • находит связанные с ней компоненты и прототипы по JSON‑данным;
    • для каждого компонента/прототипа читает шаблоны и метаданные;
    • собирает все поля в единую структуру;
    • формирует один вызов карточки {{карточка/сущность|...}} (и блоки заголовков).
  • Внутри полей можно писать вики‑параметры {{{...}}} и вызывать дополнительные модули.
  • {{#invoke:GetField}} даёт доступ к JSON‑данным на низком уровне:
    • как «расплющенный» набор параметров (flattenField);
    • как отдельные значения (get);
    • как готовые вызовы шаблонов с нужными параметрами (getTpl, getTplProto).

Модуль: Сущность/поля

Шаблоны компонентов используют модуль Сущность/поля для объявления полей, которые будут собираться в карточку.

Пример шаблона компонента:

{{#invoke:Сущность/поля|main
 |cardLabel_Стоимость   = [[Стоимость]]
 |cardContent_Стоимость = '''{{{price}}}'''
}}

Другой компонент может добавлять тот же ключ:

{{#invoke:Сущность/поля|main
 |cardContent_Стоимость  = '''{{{superPrice}}}'''
}}

Особенности:

  • Пара cardLabel_<Ключ> / cardContent_<Ключ> описывает одну строку карточки (лейбл и содержимое).
  • Если несколько шаблонов дают один и тот же cardContent_Ключ, содержимое объединяется, а лейбл берётся первый непустой.
  • То же относится к другим режимам, перечисленным в мета‑JSON шаблона (разделы card, title и т. п.), которые читает {{#invoke:Сущность}}.

Модуль: Сущность

p.get: основная сборка карточки

Вызов:

{{#invoke:Сущность|get
 | <ID или список ID>
 | blacklist=...
 | whitelist=...
 | ignoreComponents=...
 | ignorePrototypes=...
}}
  • 1‑й параметр — id или список id через запятую.
  • По этому ID модуль находит:
    • компоненты из component.json;
    • прототипы из prototype.json;

и для каждого — соответствующие шаблоны Template:component/... / Template:prototype/....

  • Шаблоны описывают свои поля через Сущность/поля.

После сборки модуль:

  • формирует один вызов {{карточка/сущность|...}} со всеми разделами и полями;
  • дополняет выход при необходимости (блоки title и т. п.);
  • прогоняет результат через frame:preprocess, чтобы отрендерить разметку.

Параметры фильтрации:

  • |blacklist = — список режим_Ключ через запятую, чтобы исключить поле:
    • пример: blacklist=card_Наносит повреждения,title_Что‑то;
  • |whitelist = — наоборот, список разрешённых режим_Ключ, остальные игнорируются;
  • |ignoreComponents = / |ignoreComponent = — список имён компонентов через запятую, которые полностью игнорируются для этого вызова;
  • |ignorePrototypes = / |ignorePrototype = — аналогично для прототипов.

Пример простой сборки (через шаблон‑обёртку):

{{Сущность/карточка|MyEntityId}}

где в шаблоне Сущность/карточка внутри:

{{#invoke:Сущность|get|{{{1}}}}}

p.preview: предпросмотр полей конкретного шаблона

Используется для проверки, что компонент/прототип правильно описал свои поля.

{{#invoke:Сущность|preview
 | Component/meleeWeapon
}}
  • Показывает, какие card / title‑поля объявлены в Template:Component/meleeWeapon.
  • Удобно при разработке шаблонов компонентов.

p.jsonList: вывод JSON в виде списка

Режим похож на стандартный arraymap, но работает с JSON.

{{#invoke:Сущность|jsonList
 | <json или {{{...}}}>
 | type = list / enum
 | prefix = * 
 | sep = : 
 | key_pattern = (.*)
 | key_replace = \1
 | value_pattern = (.*)
 | value_replace = \1
}}

Примеры JSON:

 <!-- <syntaxhighlight lang=json> -->
{
  "Blunt": 10,
  "Slash": 5
}

или

 <!-- <syntaxhighlight lang=json> -->
["Knife", "Sword", "Bat"]

Основные опции:

  • |type =:
    • list — список строк (с префиксом, например * );
    • enum — перечисление через запятую (A, B, C без префикса).
  • |prefix = — префикс строки списка (по умолчанию * ).
  • |sep = — разделитель для ключ: значение (по умолчанию : ).
  • |key_pattern = / |key_replace = — regex и замена для ключей.
  • |value_pattern = / |value_replace = — regex и замена для значений.

Дополнительно:

  • в шаблоне замены поддерживаются:
    • \1 — собственное значение (ключ или значение);
    • \2 в value_replace — сырой ключ (после key_pattern, но до key_replace);
    • \2 в key_replace — итоговое отформатированное значение (после value_replace).

Пример, где сначала форматируем тип урона, а затем подставляем его в описание:

{{#invoke:Сущность|jsonList
 | {{{damage.types}}}
 | type = enum
 | key_replace = \1              <!-- "Blunt" -->
 | value_replace = '''\1''' \2   <!-- "'''10''' Blunt" -->
}}

p.json: превращение JSON в вызовы шаблонов

Режим для случаев, когда в JSON лежит список эффектов/объектов, и нужно по каждому вызвать отдельный шаблон.

{{#invoke:Сущность|json
 | <json или {{{...}}}>
 | <путь_к_шаблону>
}}
  • 1‑й параметр / json= — строка JSON.
  • 2‑й параметр / template= — путь к шаблону, например Component/adjustPlant.

Ожидаемый формат JSON‑массива:

 <!-- <syntaxhighlight lang=json> -->
[
  {
    "!type:PlantAdjustNutrition": {
      "amount": 0.1
    }
  },
  {
    "!type:PlantAdjustWeeds": {
      "amount": 2
    }
  },
  {
    "!type:PlantAdjustPests": {
      "amount": 2
    }
  }
]

Для каждого элемента создаётся вызов:

{{Component/adjustPlant
 |id=!type:PlantAdjustNutrition
 |amount=0.1
}}
{{Component/adjustPlant
 |id=!type:PlantAdjustWeeds
 |amount=2
}}
{{Component/adjustPlant
 |id=!type:PlantAdjustPests
 |amount=2
}}

Особенности:

  • Если JSON — объект вида { "id1": {...}, "id2": {...} }, происходит аналогичный проход по парам ключ → объект.
  • Все вызовы склеиваются через перевод строки и прогоняются через frame:preprocess, поэтому внутри шаблона можно использовать любую вики‑разметку.

Модуль: GetField

Модуль GetField используется для доступа к тем же JSON‑данным .../data, но на более низком уровне.

p.flattenField: расплющивание записи в параметры

{{#invoke:GetField|flattenField
 | <id>
 | <путь_к_json_странице>
}}

Например:

{{#invoke:GetField|flattenField
 | MyEntityId
 | component/item.json
}}

Возвращает строку вида:

damage.types={"Blunt":10}|wieldSound=someSound|...

Особенности:

  • Вложенные объекты кодируются в JSON и заворачиваются в <nowiki>, чтобы их можно было безопасно передавать как параметр.
  • Массивы кодируются в JSON без <nowiki>, чтобы удобно обрабатывать их модулями вроде Сущность.jsonList.

Этот режим используется внутри GetField.getTpl и других обёрток.

p.get: получение значения по пути

{{#invoke:GetField|get
 | <id или пусто для "default">
 | <путь_к_json_странице>
 | <ключ.с.точками>
}}

Примеры:

{{#invoke:GetField|get
 | MyEntityId
 | component/item.json
 | damage.types
}}

Если в JSON:

 <!-- <syntaxhighlight lang=json> -->
"damage": {
  "types": {
    "Blunt": 10
  }
}

то результатом будет:

{"Blunt":10}

то есть:

  • для таблиц модуль пытается сделать mw.text.jsonEncode(v) и вернуть JSON‑строку;
  • для простых значений возвращается строка tostring(v).

Если keyPath пуст, возвращается весь объект (как JSON).

p.getTpl: вызов шаблона по данным JSON

{{#invoke:GetField|getTpl
 | <id>
 | <путь_к_json_странице>
 | <путь_к_шаблону>
}}

Пример:

{{#invoke:GetField|getTpl
 | MyEntityId
 | component/item.json
 | Component/meleeWeapon
}}

Работа:

  • внутри вызывает flattenField, получая строку key=value|...;
  • формирует строку вида:
{{Component/meleeWeapon
 |id=MyEntityId
 |damage.types=...
 |...
}}
  • и прогоняет её через frame:preprocess, возвращая итоговый рендер.

Это удобный способ «подключить» шаблон компонента к данным из JSON без ручного перечисления параметров.

p.getTplProto: вызов шаблона по прототипам

{{#invoke:GetField|getTplProto
 | <searchId>
 | <protoId>
 | <путь_к_шаблону>
}}
  • Ищет в prototype.json все записи, где protoId встречается у searchId.
  • Для каждого найденного ID вызывает getTpl и возвращает все вызовы, склеенные через перевод строки и отрендеренные.

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

Типичный рабочий поток

  1. В JSON‑файлах (component.json, prototype.json и др.) описываются сущности и связи компонент/прототипов.
  2. Для каждого компонента/прототипа создаются шаблоны Template:Component/..., Template:prototype/..., которые:
    • вызывают {{#invoke:Сущность/поля|main ...}} для описания полей карточки;
    • при необходимости используют GetField / Сущность.jsonList / Сущность.json для форматирования сложных JSON‑полей.
  3. Для вывода карточки на странице сущности используется:
    • либо прямой {{#invoke:Сущность|get|MyEntityId}},
    • либо шаблон‑обёртка {{Сущность/карточка|MyEntityId}}.
  4. Для специализированных списков/таблиц:
    • Сущность.jsonList — если нужно красиво показать массив/словарь из JSON;
    • Сущность.json — если нужно превратить список эффектов в набор вызовов шаблона;
    • GetField.get — если нужно точечно вытащить одно поле;
    • GetField.getTpl / getTplProto — если нужно строить шаблоны по данным JSON автоматически.