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

Материал из Space Station 14 Вики
Нет описания правки
Нет описания правки
 
(не показано 337 промежуточных версий 4 участников)
Строка 1: Строка 1:
{{TOC}}
{{docpage}}{{TOC hidden}}
{{verify|1}}
{{OnLua|Сущность|module1=Сущность|module2=Сущность/поля|module3=GetField}}


<h2 style="border-bottom:2px solid #{{ColorPalette|Security|Primary Bold}}>Мечи</h2>
Модульный набор {{tl|Модуль:Сущность}} + {{tl|Модуль:Сущность/поля}} + {{tl|Модуль:GetField}} предназначен для:
<div style="box-shadow: 0 0 .2em #999; border-radius: .2em; margin: 1em 0 1em 0; padding: 1px;">
* автоматической сборки карточек сущностей (компонентов и прототипов) по их ID;
<div style="padding: 1em; background: #4e">
* описания полей в шаблонах компонентов (какие поля идут в карточку, как подписаны);
<div class="mw-collapsible-content">
* удобного доступа к данным из JSON (как простыми значениями, так и готовыми вызовами шаблонов).
'''Общие характеристики:'''<br>
* Способны разделывать туши
* Способны рвать тканевые вещи, превращая их в ткань
</div></div></div>
{|ID="SEC" class="wikitable mobilefont sortable" style="width:100%;text-align:center;"
! rowspan="2" class="unsortable" style="width:10%"|Предмет
! colspan="3" class="unsortable" style="width:20%"|Характеристики
! rowspan="2" class="unsortable" style="width:50%"|Примечания
! rowspan="2" class="unsortable" style="width:20%"|Встречается
|-
!style="width:12%"|{{tooltip|Урон|Наносит повреждения}}
!style="width:5%"|{{tooltip|Скор.|Скорострельность}}
!style="width:5%"|{{tooltip|DPS|Урон в секунду}}
|-
!{{Anchor|Капитанская сабля}}{{#invoke:Entity Lookup|createimagetooltip|Файл:CaptainSabre.png|CaptainSabre|Мета=64x64px,link=}}<br>{{#invoke:Entity Lookup|getname|CaptainSabre}}
|data-sort-value=15|
:<span style="color:indianred">'''15'''</span> Порезы<br>
|style="color:DodgerBlue"|'''1.5'''
|style="color:Yellow"|'''22.5'''
|
* Размер: '''средний'''
* Имеет вероятность отражения снаряда '''50%''', которая снижается до '''10%''' при быстром передвижении
|
* {{#invoke:Entity Lookup|getname|LockerCaptainFilledNoLaser}} {{#invoke:Entity Lookup|createimagetooltip|File:Кэпшкаф-гифка.gif|LockerCaptainFilledNoLaser|Мета=32x32px,link=}}
|-
!{{Anchor|Клеймор}}{{#invoke:Entity Lookup|createimagetooltip|Файл:Claymore.png|Claymore|Мета=64x64px,link=}}<br>{{#invoke:Entity Lookup|getname|Claymore}}
|data-sort-value=20|
:<span style="color:indianred">'''20'''</span> Порезы<br>
|style="color:DodgerBlue"|'''0.75'''
|style="color:Yellow"|'''15'''
|
* Размер: '''средний'''
|
* '''Место:'''
:* [[Пираты|Шаттл пиратов]]
|-
!{{Anchor|Абордажная сабля}}{{#invoke:Entity Lookup|createimagetooltip|Файл:Cutlass.png|Cutlass|Мета=64x64px,link=}}<br>{{#invoke:Entity Lookup|getname|Cutlass}}
|data-sort-value=15|
:<span style="color:indianred">'''15'''</span> Порезы<br>
|style="color:DodgerBlue"|'''1'''
|style="color:Yellow"|'''15'''
|
* Размер: '''средний'''
|
* '''Место:'''
:* [[Пираты|Шаттл пиратов]]
|-
!{{Anchor|Катана}}{{#invoke:Entity Lookup|createimagetooltip|Файл:Katana.png|Katana|Мета=64x64px,link=}}<br>{{#invoke:Entity Lookup|getname|Katana}}
|data-sort-value=15|
:<span style="color:indianred">'''15'''</span> Порезы<br>
|style="color:DodgerBlue"|'''1'''
|style="color:Yellow"|'''15'''
|
* Размер: '''средний'''
|
* <span style="color: LemonChiffon">Нет гарантированных мест спавна на картах</span>
|-
!{{Anchor|Мачете}}{{#invoke:Entity Lookup|createimagetooltip|Файл:Machete.png|Machete|Мета=64x64px,link=}}<br>{{#invoke:Entity Lookup|getname|Machete}}
|data-sort-value=15|
:<span style="color:indianred">'''15'''</span> Порезы<br>
|style="color:DodgerBlue"|'''1'''
|style="color:Yellow"|'''15'''
|
* Размер: '''средний'''
|
* <span style="color: LemonChiffon">Нет гарантированных мест спавна на картах</span>
|-
!{{Anchor|Потусторонний клинок}}{{#invoke:Entity Lookup|createimagetooltip|Файл:EldritchBlade.png|EldritchBlade|Мета=64x64px,link=}}<br>{{#invoke:Entity Lookup|getname|EldritchBlade}}
|data-sort-value=16|
:<span style="color:indianred">'''16'''</span> Порезы<br>
|style="color:DodgerBlue"|'''0.75'''
|style="color:Yellow"|'''12'''
|
* Размер: '''средний'''
|
* <span style="color: LemonChiffon">Нет гарантированных мест спавна на картах</span>
|-
|}


<h2 style="border-bottom:2px solid #{{ColorPalette|Security|Primary Bold}}>Энергетические мечи</h2>
Ниже описан общий принцип работы и отдельные режимы.
<div style="box-shadow: 0 0 .2em #999; border-radius: .2em; margin: 1em 0 1em 0; padding: 1px;">
<div style="padding: 1em; background: #4e">
<div class="mw-collapsible-content">
'''Общие характеристики:'''<br>
* В не активном состоянии:
:* Наносит: <span style="color:crimson">'''4.5'''</span> Ушибы
:* Энергетическое оружия замаскированное, не [[Контрабанда|информированный персонал]] не отличит его от игрушечного
* В активном состоянии:
:* Размер: '''огромный'''
:* Излучает постоянный свет на '''~2''' тайл.
</div></div></div>
{|ID="SEC" class="wikitable mobilefont sortable" style="width:100%;text-align:center;"
! rowspan="2" class="unsortable" style="width:10%"|Предмет
! colspan="3" class="unsortable" style="width:20%"|Характеристики
! rowspan="2" class="unsortable" style="width:50%"|Примечания
! rowspan="2" class="unsortable" style="width:20%"|Встречается
|-
!style="width:12%"|{{tooltip|Урон|Наносит повреждения}}
!style="width:5%"|{{tooltip|Скор.|Скорострельность}}
!style="width:5%"|{{tooltip|DPS|Урон в секунду}}
|-
!{{Anchor|Энергетический меч}}{{#invoke:Entity Lookup|createimagetooltip|Файл:EnergySword.png|EnergySword|Мета=64x64px,link=}}<br>Энергетический меч
|data-sort-value=30|
:<span style="color:indianred">'''15'''</span> Порезы<br>
:<span style="color:orange">'''15'''</span> Термические<br>
:<span style="color:DarkGray">'''20'''</span> Структурные<br>
|style="color:DodgerBlue"|'''1'''
|style="color:Yellow"|'''30'''
|
* Размер: '''маленький'''
* Имеет вероятность отражения снаряда '''50%''', которая снижается до '''25%''' при быстром передвижении
|
* [[Аплинк|Аплинк]] [[Файл:ReinforcementRadio.png]]
|-
!{{Anchor|Энергетический двухклинковый меч}}{{#invoke:Entity Lookup|createimagetooltip|Файл:EnergySwordDouble.png|EnergySwordDouble|Мета=64x64px,link=}}<br>Энергетический двухклинковый меч
|data-sort-value=24|
:<span style="color:indianred">'''12'''</span> Порезы
:<span style="color:orange">'''12'''</span> Термические
:<span style="color:DarkGray">'''15'''</span> Структурные
|style="color:DodgerBlue"|'''1.5'''
|style="color:Yellow"|'''36'''
|
* Размер: '''маленький'''
* Занимает две руки во включенном состоянии
* Имеет вероятность отражения снаряда '''80 %''', которая снижается до '''65%''' при быстром передвижении
|
* <span style="color: LemonChiffon">Нет гарантированных мест спавна на картах</span>
|-
!{{Anchor|Энергокинжал}}{{#invoke:Entity Lookup|createimagetooltip|Файл:EnergyDagger.png|EnergyDagger|Мета=64x64px,link=}}<br>Энергокинжал
|data-sort-value=20|
:<span style="color:indianred">'''10'''</span> Порезы
:<span style="color:orange">'''10'''</span> Термические
|style="color:DodgerBlue"|'''1'''
|style="color:Yellow"|'''20'''
|
* Размер: '''крошечный'''
* Имеет вероятность отражения снаряда '''50%''', которая снижается до '''25%''' при быстром передвижении
|
* [[Аплинк|Аплинк]] [[Файл:ReinforcementRadio.png]]
|-
!{{Anchor|Энергетическая абордажная сабля}}{{#invoke:Entity Lookup|createimagetooltip|Файл:EnergyCutlass.png|EnergyCutlass|Мета=64x64px,link=}}<br>Энергетическая абордажная сабля
|data-sort-value=22|
:<span style="color:indianred">'''10'''</span> Порезы
:<span style="color:orange">'''12'''</span> Термические
|style="color:DodgerBlue"|'''1'''
|style="color:Yellow"|'''22'''
|
* Размер: '''маленький'''
* Имеет вероятность отражения снаряда '''50%''', которая снижается до '''25%''' при быстром передвижении
|
* '''Место:'''
:* [[Пираты|Шаттл пиратов]]
|-
!{{Anchor|Энергокатана}}{{#invoke:Entity Lookup|createimagetooltip|Файл:EnergyKatana.png|EnergyKatana|Мета=64x64px,link=}}<br>{{#invoke:Entity Lookup|getname|EnergyKatana}}
|data-sort-value=30|
:<span style="color:indianred">'''30'''</span> Порезы
|style="color:DodgerBlue"|'''1.5'''
|style="color:Yellow"|'''45'''
|
* Размер: '''средний'''
* Имеет вероятность отражения снаряда '''30 %'''
* <span style="color: LemonChiffon">Исключения из общих характеристик</span>
|
* '''Начальное снаряжения:'''
:* [[Ниндзя|Космический ниндзя]]
|-
|}


<h2 style="border-bottom:2px solid #{{ColorPalette|Security|Primary Bold}}>Ножи</h2>
== Общий принцип работы ==
<div style="box-shadow: 0 0 .2em #999; border-radius: .2em; margin: 1em 0 1em 0; padding: 1px;">
* В шаблонах компонентов/прототипов (<code>Template:Component/...</code>, <code>Template:prototype/...</code>) через {{tl|Модуль:Сущность/поля}} описываются поля:
<div style="padding: 1em; background: #4e">
** '''лейблы''' (<code>cardLabel_*</code>) и '''содержимое''' (<code>cardContent_*</code>), заголовки (<code>title_*</code>) и т. п.;
<div class="mw-collapsible-content">
** '''мета‑информация''' о том, какие ключи доступны для <code>card</code> / <code>title</code> и в каком порядке.
'''Общие характеристики:'''<br>
* {{tl|Модуль:Сущность}} по ID сущности:
* Способны разделывать туши
** находит связанные с ней компоненты и прототипы по JSON‑данным;
* Способны рвать тканевые вещи, превращая их в ткань
** для каждого компонента/прототипа читает шаблоны и метаданные;
</div></div></div>
** собирает все поля в единую структуру;
{|ID="SEC" class="wikitable mobilefont sortable" style="width:100%;text-align:center;"
** формирует один вызов карточки <code><nowiki>{{карточка/сущность|...}}</nowiki></code> (и блоки заголовков).
! rowspan="2" class="unsortable" style="width:10%"|Предмет
* Внутри полей можно писать вики‑параметры <code>{{{...}}}</code> и вызывать дополнительные модули.
! colspan="3" class="unsortable" style="width:20%"|Характеристики
* {{tl|Модуль:GetField}} даёт доступ к JSON‑данным на низком уровне:
! rowspan="2" class="unsortable" style="width:50%"|Примечания
** как «расплющенный» набор параметров (<code>flattenField</code>);
! rowspan="2" class="unsortable" style="width:20%"|Встречается
** как отдельные значения (<code>get</code>);
|-
** как готовые вызовы шаблонов с нужными параметрами (<code>getTpl</code>, <code>getTplProto</code>).
!style="width:12%"|{{tooltip|Урон|Наносит повреждения}}
!style="width:5%"|{{tooltip|Скор.|Скорострельность}}
!style="width:5%"|{{tooltip|DPS|Урон в секунду}}
|-
!{{Anchor|Кухонный нож}}{{#invoke:Entity Lookup|createimagetooltip|Файл:KitchenKnife.png|KitchenKnife|Мета=64x64px,link=}}<br>{{#invoke:Entity Lookup|getname|KitchenKnife}}
|data-sort-value=10|
:<span style="color:indianred">'''10'''</span> Порезы
|style="color:DodgerBlue"|'''1'''
|style="color:Yellow"|'''10'''
|
* Размер: '''маленький'''
|
* [[Инвентарь сервисного отдела#ПосудоМат|{{#invoke:Entity Lookup|getname|VendingMachineDinnerware}}]] {{#invoke:Entity Lookup|createimagetooltip|File:VendingMachineDinnerware.png|VendingMachineDinnerware|Мета=32x32px}}
|-
!{{Anchor|Мясницкий секач}}{{#invoke:Entity Lookup|createimagetooltip|Файл:ButchCleaver.png|ButchCleaver|Мета=64x64px,link=}}<br>{{#invoke:Entity Lookup|getname|ButchCleaver}}
|data-sort-value=13|
:<span style="color:indianred">'''13'''</span> Порезы
|style="color:DodgerBlue"|'''1.5'''
|style="color:Yellow"|'''19.5'''
|
* Размер: '''средний'''
|
* [[Инвентарь сервисного отдела#ПосудоМат|{{#invoke:Entity Lookup|getname|VendingMachineDinnerware}}]] {{#invoke:Entity Lookup|createimagetooltip|File:VendingMachineDinnerware.png|VendingMachineDinnerware|Мета=32x32px}}
|-
!{{Anchor|Боевой нож}}{{#invoke:Entity Lookup|createimagetooltip|Файл:CombatKnife.png|CombatKnife|Мета=64x64px,link=}}<br>{{#invoke:Entity Lookup|getname|CombatKnife}}
|data-sort-value=12|
:<span style="color:indianred">'''12'''</span> Порезы
|style="color:DodgerBlue"|'''1.5'''
|style="color:Yellow"|'''18'''
|
* Размер: '''маленький'''
* Можно метнуть, нанеся <span style="color:indianred">'''10'''</span> урона порезами
|
* {{#invoke:Entity Lookup|getname|ClothingShoesBootsCombat}} {{#invoke:Entity Lookup|createimagetooltip|File:ClothingShoesBootsCombat.png|ClothingShoesBootsCombat|Мета=32x32px}}
|-
!{{Anchor|Нож для выживания}}{{#invoke:Entity Lookup|createimagetooltip|Файл:SurvivalKnife.png|SurvivalKnife|Мета=64x64px,link=}}<br>{{#invoke:Entity Lookup|getname|SurvivalKnife}}
|data-sort-value=12|
:<span style="color:indianred">'''12'''</span> Порезы
|style="color:DodgerBlue"|'''1.5'''
|style="color:Yellow"|'''18'''
|
* Размер: '''маленький'''
* Можно метнуть, нанеся <span style="color:indianred">'''10'''</span> урона порезами
|
* [[Инвентарь отдела снабжения#Снаряжение специалиста по утилизации|{{#invoke:Entity Lookup|getname|LockerSalvageSpecialistFilledHardsuit}}]] {{#invoke:Entity Lookup|createimagetooltip|File:ШкафУтилизатора-гифка.gif|LockerSalvageSpecialistFilledHardsuit|Мета=32x32px,link=}}
|-
!{{Anchor|Нож-кукри}}{{#invoke:Entity Lookup|createimagetooltip|Файл:KukriKnife.png|KukriKnife|Мета=64x64px,link=}}<br>{{#invoke:Entity Lookup|getname|KukriKnife}}
|data-sort-value=15|
:<span style="color:indianred">'''15'''</span> Порезы
|style="color:DodgerBlue"|'''1'''
|style="color:Yellow"|'''15'''
|
* Размер: '''маленький'''
* Можно метнуть, нанеся <span style="color:indianred">'''10'''</span> урона порезами
|
* <span style="color: LemonChiffon">Нет гарантированных мест спавна на картах</span>
|-
!{{Anchor|Кинжал-крушитель}}{{#invoke:Entity Lookup|createimagetooltip|Файл:Daggercrusher.png|WeaponCrusherDagger|Мета=64x64px,link=}}<br>{{#invoke:Entity Lookup|getname|WeaponCrusherDagger}}
|data-sort-value=15|
:<span style="color:indianred">'''15'''</span> Порезы
|style="color:DodgerBlue"|'''2'''
|style="color:Yellow"|'''30'''
|
* Имеет встроенный фонарик
:* Светит на '''~3''' тайла
|
* '''Место:'''
:* [[Отдел Снабжения#Комната утилизаторов|Комната утилизаторов]]
|-
!{{Anchor|Заточка}}{{#invoke:Entity Lookup|createimagetooltip|Файл:ScalpelShiv.png|ScalpelShiv|Мета=64x64px,link=}}<br>{{#invoke:Entity Lookup|getname|ScalpelShiv}}
|data-sort-value=8|
:<span style="color:indianred">'''8'''</span> Порезы
|style="color:DodgerBlue"|'''1.5'''
|style="color:Yellow"|'''12'''
|
* Размер: '''маленький'''
|
* <span style="color: LemonChiffon">Нет гарантированных мест спавна на картах</span>
|-
!{{Anchor|Серая плоская кепка}}{{#invoke:Entity Lookup|createimagetooltip|Файл:ClothingHeadHatGreyFlatcap.png|BladedFlatcapGrey|Мета=64x64px,link=}}<br>{{#invoke:Entity Lookup|getname|BladedFlatcapGrey}}
|data-sort-value=5|
:<span style="color:indianred">'''5'''</span> Порезы
|style="color:DodgerBlue"|'''1.2'''
|style="color:Yellow"|'''6'''
|
* Размер: '''маленький'''
* Можно метнуть, нанеся <span style="color:indianred">'''10'''</span> урона порезами
|
* {{tooltip|Создаётся в панели строительства [[File:hammer.svg.192dpi.png|24x24px]]|Компоненты|{{#invoke:Entity Lookup|createimagetooltip|Файл:ClothingHeadHatGreyFlatcap.png|ClothingHeadHatGreyFlatcap|Мета=32x32px,link=}} {{#invoke:Entity Lookup|getname|ClothingHeadHatGreyFlatcap}} [1]<br>{{#invoke:Entity Lookup|createimagetooltip|Файл:ShardGlass.png|ShardGlass|Мета=32x32px,link=}} {{#invoke:Entity Lookup|getname|ShardGlass}} [1]<br>}}
|-
!{{Anchor|Заточка}}{{#invoke:Entity Lookup|createimagetooltip|Файл:Shiv.png|Shiv|Мета=64x64px,link=}}<br>{{#invoke:Entity Lookup|getname|Shiv}}
|data-sort-value=5.5|
:<span style="color:indianred">'''5.5'''</span> Порезы
|style="color:DodgerBlue"|'''1.5'''
|style="color:Yellow"|'''8.25'''
|
* Размер: '''маленький'''
|
* {{tooltip|Создаётся в панели строительства [[File:hammer.svg.192dpi.png|24x24px]]|Компоненты|{{#invoke:Entity Lookup|createimagetooltip|Файл:ShardGlass.png|ShardGlass|Мета=32x32px,link=}} {{#invoke:Entity Lookup|getname|ShardGlass}} [1]<br>{{#invoke:Entity Lookup|createimagetooltip|Файл:MaterialCloth1.png|MaterialCloth1|Мета=32x32px,link=}} {{#invoke:Entity Lookup|getname|MaterialCloth1}} [1]<br>}}
|-
!{{Anchor|Усиленная заточка}}{{#invoke:Entity Lookup|createimagetooltip|Файл:ReinforcedShiv.png|ReinforcedShiv|Мета=64x64px,link=}}<br>{{#invoke:Entity Lookup|getname|ReinforcedShiv}}
|data-sort-value=7|
:<span style="color:indianred">'''7'''</span> Порезы
|style="color:DodgerBlue"|'''1.5'''
|style="color:Yellow"|'''10.5'''
|
* Размер: '''маленький'''
|
* {{tooltip|Создаётся в панели строительства [[File:hammer.svg.192dpi.png|24x24px]]|Компоненты|{{#invoke:Entity Lookup|createimagetooltip|Файл:ShardGlassReinforced.png|ShardGlassReinforced|Мета=32x32px,link=}} {{#invoke:Entity Lookup|getname|ShardGlassReinforced}} [1]<br>{{#invoke:Entity Lookup|createimagetooltip|Файл:MaterialCloth1.png|MaterialCloth1|Мета=32x32px,link=}} {{#invoke:Entity Lookup|getname|MaterialCloth1}} [1]<br>}}
|-
!{{Anchor|Плазменая заточка}}{{#invoke:Entity Lookup|createimagetooltip|Файл:PlasmaShiv.png|PlasmaShiv|Мета=64x64px,link=}}<br>{{#invoke:Entity Lookup|getname|PlasmaShiv}}
|data-sort-value=9|
:<span style="color:indianred">'''9'''</span> Порезы
|style="color:DodgerBlue"|'''1.5'''
|style="color:Yellow"|'''13.5'''
|
* Размер: '''маленький'''
|
* {{tooltip|Создаётся в панели строительства [[File:hammer.svg.192dpi.png|24x24px]]|Компоненты|{{#invoke:Entity Lookup|createimagetooltip|Файл:ShardGlassPlasma.png|ShardGlassPlasma|Мета=32x32px,link=}} {{#invoke:Entity Lookup|getname|ShardGlassPlasma}} [1]<br>{{#invoke:Entity Lookup|createimagetooltip|Файл:MaterialCloth1.png|MaterialCloth1|Мета=32x32px,link=}} {{#invoke:Entity Lookup|getname|MaterialCloth1}} [1]<br>}}
|-
!{{Anchor|Урановая заточка}}{{#invoke:Entity Lookup|createimagetooltip|Файл:UraniumShiv.png|UraniumShiv|Мета=64x64px,link=}}<br>{{#invoke:Entity Lookup|getname|UraniumShiv}}
|data-sort-value=11|
:<span style="color:indianred">'''7'''</span> Порезы
:<span style="color:limegreen">'''4'''</span> Радиация
|style="color:DodgerBlue"|'''1.5'''
|style="color:Yellow"|'''16.5'''
|
* Размер: '''маленький'''
|
* {{tooltip|Создаётся в панели строительства [[File:hammer.svg.192dpi.png|24x24px]]|Компоненты|{{#invoke:Entity Lookup|createimagetooltip|Файл:ShardGlassUranium.png|ShardGlassUranium|Мета=32x32px,link=}} {{#invoke:Entity Lookup|getname|ShardGlassUranium}} [1]<br>{{#invoke:Entity Lookup|createimagetooltip|Файл:MaterialCloth1.png|MaterialCloth1|Мета=32x32px,link=}} {{#invoke:Entity Lookup|getname|MaterialCloth1}} [1]<br>}}
|-
!{{Anchor|Метательный нож}}{{#invoke:Entity Lookup|createimagetooltip|Файл:ThrowingKnife.png|ThrowingKnife|Мета=64x64px,link=}}<br>{{#invoke:Entity Lookup|getname|ThrowingKnife}}
|data-sort-value=5|
:<span style="color:indianred">'''5'''</span> Порезы
|style="color:DodgerBlue"|'''2'''
|style="color:Yellow"|'''10'''
|
* Размер: '''маленький'''
* Можно метнуть, нанеся <span style="color:indianred">'''10'''</span> урона порезами, и <span style="color:darksalmon">'''15'''</span> уколами
|
* [[Аплинк|Аплинк]] [[Файл:ReinforcementRadio.png]]
|-
!{{Anchor|Ритуальный кинжал}}{{#invoke:Entity Lookup|createimagetooltip|Файл:RitualDagger.png|RitualDagger|Мета=64x64px,link=}}<br>{{#invoke:Entity Lookup|getname|RitualDagger}}
|data-sort-value=12|
:<span style="color:indianred">'''12'''</span> Порезы
|style="color:DodgerBlue"|'''1.5'''
|style="color:Yellow"|'''18'''
|
* Размер: '''средний'''
|
* <span style="color: LemonChiffon">Нет гарантированных мест спавна на картах</span>
|-
|}


<h2 style="border-bottom:2px solid #{{ColorPalette|Security|Primary Bold}}>Копья</h2>
== Модуль: Сущность/поля ==
<div style="box-shadow: 0 0 .2em #999; border-radius: .2em; margin: 1em 0 1em 0; padding: 1px;">
Шаблоны компонентов используют модуль <code>Сущность/поля</code> для объявления полей, которые будут собираться в карточку.
<div style="padding: 1em; background: #4e">
<div class="mw-collapsible-content">
'''Общие характеристики:'''<br>
* Копьё можно смазать любой жидкостью в размере '''2''' единиц. Ударом копьё будет передавать '''1''' единицу жидкости живому объекту
* Копьё можно метнуть:
:* Метания наносит: Урон в одноручном хвате + <span style="color:red">'''3'''</span> единицы
:* Копьё застревает в объектах, до тех пор пока его не вытащат. Копьё можно вытащат всего один раз, после следующего вытаскивания копьё уничтожается
</div></div></div>
{|ID="SEC" class="wikitable mobilefont sortable" style="width:100%;text-align:center;"
! rowspan="2" class="unsortable" style="width:10%"|Предмет
! colspan="3" class="unsortable" style="width:20%"|Характеристики
! rowspan="2" class="unsortable" style="width:50%"|Примечания
! rowspan="2" class="unsortable" style="width:20%"|Встречается
|-
!style="width:12%"|{{tooltip|Урон|Наносит повреждения}}
!style="width:5%"|{{tooltip|Скор.|Скорострельность}}
!style="width:5%"|{{tooltip|DPS|Урон в секунду}}
|-
!{{Anchor|Копьё}}{{#invoke:Entity Lookup|createimagetooltip|Файл:Spear.png|Spear|Мета=64x64px,link=}}<br>{{#invoke:Entity Lookup|getname|Spear}}
|data-sort-value=12|
:<span style="color:darksalmon">'''12'''</span> Уколы
|style="color:DodgerBlue"|'''1'''
|style="color:Yellow"|'''12'''
|
* Размер: '''гигантский'''
* Можно метнуть, нанеся <span style="color:darksalmon">'''15'''</span> урона уколами
* <span style="color: LemonChiffon">В двуручном хвате:</span>
:* Наносит: <span style="color:darksalmon">'''16'''</span> Уколы<br>
|
* {{tooltip|Создаётся в панели строительства [[File:hammer.svg.192dpi.png|24x24px]]|Компоненты|{{#invoke:Entity Lookup|createimagetooltip|Файл:PartRodMetal1.png|PartRodMetal1|Мета=32x32px,link=}} {{#invoke:Entity Lookup|getname|PartRodMetal1}} [2]<br>{{#invoke:Entity Lookup|createimagetooltip|Файл:CableApcStack.png|CableApcStack|Мета=32x32px,link=}} {{#invoke:Entity Lookup|getname|CableApcStack}} [3]<br>{{#invoke:Entity Lookup|createimagetooltip|Файл:ShardGlass.png|ShardGlass|Мета=32x32px,link=}} {{#invoke:Entity Lookup|getname|ShardGlass}} [1]<br>}}
|-
!{{Anchor|Усиленноё копьё}}{{#invoke:Entity Lookup|createimagetooltip|Файл:SpearReinforced.png|SpearReinforced|Мета=64x64px,link=}}<br>{{#invoke:Entity Lookup|getname|SpearReinforced}}
|data-sort-value=15|
:<span style="color:darksalmon">'''15'''</span> Уколы
|style="color:DodgerBlue"|'''1'''
|style="color:Yellow"|'''15'''
|
* Размер: '''гигантский'''
* Можно метнуть, нанеся <span style="color:darksalmon">'''18'''</span> урона уколами
* <span style="color: LemonChiffon">В двуручном хвате:</span>
:* Наносит: <span style="color:darksalmon">'''19'''</span> Уколы<br>
|
* {{tooltip|Создаётся в панели строительства [[File:hammer.svg.192dpi.png|24x24px]]|Компоненты|{{#invoke:Entity Lookup|createimagetooltip|Файл:PartRodMetal1.png|PartRodMetal1|Мета=32x32px,link=}} {{#invoke:Entity Lookup|getname|PartRodMetal1}} [2]<br>{{#invoke:Entity Lookup|createimagetooltip|Файл:CableApcStack.png|CableApcStack|Мета=32x32px,link=}} {{#invoke:Entity Lookup|getname|CableApcStack}} [3]<br>{{#invoke:Entity Lookup|createimagetooltip|Файл:ShardGlassReinforced.png|ShardGlassReinforced|Мета=32x32px,link=}} {{#invoke:Entity Lookup|getname|ShardGlassReinforced}} [1]<br>}}
|-
!{{Anchor|Плазменное копьё}}{{#invoke:Entity Lookup|createimagetooltip|Файл:SpearPlasma.png|SpearPlasma|Мета=64x64px,link=}}<br>{{#invoke:Entity Lookup|getname|SpearPlasma}}
|data-sort-value=18|
:<span style="color:darksalmon">'''18'''</span> Уколы
|style="color:DodgerBlue"|'''1'''
|style="color:Yellow"|'''18'''
|
* Размер: '''гигантский'''
* Можно метнуть, нанеся <span style="color:darksalmon">'''21'''</span> урона уколами
* <span style="color: LemonChiffon">В двуручном хвате:</span>
:* Наносит: <span style="color:darksalmon">'''22'''</span> Уколы<br>
|
* {{tooltip|Создаётся в панели строительства [[File:hammer.svg.192dpi.png|24x24px]]|Компоненты|{{#invoke:Entity Lookup|createimagetooltip|Файл:PartRodMetal1.png|PartRodMetal1|Мета=32x32px,link=}} {{#invoke:Entity Lookup|getname|PartRodMetal1}} [2]<br>{{#invoke:Entity Lookup|createimagetooltip|Файл:CableApcStack.png|CableApcStack|Мета=32x32px,link=}} {{#invoke:Entity Lookup|getname|CableApcStack}} [3]<br>{{#invoke:Entity Lookup|createimagetooltip|Файл:ShardGlassPlasma.png|ShardGlassPlasma|Мета=32x32px,link=}} {{#invoke:Entity Lookup|getname|ShardGlassPlasma}} [1]<br>}}
|-
!{{Anchor|Урановое копьё}}{{#invoke:Entity Lookup|createimagetooltip|Файл:SpearUranium.png|SpearUranium|Мета=64x64px,link=}}<br>{{#invoke:Entity Lookup|getname|SpearUranium}}
|data-sort-value=18|
:<span style="color:darksalmon">'''10'''</span> Уколы
:<span style="color:limegreen">'''8'''</span> Радиация
|style="color:DodgerBlue"|'''1'''
|style="color:Yellow"|'''18'''
|
* Размер: '''гигантский'''
* Можно метнуть, нанеся <span style="color:darksalmon">'''12'''</span> урона уколами, и <span style="color:limegreen">'''9'''</span> радиацией
* <span style="color: LemonChiffon">В двуручном хвате:</span>
:* Наносит: <span style="color:darksalmon">'''14'''</span> Уколы, <span style="color:limegreen">'''8'''</span> Радиация
|
* {{tooltip|Создаётся в панели строительства [[File:hammer.svg.192dpi.png|24x24px]]|Компоненты|{{#invoke:Entity Lookup|createimagetooltip|Файл:PartRodMetal1.png|PartRodMetal1|Мета=32x32px,link=}} {{#invoke:Entity Lookup|getname|PartRodMetal1}} [2]<br>{{#invoke:Entity Lookup|createimagetooltip|Файл:CableApcStack.png|CableApcStack|Мета=32x32px,link=}} {{#invoke:Entity Lookup|getname|CableApcStack}} [3]<br>{{#invoke:Entity Lookup|createimagetooltip|Файл:ShardGlassUranium.png|ShardGlassUranium|Мета=32x32px,link=}} {{#invoke:Entity Lookup|getname|ShardGlassUranium}} [1]<br>}}
|-
!{{Anchor|Костяное копьё}}{{#invoke:Entity Lookup|createimagetooltip|Файл:SpearBone.png|SpearBone|Мета=64x64px,link=}}<br>{{#invoke:Entity Lookup|getname|SpearBone}}
|data-sort-value=12|
:<span style="color:darksalmon">'''12'''</span> Уколы
|style="color:DodgerBlue"|'''1'''
|style="color:Yellow"|'''12'''
|
* Размер: '''гигантский'''
* Можно метнуть, нанеся <span style="color:darksalmon">'''15'''</span> урона уколами
* <span style="color: LemonChiffon">В двуручном хвате:</span>
:* Наносит: <span style="color:darksalmon">'''16'''</span> Уколы<br>
|
* {{tooltip|Создаётся в панели строительства [[File:hammer.svg.192dpi.png|24x24px]]|Компоненты|{{#invoke:Entity Lookup|createimagetooltip|Файл:MaterialBones1.png|MaterialBones1|Мета=32x32px,link=}} {{#invoke:Entity Lookup|getname|MaterialBones1}} [4]<br>{{#invoke:Entity Lookup|createimagetooltip|Файл:MaterialWebSilk.png|MaterialWebSilk|Мета=32x32px,link=}} {{#invoke:Entity Lookup|getname|MaterialWebSilk}} [1]<br>}}
|-
|}


<h2 style="border-bottom:2px solid #{{ColorPalette|Security|Primary Bold}}>Не летальное</h2>
Пример шаблона компонента:
{|ID="SEC" class="wikitable mobilefont sortable" style="width:100%;text-align:center;"
! rowspan="2" class="unsortable" style="width:10%"|Предмет
! colspan="3" class="unsortable" style="width:20%"|Характеристики
! rowspan="2" class="unsortable" style="width:50%"|Примечания
! rowspan="2" class="unsortable" style="width:20%"|Встречается
|-
!style="width:12%"|{{tooltip|Урон|Наносит повреждения}}
!style="width:5%"|{{tooltip|Скор.|Скорострельность}}
!style="width:5%"|{{tooltip|DPS|Урон в секунду}}
|-
!{{Anchor|Дубинка-шокер}}{{#invoke:Entity Lookup|createimagetooltip|Файл:Stunbaton.png|Stunbaton|Мета=64x64px,link=}}<br>{{#invoke:Entity Lookup|getname|Stunbaton}}
|data-sort-value=7|
:<span style="color:crimson">'''7'''</span> Ушибы
|style="color:DodgerBlue"|'''1'''
|style="color:Yellow"|'''7'''
|
* Размер: '''средний'''
* Можно метнуть:
:*
:*
|
* [[Инвентарь службы безопасности#Пояс охраны|{{#invoke:Entity Lookup|getname|ClothingBeltSecurityFilled}}]] {{#invoke:Entity Lookup|createimagetooltip|File:ClothingBeltSecurityFilled.png|ClothingBeltSecurityFilled|Мета=32x32px}}
* '''Место:'''
:* [[Отдел Службы Безопасности#Арсенал|Арсенал]]
|-
!{{Anchor|Шок-палка}}{{#invoke:Entity Lookup|createimagetooltip|Файл:Stunprod.png|Stunprod|Мета=64x64px,link=}}<br>{{#invoke:Entity Lookup|getname|Stunprod}}
|data-sort-value=9|
:<span style="color:crimson">'''9'''</span> Ушибы
|style="color:DodgerBlue"|'''1'''
|style="color:Yellow"|'''9'''
|
* Размер: '''средний'''
* Можно метнуть:
:*
:*
|
* {{tooltip|Создаётся в панели строительства [[File:hammer.svg.192dpi.png|24x24px]]|Компоненты|{{#invoke:Entity Lookup|createimagetooltip|Файл:PartRodMetal1.png|PartRodMetal1|Мета=32x32px,link=}} {{#invoke:Entity Lookup|getname|PartRodMetal1}} [1]<br>{{#invoke:Entity Lookup|createimagetooltip|Файл:PowerCellSmall.png|PowerCellSmall|Мета=32x32px,link=}} {{#invoke:Entity Lookup|getname|PowerCellSmall}} [1]<br>{{#invoke:Entity Lookup|createimagetooltip|Файл:Cablecuffs.png|Cablecuffs|Мета=32x32px,link=}} {{#invoke:Entity Lookup|getname|Cablecuffs}} [1]<br>{{#invoke:Entity Lookup|createimagetooltip|Файл:Igniter.png|Igniter|Мета=32x32px,link=}} {{#invoke:Entity Lookup|getname|Igniter}} [1]<br>}}
|-
|}


<h2 style="border-bottom:2px solid #{{ColorPalette|Security|Primary Bold}}>Прочее</h2>
<pre>
{|ID="SEC" class="wikitable mobilefont sortable" style="width:100%;text-align:center;"
{{#invoke:Сущность/поля|main
! rowspan="2" class="unsortable" style="width:10%"|Предмет
|cardLabel_Стоимость  = [[Стоимость]]
! colspan="3" class="unsortable" style="width:20%"|Характеристики
|cardContent_Стоимость = '''{{{price}}}'''
! rowspan="2" class="unsortable" style="width:50%"|Примечания
}}
! rowspan="2" class="unsortable" style="width:20%"|Встречается
</pre>
|-
 
!style="width:12%"|{{tooltip|Урон|Наносит повреждения}}
Другой компонент может добавлять тот же ключ:
!style="width:5%"|{{tooltip|Скор.|Скорострельность}}
 
!style="width:5%"|{{tooltip|DPS|Урон в секунду}}
<pre>
|-
{{#invoke:Сущность/поля|main
!{{Anchor|Официальное охранное противонадувное оружие}}{{#invoke:Entity Lookup|createimagetooltip|Файл:WeaponMeleeNeedle.png|WeaponMeleeNeedle|Мета=64x64px,link=}}<br><small>{{#invoke:Entity Lookup|getname|WeaponMeleeNeedle}}</small>
|cardContent_Стоимость  = '''{{{superPrice}}}'''
|data-sort-value=1|
}}
:<span style="color:darksalmon">'''1'''</span> Уколы
</pre>
|style="color:DodgerBlue"|'''1'''
 
|style="color:Yellow"|'''1'''
Особенности:
|
* Пара <code>cardLabel_<Ключ></code> / <code>cardContent_<Ключ></code> описывает одну строку карточки (лейбл и содержимое).
* Размер: '''крошечный'''
* Если несколько шаблонов дают один и тот же <code>cardContent_Ключ</code>, содержимое '''объединяется''', а лейбл берётся первый непустой.
* Способно лопать шарики
* То же относится к другим режимам, перечисленным в мета‑JSON шаблона (разделы <code>card</code>, <code>title</code> и т. п.), которые читает {{tl|Модуль:Сущность}}.
|
 
* [[Инвентарь службы безопасности#Шкаф офицера службы безопасности|{{#invoke:Entity Lookup|getname|LockerSecurity}}]] {{#invoke:Entity Lookup|createimagetooltip|File:LockerSecurity.png|LockerSecurity|Мета=32x32px,link=}}
== Модуль: Сущность ==
|-
 
!{{Anchor|Дубинка}}{{#invoke:Entity Lookup|createimagetooltip|Файл:Truncheon.png|Truncheon|Мета=64x64px,link=}}<br>{{#invoke:Entity Lookup|getname|Truncheon}}
=== p.get: основная сборка карточки ===
|data-sort-value=20|
Вызов:
:<span style="color:crimson">'''20'''</span> Ушибы
 
:<span style="color:DodgerBlue">'''30'''</span> Урона по выносливости
<pre>
|style="color:DodgerBlue"|'''1'''
{{#invoke:Сущность|get
|style="color:Yellow"|'''20'''
| <ID или список ID>
|
| blacklist=...
* Размер: '''средний'''
| whitelist=...
|
| ignoreComponents=...
* '''Место:'''
| ignorePrototypes=...
:* [[Отдел Службы Безопасности#Арсенал|Арсенал]]
}}
|-
</pre>
!{{Anchor|Бейсбольная бита}}{{#invoke:Entity Lookup|createimagetooltip|Файл:BaseBallBat.png|BaseBallBat|Мета=64x64px,link=}}<br>{{#invoke:Entity Lookup|getname|BaseBallBat}}
 
|data-sort-value=10|
* '''1‑й параметр''' — <code>id</code> или список <code>id</code> через запятую.
:<span style="color:crimson">'''10'''</span> Ушибы
* По этому ID модуль находит:
:<span style="color:DarkGray">'''5'''</span> Структурные
** '''компоненты''' из <code>component.json</code>;
|style="color:DodgerBlue"|'''1'''
** '''прототипы''' из <code>prototype.json</code>;
|style="color:Yellow"|'''10'''
и для каждого — соответствующие шаблоны <code>Template:component/...</code> / <code>Template:prototype/...</code>.
|
* Шаблоны описывают свои поля через <code>Сущность/поля</code>.
* Размер: '''средний'''
 
* <span style="color: LemonChiffon">В двуручном хвате:</span>  
После сборки модуль:
:* Наносит: <span style="color:crimson">'''15'''</span> Ушибы, <span style="color:DarkGray">'''15'''</span> Структурные
* формирует один вызов <code><nowiki>{{карточка/сущность|...}}</nowiki></code> со всеми разделами и полями;
|
* дополняет выход при необходимости (блоки title и т. п.);
* {{tooltip|Создаётся в панели строительства [[File:hammer.svg.192dpi.png|24x24px]]|Компоненты|{{#invoke:Entity Lookup|createimagetooltip|Файл:MaterialWoodPlank1.png|MaterialWoodPlank1|Мета=32x32px,link=}} {{#invoke:Entity Lookup|getname|MaterialWoodPlank1}} [5]<br>{{#invoke:Entity Lookup|createimagetooltip|Файл:KitchenKnife.png|KitchenKnife|Мета=32x32px,link=}} {{#invoke:Entity Lookup|getname|KitchenKnife}}<br>}}
* прогоняет результат через <code>frame:preprocess</code>, чтобы отрендерить разметку.
|-
 
!{{Anchor|Кирка}}{{#invoke:Entity Lookup|createimagetooltip|Файл:Pickaxe.png|Pickaxe|Мета=64x64px,link=}}<br>{{#invoke:Entity Lookup|getname|Pickaxe}}
Параметры фильтрации:
|data-sort-value=4|
* {{пм|blacklist}} — список <code>режим_Ключ</code> через запятую, чтобы исключить поле:
:<span style="color:crimson">'''1.66'''</span> Ушибы
** пример: <code>blacklist=card_Наносит повреждения,title_Что‑то</code>;
:<span style="color:indianred">'''1.67'''</span> Порезы
* {{пм|whitelist}} — наоборот, список разрешённых <code>режим_Ключ</code>, остальные игнорируются;
:<span style="color:darksalmon">'''1.67'''</span> Уколы
* {{пм|ignoreComponents}} / {{пм|ignoreComponent}} — список имён компонентов через запятую, которые полностью игнорируются для этого вызова;
|style="color:DodgerBlue"|'''0.7'''
* {{пм|ignorePrototypes}} / {{пм|ignorePrototype}} — аналогично для прототипов.
|style="color:Yellow"|'''3.5'''
 
|
Пример простой сборки (через шаблон‑обёртку):
* <span style="color: LemonChiffon">В двуручном хвате:</span>  
 
:* Урон увеличивается в '''3''' раз. Добавляется <span style="color: DarkGray">'''30'''</span> Структурные
<pre>
|
{{Сущность/карточка|MyEntityId}}
* [[Инвентарь отдела снабжения#Утильмаг|{{#invoke:Entity Lookup|getname|VendingMachineSalvage}}]] {{#invoke:Entity Lookup|createimagetooltip|Файл:MiningVending.gif|VendingMachineSalvage|Мета=32x32px,link=}}
</pre>
* [[Экспедиции#Случайные награды|Ящик с экипировкой утилизаторов]]
 
* '''Место:'''
где в шаблоне <code>Сущность/карточка</code> внутри:
:* [[Отдел Снабжения#Комната утилизаторов|Комната утилизаторов]]
 
|-
<pre>
!{{Anchor|Шахтёрский бур}}{{#invoke:Entity Lookup|createimagetooltip|Файл:Handdrill.png|MiningDrill|Мета=64x64px,link=}}<br>{{#invoke:Entity Lookup|getname|MiningDrill}}
{{#invoke:Сущность|get|{{{1}}}}}
|data-sort-value=3|
</pre>
:<span style="color:crimson">'''1'''</span> Ушибы
 
:<span style="color:indianred">'''1'''</span> Порезы
=== p.preview: предпросмотр полей конкретного шаблона ===
:<span style="color:darksalmon">'''1'''</span> Уколы
Используется для проверки, что компонент/прототип правильно описал свои поля.
:<span style="color:DarkGray">'''12'''</span> Структурные
 
|style="color:DodgerBlue"|'''3.5'''
<pre>
|style="color:Yellow"|'''10.5'''
{{#invoke:Сущность|preview
|
| Component/meleeWeapon
* Автоматически атакует с зажатым {{key press|ПКМ}}
}}
|
</pre>
* [[Экспедиции#Награда биома Caves|Награда биома Caves]]
 
* [[Руководство по исследованию и разработке#Снаряжение для утилизации|Открываемая технология]] [[Файл:ComputerAnalysisConsole.png]]
* Показывает, какие <code>card</code> / <code>title</code>‑поля объявлены в <code>Template:Component/meleeWeapon</code>.
* '''Место:'''
* Удобно при разработке шаблонов компонентов.
:* [[Отдел Снабжения#Комната утилизаторов|Комната утилизаторов]]
 
|-
=== p.jsonList: вывод JSON в виде списка ===
!{{Anchor|Крушитель}}{{#invoke:Entity Lookup|createimagetooltip|Файл:Crusher.png|WeaponCrusher|Мета=64x64px,link=}}<br>{{#invoke:Entity Lookup|getname|WeaponCrusher}}
Режим похож на стандартный <code>arraymap</code>, но работает с JSON.
|data-sort-value=15|
 
:<span style="color:crimson">'''10'''</span> Ушибы
<pre>
:<span style="color:indianred">'''5'''</span> Порезы
{{#invoke:Сущность|jsonList
|style="color:DodgerBlue"|'''1.5'''
| <json или {{{...}}}>
|style="color:Yellow"|'''22.5'''
| type = list / enum
|
| prefix = *
* <span style="color: LemonChiffon">В двуручном хвате:</span>  
| sep = :  
:* Урон увеличивается на '''5''' единиц. Добавляется <span style="color: DarkGray">'''30'''</span> Структурные
| key_pattern = (.*)
:* Способен стрелять через {{key press|ПКМ}}
| key_replace = \1
:* Выстрелы по живым объектам покрывают их полем на '''10''' секунд. Удар Крушителя по объекту с активным полем удваивает его урон
| value_pattern = (.*)
|
| value_replace = \1
* '''Место:'''
}}
:* [[Отдел Снабжения#Комната утилизаторов|Комната утилизаторов]]
</pre>
|-
 
!{{Anchor|Глефа-крушитель}}{{#invoke:Entity Lookup|createimagetooltip|Файл:Glaivecrusher.png|WeaponCrusherGlaive|Мета=64x64px,link=}}<br>{{#invoke:Entity Lookup|getname|WeaponCrusherGlaive}}
Примеры JSON:
|data-sort-value=15|
 
:<span style="color:crimson">'''10'''</span> Ушибы
<pre> <!-- <syntaxhighlight lang=json> -->
:<span style="color:indianred">'''5'''</span> Порезы
{
|style="color:DodgerBlue"|'''1.5'''
  "Blunt": 10,
|style="color:Yellow"|'''15'''
  "Slash": 5
|
}
* <span style="color: LemonChiffon">В двуручном хвате:</span>  
</pre> <!-- </syntaxhighlight> -->
:* Урон увеличивается на '''5''' единиц. Добавляется <span style="color: DarkGray">'''30'''</span> Структурные
 
:* Способен стрелять через {{key press|ПКМ}}
или
:* Выстрелы по живым объектам покрывают их полем на '''10''' секунд. Удар Крушителя по объекту с активным полем удваивает его урон
 
|
<pre> <!-- <syntaxhighlight lang=json> -->
* '''Место:'''
["Knife", "Sword", "Bat"]
:* [[Отдел Снабжения#Комната утилизаторов|Комната утилизаторов]]
</pre> <!-- </syntaxhighlight> -->
|-
 
!{{Anchor|Пожарный топор}}{{#invoke:Entity Lookup|createimagetooltip|Файл:FireAxe.png|FireAxe|Мета=64x64px,link=}}<br>{{#invoke:Entity Lookup|getname|FireAxe}}
Основные опции:
|data-sort-value=15|
* {{пм|type}}:
:<span style="color:crimson">'''5'''</span> Ушибы
** <code>list</code> — список строк (с префиксом, например <code>* </code>);
:<span style="color:indianred">'''10'''</span> Порезы
** <code>enum</code> — перечисление через запятую (<code>A, B, C</code> без префикса).
:<span style="color:DarkGray">'''10'''</span> Структурные
* {{пм|prefix}} — префикс строки списка (по умолчанию <code>* </code>).
|style="color:DodgerBlue"|'''0.75'''
* {{пм|sep}} — разделитель для <code>ключ: значение</code> (по умолчанию <code>: </code>).
|style="color:Yellow"|'''11.25'''
* {{пм|key_pattern}} / {{пм|key_replace}} — regex и замена для ключей.
|
* {{пм|value_pattern}} / {{пм|value_replace}} — regex и замена для значений.
* Размер: '''гигантский'''
 
* Снимает напольные плитки
Дополнительно:
* <span style="color: LemonChiffon">В двуручном хвате:</span>  
* в шаблоне замены поддерживаются:
:* Наносит: <span style="color:crimson">'''5'''</span> Ушибы, <span style="color:indianred">'''20'''</span> Порезы, <span style="color:DarkGray">'''50'''</span> Структурные
** <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>).
:* [[Инженерный Отдел#Атмос|Атмос]]
 
|-
Пример, где сначала форматируем тип урона, а затем подставляем его в описание:
!{{Anchor|Пылающий пожарный топор}}{{#invoke:Entity Lookup|createimagetooltip|Файл:FireAxeFlaming.png|FireAxeFlaming|Мета=64x64px,link=}}<br>Пылающий пожарный топор
 
|data-sort-value=15|
<pre>
:<span style="color:crimson">'''5'''</span> Ушибы
{{#invoke:Сущность|jsonList
:<span style="color:indianred">'''10'''</span> Порезы
| {{{damage.types}}}
:<span style="color:DarkGray">'''10'''</span> Структурные
| type = enum
|style="color:DodgerBlue"|'''0.75'''
| key_replace = <nowiki>\1</nowiki>              <!-- "Blunt" -->
|style="color:Yellow"|'''11.25'''
| value_replace = <nowiki>'''\1''' \2</nowiki>  <!-- "'''10''' Blunt" -->
|
}}
* Размер: '''гигантский'''
</pre>
* Удары поджигают 
 
* Снимает напольные плитки
=== p.json: превращение JSON в вызовы шаблонов ===
* <span style="color: LemonChiffon">В двуручном хвате:</span>  
Режим для случаев, когда в JSON лежит список эффектов/объектов, и нужно по каждому вызвать отдельный шаблон.
:* Наносит: <span style="color:crimson">'''5'''</span> Ушибы, <span style="color:indianred">'''20'''</span> Порезы, <span style="color:DarkGray">'''50'''</span> Структурные
 
|
<pre>
* <span style="color: LemonChiffon">Нет гарантированных мест спавна на картах</span>
{{#invoke:Сущность|json
|-
| <json или {{{...}}}>
!{{Anchor|Нечестивая алебарда}}{{#invoke:Entity Lookup|createimagetooltip|Файл:UnholyHalberd.png|UnholyHalberd|Мета=64x64px,link=}}<br>{{#invoke:Entity Lookup|getname|UnholyHalberd}}
| <путь_к_шаблону>
|data-sort-value=20|
}}
:<span style="color:crimson">'''10'''</span> Ушибы
</pre>
:<span style="color:indianred">'''10'''</span> Порезы
 
:<span style="color:DarkGray">'''5'''</span> Структурные
* '''1‑й параметр / <code>json=</code>''' — строка JSON.
|style="color:DodgerBlue"|'''0.75'''
* '''2‑й параметр / <code>template=</code>''' — путь к шаблону, например <code>Component/adjustPlant</code>.
|style="color:Yellow"|'''15'''
 
|
Ожидаемый формат JSON‑массива:
* Размер: '''гигантский'''
 
* <span style="color: LemonChiffon">В двуручном хвате:</span>  
<pre> <!-- <syntaxhighlight lang=json> -->
:* Наносит: <span style="color:crimson">'''15'''</span> Ушибы, <span style="color:indianred">'''15'''</span> Порезы, <span style="color:DarkGray">'''15'''</span> Структурные
[
|
  {
* <span style="color: LemonChiffon">Нет гарантированных мест спавна на картах</span>
    "!type:PlantAdjustNutrition": {
|-
      "amount": 0.1
!{{Anchor|Трость с клинком}}{{#invoke:Entity Lookup|createimagetooltip|Файл:CaneBlade.png|CaneBlade|Мета=64x64px,link=}}<br>{{#invoke:Entity Lookup|getname|CaneBlade}}
    }
|data-sort-value=14|
  },
:<span style="color:indianred">'''14'''</span> Порезы
  {
|style="color:DodgerBlue"|'''1.5'''
    "!type:PlantAdjustWeeds": {
|style="color:Yellow"|'''21'''
      "amount": 2
|
    }
* Размер: '''средний'''
  },
|
  {
* [[Аплинк|Аплинк]] [[Файл:ReinforcementRadio.png]]
    "!type:PlantAdjustPests": {
|-
      "amount": 2
!{{Anchor|Рука-клинок}}{{#invoke:Entity Lookup|createimagetooltip|Файл:ArmBlade.png|ArmBlade|Мета=64x64px,link=}}<br>{{#invoke:Entity Lookup|getname|ArmBlade}}
    }
|data-sort-value=40|
  }
:<span style="color:indianred">'''25'''</span> Порезы
]
:<span style="color:darksalmon">'''15'''</span> Уколы
</pre> <!-- </syntaxhighlight> -->
|style="color:DodgerBlue"|'''0.75'''
 
|style="color:Yellow"|'''11.25'''
Для каждого элемента создаётся вызов:
|
 
* Размер: '''средний'''
<pre>
|
{{Component/adjustPlant
* <span style="color: LemonChiffon">Нет гарантированных мест спавна на картах</span>
|id=!type:PlantAdjustNutrition
|-
|amount=0.1
!{{Anchor|Бензопила}}{{#invoke:Entity Lookup|createimagetooltip|Файл:Chainsaw.png|Chainsaw|Мета=64x64px,link=}}<br>{{#invoke:Entity Lookup|getname|Chainsaw}}
}}
|data-sort-value=4|
{{Component/adjustPlant
:<span style="color:indianred">'''2'''</span> Порезы
|id=!type:PlantAdjustWeeds
:<span style="color:crimson">'''2'''</span> Ушибы
|amount=2
:<span style="color:DarkGray">'''4'''</span> Структурные
}}
|style="color:DodgerBlue"|'''4'''
{{Component/adjustPlant
|style="color:Yellow"|'''16'''
|id=!type:PlantAdjustPests
|
|amount=2
* Размер: '''средний'''
}}
* Автоматически атакует с зажатым {{key press|ПКМ}}
</pre>
* <span style="color: LemonChiffon">В двуручном хвате:</span>
 
:* Наносит: <span style="color:indianred">'''6'''</span> Порезы, <span style="color:crimson">'''2'''</span> Ушибы, <span style="color:DarkGray">'''8'''</span> Структурные
Особенности:
|
* Если JSON — объект вида <code>{ "id1": {...}, "id2": {...} }</code>, происходит аналогичный проход по парам <code>ключ → объект</code>.
* <span style="color: LemonChiffon">Нет гарантированных мест спавна на картах</span>
* Все вызовы склеиваются через перевод строки и прогоняются через <code>frame:preprocess</code>, поэтому внутри шаблона можно использовать любую вики‑разметку.
|-
 
!{{Anchor|Кувалда}}{{#invoke:Entity Lookup|createimagetooltip|Файл:Sledgehammer.png|Sledgehammer|Мета=64x64px,link=}}<br>{{#invoke:Entity Lookup|getname|Sledgehammer}}
== Модуль: GetField ==
|data-sort-value=10|
Модуль <code>GetField</code> используется для доступа к тем же JSON‑данным <code>.../data</code>, но на более низком уровне.
:<span style="color:crimson">'''10'''</span> Ушибы
 
:<span style="color:DarkGray">'''10'''</span> Структурные
=== p.flattenField: расплющивание записи в параметры ===
|style="color:DodgerBlue"|'''1'''
<pre>
|style="color:Yellow"|'''10'''
{{#invoke:GetField|flattenField
|
| <id>
* Размер: '''большой'''
| <путь_к_json_странице>
* <span style="color: LemonChiffon">В двуручном хвате:</span>
}}
:* Наносит: <span style="color:crimson">'''20'''</span> Ушибы, <span style="color:DarkGray">'''20'''</span> Структурные
</pre>
|
 
* <span style="color: LemonChiffon">Нет гарантированных мест спавна на картах</span>
Например:
|-
 
|}
<pre>
{{#invoke:GetField|flattenField
| MyEntityId
| component/item.json
}}
</pre>
 
Возвращает строку вида:
 
<pre>
damage.types={"Blunt":10}|wieldSound=someSound|...
</pre>
 
Особенности:
* Вложенные объекты кодируются в JSON и заворачиваются в <code><nowiki><nowiki></nowiki></code>, чтобы их можно было безопасно передавать как параметр.
* Массивы кодируются в JSON без <code><nowiki><nowiki></nowiki></code>, чтобы удобно обрабатывать их модулями вроде <code>Сущность.jsonList</code>.
 
Этот режим используется внутри <code>GetField.getTpl</code> и других обёрток.
 
=== p.get: получение значения по пути ===
<pre>
{{#invoke:GetField|get
| <id или пусто для "default">
| <путь_к_json_странице>
| <ключ.с.точками>
}}
</pre>
 
Примеры:
 
<pre>
{{#invoke:GetField|get
| MyEntityId
| component/item.json
| damage.types
}}
</pre>
 
Если в JSON:
 
<pre> <!-- <syntaxhighlight lang=json> -->
"damage": {
  "types": {
    "Blunt": 10
  }
}
</pre> <!-- </syntaxhighlight> -->
 
то результатом будет:
 
<pre>
{"Blunt":10}
</pre>
 
то есть:
* для таблиц модуль пытается сделать <code>mw.text.jsonEncode(v)</code> и вернуть JSON‑строку;
* для простых значений возвращается строка <code>tostring(v)</code>.
 
Если <code>keyPath</code> пуст, возвращается весь объект (как JSON).
 
=== p.getTpl: вызов шаблона по данным JSON ===
<pre>
{{#invoke:GetField|getTpl
| <id>
| <путь_к_json_странице>
| <путь_к_шаблону>
}}
</pre>
 
Пример:
 
<pre>
{{#invoke:GetField|getTpl
| MyEntityId
| component/item.json
| Component/meleeWeapon
}}
</pre>
 
Работа:
* внутри вызывает <code>flattenField</code>, получая строку <code>key=value|...</code>;
* формирует строку вида:
 
<pre>
{{Component/meleeWeapon
|id=MyEntityId
|damage.types=...
|...
}}
</pre>
 
* и прогоняет её через <code>frame:preprocess</code>, возвращая итоговый рендер.
 
Это удобный способ «подключить» шаблон компонента к данным из JSON без ручного перечисления параметров.
 
=== p.getTplProto: вызов шаблона по прототипам ===
<pre>
{{#invoke:GetField|getTplProto
| <searchId>
| <protoId>
| <путь_к_шаблону>
}}
</pre>
 
* Ищет в <code>prototype.json</code> все записи, где <code>protoId</code> встречается у <code>searchId</code>.
* Для каждого найденного ID вызывает <code>getTpl</code> и возвращает все вызовы, склеенные через перевод строки и отрендеренные.
 
Используется для случаев, когда сущность использует '''несколько''' прототипов одного типа, и нужно вывести по одному шаблону на каждый прототип.
 
== Типичный рабочий поток ==
# В JSON‑файлах (<code>component.json</code>, <code>prototype.json</code> и др.) описываются сущности и связи компонент/прототипов.
# Для каждого компонента/прототипа создаются шаблоны <code>Template:Component/...</code>, <code>Template:prototype/...</code>, которые:
#* вызывают <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> — если нужно превратить список эффектов в набор вызовов шаблона;
#* <code>GetField.get</code> — если нужно точечно вытащить одно поле;
#* <code>GetField.getTpl</code> / <code>getTplProto</code> — если нужно строить шаблоны по данным JSON автоматически.

Текущая версия от 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 автоматически.