diff --git a/collection_settings.json b/collection_settings.json new file mode 100644 index 0000000..82d7bd7 --- /dev/null +++ b/collection_settings.json @@ -0,0 +1,9 @@ +{ + "options": [ + { + "key": "battle.core", + "value": "card_battle", + "name": "collection_settings/cards" + } + ] +} diff --git a/docs/assets/card-hover.jpg b/docs/assets/card-hover.jpg new file mode 100644 index 0000000..05e5ccb Binary files /dev/null and b/docs/assets/card-hover.jpg differ diff --git a/docs/assets/card-turn.jpg b/docs/assets/card-turn.jpg new file mode 100644 index 0000000..6322e04 Binary files /dev/null and b/docs/assets/card-turn.jpg differ diff --git a/docs/en.md b/docs/en.md new file mode 100644 index 0000000..d4da7e4 --- /dev/null +++ b/docs/en.md @@ -0,0 +1,47 @@ +# Card Battle — battles with cards dragged onto targets + +Card Battle is a battle system in which characters are big cards and their actions are smaller cards: pick a character, then drag one of its action cards onto a target. It is the battle system of Cthangover, and RPG Plus can use it instead of FF Battle. The battle itself — its start, backdrop, victory and defeat screens, experience and loot — comes from Turn Battle Base. + +## The battle screen + +The RPG Plus warrior against a wolf, after clicking the hero and hovering over Power strike: + +![The card battle screen: the Card battle panel (Round 1, Enemies alive 1) at the top left, the End turn button and speed buttons at the top right, the wolf's card on the right (HP 31/31, DEF 2, ATK 7, AP 1), the hero's card at the bottom left (HP 42/42, DEF 4, ATK 12, AP 1), the battle log in the middle and the Actions panel with three cards — Basic attack, Defence, Power strike — and the hint "A full swing: one and a half times the attack and a bit more from strength."](assets/card-hover.jpg) + +- **Character cards** show health (HP), the shield (DEF, absorbs damage first), attack (ATK) and action points (AP). +- **Actions panel** — the action cards of the selected character, with their target (enemy or ally), cost in AP and values. A card the character cannot pay for is dimmed. +- **The hint line** under the cards shows what the hovered card will do: the damage for a plain attack, the shield for a defence, the description for a skill written as a formula. +- **End turn** ends the party's turn early; with 0 AP left the turn ends by itself. + +## A turn + +1. **Click a party card** to see its actions. +2. **Drag an action card onto a target** — an enemy card for an attack, an ally card for a defence. The target shows whether the action can be applied there. +3. When the party is out of action points, the enemies act, and a new round starts. + +![The battle log and actions panel after one round: Shield of Wolf absorbed 2; Power strike: Hero → Wolf · −19 HP; The party is out of action points; Enemy turn; Defence: Wolf · +4 DEF; Player turn · round 2.](assets/card-turn.jpg) + +The hero's Power strike did 21: the wolf's shield of 2 took the first part and its health fell by 19, from 31 to 12. The wolf then raised its shield to 4. + +## Actions + +Card Battle carries out the same basic kinds of actions as FF Battle: + +- `Attack=1.5` — damage of the attack times the number, absorbed first by the target's shield; +- `Defence=4` — a shield on an ally; +- `Turn=2` — stun for that many turns. + +Skills written as formulas (`Formula=` values, such as Classic RPG Rules' Power strike) work here too through Battle Formulas. + +## Choosing Card Battle + +In a game's collection set `"battle.core": "card_battle"`, or switch from a scenario before the battle: + +```scenario +action battle.set_core core=card_battle +``` + +## If something goes wrong + +1. **Dragging a card does nothing.** No character is selected, the character has too few action points, or the target is of the wrong side (attacks go onto enemies, defences onto allies). +2. **The battle opens in FF Battle.** The game's `battle.core` setting names `ff_battle`. diff --git a/docs/es.md b/docs/es.md new file mode 100644 index 0000000..f6efa28 --- /dev/null +++ b/docs/es.md @@ -0,0 +1,47 @@ +# Card Battle — combates en los que se arrastran cartas sobre los objetivos + +Card Battle es un sistema de combate en el que los personajes son cartas grandes y sus acciones, cartas más pequeñas: elige un personaje y arrastra una de sus cartas de acción sobre un objetivo. Es el sistema de combate de Cthangover, y RPG Plus puede usarlo en lugar de FF Battle. El combate en sí — el inicio, el fondo, las pantallas de victoria y derrota, la experiencia y el botín — lo pone Turn Battle Base. + +## La pantalla de combate + +El guerrero de RPG Plus contra un lobo, tras hacer clic en el héroe y pasar el cursor por Power strike: + +![La pantalla de combate con cartas: el panel Card battle (Round 1, Enemies alive 1) arriba a la izquierda, el botón End turn y los botones de velocidad arriba a la derecha, la carta del lobo a la derecha (HP 31/31, DEF 2, ATK 7, AP 1), la carta del héroe abajo a la izquierda (HP 42/42, DEF 4, ATK 12, AP 1), el registro de combate en medio y el panel Actions con tres cartas — Basic attack, Defence, Power strike — y la pista «Un golpe completo: ataque y medio, y un poco más por fuerza».](assets/card-hover.jpg) + +- **Las cartas de personaje** muestran la salud (HP), el escudo (DEF, absorbe el daño primero), el ataque (ATK) y los puntos de acción (AP). +- **El panel Actions** — las cartas de acción del personaje seleccionado, con su objetivo (enemigo o aliado), su coste en AP y sus valores. Las cartas que el personaje no puede pagar aparecen atenuadas. +- **La línea de pista** bajo las cartas dice qué hará la carta bajo el cursor: el daño de un ataque normal, el escudo de una defensa, la descripción de una habilidad escrita como fórmula. +- **End turn** termina antes el turno del grupo; con 0 AP restantes el turno acaba solo. + +## Un turno + +1. **Haz clic en la carta de un miembro del grupo** para ver sus acciones. +2. **Arrastra una carta de acción sobre un objetivo** — la carta de un enemigo para un ataque, la de un aliado para una defensa. El objetivo indica si la acción se le puede aplicar. +3. Cuando el grupo se queda sin puntos de acción, actúan los enemigos y empieza una ronda nueva. + +![El registro de combate y el panel de acciones tras una ronda: Shield of Wolf absorbed 2; Power strike: Hero → Wolf · −19 HP; The party is out of action points; Enemy turn; Defence: Wolf · +4 DEF; Player turn · round 2.](assets/card-turn.jpg) + +El Power strike del héroe sacó 21: los 2 primeros los absorbió el escudo del lobo y su salud cayó 19, de 31 a 12. Después el lobo subió su escudo a 4. + +## Las acciones + +Card Battle ejecuta los mismos tipos básicos de acciones que FF Battle: + +- `Attack=1.5` — el daño del ataque multiplicado por el número; lo absorbe primero el escudo del objetivo; +- `Defence=4` — un escudo sobre un aliado; +- `Turn=2` — aturdimiento durante ese número de turnos. + +Las habilidades escritas como fórmulas (valores `Formula=`, como el Power strike de Classic RPG Rules) también funcionan aquí, mediante Battle Formulas. + +## Cómo elegir Card Battle + +En la colección del juego pon `"battle.core": "card_battle"`, o cambia de sistema desde un escenario antes del combate: + +```scenario +action battle.set_core core=card_battle +``` + +## Si algo sale mal + +1. **Arrastrar la carta no hace nada.** No hay personaje seleccionado, al personaje le faltan puntos de acción o el objetivo es del bando equivocado (los ataques van a los enemigos, las defensas a los aliados). +2. **El combate se abre en FF Battle.** El ajuste `battle.core` del juego nombra `ff_battle`. diff --git a/docs/ja.md b/docs/ja.md new file mode 100644 index 0000000..37b7aa5 --- /dev/null +++ b/docs/ja.md @@ -0,0 +1,47 @@ +# Card Battle —— カードをターゲットにドラッグする戦闘 + +Card Battle は、キャラクターが大きなカード、そのアクションが小さなカードとして表されるバトルシステムです。キャラクターを選び、そのアクションカードの一枚をターゲットへドラッグします。Cthangover のバトルシステムであり、RPG Plus は FF Battle の代わりにこれを使えます。戦闘そのもの——開始、背景、勝利・敗北の画面、経験値と戦利品——は Turn Battle Base が担います。 + +## 戦闘画面 + +RPG Plus の戦士対狼。英雄をクリックし、Power strike にカーソルを重ねたところです: + +![カードバトルの画面:左上に Card battle パネル(Round 1、Enemies alive 1)、右上に End turn ボタンと速度ボタン、右側に狼のカード(HP 31/31、DEF 2、ATK 7、AP 1)、左下に英雄のカード(HP 42/42、DEF 4、ATK 12、AP 1)、中央に戦闘ログ、そして Actions パネルには Basic attack・Defence・Power strike の3枚のカードとヒント「渾身の一撃:攻撃の1.5倍に力の値を少し上乗せ」。](assets/card-hover.jpg) + +- **キャラクターカード**には体力(HP)、シールド(DEF。ダメージを最初に引き受ける)、攻撃(ATK)、行動ポイント(AP)が表示されます。 +- **Actions パネル**——選択中キャラクターのアクションカードです。対象(敵か味方)、AP 消費、数値が示され、支払えないカードは薄く表示されます。 +- カードの下の**ヒント行**には、カーソルを合わせたカードの効果が出ます。通常攻撃ならダメージ、防御ならシールド、数式で書かれたスキルなら説明です。 +- **End turn** はパーティのターンを途中で終わらせます。AP が 0 になればターンは自然に終わります。 + +## ターンの流れ + +1. **パーティのカードをクリック**して、そのアクションを表示します。 +2. **アクションカードをターゲットへドラッグ**します。攻撃なら敵のカード、防御なら味方のカードです。その対象に効くかどうかはカード側で示されます。 +3. パーティの行動ポイントを使い切ると、今度は敵が行動し、新しいラウンドが始まります。 + +![1ラウンド後の戦闘ログとアクションパネル:Shield of Wolf absorbed 2/Power strike: Hero → Wolf · −19 HP/The party is out of action points/Enemy turn/Defence: Wolf · +4 DEF/Player turn · round 2。](assets/card-turn.jpg) + +英雄の Power strike は 21 のダメージ。最初の 2 は狼のシールドが受け止め、体力は 31 から 12 へと 19 減りました。その後、狼はシールドを 4 まで上げます。 + +## アクション + +Card Battle は、FF Battle と同じ基本種類のアクションを実行します: + +- `Attack=1.5`——攻撃ダメージに数値を掛けたもの。まず対象のシールドが受け止めます; +- `Defence=4`——味方にシールドを付与; +- `Turn=2`——そのターン数だけスタン。 + +数式で書かれたスキル(`Formula=` 値。Classic RPG Rules の Power strike など)も、Battle Formulas を通してここで機能します。 + +## Card Battle の選び方 + +ゲームのコレクション設定で `"battle.core": "card_battle"` を指定するか、戦闘前にシナリオから切り替えてください: + +```scenario +action battle.set_core core=card_battle +``` + +## うまくいかないときは + +1. **カードをドラッグしても何も起きない。** キャラクターが選ばれていない、行動ポイントが足りない、または対象の陣営が違います(攻撃は敵へ、防御は味方へ)。 +2. **戦闘が FF Battle で開く。** ゲームの `battle.core` 設定が `ff_battle` になっています。 diff --git a/docs/ko.md b/docs/ko.md new file mode 100644 index 0000000..e71694e --- /dev/null +++ b/docs/ko.md @@ -0,0 +1,47 @@ +# Card Battle — 카드를 대상에 끌어다 놓는 전투 + +Card Battle은 캐릭터가 큰 카드로, 그 행동은 더 작은 카드로 표현되는 전투 시스템입니다. 캐릭터를 고르고 행동 카드 하나를 대상에 끌어다 놓으세요. Cthangover의 전투 시스템이며, RPG Plus도 FF Battle 대신 이 시스템을 쓸 수 있습니다. 전투 자체 — 시작, 배경, 승리·패배 화면, 경험치와 전리품 — 은 Turn Battle Base가 맡습니다. + +## 전투 화면 + +RPG Plus의 전사가 늑대와 맞서는 장면입니다. 영웅을 클릭하고 Power strike에 마우스를 올려 둔 상태죠: + +![카드 전투 화면: 왼쪽 위에 Card battle 패널(Round 1, Enemies alive 1), 오른쪽 위에 End turn 버튼과 속도 버튼, 오른쪽에 늑대의 카드(HP 31/31, DEF 2, ATK 7, AP 1), 왼쪽 아래에 영웅의 카드(HP 42/42, DEF 4, ATK 12, AP 1), 가운데에 전투 로그, 그리고 Actions 패널에는 Basic attack·Defence·Power strike 세 장의 카드와 힌트 "전력으로 휘두르는 일격: 공격의 1.5배에 힘에서 조금 더".](assets/card-hover.jpg) + +- **캐릭터 카드**에는 체력(HP), 방어막(DEF, 피해를 먼저 흡수), 공격력(ATK), 행동력(AP)이 표시됩니다. +- **Actions 패널** — 선택한 캐릭터의 행동 카드 모음입니다. 대상(적 또는 아군), AP 소모, 수치가 표시되고, 캐릭터가 지불할 수 없는 카드는 흐리게 보입니다. +- 카드 아래의 **힌트 줄**에는 마우스를 올린 카드가 무엇을 하는지 나옵니다. 일반 공격은 피해, 방어는 방어막, 수식으로 쓰인 스킬은 설명이 표시됩니다. +- **End turn**은 파티 턴을 일찍 끝냅니다. AP가 0으로 떨어지면 턴은 저절로 끝납니다. + +## 한 턴의 진행 + +1. **파티원의 카드를 클릭**하면 그 캐릭터의 행동이 보입니다. +2. **행동 카드를 대상에 끌어다 놓습니다** — 공격은 적 카드에, 방어는 아군 카드에 놓습니다. 대상 쪽에 그 행동을 적용할 수 있는지 표시됩니다. +3. 파티의 행동력이 바닥나면 적들이 행동하고, 새 라운드가 시작됩니다. + +![한 라운드 후의 전투 로그와 행동 패널: Shield of Wolf absorbed 2; Power strike: Hero → Wolf · −19 HP; The party is out of action points; Enemy turn; Defence: Wolf · +4 DEF; Player turn · round 2.](assets/card-turn.jpg) + +영웅의 Power strike은 21의 피해를 냈습니다. 처음 2는 늑대의 방어막이 흡수했고, 체력은 31에서 12로 19 줄었습니다. 그러고는 늑대가 방어막을 4까지 올립니다. + +## 행동 + +Card Battle은 FF Battle과 같은 기본 행동 유형을 처리합니다: + +- `Attack=1.5` — 공격 피해에 그 수를 곱한 값입니다. 대상의 방어막이 먼저 흡수합니다; +- `Defence=4` — 아군에게 방어막을 겁니다; +- `Turn=2` — 그만큼의 턴 동안 기절. + +수식으로 쓰인 스킬(`Formula=` 값. Classic RPG Rules의 Power strike 등)도 Battle Formulas를 통해 여기서 작동합니다. + +## Card Battle 선택하기 + +게임 컬렉션 설정에 `"battle.core": "card_battle"`를 넣거나, 전투 전에 시나리오로 바꿔 주세요: + +```scenario +action battle.set_core core=card_battle +``` + +## 문제가 생겼을 때 + +1. **카드를 끌어다 놓아도 아무 일도 없음.** 캐릭터가 선택되지 않았거나, 행동력이 부족하거나, 대상 진영이 틀립니다(공격은 적에게, 방어는 아군에게). +2. **전투가 FF Battle로 열림.** 게임의 `battle.core` 설정이 `ff_battle`을 가리킵니다. diff --git a/docs/ru.md b/docs/ru.md new file mode 100644 index 0000000..d3dce82 --- /dev/null +++ b/docs/ru.md @@ -0,0 +1,47 @@ +# Card Battle — бои, где карты перетаскивают на цели + +Card Battle — боевая система, в которой персонажи — крупные карты, а их действия — карты поменьше: выберите персонажа и перетащите одну из его карт действий на цель. Это боевая система Cthangover, а RPG Plus может играть в неё вместо FF Battle. Сам бой — начало, фон, экраны победы и поражения, опыт и добыча — берётся из Turn Battle Base. + +## Экран боя + +Воин из RPG Plus против волка: герой нажат, курсор наведён на Power strike: + +![Экран карточного боя: слева вверху панель Card battle (Round 1, Enemies alive 1), справа вверху кнопка End turn и кнопки скорости, справа карта волка (HP 31/31, DEF 2, ATK 7, AP 1), слева внизу карта героя (HP 42/42, DEF 4, ATK 12, AP 1), посередине журнал боя, а также панель Actions с тремя картами — Basic attack, Defence, Power strike — и подсказкой «Полный замах: полторы атаки и ещё немного от силы».](assets/card-hover.jpg) + +- **Карты персонажей** показывают здоровье (HP), щит (DEF, поглощает урон первым), атаку (ATK) и очки действий (AP). +- **Панель Actions** — карты действий выбранного персонажа: цель (враг или союзник), стоимость в AP и значения. Карту, которую персонаж не может оплатить, видно приглушённой. +- **Строка подсказки** под картами объясняет, что сделает карта под курсором: урон для обычной атаки, щит для защиты, описание — для навыка, записанного формулой. +- **End turn** завершает ход отряда досрочно; когда AP кончаются (0), ход завершается сам. + +## Ход + +1. **Нажмите карту члена отряда**, чтобы увидеть его действия. +2. **Перетащите карту действия на цель** — карту врага для атаки, карту союзника для защиты. Цель подсвечивает, применимо ли к ней действие. +3. Когда у отряда кончаются очки действий, ходят враги, и начинается новый раунд. + +![Журнал боя и панель действий после одного раунда: Shield of Wolf absorbed 2; Power strike: Hero → Wolf · −19 HP; The party is out of action points; Enemy turn; Defence: Wolf · +4 DEF; Player turn · round 2.](assets/card-turn.jpg) + +Power strike героя снял 21: первые 2 поглотил щит волка, а здоровье упало на 19 — с 31 до 12. После этого волк поднял щит до 4. + +## Действия + +В Card Battle работают те же базовые виды действий, что и в FF Battle: + +- `Attack=1.5` — урон атаки, умноженный на число; первым его поглощает щит цели; +- `Defence=4` — щит на союзнике; +- `Turn=2` — оглушение на столько ходов. + +Навыки, записанные формулами (значения `Formula=`, например Power strike из Classic RPG Rules), тоже работают здесь — через Battle Formulas. + +## Как включить Card Battle + +В коллекции игры задайте `"battle.core": "card_battle"`, либо переключите систему сценарием до боя: + +```scenario +action battle.set_core core=card_battle +``` + +## Если что-то пошло не так + +1. **Перетаскивание карты ничего не делает.** Не выбран персонаж, у него не хватает очков действий либо цель с другой стороны (атаки — на врагов, защиты — на союзников). +2. **Бой открывается в FF Battle.** В настройке игры `battle.core` прописан `ff_battle`. diff --git a/docs/vi.md b/docs/vi.md new file mode 100644 index 0000000..10389fe --- /dev/null +++ b/docs/vi.md @@ -0,0 +1,47 @@ +# Card Battle — trận chiến dùng thẻ kéo thả vào mục tiêu + +Card Battle là hệ thống chiến đấu trong đó nhân vật là những thẻ cỡ lớn còn kỹ năng của họ là những thẻ nhỏ hơn: chọn một nhân vật, rồi kéo một thẻ hành động của nhân vật đó vào mục tiêu. Đây là hệ thống chiến đấu của Cthangover, và RPG Plus cũng có thể dùng nó thay cho FF Battle. Còn bản thân trận chiến — khởi đầu, nền, màn hình thắng thua, kinh nghiệm và chiến lợi phẩm — do Turn Battle Base đảm nhiệm. + +## Màn hình chiến đấu + +Chiến binh RPG Plus đấu với sói, sau khi nhấp vào anh hùng và rê chuột lên Power strike: + +![Màn hình chiến đấu thẻ bài: bảng Card battle (Round 1, Enemies alive 1) ở trên trái, nút End turn và các nút tốc độ ở trên phải, thẻ của con sói bên phải (HP 31/31, DEF 2, ATK 7, AP 1), thẻ của anh hùng dưới trái (HP 42/42, DEF 4, ATK 12, AP 1), nhật ký chiến đấu ở giữa và bảng Actions với ba thẻ — Basic attack, Defence, Power strike — kèm gợi ý "Vung trọn đòn: một lần rưỡi sát thương và thêm một chút từ sức mạnh".](assets/card-hover.jpg) + +- **Thẻ nhân vật** hiển thị máu (HP), lớp khiên (DEF, hấp thụ sát thương trước), sát thương (ATK) và điểm hành động (AP). +- **Bảng Actions** — các thẻ hành động của nhân vật đang chọn, kèm mục tiêu (địch hoặc đồng đội), giá AP và các giá trị. Thẻ nào nhân vật không trả nổi sẽ bị mờ đi. +- **Dòng gợi ý** dưới các thẻ cho biết thẻ đang rê chuột sẽ làm gì: sát thương của đòn đánh thường, lớp khiên của phép phòng thủ, mô tả của kỹ năng viết bằng công thức. +- **End turn** kết thúc sớm lượt của đội; khi hết AP (còn 0), lượt tự kết thúc. + +## Diễn biến một lượt + +1. **Nhấp vào thẻ của một thành viên đội** để xem các hành động của họ. +2. **Kéo thẻ hành động vào mục tiêu** — thẻ địch để tấn công, thẻ đồng đội để phòng thủ. Mục tiêu sẽ cho biết hành động đó có áp dụng được lên nó hay không. +3. Khi đội hết điểm hành động, quân địch sẽ hành động và một vòng mới bắt đầu. + +![Nhật ký chiến đấu và bảng hành động sau một vòng: Shield of Wolf absorbed 2; Power strike: Hero → Wolf · −19 HP; The party is out of action points; Enemy turn; Defence: Wolf · +4 DEF; Player turn · round 2.](assets/card-turn.jpg) + +Power strike của anh hùng gây 21 sát thương: phần đầu là 2 điểm lớp khiên của sói hấp thụ, máu tụt 19, từ 31 xuống 12. Sau đó con sói nâng lớp khiên lên 4. + +## Các hành động + +Card Battle xử lý những loại hành động cơ bản giống hệt FF Battle: + +- `Attack=1.5` — sát thương của đòn đánh nhân với con số; lớp khiên của mục tiêu hấp thụ trước; +- `Defence=4` — đặt lớp khiên lên đồng đội; +- `Turn=2` — khiến mục tiêu choáng đúng số lượt đó. + +Kỹ năng viết bằng công thức (giá trị `Formula=`, chẳng hạn Power strike của Classic RPG Rules) cũng hoạt động ở đây thông qua Battle Formulas. + +## Chọn Card Battle + +Trong bộ sưu tập của game, đặt `"battle.core": "card_battle"`, hoặc đổi hệ thống từ kịch bản trước trận đấu: + +```scenario +action battle.set_core core=card_battle +``` + +## Khi có sự cố + +1. **Kéo thẻ mà chẳng có gì xảy ra.** Chưa chọn nhân vật, nhân vật không đủ điểm hành động, hoặc mục tiêu sai phe (đòn đánh dành cho địch, phép phòng thủ dành cho đồng đội). +2. **Trận chiến mở bằng FF Battle.** Thiết lập `battle.core` của game đang chỉ `ff_battle`. diff --git a/docs/zh.md b/docs/zh.md new file mode 100644 index 0000000..edf70b7 --- /dev/null +++ b/docs/zh.md @@ -0,0 +1,47 @@ +# Card Battle —— 把卡牌拖到目标上进行战斗 + +Card Battle 是一套战斗系统:角色是一张张大的卡牌,他们的动作则是更小的卡牌——先选中角色,再把一张动作卡拖到目标上。它是 Cthangover 的战斗系统,RPG Plus 也可以用它替代 FF Battle。而战斗本身——发起、背景、胜利与失败画面、经验和掉落——都来自 Turn Battle Base。 + +## 战斗画面 + +RPG Plus 的战士对阵狼:点击英雄后,光标悬停在 Power strike 上: + +![卡牌战斗画面:左上角是 Card battle 面板(Round 1、Enemies alive 1),右上角是 End turn 按钮和倍速按钮,右侧是狼的卡牌(HP 31/31、DEF 2、ATK 7、AP 1),左下角是英雄的卡牌(HP 42/42、DEF 4、ATK 12、AP 1),中间是战斗日志,下方 Actions 面板里有三张卡——Basic attack、Defence、Power strike——以及提示「全力一击:1.5 倍攻击,再加一点力量加成」。](assets/card-hover.jpg) + +- **角色卡**显示生命(HP)、护盾(DEF,优先吸收伤害)、攻击(ATK)和行动点(AP)。 +- **Actions 面板**——所选角色的动作卡,标明目标(敌人或队友)、AP 消耗和数值。角色付不起的卡会变暗。 +- 卡片下方的**提示行**说明鼠标所指卡片的效果:普通攻击显示伤害,防御显示护盾,公式技能则显示描述。 +- **End turn** 可提前结束队伍回合;AP 用到 0 时回合会自动结束。 + +## 一个回合的流程 + +1. **点击队伍成员的卡牌**,查看其可用动作。 +2. **把动作卡拖到目标上**——攻击拖到敌人卡上,防御拖到队友卡上。目标会显示该动作是否适用于它。 +3. 队伍的行动点用完后,敌人开始行动,新一轮开始。 + +![一个回合后的战斗日志和动作面板:Shield of Wolf absorbed 2;Power strike: Hero → Wolf · −19 HP;The party is out of action points;Enemy turn;Defence: Wolf · +4 DEF;Player turn · round 2。](assets/card-turn.jpg) + +英雄的 Power strike 打出 21 点:狼的 2 点护盾先被消耗,生命随之下降 19,从 31 降到 12。随后狼把护盾提升到 4。 + +## 动作类型 + +Card Battle 执行与 FF Battle 相同的几种基础动作: + +- `Attack=1.5`——攻击伤害乘以该数值;优先被目标的护盾吸收; +- `Defence=4`——给队友加护盾; +- `Turn=2`——眩晕相应的回合数。 + +以公式书写的技能(`Formula=` 值,比如 Classic RPG Rules 的 Power strike)经由 Battle Formulas 在这里同样有效。 + +## 选择 Card Battle + +在游戏的合集设置中写入 `"battle.core": "card_battle"`,或者在战斗前用剧本切换: + +```scenario +action battle.set_core core=card_battle +``` + +## 出问题怎么办 + +1. **拖动卡牌没有反应。** 可能没有选中角色、角色的行动点不足,或者目标阵营不对(攻击拖到敌人身上,防御拖到队友身上)。 +2. **战斗以 FF Battle 打开。** 游戏的 `battle.core` 设置指定的是 `ff_battle`。 diff --git a/locale/collection_settings_en.properties b/locale/collection_settings_en.properties new file mode 100644 index 0000000..d671cff --- /dev/null +++ b/locale/collection_settings_en.properties @@ -0,0 +1 @@ +collection_settings/cards = Card battles diff --git a/locale/collection_settings_es.properties b/locale/collection_settings_es.properties new file mode 100644 index 0000000..1d439d5 --- /dev/null +++ b/locale/collection_settings_es.properties @@ -0,0 +1 @@ +collection_settings/cards = Combate con cartas diff --git a/locale/collection_settings_ja.properties b/locale/collection_settings_ja.properties new file mode 100644 index 0000000..0cdf23f --- /dev/null +++ b/locale/collection_settings_ja.properties @@ -0,0 +1 @@ +collection_settings/cards = カードバトル diff --git a/locale/collection_settings_ko.properties b/locale/collection_settings_ko.properties new file mode 100644 index 0000000..256f93c --- /dev/null +++ b/locale/collection_settings_ko.properties @@ -0,0 +1 @@ +collection_settings/cards = 카드 전투 diff --git a/locale/collection_settings_ru.properties b/locale/collection_settings_ru.properties new file mode 100644 index 0000000..129e27a --- /dev/null +++ b/locale/collection_settings_ru.properties @@ -0,0 +1 @@ +collection_settings/cards = Карточные бои diff --git a/locale/collection_settings_vi.properties b/locale/collection_settings_vi.properties new file mode 100644 index 0000000..67374b7 --- /dev/null +++ b/locale/collection_settings_vi.properties @@ -0,0 +1 @@ +collection_settings/cards = Chiến đấu thẻ bài diff --git a/locale/collection_settings_zh.properties b/locale/collection_settings_zh.properties new file mode 100644 index 0000000..9e45771 --- /dev/null +++ b/locale/collection_settings_zh.properties @@ -0,0 +1 @@ +collection_settings/cards = 卡牌战斗 diff --git a/locale/en.properties b/locale/en.properties new file mode 100644 index 0000000..cc50462 --- /dev/null +++ b/locale/en.properties @@ -0,0 +1,2 @@ +mod_card_battle_name = Card Battle +mod_card_battle_desc = A battle system with cards: pick a character card and drag its action cards onto targets. Built on Turn Battle Base; the battle of Cthangover. diff --git a/locale/es.properties b/locale/es.properties new file mode 100644 index 0000000..6df7b44 --- /dev/null +++ b/locale/es.properties @@ -0,0 +1,2 @@ +mod_card_battle_name = Batalla de cartas +mod_card_battle_desc = Un sistema de combate con cartas: elige la carta de un personaje y arrastra sus cartas de acción sobre los objetivos. Construido sobre Turn Battle Base; el combate de Cthangover. diff --git a/locale/ja.properties b/locale/ja.properties new file mode 100644 index 0000000..d36c6c1 --- /dev/null +++ b/locale/ja.properties @@ -0,0 +1,2 @@ +mod_card_battle_name = カードバトル +mod_card_battle_desc = カードを使うバトルシステム。キャラクターカードを選び、そのアクションカードをターゲットにドラッグします。Turn Battle Base の上に構築された、Cthangover の戦闘です。 diff --git a/locale/ko.properties b/locale/ko.properties new file mode 100644 index 0000000..e5a0c79 --- /dev/null +++ b/locale/ko.properties @@ -0,0 +1,2 @@ +mod_card_battle_name = 카드 배틀 +mod_card_battle_desc = 카드를 사용하는 전투 시스템입니다. 캐릭터 카드를 고르고 행동 카드를 대상에 끌어다 놓으세요. Turn Battle Base 기반이며, Cthangover의 전투입니다. diff --git a/locale/ru.properties b/locale/ru.properties new file mode 100644 index 0000000..3758cf2 --- /dev/null +++ b/locale/ru.properties @@ -0,0 +1,2 @@ +mod_card_battle_name = Карточные битвы +mod_card_battle_desc = Боевая система на картах: выберите карту персонажа и перетащите его карты действий на цели. Построена на Turn Battle Base; бой игры Cthangover. diff --git a/locale/ui_en.properties b/locale/ui_en.properties index 3124775..12d6128 100644 --- a/locale/ui_en.properties +++ b/locale/ui_en.properties @@ -1,5 +1,3 @@ -mod_card_battle_name=CardBattle -mod_card_battle_desc=Card battle implementation on top of turn_battle_base: an action-card hand with attack/defence values, character cards, battle HUD, log and banners, end-turn flow and its own battle sounds. battle/end_turn=End turn diff --git a/locale/ui_es.properties b/locale/ui_es.properties index ab68436..d49ec41 100644 --- a/locale/ui_es.properties +++ b/locale/ui_es.properties @@ -1,5 +1,3 @@ -mod_card_battle_name = CardBattle -mod_card_battle_desc = Combate de cartas sobre turn_battle_base: una mano de cartas de acción con valores de ataque y defensa, cartas de personaje, HUD de combate, registro y rótulos, el flujo de fin de turno y sus propios sonidos. battle/end_turn = Terminar turno diff --git a/locale/ui_ja.properties b/locale/ui_ja.properties index 17a46db..4be5696 100644 --- a/locale/ui_ja.properties +++ b/locale/ui_ja.properties @@ -1,5 +1,3 @@ -mod_card_battle_name = CardBattle -mod_card_battle_desc = turn_battle_base 上のカードバトル:攻撃/防御値を持つアクションカードの手札、キャラクターカード、バトル HUD、ログとバナー、ターン終了の流れ、専用のバトル効果音。 battle/end_turn = ターン終了 diff --git a/locale/ui_ko.properties b/locale/ui_ko.properties index cfc8890..8bef402 100644 --- a/locale/ui_ko.properties +++ b/locale/ui_ko.properties @@ -1,5 +1,3 @@ -mod_card_battle_name = CardBattle -mod_card_battle_desc = turn_battle_base 위의 카드 전투: 공격/방어 수치가 있는 액션 카드 패, 캐릭터 카드, 전투 HUD, 로그와 배너, 턴 종료 흐름, 자체 전투 효과음. battle/end_turn = 턴 종료 diff --git a/locale/ui_ru.properties b/locale/ui_ru.properties index d7205a1..eeca0c5 100644 --- a/locale/ui_ru.properties +++ b/locale/ui_ru.properties @@ -1,5 +1,3 @@ -mod_card_battle_name=Карточная битва -mod_card_battle_desc=Карточные сражения на платформе turn_battle_base: рука боевых карточек (атака/защита), карточки персонажей, боевой HUD, лог и баннеры, завершение хода и свои звуки боя. battle/end_turn=Конец хода diff --git a/locale/ui_vi.properties b/locale/ui_vi.properties index add6dbd..347ae79 100644 --- a/locale/ui_vi.properties +++ b/locale/ui_vi.properties @@ -1,5 +1,3 @@ -mod_card_battle_name = CardBattle -mod_card_battle_desc = Chiến đấu bằng thẻ trên nền turn_battle_base: bộ thẻ hành động có chỉ số tấn công/phòng thủ, thẻ nhân vật, HUD chiến đấu, nhật ký và băng rôn, quy trình kết thúc lượt và âm thanh chiến đấu riêng. battle/end_turn = Kết thúc lượt diff --git a/locale/ui_zh.properties b/locale/ui_zh.properties index b21d3f4..80b43e6 100644 --- a/locale/ui_zh.properties +++ b/locale/ui_zh.properties @@ -1,5 +1,3 @@ -mod_card_battle_name = CardBattle -mod_card_battle_desc = 基于 turn_battle_base 的卡牌战斗:带攻击/防御数值的行动卡手牌、角色卡、战斗 HUD、日志和横幅、结束回合流程以及自己的战斗音效。 battle/end_turn = 结束回合 diff --git a/locale/vi.properties b/locale/vi.properties new file mode 100644 index 0000000..ed5aecb --- /dev/null +++ b/locale/vi.properties @@ -0,0 +1,2 @@ +mod_card_battle_name = Chiến đấu thẻ bài +mod_card_battle_desc = Hệ thống chiến đấu bằng thẻ bài: chọn thẻ nhân vật rồi kéo các thẻ hành động của họ vào mục tiêu. Xây trên Turn Battle Base; trận chiến của Cthangover. diff --git a/locale/zh.properties b/locale/zh.properties new file mode 100644 index 0000000..2ac7dd6 --- /dev/null +++ b/locale/zh.properties @@ -0,0 +1,2 @@ +mod_card_battle_name = 卡牌战斗 +mod_card_battle_desc = 以卡牌进行的战斗系统:选中角色卡,再把它的动作卡拖到目标上。基于 Turn Battle Base 构建;Cthangover 的战斗。 diff --git a/manifest.json b/manifest.json index 9bf405c..b35aeaf 100644 --- a/manifest.json +++ b/manifest.json @@ -1,9 +1,9 @@ { "id": "card_battle", - "name": "CardBattle", + "name": "Card Battle", "version": "1.0.0", "author": "ct", - "description": "Card battle implementation on top of turn_battle_base: an action-card hand with attack/defence values, character cards, battle HUD, log and banners, end-turn flow and its own battle sounds.", + "description": "A battle system with cards: pick a character card and drag its action cards onto targets. Built on Turn Battle Base; the battle of Cthangover.", "category": "gameplay", "sources": [ "src/**/*.cs" diff --git a/src/CardBattleCore.cs b/src/CardBattleCore.cs index 456a31d..bb54331 100644 --- a/src/CardBattleCore.cs +++ b/src/CardBattleCore.cs @@ -170,7 +170,7 @@ namespace Cthangover.CardBattle } _screen.Hud.SetEnemiesAlive(CountAlive(_enemyPanel)); - BattleLogHub.Log(string.Format(Translate("battle/log_dead"), card.Card.Name), BattleLogKind.Dead); + BattleLogHub.Log(string.Format(Translate("battle/log_dead"), Translate(card.Card.Name)), BattleLogKind.Dead); } private void StartPlayerTurn() @@ -275,7 +275,7 @@ namespace Cthangover.CardBattle card.UpdateInfo(); card.PlayZap(); BattleLogHub.Log( - string.Format(Translate("battle/log_stun_skip"), card.Card.Name), + string.Format(Translate("battle/log_stun_skip"), Translate(card.Card.Name)), BattleLogKind.Status); continue; } @@ -296,9 +296,9 @@ namespace Cthangover.CardBattle { BattleLogHub.Log( string.Format(Translate("battle/log_enemy_action"), - card.Card.Name, + Translate(card.Card.Name), ActionCharacterUi.Translate(action.Name), - target.Card.Name), + Translate(target.Card.Name)), BattleLogKind.Info); } diff --git a/src/UI/ActionCardNode.cs b/src/UI/ActionCardNode.cs index c9aaeb4..637b2f0 100644 --- a/src/UI/ActionCardNode.cs +++ b/src/UI/ActionCardNode.cs @@ -119,7 +119,8 @@ namespace Cthangover.CardBattle.UI /// /// Builds the hint printed in the actions panel when the card is /// hovered: the expected effect computed from the source character's - /// stats ("Урон 5 (АТК 5 × 1.0) · расход 1 ОД"). + /// stats ("Урон 5 (АТК 5 × 1.0) · расход 1 ОД"); an enemy action without an + /// Attack multiplier (a formula skill) shows its own description instead. /// public string DescribeFrom(Character source) { @@ -132,6 +133,12 @@ namespace Cthangover.CardBattle.UI if (Card.Type == ActionCharacterType.ToEnemy) { + if (Card.GetFloat("Attack", 0f) <= 0f) + { + var description = ActionCharacterUi.StripMarkup(ActionCharacterUi.Translate(Card.Description)); + if (!string.IsNullOrEmpty(description)) + return description; + } var multiplier = Card.GetFloat("Attack", 1f); var damage = Mathf.RoundToInt(multiplier * source.Attributes.Attack.Value); return string.Format(