# Preset

This section explains preset fields, purposes, allowed values, and behavior, with a complete example.

For `dc` format conventions, please read:
- [Getting Started](../Getting_Started)

## Location
- Directory: `DLC/preset/`
- File name does not affect display; DisplayName can override it.

## Complete Example
```dc
[DisplayName]
zh_cn = "优化预设"
en_us = "Performance Preset"

[tip]
zh_cn = "适合低配机器"
en_us = "Recommended for low-end PCs"

enable = [
  "Mod1",
  "Mod2"
]
conflicts = [
  "Mod3"
]
alarm = false
```

---

## Field Reference

#### `[DisplayName]`
- **Purpose**: Preset display name.
- **Allowed**: Object `{ zh_cn: "...", en_us: "..." }`.
- **Fallback**: If empty, uses the file name (without extension).

#### `[tip]`
- **Purpose**: Preset tooltip text.
- **Allowed**: Object `{ zh_cn: "...", en_us: "..." }`.

#### `enable`
- **Purpose**: DLC list to enable (`identifier`).
- **Allowed**: Array of identifiers.

#### `conflicts`
- **Purpose**: DLC list that conflicts with this preset (`identifier`).
- **Allowed**: Array of identifiers.

#### `alarm`
- **Purpose**: Whether enabling this preset shows alarm confirmation first.
- **Allowed**: Boolean.

---

## State & Storage
- Stored at: `config/dlc_manager/state.dc`, field `presets`.
- Status values: `On` / `Part` / `Off`.

## Behavior
- When enabled, the preset attempts to enable all DLCs in `enable`.
- DLCs listed in `conflicts` are auto-disabled and show conflict warnings.
- Conflict handling supports cascade disable for dependents.
