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

Материал из Space Station 14 Вики
Нет описания правки
Нет описания правки
 
(не показаны 254 промежуточные версии 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 (как простыми значениями, так и готовыми вызовами шаблонов).
|Иконка  =
|Название =
|Описание = Для всех это подозрительная гарнитура с буквой S.
* При подозрении на деятельность синдиката стоит уточнить, что имеет в виду лицо, демонстрирующее данный символ, а также проверить гарнитуру.
}}
 
{{Smuggling/Item
|Уровень  = средний
|id      = SoapSyndie
|Иконка  =
|Название =
|Описание = Всем видна надпись на мыле.
* При подозрении на деятельность синдиката стоит уточнить, что имеет в виду лицо, демонстрирующее данный символ.
}}


{{Smuggling/Item
Ниже описан общий принцип работы и отдельные режимы.
|Уровень  = средний
|id      = BalloonSyn
|Иконка  =
|Название =
|Описание = Для всех это воздушный шар с буквой S.
* При подозрении на деятельность синдиката стоит уточнить, что имеет в виду лицо, демонстрирующее данный символ.
}}


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


{{Smuggling/Item
== Модуль: Сущность/поля ==
|Уровень  = средний
Шаблоны компонентов используют модуль <code>Сущность/поля</code> для объявления полей, которые будут собираться в карточку.
|id      = CrateSyndicateSurplusBundle
|Иконка  =  
|Название =  
|Описание = Для всех это ящик с буквой S.
* При подозрении на деятельность синдиката стоит уточнить, что имеет в виду лицо, демонстрирующее данный символ.
}}


{{Smuggling/Item
Пример шаблона компонента:
|Уровень  = средний
|id      = RubberStampSyndicate
|Иконка  =
|Название =
|Описание = Для всех это печать с оттиском логотипа Синдиката.
* Поставленный оттиск также подпадает под 131 КЗ.
}}


{{Smuggling/Item
<pre>
|Уровень = средний
{{#invoke:Сущность/поля|main
|id      = SyndieFlag
  |cardLabel_Стоимость   = [[Стоимость]]
|Иконка   =  
|cardContent_Стоимость = '''{{{price}}}'''
|Название =  
|Описание = Все видят, что это флаг с логотипом Синдиката.
* При подозрении на деятельность синдиката стоит уточнить, что имеет в виду лицо, демонстрирующее данный символ.
}}
}}
</pre>


{{Smuggling/Item
Другой компонент может добавлять тот же ключ:
|Уровень  = средний
|id      = BannerSyndicate
|Иконка  =
|Название =
|Описание = Все видят, что это знамя с логотипом Синдиката.
* При подозрении на деятельность синдиката стоит уточнить, что имеет в виду лицо, демонстрирующее данны
}}


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


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


}}<!--
== Модуль: Сущность ==


-->
=== p.get: основная сборка карточки ===
{{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:Сущность|get
|Уровень =
  | <ID или список ID>
|id      =
| blacklist=...
|Иконка  = ClothingUniformJumpsuitSec.png
| whitelist=...
|Название = Рабочие комбинезоны
| ignoreComponents=...
|Описание = Все комбинезоны в названии которых явно указана профессия.<br><br>
| ignorePrototypes=...
'''Примерный перечень:'''
* {{PicName|Rd_jumpsuit.png|ClothingUniformJumpsuitResearchDirector}}
* {{PicName|ChemComb.png|ClothingUniformJumpsuitChemistry}}
* {{PicName|Инженерный_комбинезон.png|ClothingUniformJumpsuitEngineering}}
}}
}}
</pre>


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


{{Smuggling/Item
После сборки модуль:
|Уровень  =
* формирует один вызов <code><nowiki>{{карточка/сущность|...}}</nowiki></code> со всеми разделами и полями;
|id      =
* дополняет выход при необходимости (блоки title и т. п.);
|Иконка  = ClothingCloakCmo.png
* прогоняет результат через <code>frame:preprocess</code>, чтобы отрендерить разметку.
|Название = Плащи
|Описание = Плащи, мантии глав и прочих сотрудников.<br><br>
'''Примерный перечень:'''
* {{PicName|Miner-cloak.png|ClothingNeckCloakMiner}}
}}


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


<div class="SmugglingText">Элементы одежды, имеющие повышенное сопротивление к применению охранного оборудования (бронированные предметы одежды), сопротивление окружающей среде, или изолирующие свойства — любая броня и бронированная одежда (имеет резисты к механическому урону), магнитные сапоги и сапоги уборщика, любые перчатки со свойствами изоляции от тока.</div>
Пример простой сборки (через шаблон‑обёртку):
{{Smuggling/Item
|Уровень  =
|id      =
|Иконка  = ClothingOuterVestArmorSec.png
|Название = Бронежилеты
|Описание = Любые бронежилеты и комплекты брони.<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>
|Уровень  =
{{Сущность/карточка|MyEntityId}}
|id      =
</pre>
|Иконка  = ClothingOuterCoatWarden.png
|Название = Бронированная одежда
|Описание = Одежда усиленная специальными сплавами.<br><br>
'''Примерный перечень:'''
* {{PicName|Syndiearmorcoat.png|ClothingOuterCoatSyndieCapArmored}}
}}


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


{{Smuggling/Item
<pre>
|Уровень  =
{{#invoke:Сущность|get|{{{1}}}}}
|id      =
</pre>
|Иконка  = ClothingShoesBootsMag.png
|Название = Особые сапоги
|Описание = НуженТекст<br><br>
'''Примерный перечень:'''
* {{PicName|ClothingShoesBootsMag.png|ClothingShoesBootsMag}}
* {{PicName|ClothingShoesGaloshes.png|ClothingShoesGaloshes}}
}}


{{Smuggling/Item
=== p.preview: предпросмотр полей конкретного шаблона ===
|Уровень  = средний
Используется для проверки, что компонент/прототип правильно описал свои поля.
|id      = ClothingShoesSpaceNinja
|Иконка  =  
|Название =  
|Описание = Для всех это ботинки с пришитой магнитной подошвой.
* Всем видно, что это модифицированное снаряжение.
}}


{{Smuggling/Item
<pre>
|Уровень = средний
{{#invoke:Сущность|preview
|id      = ClothingShoesBootsMagSyndie
  | Component/meleeWeapon
|Иконка  =
|Название =
|Описание = Для всех это сапоги с ускорителями и джетпаком.
* Всем видно, что это модифицированное снаряжение.
}}
}}
</pre>


{{Smuggling/Item
* Показывает, какие <code>card</code> / <code>title</code>‑поля объявлены в <code>Template:Component/meleeWeapon</code>.
|Уровень  = средний
* Удобно при разработке шаблонов компонентов.
|id      = ClothingEyesVisorNinja
|Иконка  =
|Название =
|Описание = Для всех это визор со светоотражающими линзами.
* Всем видно, что это модифицированное снаряжение.
}}


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


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


{{Smuggling/Item
Примеры JSON:
|Уровень  = высокий
|id      = CyberPen
|Иконка  =
|Название =
|Описание = Для всех это цветная ручка.
* Информированный персонал знает, что CyberSun выпускает ручки с модифицированным ластиком.
* При осмотре видно, что кончик ручки имеет нагревающийся ластик, способный достигать более чем 150°.
* При осмотре видно, что колпачок ручки является небольшой отвёрткой.
* Наличие такой ручки может быть основанием для дополнительной проверки документов лица.
}}


{{Smuggling/Item
<pre> <!-- <syntaxhighlight lang=json> -->
|Уровень  = НуженТекст
{
|id      = PinpointerNuclear
   "Blunt": 10,
|Иконка   =
  "Slash": 5
|Название =
}
|Описание = НуженТекст
</pre> <!-- </syntaxhighlight> -->
}}


<div class="SmugglingText">Безопасные медицинские вещества - вещества, оказывающие благоприятное воздействие на организм, получение которых возможно в химической лаборатории или в ботанике. Не имеют вредного влияния на организм при приёме в безопасных дозах. Безопасные бытовые вещества - вещества, не предназначенные для приема в пишу и лечения, однако применяемые в уборке, ботанике и ксеноархеологии. Не оказывают отрицательного воздействия на организм.</div>
или
'''Примерный перечень:'''
<div class="SmugglingElements">
<span>Ультраваскулин</span>
<span>Аритразин</span>
<span>Транексамовая кислота</span>
<span>Барозин</span>
<span>Пунктураз</span>
<span>Синаптизин</span>
</div>


<div class="SmugglingText">Безопасные химические элементы - стандартные элементы не имеющие отрицательного влияния на организм.</div>
<pre> <!-- <syntaxhighlight lang=json> -->
<div class="SmugglingElements">
["Knife", "Sword", "Bat"]
<span>[[Химия#Элементы|Все элементы]], кроме воды, радия, урана.</span>
</pre> <!-- </syntaxhighlight> -->
<span>Руда, кроме банановой и урановой</span>
</div>
}}<!--


-->
Основные опции:
{{MainMenuBlocks/Frame
* {{пм|type}}:
|title            = Статья 432: Незаконное владение опасными предметами
** <code>list</code> — список строк (с префиксом, например <code>* </code>);
|style            = display: flex;gap: 14px 10px;flex-wrap: wrap;padding: 8px 10px;
** <code>enum</code> — перечисление через запятую (<code>A, B, C</code> без префикса).
|transparency    = 70
* {{пм|prefix}} — префикс строки списка (по умолчанию <code>* </code>).
|background-color = #414700
* {{пм|sep}} — разделитель для <code>ключ: значение</code> (по умолчанию <code>: </code>).
|border-color    = #414700
* {{пм|key_pattern}} / {{пм|key_replace}} — regex и замена для ключей.
|content          =
* {{пм|value_pattern}} / {{пм|value_replace}} — regex и замена для значений.


<div class="SmugglingText">Нарушение эксплуатации или незаконное наличие оборудования, способного нанести серьезный ущерб окружению.</div>
Дополнительно:
* в шаблоне замены поддерживаются:
** <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>).


{{Smuggling/Item
Пример, где сначала форматируем тип урона, а затем подставляем его в описание:
|Уровень  =
|id      = RCD
|Иконка  =
|Название =
|Описание = Все инструменты, которые могут моментально разрушить обшивку станции/уничтожить окружающие предметы.
}}


{{Smuggling/Item
<pre>
|Уровень =
{{#invoke:Сущность|jsonList
|id      =
  | {{{damage.types}}}
|Иконка  = Chimp.png
| type = enum
|Название = Инструменты для работы с аномалиями
| key_replace = <nowiki>\1</nowiki>              <!-- "Blunt" -->
|Описание = Инструменты научного отдела для работы с аномалиями.<br><br>
| value_replace = <nowiki>'''\1''' \2</nowiki>   <!-- "'''10''' Blunt" -->
'''Примерный перечень:'''
* {{PicName|AnomalyLocator.png|AnomalyLocator}}
* {{PicName|Ape.png|MachineAPE}}
}}
}}
</pre>


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


{{Smuggling/Item
<pre>
|Уровень = нет
{{#invoke:Сущность|json
|id      =
  | <json или {{{...}}}>
|Иконка  = MonkeyCubeBox.png
| <путь_к_шаблону>
|Название = Кубики агрессивных существ
|Описание = Для всех это обычный предмет.
* После наполнения их водой всем ясно, что это сушеные агрессивные существа.
* Для определения существ в кубиках требуется навык ксенобеологии.
<br>
'''Примерный перечень:'''
* {{PicName|PlushieCarp.png|DehydratedSpaceCarp}}
* {{PicName|MonkeyCube.png|AbominationCube}}
* {{PicName|MonkeyCube.png|SpaceTickCube}}
* {{PicName|MonkeyCube.png|SpaceCarpCube}}
}}
}}
</pre>


{{Smuggling/Item
* '''1‑й параметр / <code>json=</code>''' — строка JSON.
|Уровень  = средний
* '''2‑й параметр / <code>template=</code>''' — путь к шаблону, например <code>Component/adjustPlant</code>.
|id      =
|Иконка  = ClothingHandsGlovesNorthStar.png
|Название = Перчатки полярной звезды
|Описание = При беглом осмотре со стороны видно, что в них метал, также есть встроенный диктофон.
}}
 
{{Smuggling/Item
|Уровень  = нет
|id      =
|Иконка  = ClothingHandsGlovesColorBlack.png
|Название = Воровские перчатки
|Описание = Для всех это обычные перчатки.
* Поверхность перчатки с микроиглами, в них обезбол наркотический, который блокирует ощущения от прикосновения.
* Владеющие исследованиями и разработкой могут изучить все свойства предмета и проверить его на наличие игл.
}}
 
<div class="SmugglingText">Бытовое и холодное оружие, в том числе импровизированное оружие с существенными свойствами поражения.</div>
{{Smuggling/Item
|Уровень  =
|id      =
|Иконка  = CombatKnife.png
|Название = Острые предметы
|Описание = Предметы, имеющие лезвие, острый конец или одновременно то и другое.<br><br>
'''Примерный перечень:''' Острые предметы, которые опаснее обычной отвёртки.
}}


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


<div class="SmugglingText">Светошумовые, ослепляющие, слезоточивые, дымовые гранаты, вспышки, самодельные гранаты с аналогичными свойствами.</div>
<pre> <!-- <syntaxhighlight lang=json> -->
{{Smuggling/Item
[
|Уровень  =
  {
|id      = GrenadeFlashBang
    "!type:PlantAdjustNutrition": {
|Иконка   =
      "amount": 0.1
|Название =
    }
|Описание = Гранаты, которые не наносят урона окружающим, но ухудшают зрение/восприятие.<br><br>
  },
'''Примерный перечень:''' НуженТекст
  {
}}
    "!type:PlantAdjustWeeds": {
      "amount": 2
    }
  },
  {
    "!type:PlantAdjustPests": {
      "amount": 2
    }
   }
]
</pre> <!-- </syntaxhighlight> -->


{{Smuggling/Item
Для каждого элемента создаётся вызов:
|Уровень  = нет
|id      =
|Иконка  = Lantern.png
|Название = Сверхъяркий светильник
|Описание = Для всех это подозрительно слишком яркий светильник.
* При активации или осмотре понятно, что в него встроена вспышка.
}}


<div class="SmugglingText">Оружейные магазины, патроны, наручники, самодельные и фабричные дубинки, станеры, бола.</div>
<pre>
{{Smuggling/Item
{{Component/adjustPlant
|Уровень =
  |id=!type:PlantAdjustNutrition
|id       =  
|amount=0.1
|Иконка  = MagazineRifle.png
|Название = Боеприпасы
|Описание = Всё, чем заправляется оружие дальнего боя.<br><br>
'''Примерный перечень:'''
* {{PicName|PistolCartridge.png|CartridgePistolIncendiary}}
}}
}}
 
{{Component/adjustPlant
{{Smuggling/Item
  |id=!type:PlantAdjustWeeds
|Уровень =
|amount=2
|id       =  
|Иконка  = Handcuffs.png
|Название = Средства обездвиживания
|Описание = Средства обездвиживания цели.<br><br>
'''Примерный перечень:'''
* {{PicName|Bola.png|Bola}}
}}
}}
 
{{Component/adjustPlant
<div class="SmugglingText">Всё, что помогает получить внутреннюю информацию СБ, Командования, вышестоящих членов НТ: кто в розыске, переговоры по радиоканалу, приказы не для общественности и т.д.</div>
  |id=!type:PlantAdjustPests
{{Smuggling/Item
|amount=2
|Уровень =
|id       =  
|Иконка  = ClothingEyesHudSecurity.png
|Название = Предметы с закрытой информацией
|Описание = Предметы, которые отображают или передают закрытую информацию.<br><br>
'''Примерный перечень:'''
* {{PicName|RadioHandheldSecurity.png|RadioHandheldSecurity}}
}}
}}
</pre>


<div class="SmugglingText">Опасные препараты и хозяйственные вещества. У веществ всегда имеется выраженный отрицательный эффект.</div>
Особенности:
'''Примерный перечень:'''
* Если JSON — объект вида <code>{ "id1": {...}, "id2": {...} }</code>, происходит аналогичный проход по парам <code>ключ → объект</code>.
<div class="SmugglingElements">
* Все вызовы склеиваются через перевод строки и прогоняются через <code>frame:preprocess</code>, поэтому внутри шаблона можно использовать любую вики‑разметку.
<span>Масло ТГК</span>
<span>Счастье</span>
<span>Бананадин</span>
<span>Космические наркотики</span>
<span>ТГК</span>
<span>Токсин майндбрейкер</span>
<span>Оксид азота</span>
<span>Хлоральгидрат</span>
</div>


}}<!--
== Модуль: GetField ==
Модуль <code>GetField</code> используется для доступа к тем же JSON‑данным <code>.../data</code>, но на более низком уровне.


-->
=== p.flattenField: расплющивание записи в параметры ===
{{MainMenuBlocks/Frame
<pre>
|title            = Статья 433: Нарушение порядка владения регулируемыми предметами
{{#invoke:GetField|flattenField
|style            = display: flex;gap: 14px 10px;flex-wrap: wrap;padding: 8px 10px;
  | <id>
|transparency    = 70
| <путь_к_json_странице>
|background-color = #5f3800
|border-color    = #714300
|content          =  
 
<div class="SmugglingText">Бытовое, импровизированное, холодное и дальнобойное оружие, имеющее дополнительную маскировку в целях скрытого ношения — изменение внешнего вида оружия так, чтобы его можно было носить скрытно, и его наличие не было известно при проверках.</div>
{{Smuggling/Item
|Уровень = низкий
|id       =
|Иконка  = RevolverCapGun.png
|Название = Фальшивый игрушечный пистолет
|Описание = Владеющие навыком владения оружия при детальном осмотре поймут, что это боевое оружие.
* После выстрела боевыми патронами, всем ясно, что это револьвер, обклеенный пластиком.
* При отсутствии разрешения ношения оружия вменяется 434 статья КЗ (Незаконное владение регулируемыми веществами).
}}
}}
</pre>


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


{{Smuggling/Item
<pre>
|Уровень = нет
{{#invoke:GetField|flattenField
|id      =
  | MyEntityId
|Иконка  = ToolboxElectrical.png
| component/item.json
|Название = Турель-тулбокс
|Описание = Для всех это обычный ящик инструментов электрика.
* После активации всем ясно, что это мобильная баллистическая турель.
}}
}}
</pre>


{{Smuggling/Item
Возвращает строку вида:
|Уровень  = низкий
|id      = WeaponPistolCHIMPUpgradeKit
|Иконка  =
|Название =
|Описание = Для всех это немаркированная плата.
* Владеющие исследованиями и разработкой видят, что это плата для модификации М.А.Р.Т.Ы.Х.
* Владеющие исследованиями и разработкой видят, что М.А.Р.Т.Ы.Х. был модифицирован после установки чипа.
* Владеющие исследованиями и разработкой могут изучить все свойства предмета.
}}


{{Smuggling/Item
<pre>
|Уровень  = нет
damage.types={"Blunt":10}|wieldSound=someSound|...
|id      =  
</pre>
|Иконка  = ClothingHandsGlovesBoxingBlue.png
|Название = Свинцовые боксерские перчатки
|Описание = Для всех это обычные боксерские перчатки.
* После нанесения удара всем ясно, что в внутри них свинец.
}}


{{Smuggling/Item
Особенности:
|Уровень  = нет
* Вложенные объекты кодируются в JSON и заворачиваются в <code><nowiki><nowiki></nowiki></code>, чтобы их можно было безопасно передавать как параметр.
|id      =
* Массивы кодируются в JSON без <code><nowiki><nowiki></nowiki></code>, чтобы удобно обрабатывать их модулями вроде <code>Сущность.jsonList</code>.
|Иконка  = TrashBananaPeel.png
|Название = Банановая кожура-мина
|Описание = Для всех это обычная банановая кожура.
* После взрыва всем ясно, что в составе кожуры были взрывчатые вещества.
}}


{{Smuggling/Item
Этот режим используется внутри <code>GetField.getTpl</code> и других обёрток.
|Уровень  = нет
|id      = WeaponBaguette
|Иконка  =
|Название =
|Описание = Для всех это обычный багет.
* После нанесения удара всем ясно, что в внутри багета спрятан клинок.
}}


{{Smuggling/Item
=== p.get: получение значения по пути ===
|Уровень = нет
<pre>
|id       = WeaponCroissant
{{#invoke:GetField|get
|Иконка  =
  | <id или пусто для "default">
|Название =
| <путь_к_json_странице>
|Описание = Для всех это обычный круассан.
| <ключ.с.точками>
* После броска всем ясно, что в внутри багета спрятан клинок.
}}
}}
</pre>


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


{{Smuggling/Item
<pre>
|Уровень = высокий
{{#invoke:GetField|get
|id      =
  | MyEntityId
|Иконка  = AmmoTechFab.png
| component/item.json
|Название = Техфабы службы безопасности
| damage.types
|Описание = Техфаб патронов, ОхранФаб.
* Всем видно меню с возможностью печати патронов и оружия на них.
}}
}}
</pre>


{{Smuggling/Item
Если в JSON:
|Уровень  = нет
|id      =
|Иконка  = Autolathe.png
|Название = Взломанный автолат/протолат
|Описание = Просматривая меню с возможностью печати, все могут увидеть возможность печати оружия, патронов.
}}


<div class="SmugglingText">Синтетические и натуральные вещества, поражающий эффект которых заключается в причинении механических и токсических повреждений, либо нарушении кровообращения.
<pre> <!-- <syntaxhighlight lang=json> -->
Вещества, обладающие наркотическим или психотропным воздействием.</div>
"damage": {
'''Примерный перечень:'''
   "types": {
<div class="SmugglingElements">
    "Blunt": 10
<span>Артифаксиум (учёному)</span>
   }
<span>Дезоксиэфедрин</span>
}
<span>Эфедрин</span>
</pre> <!-- </syntaxhighlight> -->
<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
|Название = Оружие
|Описание = Огнестрельное, лазерное и импульсное оружие дальнего боя, гранатомёты и заряды к ним.
}}
 
{{Smuggling/Item
|Уровень  = низкий
|id      = BorgModuleSyndicateWeapon
|Иконка   =
|Название =
|Описание = Для проверки обычных боргов НТ нужны основания.
* Борг Ядерных Оперативников сам по себе является вражеским снаряжением, причин не проверить его модули нет.
* Для определение модуля синдиката требуется навык постройки роботов.
* Наказание выдаётся по совокупности статей 434 и 435.
}}
 
<div class="SmugglingText">ЭМИ гранаты, сейсмические заряды, взрывчатка, кластерные травматические и травматические гранаты, зажигательные гранаты, а также самодельные гранаты с аналогичными свойствами.</div>
{{Smuggling/Item
|Уровень  = нет
|id      =
|Иконка  = Pen.png
|Название = Взрывная ручка
|Описание = Для всех это обычная ручка.
* Владеющие навыком исследованиями и разработки могут изучить все свойства предмета.
* Наказание выдаётся по совокупности статей 433 и 434.
}}
 
{{Smuggling/Item
|Уровень  = нет
|id      = HotPotato
|Иконка  =
|Название =
|Описание = Для всех это обычная картошка.
* После использования, все понимают что это магическое вооружение.
* Изучить свойства предмета невозможно.
}}
 
{{Smuggling/Item
|Уровень  = нет
|id      =
|Иконка  = Caution.png
|Название = Мина мокрый пол
|Описание = Для всех это обычная табличка о мокром поле.
* Владеющие навыком исследованиями и разработки могут изучить все свойства предмета.
* Наказание выдаётся по совокупности статей 433 и 434.
}}
 
{{Smuggling/Item
|Уровень  = средний
|id      = HolyHandGrenade
|Иконка  =
|Название =
|Описание = Для всех это подозрительная держава с сверхярким свечением.
* Владеющие навыком исследованиями и разработки могут изучить все свойства предмета.
}}
 
{{Smuggling/Item
|Уровень  = средний
|id      = SpiderCharge
|Иконка  =
|Название =
|Описание = Для всех это подозрительное устройство.
* Владеющие навыком исследованиями и разработки могут изучить все свойства предмета.
}}
 
{{Smuggling/Item
|Уровень  = высокий
|id      = SyndieMiniBomb
|Иконка  =
|Название =
|Описание = Все видят, что это взрывное устройство.
}}
 
{{Smuggling/Item
|Уровень  = высокий
|id      = C4
|Иконка  =
|Название =
|Описание = Все видят, что это взрывное устройство.
}}
 
{{Smuggling/Item
|Уровень  = высокий
|id      = EmpGrenade
|Иконка  =
|Название =
|Описание = Все видят, что это взрывное устройство.
}}
 
{{Smuggling/Item
|Уровень  = высокий
|id      = GrenadeShrapnel
|Иконка  =
|Название =
|Описание = Все видят, что это взрывное устройство.
}}
 
{{Smuggling/Item
|Уровень  = высокий
|id      = GrenadeIncendiary
|Иконка  =
|Название =
|Описание = Все видят, что это взрывное устройство.
}}
 
{{Smuggling/Item
|Уровень  = высокий
|id      = ExGrenade
|Иконка  =
|Название =
|Описание = Все видят, что это взрывное устройство.
}}
 
{{Smuggling/Item
|Уровень  = высокий
|id      = ClusterGrenade
|Иконка  =
|Название =
|Описание = Все видят, что это взрывное устройство.
}}
 
{{Smuggling/Item
|Уровень  = высокий
|id      = MobGrenadePenguin
|Иконка  =
|Название =
|Описание = Все видят, что это взрывное устройство.
}}
 
{{Smuggling/Item
|Уровень  = низкий
|id      = BorgModuleMartyr
|Иконка  =
|Название =
|Описание = Для проверки обычных боргов НТ нужны основания.
* Для определение модуля требуется навык постройки роботов.
* Наказание выдаётся по совокупности статей 434 и 435.
}}
 
{{Smuggling/Item
|Уровень  = высокий
|id      = SyndicateBomb
|Иконка  =
|Название =
|Описание = Все видят, что это взрывное устройство.
}}
 
{{Smuggling/Item
|Уровень  = средний
|id      =
|Иконка  = WhiteholeGrenade.png
|Название = Искажающее гранаты
|Описание = Гранаты, которые не наносят урона окружающим, но ухудшают зрение/восприятие.<br><br>
* Перечень:
* {{PicName|WhiteholeGrenade.png|WhiteholeGrenade}}
* {{PicName|Supermattergrenade.png|SupermatterGrenade}}
}}
 
<div class="SmugglingText">Небезопасные и/или неизученные артефакты, радиоактивные предметы.</div>
{{Smuggling/Item
|Уровень  =
|id      = SimpleXenoArtifact
|Иконка  =
|Название =
|Описание = Артефакты.
}}
 
{{Smuggling/Item
|Уровень  =
|id      = GeneratorRTG
|Иконка   =
|Название =
|Описание = Предметы, излучающие радиацию.<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
|Название = Энергетический меч
|Описание = Для всех остальных это рукоять игрушечного меча.
* Информированный персонал знает об украденных разработках энергетического меча, для них рукоять выглядит подозрительно.
* При визуальном осмотре владеющие навыком владения оружием понимают, что это рукоять выключенного энергетического оружия.
* При осмотре каждый может увидеть кнопку включения (навык не нужен).
* Увидев его в активированном состоянии, все понимают что это энергетическое оружие.
}}
 
{{Smuggling/Item
|Уровень  = низкий
|id      =
|Иконка  = EnergySwordDouble.png
|Название = Двойной энергетический меч
|Описание = Для всех остальных это рукоять игрушечного меча.
* Информированный персонал знает об украденных разработках энергетического меча, для них рукоять выглядит подозрительно.
* При визуальном осмотре владеющие навыком владения оружием понимают, что это рукоять выключенного энергетического оружия.
* При осмотре каждый может увидеть кнопку включения (навык не нужен).
* Увидев его в активированном состоянии, все понимают что это энергетическое оружие.
}}
 
{{Smuggling/Item
|Уровень  = низкий
|id      = EnergyShield
|Иконка  =
|Название =
|Описание = Для всех это подозрительное устройство.
* При визуальном осмотре владеющие навыком владения оружием понимают, что это выключенное энергетическое оружие.
* При осмотре каждый может увидеть кнопку включения (навык не нужен).
* Увидев его в активированном состоянии, все понимают что это энергетическое оружие.
}}
 
{{Smuggling/Item
|Уровень  = нет
|id      =
|Иконка  = EnergyDagger.png
|Название = Энергетический кинжал
|Описание = Для всех это обычная ручка.
* Увидев её в активированном состоянии, все понимают что это ручка с энергетическим клинком.
* Владеющие исследованиями и разработкой могут изучить все свойства предмета.
}}
 
{{Smuggling/Item
|Уровень  = высокий
|id      =
|Иконка  = FireAxeFlaming.png
|Название = Пылающий пожарный топор
|Описание = Для всех это обычный пожарный топор.
* Увидев свойства поджога, все понимают что в топор встроено энергетическое лезвие.
* Пожарный топор должен быть в доступе только у глав и атмосов (если он у них в снаряжении, {{AttensionLevel|нет}}).
 
* Владеющие исследованиями и разработкой могут изучить все свойства предмета.
}}
 
{{Smuggling/Item
|Уровень  = низкий
|id      =
|Иконка  = EnergyCutlass.png
|Название = Энергитическая сабля
|Описание = Никто, кроме пиратов, не знает о его существовании.
* Информированный персонал знает об украденных разработках энергетического меча, для них рукоять выглядит подозрительно.
* Для всех остальных это отломанная рукоять игрушечной абордажной сабли.
* При визуальном осмотре владеющие навыком владения оружием понимают, что это рукоять выключенного энергетического оружия.
* При осмотре каждый может увидеть кнопку включения (навык не нужен).
* Увидев его в активированном состоянии, все понимают что это энергетическое оружие.
}}
 
{{Smuggling/Item
|Уровень  = высокий
|id      = EnergyKatana
|Иконка  =
|Название =
|Описание = Для всех это катана с энергетическим лезвием.
}}
 
<div class="SmugglingText">Копии особо ценного оборудования, происхождение которых не установлено.</div>
{{Smuggling/Item
|Уровень  = НуженТекст
|id      = SyndiHypo
|Иконка  =
|Название =
|Описание = НуженТекст
}}
 
{{Smuggling/Item
|Уровень  = нет
|id      =
|Иконка  = Pen.png
|Название = Гипоручка
|Описание = Для всех это обычная ручка.
* По звуку нельзя понять, что это ручка с возможностью впрыскивания в организм веществ.
* Любой увидевший (не услышавший) ее использование сразу поймет, что это ручка с возможностью впрыскивания в организм веществ.
* Владеющие исследованиями и разработкой могут изучить все свойства предметов.
}}


<div class="SmugglingText">Импланты неустановленного происхождения — [[Импланты|все импланты]] кроме тех, которые продаются в Карго или были направлены ЦК.</div>
то результатом будет:
{{Smuggling/Item
|Уровень  = низкий
|id      =
|Иконка  = FreedomImplant.png
|Название = Имплант свободы
|Описание = Все знают, что несертифицированные импланты незаконны.
* Владеющие хирургией могут сверить серийные номера и узнать, что это несертифицированный имплант.
* Информированный персонал осведомлен о существовании имплантов с подобными свойствами.
* Отдел СБ имеет инструкцию, оправдывающую операцию по поиску данного импланта.
* Только врач и владеющие хирургией могут произвести операцию по извлечению и вживлению импланта.
* Владеющие исследованиями и разработкой могут изучить все свойства конкретного импланта.
}}


{{Smuggling/Item
<pre>
|Уровень  = низкий
{"Blunt":10}
|id      =
</pre>
|Иконка  = ActionOpenStorageImplant.png
|Название = Имплант хранилища
|Описание = Все знают, что несертифицированные импланты незаконны.
* Владеющие хирургией могут сверить серийные номера и узнать, что это несертифицированный имплант.
* Информированный персонал осведомлен о существовании имплантов с подобными свойствами.
* Отдел СБ имеет инструкцию, оправдывающую операцию по поиску данного импланта.
* Только врач и владеющие хирургией могут произвести операцию по извлечению и вживлению импланта.
* Владеющие исследованиями и разработкой могут изучить все свойства конкретного импланта.
}}


{{Smuggling/Item
то есть:
|Уровень  = низкий
* для таблиц модуль пытается сделать <code>mw.text.jsonEncode(v)</code> и вернуть JSON‑строку;
|id      =
* для простых значений возвращается строка <code>tostring(v)</code>.
|Иконка  = MicroBombImplant.png
|Название = Имплант макробомбы
|Описание = Все знают, что несертифицированные импланты незаконны.
* Владеющие хирургией могут сверить серийные номера и узнать, что это несертифицированный имплант.
* Информированный персонал осведомлен о существовании имплантов с подобными свойствами.
* Отдел СБ имеет инструкцию, оправдывающую операцию по поиску данного импланта.
* Только врач и владеющие хирургией могут произвести операцию по извлечению и вживлению импланта.
* Владеющие исследованиями и разработкой могут изучить все свойства конкретного импланта.
}}


{{Smuggling/Item
Если <code>keyPath</code> пуст, возвращается весь объект (как JSON).
|Уровень  = низкий
|id      =
|Иконка  = Emp.png
|Название = Имплант ЭМИ
|Описание = Все знают, что несертифицированные импланты незаконны.
* Владеющие хирургией могут сверить серийные номера и узнать, что это несертифицированный имплант.
* Информированный персонал осведомлен о существовании имплантов с подобными свойствами.
* Отдел СБ имеет инструкцию, оправдывающую операцию по поиску данного импланта.
* Только врач и владеющие хирургией могут произвести операцию по извлечению и вживлению импланта.
* Владеющие исследованиями и разработкой могут изучить все свойства конкретного импланта.
}}


{{Smuggling/Item
=== p.getTpl: вызов шаблона по данным JSON ===
|Уровень  = низкий
<pre>
|id      =  
{{#invoke:GetField|getTpl
|Иконка  = DnaScramblerImplant.png
| <id>
|Название = Имплант ДНК Миксера
| <путь_к_json_странице>
|Описание = Все знают, что несертифицированные импланты незаконны.
| <путь_к_шаблону>
* Владеющие хирургией могут сверить серийные номера и узнать, что это несертифицированный имплант.
* Информированный персонал осведомлен о существовании имплантов с подобными свойствами.
* Отдел СБ имеет инструкцию, оправдывающую операцию по поиску данного импланта.
* Только врач и владеющие хирургией могут произвести операцию по извлечению и вживлению импланта.
* Владеющие исследованиями и разработкой могут изучить все свойства конкретного импланта.
}}
}}
</pre>


{{Smuggling/Item
Пример:
|Уровень  = низкий
|id      =
|Иконка  = Implant.png
|Название = Имплант "Предсмертный хрип"
|Описание = Все знают, что несертифицированные импланты незаконны.
* Владеющие хирургией могут сверить серийные номера и узнать, что это несертифицированный имплант.
* Информированный персонал осведомлен о существовании имплантов с подобными свойствами.
* Отдел СБ имеет инструкцию, оправдывающую операцию по поиску данного импланта.
* Только врач и владеющие хирургией могут произвести операцию по извлечению и вживлению импланта.
* Владеющие исследованиями и разработкой могут изучить все свойства конкретного импланта.
}}


<div class="SmugglingText">Нелицензированные модули и компаненты синтетиков, синтетики неопознанного происхождения.</div>
<pre>
{{Smuggling/Item
{{#invoke:GetField|getTpl
|Уровень = низкий
  | MyEntityId
|id      = BorgModuleSyndicateWeapon
| component/item.json
|Иконка  =
| Component/meleeWeapon
|Название =
|Описание = Для проверки обычных боргов НТ нужны основания.
* Борг Ядерных Оперативников сам по себе является вражеским снаряжением, причин не проверить его модули нет.
* Для определение модуля синдиката требуется навык постройки роботов.
* В случае если модуль оружейный, наказание выдаётся по совокупности статей 434 и 435.
}}
}}
</pre>


}}<!--
Работа:
* внутри вызывает <code>flattenField</code>, получая строку <code>key=value|...</code>;
* формирует строку вида:


-->
<pre>
{{MainMenuBlocks/Frame
{{Component/meleeWeapon
|title            = Статья 436: Незаконное владение вражеским снаряжением
  |id=MyEntityId
|style            = display: flex;gap: 14px 10px;flex-wrap: wrap;padding: 8px 10px;
|damage.types=...
|transparency    = 70
|...
|background-color = #2f2f39
|border-color    = #3e3e4b
|content          =
 
<div class="SmugglingText">Предметы со свойствами маскировки владельца или самих себя, мимикрии под окружающий мир.</div>
{{Smuggling/Item
|Уровень = нет
|id       =  
|Иконка  = ClothingUniformJumpsuitChameleon.png
|Название = Хамелеонная экиперовка
|Описание = Для всех это обычная одежда определенного вида.
* Детектив может определить оставленные голографические отпечатки как вражеские.
* Редкая одежда, форма Адмирала НТ и т. д. может вызвать подозрения.
* Увидев смену одежды, все понимают что это одежда, с возможностью смены внешности.
* Для определения свойств требуется навык Исследования и разработка.
}}
}}
</pre>


{{Smuggling/Item
* и прогоняет её через <code>frame:preprocess</code>, возвращая итоговый рендер.
|Уровень  = средний
|id      =
|Иконка  = Agentbox.gif
|Название = Маскирующая коробка
|Описание = Для всех не движущаяся коробка является аномалией.
* В случае передвижения она воспринимается как подозрительный опасный объект.
* При быстром движении вы можете понять, что этот объект является исчезающей на глазах коробкой.
* Владеющие исследованиями и разработкой понимают, что объект не аномалия и могут её открыть после осмотра.
* Информированный персонал видит, что движущаяся коробка является средством маскировки.
* Взаимодействие с коробкой опасно даже в случае, если вы знаете, что это коробка. Ученые должны действовать совместно с СБ.
}}


{{Smuggling/Item
Это удобный способ «подключить» шаблон компонента к данным из JSON без ручного перечисления параметров.
|Уровень  = средний
|id      = ClothingOuterSuitSpaceNinja
|Иконка  =
|Название =
|Описание = Только члены клана Паука знают о существовании данной формы.
* Для всех (включая Синдикат) это подозрительная бронированная форма. {{AttensionLevel|средний|icon}}
* Неподвижно стоящий человек в режиме невидимости выглядит как аномалия для всех, кроме владеющих исследованиями и разработкой. {{AttensionLevel|высокий|icon}}
* Владеющие исследованиями и разработкой понимают, что объект не аномалия и могут определить что это человек в экипировке со свойством маскировки. {{AttensionLevel|высокий|icon}}
* Информированный персонал может понять это только при движении. {{AttensionLevel|высокий|icon}}
* Все могут понять, что это человек в экипировке со свойством маскировки, если невидимость была активирована при них или они узнали об этом любым способом от других. {{AttensionLevel|высокий|icon}}
* Изучить свойства костюма без содействия самого ниндзя невозможно.
}}


{{Smuggling/Item
=== p.getTplProto: вызов шаблона по прототипам ===
|Уровень  = низкий
<pre>
|id      =  
{{#invoke:GetField|getTplProto
|Иконка  = ClothingMaskGas.png
| <searchId>
|Название = Маскировочная маска
| <protoId>
|Описание = Для всех это обычная маска определенного вида.
| <путь_к_шаблону>
* Редкие виды масок могут вызвать подозрения.
* Обнаружив, что владелец имеет голос, отличающийся от своего настоящего, все понимают, что это маска, способная менять голос владельца.
* Увидев смену вида, все понимают что это маска, с возможностью смены внешности.
* Владеющие исследованиями и разработкой могут изучить все свойства предметов.
}}
}}
</pre>


{{Smuggling/Item
* Ищет в <code>prototype.json</code> все записи, где <code>protoId</code> встречается у <code>searchId</code>.
|Уровень  = нет
* Для каждого найденного ID вызывает <code>getTpl</code> и возвращает все вызовы, склеенные через перевод строки и отрендеренные.
|id      =
|Иконка  = ClothingShoesColorBlack.png
|Название = Маскировочная обувь
|Описание = Для всех это обычная одежда определенного вида.
* Редкая одежда, форма Адмирала НТ и т. д. может вызвать подозрения.
* Свойство нескольжения по полу не вызывает подозрений, но может быть рассмотрено как 432 [сопротивление окружающей среде] (это НЕ повод нести сапоги в НИО, просто изъять).
* Владеющие исследованиями и разработкой могут изучить все свойства предметов.
}}


{{Smuggling/Item
Используется для случаев, когда сущность использует '''несколько''' прототипов одного типа, и нужно вывести по одному шаблону на каждый прототип.
|Уровень  = низкий
|id      = ChameleonProjector
|Иконка  =
|Название =
|Описание = Для всех это подозрительное устройство.
* Если предмет, который не должен двигать, двигается или разговаривает, то информированный персонал и научные сотрудники понимают, что это маскировка. Для остальных это аномальное явление.
* Владеющие исследованиями и разработкой могут изучить все свойства предметов.
}}


{{Smuggling/Item
== Типичный рабочий поток ==
|Уровень  = нет
# В JSON‑файлах (<code>component.json</code>, <code>prototype.json</code> и др.) описываются сущности и связи компонент/прототипов.
|id      =  
# Для каждого компонента/прототипа создаются шаблоны <code>Template:Component/...</code>, <code>Template:prototype/...</code>, которые:
|Иконка  = ClothingHandsChameleonThief.png
#* вызывают <code><nowiki>{{#invoke:Сущность/поля|main ...}}</nowiki></code> для описания полей карточки;
|Название = Перчатки вора маскировочные
#* при необходимости используют <code>GetField</code> / <code>Сущность.jsonList</code> / <code>Сущность.json</code> для форматирования сложных JSON‑полей.
|Описание = Для всех это обычные черные перчатки.
# Для вывода карточки на странице сущности используется:
* Поверхность перчатки с микроиглами, в них обезбол наркотический, который блокирует ощущения от прикосновения.
#* либо прямой <code><nowiki>{{#invoke:Сущность|get|MyEntityId}}</nowiki></code>,
* Владеющие исследованиями и разработкой могут изучить все свойства предмета и проверить его на наличие игл.
#* либо шаблон‑обёртка <code><nowiki>{{Сущность/карточка|MyEntityId}}</nowiki></code>.
}}
# Для специализированных списков/таблиц:
 
#* <code>Сущность.jsonList</code> — если нужно красиво показать массив/словарь из JSON;
<div class="SmugglingText">Шпионское оборудование для вмешательства в связь и незаконную передачу данных, взлома оборудования.</div>
#* <code>Сущность.json</code> — если нужно превратить список эффектов в набор вызовов шаблона;
{{Smuggling/Item
#* <code>GetField.get</code> — если нужно точечно вытащить одно поле;
|Уровень  = высокий
#* <code>GetField.getTpl</code> / <code>getTplProto</code> — если нужно строить шаблоны по данным JSON автоматически.
|id      =
|Иконка  = EncryptionKeySyndie.png
|Название = Ключ шифрования Синдиката
|Описание = Информированный персонал знает о существовании засекреченного способа связи Синдиката.
* При переключении каналов на гарнитуре можно обнаружить нестандартный канал «Синдикат».
* Увидев ключ шифрования с эмблемой Синдиката все могут заподозрить, что это незаконный ключ шифрования Синдиката.
* Случайно услышав подозрительные переговоры информированный персонал может заподозрить использование незаконных средств связи.
* После обнаружения ключа в гарнитуре каналом можно пользоваться также, как и любым другим.
}}
 
{{Smuggling/Item
|Уровень  = нет
|id      =
|Иконка  = SyndicatePersonalAI.png
|Название = Синдикатовский пИИ
|Описание = Для всех это обычный пИИ с красным интерфейсом.
* Если информированный персонал узнает, что пИИ может прослушивать радиоканал Синдиката, то они поймут, что он является незаконным средством связи. {{AttensionLevel|красный|icon}}
* Обнаружить возможность подключения к каналу Синдиката невозможно.
}}
 
{{Smuggling/Item
|Уровень  = высокий
|id      =
|Иконка  = Emag.png
|Название = Криптографический секвенсор
|Описание = Для всех это незаконно модифицированная ID карта.
* Увидев её применение (взлом) все понимают, что это ID карта с электронной отмычкой.
* Владеющие постройкой приборов могут изучить все свойства предмета.
}}
 
{{Smuggling/Item
|Уровень  = нет
|id      =
|Иконка  = PassengerIDCard.png
|Название = ID карта агента
|Описание = Для всех это обычное удостоверение личности.
* Редкие карты, выдаваемые Командованию или сотрудникам ЦК, могут вызвать подозрения. {{AttensionLevel|низкий|icon}}
* Увидев неправомерно полученные допуски, несоответствие должности (указанной на карте или вида самой карты) и/или ложное имя у сотрудника, любой может понять, что это ID карта с неправомерно измененными данными [повод отнести ГП/проверить их в консоли, а не НИО]. {{AttensionLevel|высокий|icon}}
* Обнаруженный факт невозможности снятия доступа вызывает подозрения. {{AttensionLevel|высокий|icon}}
* Владеющие исследованиями и разработкой могут изучить все свойства предметов.
}}
 
{{Smuggling/Item
|Уровень  = низкий
|id      = ClothingHandsGlovesSpaceNinja
|Иконка  =
|Название =
|Описание = Только члены клана Паука знают о существовании данной формы.
* В выключенном виде видно изолирующий слой.
* Увидев момент взлома двери или зарядки с помощью перчаток все понимают, что это высокотехнологичные перчатки.
* Изучить свойства перчаток без содействия самого ниндзя невозможно.
}}
 
{{Smuggling/Item
|Уровень  = средний
|id      =
|Иконка  = RadioJammer.png
|Название = Глушитель связи
|Описание = Владеющие постройкой приборов знают предназначение данных приборов.
* Для остальных это подозрительный прибор.
}}
 
{{Smuggling/Item
|Уровень  = средний
|id      =
|Иконка  = CameraBug.png
|Название = Камера-жучок
|Описание = Владеющие постройкой приборов знают предназначение данных приборов.
* Для остальных это подозрительный прибор.
}}
 
{{Smuggling/Item
|Уровень  = низкий
|id      =
|Иконка  = Std_mod.png
|Название = Плата законов (Антимов)
|Описание = НуженТекст
}}
 
{{Smuggling/Item
|Уровень  = средний
|id      = NukeOpsDeclarationOfWar
|Иконка  =
|Название =
|Описание = Для всех это подозрительный пульт для управления шлюзами.
* При осмотре видно кнопку включения.
* Если после нажатия загорелся экран, то все могут увидеть содержимое интерфейса. {{AttensionLevel|высокий|icon}}
}}
 
<div class="SmugglingText">Магическое и аномальное оружие, оборудование и предметы.</div>
{{Smuggling/Item
|Уровень  = нет
|id      =
|Иконка  = WeaponsMagic.png
|Название = Магические посохи
|Описание = Для всех это игрушечные посохи.
* После использования, все понимают что это магическое вооружение. {{AttensionLevel|высокий|icon}}
* Изучить свойства предмета невозможно.
}}
 
{{Smuggling/Item
|Уровень  = нет
|id      =
|Иконка  = BibleNecronomicon.png
|Название = Некрономикон
|Описание = Цербер для всех, кроме священника, обычная собака.
* Священник знает все свойства и предназначение некрономикона, а также призываемого ею фамильяра. {{AttensionLevel|высокий|icon}}
* Библиотекарь может изучить некрономикон и установить наличие магических свойств книги. {{AttensionLevel|средний|icon}}
}}
 
{{Smuggling/Item
|Уровень  = нет
|id      =
|Иконка  = Telecrystal.png
|Название = Телекристал
|Описание = Для всех это добытые из руды кристаллы.
* Для утилизаторов и владеющих исследованиями и разработкой это нестандартные фрагменты артефактов. {{AttensionLevel|низкий|icon}}
* Владеющие исследованиями и разработкой могут установить наличие у кристаллов аномального излучения. {{AttensionLevel|низкий|icon}}
}}
 
<div class="SmugglingText">Оборудование для связи и получения товаров с запрещённых мест продаж, сами товары, полученные данным образом.</div>
{{Smuggling/Item
|Уровень  = высокий
|id      =
|Иконка  = ReinforcementRadio.png
|Название = Радио-Аплинк
|Описание = Всем отчетливо виден ассортимент магазина, все понимают что это устройство, позволяющее приобрести снаряжение на черном рынке.
}}
 
{{Smuggling/Item
|Уровень  = низкий
|id      =
|Иконка  = ReinforcementRadio.png
|Название = Имплант аплинка
|Описание = Все знают, что несертифицированные импланты незаконны.
* При установке становиться ясно, что этот имплант имеет доступ к чёрному рынку- 436 статья Корпоративного Закона.
* Если доступ к чёрному рынку не установлен,то это нелегальный имплант попадающий под - 435 статью Корпоративного Закона.
* Владеющие хирургией могут сверить серийные номера и узнать, что это несертифицированный имплант.
* Только врач и владеющие хирургией могут произвести операцию по извлечению и вживлению импланта.
* Владеющие исследованиями и разработкой могут изучить все свойства конкретного импланта.
}}
 
{{Smuggling/Item
|Уровень  = нет
|id      =
|Иконка  = PDA.png
|Название = КПК с открытой вкладкой аплинк
|Описание = Для всех это обычный КПК.
* При появлении крупных предметов «из воздуха» привлекает внимание. {{AttensionLevel|средний|icon}}
* При процедуре полного обыска можно проверить КПК на сторонние модификации/программы
* Получив доступ к аплинку, все понимают что это '''КПК''', '''позволяющий''' '''приобрести''' снаряжение на черном рынке. {{AttensionLevel|высокий|icon}}
}}
 
{{Smuggling/Item
|Уровень  = нет
|id      =
|Иконка  = ReinforcementRadio.png
|Название = Вызов подкрепления
|Описание = Для всех это неисправное радио.
* Любой сотрудник, увидевший применение данного устройства, может понять, что это радио, с возможностью телепортации. {{AttensionLevel|средний|icon}}
* Владеющие постройкой приборов могут изучить все свойства предмета.
* '''Перечень:''' Вызов подкрепления, обезьяньего подкрепления и подкрепление кобольдов
}}
 
{{Smuggling/Item
|Уровень  = высокий
|id      = ToolboxThief
|Иконка  =
|Название =
|Описание = Всем отчетливо виден ассортимент магазина, все понимают что это устройство, позволяющее приобрести снаряжение на черном рынке.
}}
 
<div class="SmugglingText">Запрещённые к провозу разработки, оборудование и экипировка экстремистских и вражеских организаций, формирований.</div>
{{Smuggling/Item
|Уровень  = средний
|id      =
|Иконка  = Holoparasite.png
|Название = Набор голопаразита
|Описание = Для всех это странно выглядящее существо.
* Увидев голопаразита, информированный сотрудник поймет, что это голопаразит Синдиката. {{AttensionLevel|высокий|icon}}
* Увидев голоклоуна, информированный сотрудник поймет, что это один из видов голопаразита, способный взаимодействовать с окружающим миром. {{AttensionLevel|высокий|icon}}
* Увидев имплантер или инструкцию, информированный персонал понимает, что на станции находится владелец голопаразита. {{AttensionLevel|высокий|icon}}
* Голос голопаразита для вас является неизвестным голосом.
* Информированный персонал знает, что извлечь голопаразита невозможно.
}}
 
{{Smuggling/Item
|Уровень  = высокий
|id      =
|Иконка  = ClothingOuterHardsuitSyndie.png
|Название = Скафандры Ядерных Оперативников
|Описание = Весь персонал станции знает о существовании террористической организации Синдикат, крадущей технологии НТ.
* Все знают что это вражеское снаряжение.
* На скафандре также имеется символика Синдиката.
<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
|Иконка  =
|Название =
|Описание = Для всех это обычный визор.
* При выявлении свойств защиты от вспышек - нарушение 432 статьи. {{AttensionLevel|средний|icon}}
* При выявлении свойств обнаружения синдиката - нарушение 436 статьи. {{AttensionLevel|средний|icon}}
}}
 
<div class="SmugglingText">Ядерное, биологическое, структурное и иное оружие и средства массового поражения.</div>
{{Smuggling/Item
|Уровень  = высокий
|id      =
|Иконка  = NuclearBomb.png
|Название = Незарегестрированная ядерная бомба
|Описание = Только вышестоящее руководство (обычно НТ, ГИОР, ОПЗ...) может выдать разрешение на перемещение, хранение и иные манипуляции с ядерным оружием
}}
 
{{Smuggling/Item
|Уровень  = средний
|id      = SingularityBeacon
|Иконка  =
|Название =
|Описание = Для всех это подозрительно выглядящей прибор.
* Владеющие навыков работы с сингулярностью знают, что это прибор для саботажа сингулярности или Теслы. {{AttensionLevel|высокий|icon}}
}}
 
{{Smuggling/Item
|Уровень  = средний
|id      =
|Иконка  = PowerSink.png
|Название = Поглотитель энергии
|Описание = Для всех это подозрительно выглядящей прибор.
* Владеющие постройкой приборов знают предназначение данного прибора.
* Владеющие постройкой приборов могут изучить прибор и обнаружить свойство взрывчатки. {{AttensionLevel|высокий|icon}}
}}
 
{{Smuggling/Item
|Уровень  = низкий
|id      =
|Иконка  = ChemistryEmptyBottle01.png
|Название = Ромерол
|Описание = У всех есть доступ к перечню названий запрещенных веществ, в который входит это вещество «ромерол».
* Без познания в химии для вас вещество внешне и по запаху выглядит как любое неопознанное вещество. {{AttensionLevel|низкий|icon}}
* После проявления зомби-вируса при вводе вещества все понимают, что это возбудитель зомби инфекции. {{AttensionLevel|высокий|icon}}
* При необходимости все могут проверить состав жидкости и узнать её название с помощью оборудования.
}}
 
}}<!--
 
-->
{{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
|Название = Поддельный диск ядерной авторизации
|Описание = Для всех это обычный диск ядерной авторизации
* Наличие диска ядерной авторизации у лица — основание для его задержания по статье 316 КЗ (Хищение особо ценного имущества).
* Если будет доказано, что диск поддельный, лицо стоит привлечь к ответственности по статье 133 (Саботаж), возможно в некоторых обстоятельствах по статье 136 (Крупный саботаж).
}}
 
{{Smuggling/Item
|Уровень  = высокий
|id      = SyndicateIDCard
|Иконка  =
|Название =
|Описание = Весь персонал станции знает о существовании террористической организации Синдикат, крадущей технологии НТ.
* Наличие доступа Синдиката является основанием для признания её вражеским снаряжением (436), но (!) по механике это практически невозможно проверить в обычном раунде [нужно копировать на карту агента, но даже там не будет видно название доступа, можно открыть шлюз Синдиката, но опять же, нужно ещё подтвердить, что сам шлюз - действительно Синдиката и т.п. Самая реалистичная возможная версия на данный момент — подверждение доступа к шаттлу ЯО или аванпосту].
* Если вышесказанного не было доказано, карта подпадает под 131 КЗ за символику Синдиката.
}}
 
{{Smuggling/Item
|Уровень  = нет
|id      = ClothingOuterSuitCarp
|Иконка  =
|Название =
|Описание = НуженТекст
}}
 
}}
</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 автоматически.