|
|
| (не показано 258 промежуточных версий 4 участников) |
| Строка 1: |
Строка 1: |
| <div class="grid-adaptive" style="
| | {{docpage}}{{TOC hidden}} |
| display: grid;
| | {{OnLua|Сущность|module1=Сущность|module2=Сущность/поля|module3=GetField}} |
| gap: 0.6em;
| |
| ">
| |
| {{MainMenuBlocks/Frame | |
| |title = Статья 131: Пропаганда запрещённых организаций | |
| |style = display: flex;gap: 10px;flex-wrap: wrap;padding: 8px 10px; | |
| |transparency = 65 | |
| |background-color = #0F4F27
| |
| |border-color = #126130
| |
| |content = | |
|
| |
|
| <div class="SmugglingText">Объекты с явной символикой экстремистских и вражеских организаций..</div>
| | Модульный набор {{tl|Модуль:Сущность}} + {{tl|Модуль:Сущность/поля}} + {{tl|Модуль:GetField}} предназначен для: |
| {{Smuggling/Item | | * автоматической сборки карточек сущностей (компонентов и прототипов) по их ID; |
| |Уровень = высокий | | * описания полей в шаблонах компонентов (какие поля идут в карточку, как подписаны); |
| |id = ClothingHeadsetAltSyndicate | | * удобного доступа к данным из JSON (как простыми значениями, так и готовыми вызовами шаблонов). |
| |Иконка = | |
| |Название =
| |
| |Описание =
| |
| Для всех это подозрительная гарнитура с буквой 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 сущности: |
| |Описание =
| | ** находит связанные с ней компоненты и прототипы по 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
| |
| |Иконка =
| |
| |Название =
| |
| |Описание =
| |
| Для всех это воздушный шар с буквой S.
| |
|
| |
|
| При подозрении на деятельность синдиката стоит уточнить, что имеет в виду лицо, демонстрирующее данный символ.
| | <pre> |
| | {{#invoke:Сущность/поля|main |
| | |cardLabel_Стоимость = [[Стоимость]] |
| | |cardContent_Стоимость = '''{{{price}}}''' |
| }} | | }} |
| | </pre> |
|
| |
|
| {{Smuggling/Item
| | Другой компонент может добавлять тот же ключ: |
| |Уровень = средний
| |
| |id = BedsheetSyndie
| |
| |Иконка =
| |
| |Название =
| |
| |Описание =
| |
| Для всех это одеяло с буквой 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|Модуль:Сущность}}. |
| |Название =
| |
| |Описание =
| |
| Для всех это ящик с буквой S.
| |
|
| |
|
| При подозрении на деятельность синдиката стоит уточнить, что имеет в виду лицо, демонстрирующее данный символ.
| | == Модуль: Сущность == |
| }}
| |
|
| |
|
| {{Smuggling/Item
| | === p.get: основная сборка карточки === |
| |Уровень = средний
| | Вызов: |
| |id = RubberStampSyndicate
| |
| |Иконка =
| |
| |Название =
| |
| |Описание =
| |
| Для всех это печать с оттиском логотипа Синдиката.
| |
|
| |
|
| Поставленный оттиск также подпадает под 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>. |
| |Описание =
| | * Шаблоны описывают свои поля через <code>Сущность/поля</code>. |
| Все видят, что это флаг с логотипом Синдиката.
| |
| | |
| При подозрении на деятельность синдиката стоит уточнить, что имеет в виду лицо, демонстрирующее данный символ.
| |
| }}
| |
|
| |
|
| {{Smuggling/Item | | После сборки модуль: |
| |Уровень = средний | | * формирует один вызов <code><nowiki>{{карточка/сущность|...}}</nowiki></code> со всеми разделами и полями; |
| |id = BannerSyndicate
| | * дополняет выход при необходимости (блоки title и т. п.); |
| |Иконка =
| | * прогоняет результат через <code>frame:preprocess</code>, чтобы отрендерить разметку. |
| |Название =
| |
| |Описание =
| |
| Все видят, что это знамя с логотипом Синдиката.
| |
|
| |
|
| При подозрении на деятельность синдиката стоит уточнить, что имеет в виду лицо, демонстрирующее данны
| | Параметры фильтрации: |
| }} | | * {{пм|blacklist}} — список <code>режим_Ключ</code> через запятую, чтобы исключить поле: |
| | ** пример: <code>blacklist=card_Наносит повреждения,title_Что‑то</code>; |
| | * {{пм|whitelist}} — наоборот, список разрешённых <code>режим_Ключ</code>, остальные игнорируются; |
| | * {{пм|ignoreComponents}} / {{пм|ignoreComponent}} — список имён компонентов через запятую, которые полностью игнорируются для этого вызова; |
| | * {{пм|ignorePrototypes}} / {{пм|ignorePrototype}} — аналогично для прототипов. |
|
| |
|
| {{Smuggling/Item
| | Пример простой сборки (через шаблон‑обёртку): |
| |Уровень = средний
| |
| |id = MobCatSyndy
| |
| |Иконка =
| |
| |Название =
| |
| |Описание =
| |
| Всем видно, что кто-то разукрасил кошку в цвета Синдиката, и одел в характерный костюм в виде Ядерного Оперативника.
| |
| }}
| |
|
| |
|
| {{Smuggling/Item | | <pre> |
| |Уровень = высокий | | {{Сущность/карточка|MyEntityId}} |
| |id = VendingMachineSyndieDrobe
| | </pre> |
| |Иконка =
| |
| |Название =
| |
| |Описание =
| |
| Всем видно, что это шкаф с логотипом Синдиката.
| |
|
| |
|
| При выявлении функции выдачи брони приписывается 431 статья КЗ.
| | где в шаблоне <code>Сущность/карточка</code> внутри: |
| }}
| |
|
| |
|
| }}<!-- | | <pre> |
| | {{#invoke:Сущность|get|{{{1}}}}} |
| | </pre> |
|
| |
|
| -->
| | === p.preview: предпросмотр полей конкретного шаблона === |
| {{MainMenuBlocks/Frame
| | Используется для проверки, что компонент/прототип правильно описал свои поля. |
| |title = Статья 431: Злоупотребление экипировкой и оборудованием
| |
| |style = display: flex;gap: 10px;flex-wrap: wrap;padding: 8px 10px;
| |
| |transparency = 65
| |
| |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> | |
| Примеры:
| |
| * {{PicName|Miner-cloak.png|ClothingNeckCloakMiner}}
| |
| }}
| |
|
| |
|
| {{Smuggling/Item | | <pre> |
| |Уровень = | | {{#invoke:Сущность|jsonList |
| |id = | | | <json или {{{...}}}> |
| |Иконка = ClothingOuterHardsuitSalvage.png | | | type = list / enum |
| |Название = Скафандры | | | prefix = * |
| |Описание = | | | 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>
| |
| Примеры: | |
| * {{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 |
| |Название = Бронированная одежда
| | } |
| |Описание =
| | </pre> <!-- </syntaxhighlight> --> |
| Одежда усиленная специальными сплавами.
| |
| <br><br> | |
| Примеры:
| |
| * {{PicName|Syndiearmorcoat.png|ClothingOuterCoatSyndieCapArmored}}
| |
| }}
| |
|
| |
|
| {{Smuggling/Item
| | или |
| |Уровень =
| |
| |id =
| |
| |Иконка = ClothingHandsGlovesColorYellow.png
| |
| |Название = Изолирующие перчатки
| |
| |Описание =
| |
| Перчатки со свойством изоляции от тока.
| |
| <br><br>
| |
| Примеры:
| |
| * {{PicName|ClothingHandsGlovesCombat.png|ClothingHandsGlovesCombat}}
| |
| * В том числе дешёвые излоирующие перчатки, обрезанные изолирующие перчатки и так далее.
| |
| }}
| |
|
| |
|
| {{Smuggling/Item
| | <pre> <!-- <syntaxhighlight lang=json> --> |
| |Уровень =
| | ["Knife", "Sword", "Bat"] |
| |id =
| | </pre> <!-- </syntaxhighlight> --> |
| |Иконка = ClothingShoesBootsMag.png
| |
| |Название = Особые сапоги
| |
| |Описание =
| |
| Текст
| |
| Примеры:
| |
| * {{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>). |
| |Описание = | | * {{пм|sep}} — разделитель для <code>ключ: значение</code> (по умолчанию <code>: </code>). |
| Для всех это ботинки с пришитой магнитной подошвой.
| | * {{пм|key_pattern}} / {{пм|key_replace}} — regex и замена для ключей. |
| | * {{пм|value_pattern}} / {{пм|value_replace}} — regex и замена для значений. |
|
| |
|
| Всем видно, что это модифицированное снаряжение.
| | Дополнительно: |
| }}
| | * в шаблоне замены поддерживаются: |
| | ** <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 = ClothingShoesBootsMagSyndie
| |
| |Иконка =
| |
| |Название =
| |
| |Описание =
| |
| Для всех это сапоги с ускорителями и джетпаком.
| |
| | |
| Всем видно, что это модифицированное снаряжение.
| |
| }}
| |
| | |
| {{Smuggling/Item
| |
| |Уровень = средний
| |
| |id = ClothingEyesVisorNinja
| |
| |Иконка =
| |
| |Название =
| |
| |Описание =
| |
| Для всех это визор со светоотражающими линзами.
| |
|
| |
| Всем видно, что это модифицированное снаряжение.
| |
| }}
| |
| | |
| {{Smuggling/Item
| |
| |Уровень = средний
| |
| |id = ClothingMaskGasSyndicate
| |
| |Иконка =
| |
| |Название =
| |
| |Описание =
| |
| Для всех это противогаз со светоотражающими линзами.
| |
| | |
| Всем видно, что это модифицированное снаряжение.
| |
| }}
| |
|
| |
|
| <div class="SmugglingText">Профессиональный инструментарий и оборудование, техническое оборудование, не имеющие опасных свойств — инструменты разных профессий, которые сами по себе не могут нанести существенный урон окружающим существам или самой станции.</div> | | <pre> |
| {{Smuggling/Item | | {{#invoke:Сущность|jsonList |
| |Уровень =
| | | {{{damage.types}}} |
| |id = | | | type = enum |
| |Иконка = Multitool.png | | | key_replace = <nowiki>\1</nowiki> <!-- "Blunt" --> |
| |Название = Инженерные инструменты | | | value_replace = <nowiki>'''\1''' \2</nowiki> <!-- "'''10''' Blunt" --> |
| |Описание = | |
| Все инструменты, кроме лома и гаечного ключа.
| |
| <br><br> | |
| Примеры:
| |
| * {{PicName|Screwdriver.png|Screwdriver}}
| |
| * {{PicName|PowerDrill.png|PowerDrill}}
| |
| * {{PicName|Wirecutter.png|Wirecutter}}
| |
| }} | | }} |
| | </pre> |
|
| |
|
| {{Smuggling/Item
| | === p.json: превращение JSON в вызовы шаблонов === |
| |Уровень = высокий
| | Режим для случаев, когда в JSON лежит список эффектов/объектов, и нужно по каждому вызвать отдельный шаблон. |
| |id = CyberPen
| |
| |Иконка =
| |
| |Название =
| |
| |Описание =
| |
| Для всех это цветная ручка.
| |
| | |
| Информированный персонал знает, что CyberSun выпускает ручки с модифицированным ластиком.
| |
| | |
| При осмотре видно, что кончик ручки имеет нагревающийся ластик, способный достигать более чем 150°.
| |
| | |
| При осмотре видно, что колпачок ручки является небольшой отвёрткой.
| |
| | |
| Наличие такой ручки может быть основанием для дополнительной проверки документов лица.
| |
| }}
| |
|
| |
|
| {{Smuggling/Item | | <pre> |
| |Уровень = Текст
| | {{#invoke:Сущность|json |
| |id = PinpointerNuclear | | | <json или {{{...}}}> |
| |Иконка =
| | | <путь_к_шаблону> |
| |Название =
| |
| |Описание = | |
| Текст
| |
| }} | | }} |
| | </pre> |
|
| |
|
| <div class="SmugglingText">Безопасные медицинские вещества - вещества, оказывающие благоприятное воздействие на организм, получение которых возможно в химической лаборатории или в ботанике. Не имеют вредного влияния на организм при приёме в безопасных дозах. Безопасные бытовые вещества - вещества, не предназначенные для приема в пишу и лечения, однако применяемые в уборке, ботанике и ксеноархеологии. Не оказывают отрицательного воздействия на организм.</div> | | * '''1‑й параметр / <code>json=</code>''' — строка JSON. |
| '''Примерный перечень:''' | | * '''2‑й параметр / <code>template=</code>''' — путь к шаблону, например <code>Component/adjustPlant</code>. |
| <div class="SmugglingElements">
| |
| <span>Ультраваскулин</span>
| |
| <span>Аритразин</span>
| |
| <span>Транексамовая кислота</span> | |
| <span>Барозин</span>
| |
| <span>Пунктураз</span>
| |
| <span>Синаптизин</span> | |
| </div> | |
|
| |
|
| <div class="SmugglingText">Безопасные химические элементы - стандартные элементы не имеющие отрицательного влияния на организм.</div>
| | Ожидаемый формат JSON‑массива: |
| <div class="SmugglingElements">
| |
| <span>[[Химия#Элементы|Все элементы]], кроме воды, радия, урана.</span>
| |
| <span>Руда, кроме банановой и урановой</span>
| |
| </div>
| |
| }}<!--
| |
|
| |
|
| --> | | <pre> <!-- <syntaxhighlight lang=json> --> |
| {{MainMenuBlocks/Frame | | [ |
| |title = Статья 432: Незаконное владение опасными предметами
| | { |
| |style = display: flex;gap: 10px;flex-wrap: wrap;padding: 8px 10px;
| | "!type:PlantAdjustNutrition": { |
| |transparency = 65
| | "amount": 0.1 |
| |background-color = #414700
| | } |
| |border-color = #414700
| | }, |
| |content =
| | { |
| | "!type:PlantAdjustWeeds": { |
| | "amount": 2 |
| | } |
| | }, |
| | { |
| | "!type:PlantAdjustPests": { |
| | "amount": 2 |
| | } |
| | } |
| | ] |
| | </pre> <!-- </syntaxhighlight> --> |
|
| |
|
| <div class="SmugglingText">Нарушение эксплуатации или незаконное наличие оборудования, способного нанести серьезный ущерб окружению (РСУ, оборудование для работы с аномалиями и артефактами, семена опасных растений, самодельные гранаты для распространения металлической пены и т.д.).</div>
| | Для каждого элемента создаётся вызов: |
|
| |
|
| {{Smuggling/Item | | <pre> |
| |Уровень =
| | {{Component/adjustPlant |
| |id = RCD | | |id=!type:PlantAdjustNutrition |
| |Иконка = | | |amount=0.1 |
| |Название =
| |
| |Описание =
| |
| Все инструменты, которые могут моментально разрушить обшивку станции/уничтожить окружающие предметы.
| |
| }} | | }} |
| | | {{Component/adjustPlant |
| {{Smuggling/Item | | |id=!type:PlantAdjustWeeds |
| |Уровень =
| | |amount=2 |
| |id = | |
| |Иконка = Chimp.png | |
| |Название = Инструменты для работы с аномалиями
| |
| |Описание =
| |
| Инструменты научного отдела для работы с аномалиями.
| |
| | |
| Примеры:
| |
| * {{PicName|AnomalyLocator.png|AnomalyLocator}}
| |
| * {{PicName|Ape.png|MachineAPE}}
| |
| }} | | }} |
| | | {{Component/adjustPlant |
| {{Smuggling/Item | | |id=!type:PlantAdjustPests |
| |Уровень =
| | |amount=2 |
| |id = | |
| |Иконка = NettleSeeds.png | |
| |Название = Опасные семена
| |
| |Описание =
| |
| Семена растений, содержащих токсины, наркотики, а также опасные мутации
| |
| }} | | }} |
| | </pre> |
|
| |
|
| {{Smuggling/Item | | Особенности: |
| |Уровень = нет
| | * Если JSON — объект вида <code>{ "id1": {...}, "id2": {...} }</code>, происходит аналогичный проход по парам <code>ключ → объект</code>. |
| |id =
| | * Все вызовы склеиваются через перевод строки и прогоняются через <code>frame:preprocess</code>, поэтому внутри шаблона можно использовать любую вики‑разметку. |
| |Иконка = MonkeyCubeBox.png
| |
| |Название = Кубики агрессивных существ
| |
| |Описание =
| |
| Для всех это обычный предмет.
| |
| | |
| После наполнения их водой всем ясно, что это сушеные агрессивные существа.
| |
| | |
| Для определения существ в кубиках требуется навык ксенобеологии.
| |
|
| |
|
| Примеры:
| | == Модуль: GetField == |
| * {{PicName|PlushieCarp.png|DehydratedSpaceCarp}}
| | Модуль <code>GetField</code> используется для доступа к тем же JSON‑данным <code>.../data</code>, но на более низком уровне. |
| * {{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_странице> |
| |Описание = | |
| При беглом осмотре со стороны видно, что в них метал, также есть встроенный диктофон.
| |
| }} | | }} |
| | </pre> |
|
| |
|
| {{Smuggling/Item
| | Например: |
| |Уровень = нет
| |
| |id =
| |
| |Иконка = ClothingHandsGlovesColorBlack.png
| |
| |Название = Воровские перчатки
| |
| |Описание =
| |
| Поверхность перчатки с микроиглами, в них обезбол наркотический, который блокирует ощущения от прикосновения.
| |
|
| |
|
| Владеющие исследованиями и разработкой могут изучить все свойства предмета и проверить его на наличие игл.
| | <pre> |
| | {{#invoke:GetField|flattenField |
| | | MyEntityId |
| | | component/item.json |
| }} | | }} |
| | </pre> |
|
| |
|
| <div class="SmugglingText">Бытовое и холодное оружие, в том числе импровизированное оружие с существенными свойствами поражения (ножи, тесаки, боевые ножи, копья, готовые заточки, луки и арбалеты).</div>
| | Возвращает строку вида: |
| {{Smuggling/Item
| |
| |Уровень =
| |
| |id =
| |
| |Иконка = CombatKnife.png
| |
| |Название = Острые предметы
| |
| |Описание =
| |
| Предметы, имеющие лезвие, острый конец или одновременно то и другое.
| |
|
| |
|
| Примеры: Острые предметы, которые опаснее обычной отвёртки.
| | <pre> |
| }}
| | damage.types={"Blunt":10}|wieldSound=someSound|... |
| | </pre> |
|
| |
|
| {{Smuggling/Item
| | Особенности: |
| |Уровень =
| | * Вложенные объекты кодируются в JSON и заворачиваются в <code><nowiki><nowiki></nowiki></code>, чтобы их можно было безопасно передавать как параметр. |
| |id =
| | * Массивы кодируются в JSON без <code><nowiki><nowiki></nowiki></code>, чтобы удобно обрабатывать их модулями вроде <code>Сущность.jsonList</code>. |
| |Иконка = BowImprovised.png
| |
| |Название = Луки
| |
| |Описание =
| |
| Индивидуальные метательное оружия, предназначенные для стрельбы стрелами.
| |
|
| |
|
| Примеры: Луки, арбалеты, в том числе самодельные.
| | Этот режим используется внутри <code>GetField.getTpl</code> и других обёрток. |
| }}
| |
|
| |
|
| <div class="SmugglingText">Светошумовые, ослепляющие, слезоточивые, дымовые гранаты, вспышки, самодельные гранаты с аналогичными свойствами.</div>
| | === p.get: получение значения по пути === |
| {{Smuggling/Item | | <pre> |
| |Уровень =
| | {{#invoke:GetField|get |
| |id = GrenadeFlashBang | | | <id или пусто для "default"> |
| |Иконка = | | | <путь_к_json_странице> |
| |Название = | | | <ключ.с.точками> |
| |Описание =
| |
| Гранаты, которые не наносят урона окружающим, но ухудшают зрение/восприятие.
| |
| }} | | }} |
| | | </pre> |
| {{Smuggling/Item
| |
| |Уровень = нет
| |
| |id =
| |
| |Иконка = Lantern.png
| |
| |Название = Сверхъяркий светильник
| |
| |Описание =
| |
| Для всех это подозрительно слишком яркий светильник.
| |
| | |
| При активации или осмотре понятно, что в него встроена вспышка.
| |
| }}
| |
| | |
| <div class="SmugglingText">Оружейные магазины, патроны, наручники, самодельные и фабричные дубинки, станеры, бола.</div>
| |
| {{Smuggling/Item
| |
| |Уровень =
| |
| |id =
| |
| |Иконка = MagazineRifle.png
| |
| |Название = Боеприпасы
| |
| |Описание =
| |
| Всё, чем заправляется оружие дальнего боя.
| |
|
| |
|
| Примеры: | | Примеры: |
| * {{PicName|PistolCartridge.png|CartridgePistolIncendiary}}
| |
| }}
| |
|
| |
| {{Smuggling/Item
| |
| |Уровень =
| |
| |id =
| |
| |Иконка = Handcuffs.png
| |
| |Название = Средства обездвиживания
| |
| |Описание =
| |
| Средства обездвиживания цели.
| |
|
| |
|
| Примеры:
| | <pre> |
| * {{PicName|Bola.png|Bola}}
| | {{#invoke:GetField|get |
| | | MyEntityId |
| | | component/item.json |
| | | damage.types |
| }} | | }} |
| | </pre> |
|
| |
|
| <div class="SmugglingText">Охранные визоры, повязки, ключи шифрования, рации и иные средства получения закрытой информации — всё, что помогает получить внутреннюю информацию СБ, Командования, вышестоящих членов НТ: кто в розыске, переговоры по радиоканалу, приказы не для общественности и т.д.</div>
| | Если в JSON: |
| {{Smuggling/Item
| |
| |Уровень =
| |
| |id =
| |
| |Иконка = ClothingEyesHudSecurity.png
| |
| |Название = Предметы с закрытой информацией
| |
| |Описание =
| |
| Предметы, которые отображают или передают закрытую информацию.
| |
|
| |
|
| Примеры:
| | <pre> <!-- <syntaxhighlight lang=json> --> |
| * {{PicName|RadioHandheldSecurity.png|RadioHandheldSecurity}}
| | "damage": { |
| }}
| | "types": { |
| | | "Blunt": 10 |
| <div class="SmugglingText">Опасные препараты и хозяйственные вещества. У веществ всегда имеется выраженный отрицательный эффект.</div> | | } |
| '''Примерный перечень:'''
| | } |
| <div class="SmugglingElements">
| | </pre> <!-- </syntaxhighlight> --> |
| <span>Масло ТГК</span>
| |
| <span>Счастье</span>
| |
| <span>Бананадин</span>
| |
| <span>Космические наркотики</span>
| |
| <span>ТГК</span> | |
| <span>Токсин майндбрейкер</span>
| |
| <span>Оксид азота</span>
| |
| <span>Хлоральгидрат</span>
| |
| </div>
| |
|
| |
|
| }}<!--
| | то результатом будет: |
|
| |
|
| -->
| | <pre> |
| {{MainMenuBlocks/Frame | | {"Blunt":10} |
| |title = Статья 433: Нарушение порядка владения регулируемыми предметами
| | </pre> |
| |style = display: flex;gap: 10px;flex-wrap: wrap;padding: 8px 10px;
| |
| |transparency = 65
| |
| |background-color = #5f3800
| |
| |border-color = #714300
| |
| |content =
| |
|
| |
|
| <div class="SmugglingText">Бытовое, импровизированное, холодное и дальнобойное оружие, имеющее дополнительную маскировку в целях скрытого ношения — изменение внешнего вида оружия так, чтобы его можно было носить скрытно, и его наличие не было известно при проверках.</div> | | то есть: |
| {{Smuggling/Item
| | * для таблиц модуль пытается сделать <code>mw.text.jsonEncode(v)</code> и вернуть JSON‑строку; |
| |Уровень = низкий
| | * для простых значений возвращается строка <code>tostring(v)</code>. |
| |id =
| |
| |Иконка = RevolverCapGun.png
| |
| |Название = Фальшивый игрушечный пистолет
| |
| |Описание =
| |
| Владеющие навыком владения оружия при детальном осмотре поймут, что это боевое оружие.
| |
|
| |
|
| После выстрела боевыми патронами, всем ясно, что это револьвер, обклеенный пластиком.
| | Если <code>keyPath</code> пуст, возвращается весь объект (как JSON). |
|
| |
|
| При отсутствии разрешения ношения оружия вменяется 434 статья КЗ (Незаконное владение регулируемыми веществами).
| | === p.getTpl: вызов шаблона по данным JSON === |
| | <pre> |
| | {{#invoke:GetField|getTpl |
| | | <id> |
| | | <путь_к_json_странице> |
| | | <путь_к_шаблону> |
| }} | | }} |
| | </pre> |
|
| |
|
| {{Smuggling/Item
| | Пример: |
| |Уровень = низкий
| |
| |id =
| |
| |Иконка = Cane.png
| |
| |Название = Трость с лезвием внутри
| |
| |Описание =
| |
| При детальном осмотре всем видно, что трость откручивается.
| |
|
| |
|
| Всем ясно, что это меч, замаскированный под трость.
| | <pre> |
| | {{#invoke:GetField|getTpl |
| | | MyEntityId |
| | | component/item.json |
| | | Component/meleeWeapon |
| }} | | }} |
| | </pre> |
|
| |
|
| {{Smuggling/Item
| | Работа: |
| |Уровень = нет
| | * внутри вызывает <code>flattenField</code>, получая строку <code>key=value|...</code>; |
| |id = | | * формирует строку вида: |
| |Иконка = ToolboxElectrical.png
| |
| |Название = Турель-тулбокс
| |
| |Описание =
| |
| Для всех это обычный ящик инструментов электрика.
| |
|
| |
|
| После активации всем ясно, что это мобильная баллистическая турель.
| | <pre> |
| | {{Component/meleeWeapon |
| | |id=MyEntityId |
| | |damage.types=... |
| | |... |
| }} | | }} |
| | </pre> |
|
| |
|
| {{Smuggling/Item
| | * и прогоняет её через <code>frame:preprocess</code>, возвращая итоговый рендер. |
| |Уровень = низкий
| |
| |id = WeaponPistolCHIMPUpgradeKit
| |
| |Иконка =
| |
| |Название =
| |
| |Описание =
| |
| Владеющие исследованиями и разработкой видят, что это плата для модификации М.А.Р.Т.Ы.Х.
| |
|
| |
|
| Для всех остальных это немаркированная плата.
| | Это удобный способ «подключить» шаблон компонента к данным из JSON без ручного перечисления параметров. |
|
| |
|
| Владеющие исследованиями и разработкой видят, что М.А.Р.Т.Ы.Х. был модифицирован после установки чипа.
| | === p.getTplProto: вызов шаблона по прототипам === |
| | | <pre> |
| Владеющие исследованиями и разработкой могут изучить все свойства предмета.
| | {{#invoke:GetField|getTplProto |
| | | <searchId> |
| | | <protoId> |
| | | <путь_к_шаблону> |
| }} | | }} |
| | </pre> |
|
| |
|
| {{Smuggling/Item
| | * Ищет в <code>prototype.json</code> все записи, где <code>protoId</code> встречается у <code>searchId</code>. |
| |Уровень = нет
| | * Для каждого найденного ID вызывает <code>getTpl</code> и возвращает все вызовы, склеенные через перевод строки и отрендеренные. |
| |id =
| |
| |Иконка = ClothingHandsGlovesBoxingBlue.png
| |
| |Название = Свинцовые боксерские перчатки
| |
| |Описание =
| |
| Для всех это обычные боксерские перчатки. | |
|
| |
|
| После нанесения удара всем ясно, что в внутри них свинец.
| | Используется для случаев, когда сущность использует '''несколько''' прототипов одного типа, и нужно вывести по одному шаблону на каждый прототип. |
| }}
| |
|
| |
|
| {{Smuggling/Item
| | == Типичный рабочий поток == |
| |Уровень = нет
| | # В JSON‑файлах (<code>component.json</code>, <code>prototype.json</code> и др.) описываются сущности и связи компонент/прототипов. |
| |id =
| | # Для каждого компонента/прототипа создаются шаблоны <code>Template:Component/...</code>, <code>Template:prototype/...</code>, которые: |
| |Иконка = TrashBananaPeel.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; |
| | | #* <code>Сущность.json</code> — если нужно превратить список эффектов в набор вызовов шаблона; |
| {{Smuggling/Item
| | #* <code>GetField.get</code> — если нужно точечно вытащить одно поле; |
| |Уровень = нет
| | #* <code>GetField.getTpl</code> / <code>getTplProto</code> — если нужно строить шаблоны по данным JSON автоматически. |
| |id = WeaponBaguette
| |
| |Иконка =
| |
| |Название =
| |
| |Описание =
| |
| Для всех это обычный багет.
| |
| | |
| После нанесения удара всем ясно, что в внутри багета спрятан клинок.
| |
| }}
| |
| | |
| {{Smuggling/Item
| |
| |Уровень = нет
| |
| |id = WeaponCroissant
| |
| |Иконка =
| |
| |Название =
| |
| |Описание =
| |
| Для всех это обычный круассан.
| |
| | |
| После броска всем ясно, что в внутри багета спрятан клинок.
| |
| }}
| |
| | |
| <div class="SmugglingText">text1</div> | |
| {{Smuggling/Item
| |
| |Уровень = высокий
| |
| |id = GatfruitSeeds
| |
| |Иконка =
| |
| |Название =
| |
| |Описание =
| |
| Для всех плоды выглядят как замаскированное оружие. Само растение и семена — выглядят обычными.
| |
| | |
| Для владеющих продвинутой ботаникой семена и само растение выглядят очень подозрительно.
| |
| | |
| Владеющие продвинутой ботаникой могут изучить все свойства предмета.
| |
| }}
| |
| | |
| {{Smuggling/Item
| |
| |Уровень = высокий
| |
| |id =
| |
| |Иконка = AmmoTechFab.png
| |
| |Название = Техфабы службы безопасности
| |
| |Описание =
| |
| Техфаб патронов, ОхранФаб.
| |
| | |
| Всем видно меню с возможностью печати патронов и оружия на них.
| |
| }}
| |
| | |
| {{Smuggling/Item
| |
| |Уровень = нет
| |
| |id =
| |
| |Иконка = Autolathe.png
| |
| |Название = Взломанный автолат/протолат
| |
| |Описание =
| |
| Просматривая меню с возможностью печати, все могут увидеть возможность печати оружия, патронов.
| |
| }}
| |
| | |
| <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: 10px;flex-wrap: wrap;padding: 8px 10px;
| |
| |transparency = 65
| |
| |background-color = #611300
| |
| |border-color = #731700
| |
| |content =
| |
| | |
| <div class="SmugglingText">Огнестрельное, лазерное и импульсное оружие дальнего боя, гранатомёты и заряды к ним, в том числе в составе модулей или иных компанентов синтетиков — любое оружие дальнего боя, кроме луков и арбалетов.</div>
| |
| {{Smuggling/Item
| |
| |Уровень =
| |
| |id =
| |
| |Иконка =
| |
| |Название =
| |
| |Описание =
| |
| }}
| |
| | |
| {{Smuggling/Item
| |
| |Уровень =
| |
| |id =
| |
| |Иконка =
| |
| |Название =
| |
| |Описание =
| |
| }}
| |
| | |
| <div class="SmugglingText">ЭМИ гранаты, сейсмические заряды, взрывчатка, кластерные травматические и травматические гранаты, зажигательные гранаты, а также самодельные гранаты с аналогичными свойствами.</div>
| |
| {{Smuggling/Item
| |
| |Уровень =
| |
| |id =
| |
| |Иконка =
| |
| |Название =
| |
| |Описание =
| |
| }}
| |
| | |
| {{Smuggling/Item
| |
| |Уровень =
| |
| |id =
| |
| |Иконка =
| |
| |Название =
| |
| |Описание =
| |
| }}
| |
| | |
| {{Smuggling/Item
| |
| |Уровень =
| |
| |id =
| |
| |Иконка =
| |
| |Название =
| |
| |Описание =
| |
| }}
| |
| | |
| {{Smuggling/Item
| |
| |Уровень =
| |
| |id =
| |
| |Иконка =
| |
| |Название =
| |
| |Описание =
| |
| }}
| |
| | |
| {{Smuggling/Item
| |
| |Уровень =
| |
| |id =
| |
| |Иконка =
| |
| |Название =
| |
| |Описание =
| |
| }}
| |
| | |
| {{Smuggling/Item
| |
| |Уровень =
| |
| |id =
| |
| |Иконка =
| |
| |Название =
| |
| |Описание =
| |
| }}
| |
| | |
| {{Smuggling/Item
| |
| |Уровень =
| |
| |id =
| |
| |Иконка =
| |
| |Название =
| |
| |Описание =
| |
| }}
| |
| | |
| {{Smuggling/Item
| |
| |Уровень =
| |
| |id =
| |
| |Иконка =
| |
| |Название =
| |
| |Описание =
| |
| }}
| |
| | |
| {{Smuggling/Item
| |
| |Уровень =
| |
| |id =
| |
| |Иконка =
| |
| |Название =
| |
| |Описание =
| |
| }}
| |
| | |
| {{Smuggling/Item
| |
| |Уровень =
| |
| |id =
| |
| |Иконка =
| |
| |Название =
| |
| |Описание =
| |
| }}
| |
| | |
| {{Smuggling/Item
| |
| |Уровень =
| |
| |id =
| |
| |Иконка =
| |
| |Название =
| |
| |Описание =
| |
| }}
| |
| | |
| {{Smuggling/Item
| |
| |Уровень =
| |
| |id =
| |
| |Иконка =
| |
| |Название =
| |
| |Описание =
| |
| }}
| |
| | |
| {{Smuggling/Item
| |
| |Уровень =
| |
| |id =
| |
| |Иконка =
| |
| |Название =
| |
| |Описание =
| |
| }}
| |
| | |
| {{Smuggling/Item
| |
| |Уровень =
| |
| |id =
| |
| |Иконка =
| |
| |Название =
| |
| |Описание =
| |
| }}
| |
| {{Smuggling/Item
| |
| |Уровень =
| |
| |id =
| |
| |Иконка =
| |
| |Название =
| |
| |Описание =
| |
| }}
| |
| | |
| {{Smuggling/Item
| |
| |Уровень = средний
| |
| |id =
| |
| |Иконка = WhiteholeGrenade.png
| |
| |Название = Искажающее гранаты
| |
| |Описание =
| |
| Гранаты, которые не наносят урона окружающим, но ухудшают зрение/восприятие.
| |
| | |
| Перечень:
| |
| * {{PicName|WhiteholeGrenade.png|WhiteholeGrenade}} | |
| * {{PicName|Supermattergrenade.png|SupermatterGrenade}}
| |
| }}
| |
| | |
| <div class="SmugglingText">Небезопасные и/или неизученные артефакты, радиоактивные предметы.</div> | |
| {{Smuggling/Item | |
| |Уровень = | |
| |id =
| |
| |Иконка =
| |
| |Название =
| |
| |Описание =
| |
| }}
| |
| | |
| {{Smuggling/Item
| |
| |Уровень =
| |
| |id =
| |
| |Иконка =
| |
| |Название =
| |
| |Описание =
| |
| }} | |
| | |
| <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: 10px;flex-wrap: wrap;padding: 8px 10px;
| |
| |transparency = 65
| |
| |background-color = #57000C
| |
| |border-color = #69000e
| |
| |content =
| |
| | |
| <div class="SmugglingText">Энергетическое оружие ближнего боя или производные от него приспособления (энергетические мечи в любом виде и форме, энергетические щиты).</div> | |
| {{Smuggling/Item | |
| |Уровень =
| |
| |id =
| |
| |Иконка =
| |
| |Название = | |
| |Описание = | |
| }} | |
| | |
| {{Smuggling/Item
| |
| |Уровень =
| |
| |id =
| |
| |Иконка =
| |
| |Название =
| |
| |Описание =
| |
| }}
| |
| | |
| {{Smuggling/Item
| |
| |Уровень =
| |
| |id =
| |
| |Иконка =
| |
| |Название =
| |
| |Описание =
| |
| }}
| |
| | |
| {{Smuggling/Item
| |
| |Уровень =
| |
| |id =
| |
| |Иконка =
| |
| |Название =
| |
| |Описание =
| |
| }}
| |
| | |
| {{Smuggling/Item
| |
| |Уровень =
| |
| |id =
| |
| |Иконка =
| |
| |Название =
| |
| |Описание =
| |
| }}
| |
| | |
| {{Smuggling/Item
| |
| |Уровень =
| |
| |id =
| |
| |Иконка =
| |
| |Название =
| |
| |Описание =
| |
| }}
| |
| | |
| {{Smuggling/Item
| |
| |Уровень =
| |
| |id =
| |
| |Иконка =
| |
| |Название =
| |
| |Описание =
| |
| }}
| |
| | |
| <div class="SmugglingText">Копии особо ценного оборудования, происхождение которых не установлено.</div>
| |
| {{Smuggling/Item
| |
| |Уровень =
| |
| |id =
| |
| |Иконка =
| |
| |Название =
| |
| |Описание =
| |
| }}
| |
| | |
| {{Smuggling/Item
| |
| |Уровень =
| |
| |id =
| |
| |Иконка =
| |
| |Название =
| |
| |Описание =
| |
| }}
| |
| | |
| <div class="SmugglingText">Импланты неустановленного происхождения — [[Импланты|все импланты]] кроме тех, которые продаются в Карго или были направлены ЦК.</div>
| |
| {{Smuggling/Item
| |
| |Уровень =
| |
| |id =
| |
| |Иконка =
| |
| |Название =
| |
| |Описание =
| |
| }}
| |
| | |
| {{Smuggling/Item
| |
| |Уровень =
| |
| |id =
| |
| |Иконка =
| |
| |Название =
| |
| |Описание =
| |
| }}
| |
| | |
| {{Smuggling/Item
| |
| |Уровень =
| |
| |id =
| |
| |Иконка =
| |
| |Название =
| |
| |Описание =
| |
| }}
| |
| | |
| {{Smuggling/Item
| |
| |Уровень =
| |
| |id =
| |
| |Иконка =
| |
| |Название =
| |
| |Описание =
| |
| }}
| |
| | |
| {{Smuggling/Item
| |
| |Уровень =
| |
| |id =
| |
| |Иконка =
| |
| |Название =
| |
| |Описание =
| |
| }}
| |
| | |
| {{Smuggling/Item
| |
| |Уровень =
| |
| |id =
| |
| |Иконка =
| |
| |Название =
| |
| |Описание =
| |
| }}
| |
| | |
| <div class="SmugglingText">Нелицензированные модули и компаненты синтетиков, синтетики неопознанного происхождения.</div> | |
| {{Smuggling/Item | |
| |Уровень =
| |
| |id =
| |
| |Иконка = | |
| |Название =
| |
| |Описание =
| |
| }}
| |
| | |
| }}<!-- | |
| | |
| -->
| |
| {{MainMenuBlocks/Frame
| |
| |title = Статья 436: Незаконное владение вражеским снаряжением
| |
| |style = display: flex;gap: 10px;flex-wrap: wrap;padding: 8px 10px;
| |
| |transparency = 65
| |
| |background-color = #2f2f39
| |
| |border-color = #3e3e4b
| |
| |content =
| |
| | |
| <div class="SmugglingText">Предметы со свойствами маскировки владельца или самих себя, мимикрии под окружающий мир.</div>
| |
| {{Smuggling/Item
| |
| |Уровень =
| |
| |id =
| |
| |Иконка =
| |
| |Название =
| |
| |Описание =
| |
| }}
| |
| | |
| {{Smuggling/Item
| |
| |Уровень =
| |
| |id =
| |
| |Иконка =
| |
| |Название =
| |
| |Описание =
| |
| }}
| |
| | |
| {{Smuggling/Item
| |
| |Уровень =
| |
| |id =
| |
| |Иконка =
| |
| |Название =
| |
| |Описание =
| |
| }}
| |
| | |
| {{Smuggling/Item
| |
| |Уровень =
| |
| |id =
| |
| |Иконка =
| |
| |Название =
| |
| |Описание =
| |
| }}
| |
| | |
| {{Smuggling/Item
| |
| |Уровень =
| |
| |id =
| |
| |Иконка =
| |
| |Название =
| |
| |Описание =
| |
| }}
| |
| | |
| {{Smuggling/Item
| |
| |Уровень =
| |
| |id =
| |
| |Иконка =
| |
| |Название =
| |
| |Описание =
| |
| }}
| |
| | |
| {{Smuggling/Item
| |
| |Уровень =
| |
| |id =
| |
| |Иконка =
| |
| |Название =
| |
| |Описание =
| |
| }}
| |
| | |
| <div class="SmugglingText">Шпионское оборудование для вмешательства в связь и незаконную передачу данных, взлома оборудования.</div>
| |
| {{Smuggling/Item
| |
| |Уровень =
| |
| |id =
| |
| |Иконка =
| |
| |Название =
| |
| |Описание =
| |
| }}
| |
| | |
| {{Smuggling/Item
| |
| |Уровень =
| |
| |id =
| |
| |Иконка =
| |
| |Название =
| |
| |Описание =
| |
| }}
| |
| | |
| {{Smuggling/Item
| |
| |Уровень =
| |
| |id =
| |
| |Иконка =
| |
| |Название =
| |
| |Описание =
| |
| }}
| |
| | |
| {{Smuggling/Item
| |
| |Уровень =
| |
| |id =
| |
| |Иконка =
| |
| |Название =
| |
| |Описание =
| |
| }}
| |
| | |
| {{Smuggling/Item
| |
| |Уровень =
| |
| |id =
| |
| |Иконка =
| |
| |Название =
| |
| |Описание =
| |
| }}
| |
| | |
| {{Smuggling/Item
| |
| |Уровень =
| |
| |id =
| |
| |Иконка =
| |
| |Название =
| |
| |Описание =
| |
| }}
| |
| | |
| {{Smuggling/Item
| |
| |Уровень =
| |
| |id =
| |
| |Иконка =
| |
| |Название =
| |
| |Описание =
| |
| }}
| |
| | |
| {{Smuggling/Item
| |
| |Уровень =
| |
| |id =
| |
| |Иконка =
| |
| |Название =
| |
| |Описание =
| |
| }}
| |
| | |
| {{Smuggling/Item
| |
| |Уровень =
| |
| |id =
| |
| |Иконка =
| |
| |Название =
| |
| |Описание =
| |
| }}
| |
| | |
| <div class="SmugglingText">Магическое и аномальное оружие, оборудование и предметы.</div> | |
| {{Smuggling/Item
| |
| |Уровень =
| |
| |id =
| |
| |Иконка =
| |
| |Название =
| |
| |Описание =
| |
| }}
| |
| | |
| {{Smuggling/Item
| |
| |Уровень =
| |
| |id =
| |
| |Иконка =
| |
| |Название =
| |
| |Описание =
| |
| }}
| |
| | |
| {{Smuggling/Item
| |
| |Уровень =
| |
| |id =
| |
| |Иконка =
| |
| |Название =
| |
| |Описание =
| |
| }}
| |
| | |
| <div class="SmugglingText">Оборудование для связи и получения товаров с запрещённых мест продаж, сами товары, полученные данным образом.</div> | |
| {{Smuggling/Item
| |
| |Уровень =
| |
| |id =
| |
| |Иконка =
| |
| |Название =
| |
| |Описание =
| |
| }}
| |
| | |
| {{Smuggling/Item
| |
| |Уровень =
| |
| |id =
| |
| |Иконка =
| |
| |Название =
| |
| |Описание =
| |
| }}
| |
| | |
| {{Smuggling/Item
| |
| |Уровень =
| |
| |id =
| |
| |Иконка =
| |
| |Название =
| |
| |Описание =
| |
| }}
| |
| | |
| {{Smuggling/Item
| |
| |Уровень =
| |
| |id =
| |
| |Иконка =
| |
| |Название =
| |
| |Описание =
| |
| }}
| |
| | |
| {{Smuggling/Item
| |
| |Уровень =
| |
| |id =
| |
| |Иконка =
| |
| |Название =
| |
| |Описание =
| |
| }}
| |
| | |
| <div class="SmugglingText">Запрещённые к провозу разработки, оборудование и экипировка экстремистских и вражеских организаций, формирований.</div> | |
| {{Smuggling/Item
| |
| |Уровень =
| |
| |id =
| |
| |Иконка =
| |
| |Название =
| |
| |Описание =
| |
| }}
| |
| | |
| {{Smuggling/Item
| |
| |Уровень =
| |
| |id =
| |
| |Иконка =
| |
| |Название =
| |
| |Описание =
| |
| }}
| |
| | |
| {{Smuggling/Item
| |
| |Уровень =
| |
| |id =
| |
| |Иконка =
| |
| |Название =
| |
| |Описание =
| |
| }}
| |
| | |
| {{Smuggling/Item
| |
| |Уровень =
| |
| |id =
| |
| |Иконка =
| |
| |Название =
| |
| |Описание =
| |
| }}
| |
| | |
| <div class="SmugglingText">Ядерное, биологическое, структурное и иное оружие и средства массового поражения.</div> | |
| {{Smuggling/Item
| |
| |Уровень =
| |
| |id =
| |
| |Иконка =
| |
| |Название =
| |
| |Описание =
| |
| }}
| |
| | |
| {{Smuggling/Item
| |
| |Уровень =
| |
| |id =
| |
| |Иконка =
| |
| |Название =
| |
| |Описание =
| |
| }}
| |
| | |
| {{Smuggling/Item
| |
| |Уровень =
| |
| |id =
| |
| |Иконка =
| |
| |Название =
| |
| |Описание =
| |
| }}
| |
| | |
| {{Smuggling/Item
| |
| |Уровень =
| |
| |id =
| |
| |Иконка =
| |
| |Название =
| |
| |Описание =
| |
| }}
| |
| | |
| }}<!--
| |
| | |
| -->
| |
| {{MainMenuBlocks/Frame
| |
| |title = Подозрительное
| |
| |style = display: flex;gap: 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;
| |
| margin: 6px 0;
| |
| }
| |
| | |
| .SmugglingElements {
| |
| width: 100%;
| |
| }
| |
| | |
| .SmugglingElements p {
| |
| display: flex;
| |
| flex-wrap: wrap;
| |
| align-items: center;
| |
| gap: 4px;
| |
| width: 40%;
| |
| margin: 0;
| |
| }
| |
| | |
| .SmugglingElements span {
| |
| border-radius: 0.25em;
| |
| padding: 2px 6px;
| |
| background-color: #ffffff03;
| |
| 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;
| |
| }
| |
| }}
| |
 | Этот шаблон реализован на основе Lua: |
Модульный набор {{#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 и возвращает все вызовы, склеенные через перевод строки и отрендеренные.
Используется для случаев, когда сущность использует несколько прототипов одного типа, и нужно вывести по одному шаблону на каждый прототип.
Типичный рабочий поток
- В JSON‑файлах (
component.json, prototype.json и др.) описываются сущности и связи компонент/прототипов.
- Для каждого компонента/прототипа создаются шаблоны
Template:Component/..., Template:prototype/..., которые:
- вызывают
{{#invoke:Сущность/поля|main ...}} для описания полей карточки;
- при необходимости используют
GetField / Сущность.jsonList / Сущность.json для форматирования сложных JSON‑полей.
- Для вывода карточки на странице сущности используется:
- либо прямой
{{#invoke:Сущность|get|MyEntityId}},
- либо шаблон‑обёртка
{{Сущность/карточка|MyEntityId}}.
- Для специализированных списков/таблиц:
Сущность.jsonList — если нужно красиво показать массив/словарь из JSON;
Сущность.json — если нужно превратить список эффектов в набор вызовов шаблона;
GetField.get — если нужно точечно вытащить одно поле;
GetField.getTpl / getTplProto — если нужно строить шаблоны по данным JSON автоматически.