Add mod documentation in seven languages

This commit is contained in:
cthangover committed 2026-10-29 09:26:17 +01:00
1 parent 08f750261c
commit ede615f34d
25 files changed
+695 -16

No files matched your search

+14
View File
@@ -0,0 +1,14 @@
{
"settings": [
{
"key": "stats.player",
"name": "collection_settings/player",
"description": "collection_settings/player_hint",
"group": "collection_settings/player_group",
"type": "character",
"source": "characters",
"allow_custom": true,
"automatic": "collection_settings/player_auto"
}
]
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

+91
View File
@@ -0,0 +1,91 @@
# Stats Engine — numbers that describe a character
Stats Engine lets a game count things about its characters: strength and health in an RPG, courage or trust in a visual novel. A game describes its stats as data — what they are called, how they are computed from each other, how they grow with level — and the engine computes every character's sheet, shows it in the **Character sheet** panel, lets scenarios check and change the numbers, and hands health, attack and defence to the battles.
The engine itself knows no stats at all. The strength, agility, health and mana in the pictures below come from **Classic RPG Rules**, a rules pack that RPG Plus includes; another game can bring entirely different stats with the same engine.
## The character sheet
Open it with the sheet icon on the toolbar.
![The character sheet in RPG Plus: the Hero, a Warrior of level 1 with 0 of 20 experience; Attributes (Strength 9, Agility 5, Intelligence 2, Vitality 8, Charisma 4, Luck 4), Combat (Health 42 +4, Mana 6/6, Attack 12 +2, Armour 4, Magic 3) and the Equipment block with the wooden sword.](assets/sheet.jpg)
- **Party** on the left: everyone in the party, with their level.
- **Class, level and experience** at the top, with the class description.
- **Stats in groups**, named by the game. A small green number is the part that comes from bonuses — gear, the class's traits. Stats that are spent and refilled, like mana, show current / maximum.
- **Blocks of other mods** below, such as Equipment with its Take off buttons.
## One choice, two different heroes
In the RPG Plus prologue the player says who the hero was. The answer gives the hero a class — an **archetype** — and the whole sheet follows from it:
![Two sheets side by side after the prologue. Warrior: Strength 9, Intelligence 2, Vitality 8, Health 42, Mana 6/6, Attack 12, Magic 3. Mage: Strength 3, Intelligence 10, Vitality 5, Health 29, Mana 34/34, Attack 4, Magic 15.](assets/warrior-mage.jpg)
The scenario line behind the answer:
```scenario
action stat.archetype who=rpg_hero id=classic/warrior
```
The warrior archetype in Classic RPG Rules:
```json
{
"Id": "classic/warrior",
"Name": "classic/archetype/warrior",
"Stats": { "str": "7 + level * 2", "agi": "4 + level", "int": "2 + floor(level / 2)",
"vit": "6 + level * 2", "cha": "4 + floor(level / 2)", "luk": "4 + floor(level / 2)" },
"Traits": [ { "Stat": "hp", "Percent": 10 } ],
"Learnings": [ { "Level": 1, "Action": "classic/power_strike" }, { "Level": 3, "Action": "classic/guard_break" } ]
}
```
and two of its stats:
```json
{ "Id": "hp", "Group": "combat", "Formula": "12 + vit * 3 + level * 2", "Min": 1, "Binds": "health" },
{ "Id": "atk", "Group": "combat", "Formula": "str + level", "Min": 0, "Binds": "attack" }
```
At level 1 the warrior has Strength 7 + 2 = **9** and Vitality 6 + 2 = **8**. Health is 12 + 8 × 3 + 2 = 38, and the warrior's trait adds 10% — **42**, the "+4" on the sheet. Attack is 9 + 1 = 10, plus 2 from the wooden sword's trait — **12**. The mage's numbers come from the same stats and the mage archetype.
## For authors: describing stats
**Stats** are entities of kind `stat`:
- `Id`, and `Name`, `Short`, `Description` as translation keys;
- `Group` and `Order` — where it appears on the sheet (`stats/group/<group>` names the group);
- `Default`, or a `Formula` of other stats and `level`; `Min`, `Max`;
- `Pool: true` — a stat that is spent and refilled, like mana;
- `Binds` — the battle number it becomes: `health`, `attack`, `defence` or `point`;
- `Hidden` — counted but not shown.
**Archetypes** (kind `archetype`) are classes, or temperaments in a novel: `Stats` with a value or formula per stat, `Traits`, `Learnings` (actions learned at a level), `ExpCurve` and `MaxLevel`.
**Traits** — `{ "Stat": "atk", "Add": 2 }`, with `Add`, `Percent` or `Formula` — can be written into any entity: an archetype, a character, an item. That is how the wooden sword adds attack without the items mod knowing about stats.
**Formulas** use `+ - * / % ^`, comparisons, `&& || !`, `cond ? a : b` and functions such as `min`, `max`, `floor`, `round`, `clamp`, `rand(lo, hi)` and `chance(p)`. Unknown names count as 0, and a broken formula is reported once in the log.
How a value is found: the character's own `Stats` entry, else the archetype's, else the stat's `Formula`, else `Default`; then permanent bonuses; then all traits; then `Min`/`Max`.
## In scenarios
```scenario
action stat.add stat=cha value=1 who=rpg_hero
action stat.exp value=35 who=rpg_hero
when "stat(rpg_hero, cha) >= 8" -> :charming
```
- `stat.add`, `stat.archetype`, `stat.exp` (experience, which raises the level by the curve), `stat.restore` (refill health and pools); `who=` is a character id, `player` or `party`.
- Conditions: `stat(who, stat)`, `level(who)`, `archetype(who, 'id')`. Ids with a slash are quoted.
- Stat checks with dice (`check cha 10 -> :label`) come from Stat Checks; gear from Equipment.
## Battles
Stats with `Binds` are written into the battle numbers of party members, so both battle systems use them without knowing about stats. Characters that have no archetype, stats or traits keep the numbers from their character file; a rules pack added to a game that does not use stats changes nothing in it.
## If something goes wrong
1. **A stat shows 0.** Its formula names a stat that does not exist (unknown names count as 0); the log reports a broken formula once.
2. **A character does not level up.** Only characters with an archetype level up, unless the game's setting `stats.leveling` is `all`.
3. **Battle numbers did not change.** The stat needs `Binds`, and the character must take part in stats (an archetype, own stats or traits, or worn gear).
+91
View File
@@ -0,0 +1,91 @@
# Stats Engine — los números que describen a un personaje
Stats Engine permite a un juego contar cosas de sus personajes: fuerza y salud en un RPG, coraje o confianza en una novela visual. El juego describe sus estadísticas como datos —cómo se llaman, cómo se calculan unas a partir de otras, cómo crecen con el nivel— y el motor calcula la hoja de cada personaje, la muestra en el panel **Hoja de personaje**, deja que los escenarios consulten y cambien los números, y entrega la salud, el ataque y la defensa a los combates.
El motor en sí no conoce ninguna estadística. La fuerza, la agilidad, la salud y el maná de las imágenes de abajo vienen de **Classic RPG Rules**, un paquete de reglas que RPG Plus incluye; con el mismo motor, otro juego puede traer estadísticas completamente distintas.
## La hoja de personaje
Se abre con el icono de la hoja en la barra de herramientas.
![La hoja de personaje en RPG Plus: el Héroe, un Guerrero de nivel 1 con 0 de 20 de experiencia; Atributos (Fuerza 9, Agilidad 5, Inteligencia 2, Vitalidad 8, Carisma 4, Suerte 4), Combate (Salud 42 +4, Maná 6/6, Ataque 12 +2, Armadura 4, Magia 3) y el bloque de Equipo con la espada de madera.](assets/sheet.jpg)
- **Grupo** a la izquierda: todos los miembros del grupo, con su nivel.
- **Clase, nivel y experiencia** arriba, con la descripción de la clase.
- **Estadísticas agrupadas**, con los nombres que dé el juego. Un numerito verde es la parte que viene de bonificaciones: el equipo, los rasgos de la clase. Las estadísticas que se gastan y se rellenan, como el maná, muestran actual / máximo.
- **Bloques de otros mods** debajo, como Equipo con sus botones **Quitar**.
## Una elección, dos héroes distintos
En el prólogo de RPG Plus el jugador cuenta quién era el héroe. La respuesta le da una clase —un **arquetipo**— y toda la hoja se deduce de ella:
![Dos hojas lado a lado tras el prólogo. Guerrero: Fuerza 9, Inteligencia 2, Vitalidad 8, Salud 42, Maná 6/6, Ataque 12, Magia 3. Mago: Fuerza 3, Inteligencia 10, Vitalidad 5, Salud 29, Maná 34/34, Ataque 4, Magia 15.](assets/warrior-mage.jpg)
La línea de escenario que hay detrás de la respuesta:
```scenario
action stat.archetype who=rpg_hero id=classic/warrior
```
El arquetipo de guerrero en Classic RPG Rules:
```json
{
"Id": "classic/warrior",
"Name": "classic/archetype/warrior",
"Stats": { "str": "7 + level * 2", "agi": "4 + level", "int": "2 + floor(level / 2)",
"vit": "6 + level * 2", "cha": "4 + floor(level / 2)", "luk": "4 + floor(level / 2)" },
"Traits": [ { "Stat": "hp", "Percent": 10 } ],
"Learnings": [ { "Level": 1, "Action": "classic/power_strike" }, { "Level": 3, "Action": "classic/guard_break" } ]
}
```
y dos de sus estadísticas:
```json
{ "Id": "hp", "Group": "combat", "Formula": "12 + vit * 3 + level * 2", "Min": 1, "Binds": "health" },
{ "Id": "atk", "Group": "combat", "Formula": "str + level", "Min": 0, "Binds": "attack" }
```
En el nivel 1, el guerrero tiene Fuerza 7 + 2 = **9** y Vitalidad 6 + 2 = **8**. La salud es 12 + 8 × 3 + 2 = 38, y el rasgo del guerrero añade un 10%: **42**, el «+4» de la hoja. El ataque es 9 + 1 = 10, más 2 del rasgo de la espada de madera: **12**. Los números del mago salen de las mismas estadísticas y del arquetipo de mago.
## Para autores: describir estadísticas
**Las estadísticas** son entidades de tipo `stat`:
- `Id`, además de `Name`, `Short` y `Description` como claves de traducción;
- `Group` y `Order` — dónde aparece en la hoja (`stats/group/<group>` nombra el grupo);
- `Default`, o una `Formula` con otras estadísticas y `level`; `Min`, `Max`;
- `Pool: true` — una estadística que se gasta y se rellena, como el maná;
- `Binds` — el número de combate en el que se convierte: `health`, `attack`, `defence` o `point`;
- `Hidden` — se cuenta, pero no se muestra.
**Los arquetipos** (tipo `archetype`) son clases, o temperamentos en una novela: `Stats` con un valor o una fórmula por estadística, `Traits`, `Learnings` (acciones que se aprenden a cierto nivel), `ExpCurve` y `MaxLevel`.
**Los rasgos** — `{ "Stat": "atk", "Add": 2 }`, con `Add`, `Percent` o `Formula` — se pueden escribir en cualquier entidad: un arquetipo, un personaje, un objeto. Así añade ataque la espada de madera sin que el mod de objetos sepa nada de estadísticas.
**Las fórmulas** usan `+ - * / % ^`, comparaciones, `&& || !`, `cond ? a : b` y funciones como `min`, `max`, `floor`, `round`, `clamp`, `rand(lo, hi)` y `chance(p)`. Los nombres desconocidos valen 0, y una fórmula rota se informa una sola vez en el registro.
Cómo se obtiene un valor: la entrada `Stats` propia del personaje; si no, la del arquetipo; si no, la `Formula` de la estadística; si no, `Default`; después las bonificaciones permanentes; después todos los rasgos; al final `Min`/`Max`.
## En los escenarios
```scenario
action stat.add stat=cha value=1 who=rpg_hero
action stat.exp value=35 who=rpg_hero
when "stat(rpg_hero, cha) >= 8" -> :charming
```
- `stat.add`, `stat.archetype`, `stat.exp` (experiencia, que sube el nivel según la curva), `stat.restore` (rellena salud y reservas); `who=` es un id de personaje, `player` o `party`.
- Condiciones: `stat(who, stat)`, `level(who)`, `archetype(who, 'id')`. Los ids con barra se escriben entre comillas.
- Las pruebas de estadística con dados (`check cha 10 -> :label`) vienen de Stat Checks; el equipo, de Equipment.
## Combates
Las estadísticas con `Binds` se escriben en los números de combate de los miembros del grupo, así que los dos sistemas de combate las usan sin saber nada de estadísticas. Los personajes sin arquetipo, estadísticas ni rasgos conservan los números de su ficha; un paquete de reglas añadido a un juego que no usa estadísticas no cambia nada en él.
## Si algo falla
1. **Una estadística muestra 0.** Su fórmula nombra una estadística que no existe (los nombres desconocidos valen 0); el registro informa de la fórmula rota una sola vez.
2. **Un personaje no sube de nivel.** Solo suben de nivel los personajes con arquetipo, salvo que el ajuste `stats.leveling` del juego sea `all`.
3. **Los números de combate no cambiaron.** La estadística necesita `Binds`, y el personaje debe participar en las estadísticas (un arquetipo, estadísticas o rasgos propios, o equipo puesto).
+91
View File
@@ -0,0 +1,91 @@
# Stats Engine — キャラクターを形づくる数字
Stats Engine は、ゲームがキャラクターについて何でも数えられるようにします。RPG なら筋力と HP、ビジュアルノベルなら勇気や信頼です。ゲームはステータスをデータとして記述します——名前、ほかのステータスからの計算方法、レベルに応じた伸び——そしてエンジンは各キャラクターのシートを計算し、**キャラクターシート**パネルに表示し、シナリオが数値を読み取って変更できるようにし、HP・攻撃・防御をバトルへ渡します。
エンジン自体はステータスをひとつも知りません。下の画像にある筋力・敏捷・HP・マナは、RPG Plus が含むルールパック **Classic RPG Rules** によるものです。同じエンジンで、まったく別のステータスを持つゲームも作れます。
## キャラクターシート
ツールバーのシートのアイコンで開きます。
![RPG Plus のキャラクターシート: 主人公はレベル 1 のウォリアー、経験値は 20 中 0。能力値(筋力 9、敏捷 5、知力 2、体力 8、カリスマ 4、幸運 4)、戦闘(HP 42 +4、マナ 6/6、攻撃 12 +2、装甲 4、魔法 3)、そして木剣の入った装備ブロック。](assets/sheet.jpg)
- 左側は **パーティー**。メンバー全員とそのレベル。
- 上部は **職業・レベル・経験値** と、職業の説明。
- **ステータスはグループごと**に並び、名前はゲームが決めます。小さな緑の数字はボーナスのぶん——装備や職業の特性によるものです。マナのように消費して回復するステータスは「現在 / 最大」を表示します。
- その下に **他の MOD のブロック**。たとえば **外す** ボタンのある装備ブロックです。
## ひとつの選択で、ふたりの違う主人公
RPG Plus のプロローグで、プレイヤーは主人公が何者だったかを語ります。その答えが職業——**アーキタイプ**——を与え、シート全体がそこから決まります。
![プロローグ後のシート 2 枚。ウォリアー: 筋力 9、知力 2、体力 8、HP 42、マナ 6/6、攻撃 12、魔法 3。メイジ: 筋力 3、知力 10、体力 5、HP 29、マナ 34/34、攻撃 4、魔法 15。](assets/warrior-mage.jpg)
その答えの裏にあるシナリオの行:
```scenario
action stat.archetype who=rpg_hero id=classic/warrior
```
Classic RPG Rules におけるウォリアーのアーキタイプ:
```json
{
"Id": "classic/warrior",
"Name": "classic/archetype/warrior",
"Stats": { "str": "7 + level * 2", "agi": "4 + level", "int": "2 + floor(level / 2)",
"vit": "6 + level * 2", "cha": "4 + floor(level / 2)", "luk": "4 + floor(level / 2)" },
"Traits": [ { "Stat": "hp", "Percent": 10 } ],
"Learnings": [ { "Level": 1, "Action": "classic/power_strike" }, { "Level": 3, "Action": "classic/guard_break" } ]
}
```
そしてステータス 2 つ:
```json
{ "Id": "hp", "Group": "combat", "Formula": "12 + vit * 3 + level * 2", "Min": 1, "Binds": "health" },
{ "Id": "atk", "Group": "combat", "Formula": "str + level", "Min": 0, "Binds": "attack" }
```
レベル 1 のウォリアーは、筋力 7 + 2 = **9**、体力 6 + 2 = **8**。HP は 12 + 8 × 3 + 2 = 38 で、ウォリアーの特性が 10% 加えて **42**。シートの「+4」の正体です。攻撃は 9 + 1 = 10 に、木剣の特性の 2 を足して **12**。メイジの数字は、同じステータスとメイジのアーキタイプから出ています。
## 作者向け: ステータスの記述
**ステータス**は kind が `stat` のエンティティです。
- `Id`、および翻訳キーとしての `Name`、`Short`、`Description`。
- `Group` と `Order` — シートのどこに現れるか(`stats/group/<group>` がグループ名)。
- `Default`、またはほかのステータスと `level` による `Formula`。`Min`、`Max`。
- `Pool: true` — マナのように消費して回復するステータス。
- `Binds` — 化ける戦闘数値。`health`、`attack`、`defence`、`point`。
- `Hidden` — 計算はされるが表示しない。
**アーキタイプ**(kind は `archetype`)は職業、ノベルなら気質です。ステータスごとの値か式を持つ `Stats`、`Traits`、`Learnings`(レベルで覚えるアクション)、`ExpCurve`、`MaxLevel` を持ちます。
**特性**——`{ "Stat": "atk", "Add": 2 }` のようなもので、`Add`、`Percent`、`Formula` のいずれか——は、アーキタイプ・キャラクター・アイテム、どのエンティティにも書けます。木剣がアイテム MOD にステータスを意識させずに攻撃を上げているのはこの仕組みです。
**式**では `+ - * / % ^`、比較、`&& || !`、`cond ? a : b` が使え、`min`、`max`、`floor`、`round`、`clamp`、`rand(lo, hi)`、`chance(p)` といった関数もあります。知らない名前は 0 として数えられ、壊れた式はログに 1 回だけ報告されます。
値の決まり方: まずキャラクター自身の `Stats` の項目、なければアーキタイプのもの、なければステータスの `Formula`、なければ `Default`。その後に恒久ボーナス、すべての特性が続き、最後に `Min`/`Max` が締めます。
## シナリオの中で
```scenario
action stat.add stat=cha value=1 who=rpg_hero
action stat.exp value=35 who=rpg_hero
when "stat(rpg_hero, cha) >= 8" -> :charming
```
- `stat.add`、`stat.archetype`、`stat.exp`(経験値。曲線に従ってレベルを上げる)、`stat.restore`(HP とプールを回復)。`who=` にはキャラクターの id、`player`、`party`。
- 条件は `stat(who, stat)`、`level(who)`、`archetype(who, 'id')`。スラッシュ入りの id は引用符で囲みます。
- ダイスつきのステータス判定(`check cha 10 -> :label`)は Stat Checks が、装備は Equipment が担います。
## バトル
`Binds` を持つステータスは、パーティーメンバーの戦闘数値に書き込まれます。そのため両方のバトルコアが、ステータスを知らずにそのまま使います。アーキタイプもステータスも特性も持たないキャラクターは、キャラクターファイルの数値のままです。ステータスを使わないゲームにルールパックを加えても、何も変わりません。
## うまくいかないとき
1. **ステータスが 0 になる。** その式が存在しないステータスを参照しています(知らない名前は 0)。壊れた式はログに 1 回だけ報告されます。
2. **キャラクターがレベルアップしない。** レベルが上がるのはアーキタイプを持つキャラクターだけです。ゲーム設定 `stats.leveling` が `all` であれば別です。
3. **戦闘数値が変わらない。** ステータスに `Binds` が必要で、かつキャラクターがステータスに参加している(アーキタイプ、固有のステータスか特性、装備のいずれか)必要があります。
+91
View File
@@ -0,0 +1,91 @@
# Stats Engine — 캐릭터를 이루는 숫자
Stats Engine은 게임이 캐릭터에 대한 무엇이든 셀 수 있게 합니다. RPG라면 힘과 체력, 비주얼 노벨이라면 용기나 신뢰입니다. 게임은 능력치를 데이터로 기술합니다 — 이름, 서로를 계산하는 방식, 레벨에 따른 성장 — 그러면 엔진이 캐릭터마다 시트를 계산해 **캐릭터 시트** 패널에 보여 주고, 시나리오가 숫자를 읽고 바꾸게 하며, 체력·공격·방어를 전투로 넘깁니다.
엔진 자체는 능력치를 하나도 모릅니다. 아래 그림의 힘, 민첩, 체력, 마나는 RPG Plus에 들어 있는 규칙 팩 **Classic RPG Rules**에서 온 것입니다. 같은 엔진으로 완전히 다른 능력치를 지닌 게임도 만들 수 있습니다.
## 캐릭터 시트
툴바의 시트 아이콘으로 엽니다.
![RPG Plus의 캐릭터 시트: 주인공은 1레벨 전사, 경험치 0/20. 능력(힘 9, 민첩 5, 지력 2, 활력 8, 매력 4, 행운 4), 전투(체력 42 +4, 마나 6/6, 공격 12 +2, 방어구 4, 마법 3), 그리고 나무 검이 담긴 장비 블록.](assets/sheet.jpg)
- 왼쪽은 **파티**: 파티 전원과 각자의 레벨.
- 위에는 **직업·레벨·경험치**와 직업 설명.
- **능력치는 그룹별로** 나열되며 이름은 게임이 정합니다. 작은 초록 숫자는 보너스분 — 장비, 직업의 특성에서 옵니다. 마나처럼 쓰고 회복하는 능력치는 현재 / 최대로 표시됩니다.
- 아래에는 **다른 모드의 블록**. 예컨대 **벗기** 버튼이 있는 장비 블록입니다.
## 하나의 선택, 두 명의 다른 주인공
RPG Plus 프롤로그에서 플레이어는 주인공이 누구였는지 말합니다. 그 대답이 직업 — **원형** — 을 부여하고, 시트 전체가 거기서 따라 나옵니다:
![프롤로그 후 나란히 놓인 두 시트. 전사: 힘 9, 지력 2, 활력 8, 체력 42, 마나 6/6, 공격 12, 마법 3. 메이지: 힘 3, 지력 10, 활력 5, 체력 29, 마나 34/34, 공격 4, 마법 15.](assets/warrior-mage.jpg)
그 대답 뒤의 시나리오 줄:
```scenario
action stat.archetype who=rpg_hero id=classic/warrior
```
Classic RPG Rules의 전사 원형:
```json
{
"Id": "classic/warrior",
"Name": "classic/archetype/warrior",
"Stats": { "str": "7 + level * 2", "agi": "4 + level", "int": "2 + floor(level / 2)",
"vit": "6 + level * 2", "cha": "4 + floor(level / 2)", "luk": "4 + floor(level / 2)" },
"Traits": [ { "Stat": "hp", "Percent": 10 } ],
"Learnings": [ { "Level": 1, "Action": "classic/power_strike" }, { "Level": 3, "Action": "classic/guard_break" } ]
}
```
그리고 그 능력치 둘:
```json
{ "Id": "hp", "Group": "combat", "Formula": "12 + vit * 3 + level * 2", "Min": 1, "Binds": "health" },
{ "Id": "atk", "Group": "combat", "Formula": "str + level", "Min": 0, "Binds": "attack" }
```
레벨 1 전사는 힘 7 + 2 = **9**, 활력 6 + 2 = **8**입니다. 체력은 12 + 8 × 3 + 2 = 38이고 전사의 특성이 10%를 더해 **42**, 그러니까 시트의 "+4"가 됩니다. 공격은 9 + 1 = 10에 나무 검 특성의 2를 더해 **12**. 메이지의 숫자는 같은 능력치와 메이지 원형에서 나옵니다.
## 작성자용: 능력치 정의하기
**능력치**는 kind가 `stat`인 엔티티입니다.
- `Id`, 그리고 번역 키인 `Name`, `Short`, `Description`.
- `Group`과 `Order` — 시트의 어디에 나타나는지(`stats/group/<group>`가 그룹 이름).
- `Default`, 또는 다른 능력치와 `level`로 이루어진 `Formula`. `Min`, `Max`.
- `Pool: true` — 마나처럼 쓰고 회복하는 능력치.
- `Binds` — 바뀌어 들어갈 전투 수치. `health`, `attack`, `defence`, `point`.
- `Hidden` — 계산은 되지만 표시하지 않음.
**원형**(kind `archetype`)은 직업이고, 노벨에서는 기질입니다. 능력치마다 값이나 공식을 담는 `Stats`, `Traits`, `Learnings`(레벨에 따라 배우는 액션), `ExpCurve`, `MaxLevel`을 갖습니다.
**특성** — `{ "Stat": "atk", "Add": 2 }` 꼴이며 `Add`, `Percent`, `Formula`를 씁니다 — 는 원형, 캐릭터, 아이템 어느 엔티티에든 넣을 수 있습니다. 나무 검이 아이템 모드로 하여금 능력치를 모른 채 공격을 올리는 방법이 바로 이것입니다.
**공식**은 `+ - * / % ^`, 비교, `&& || !`, `cond ? a : b`를 쓰고, `min`, `max`, `floor`, `round`, `clamp`, `rand(lo, hi)`, `chance(p)` 같은 함수도 있습니다. 모르는 이름은 0으로 치고, 깨진 공식은 로그에 한 번만 보고됩니다.
값의 결정 순서: 캐릭터 자신의 `Stats` 항목, 없으면 원형의 것, 없으면 능력치의 `Formula`, 없으면 `Default`. 그다음 영구 보너스, 모든 특성이 이어지고 마지막에 `Min`/`Max`로 묶입니다.
## 시나리오에서
```scenario
action stat.add stat=cha value=1 who=rpg_hero
action stat.exp value=35 who=rpg_hero
when "stat(rpg_hero, cha) >= 8" -> :charming
```
- `stat.add`, `stat.archetype`, `stat.exp`(경험치. 곡선에 따라 레벨을 올림), `stat.restore`(체력과 소모형 능력치 회복). `who=`에는 캐릭터 id, `player`, `party`.
- 조건: `stat(who, stat)`, `level(who)`, `archetype(who, 'id')`. 슬래시가 들어간 id는 따옴표로 감쌉니다.
- 주사위가 들어가는 능력치 판정(`check cha 10 -> :label`)은 Stat Checks가, 장비는 Equipment가 맡습니다.
## 전투
`Binds`가 있는 능력치는 파티원의 전투 수치에 기록됩니다. 덕분에 두 전투 코어 모두 능력치를 모른 채 그대로 씁니다. 원형도 능력치도 특성도 없는 캐릭터는 캐릭터 파일의 수치를 유지하고, 능력치를 쓰지 않는 게임에 규칙 팩을 넣어도 아무것도 바뀌지 않습니다.
## 문제가 생겼을 때
1. **능력치가 0으로 보인다.** 그 공식이 존재하지 않는 능력치를 부르고 있습니다(모르는 이름은 0). 깨진 공식은 로그에 한 번 보고됩니다.
2. **캐릭터가 레벨업하지 않는다.** 레벨은 원형이 있는 캐릭터만 오릅니다. 게임 설정 `stats.leveling`이 `all`이면 예외입니다.
3. **전투 수치가 바뀌지 않았다.** 능력치에 `Binds`가 필요하고, 캐릭터는 능력치에 참여해야 합니다(원형, 고유 능력치나 특성, 착용 장비).
+91
View File
@@ -0,0 +1,91 @@
# Stats Engine — числа, из которых состоит персонаж
Stats Engine позволяет игре считать что угодно о своих персонажах: силу и здоровье в RPG, смелость или доверие в визуальной новелле. Игра описывает статы данными — как они называются, как считаются друг из друга, как растут с уровнем, — а движок вычисляет лист каждого персонажа, показывает его в панели **Лист персонажа**, даёт сценариям проверять и менять числа и передаёт здоровье, атаку и защиту боевым системам.
Сам движок не знает ни одного стата. Сила, ловкость, здоровье и мана на картинках ниже приходят из набора правил **Classic RPG Rules**, который входит в RPG Plus; с тем же движком другая игра может описать совершенно другие статы.
## Лист персонажа
Открывается иконкой листа на панели инструментов.
![Лист персонажа в RPG Plus: Герой — Воин 1-го уровня с 0 из 20 опыта; Атрибуты (Сила 9, Ловкость 5, Интеллект 2, Стойкость 8, Харизма 4, Удача 4), Бой (Здоровье 42 +4, Мана 6/6, Атака 12 +2, Броня 4, Магия 3) и блок «Снаряжение» с деревянным мечом.](assets/sheet.jpg)
- **Отряд** слева: все члены отряда с их уровнями.
- **Класс, уровень и опыт** сверху, с описанием класса.
- **Статы по группам**, названным игрой. Маленькое зелёное число — часть, приходящаяся на бонусы: снаряжение, черты класса. Расходуемые статы вроде маны показывают «текущее / максимум».
- **Блоки других модов** ниже — например, «Снаряжение» с кнопками **Снять**.
## Один выбор — два разных героя
В прологе RPG Plus игрок рассказывает, кем был герой. Ответ даёт герою класс — **архетип**, — и весь лист следует из него:
![Два листа рядом после пролога. Воин: Сила 9, Интеллект 2, Стойкость 8, Здоровье 42, Мана 6/6, Атака 12, Магия 3. Маг: Сила 3, Интеллект 10, Стойкость 5, Здоровье 29, Мана 34/34, Атака 4, Магия 15.](assets/warrior-mage.jpg)
Строка сценария за этим ответом:
```scenario
action stat.archetype who=rpg_hero id=classic/warrior
```
Архетип воина в Classic RPG Rules:
```json
{
"Id": "classic/warrior",
"Name": "classic/archetype/warrior",
"Stats": { "str": "7 + level * 2", "agi": "4 + level", "int": "2 + floor(level / 2)",
"vit": "6 + level * 2", "cha": "4 + floor(level / 2)", "luk": "4 + floor(level / 2)" },
"Traits": [ { "Stat": "hp", "Percent": 10 } ],
"Learnings": [ { "Level": 1, "Action": "classic/power_strike" }, { "Level": 3, "Action": "classic/guard_break" } ]
}
```
и два его стата:
```json
{ "Id": "hp", "Group": "combat", "Formula": "12 + vit * 3 + level * 2", "Min": 1, "Binds": "health" },
{ "Id": "atk", "Group": "combat", "Formula": "str + level", "Min": 0, "Binds": "attack" }
```
На 1-м уровне у воина Сила 7 + 2 = **9** и Стойкость 6 + 2 = **8**. Здоровье — 12 + 8 × 3 + 2 = 38, а черта воина добавляет 10% — **42**, те самые «+4» на листе. Атака — 9 + 1 = 10, плюс 2 от черты деревянного меча — **12**. Числа мага получаются из тех же статов и архетипа мага.
## Авторам: описание статов
**Статы** — сущности вида `stat`:
- `Id`, а также `Name`, `Short` и `Description` — ключи перевода;
- `Group` и `Order` — где стат показывается на листе (`stats/group/<group>` задаёт имя группы);
- `Default` либо `Formula` из других статов и `level`; `Min`, `Max`;
- `Pool: true` — стат, который тратится и восполняется, как мана;
- `Binds` — боевое число, в которое он превращается: `health`, `attack`, `defence` или `point`;
- `Hidden` — считается, но не показывается.
**Архетипы** (вид `archetype`) — это классы, а в новелле — характеры: `Stats` со значением или формулой для каждого стата, `Traits`, `Learnings` (действия, осваиваемые с уровнем), `ExpCurve` и `MaxLevel`.
**Черты** — вида `{ "Stat": "atk", "Add": 2 }`, с `Add`, `Percent` или `Formula` — можно вписать в любую сущность: архетип, персонажа, предмет. Именно так деревянный меч добавляет атаку, и мод предметов не знает о статах.
**Формулы** используют `+ - * / % ^`, сравнения, `&& || !`, `cond ? a : b` и функции вроде `min`, `max`, `floor`, `round`, `clamp`, `rand(lo, hi)` и `chance(p)`. Незнакомые имена считаются нулём, а сломанная формула один раз попадает в журнал.
Как находится значение: собственная запись `Stats` персонажа, иначе запись архетипа, иначе `Formula` стата, иначе `Default`; затем постоянные прибавки; затем все черты; затем `Min`/`Max`.
## В сценариях
```scenario
action stat.add stat=cha value=1 who=rpg_hero
action stat.exp value=35 who=rpg_hero
when "stat(rpg_hero, cha) >= 8" -> :charming
```
- `stat.add`, `stat.archetype`, `stat.exp` (опыт, поднимающий уровень по кривой), `stat.restore` (восполняет здоровье и расходуемые статы); `who=` — id персонажа, `player` или `party`.
- Условия: `stat(who, stat)`, `level(who)`, `archetype(who, 'id')`. Идентификаторы со слэшем берутся в кавычки.
- Проверки статов с кубиками (`check cha 10 -> :label`) приносит Stat Checks; снаряжение — Equipment.
## Бои
Статы с `Binds` записываются в боевые числа участников отряда, поэтому обе боевые системы используют их, ничего не зная о статах. Персонажи без архетипа, статов и черт сохраняют числа из своего файла; набор правил, добавленный в игру без статов, в ней ничего не меняет.
## Если что-то пошло не так
1. **Стат показывает 0.** Его формула называет несуществующий стат (незнакомые имена считаются нулём); журнал сообщит о сломанной формуле один раз.
2. **Персонаж не повышает уровень.** Уровень растёт только у персонажей с архетипом — если настройка игры `stats.leveling` не равна `all`.
3. **Боевые числа не изменились.** Стату нужен `Binds`, а персонаж должен участвовать в статах: архетип, собственные статы или черты, надетое снаряжение.
+91
View File
@@ -0,0 +1,91 @@
# Stats Engine — những con số tạo nên nhân vật
Stats Engine cho phép game ghi lại đủ thứ về nhân vật: sức mạnh và máu trong RPG, lòng can đảm hay lòng tin trong tiểu thuyết thị giác. Game mô tả chỉ số của mình bằng dữ liệu — tên gọi, cách tính từ nhau, cách lớn theo cấp — còn bộ máy tính bảng nhân vật cho từng người, hiển thị trong **Bảng nhân vật**, cho kịch bản đọc và thay đổi các con số, và trao máu, tấn công, phòng ngự cho các trận chiến.
Bản thân bộ máy không biết chỉ số nào cả. Sức mạnh, nhanh nhẹn, máu và mana trong các hình dưới đây đến từ gói luật **Classic RPG Rules** mà RPG Plus có sẵn; cùng bộ máy đó, một game khác vẫn có thể mang những chỉ số hoàn toàn khác.
## Bảng nhân vật
Mở bằng biểu tượng bảng trên thanh công cụ.
![Bảng nhân vật trong RPG Plus: Anh hùng — Chiến binh cấp 1 với 0/20 kinh nghiệm; Thuộc tính (Sức mạnh 9, Nhanh nhẹn 5, Trí tuệ 2, Thể lực 8, Sức hút 4, May mắn 4), Chiến đấu (Máu 42 +4, Mana 6/6, Tấn công 12 +2, Giáp 4, Ma thuật 3) và khối Trang bị với thanh kiếm gỗ.](assets/sheet.jpg)
- **Đội** bên trái: toàn bộ thành viên đội cùng cấp của họ.
- **Lớp, cấp và kinh nghiệm** ở trên, kèm mô tả lớp nhân vật.
- **Chỉ số chia theo nhóm**, tên do game đặt. Con số xanh nhỏ là phần đến từ cộng thêm — trang bị, đặc tính của lớp. Chỉ số tiêu hao rồi hồi lại, như mana, hiển thị hiện tại / tối đa.
- **Các khối của mod khác** bên dưới, ví dụ khối Trang bị với các nút **Tháo**.
## Một lựa chọn, hai nhân vật khác nhau
Trong phần mở đầu của RPG Plus, người chơi kể nhân vật chính từng là ai. Câu trả lời trao cho anh ta một lớp nhân vật — một **nguyên mẫu** — và cả bảng nhân vật đều suy ra từ đó:
![Hai bảng cạnh nhau sau phần mở đầu. Chiến binh: Sức mạnh 9, Trí tuệ 2, Thể lực 8, Máu 42, Mana 6/6, Tấn công 12, Ma thuật 3. Pháp sư: Sức mạnh 3, Trí tuệ 10, Thể lực 5, Máu 29, Mana 34/34, Tấn công 4, Ma thuật 15.](assets/warrior-mage.jpg)
Dòng kịch bản đằng sau câu trả lời đó:
```scenario
action stat.archetype who=rpg_hero id=classic/warrior
```
Nguyên mẫu Chiến binh trong Classic RPG Rules:
```json
{
"Id": "classic/warrior",
"Name": "classic/archetype/warrior",
"Stats": { "str": "7 + level * 2", "agi": "4 + level", "int": "2 + floor(level / 2)",
"vit": "6 + level * 2", "cha": "4 + floor(level / 2)", "luk": "4 + floor(level / 2)" },
"Traits": [ { "Stat": "hp", "Percent": 10 } ],
"Learnings": [ { "Level": 1, "Action": "classic/power_strike" }, { "Level": 3, "Action": "classic/guard_break" } ]
}
```
và hai chỉ số của nó:
```json
{ "Id": "hp", "Group": "combat", "Formula": "12 + vit * 3 + level * 2", "Min": 1, "Binds": "health" },
{ "Id": "atk", "Group": "combat", "Formula": "str + level", "Min": 0, "Binds": "attack" }
```
Ở cấp 1, Chiến binh có Sức mạnh 7 + 2 = **9** và Thể lực 6 + 2 = **8**. Máu là 12 + 8 × 3 + 2 = 38, đặc tính của Chiến binh cộng thêm 10% — **42**, chính là "+4" trên bảng. Tấn công là 9 + 1 = 10, cộng 2 từ đặc tính của kiếm gỗ — **12**. Con số của Pháp sư đến từ những chỉ số ấy cùng nguyên mẫu Pháp sư.
## Dành cho tác giả: mô tả chỉ số
**Chỉ số** là thực thể loại `stat`:
- `Id`, cùng `Name`, `Short`, `Description` làm khóa dịch;
- `Group` và `Order` — nó hiện ở đâu trên bảng (`stats/group/<group>` đặt tên nhóm);
- `Default`, hoặc `Formula` từ các chỉ số khác và `level`; `Min`, `Max`;
- `Pool: true` — chỉ số tiêu hao rồi hồi lại, như mana;
- `Binds` — con số chiến đấu nó trở thành: `health`, `attack`, `defence` hoặc `point`;
- `Hidden` — vẫn tính nhưng không hiển thị.
**Nguyên mẫu** (loại `archetype`) là lớp nhân vật, hay tính cách trong tiểu thuyết: `Stats` với giá trị hoặc công thức cho từng chỉ số, `Traits`, `Learnings` (hành động học được theo cấp), `ExpCurve` và `MaxLevel`.
**Đặc tính** — dạng `{ "Stat": "atk", "Add": 2 }`, với `Add`, `Percent` hoặc `Formula` — có thể ghi vào bất kỳ thực thể nào: nguyên mẫu, nhân vật, vật phẩm. Thanh kiếm gỗ cộng tấn công mà mod vật phẩm chẳng biết gì về chỉ số, nhờ cách này.
**Công thức** dùng `+ - * / % ^`, so sánh, `&& || !`, `cond ? a : b` và các hàm như `min`, `max`, `floor`, `round`, `clamp`, `rand(lo, hi)`, `chance(p)`. Tên lạ tính bằng 0, còn công thức hỏng được báo một lần trong nhật ký.
Giá trị được tìm thế nào: mục `Stats` riêng của nhân vật, nếu không thì của nguyên mẫu, nếu không thì `Formula` của chỉ số, nếu không thì `Default`; sau đó là các cộng thêm vĩnh viễn; rồi mọi đặc tính; cuối cùng ghép vào `Min`/`Max`.
## Trong kịch bản
```scenario
action stat.add stat=cha value=1 who=rpg_hero
action stat.exp value=35 who=rpg_hero
when "stat(rpg_hero, cha) >= 8" -> :charming
```
- `stat.add`, `stat.archetype`, `stat.exp` (kinh nghiệm, nâng cấp theo đường cong), `stat.restore` (hồi máu và các chỉ số tiêu hao); `who=` là id nhân vật, `player` hoặc `party`.
- Điều kiện: `stat(who, stat)`, `level(who)`, `archetype(who, 'id')`. Id có dấu gạch chéo phải đặt trong ngoặc kép.
- Phép kiểm chỉ số có xúc xắc (`check cha 10 -> :label`) đến từ Stat Checks; trang bị từ Equipment.
## Chiến đấu
Chỉ số có `Binds` được ghi vào con số chiến đấu của thành viên đội, nên cả hai lõi chiến đấu đều dùng mà chẳng biết gì về chỉ số. Nhân vật không có nguyên mẫu, chỉ số hay đặc tính thì giữ nguyên số từ tệp nhân vật; thêm một gói luật vào game không dùng chỉ số thì chẳng thay đổi gì.
## Khi có trục trặc
1. **Một chỉ số hiện 0.** Công thức của nó gọi một chỉ số không tồn tại (tên lạ tính bằng 0); nhật ký báo công thức hỏng một lần.
2. **Nhân vật không lên cấp.** Chỉ nhân vật có nguyên mẫu mới lên cấp, trừ khi cài đặt `stats.leveling` của game là `all`.
3. **Con số chiến đấu không đổi.** Chỉ số cần `Binds`, và nhân vật phải tham gia hệ thống chỉ số (có nguyên mẫu, chỉ số hoặc đặc tính riêng, hoặc đang mang trang bị).
+91
View File
@@ -0,0 +1,91 @@
# Stats Engine — 描述角色的数字
Stats Engine 让游戏可以为角色记录各种数值:RPG 里的力量和生命,视觉小说里的勇气或信任。游戏用数据描述自己的属性——叫什么名字、如何由彼此推算、如何随等级成长——引擎则算出每个角色的面板,把它显示在**角色面板**中,让剧本能读取和修改这些数字,并把生命、攻击和防御交给战斗系统。
引擎本身不知道任何属性。下图中的力量、敏捷、生命和法力来自规则包 **Classic RPG Rules**,RPG Plus 包含了它;换了别的游戏,同一个引擎也能承载完全不同的属性。
## 角色面板
点工具栏上的面板图标即可打开。
![RPG Plus 中的角色面板:主角——1 级战士,经验 0/20;属性(力量 9、敏捷 5、智力 2、体质 8、魅力 4、幸运 4),战斗(生命 42 +4、法力 6/6、攻击 12 +2、护甲 4、魔法 3),以及带木剑的装备区块。](assets/sheet.jpg)
- 左侧是**队伍**:队伍全体成员及其等级。
- 顶部是**职业、等级和经验**,附职业描述。
- **属性按组排列**,组名由游戏决定。绿色小数字是来自加成的部分——装备、职业的特性。会消耗也会恢复的属性(如法力)显示"当前 / 上限"。
- 下方是**其他模组的区块**,例如带**卸下**按钮的装备区块。
## 一个选择,两种不同的主角
在 RPG Plus 的序章里,玩家要说明主角过去是什么人。答案为主角赋予一个职业——一个**原型**——整个面板都由它推算而来:
![序章后并排的两个面板。战士:力量 9、智力 2、体质 8、生命 42、法力 6/6、攻击 12、魔法 3。法师:力量 3、智力 10、体质 5、生命 29、法力 34/34、攻击 4、魔法 15。](assets/warrior-mage.jpg)
这个答案背后的剧本行:
```scenario
action stat.archetype who=rpg_hero id=classic/warrior
```
Classic RPG Rules 中的战士原型:
```json
{
"Id": "classic/warrior",
"Name": "classic/archetype/warrior",
"Stats": { "str": "7 + level * 2", "agi": "4 + level", "int": "2 + floor(level / 2)",
"vit": "6 + level * 2", "cha": "4 + floor(level / 2)", "luk": "4 + floor(level / 2)" },
"Traits": [ { "Stat": "hp", "Percent": 10 } ],
"Learnings": [ { "Level": 1, "Action": "classic/power_strike" }, { "Level": 3, "Action": "classic/guard_break" } ]
}
```
以及它的两个属性:
```json
{ "Id": "hp", "Group": "combat", "Formula": "12 + vit * 3 + level * 2", "Min": 1, "Binds": "health" },
{ "Id": "atk", "Group": "combat", "Formula": "str + level", "Min": 0, "Binds": "attack" }
```
1 级战士的力量是 7 + 2 = **9**,体质是 6 + 2 = **8**。生命为 12 + 8 × 3 + 2 = 38,战士的特性再加 10%——**42**,也就是面板上的"+4"。攻击为 9 + 1 = 10,加上木剑特性的 2——**12**。法师的数字来自同样的属性和法师原型。
## 给作者:描述属性
**属性**是 kind 为 `stat` 的实体:
- `Id`,以及作为翻译键的 `Name`、`Short`、`Description`;
- `Group` 和 `Order`——它在面板上的位置(`stats/group/<group>` 为组命名);
- `Default`,或由其他属性和 `level` 组成的 `Formula`;`Min`、`Max`;
- `Pool: true`——会消耗也会恢复的属性,如法力;
- `Binds`——它写入的战斗数值:`health`、`attack`、`defence` 或 `point`;
- `Hidden`——参与计算但不显示。
**原型**(kind 为 `archetype`)就是职业,在小说里则是性格:`Stats` 为每个属性给出数值或公式,另有 `Traits`、`Learnings`(随等级学会的动作)、`ExpCurve` 和 `MaxLevel`。
**特性**——形如 `{ "Stat": "atk", "Add": 2 }`,用 `Add`、`Percent` 或 `Formula`——可以写进任何实体:原型、角色、物品。木剑就是这样加攻击的,物品模组对此毫不知情。
**公式**可用 `+ - * / % ^`、比较、`&& || !`、`cond ? a : b`,以及 `min`、`max`、`floor`、`round`、`clamp`、`rand(lo, hi)`、`chance(p)` 等函数。陌生的名字按 0 计,坏掉的公式会在日志里报告一次。
数值的取值顺序:角色自己的 `Stats` 条目,否则用原型的,否则用属性的 `Formula`,否则 `Default`;然后是永久加成;然后是所有特性;最后套 `Min`/`Max`。
## 在剧本中
```scenario
action stat.add stat=cha value=1 who=rpg_hero
action stat.exp value=35 who=rpg_hero
when "stat(rpg_hero, cha) >= 8" -> :charming
```
- `stat.add`、`stat.archetype`、`stat.exp`(经验,按曲线提升等级)、`stat.restore`(恢复生命和消耗型属性);`who=` 是角色 id、`player` 或 `party`。
- 条件:`stat(who, stat)`、`level(who)`、`archetype(who, 'id')`。带斜杠的 id 要加引号。
- 带骰子的属性检定(`check cha 10 -> :label`)来自 Stat Checks;装备来自 Equipment。
## 战斗
带 `Binds` 的属性会写入队伍成员的战斗数值,因此两种战斗核心都能直接使用它们,完全不必知道属性的存在。没有原型、属性或特性的角色沿用角色文件里的数值;往不使用属性的游戏里加规则包,不会改变任何东西。
## 如果遇到问题
1. **某个属性显示 0。** 它的公式引用了不存在的属性(陌生名字按 0 计);日志会就坏掉的公式报告一次。
2. **角色不升级。** 只有带原型的角色会升级,除非游戏设置 `stats.leveling` 为 `all`。
3. **战斗数值没有变化。** 属性需要 `Binds`,而且角色必须参与属性系统(有原型、自有属性或特性,或穿着装备)。
+4
View File
@@ -0,0 +1,4 @@
collection_settings/player = Player character
collection_settings/player_hint = Character used as player in stats and checks. Choose a template or enter an ID created during play.
collection_settings/player_auto = When unspecified: the first battle-party member, or player when there is no party.
collection_settings/player_group = Character
+4
View File
@@ -0,0 +1,4 @@
collection_settings/player = Personaje del jugador
collection_settings/player_hint = Personaje usado como player en atributos y pruebas. Elige una plantilla o introduce un ID creado durante la partida.
collection_settings/player_auto = Sin valor: el primer miembro del grupo de combate, o player si no hay grupo.
collection_settings/player_group = Personaje
+4
View File
@@ -0,0 +1,4 @@
collection_settings/player = プレイヤーキャラクター
collection_settings/player_hint = 能力値や判定でplayerとなるキャラクター。テンプレートを選ぶか、ゲーム中に生成されるIDを入力。
collection_settings/player_auto = 未指定時は戦闘パーティーの先頭。パーティーがなければplayer。
collection_settings/player_group = キャラクター
+4
View File
@@ -0,0 +1,4 @@
collection_settings/player = 플레이어 캐릭터
collection_settings/player_hint = 능력치와 판정에서 player로 쓰는 캐릭터입니다. 템플릿을 선택하거나 게임 중 생성되는 ID를 입력하세요.
collection_settings/player_auto = 지정하지 않으면 전투 파티의 첫 멤버, 파티가 없으면 player입니다.
collection_settings/player_group = 캐릭터
+4
View File
@@ -0,0 +1,4 @@
collection_settings/player = Персонаж игрока
collection_settings/player_hint = Кто обозначается как player в проверках и характеристиках. Выберите персонажа или введите ID, создаваемый во время игры.
collection_settings/player_auto = Без настройки: первый участник боевого отряда; если отряда нет — player.
collection_settings/player_group = Персонаж
+4
View File
@@ -0,0 +1,4 @@
collection_settings/player = Nhân vật người chơi
collection_settings/player_hint = Nhân vật đại diện cho player trong chỉ số và kiểm tra. Chọn mẫu hoặc nhập ID được tạo khi chơi.
collection_settings/player_auto = Nếu không đặt: thành viên đầu đội chiến đấu, hoặc player nếu không có đội.
collection_settings/player_group = Nhân vật
+4
View File
@@ -0,0 +1,4 @@
collection_settings/player = 玩家角色
collection_settings/player_hint = 属性和检定中代表 player 的角色。可选模板或输入游戏运行时创建的标识。
collection_settings/player_auto = 未指定时使用战斗队伍首位成员;无队伍时使用 player。
collection_settings/player_group = 角色
+2 -2
View File
@@ -1,5 +1,5 @@
mod_stats_base_name = Stats mod_stats_base_name = Stats Engine
mod_stats_base_desc = A stats engine for any genre: stats as data (strength, charisma, health, sanity — there is no built-in list), archetypes (RPG classes or a novel's temperaments) with per-level formulas and an exp curve, traits — modifiers any entity may carry (an item, a character, a status). Formulas for derived stats and battles, a character sheet, levels from exp. Bound stats are written into the battle attributes, so every battle core uses them unchanged. mod_stats_base_desc = A stats engine for any genre: stats, archetypes and traits as data, formulas for derived numbers, character sheets, levels and pools — handed to battles unchanged.
stats/level_up = {0}: level {1}! stats/level_up = {0}: level {1}!
stats/learned = {0} learned {1} stats/learned = {0} learned {1}
stats/sheet/title = Character sheet stats/sheet/title = Character sheet
+2 -2
View File
@@ -1,5 +1,5 @@
mod_stats_base_name = Estadísticas mod_stats_base_name = Motor de estadísticas
mod_stats_base_desc = Un motor de estadísticas para cualquier género: estadísticas como datos (fuerza, carisma, salud, cordura — no hay lista fija), arquetipos (clases de RPG o temperamentos de una novela) con fórmulas por nivel y curva de experiencia, rasgos — modificadores que puede llevar cualquier entidad (un objeto, un personaje, un estado). Fórmulas para estadísticas derivadas y combates, hoja de personaje, niveles por experiencia. Las estadísticas vinculadas se escriben en los atributos de combate, así que cualquier núcleo de combate las usa sin cambios. mod_stats_base_desc = Un motor de estadísticas para cualquier género: estadísticas, arquetipos y rasgos como datos, fórmulas para los números derivados, hojas de personaje, niveles y reservas — se entregan a los combates sin cambios.
stats/level_up = {0}: ¡nivel {1}! stats/level_up = {0}: ¡nivel {1}!
stats/learned = {0} aprende: {1} stats/learned = {0} aprende: {1}
stats/sheet/title = Hoja de personaje stats/sheet/title = Hoja de personaje
+2 -2
View File
@@ -1,5 +1,5 @@
mod_stats_base_name = ステータス mod_stats_base_name = ステータスエンジン
mod_stats_base_desc = どのジャンルにも使えるステータスエンジン:ステータスはデータ(筋力、カリスマ、HP、正気度——組み込みの一覧はない)、アーキタイプ(RPG の職業やノベルの気質)はレベルごとの式と経験値曲線を持ち、特性はどのエンティティ(アイテム、キャラクター、状態)にも付けられる修正。派生ステータスとバトルの式、キャラクターシート、経験値によるレベルアップ。結び付けたステータスはバトル属性に書き込まれるので、どのバトルコアもそのまま使える。 mod_stats_base_desc = どのジャンルにも使えるステータスエンジン。ステータス・アーキタイプ・特性をデータとして扱い、派生数値の式、キャラクターシート、レベル、プールを——そのままバトルへ渡します。
stats/level_up = {0}:レベル {1}! stats/level_up = {0}:レベル {1}!
stats/learned = {0} は {1} を覚えた stats/learned = {0} は {1} を覚えた
stats/sheet/title = キャラクターシート stats/sheet/title = キャラクターシート
+2 -2
View File
@@ -1,5 +1,5 @@
mod_stats_base_name = 능력치 mod_stats_base_name = 스탯 엔진
mod_stats_base_desc = 어떤 장르에도 쓰는 능력치 엔진: 데이터로 정의하는 능력치(힘, 매력, 체력, 정신력 — 내장 목록은 없음), 레벨별 공식과 경험치 곡선을 가진 원형(RPG 직업이나 노벨의 기질), 어떤 엔티티(아이템, 캐릭터, 상태)든 지닐 수 있는 수정치인 특성. 파생 능력치와 전투용 공식, 캐릭터 시트, 경험치로 오르는 레벨. 연결된 능력치는 전투 속성에 기록되므로 모든 전투 코어가 그대로 사용합니다. mod_stats_base_desc = 어떤 장르에도 쓰는 능력치 엔진: 능력치, 원형, 특성을 데이터로, 파생 수치의 공식, 캐릭터 시트, 레벨, 소모형 수치 — 전투로 그대로 넘겨 줍니다.
stats/level_up = {0}: 레벨 {1}! stats/level_up = {0}: 레벨 {1}!
stats/learned = {0}: {1} 습득 stats/learned = {0}: {1} 습득
stats/sheet/title = 캐릭터 시트 stats/sheet/title = 캐릭터 시트
+2 -2
View File
@@ -1,5 +1,5 @@
mod_stats_base_name = Статы mod_stats_base_name = Движок статов
mod_stats_base_desc = Движок статов для любого жанра: статы как данные (сила, харизма, здоровье, рассудок — встроенного списка нет), архетипы (классы RPG или характеры новеллы) с формулами по уровню и кривой опыта, черты — модификаторы, которые несёт любая сущность (предмет, персонаж, состояние). Формулы для производных статов и боя, лист персонажа, уровни из опыта. Привязанные статы пишутся в боевые атрибуты, поэтому любое боевое ядро работает с ними без изменений. mod_stats_base_desc = Движок статов для любого жанра: статы, архетипы и черты как данные, формулы для производных чисел, листы персонажей, уровни и расходуемые запасы — в бой они уходят без изменений.
stats/level_up = {0}: уровень {1}! stats/level_up = {0}: уровень {1}!
stats/learned = {0} осваивает: {1} stats/learned = {0} осваивает: {1}
stats/sheet/title = Лист персонажа stats/sheet/title = Лист персонажа
+2 -2
View File
@@ -1,5 +1,5 @@
mod_stats_base_name = Chỉ số mod_stats_base_name = Engine chỉ số
mod_stats_base_desc = Bộ máy chỉ số cho mọi thể loại: chỉ số là dữ liệu (sức mạnh, sức hút, máu, lý trí — không có danh sách cố định), nguyên mẫu (lớp nhân vật RPG hay tính cách trong tiểu thuyết) có công thức theo cấp và đường kinh nghiệm, đặc tính — bộ điều chỉnh mà mọi thực thể (vật phẩm, nhân vật, trạng thái) đều mang được. Công thức cho chỉ số phái sinh và chiến đấu, bảng nhân vật, lên cấp nhờ kinh nghiệm. Chỉ số được gắn sẽ ghi vào thuộc tính chiến đấu, nên mọi lõi chiến đấu dùng được mà không cần sửa. mod_stats_base_desc = Bộ máy chỉ số cho mọi thể loại: chỉ số, nguyên mẫu và đặc tính là dữ liệu, công thức cho các con số phái sinh, bảng nhân vật, cấp và chỉ số tiêu hao — được trao cho chiến đấu nguyên vẹn.
stats/level_up = {0}: cấp {1}! stats/level_up = {0}: cấp {1}!
stats/learned = {0} học được: {1} stats/learned = {0} học được: {1}
stats/sheet/title = Bảng nhân vật stats/sheet/title = Bảng nhân vật
+2 -2
View File
@@ -1,5 +1,5 @@
mod_stats_base_name = 属性 mod_stats_base_name = 属性引擎
mod_stats_base_desc = 适用于任何类型的属性引擎:属性即数据(力量、魅力、生命、理智——没有内置列表),原型(RPG 职业或小说人物的性格)带有按等级的公式和经验曲线,特性——任何实体(物品、角色、状态)都能携带的修正。用于派生属性和战斗的公式、角色面板、由经验带来的等级。绑定的属性会写入战斗属性,因此任何战斗核心无需改动即可使用。 mod_stats_base_desc = 适用于任何类型的属性引擎:属性、原型与特性皆为数据,派生数值的公式,角色面板、等级与消耗型属性——原样交给战斗。
stats/level_up = {0}:等级 {1}! stats/level_up = {0}:等级 {1}!
stats/learned = {0} 学会了:{1} stats/learned = {0} 学会了:{1}
stats/sheet/title = 角色面板 stats/sheet/title = 角色面板
+2 -2
View File
@@ -1,9 +1,9 @@
{ {
"id": "stats_base", "id": "stats_base",
"name": "Stats", "name": "Stats Engine",
"version": "1.0.0", "version": "1.0.0",
"author": "ct", "author": "ct",
"description": "Genre-neutral stats engine: stats as data (\"Kind\": \"stat\": strength, charisma, max health, sanity — no built-in list), archetypes (\"Kind\": \"archetype\": RPG classes or a novel's temperaments) with stat formulas per level and exp curves, traits (stat modifiers any entity may carry in a \"Traits\" key: items, characters, statuses) and trait sources other mods plug in. A formula language for derived stats and battle numbers, sheets per character, permanent bonuses, pools, levels from exp. Bound stats are written into the battle attributes, so every battle core uses them unchanged. Conditions stat(who, stat), level(who), archetype(who, id); actions stat.add, stat.archetype, stat.exp, stat.restore; a character sheet panel.", "description": "A stats engine for any genre: stats, archetypes and traits as data, formulas for derived numbers, character sheets, levels and pools — handed to battles unchanged.",
"category": "engine, library", "category": "engine, library",
"sources": [ "sources": [
"src/**/*.cs" "src/**/*.cs"