> For the complete documentation index, see [llms.txt](https://axiomemu.gitbook.io/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://axiomemu.gitbook.io/docs/data/event/crywolf.md).

# Crywolf.dat

Crywolf event: start schedule, state machine durations, AI group rotation, boss turn-up timing, MVP scoring tables, and rank reward thresholds.

## File Location

```
Data/Event/Crywolf.dat
```

Loaded once at GameServer startup. Gated by [Event.dat](/docs/gameserver/event-dat.md#crywolf) `CrywolfEvent`. Changes require a restart.

{% hint style="warning" %}
This file is **only loaded when the Castle Siege subserver is enabled**, i.e., [Common.dat](/docs/gameserver/common-dat.md) `EnableCastleSiege = 1`. On non-CS GameServer deployments the loader is skipped entirely, the schedule is empty, and Crywolf will never start regardless of `CrywolfEvent`.
{% endhint %}

## Sections

### Section 0 - Start Schedule

```
0
//Mode   State   Month   Day   DayOfWeek   Hour   Minute   ContinuanceTime
0        1       *       *     4           20     30       *
0        1       *       *     7           20     30       *
end
```

Each row is a scheduled start trigger. Shipped baseline: Wednesdays and Saturdays at 20:30.

| Column            | Effect                                                                                                                                         |
| ----------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
| `Mode`            | `0` runs the event once per trigger; `1` loops (on ENDCYCLE the state re-enters NOTIFY1 instead of returning to NONE)                          |
| `State`           | State to enter on this trigger. `1` = NOTIFY1 (first notification)                                                                             |
| `Month`           | `*` matches any month                                                                                                                          |
| `Day`             | `*` matches any day of month                                                                                                                   |
| `DayOfWeek`       | MFC weekday: `1` = Sunday, `2` = Monday, `3` = Tuesday, `4` = Wednesday, `5` = Thursday, `6` = Friday, `7` = Saturday. `*` matches any weekday |
| `Hour`            | 0-23                                                                                                                                           |
| `Minute`          | 0-59                                                                                                                                           |
| `ContinuanceTime` | `*` uses the per-state durations from section 1                                                                                                |

### Section 1 - State Durations

```
1
//State   Hour   Minute   Second
1         0      0        300
2         0      0        60
3         0      0        120
4         0      0        900
5         0      0        15
6         0      0        10
end
```

Duration of each of the six Crywolf states. The state progression is:

| State | Name                             | Shipped duration |
| ----- | -------------------------------- | ---------------- |
| 1     | NOTIFY1 (first announcement)     | 300s             |
| 2     | NOTIFY2 (second announcement)    | 60s              |
| 3     | READY (altar contracting window) | 120s             |
| 4     | START (main battle)              | 900s             |
| 5     | END (results)                    | 15s              |
| 6     | ENDCYCLE (cleanup)               | 10s              |

After state 6, the event returns to NONE (or loops to NOTIFY1 if section 0 `Mode=1`).

### Section 2 - Battle AI Group Rotation

```
2
//AIGroupNumber
1
2
3
4
6
7
8
9
10
11
12
13
end
```

List of AI group indices initialized at state READY and running during state START. These groups are cycled to the "monster rush" AI order after the boss turn-up interval elapses.

### Section 3 - Boss Group Turn-Up

```
3
//Group   TurnUpTime
5         600
end
```

| Column       | Effect                                                                                                          |
| ------------ | --------------------------------------------------------------------------------------------------------------- |
| `Group`      | AI group index for the boss (Balgass + entourage). Initialized and put into AI order `1` when the turn-up fires |
| `TurnUpTime` | Seconds into state START before the boss spawns                                                                 |

### Section 4 - Battle AI Rush Time

```
4
//AIChangeTime
300
end
```

Seconds into state START before the section-2 AI groups switch to AI order `2` ("Monster Rush"). This is a single one-shot switch, not a repeating rotation interval.

### Section 5 - MVP Score Table

```
5
//MVPScoreTable1   MVPScoreTable2   MVPScoreTable3   MVPScoreTable4   MVPScoreTable5   MVPScoreTable6   MVPScoreTable7
7000              3000              600               700               600               1000              6000
end
```

Score granted per contribution type. The slots are indexed by what was killed or claimed:

| Index | Column         | Awarded for                                                           |
| ----- | -------------- | --------------------------------------------------------------------- |
| 0     | MVPScoreTable1 | Killing Balgass (class 349)                                           |
| 1     | MVPScoreTable2 | Killing Dark Elf (class 340)                                          |
| 2     | MVPScoreTable3 | Killing class 344                                                     |
| 3     | MVPScoreTable4 | Killing class 341                                                     |
| 4     | MVPScoreTable5 | Killing class 345                                                     |
| 5     | MVPScoreTable6 | Killing class 348                                                     |
| 6     | MVPScoreTable7 | Altar contract reward (granted to each altar contractor at state END) |

TODO: verify the precise monster name for each class id (340, 341, 344, 345, 348) in the final script.

### Section 6 - MVP Rank Score Thresholds

```
6
//MVPRankScoreTable1   MVPRankScoreTable2   MVPRankScoreTable3   MVPRankScoreTable4   MVPRankScoreTable5
0                     1001                  3001                  5001                  10001
end
```

Score thresholds for MVP rank 0-4 (highest accumulated threshold the player meets sets their rank). The rank is used to look up the XP reward in section 7.

### Section 7 - MVP Rank XP Rewards

```
7
//MVPRankExpTable1   MVPRankExpTable2   MVPRankExpTable3   MVPRankExpTable4   MVPRankExpTable5
0                   200000              800000              1200000             1800000
end
```

Experience awarded per MVP rank (indexes 0-4, matching section 6). If the event failed (occupation state 1), each reward is scaled to 10% of the listed value. The final experience is further multiplied by the per-account-level `AddEventExperienceRate` table from the account-tier config.

## Important Behavior

* A character that logs in while the Crywolf map is mid state-swap is relocated to a safe spawn and always respawned. Earlier builds could leave such a character in a bad map position that triggered a repeating disconnect/reconnect loop; the shipped build clears that on login.

## Cross-File Dependencies

| Value                                                      | Related in                                                                       |
| ---------------------------------------------------------- | -------------------------------------------------------------------------------- |
| Enable flag                                                | [Event.dat](/docs/gameserver/event-dat.md) `CrywolfEvent`                        |
| Benefit/penalty toggles and values                         | [Event.dat](/docs/gameserver/event-dat.md) `CrywolfBenefit*` / `CrywolfPenalty*` |
| Map (Crywolf)                                              | [MapManager.xml](/docs/data/mapmanager.md)                                       |
| AI groups (section 2, section 3 boss group)                | [MonsterAIGroup.xml](/docs/data/monster/monsteraigroup.md)                       |
| Reward bag                                                 | [EventItemBag](/docs/data/eventitembag.md)                                       |
| Boss/minion monster classes (340, 341, 344, 345, 348, 349) | [Monster.xml](/docs/data/monster/monster.md)                                     |

## Common Issues

* **Event never starts** - section 0 has no rows with `Used=1`, or the only rows have invalid `DayOfWeek` values (valid range 1-7 or `*` / `-1`)
* **Boss never spawns** - section 3 `TurnUpTime` exceeds section 1 state 4 duration (900s shipped), so START ends before the boss timer fires
* **Monster rush never triggers** - section 4 `AIChangeTime` exceeds state 4 duration; section-2 AI groups never switch to AI order 2
* **No MVP rewards** - section 7 XP values are all zero, or player score is below the rank 1 threshold in section 6
* **Event runs back-to-back every cycle** - section 0 `Mode=1` loops via ENDCYCLE back to NOTIFY1; set `Mode=0` to return to NONE and wait for the next schedule row
* **Benefit/penalty doesn't apply** - `CrywolfBenefitSwitch` / `CrywolfPenaltySwitch` off in Event.dat, or occupation state does not match (benefit applies only when occupation state is 0, i.e., the event was won)
