> For the complete documentation index, see [llms.txt](https://changelog.matrixemulator.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://changelog.matrixemulator.com/welcome/server/muserver/data/event/kanturu.md).

# Kanturu

<mark style="color:green;">Configuration file for the Kanturu event, which is actually a sequence of four sub-events:</mark> <mark style="color:green;"></mark><mark style="color:green;">**Battle Standby**</mark> <mark style="color:green;"></mark><mark style="color:green;">(entry queue),</mark> <mark style="color:green;"></mark><mark style="color:green;">**Battle of Maya**</mark><mark style="color:green;">,</mark> <mark style="color:green;"></mark><mark style="color:green;">**Battle of Nightmare**</mark><mark style="color:green;">, and</mark> <mark style="color:green;"></mark><mark style="color:green;">**Tower of Refinement**</mark><mark style="color:green;">, in that order. The file contains 11 blocks (</mark><mark style="color:green;">`0`</mark> <mark style="color:green;"></mark><mark style="color:green;">to</mark> <mark style="color:green;"></mark><mark style="color:green;">`10`</mark><mark style="color:green;">), each beginning with the block number on its own line and ending with</mark> <mark style="color:green;"></mark><mark style="color:green;">`end`</mark><mark style="color:green;">. Each block is read by a different part of the code (see Notes) — therefore, the order of the blocks in the file does not match the order in which the sub-events occur in-game.</mark>

### <mark style="color:yellow;">Common Pattern: State / Condition / Value Columns</mark>

<mark style="color:orange;">Blocks</mark> <mark style="color:orange;"></mark><mark style="color:orange;">`0`</mark><mark style="color:orange;">,</mark> <mark style="color:orange;"></mark><mark style="color:orange;">`1`</mark><mark style="color:orange;">,</mark> <mark style="color:orange;"></mark><mark style="color:orange;">`2`</mark><mark style="color:orange;">,</mark> <mark style="color:orange;"></mark><mark style="color:orange;">`3`</mark><mark style="color:orange;">,</mark> <mark style="color:orange;"></mark><mark style="color:orange;">`7`</mark><mark style="color:orange;">, and</mark> <mark style="color:orange;"></mark><mark style="color:orange;">`9`</mark> <mark style="color:orange;"></mark><mark style="color:orange;">always use the same three columns:</mark>

| Column    | Accepted Values                                         | Description                                                                                                                                                                                                                                                                                                                 |
| --------- | ------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| State     | Number, in sequence (`0`, `1`, `2`, ...)                | The stage within that block. The order and meaning of each stage are fixed in the server code — the file only adjusts timings; stages cannot be reordered or removed.                                                                                                                                                       |
| Condition | `0` or `1`                                              | `0` = this stage **does not have a fixed duration** — it advances automatically when a specific in-game condition is met (e.g., Standby or Tower being closed by another part of the code, or the player failing/completing a round). `1` = this stage **lasts for a fixed amount of time**, defined by the `Value` column. |
| Value     | Number, in seconds (only relevant when `Condition = 1`) | Duration of the stage. When `Condition = 0`, this value is completely ignored.                                                                                                                                                                                                                                              |

* <mark style="color:orange;">**Block 0**</mark><mark style="color:orange;">: Master sequence of the event (states: None, Battle Standby, Battle of Maya, Battle of Nightmare, Tower of Refinement, End of Cycle). Only the "End of Cycle" state (the 6th state,</mark> <mark style="color:orange;"></mark><mark style="color:orange;">`State 5`</mark><mark style="color:orange;">) has</mark> <mark style="color:orange;"></mark><mark style="color:orange;">`Condition = 1`</mark> <mark style="color:orange;"></mark><mark style="color:orange;">in the default file — this is the waiting period (</mark><mark style="color:orange;">`86400`</mark> <mark style="color:orange;"></mark><mark style="color:orange;">= 24 hours) before the event can start again. The other states in this master list do not have their own timers: each sub-event determines its own completion through its respective block (see below).</mark>
* <mark style="color:orange;">**Block 1**</mark><mark style="color:orange;">: Internal stages of</mark> <mark style="color:orange;"></mark><mark style="color:orange;">**Battle Standby**</mark> <mark style="color:orange;"></mark><mark style="color:orange;">(None, Start, Notice, End).</mark>
* <mark style="color:orange;">**Block 2**</mark><mark style="color:orange;">: Time limit for each of the three rounds of</mark> <mark style="color:orange;"></mark><mark style="color:orange;">**Battle of Maya**</mark> <mark style="color:orange;"></mark><mark style="color:orange;">(1st Hand, 2nd Hand, Final Phase) — exceeding the time limit causes the attempt to fail.</mark>
* <mark style="color:orange;">**Block 3**</mark><mark style="color:orange;">: The 19 internal sub-stages of</mark> <mark style="color:orange;"></mark><mark style="color:orange;">**Battle of Maya**</mark> <mark style="color:orange;"></mark><mark style="color:orange;">(notices, openings, and endings for each of the three rounds, plus the overall closing stage).</mark>
* <mark style="color:orange;">**Block 7**</mark><mark style="color:orange;">: Internal stages of</mark> <mark style="color:orange;"></mark><mark style="color:orange;">**Battle of Nightmare**</mark> <mark style="color:orange;"></mark><mark style="color:orange;">(None, Idle, Notice, Start/Battle, End, End of Cycle).</mark>
* <mark style="color:orange;">**Block 9**</mark><mark style="color:orange;">: Internal stages of</mark> <mark style="color:orange;"></mark><mark style="color:orange;">**Tower of Refinement**</mark> <mark style="color:orange;"></mark><mark style="color:orange;">(None, Revitalization, Notice 1, Closed, Notice 2, End).</mark>

### <mark style="color:yellow;">Block 4 — Maya Hand(s) AI Change Timing</mark>

| Column       | Accepted Values                                  | Description                                                                                                                                                              |
| ------------ | ------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| AIChangeTime | Number, in seconds, one per line (up to 4 lines) | At each time specified in this list, the Maya Hand currently in combat switches to the next attack pattern within its AI group, following the order defined in the list. |

### <mark style="color:yellow;">Block 5 — AI Group for Each Maya Round</mark>

| Column        | Accepted Values                                                                                     | Description                                              |
| ------------- | --------------------------------------------------------------------------------------------------- | -------------------------------------------------------- |
| AIGroupNumber | A `Group` number from `MonsterAIGroup.txt`, one per line (3 lines: 1st Hand, 2nd Hand, Final Phase) | The AI behavior used by the hand/monster for that round. |

### <mark style="color:yellow;">Block 6 — Maya Ice Storm Chance</mark>

| Column       | Accepted Values     | Description                                                          |
| ------------ | ------------------- | -------------------------------------------------------------------- |
| IceStormRate | Number (percentage) | Chance for Maya to use the Ice Storm attack each time it is checked. |

### <mark style="color:yellow;">Block 8 — Battle of Nightmare AI Group</mark>

| Column        | Accepted Values                            | Description                                                        |
| ------------- | ------------------------------------------ | ------------------------------------------------------------------ |
| AIGroupNumber | A `Group` number from `MonsterAIGroup.txt` | The AI behavior used by the monster(s) in the Battle of Nightmare. |

### <mark style="color:yellow;">Block 10 — Moon Stone Requirement</mark>

| Column               | Accepted Values | Description                                                                                                     |
| -------------------- | --------------- | --------------------------------------------------------------------------------------------------------------- |
| EnableCheckMoonStone | `0` or `1`      | `1` = requires the player to possess a Moon Stone to participate in the event. `0` = no Moon Stone is required. |

### <mark style="color:yellow;">Notes</mark>

* This single physical file is read **independently by five different parts of the code**: the main event controller reads only blocks `0` and `10`; Battle Standby reads only block `1`; Battle of Maya reads blocks `2`, `3`, `4`, `5`, and `6`; Battle of Nightmare reads blocks `7` and `8`; Tower of Refinement reads only block `9`. Each component silently ignores all blocks that do not belong to it — there is no error if a block is effectively "unused" by a given component.
* In `State`/`Condition`/`Value` blocks, only modify the `Value` column on rows where `Condition = 1`. Changing `State`, `Condition`, or the number of rows in a block may break the event sequence, since each row is tied to a specific stage already hardcoded in the server.
* Time values are always entered **in seconds** in the file, even though the code internally converts them to milliseconds.
