====== Game Classes ======
===== Item =====
Item for inventory.

^ Parameter ^ Type ^ Description ^
| name | string | Item name. Must be unique |
| cost | number | price of item |
| descr | string | item description |
| icon | string / [[#KTCharInventoryPreview|KTCharInventoryPreview]] | item icon |
| trade | boolean | whether the item can be traded |
| buy | boolean | can sell/buy item |
| hidden | boolean | if "True", the name and description are replaced by "???" |
| shop | "tenten" / "shady" | in which store the item is sold |
| ptr | boolean | If ''True'', then the item is for Patrons only |

===== Outfit =====
Item for the inventory + an item of clothing for the character.

Parameters are the same as [[#Item|Item]], plus more

^ Parameter ^ Type ^ Description ^
| char | "Ino" / "Sakura" / "Hinata" | name of the character the item is for |
| layer | string | the name of the layer on which to place the image of the clothes. It is also the name of the folder where the image is located. |
| val | string | the name of the image without the .webp extension which is in the ''layer'' folder |
| lust | number | What level of depravity is required to wear the item |

===== KTCharInventoryPreview =====
The icon of the item with the clothing.

^ Parameter ^ Type ^ Description ^
| char_name | string | name of the character the item is for |
| layers | (string, string)[] | List of layers that are applied over the character |
| crop | (number, number, number, number) | How to crop an image |

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

In order to write a complete list of layers for each item, there are pre-made lists that you can use.

<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>

An example of how to use the list.
<code python>
KTCharInventoryPreview(
  char_name="hinata",
  layers=hinata_preview_layers + [("costume", "my_custom_costume")],
  crop=(0, 336, 600, 600),
)
</code>

There are also predefined cropping options for previews.
<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 =====
Module for interaction with the game.

^ Static parameters ^ Type ^ Description ^
| id | string | module id. Must be unique. |
| subscribe_on_events | string[] | list of events to which the module should subscribe. See [[mods:events|List of events]] |

^ Function name ^ Arguments ^ Description ^
| on_init | | Called once when starting the game (new or loading a save) |
| on_event | event | Called when the event to which the module is subscribed occurs |