====== Игровые классы ======
===== Item =====
Предмет для инвентаря.

^ Параметр   ^ Тип         ^ Описание ^
| name       | string      | Название предмета. Должно быть уникальным |
| cost       | number      | Цена предмета |
| descr      | string      | Описание предмета |
| icon       | string / [[#KTCharInventoryPreview|KTCharInventoryPreview]] | Иконка предмета |
| trade      | boolean     | Можно ли обменивать предмет |
| buy        | boolean     | Можно ли продавать/покупать предмет |
| hidden     | boolean     | Если ''True'', то название и описание заменяется на ''???'' |
| shop       | "tenten" / "shady" | В каком магазине продаётся предмет |
| ptr        | boolean     | Если ''True'', то предмет только для патронов |

===== Outfit =====
Предмет для инвентаря + элемент одежды для персонажа.

Параметры такие же как у [[#Item|Item]], плюс еще

^ Параметр   ^ Тип         ^ Описание ^
| char       | "Ino" / "Sakura" / "Hinata" | Имя персонажа, для которого предмет |
| layer      | string      | Название слоя, на котором размещать изображение одежды. Так же это название папки, в которой лежит изображение. |
| val        | string      | Название изображения без расширения .webp, которое находится в папке ''layer'' |
| lust       | number      | Какой уровень разврата необходим, чтобы носить предмет |

===== KTCharInventoryPreview =====
Иконка предмета с одеждой.

^ Параметр   ^ Тип         ^ Описание ^
| char_name  | string      | Имя персонажа, для которого предмет |
| layers     | (string, string)[] | Список слоёв, которые накладываются поверх персонажа |
| crop       | (number, number, number, number) | Как обрезать изображение |

**Пример**
<code python>
KTCharInventoryPreview(
  char_name="hinata",
  layers=[
    ("base", "default"),
    ("eyes", "default"),
    ("mouth", "default"),
    ("costume", "my_custom_costume"),
  ],
  crop=(0, 336, 600, 600),
)
</code>

Чтобы для каждого предмета на писать полный список слоёв, есть заранее составленные списки, которые можно использовать.

<code python>
ino_preview_nude_layers = [
    ('base', 'default'),
    ('boobs', 'default'),
    ('left_hand', 'default'),
    ('right_hand', 'default'),
    ('eyes', 'default'),
    ('mouth', 'default')
]

ino_preview_layers = ino_preview_nude_layers + [
    ('bra', 'default'),
    ('panties', 'default'),
]

sakura_preview_layers = [
    ('base', 'default'),
    ('boobs', 'default'),
    ('left_hand', 'naked'),
    ('right_hand', 'naked'),
    ('eyes', 'default'),
    ('mouth', 'default'),
]

hinata_preview_layers = [
    ('base', 'default'),
    ('eyes', 'default'),
    ('mouth', 'default')
]
</code>

Пример использования списка.
<code python>
KTCharInventoryPreview(
  char_name="hinata",
  layers=hinata_preview_layers + [("costume", "my_custom_costume")],
  crop=(0, 336, 600, 600),
)
</code>

Так же есть заранее определённые варианты обрезки превью.
<code python>
ino_top_inv_preview = (149, 329, 303, 303)
ino_bottom_inv_preview = (149, 668, 303, 303)
ino_costume_inv_preview = (0, 336, 600, 600)

ino_face_inv_preview = (149, 130, 303, 303)
hinata_face_inv_preview = (149, 100, 303, 303)
sakura_face_inv_preview = (180, 170, 303, 303)

sakura_top_inv_preview = (180, 350, 303, 303)
</code>

===== Module =====
Модуль для взаимодействия с игрой.

^ Статические параметры ^ Тип    ^ Описание ^
| id                  | string | id модуля. Должно быть уникальным. |
| subscribe_on_events | string[] | Список событий, на которые следует подписать модуль. См. [[ru:mods:events|Список событий]] |

^ Название функции   ^ Аргументы    ^ Описание ^
| on_init     | | Вызывается 1 раз при старте игры (новой или загрузке сохранения) |
| on_event    | event | Вызывается при возникновении события, на которое подписался модуль |