> **Can't find what you're looking for?** Use `search_docs` on the docs MCP server at `https://aetherskywarswiki.netlify.app/api/mcp` to find what you need.

# Quests and challenges

Two ways to give players something to aim at besides winning. They look similar and work very
differently, so it is worth being clear which one you want.

<img src="/quests-vs-challenges.svg" alt="Quests repeat daily or weekly, challenges last one match" />

| | Quests | Challenges |
| --- | --- | --- |
| Who decides | Everyone has them | The player opts in |
| How long | One day or one week | One match |
| Counts across | Every match you play | Only the match you are in |
| Paid | Every time it is reached | Every time it is done |
| On their record | No, it starts again | Yes, it is counted for good |
| Config | `quests.yml` | `challenges.yml` |

Achievements are a third thing again, and they live in
[Achievements and leaderboards](/features/achievements-and-leaderboards). An achievement counts a
player's whole life and pays once ever.

## Quests

A quest is a goal with a clock on it. Play three matches today, win five this week. When the day or
the week turns over, it starts again at zero.

Players open the list with `/quests`, which also answers to `/missions`, `/quest` and `/mission`,
or with `/asw quests`.

### Commands

| Command | What it does | Permission |
| --- | --- | --- |
| `/quests` | Opens the quest list. | `asw.play` |
| `/quests reload` | Rereads `quests.yml` without a restart. | `asw.admin` |

### Writing a quest

```yaml
Quests:
  daily_win:
    Period: DAILY
    Track: WIN_GAMES
    Goal: 1
    Displayname: '&#6EE7A8First Blood'
    Material: GOLDEN_APPLE
    Lore:
      - '&#9BA6B2Win a match today.'
    Reward:
      Coins: 150
```

| Key | What it means |
| --- | --- |
| `Period` | `DAILY` or `WEEKLY`. |
| `Track` | What it counts. The list is below. |
| `Goal` | The number to reach. Below 1 is treated as 1. |
| `Displayname` | The name in the menu. Colour codes work. |
| `Material` | A 1.21 material for the icon. An unknown one shows as paper and says so in the console. |
| `Lore` | Optional. Your own description lines in the menu, in place of the one written from the track. `%goal%` and `%progress%` fill in. The progress bar and reward lines are still added under it. |
| `Reward.Coins` | Paid the moment it is reached. |
| `Reward.Commands` | Console commands with `%player%` replaced. |

These are the things a quest can count:

`PLAY_GAMES`, `WIN_GAMES`, `WIN_SOLO`, `WIN_TEAMS`, `LOSE_GAMES`, `KILL_PLAYERS`, `DIE`,
`OPEN_CHESTS`, `BREAK_BLOCKS`, `SHOOT_ARROWS`, `DEAL_DAMAGE`, `JOIN_MATCHES`.

Winning counts twice: once as `WIN_GAMES` and once as `WIN_SOLO` or `WIN_TEAMS`, so a player can
have a quest for either.

### How the reset works

Nothing runs at midnight. Progress is filed under the day or the week it belongs to, so a new one
simply has none yet. That means a player who was offline when the day turned over is treated exactly
like one who was not, and a restart at the wrong moment cannot lose anybody's day.

Rows from days and weeks that have passed are swept up on startup, so the table does not grow
forever.

### The rest of the settings

```yaml
Enabled: true
Broadcast-Completion: false
```

`Enabled: false` switches every quest off without emptying the file. `Broadcast-Completion` tells
the whole server when somebody finishes one, which is off by default because daily quests are
finished often.

## Challenges

A challenge is a rule a player takes on for one match, on purpose, to make it harder. Nothing forces
one on anybody.

Players open the list with `/challenges`, which also answers to `/challenge` and `/chall`, or with
`/asw challenges`. It can be opened before the cages open and during the match, which is deliberate:
a player who is doing well and has not opened a chest yet can decide halfway through to go for it.

### Commands

| Command | What it does | Permission |
| --- | --- | --- |
| `/challenges` | Opens the challenge list. | `asw.play` |
| `/challenges reload` | Rereads `challenges.yml` without a restart. | `asw.admin` |

### Writing a challenge

```yaml
Challenges:
  no_chests:
    Rule: NO_CHESTS
    Displayname: '&#FFC857Empty Handed'
    Material: CHEST
    Reward:
      Coins: 500
```

| Key | What it means |
| --- | --- |
| `Rule` | What it asks. The list is below. |
| `Amount` | Only read by `KILL_COUNT`, which is how many kills in that one match. |
| `Requires-Win` | Whether the match also has to be won. |
| `Displayname` | The name in the menu. |
| `Material` | The icon. |
| `Reward.Coins` | Paid on the spot. |
| `Reward.Commands` | Console commands with `%player%` replaced. |

The rules are `NO_CHESTS`, `NO_BOW`, `NO_ARMOUR`, `FLAWLESS`, `NO_FOOD`, `NO_BUILDING` and
`KILL_COUNT`.

`Requires-Win` defaults to true for every rule about going without something, and false for
`KILL_COUNT`.

:::warning
Leave `Requires-Win` alone for the going-without rules unless you have a reason. With it off, a
player can take on "open no chests" and jump off the island for the reward.
:::

### What happens during a match

* Taking one on says so in chat and glints it in the menu. Clicking it again drops it.
* Breaking the rule fails it straight away, with a line in chat saying which rule and why.
* A rule already broken this match cannot be taken on. Opening a chest and then taking on
  "open no chests" is refused rather than quietly failed, so nothing here is ever a free reward.
* Wearing armour is checked once a second rather than reported, since putting a helmet on is not
  something the plugin is otherwise told about.
* Everything about the match is thrown away when it ends. Only finishing one is written down.

### The record

Finishing a challenge is counted for good, the way an achievement is, and the menu says how many
times a player has done each one. Doing it again bumps the count rather than writing a second entry.

`Broadcast-Completion` is on by default for challenges, unlike quests. A challenge is meant to be
shown off, which is most of the reason anybody takes one on.
