85 lines
6.9 KiB
Markdown
85 lines
6.9 KiB
Markdown
# Characters Engine — персонажи, их действия и отряд
|
||
|
||
Characters Engine определяет, кто участвует в боях: герой, спутники и враги — со здоровьем, атакой, защитой, очками действий и карточками действий, которые они могут применять. Мод также показывает панель **Действия персонажей**, где виден ваш отряд и где решается, какие карточки возьмёт в бой каждый персонаж, и поставляет портреты, которые появляются рядом с репликами диалогов.
|
||
|
||
Он входит в Cthangover и RPG Plus, а боевые моды, recruiting и редакторы строятся поверх него.
|
||
|
||
## Панель «Действия персонажей»
|
||
|
||
Открывается иконкой карт на панели инструментов.
|
||
|
||

|
||
|
||
- **Отряд** — все персонажи вашего отряда с портретом, здоровьем (HP), очками действий за ход (AP), атакой (ATK) и защитой (DEF).
|
||
- **Слоты** — у каждого персонажа три слота для карточек действий. Карточка показывает цель (враг, союзник, сам персонаж), стоимость в AP и свои значения.
|
||
- **Пул действий** — карточки, которые у вас есть, но ещё не раздали. Перетащите карточку в слот или выберите карточку, а затем слот; перетаскивание между слотами меняет их местами. Поиск и фильтры сужают пул.
|
||
- **Сброс** возвращает в слоты первые три действия из описания каждого персонажа; остальные его действия уходят в пул.
|
||
|
||
## Три разные картинки
|
||
|
||
Персонаж может появиться тремя способами, и каждый берётся из своего места:
|
||
|
||

|
||
|
||
1. **Диалоговый портрет (аватар)** — картинка из папки `avatars/` мода, выбирается для каждой реплики в сценарии: `text "…" first=marao/sad` занимает первое место портрета, `second=…` — второе (для диалога двух людей). К описанию персонажа он не привязан.
|
||
2. **Изображение персонажа** — поле `Image` из описания персонажа; показывается на карточках в этой панели и в боях.
|
||
3. **Спрайт для карты (charset)** — шагающий спрайт на тайловых картах; его выбирает мод RPG (настройка **Внешность** игры или поле `Sprite` события), а не этот мод.
|
||
|
||
## Описание персонажа
|
||
|
||
Персонажи — это JSON-файлы вида `character` в папке `characters/` мода. Вот Марао из Cthangover — сравните с его карточкой на панели выше:
|
||
|
||
```json
|
||
{
|
||
"Kind": "character",
|
||
"Items": [
|
||
{
|
||
"Id": "Marao",
|
||
"Name": "characters/player/marao",
|
||
"Image": "characters/player/marao",
|
||
"Level": 1,
|
||
"Point": 1,
|
||
"Health": 16,
|
||
"Defence": 0,
|
||
"Attack": 5,
|
||
"Actions": ["physics/attack", "physics/defence"]
|
||
}
|
||
]
|
||
}
|
||
```
|
||
|
||
`Health 16` — это его **HP 16/16**, `Point 1` — **AP 1**, `Attack 5` — **ATK 5**, а два `Actions` — карточки **Базовая атака** и **Защита** в его слотах.
|
||
|
||
Прочие поля: `Behaviour` (боевой ИИ врага, например `base`), `Exp` (опыт за победу над ним), `RecruitmentChance` и `Loot` — список из `ItemId`, `MinCount`, `MaxCount` и `Probability`, что выпадает при победе над персонажем.
|
||
|
||
## Карточки действий
|
||
|
||
Действия — это JSON-файлы вида `action`. Этот мод кладёт в игру базовые физические — **Базовая атака**, **Защита** и **Оглушение**:
|
||
|
||
```json
|
||
{
|
||
"Id": "physics/attack",
|
||
"Name": "characters/action/physics_attack/name",
|
||
"Description": "characters/action/physics_attack/description",
|
||
"Image": "characters/actions/physics_attack",
|
||
"Type": "ToEnemy",
|
||
"Values": ["RequiredPoint=1", "Attack=1.0", "AttackType=Physics"]
|
||
}
|
||
```
|
||
|
||
`Type` задаёт цель (враг, союзник, сам персонаж) или делает карточку пассивной или активной; `RequiredPoint` — стоимость в AP. Что остальные значения делают в бою, решает используемый боевой мод.
|
||
|
||
## Добавить персонажа в отряд из сценария
|
||
|
||
```scenario
|
||
action party.add id=rpg_hero
|
||
```
|
||
|
||
Персонаж входит в отряд и в боевой состав. Тот, кто уже числится, сохраняет уровень и здоровье. RPG Demo использует эту строку, чтобы отдать игроку героя при первом входе в деревню.
|
||
|
||
## Если что-то пошло не так
|
||
|
||
1. **Персонаж показывает id вместо имени.** `Name` — ключ перевода; добавьте его в файлы `locale` мода.
|
||
2. **Рядом с репликой нет портрета.** Имя аватара после `first=` / `second=` должно совпадать с картинкой в папке `avatars/` какого-нибудь мода, например `avatars/marao/sad.png` для `marao/sad`.
|
||
3. **Карточку нельзя применить в бою.** У персонажа меньше AP, чем `RequiredPoint` карточки.
|