Compare commits

..
3 Commits
Author SHA1 Message Date
cthangover de98c7a765 Add mod documentation in seven languages 2026-10-29 09:26:07 +01:00
iisaev bf58f76c79 gitignore file 2026-10-28 15:20:03 +03:00
cthangover dee2200350 Localization in es, zh, ja, ko, vi 2026-10-23 20:54:46 +02:00
17 changed files with 409 additions and 3 deletions

No files matched your search

+1
View File
@@ -12,6 +12,7 @@ obj/
gen/ gen/
obj/ obj/
bin/ bin/
art_sources/
*.tres~ *.tres~
*.tscn~ *.tscn~
Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

+50
View File
@@ -0,0 +1,50 @@
# Recruiting — defeated enemies who join the party
Recruiting lets an enemy beaten in battle be captured and later fight on the player's side. After a victory each defeated enemy has a chance to be captured; captured characters are listed in the **Recruits** panel, and any of them can be added to the party or removed again. While captured, a recruit lives by rules of its own — in Cthangover it gets hungry.
The mod does not depend on any battle system: it listens for the platform's "characters defeated" event, so it works with FF Battle, Card Battle or anything else that reports defeated characters. Which characters can be captured, and under which conditions, is decided by the game's data and by other mods.
## The Recruits panel
Open it with its toolbar button. At the start of Cthangover nobody has been captured yet:
![The Recruits panel: the title Recruits, the line "Captured enemies · any of them can join the party", "No captured recruits yet" and at the bottom "Captured: 0 · in party: 0".](assets/recruits-panel.jpg)
Each captured recruit gets a row with its portrait, name and health, and a button: **Add to party** or **Remove from party**. The footer counts the recruits and how many of them are in the party.
## How a capture happens
After a victory, for every defeated enemy:
1. The enemy's character file must have a `RecruitmentChance` above 0.
2. Only one recruit of each enemy type: if this type is already captured, it is skipped.
3. Every registered **condition** must allow it. This mod brings one: the player must have the skill `slave_master` (in Cthangover Marao has it from the start).
4. A roll from 1 to 100 must not exceed the chance.
Then the enemy joins the roster with 10 health. In Cthangover the only character that can be captured is met later in the story, with a chance of 50%:
```json
{ "Id": "werewolf_girl_1", "RecruitmentChance": 50 }
```
## In the party
**Add to party** makes the recruit an ordinary party member: it appears on the character panel, fights in battles with its own actions, can be the target of items and is saved with the party. Health lost in battle stays with the recruit. **Remove from party** keeps its actions and experience for the next time it joins.
## Recruits' needs
Every recruit runs the registered **behaviours** on each tick of the game clock. The mod brings one, nutrition: a recruit that has not eaten for 24 game hours loses 1 health per tick. In the current game nothing feeds a recruit yet, so a captured recruit starts to starve a day after the capture.
The roster, health and behaviour state are saved with the game.
## For mod authors
- A **condition** is a class implementing `IRecruitCondition`; the recruiting mod finds it in any loaded mod. Return false to forbid a capture.
- A **behaviour** implements `IRecruitBehaviour`: it is configured when a recruit is captured, called on every tick, and removed with the recruit. Its state lives in the recruit's properties.
- Code can react to `RecruitJoinedEvent` and `RecruitLeftEvent`.
## If something goes wrong
1. **Nobody is ever captured.** The enemy's `RecruitmentChance` is 0, a condition forbids it (the player lacks the `slave_master` skill), or the roll failed.
2. **The same enemy is not captured twice.** One recruit per enemy type, by design.
3. **A recruit's health keeps falling.** Nutrition: it has not eaten for a day, and there is no way to feed it yet.
+50
View File
@@ -0,0 +1,50 @@
# Recruiting — enemigos derrotados que se unen al grupo
Recruiting permite capturar a un enemigo vencido en combate para que más tarde luche del lado del jugador. Tras una victoria, cada enemigo derrotado tiene una probabilidad de ser capturado; los personajes capturados aparecen en el panel **Reclutas**, y cualquiera de ellos puede añadirse al grupo o quitarse de nuevo. Mientras está capturado, un recluta vive según sus propias reglas — en Cthangover se queda con hambre.
El mod no depende de ningún sistema de combate: escucha el evento de "personajes derrotados" de la plataforma, así que funciona con FF Battle, Card Battle o cualquier otro que informe de los personajes derrotados. Quién puede ser capturado, y bajo qué condiciones, lo deciden los datos del juego y otros mods.
## El panel de Reclutas
Se abre con su botón de la barra de herramientas. Al comienzo de Cthangover todavía no hay nadie capturado:
![El panel de Reclutas: el título Reclutas, la línea "Enemigos capturados · cualquiera puede unirse al grupo", "Todavía no hay reclutas capturados" y abajo "Capturados: 0 · en el grupo: 0".](assets/recruits-panel.jpg)
Cada recluta capturado recibe una fila con su retrato, nombre y salud, y un botón: **Añadir al grupo** o **Quitar del grupo**. El pie cuenta cuántos reclutas hay y cuántos están en el grupo.
## Cómo ocurre una captura
Tras una victoria, para cada enemigo derrotado:
1. El archivo de personaje del enemigo debe tener un `RecruitmentChance` mayor que 0.
2. Solo un recluta de cada tipo de enemigo: si ese tipo ya está capturado, se salta.
3. Cada **condición** registrada debe permitirlo. Este mod trae una: el jugador debe tener la habilidad `slave_master` (en Cthangover Marao la tiene desde el principio).
4. Una tirada de 1 a 100 no debe superar la probabilidad.
Entonces el enemigo entra en la plantilla con 10 de salud. En Cthangover el único personaje que puede capturarse aparece más adelante en la historia, con una probabilidad del 50 %:
```json
{ "Id": "werewolf_girl_1", "RecruitmentChance": 50 }
```
## En el grupo
**Añadir al grupo** convierte al recluta en un miembro normal del grupo: aparece en el panel de personajes, pelea en los combates con sus propias acciones, puede ser objetivo de objetos y se guarda con el grupo. La salud perdida en combate se queda con el recluta. **Quitar del grupo** conserva sus acciones y experiencia para la próxima vez que se una.
## Las necesidades de los reclutas
Cada recluta ejecuta los **comportamientos** registrados en cada tic del reloj del juego. Este mod trae uno, la nutrición: un recluta que lleva 24 horas de juego sin comer pierde 1 de salud por tic. En el juego actual todavía no hay nada que alimente a un recluta, así que uno capturado empieza a pasar hambre un día después de la captura.
La plantilla, la salud y el estado de los comportamientos se guardan con el juego.
## Para autores de mods
- Una **condición** es una clase que implementa `IRecruitCondition`; el mod recruiting la encuentra en cualquier mod cargado. Devuelve false para prohibir una captura.
- Un **comportamiento** implementa `IRecruitBehaviour`: se configura cuando se captura un recluta, se llama en cada tic y se elimina con el recluta. Su estado vive en las propiedades del recluta.
- El código puede reaccionar a `RecruitJoinedEvent` y `RecruitLeftEvent`.
## Si algo falla
1. **Nunca se captura a nadie.** El `RecruitmentChance` del enemigo es 0, una condición lo prohíbe (falta la habilidad `slave_master`) o la tirada falló.
2. **El mismo enemigo no se captura dos veces.** Un recluta por tipo de enemigo, a propósito.
3. **La salud de un recluta no deja de caer.** Es la nutrición: lleva un día sin comer y todavía no hay forma de alimentarlo.
+50
View File
@@ -0,0 +1,50 @@
# Recruiting — パーティに加わる、倒した敵たち
Recruiting は、戦闘で倒した敵を捕らえ、のちにプレイヤーの側で戦わせるしくみです。勝利のあと、倒した敵にはそれぞれ捕獲のチャンスが生まれます。捕らえられたキャラクターは**勧誘した者たち**パネルに並び、誰でもパーティに加えたり、また外したりできます。捕らわれている間、勧誘した者はそれぞれのルールで暮らします — Cthangover では腹を減らします。
この MOD はどの戦闘システムにも依存しません。プラットフォームの「キャラクターが倒された」イベントを聞いているので、FF Battle でも Card Battle でも、倒されたキャラクターを報告するものなら何とでも動きます。誰を捕らえられ、どんな条件が付くかは、ゲームのデータと他の MOD が決めます。
## 「勧誘した者たち」パネル
ツールバーのボタンで開きます。Cthangover の冒頭では、まだ誰も捕らえられていません:
![「勧誘した者たち」パネル:タイトル「勧誘した者たち」、「捕らえた敵 · 誰でもパーティに加えられる」の行、「捕らえた者はまだいない」、下部に「捕獲:0 · パーティ内:0」。](assets/recruits-panel.jpg)
捕らえた者ごとに、ポートレート、名前、体力つきの行ができ、ボタンが一つ付きます:**パーティに加える**か**パーティから外す**。フッターには捕らえた数と、そのうちパーティにいる数が出ます。
## 捕獲のしくみ
勝利のあと、倒した敵それぞれについて:
1. 敵のキャラクターファイルに 0 より大きい `RecruitmentChance` があること。
2. 敵の種類ごとに勧誘した者は一人だけ:その種類がすでに捕らえられていれば、スキップします。
3. 登録済みの**条件**がすべて許可すること。この MOD が一つ持っています:プレイヤーがスキル `slave_master` を持っていること(Cthangover ではマラオが最初から持っています)。
4. 1 から 100 のロールが、確率を超えないこと。
これを満たすと、敵は体力 10 で名簿に入ります。Cthangover で捕らえられる唯一のキャラクターは物語の後半で現れ、確率は 50% です:
```json
{ "Id": "werewolf_girl_1", "RecruitmentChance": 50 }
```
## パーティの中で
**パーティに加える**は、その者を普通のパーティメンバーにします:キャラクターパネルに現れ、自分のアクションで戦闘に参加し、アイテムの対象になり、パーティと一緒にセーブされます。戦闘で失った体力は、その者のものとして残ります。**パーティから外す**と、アクションと経験値は次に加わるときまで取っておかれます。
## 勧誘した者たちの欲求
勧誘した者は、ゲーム時計の各ティックで登録済みの**ふるまい**を実行します。この MOD が一つ持っているのは栄養です:24 ゲーム時間食べないでいると、ティックごとに体力を 1 失います。現状のゲームでは食べ物を与える手段がないため、捕らえた者は捕獲の一日あとから飢え始めます。
名簿・体力・ふるまいの状態は、ゲームと一緒にセーブされます。
## MOD 作者向け
- **条件**は `IRecruitCondition` を実装するクラスです。recruiting MOD は読み込まれたどの MOD からでも見つけます。false を返せば捕獲を禁じられます。
- **ふるまい**は `IRecruitBehaviour` を実装します。勧誘した者が捕らえられたときに設定され、各ティックで呼ばれ、その者とともに取り除かれます。状態はその者のプロパティに置かれます。
- コードは `RecruitJoinedEvent` と `RecruitLeftEvent` に反応できます。
## うまくいかないとき
1. **誰も捕らえられない。** 敵の `RecruitmentChance` が 0 か、条件が拒んでいる(プレイヤーに `slave_master` スキルがない)か、ロールに失敗したかです。
2. **同じ敵は二度捕らえられない。** 種類ごとに一人。設計どおりです。
3. **体力が下がり続ける。** 栄養です。一日食べておらず、まだ与える方法がありません。
+50
View File
@@ -0,0 +1,50 @@
# Recruiting — 파티에 합류하는 쓰러뜨린 적들
Recruiting은 전투에서 쓰러뜨린 적을 포획해, 나중에 플레이어 편에서 싸우게 합니다. 승리 후에는 쓰러뜨린 적마다 포획될 기회가 생깁니다. 포획된 캐릭터는 **영입자** 패널에 나열되고, 그중 누구든 파티에 넣었다 뺐다 할 수 있습니다. 포획된 동안 영입자는 저들만의 규칙으로 삽니다 — Cthangover에서는 배가 고파집니다.
이 모드는 어느 전투 시스템에도 의존하지 않습니다. 플랫폼의 “캐릭터가 쓰러졌다” 이벤트를 듣고 있어서, FF Battle이든 Card Battle이든 쓰러진 캐릭터를 보고하는 시스템이면 무엇과든 작동합니다. 누구를 포획할 수 있고 어떤 조건이 붙는지는 게임의 데이터와 다른 모드가 정합니다.
## 영입자 패널
툴바 버튼으로 엽니다. Cthangover 시작 시점에는 아직 포획한 사람이 없습니다:
![영입자 패널: 제목 “영입자”, “포획한 적 · 누구든 파티에 합류할 수 있다” 줄, “아직 포획한 영입자가 없다”, 아래쪽에 “포획: 0 · 파티: 0”.](assets/recruits-panel.jpg)
포획된 영입자마다 초상화, 이름, 체력이 담긴 행이 생기고 버튼이 하나 붙습니다: **파티에 추가** 또는 **파티에서 제외**. 바닥글에는 영입자 수와 그중 파티에 있는 수가 표시됩니다.
## 포획은 이렇게 일어납니다
승리 후, 쓰러진 적마다:
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. **영입자의 체력이 계속 떨어집니다.** 영양 탓입니다. 하루를 굶었고, 아직 먹일 방법이 없습니다.
+50
View File
@@ -0,0 +1,50 @@
# Recruiting — побеждённые враги, вступающие в отряд
Recruiting позволяет захватить врага, побеждённого в бою, и позже сражаться на стороне игрока. После победы у каждого поверженного врага есть шанс быть захваченным; захваченные персонажи попадают в панель **Рекруты**, и любого из них можно добавить в отряд или снова убрать. Пока рекрут в плену, он живёт по своим правилам — в Cthangover он проголодается.
Мод не зависит ни от одной боевой системы: он слушает событие платформы «персонажи побеждены», поэтому работает с FF Battle, Card Battle и с чем угодно ещё, что сообщает побеждённых персонажей. Кто может быть захвачен и при каких условиях — решают данные игры и другие моды.
## Панель «Рекруты»
Открывается кнопкой на панели инструментов. В начале Cthangover ещё никто не захвачен:
![Панель «Рекруты»: заголовок «Рекруты», строка «Захваченные враги · любого можно добавить в отряд», «Пока нет захваченных рекрутов», а внизу «Захвачено: 0 · в отряде: 0».](assets/recruits-panel.jpg)
Каждый захваченный рекрут получает строку с портретом, именем и здоровьем, а также кнопку: **В отряд** или **Из отряда**. Внизу счётчик показывает, сколько рекрутов захвачено и сколько из них в отряде.
## Как происходит захват
После победы для каждого поверженного врага:
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. **Здоровье рекрута постоянно падает.** Это питание: он не ел сутки, а способа накормить его пока нет.
+50
View File
@@ -0,0 +1,50 @@
# Recruiting — kẻ địch bị đánh bại gia nhập đội
Recruiting cho phép bắt giữ kẻ địch vừa bị đánh bại trong chiến đấu, để sau đó chiến đấu cho phía người chơi. Sau một chiến thắng, mỗi kẻ địch bị đánh bại đều có cơ hội bị bắt; các nhân vật bị bắt được liệt kê trong bảng **Người được chiêu mộ**, và bất kỳ ai trong số họ cũng có thể thêm vào đội hoặc rút ra. Trong lúc bị giam giữ, người được chiêu mộ sống theo quy tắc riêng của mình — trong Cthangover thì nó sẽ đói.
Mod không phụ thuộc hệ thống chiến đấu nào: nó lắng nghe sự kiện “nhân vật bị đánh bại” của nền tảng, nên hoạt động với FF Battle, Chiến đấu thẻ bài hay bất cứ thứ gì báo cáo nhân vật bị đánh bại. Ai có thể bị bắt, và với điều kiện gì, do dữ liệu của trò chơi và các mod khác quyết định.
## Bảng Người được chiêu mộ
Mở bằng nút trên thanh công cụ. Đầu game Cthangover thì chưa bắt được ai:
![Bảng Người được chiêu mộ: tiêu đề “Người được chiêu mộ”, dòng “Kẻ thù bị bắt · bất kỳ ai cũng có thể gia nhập tổ đội”, “Chưa bắt được ai” và dưới cùng “Đã bắt: 0 · trong tổ đội: 0”.](assets/recruits-panel.jpg)
Mỗi người được bắt sẽ có một hàng với chân dung, tên và máu, kèm một nút: **Thêm vào tổ đội** hoặc **Rời tổ đội**. Phần chân đếm số người đã bắt và bao nhiêu đang trong đội.
## Một lần bắt diễn ra thế nào
Sau chiến thắng, với mỗi kẻ địch bị đánh bại:
1. Tệp nhân vật của địch phải có `RecruitmentChance` lớn hơn 0.
2. Mỗi loại địch chỉ một người được bắt: nếu loại đó đã có người bị bắt, bỏ qua.
3. Mọi **điều kiện** đã đăng ký đều phải cho phép. Mod này có sẵn một điều kiện: người chơi phải có kỹ năng `slave_master` (trong Cthangover, Marao có sẵn ngay từ đầu).
4. Một lần gieo từ 1 đến 100 không được vượt quá tỉ lệ.
Đạt đủ rồi thì kẻ địch vào danh sách với 10 máu. Trong Cthangover, nhân vật duy nhất có thể bị bắt sẽ xuất hiện về sau trong cốt truyện, với tỉ lệ 50%:
```json
{ "Id": "werewolf_girl_1", "RecruitmentChance": 50 }
```
## Trong tổ đội
**Thêm vào tổ đội** biến người được bắt thành một thành viên bình thường: xuất hiện trên bảng nhân vật, chiến đấu bằng hành động riêng, có thể là mục tiêu của vật phẩm, và được lưu cùng tổ đội. Máu đã mất trong trận sẽ ở lại với người đó. **Rời tổ đội** giữ lại hành động và kinh nghiệm cho lần gia nhập sau.
## Nhu cầu của người được chiêu mộ
Mỗi người được bắt chạy các **hành vi** đã đăng ký ở mỗi nhịp của đồng hồ trò chơi. Mod này có sẵn một — dinh dưỡng: người chưa ăn suốt 24 giờ trò chơi sẽ mất 1 máu mỗi nhịp. Trò chơi hiện tại vẫn chưa có gì để cho người được bắt ăn, nên kẻ vừa bị bắt sẽ bắt đầu đói sau một ngày.
Danh sách, máu và trạng thái hành vi được lưu cùng trò chơi.
## Dành cho tác giả mod
- **Điều kiện** là một lớp cài đặt `IRecruitCondition`; mod recruiting tìm thấy nó trong bất kỳ mod nào đã nạp. Trả về false để cấm việc bắt.
- **Hành vi** cài đặt `IRecruitBehaviour`: được cấu hình khi có người bị bắt, được gọi mỗi nhịp, và bị gỡ cùng với người đó. Trạng thái của nó nằm trong thuộc tính của người được bắt.
- Mã nguồn có thể phản ứng với `RecruitJoinedEvent` và `RecruitLeftEvent`.
## Nếu có trục trặc
1. **Chẳng ai bị bắt bao giờ.** `RecruitmentChance` của địch là 0, một điều kiện cấm (người chơi thiếu kỹ năng `slave_master`), hoặc lần gieo thất bại.
2. **Cùng một kẻ địch không bị bắt lần hai.** Mỗi loại địch một người, cố ý vậy.
3. **Máu của người được bắt cứ rơi.** Đó là dinh dưỡng: nó đã nhịn một ngày, mà chưa có cách nào cho nó ăn.
+50
View File
@@ -0,0 +1,50 @@
# Recruiting — 加入队伍的被击败敌人
Recruiting 让战斗中被击败的敌人可以被俘获,之后在玩家一方作战。胜利之后,每个被击败的敌人都有一定几率被俘获;被俘的角色会列在**招募者**面板里,任何一个都可以加入队伍或再次移出。被俘期间,招募者按自己的规则生活——在 Cthangover 里,它会饿肚子。
本模组不依赖任何战斗系统:它监听平台的“角色被击败”事件,因此无论 FF Battle、Card Battle 还是其他任何会报告被击败角色的系统都能配合。谁能被俘获、需要什么条件,由游戏的数据和其他模组决定。
## 招募者面板
通过工具栏按钮打开。Cthangover 开局时还没有俘获任何人:
![招募者面板:标题“招募者”,一行“被俘的敌人 · 任何一个都能加入队伍”,“还没有俘获的招募者”,底部为“被俘:0 · 在队伍中:0”。](assets/recruits-panel.jpg)
每个被俘的招募者占一行,显示头像、名字和生命,并带一个按钮:**加入队伍**或**移出队伍**。底部统计招募者总数以及其中多少人在队伍里。
## 俘获是如何发生的
胜利之后,对每个被击败的敌人:
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. **招募者的生命一直掉。** 那是进食机制:它一天没吃东西了,而目前还没有办法喂它。
+1 -1
View File
@@ -1,5 +1,5 @@
mod_recruiting_name = Recruiting mod_recruiting_name = Recruiting
mod_recruiting_desc = Recruitment of defeated characters: the roster panel, join conditions (e.g. enslaving a defeated enemy), per-recruit behaviours such as nutrition, the party bridge, tick updates and save state. mod_recruiting_desc = Defeated enemies can be captured after a victory and later fight on the player's side; while they wait in the recruits list, they live by rules of their own.
ui/recruit/title = Recruits ui/recruit/title = Recruits
ui/recruit/close = Close ui/recruit/close = Close
+11
View File
@@ -0,0 +1,11 @@
mod_recruiting_name = Reclutamiento
mod_recruiting_desc = Los enemigos derrotados pueden capturarse tras una victoria y más tarde luchan del lado del jugador; mientras esperan en la lista de reclutas, viven según sus propias reglas.
ui/recruit/title = Reclutas
ui/recruit/close = Cerrar
ui/recruit/sub = Enemigos capturados · cualquiera puede unirse al grupo
ui/recruit/empty = Todavía no hay reclutas capturados
ui/recruit/status = Capturados: {0} · en el grupo: {1}
ui/recruit/add = Añadir al grupo
ui/recruit/remove = Quitar del grupo
ui/recruit/hp = PV
+11
View File
@@ -0,0 +1,11 @@
mod_recruiting_name = 勧誘
mod_recruiting_desc = 倒した敵は勝利の後に捕らえられ、のちにプレイヤーの側で戦います。勧誘リストで待っている間、それぞれのルールに従って暮らします。
ui/recruit/title = 勧誘した者たち
ui/recruit/close = 閉じる
ui/recruit/sub = 捕らえた敵 · 誰でもパーティに加えられる
ui/recruit/empty = 捕らえた者はまだいない
ui/recruit/status = 捕獲:{0} · パーティ内:{1}
ui/recruit/add = パーティに加える
ui/recruit/remove = パーティから外す
ui/recruit/hp = HP
+11
View File
@@ -0,0 +1,11 @@
mod_recruiting_name = 영입
mod_recruiting_desc = 쓰러뜨린 적은 승리 후 포획할 수 있고, 나중에 플레이어 편에서 싸웁니다. 영입자 명단에서 기다리는 동안 저들만의 규칙으로 삽니다.
ui/recruit/title = 영입자
ui/recruit/close = 닫기
ui/recruit/sub = 포획한 적 · 누구든 파티에 합류할 수 있다
ui/recruit/empty = 아직 포획한 영입자가 없다
ui/recruit/status = 포획: {0} · 파티: {1}
ui/recruit/add = 파티에 추가
ui/recruit/remove = 파티에서 제외
ui/recruit/hp = HP
+1 -1
View File
@@ -1,5 +1,5 @@
mod_recruiting_name = Рекрутинг mod_recruiting_name = Рекрутинг
mod_recruiting_desc = Вербовка побеждённых персонажей: панель ростера, условия присоединения (например, порабощение врага), поведение рекрутов (например, питание), мост в партию, тики и сохранение состояния. mod_recruiting_desc = Побеждённых врагов можно захватить после победы, и позже они сражаются на стороне игрока; пока рекрут ждёт в списке, он живёт по своим правилам.
ui/recruit/title = Рекруты ui/recruit/title = Рекруты
ui/recruit/close = Закрыть ui/recruit/close = Закрыть
+11
View File
@@ -0,0 +1,11 @@
mod_recruiting_name = Chiêu mộ
mod_recruiting_desc = Kẻ địch bị đánh bại có thể bị bắt sau chiến thắng và sau đó chiến đấu cho phía người chơi; khi chờ trong danh sách tuyển mộ, chúng sống theo quy tắc riêng.
ui/recruit/title = Người được chiêu mộ
ui/recruit/close = Đóng
ui/recruit/sub = Kẻ thù bị bắt · bất kỳ ai cũng có thể gia nhập tổ đội
ui/recruit/empty = Chưa bắt được ai
ui/recruit/status = Đã bắt: {0} · trong tổ đội: {1}
ui/recruit/add = Thêm vào tổ đội
ui/recruit/remove = Rời tổ đội
ui/recruit/hp = HP
+11
View File
@@ -0,0 +1,11 @@
mod_recruiting_name = 招募
mod_recruiting_desc = 被击败的敌人可以在胜利后被俘获,之后在玩家一方作战;等待在招募名单里时,它们按自己的规则生活。
ui/recruit/title = 招募者
ui/recruit/close = 关闭
ui/recruit/sub = 被俘的敌人 · 任何一个都能加入队伍
ui/recruit/empty = 还没有俘获的招募者
ui/recruit/status = 被俘:{0} · 在队伍中:{1}
ui/recruit/add = 加入队伍
ui/recruit/remove = 移出队伍
ui/recruit/hp = 生命
+1 -1
View File
@@ -3,7 +3,7 @@
"name": "Recruiting", "name": "Recruiting",
"version": "1.1.0", "version": "1.1.0",
"author": "ct", "author": "ct",
"description": "Recruitment of defeated characters: the roster panel, join conditions (e.g. enslaving a defeated enemy), per-recruit behaviours such as nutrition, the party bridge, tick updates and save state.", "description": "Defeated enemies can be captured after a victory and later fight on the player's side; while they wait in the recruits list, they live by rules of their own.",
"category": "gameplay", "category": "gameplay",
"sources": [ "sources": [
"src/**/*.cs" "src/**/*.cs"