Markdownを本格的に書き始めてから習いだしたmermaid記法。ボードゲームのルールを表現するにはもってこいでしたので、

自分が一番好きな重ゲーの一つである『大鎌戦役』の戦闘に焦点を合わせたいと思います。

通常戦闘のフローチャート

sequenceDiagram title: 戦闘の通常ルール participant a as 攻撃側 participant d as 防御側 a->>d: 攻撃ユニットが<br>戦闘可能ユニットの<br>ヘックスに侵入 opt 戸川の罠が発動 note over a: 罠の処理を解決 end note over a: 移動完了 note over a,d: 侵入したヘックスで戦闘開始 opt ヘックスが複数ある場合 note over a: 戦闘の順番を指定 end opt メック能力開放済みの場合 note over a,d: 能力の処理を解決<br>砲術[ノルディック]<br>斥候[クリミア]など end note over a,d: 戦闘ダイアルを秘密裏に指定(最大7) opt 戦闘カードを用いる場合 note over a,d: 戦闘カードをユニットの数だけ<br>裏向きで公開 opt 戦闘カードを追加できる場合[ロスヴィエトなど] note over a,d: 条件に応じて<br>戦闘カード追加 end end note over a,d: 戦力値を互いに公開<br>戦力値+カードの数値合計 note over a,d: 勝敗判定 alt 合計値が異なっていた場合 note over a,d: 数値が高い勢力の勝利 else 合計値が同じ場合 note over a: 攻撃側の勝利 note over d: 防御側の敗北 end note right of a: 戦闘終了処理 note over a,d: ダイアルで指定した分だけ戦力を減らす note over a,d: 利用した戦闘カードを捨て札 alt 攻撃側の勝利(防御側にワーカーがいない) note over d: ユニットが本拠地に撤退 d-->>a:資源は攻撃側が所有 else 攻撃側の勝利(防御側にワーカーがいる) note over d: ユニットとワーカーが本拠地に撤退 d-->>a:資源は攻撃側が所有 note over a: ワーカーの数だけ支持減少 opt ポラニアの場合(友愛解放済み) note over d: ユニットとワーカーが本拠地に撤退 d-->>a:資源は攻撃側が所有 note over a: ワーカーがいても<br>支持は減少しない end else 防御側の勝利 note over a: 戦闘ユニットが本拠地に撤退 opt メックがワーカーを乗せていた note over a: メックとワーカーが本拠地に撤退 end opt メックが資源を運んでいた note over a: 資源は侵入したヘックスにとどまる a-->>d: 資源は防御側が所有 end end note over a,d: 戦闘終了 alt 勝者側が戦闘による星章を1つまでしか獲得していない note over a,d: 勝者側が戦闘による星章を獲得 else 勝者側が戦闘による星章を2つ獲得している note over a,d: 星章は獲得されない opt ザクセン帝国が勝利した note over a,d: 戦闘による星章を獲得 end end

と、感覚で「ダイヤル設定してカードと合わせるだけ」思ってましたが、

  • メック能力解放による事前処理
  • 戦闘終了後の処理

が複雑。この、複雑さがまた醍醐味ではあります。

戦闘撤退時のノルディック

で、このフローでは書ききれなかったノルディック(北方)王国は以下のような条件分岐が発生します。

graph TD S[ノルディックが敗北]-->I{航海適正} I--未解放-->R(本拠地に撤退) I--解放済み-->L{湖} L--が隣接していない-->R L--で戦って敗北した-->R L--が隣接している-->j{隣接した湖に<br>敵ユニットが} j--いる-->R j--いない-->e>隣接した湖に<br>移動可能]

割合に条件が厳し目な用に見えますが、標準マップは湖が思いのほか多いので逃げられやすいというのが厄介です。

まとめ

基本セットwith『彼方よりの侵攻』はまだルールがわかりやすいので、このペースで行けばすべてのルールをmermaid記法で書けそうです。

(次のページから、どうやって書いたかを記します)