> 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/experiencetable/notice.md).

# Notice.xml

Scheduled server notices broadcast to all online players at a set interval. Typical use: announcement rotation (website URL, event reminder, rules link).

## File Location

```
Data/Util/Notice.xml
```

Loaded once at GameServer startup. Changes require a restart.

## Schema

```xml
<NoticeManager>
    <Notice Type="..." RepeatTime="..."
            Line1="..." Line2="..." Line3="..."
            TextColor="R,G,B[,A]" BgColor="R,G,B[,A]" Blink="true|false" />
</NoticeManager>
```

## Attributes

| Attribute                   | Type                     | Effect                                                                                                                                                                                                        |
| --------------------------- | ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `Type`                      | `0` or `1`               | Notice channel. `0` = gold floating ribbon (mid-screen, legacy gold blinks). `1` = system message in the chat-box log. Other values are rejected at load time with `[Notice.xml] skipping unsupported Type=N` |
| `RepeatTime`                | seconds                  | Interval between broadcasts. `300` = every 5 minutes. Converted to milliseconds internally                                                                                                                    |
| `Line1` / `Line2` / `Line3` | string                   | Up to three text lines, each up to 127 characters. Empty lines are skipped (not sent as empty packets)                                                                                                        |
| `TextColor`                 | `"R,G,B"` or `"R,G,B,A"` | **Type 0 only**. Overrides the default blinking-gold text. Each component 0-255. Omitted = legacy gold                                                                                                        |
| `BgColor`                   | `"R,G,B"` or `"R,G,B,A"` | **Type 0 only**. Background tint behind the text. If `TextColor` is set but `BgColor` is omitted, defaults to `0,0,0,128`                                                                                     |
| `Blink`                     | `"true"` or `"false"`    | **Type 0 only**. Oscillate alpha between 50% and 100%. Defaults to `false` when a custom color is set; legacy gold blinks regardless                                                                          |

## Broadcast Behavior

On every `RepeatTime` tick the server iterates Line1..Line3 and sends each non-empty line as its own packet to every connected character, then writes the combined text to the server console log in blue.

* For `Type=1` (system message), or `Type=0` with no custom color attrs, the legacy 0x0D notice packet is sent with the fixed parameters `count = 0`, `opacity = 0`, `delay = 0`, `color = 0`, `speed = 0`.
* For `Type=0` with any of `TextColor` / `BgColor` / `Blink` set, the colored-broadcast packet (`0xF3` sub-`NOTICE_COLOR_BROADCAST_SUB`) is sent instead, carrying the parsed RGBA values plus the blink flag. Total payload is capped at 200 characters so the packet fits the 1-byte size field.

Empty `Line2` or `Line3` are silently skipped; only non-empty lines travel the wire.

## Important Behavior

* **Dynamic notice width.** The floating ribbon (`Type=0`) sizes itself to the text and wraps long lines to additional rows instead of clipping them at a fixed width. A line that used to be cut off now fits, and messages longer than one row wrap rather than truncate. More text fits on a single row than before. Per-line storage is still capped at 127 characters, and a colored broadcast still has a 200-character total ceiling on the wire (see below).
* **Color applies per entry, to all lines.** `TextColor` / `BgColor` / `Blink` set on a `<Notice>` apply to every line of that entry. There is no per-line color.

## Multiple Notices

Multiple `<Notice>` entries rotate independently. Each fires on its own `RepeatTime` schedule, tracked by its own last-fired timestamp. There is no ordering or staggering - two entries with the same `RepeatTime` will tend to fire together. The loader uses a dynamic vector so there is no fixed cap, but keep the entry count small to avoid clogging the broadcast queue.

## Cross-File Dependencies

| Attribute         | Related in                                                               |
| ----------------- | ------------------------------------------------------------------------ |
| Broadcast routing | [MapServerInfo.xml](/docs/data/mapserverinfo.md) `Group`                 |
| Chat log          | [Common.dat](/docs/gameserver/common-dat.md#log-settings) `WriteChatLog` |

## Common Issues

* **Notices spam too often** - `RepeatTime` too low; raise to 300+ seconds
* **Multi-line display cut off** - the ribbon width is dynamic and wraps long lines instead of clipping them, so this should no longer happen. Per-line text is still capped at 127 characters in storage; colored broadcasts have a 200-character total ceiling on the wire
* **Entry silently dropped** - `Type` is not `0` or `1`. Watch for `[Notice.xml] skipping unsupported Type=N` on the server console
* **Custom color attrs ignored** - `Type=1` rows take only the legacy chat-box packet; only `Type=0` honours `TextColor` / `BgColor` / `Blink`
* **Blink not blinking** - custom color sets `Blink=false` by default; add `Blink="true"` explicitly when you want it
