51 lines
5.6 KiB
Markdown
51 lines
5.6 KiB
Markdown
# Recruiting — побеждённые враги, вступающие в отряд
|
||
|
||
Recruiting позволяет захватить врага, побеждённого в бою, и позже сражаться на стороне игрока. После победы у каждого поверженного врага есть шанс быть захваченным; захваченные персонажи попадают в панель **Рекруты**, и любого из них можно добавить в отряд или снова убрать. Пока рекрут в плену, он живёт по своим правилам — в Cthangover он проголодается.
|
||
|
||
Мод не зависит ни от одной боевой системы: он слушает событие платформы «персонажи побеждены», поэтому работает с FF Battle, Card Battle и с чем угодно ещё, что сообщает побеждённых персонажей. Кто может быть захвачен и при каких условиях — решают данные игры и другие моды.
|
||
|
||
## Панель «Рекруты»
|
||
|
||
Открывается кнопкой на панели инструментов. В начале Cthangover ещё никто не захвачен:
|
||
|
||

|
||
|
||
Каждый захваченный рекрут получает строку с портретом, именем и здоровьем, а также кнопку: **В отряд** или **Из отряда**. Внизу счётчик показывает, сколько рекрутов захвачено и сколько из них в отряде.
|
||
|
||
## Как происходит захват
|
||
|
||
После победы для каждого поверженного врага:
|
||
|
||
1. В файле персонажа врага `RecruitmentChance` должен быть больше 0.
|
||
2. Рекрут каждого типа — только один: если этот тип уже захвачен, он пропускается.
|
||
3. Каждое зарегистрированное **условие** должно позволить захват. Этот мод приносит одно такое: у игрока должен быть навык `slave_master` (в Cthangover он у Марао есть с самого начала).
|
||
4. Бросок от 1 до 100 не должен превысить шанс.
|
||
|
||
Тогда враг попадает в ростер с 10 здоровья. В Cthangover единственный персонаж, которого можно захватить, встречается позже по сюжету, с шансом 50%:
|
||
|
||
```json
|
||
{ "Id": "werewolf_girl_1", "RecruitmentChance": 50 }
|
||
```
|
||
|
||
## В отряде
|
||
|
||
**В отряд** делает рекрута обычным членом отряда: он появляется на панели персонажей, сражается в боях своими действиями, может быть целью предметов и сохраняется вместе с отрядом. Потерянное в бою здоровье остаётся у рекрута. **Из отряда** сохраняет его действия и опыт до следующего возвращения.
|
||
|
||
## Нужды рекрутов
|
||
|
||
Каждый рекрут запускает зарегистрированные **поведения** на каждом тике игровых часов. Этот мод приносит одно — питание: рекрут, который не ел 24 игровых часа, теряет 1 здоровья за тик. В нынешней игре кормить рекрута пока нечем, поэтому захваченный рекрут начинает голодать через день после захвата.
|
||
|
||
Ростер, здоровье и состояние поведений сохраняются вместе с игрой.
|
||
|
||
## Авторам модов
|
||
|
||
- **Условие** — это класс, реализующий `IRecruitCondition`; мод recruiting находит его в любом загруженном моде. Верните false, чтобы запретить захват.
|
||
- **Поведение** реализует `IRecruitBehaviour`: оно настраивается при захвате рекрута, вызывается на каждом тике и удаляется вместе с рекрутом. Его состояние живёт в свойствах рекрута.
|
||
- Код может реагировать на `RecruitJoinedEvent` и `RecruitLeftEvent`.
|
||
|
||
## Если что-то пошло не так
|
||
|
||
1. **Никого не удаётся захватить.** У врага `RecruitmentChance` равен 0, условие запрещает (у игрока нет навыка `slave_master`) или бросок не удался.
|
||
2. **Тот же враг не захватывается дважды.** Один рекрут на тип врага — так задумано.
|
||
3. **Здоровье рекрута постоянно падает.** Это питание: он не ел сутки, а способа накормить его пока нет.
|