Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f476eac551 | ||
|
|
7ad73c00fc | ||
|
|
4f8ab24fea | ||
|
|
4da355c469 | ||
|
|
5eab5ae035 |
No files matched your search
@@ -12,6 +12,7 @@ obj/
|
||||
gen/
|
||||
obj/
|
||||
bin/
|
||||
art_sources/
|
||||
|
||||
*.tres~
|
||||
*.tscn~
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 54 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 38 KiB |
+84
@@ -0,0 +1,84 @@
|
||||
# Characters Engine — characters, their actions and the party
|
||||
|
||||
Characters Engine defines who takes part in battles: the hero, companions and enemies, with their health, attack, defence, action points and the action cards they can use. It also shows the **Character actions** panel, where you see your party and decide which cards each character takes into battle, and it supplies the portraits that appear next to dialog lines.
|
||||
|
||||
It is part of Cthangover and RPG Plus, and battle mods, recruiting and the editors build on it.
|
||||
|
||||
## The Character actions panel
|
||||
|
||||
Open it with the cards icon on the toolbar.
|
||||
|
||||

|
||||
|
||||
- **Party** — every character in your party with their portrait, health (HP), action points per turn (AP), attack (ATK) and defence (DEF).
|
||||
- **Slots** — each character has three slots for action cards. A card shows its target (enemy, ally, self), its cost in AP and its values.
|
||||
- **Action pool** — cards you own but have not assigned. Drag a card into a slot, or select a card and then a slot; dragging between slots swaps them. Search and filters narrow the pool.
|
||||
- **Reset** puts the first three actions of each character's definition back into the slots; their other actions go to the pool.
|
||||
|
||||
## Three different pictures
|
||||
|
||||
A character can appear in three ways, and each comes from a different place:
|
||||
|
||||

|
||||
|
||||
1. **Dialog portrait (avatar)** — a picture in a mod's `avatars/` folder, chosen per line in a scenario: `text "…" first=marao/sad` fills the first portrait place, `second=…` the second (for a dialog between two people). It is not tied to a character definition.
|
||||
2. **Character image** — the `Image` of the character definition, shown on cards in this panel and in battles.
|
||||
3. **Map sprite (charset)** — the walking sprite on tile maps, chosen by the RPG mod (the game's **Appearance** setting or an event's `Sprite`), not by this mod.
|
||||
|
||||
## A character definition
|
||||
|
||||
Characters are JSON files of kind `character` in a mod's `characters/` folder. This is Marao from Cthangover — compare it with his card in the panel above:
|
||||
|
||||
```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` is his **HP 16/16**, `Point 1` his **AP 1**, `Attack 5` his **ATK 5**, and the two `Actions` are the **Basic attack** and **Defence** cards in his slots.
|
||||
|
||||
Other fields: `Behaviour` (the enemy's battle AI, such as `base`), `Exp` (experience given when beaten), `RecruitmentChance`, and `Loot` — a list of `ItemId`, `MinCount`, `MaxCount` and `Probability` dropped when the character is defeated.
|
||||
|
||||
## Action cards
|
||||
|
||||
Actions are JSON files of kind `action`. This mod ships the basic physical ones — **Basic attack**, **Defence** and **Stun**:
|
||||
|
||||
```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` sets the target (enemy, ally, self) or makes it passive or active; `RequiredPoint` is the AP cost. What the other values do in a fight is decided by the battle mod in use.
|
||||
|
||||
## Add a character to the party from a scenario
|
||||
|
||||
```scenario
|
||||
action party.add id=rpg_hero
|
||||
```
|
||||
|
||||
The character joins the party and the battle set. Someone already in the roster keeps their level and health. RPG Demo uses this line to give the player the hero when the village is first entered.
|
||||
|
||||
## If something goes wrong
|
||||
|
||||
1. **A character shows its id instead of a name.** The `Name` is a translation key; add it to the mod's `locale` files.
|
||||
2. **No portrait next to a line.** The avatar name after `first=` / `second=` must match a picture in some mod's `avatars/` folder, for example `avatars/marao/sad.png` for `marao/sad`.
|
||||
3. **A card cannot be used in battle.** The character has fewer AP than the card's `RequiredPoint`.
|
||||
+84
@@ -0,0 +1,84 @@
|
||||
# Characters Engine — personajes, sus acciones y el grupo
|
||||
|
||||
Characters Engine define quién participa en los combates: el héroe, los compañeros y los enemigos, con su salud, ataque, defensa, puntos de acción y las cartas de acción que pueden usar. También muestra el panel **Acciones de personaje**, donde ves tu grupo y decides qué cartas lleva cada personaje al combate, y proporciona los retratos que aparecen junto a las líneas de diálogo.
|
||||
|
||||
Forma parte de Cthangover y RPG Plus, y sobre él se construyen los mods de combate, recruiting y los editores.
|
||||
|
||||
## El panel Acciones de personaje
|
||||
|
||||
Se abre con el icono de cartas en la barra de herramientas.
|
||||
|
||||

|
||||
|
||||
- **Grupo** — todos los personajes de tu grupo con su retrato, salud (HP), puntos de acción por turno (AP), ataque (ATK) y defensa (DEF).
|
||||
- **Huecos** — cada personaje tiene tres huecos para cartas de acción. Una carta muestra su objetivo (enemigo, aliado, uno mismo), su coste en AP y sus valores.
|
||||
- **Reserva de acciones** — cartas que posees pero no has asignado. Arrastra una carta a un hueco, o selecciona una carta y luego un hueco; arrastrar entre huecos los intercambia. La búsqueda y los filtros reducen la reserva.
|
||||
- **Restablecer** devuelve a los huecos las tres primeras acciones de la definición de cada personaje; sus demás acciones van a la reserva.
|
||||
|
||||
## Tres imágenes distintas
|
||||
|
||||
Un personaje puede aparecer de tres maneras, y cada una viene de un sitio diferente:
|
||||
|
||||

|
||||
|
||||
1. **Retrato de diálogo (avatar)** — una imagen en la carpeta `avatars/` de un mod, elegida línea a línea en el escenario: `text "…" first=marao/sad` ocupa el primer puesto de retrato y `second=…` el segundo (para un diálogo entre dos personas). No está ligado a la definición del personaje.
|
||||
2. **Imagen de personaje** — el `Image` de la definición, mostrado en las cartas de este panel y en los combates.
|
||||
3. **Sprite de mapa (charset)** — el sprite que camina por los mapas de tiles; lo elige el mod RPG (el ajuste **Appearance** del juego o el `Sprite` de un evento), no este mod.
|
||||
|
||||
## Una definición de personaje
|
||||
|
||||
Los personajes son archivos JSON de tipo `character` en la carpeta `characters/` de un mod. Este es Marao, de Cthangover; compáralo con su carta en el panel de arriba:
|
||||
|
||||
```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` es su **HP 16/16**, `Point 1` su **AP 1** y `Attack 5` su **ATK 5**; las dos `Actions` son las cartas **Ataque básico** y **Defensa** de sus huecos.
|
||||
|
||||
Otros campos: `Behaviour` (la IA de combate del enemigo, por ejemplo `base`), `Exp` (la experiencia que da al caer), `RecruitmentChance` y `Loot` — una lista de `ItemId`, `MinCount`, `MaxCount` y `Probability` que suelta el personaje al ser derrotado.
|
||||
|
||||
## Cartas de acción
|
||||
|
||||
Las acciones son archivos JSON de tipo `action`. Este mod incluye las físicas básicas — **Ataque básico**, **Defensa** y **Aturdir**:
|
||||
|
||||
```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` fija el objetivo (enemigo, aliado, uno mismo) o lo vuelve pasiva o activa; `RequiredPoint` es el coste en AP. Lo que hacen los demás valores en un combate lo decide el mod de combate en uso.
|
||||
|
||||
## Añadir un personaje al grupo desde un escenario
|
||||
|
||||
```scenario
|
||||
action party.add id=rpg_hero
|
||||
```
|
||||
|
||||
El personaje se une al grupo y al equipo de combate. Quien ya estaba en la plantilla conserva su nivel y su salud. RPG Demo usa esta línea para darte el héroe al entrar por primera vez en el pueblo.
|
||||
|
||||
## Si algo falla
|
||||
|
||||
1. **Un personaje muestra su id en vez de un nombre.** El `Name` es una clave de traducción; añádela a los archivos `locale` del mod.
|
||||
2. **No hay retrato junto a una línea.** El nombre del avatar tras `first=` / `second=` debe coincidir con una imagen en la carpeta `avatars/` de algún mod, por ejemplo `avatars/marao/sad.png` para `marao/sad`.
|
||||
3. **Una carta no se puede usar en combate.** El personaje tiene menos AP que el `RequiredPoint` de la carta.
|
||||
+84
@@ -0,0 +1,84 @@
|
||||
# Characters Engine — キャラクター、そのアクション、パーティ
|
||||
|
||||
Characters Engine は、誰が戦闘に参加するかを定義します。主人公・仲間・敵に、HP・攻撃・防御・アクションポイント、そして使えるアクションカードを持たせるものです。さらに**キャラクターアクション**パネルを表示します。ここでパーティを見ながら、どのカードを各キャラクターが戦闘に持っていくか決めます。会話の台詞のそばに出るポートレートも、この mod が供給します。
|
||||
|
||||
Cthangover と RPG Plus の一部であり、戦闘 mod、recruiting、各エディターがこの上に作られています。
|
||||
|
||||
## キャラクターアクションパネル
|
||||
|
||||
ツールバーのカード・アイコンで開きます。
|
||||
|
||||

|
||||
|
||||
- **パーティ** — パーティの全キャラクターを、ポートレート・HP(体力)・ターンごとの AP(アクションポイント)・ATK(攻撃)・DEF(防御)つきで一覧にします。
|
||||
- **スロット** — 各キャラクターにはアクションカード用のスロットが三つあります。カードには目標(敵・味方・自分)、AP コスト、値が表示されます。
|
||||
- **アクションプール** — 持っているけれどまだ割り当てていないカード。カードをスロットへドラッグするか、カードを選んでからスロットを選びます。スロット間のドラッグは入れ替えになります。検索とフィルターでプールを絞り込めます。
|
||||
- **リセット** は、各キャラクターの定義の先頭三つのアクションをスロットへ戻します。残りはプールへ移ります。
|
||||
|
||||
## 三つの異なる絵
|
||||
|
||||
キャラクターは三つの姿で現れ、それぞれ別の場所から来ます。
|
||||
|
||||

|
||||
|
||||
1. **会話ポートレート(アバター)** — mod の `avatars/` フォルダーに入る画像で、シナリオの行ごとに選びます。`text "…" first=marao/sad` が一つ目のポートレート位置を、`second=…` が二つ目(二人の会話)を埋めます。キャラクターの定義とは結びついていません。
|
||||
2. **キャラクター画像** — 定義の `Image`。このパネルのカードと戦闘で表示されます。
|
||||
3. **マップスプライト(charset)** — タイルマップを歩くスプライト。選ぶのは RPG mod(ゲームの**外見**設定かイベントの `Sprite`)で、この mod ではありません。
|
||||
|
||||
## キャラクターの定義
|
||||
|
||||
キャラクターは、mod の `characters/` フォルダーに入る kind `character` の JSON ファイルです。こちらは Cthangover の Marao。上のパネルのカードと見比べてください。
|
||||
|
||||
```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`(敵の戦闘 AI。例は `base`)、`Exp`(倒したときの経験値)、`RecruitmentChance`、そして `Loot` — キャラクターを倒したときに落ちる `ItemId`・`MinCount`・`MaxCount`・`Probability` の一覧です。
|
||||
|
||||
## アクションカード
|
||||
|
||||
アクションは kind `action` の JSON ファイルです。この mod は基本的な物理アクション — **基本攻撃**・**防御**・**スタン** — を同梱しています。
|
||||
|
||||
```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 コストです。ほかの値が戦闘で何をするかは、使われている戦闘 mod が決めます。
|
||||
|
||||
## シナリオからパーティにキャラクターを加える
|
||||
|
||||
```scenario
|
||||
action party.add id=rpg_hero
|
||||
```
|
||||
|
||||
キャラクターはパーティと戦闘メンバーに入ります。すでに名簿にいる者はレベルと HP を保ちます。RPG Demo はこの行で、村に初めて入ったときに主人公をプレイヤーに渡します。
|
||||
|
||||
## うまく動かないとき
|
||||
|
||||
1. **キャラクターが名前ではなく id を表示する。** `Name` は翻訳キーです。mod の `locale` ファイルに追加してください。
|
||||
2. **台詞のそばにポートレートがない。** `first=` / `second=` の後のアバター名が、いずれかの mod の `avatars/` フォルダーにある画像と一致する必要があります。例は `marao/sad` に対する `avatars/marao/sad.png`。
|
||||
3. **カードが戦闘で使えない。** キャラクターの AP がカードの `RequiredPoint` に足りていません。
|
||||
+84
@@ -0,0 +1,84 @@
|
||||
# Characters Engine — 캐릭터, 액션, 파티
|
||||
|
||||
Characters Engine은 누가 전투에 참가하는지를 정의합니다. 주인공, 동료, 적에게 체력, 공격, 방어, 액션 포인트, 그리고 사용할 수 있는 액션 카드를 지니게 하는 모드입니다. 또한 **캐릭터 액션** 패널을 보여 주어 파티를 확인하고 각 캐릭터가 전투에 어떤 카드를 가져갈지 정하게 하며, 대화 대사 옆에 나타나는 초상화도 공급합니다.
|
||||
|
||||
Cthangover와 RPG Plus의 일부이며, 전투 mod, recruiting, 편집기들이 이 위에 세워집니다.
|
||||
|
||||
## 캐릭터 액션 패널
|
||||
|
||||
툴바의 카드 아이콘으로 엽니다.
|
||||
|
||||

|
||||
|
||||
- **파티** — 파티의 모든 캐릭터를 초상화, 체력(HP), 턴당 액션 포인트(AP), 공격(ATK), 방어(DEF)와 함께 보여 줍니다.
|
||||
- **슬롯** — 캐릭터마다 액션 카드용 슬롯이 세 개 있습니다. 카드는 대상(적, 아군, 자신), AP 비용, 수치를 표시합니다.
|
||||
- **액션 풀** — 가지고 있지만 아직 배정하지 않은 카드. 카드를 슬롯으로 끌어 놓거나, 카드를 고른 뒤 슬롯을 고릅니다. 슬롯 사이의 드래그는 자리를 바꿉니다. 검색과 필터로 풀을 좁힐 수 있습니다.
|
||||
- **초기화**는 각 캐릭터 정의의 처음 세 액션을 슬롯으로 되돌립니다. 나머지 액션은 풀로 갑니다.
|
||||
|
||||
## 서로 다른 세 가지 그림
|
||||
|
||||
캐릭터는 세 가지 모습으로 나타나며, 각각 다른 곳에서 옵니다.
|
||||
|
||||

|
||||
|
||||
1. **대화 초상화(아바타)** — mod의 `avatars/` 폴더에 있는 그림으로, 시나리오에서 줄마다 고릅니다. `text "…" first=marao/sad`가 첫 번째 초상화 자리를, `second=…`가 두 번째 자리(두 사람의 대화)를 채웁니다. 캐릭터 정의와 묶여 있지 않습니다.
|
||||
2. **캐릭터 이미지** — 정의의 `Image`. 이 패널의 카드와 전투에서 표시됩니다.
|
||||
3. **맵 스프라이트(charset)** — 타일 맵을 걷는 스프라이트. 고르는 것은 RPG mod(게임의 **외형** 설정이나 이벤트의 `Sprite`)이며 이 모드가 아닙니다.
|
||||
|
||||
## 캐릭터 정의
|
||||
|
||||
캐릭터는 mod의 `characters/` 폴더에 있는 kind `character` JSON 파일입니다. Cthangover의 Marao입니다. 위 패널의 카드와 비교해 보세요.
|
||||
|
||||
```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`(적의 전투 AI, 예: `base`), `Exp`(물리쳤을 때 주는 경험치), `RecruitmentChance`, 그리고 `Loot` — 캐릭터를 쓰러뜨렸을 때 떨어지는 `ItemId`, `MinCount`, `MaxCount`, `Probability` 목록입니다.
|
||||
|
||||
## 액션 카드
|
||||
|
||||
액션은 kind `action` JSON 파일입니다. 이 모드는 기본 물리 액션 — **기본 공격**, **방어**, **기절** — 을 함께 제공합니다.
|
||||
|
||||
```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 비용입니다. 나머지 값이 전투에서 하는 일은 사용 중인 전투 mod가 결정합니다.
|
||||
|
||||
## 시나리오에서 파티에 캐릭터 추가하기
|
||||
|
||||
```scenario
|
||||
action party.add id=rpg_hero
|
||||
```
|
||||
|
||||
캐릭터는 파티와 전투 명단에 들어옵니다. 이미 명단에 있는 자는 레벨과 체력을 유지합니다. RPG Demo는 이 줄로 마을에 처음 들어섰을 때 주인공을 플레이어에게 줍니다.
|
||||
|
||||
## 문제가 생겼을 때
|
||||
|
||||
1. **캐릭터가 이름 대신 id를 보여 줍니다.** `Name`은 번역 키입니다. mod의 `locale` 파일에 추가하세요.
|
||||
2. **대사 옆에 초상화가 없습니다.** `first=` / `second=` 뒤의 아바타 이름이 어느 mod의 `avatars/` 폴더에 있는 그림과 일치해야 합니다. 예: `marao/sad`에는 `avatars/marao/sad.png`.
|
||||
3. **카드를 전투에서 쓸 수 없습니다.** 캐릭터의 AP가 카드의 `RequiredPoint`보다 적습니다.
|
||||
+84
@@ -0,0 +1,84 @@
|
||||
# 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` карточки.
|
||||
+84
@@ -0,0 +1,84 @@
|
||||
# Characters Engine — nhân vật, hành động của họ và đội
|
||||
|
||||
Characters Engine quy định ai tham chiến: anh hùng, đồng đội và kẻ địch, cùng máu, tấn công, phòng thủ, điểm hành động và các thẻ hành động họ có thể dùng. Mod còn mở bảng **Hành động nhân vật**, nơi bạn xem đội của mình và quyết định mỗi nhân vật mang những thẻ nào vào trận, đồng thời cung cấp các chân dung xuất hiện bên cạnh câu thoại.
|
||||
|
||||
Mod là một phần của Cthangover và RPG Plus; các mod chiến đấu, recruiting và các trình soạn thảo đều xây trên nó.
|
||||
|
||||
## Bảng Hành động nhân vật
|
||||
|
||||
Mở bằng biểu tượng thẻ bài trên thanh công cụ.
|
||||
|
||||

|
||||
|
||||
- **Đội** — mọi nhân vật trong đội của bạn cùng chân dung, máu (HP), điểm hành động mỗi lượt (AP), tấn công (ATK) và phòng thủ (DEF).
|
||||
- **Ô chứa** — mỗi nhân vật có ba ô cho thẻ hành động. Một thẻ hiển thị mục tiêu (địch, đồng đội, bản thân), giá AP và các giá trị của nó.
|
||||
- **Kho hành động** — các thẻ bạn sở hữu nhưng chưa phân chỗ. Kéo thẻ vào một ô, hoặc chọn thẻ rồi chọn ô; kéo giữa hai ô là đổi chỗ. Ô tìm kiếm và bộ lọc thu hẹp kho.
|
||||
- **Đặt lại** đưa ba hành động đầu trong định nghĩa của từng nhân vật về các ô; các hành động còn lại chuyển vào kho.
|
||||
|
||||
## Ba kiểu hình khác nhau
|
||||
|
||||
Một nhân vật có thể xuất hiện theo ba cách, và mỗi cách đến từ một nơi khác:
|
||||
|
||||

|
||||
|
||||
1. **Chân dung hội thoại (avatar)** — một ảnh trong thư mục `avatars/` của mod, chọn theo từng câu trong kịch bản: `text "…" first=marao/sad` chiếm chỗ chân dung thứ nhất, `second=…` chỗ thứ hai (hội thoại hai người). Nó không dính vào định nghĩa nhân vật.
|
||||
2. **Ảnh nhân vật** — trường `Image` của định nghĩa, hiện trên các thẻ trong bảng này và trong trận chiến.
|
||||
3. **Sprite bản đồ (charset)** — sprite biết đi trên bản đồ tile; do mod RPG chọn (thiết lập **Diện mạo** của game hoặc trường `Sprite` của sự kiện), không phải mod này.
|
||||
|
||||
## Định nghĩa nhân vật
|
||||
|
||||
Nhân vật là tệp JSON kind `character` trong thư mục `characters/` của mod. Đây là Marao của Cthangover — hãy so với thẻ của cậu ấy trong bảng phía trên:
|
||||
|
||||
```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` chính là **HP 16/16** trên thẻ, `Point 1` là **AP 1**, `Attack 5` là **ATK 5**, còn hai `Actions` là thẻ **Tấn công cơ bản** và **Phòng thủ** trong các ô của cậu ấy.
|
||||
|
||||
Các trường khác: `Behaviour` (AI chiến đấu của kẻ địch, ví dụ `base`), `Exp` (kinh nghiệm nhận được khi hạ được), `RecruitmentChance`, và `Loot` — danh sách `ItemId`, `MinCount`, `MaxCount`, `Probability` rơi ra khi nhân vật bị hạ.
|
||||
|
||||
## Thẻ hành động
|
||||
|
||||
Hành động là tệp JSON kind `action`. Mod này có sẵn các hành động vật lý cơ bản — **Tấn công cơ bản**, **Phòng thủ** và **Choáng**:
|
||||
|
||||
```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` đặt mục tiêu (địch, đồng đội, bản thân) hoặc biến thẻ thành bị động hay chủ động; `RequiredPoint` là giá AP. Các giá trị còn lại làm gì trong trận chiến do mod chiến đấu đang dùng quyết định.
|
||||
|
||||
## Thêm nhân vật vào đội từ kịch bản
|
||||
|
||||
```scenario
|
||||
action party.add id=rpg_hero
|
||||
```
|
||||
|
||||
Nhân vật gia nhập đội và danh sách ra trận. Ai đã có trong danh sách thì giữ nguyên cấp và máu. RPG Demo dùng dòng này để trao nhân vật chính cho người chơi khi lần đầu bước vào ngôi làng.
|
||||
|
||||
## Khi có trục trặc
|
||||
|
||||
1. **Nhân vật hiện id thay vì tên.** `Name` là khóa dịch; hãy thêm nó vào các tệp `locale` của mod.
|
||||
2. **Không có chân dung bên cạnh câu thoại.** Tên avatar sau `first=` / `second=` phải khớp với một ảnh trong thư mục `avatars/` của mod nào đó, ví dụ `avatars/marao/sad.png` cho `marao/sad`.
|
||||
3. **Không dùng được thẻ trong trận.** Nhân vật có ít AP hơn `RequiredPoint` của thẻ.
|
||||
+84
@@ -0,0 +1,84 @@
|
||||
# Characters Engine — 角色、角色行动与队伍
|
||||
|
||||
Characters Engine 决定谁参加战斗:主角、同伴和敌人,以及他们的生命值、攻击、防御、行动点数和可以使用的行动卡。它还提供**角色行动**面板,让你查看队伍并决定每个角色带上哪些卡参战,同时提供对话台词旁出现的肖像。
|
||||
|
||||
它是 Cthangover 和 RPG Plus 的一部分,战斗 mod、recruiting 和各个编辑器都构建在它之上。
|
||||
|
||||
## 角色行动面板
|
||||
|
||||
用工具栏上的卡片图标打开。
|
||||
|
||||

|
||||
|
||||
- **队伍** — 队伍里的每个角色,带肖像、生命值(HP)、每回合行动点(AP)、攻击(ATK)和防御(DEF)。
|
||||
- **栏位** — 每个角色有三个行动卡栏位。卡片显示目标(敌人、队友、自身)、AP 消耗和自身数值。
|
||||
- **卡池** — 已拥有但尚未分配的卡片。把卡拖进栏位,或先选卡再选栏位;在栏位之间拖动可以交换位置。搜索和筛选可以缩小卡池范围。
|
||||
- **重置** 把每个角色定义中的前三个行动放回栏位;其余行动进入卡池。
|
||||
|
||||
## 三种不同的图片
|
||||
|
||||
一个角色可以以三种面目出现,每种来自不同的地方:
|
||||
|
||||

|
||||
|
||||
1. **对话肖像(头像)** — 某个 mod 的 `avatars/` 文件夹里的图片,在剧本中按台词选用:`text "…" first=marao/sad` 填入第一个肖像位,`second=…` 填入第二个(两人对话时)。它与角色定义没有绑定。
|
||||
2. **角色图** — 角色定义中的 `Image`,显示在本面板的卡片上和战斗中。
|
||||
3. **地图精灵(charset)** — 在图块地图上行走的精灵,由 RPG mod 决定(游戏的**外观**设置或事件的 `Sprite` 字段),本 mod 不管这件事。
|
||||
|
||||
## 角色定义
|
||||
|
||||
角色是 mod 的 `characters/` 文件夹里类型为 `character` 的 JSON 文件。这是 Cthangover 的 Marao——可与上面面板中他的卡片对照:
|
||||
|
||||
```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`(敌人的战斗 AI,例如 `base`)、`Exp`(被打败时给予的经验)、`RecruitmentChance`,以及 `Loot`——角色被击败时掉落的 `ItemId`、`MinCount`、`MaxCount`、`Probability` 列表。
|
||||
|
||||
## 行动卡
|
||||
|
||||
行动是类型为 `action` 的 JSON 文件。本 mod 自带基础物理行动——**基础攻击**、**防御**和**眩晕**:
|
||||
|
||||
```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 消耗。其余数值在战斗中的效果由所用的战斗 mod 决定。
|
||||
|
||||
## 用剧本把角色加进队伍
|
||||
|
||||
```scenario
|
||||
action party.add id=rpg_hero
|
||||
```
|
||||
|
||||
角色加入队伍和出战名单。已在名单中的角色保留等级和生命值。RPG Demo 用这一行在玩家首次进入村庄时把主角交给玩家。
|
||||
|
||||
## 出问题时
|
||||
|
||||
1. **角色显示的是 id 而不是名字。** `Name` 是翻译键;把它加进 mod 的 `locale` 文件。
|
||||
2. **台词旁没有肖像。** `first=` / `second=` 后面的头像名必须对应某个 mod 的 `avatars/` 文件夹里的图片,例如 `marao/sad` 对应 `avatars/marao/sad.png`。
|
||||
3. **战斗中用不了某张卡。** 角色的 AP 少于卡片的 `RequiredPoint`。
|
||||
@@ -1,5 +1,5 @@
|
||||
mod_characters_base_name = Characters Engine
|
||||
mod_characters_base_desc = Engine characters subsystem: character and action-card factories, the avatar factory and the character panel UI. Kernel resolves templates through ICharacterTemplateProvider/IActionTemplateProvider/IAvatarProvider contracts.
|
||||
mod_characters_base_desc = Characters engine: heroes, companions and enemies with their battle attributes and action cards, the character actions panel and dialog portraits.
|
||||
characters/action/physics_attack/name = Basic attack
|
||||
characters/action/physics_attack/description = Attacks an enemy with a weapon, with a damage multiplier of <g>1.0</g>
|
||||
characters/action/defence/name = Defence
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
mod_characters_base_name = Motor de personajes
|
||||
mod_characters_base_desc = Motor de personajes: héroes, compañeros y enemigos con sus atributos de combate y cartas de acción, el panel de acciones de personajes y los retratos de diálogo.
|
||||
characters/action/physics_attack/name = Ataque básico
|
||||
characters/action/physics_attack/description = Ataca a un enemigo con un arma, con un multiplicador de daño de <g>1.0</g>
|
||||
characters/action/defence/name = Defensa
|
||||
characters/action/defence/description = Protege al objetivo con un multiplicador de defensa de <g>1.0</g>
|
||||
characters/action/stun/name = Aturdir
|
||||
characters/action/stun/description = Aturde al objetivo durante 2 turnos
|
||||
@@ -0,0 +1,8 @@
|
||||
mod_characters_base_name = キャラクターエンジン
|
||||
mod_characters_base_desc = キャラクターエンジン: 戦闘ステータスとアクションカードを持つ主人公・仲間・敵、キャラクターアクションパネル、会話のポートレート。
|
||||
characters/action/physics_attack/name = 通常攻撃
|
||||
characters/action/physics_attack/description = 武器で敵を攻撃する。ダメージ倍率 <g>1.0</g>
|
||||
characters/action/defence/name = 防御
|
||||
characters/action/defence/description = 防御倍率 <g>1.0</g> で対象を守る
|
||||
characters/action/stun/name = スタン
|
||||
characters/action/stun/description = 対象を 2 ターンの間スタンさせる
|
||||
@@ -0,0 +1,8 @@
|
||||
mod_characters_base_name = 캐릭터 엔진
|
||||
mod_characters_base_desc = 캐릭터 엔진: 전투 스탯과 액션 카드를 지닌 영웅, 동료, 적, 캐릭터 액션 패널, 그리고 대화 초상화.
|
||||
characters/action/physics_attack/name = 기본 공격
|
||||
characters/action/physics_attack/description = 무기로 적을 공격한다. 피해 배율 <g>1.0</g>
|
||||
characters/action/defence/name = 방어
|
||||
characters/action/defence/description = 방어 배율 <g>1.0</g>로 대상을 보호한다
|
||||
characters/action/stun/name = 기절
|
||||
characters/action/stun/description = 대상을 2턴 동안 기절시킨다
|
||||
@@ -1,5 +1,5 @@
|
||||
mod_characters_base_name = Движок персонажей
|
||||
mod_characters_base_desc = Подсистема персонажей движка: фабрики персонажей и боевых карточек, фабрика аватаров и панель персонажа. Ядро получает шаблоны через контракты ICharacterTemplateProvider/IActionTemplateProvider/IAvatarProvider.
|
||||
mod_characters_base_desc = Движок персонажей: герои, спутники и враги с боевыми характеристиками и карточками действий, панель действий персонажей и портреты для диалогов.
|
||||
characters/action/physics_attack/name = Простая атака
|
||||
characters/action/physics_attack/description = Атакует врага оружием, с коэффициентом урона <g>1.0</g>
|
||||
characters/action/defence/name = Защита
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
characters/schema/field/loot = Loot
|
||||
characters/schema/field/loot_desc = What drops from the character when it is defeated as an enemy: an item, a count and a chance.
|
||||
characters/schema/field/loot_item = Item
|
||||
characters/schema/field/loot_min = At least
|
||||
characters/schema/field/loot_max = At most
|
||||
characters/schema/field/loot_probability = Chance, %
|
||||
characters/schema/field/loot_probability_desc = From 0 to 100: how likely the item drops.
|
||||
@@ -0,0 +1,7 @@
|
||||
characters/schema/field/loot = Добыча
|
||||
characters/schema/field/loot_desc = Что выпадает из персонажа, когда его побеждают как врага: предмет, число и шанс.
|
||||
characters/schema/field/loot_item = Предмет
|
||||
characters/schema/field/loot_min = Не меньше
|
||||
characters/schema/field/loot_max = Не больше
|
||||
characters/schema/field/loot_probability = Шанс, %
|
||||
characters/schema/field/loot_probability_desc = От 0 до 100: с каким шансом предмет выпадет.
|
||||
@@ -0,0 +1,20 @@
|
||||
characters/schema/builtin/party_add = Join the party
|
||||
characters/schema/builtin/party_add_desc = The character becomes a party member
|
||||
characters/schema/field/character = Character
|
||||
characters/schema/builtin/send_notification = Announce a party member
|
||||
characters/schema/builtin/send_notification_desc = The "joined the party" toast for a character
|
||||
characters/schema/kind/character = Characters
|
||||
characters/schema/kind/character_desc = Heroes, NPCs and enemies
|
||||
characters/schema/field/name = Name
|
||||
characters/schema/field/picture = Picture
|
||||
characters/schema/field/level = Level
|
||||
characters/schema/field/health = Health
|
||||
characters/schema/field/attack = Attack
|
||||
characters/schema/field/defence = Defence
|
||||
characters/schema/field/points = Points
|
||||
characters/schema/field/exp = Exp reward
|
||||
characters/schema/field/actions = Battle actions
|
||||
characters/schema/kind/action = Battle actions
|
||||
characters/schema/kind/action_desc = Battle cards and commands; with a formula — no code
|
||||
characters/schema/field/description = Description
|
||||
characters/schema/field/target = Target
|
||||
@@ -0,0 +1,20 @@
|
||||
characters/schema/builtin/party_add = Unirse al grupo
|
||||
characters/schema/builtin/party_add_desc = El personaje pasa a ser del grupo
|
||||
characters/schema/field/character = Personaje
|
||||
characters/schema/builtin/send_notification = Anunciar un miembro del grupo
|
||||
characters/schema/builtin/send_notification_desc = El aviso de «se unió al grupo» de un personaje
|
||||
characters/schema/kind/character = Personajes
|
||||
characters/schema/kind/character_desc = Héroes, PNJ y enemigos
|
||||
characters/schema/field/name = Nombre
|
||||
characters/schema/field/picture = Imagen
|
||||
characters/schema/field/level = Nivel
|
||||
characters/schema/field/health = Salud
|
||||
characters/schema/field/attack = Ataque
|
||||
characters/schema/field/defence = Defensa
|
||||
characters/schema/field/points = Puntos
|
||||
characters/schema/field/exp = Experiencia al vencer
|
||||
characters/schema/field/actions = Acciones de combate
|
||||
characters/schema/kind/action = Acciones de combate
|
||||
characters/schema/kind/action_desc = Cartas y órdenes de combate; con fórmula, sin código
|
||||
characters/schema/field/description = Descripción
|
||||
characters/schema/field/target = Objetivo
|
||||
@@ -0,0 +1,20 @@
|
||||
characters/schema/builtin/party_add = パーティーに加える
|
||||
characters/schema/builtin/party_add_desc = キャラクターがパーティーの一員になる
|
||||
characters/schema/field/character = キャラクター
|
||||
characters/schema/builtin/send_notification = 仲間加入を知らせる
|
||||
characters/schema/builtin/send_notification_desc = キャラクターの「仲間になった」通知
|
||||
characters/schema/kind/character = キャラクター
|
||||
characters/schema/kind/character_desc = 主人公、NPC、敵
|
||||
characters/schema/field/name = 名前
|
||||
characters/schema/field/picture = 画像
|
||||
characters/schema/field/level = レベル
|
||||
characters/schema/field/health = HP
|
||||
characters/schema/field/attack = 攻撃
|
||||
characters/schema/field/defence = 防御
|
||||
characters/schema/field/points = ポイント
|
||||
characters/schema/field/exp = 撃破経験値
|
||||
characters/schema/field/actions = 戦闘行動
|
||||
characters/schema/kind/action = 戦闘行動
|
||||
characters/schema/kind/action_desc = 戦闘のカードとコマンド。式があればコード不要
|
||||
characters/schema/field/description = 説明
|
||||
characters/schema/field/target = 対象
|
||||
@@ -0,0 +1,20 @@
|
||||
characters/schema/builtin/party_add = 파티에 합류
|
||||
characters/schema/builtin/party_add_desc = 캐릭터가 파티원이 됩니다
|
||||
characters/schema/field/character = 캐릭터
|
||||
characters/schema/builtin/send_notification = 파티원 알림
|
||||
characters/schema/builtin/send_notification_desc = 캐릭터의 ‘파티 합류’ 알림
|
||||
characters/schema/kind/character = 캐릭터
|
||||
characters/schema/kind/character_desc = 영웅, NPC, 적
|
||||
characters/schema/field/name = 이름
|
||||
characters/schema/field/picture = 그림
|
||||
characters/schema/field/level = 레벨
|
||||
characters/schema/field/health = 체력
|
||||
characters/schema/field/attack = 공격
|
||||
characters/schema/field/defence = 방어
|
||||
characters/schema/field/points = 포인트
|
||||
characters/schema/field/exp = 처치 경험치
|
||||
characters/schema/field/actions = 전투 행동
|
||||
characters/schema/kind/action = 전투 행동
|
||||
characters/schema/kind/action_desc = 전투 카드와 명령. 공식이 있으면 코드 불필요
|
||||
characters/schema/field/description = 설명
|
||||
characters/schema/field/target = 대상
|
||||
@@ -0,0 +1,20 @@
|
||||
characters/schema/builtin/party_add = В отряд
|
||||
characters/schema/builtin/party_add_desc = Персонаж становится бойцом отряда
|
||||
characters/schema/field/character = Персонаж
|
||||
characters/schema/builtin/send_notification = Уведомить о новом в отряде
|
||||
characters/schema/builtin/send_notification_desc = Всплывающее «в отряде — …» для персонажа
|
||||
characters/schema/kind/character = Персонажи
|
||||
characters/schema/kind/character_desc = Герои, NPC и враги
|
||||
characters/schema/field/name = Название
|
||||
characters/schema/field/picture = Картинка
|
||||
characters/schema/field/level = Уровень
|
||||
characters/schema/field/health = Здоровье
|
||||
characters/schema/field/attack = Атака
|
||||
characters/schema/field/defence = Защита
|
||||
characters/schema/field/points = Очки
|
||||
characters/schema/field/exp = Опыт за победу
|
||||
characters/schema/field/actions = Действия в бою
|
||||
characters/schema/kind/action = Боевые действия
|
||||
characters/schema/kind/action_desc = Карты и команды боя; с формулой — без кода
|
||||
characters/schema/field/description = Описание
|
||||
characters/schema/field/target = Цель
|
||||
@@ -0,0 +1,20 @@
|
||||
characters/schema/builtin/party_add = Vào đội
|
||||
characters/schema/builtin/party_add_desc = Nhân vật trở thành thành viên đội
|
||||
characters/schema/field/character = Nhân vật
|
||||
characters/schema/builtin/send_notification = Báo thành viên mới
|
||||
characters/schema/builtin/send_notification_desc = Thông báo “vào đội” cho một nhân vật
|
||||
characters/schema/kind/character = Nhân vật
|
||||
characters/schema/kind/character_desc = Anh hùng, NPC và kẻ địch
|
||||
characters/schema/field/name = Tên
|
||||
characters/schema/field/picture = Hình ảnh
|
||||
characters/schema/field/level = Cấp
|
||||
characters/schema/field/health = Máu
|
||||
characters/schema/field/attack = Tấn công
|
||||
characters/schema/field/defence = Phòng thủ
|
||||
characters/schema/field/points = Điểm
|
||||
characters/schema/field/exp = Kinh nghiệm khi thắng
|
||||
characters/schema/field/actions = Hành động chiến đấu
|
||||
characters/schema/kind/action = Hành động chiến đấu
|
||||
characters/schema/kind/action_desc = Thẻ và lệnh chiến đấu; có công thức thì không cần mã
|
||||
characters/schema/field/description = Mô tả
|
||||
characters/schema/field/target = Mục tiêu
|
||||
@@ -0,0 +1,20 @@
|
||||
characters/schema/builtin/party_add = 加入队伍
|
||||
characters/schema/builtin/party_add_desc = 角色成为队伍成员
|
||||
characters/schema/field/character = 角色
|
||||
characters/schema/builtin/send_notification = 提示新队员
|
||||
characters/schema/builtin/send_notification_desc = 角色“加入队伍”的提示
|
||||
characters/schema/kind/character = 角色
|
||||
characters/schema/kind/character_desc = 英雄、NPC 和敌人
|
||||
characters/schema/field/name = 名称
|
||||
characters/schema/field/picture = 图片
|
||||
characters/schema/field/level = 等级
|
||||
characters/schema/field/health = 生命
|
||||
characters/schema/field/attack = 攻击
|
||||
characters/schema/field/defence = 防御
|
||||
characters/schema/field/points = 行动点
|
||||
characters/schema/field/exp = 击败经验
|
||||
characters/schema/field/actions = 战斗动作
|
||||
characters/schema/kind/action = 战斗动作
|
||||
characters/schema/kind/action_desc = 战斗卡牌与指令;有公式就不需要代码
|
||||
characters/schema/field/description = 描述
|
||||
characters/schema/field/target = 目标
|
||||
@@ -0,0 +1,8 @@
|
||||
mod_characters_base_name = Engine nhân vật
|
||||
mod_characters_base_desc = Engine nhân vật: anh hùng, đồng đội và kẻ địch với chỉ số chiến đấu cùng thẻ hành động, bảng hành động nhân vật và chân dung hội thoại.
|
||||
characters/action/physics_attack/name = Đòn đánh cơ bản
|
||||
characters/action/physics_attack/description = Tấn công kẻ địch bằng vũ khí, hệ số sát thương <g>1.0</g>
|
||||
characters/action/defence/name = Phòng thủ
|
||||
characters/action/defence/description = Bảo vệ mục tiêu với hệ số phòng thủ <g>1.0</g>
|
||||
characters/action/stun/name = Choáng
|
||||
characters/action/stun/description = Làm mục tiêu choáng trong 2 lượt
|
||||
@@ -0,0 +1,8 @@
|
||||
mod_characters_base_name = 角色引擎
|
||||
mod_characters_base_desc = 角色引擎:拥有战斗属性与行动卡的英雄、同伴和敌人,角色行动面板,以及对话肖像。
|
||||
characters/action/physics_attack/name = 普通攻击
|
||||
characters/action/physics_attack/description = 用武器攻击敌人,伤害倍率 <g>1.0</g>
|
||||
characters/action/defence/name = 防御
|
||||
characters/action/defence/description = 以 <g>1.0</g> 的防御倍率保护目标
|
||||
characters/action/stun/name = 眩晕
|
||||
characters/action/stun/description = 使目标眩晕 2 回合
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
"name": "Characters Engine",
|
||||
"version": "1.0.0",
|
||||
"author": "ct",
|
||||
"description": "Engine characters subsystem: the character and action-card factories (entity kinds 'character' and 'action'), the avatar factory and the character panel UI. Replaces the former Core/Characters factories and Core/UI/CharacterPanel — the CharactersModInitializer publishes kernel contracts (ICharacterTemplateProvider, IActionTemplateProvider, IAvatarProvider) so core code resolves templates without referencing this assembly.",
|
||||
"description": "Characters engine: heroes, companions and enemies with their battle attributes and action cards, the character actions panel and dialog portraits.",
|
||||
"category": "engine, library",
|
||||
"sources": [
|
||||
"src/**/*.cs"
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 115 KiB After Width: | Height: | Size: 225 KiB |
@@ -0,0 +1,173 @@
|
||||
{
|
||||
"Actions": [
|
||||
{
|
||||
"Id": "party.add",
|
||||
"Name": "characters/schema/builtin/party_add",
|
||||
"Description": "characters/schema/builtin/party_add_desc",
|
||||
"Category": "characters",
|
||||
"Params": [
|
||||
{
|
||||
"Key": "id",
|
||||
"Type": "ref",
|
||||
"Kind": "character",
|
||||
"Required": true,
|
||||
"Name": "characters/schema/field/character"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Id": "character.send_notification",
|
||||
"Name": "characters/schema/builtin/send_notification",
|
||||
"Description": "characters/schema/builtin/send_notification_desc",
|
||||
"Category": "characters",
|
||||
"Params": [
|
||||
{
|
||||
"Key": "type",
|
||||
"Type": "ref",
|
||||
"Kind": "character",
|
||||
"Required": true,
|
||||
"Name": "characters/schema/field/character"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"Kinds": [
|
||||
{
|
||||
"Kind": "character",
|
||||
"Name": "characters/schema/kind/character",
|
||||
"Description": "characters/schema/kind/character_desc",
|
||||
"Folder": "characters",
|
||||
"NewId": "{mod}/new_character",
|
||||
"Order": 11,
|
||||
"Fields": [
|
||||
{
|
||||
"Key": "Name",
|
||||
"Type": "locale",
|
||||
"KeyPattern": "{mod}/character/{id}",
|
||||
"Name": "characters/schema/field/name"
|
||||
},
|
||||
{
|
||||
"Key": "Image",
|
||||
"Type": "picture",
|
||||
"Group": "characters",
|
||||
"Name": "characters/schema/field/picture"
|
||||
},
|
||||
{
|
||||
"Key": "Level",
|
||||
"Type": "int",
|
||||
"Default": "1",
|
||||
"Name": "characters/schema/field/level"
|
||||
},
|
||||
{
|
||||
"Key": "Health",
|
||||
"Type": "int",
|
||||
"Default": "10",
|
||||
"Name": "characters/schema/field/health"
|
||||
},
|
||||
{
|
||||
"Key": "Attack",
|
||||
"Type": "int",
|
||||
"Default": "2",
|
||||
"Name": "characters/schema/field/attack"
|
||||
},
|
||||
{
|
||||
"Key": "Defence",
|
||||
"Type": "int",
|
||||
"Name": "characters/schema/field/defence"
|
||||
},
|
||||
{
|
||||
"Key": "Point",
|
||||
"Type": "int",
|
||||
"Default": "1",
|
||||
"Name": "characters/schema/field/points"
|
||||
},
|
||||
{
|
||||
"Key": "Exp",
|
||||
"Type": "int",
|
||||
"Name": "characters/schema/field/exp"
|
||||
},
|
||||
{
|
||||
"Key": "Actions",
|
||||
"Type": "ref_list",
|
||||
"Kind": "action",
|
||||
"Name": "characters/schema/field/actions"
|
||||
},
|
||||
{
|
||||
"Key": "Loot",
|
||||
"Type": "list",
|
||||
"Name": "characters/schema/field/loot",
|
||||
"Description": "characters/schema/field/loot_desc",
|
||||
"Of": [
|
||||
{
|
||||
"Key": "ItemId",
|
||||
"Type": "ref",
|
||||
"Kind": "item",
|
||||
"Required": true,
|
||||
"Name": "characters/schema/field/loot_item"
|
||||
},
|
||||
{
|
||||
"Key": "MinCount",
|
||||
"Type": "int",
|
||||
"Default": "1",
|
||||
"Name": "characters/schema/field/loot_min"
|
||||
},
|
||||
{
|
||||
"Key": "MaxCount",
|
||||
"Type": "int",
|
||||
"Default": "1",
|
||||
"Name": "characters/schema/field/loot_max"
|
||||
},
|
||||
{
|
||||
"Key": "Probability",
|
||||
"Type": "int",
|
||||
"Default": "100",
|
||||
"Name": "characters/schema/field/loot_probability",
|
||||
"Description": "characters/schema/field/loot_probability_desc"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Kind": "action",
|
||||
"Name": "characters/schema/kind/action",
|
||||
"Description": "characters/schema/kind/action_desc",
|
||||
"Folder": "characters/actions",
|
||||
"NewId": "{mod}/new_action",
|
||||
"Order": 12,
|
||||
"Fields": [
|
||||
{
|
||||
"Key": "Name",
|
||||
"Type": "locale",
|
||||
"KeyPattern": "{mod}/action/{id}/name",
|
||||
"Name": "characters/schema/field/name"
|
||||
},
|
||||
{
|
||||
"Key": "Description",
|
||||
"Type": "locale",
|
||||
"KeyPattern": "{mod}/action/{id}/desc",
|
||||
"Name": "characters/schema/field/description"
|
||||
},
|
||||
{
|
||||
"Key": "Image",
|
||||
"Type": "picture",
|
||||
"Group": "characters",
|
||||
"Name": "characters/schema/field/picture"
|
||||
},
|
||||
{
|
||||
"Key": "Type",
|
||||
"Type": "choice",
|
||||
"Options": [
|
||||
"ToEnemy",
|
||||
"ToSelf",
|
||||
"ToAlias",
|
||||
"Passive",
|
||||
"Active"
|
||||
],
|
||||
"Default": "ToEnemy",
|
||||
"Name": "characters/schema/field/target"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in new issue
Block a user