Компоненты предметов
ItemComponents — что делает предмет «живым»: Holdable, Pickable, ItemContainer, Powered, MeleeWeapon и другие.
Что такое ItemComponent
Сам по себе <Item> — это «оболочка». Поведение предмету дают компоненты (ItemComponents) —
вложенные элементы, каждый добавляет какую-то способность: предмет можно поднять, держать в
руке, запитать электричеством, бить им как оружием и так далее.
Компоненты пишут как вложенные теги внутри <Item>:
<Item identifier="mywrench" name="My Wrench" category="Equipment" tags="smallitem,tool">
<Sprite texture="%ModDir%/textures/wrench.png" sourcerect="0,0,256,112" />
<Holdable selectkey="Use" slots="Any,RightHand,LeftHand" handle1="0,0" />
<MeleeWeapon range="50" reload="1.0">
<Attack itemdamage="10" structuredamage="5" targetimpulse="2">
<Affliction identifier="damage" strength="8" />
</Attack>
</MeleeWeapon>
</Item>
Что чаще всего используют
| Компонент | Что добавляет |
|---|---|
Pickable | Предмет можно поднять и положить в инвентарь. |
Holdable | Предмет можно держать в руке/слоте; задаёт точки захвата. |
Wearable | Предмет можно надеть (броня, маска, костюм). |
ItemContainer | Предмет хранит другие предметы (ящик, аптечка, контейнер). |
MeleeWeapon | Оружие ближнего боя (внутрь кладут <Attack>). |
RangedWeapon | Дальнобойное оружие, стреляет снарядами. |
Projectile | Поведение снаряда (гарпун, болт). |
Powered | Базовое питание; предмет потребляет/требует энергию. |
PowerContainer | Аккумулятор: хранит заряд. |
PowerTransfer | Передаёт энергию (провода, узлы сети). |
LightComponent | Источник света (цвет, радиус, мигание). |
Repairable | Предмет можно чинить; задаёт навык и сложность. |
Engine, Pump, Reactor, Sonar | Специализированные системы подлодки. |
Это не весь список — компонентов десятки. У каждого свои атрибуты; подсматривай у ванильных примеров и в официальной документации ItemComponents.
Комбинируй компоненты
Вся сила — в сочетании. Например, фонарик — это предмет, который можно держать (Holdable),
который питается (Powered) и светит (LightComponent):
<Item identifier="myflashlight" name="My Flashlight" category="Equipment" tags="smallitem">
<Sprite texture="%ModDir%/textures/flashlight.png" sourcerect="0,0,128,64" />
<Holdable slots="Any,RightHand,LeftHand" />
<Powered minvoltage="0" powerconsumption="50" />
<LightComponent range="600" lightcolor="255,240,200,255" />
</Item>
Компоненты и статус-эффекты
Многие компоненты принимают вложенные <StatusEffect> — например, чтобы наложить аффликшен
при использовании или потратить заряд. Так компоненты связываются с системой эффектов (см.
статус-эффекты).
Как разбираться быстрее
Самый рабочий способ понять компоненты — открыть ванильный предмет, похожий на твою задумку, и посмотреть, какие компоненты в нём стоят и с какими атрибутами. Копируй рабочий пример и крути под себя.
Дальше — мир существ: основы персонажей.