Skip to content

ダイスコマンドの拡張案 #82

Description

@tsrkzy

要件

  • データテーブルの参照
  • データテーブルの更新
  • ダイス結果やデータテーブルの値を別のダイスで使用できる、動的なダイスコマンド
  • 通常のチャットの中にダイスコマンドを埋め込む、動的なチャット

インライン構文(案)

[@#]{[STAT[:=]]EXPR}

STAT = データテーブルの項目名
EXPR = インライン構文、ダイスコマンド、データテーブル参照

![STAT[:=]]EXPR

インラインを1つのみ記載する場合用のシンタックスシュガー。
#{[STAT[:=]]EXPR}と等価。

ダイスの結果はすべて出力する。以下の例では長くなるので省略して書いた。

インラインダイス

目標値はそれぞれ@{1d6}、#{2+1d6}です

1d6: 7
2+1d6: 9
目標値はそれぞれ7、(2+1d6=)9です

データテーブル参照

与えるダメージはそれぞれ@{2+@{ATK}d6}、@{2+@{@{ATK}+2}d6}です

ATK: 1
2+1d6: 5
ATK+2: 3
2+3d6: 13
与えるダメージはそれぞれ5、13です

データテーブル変更

: で加算

被ダメージ1D6が2回、HPは@{HP:-1D6}、@{HP:-1D6}へ

-1D6: 3
HP: 30-3
HP: 27-3
被ダメージ1D6が2回、HPは27、24へ

= で代入

初期MPを1D6で決定します @{MP=1D6}

1D6: 3
MP: 3
初期MPを1D6で決定します 3

別のインラインダイスの返り値を参照しデータテーブル変更

ラベルは [a-z] にマッチする小文字のみ

被ダメージは#a{1d6}、HPは@{HP:-##{a}}へ
1d6: 3 #a
HP: 30-3

被ダメージは(a: 1d6=)3、HPは27へ

インラインダイスの結果をダイスコマンドに接続

@{1d6}d6 ダメージ算出

1d6: 3
3d6: 11

エラー処理

基本的に、正常OKの場合のみデータテーブル変更や結果のチャット出力を行う
正常NG、異常のケースは他の人には感知できないようにする

.result でパース

const bcdice_response = {
  "ok":             true,
  "result":         ": KeyNo.14c[9]+5 > 2D:[6,5 3,6 5,5 1,1]=11,9,10,2 > 7,5,6,**+5 > 3回転 > 23", // parse it
  "secret":         false,
  "dices":          [
    {
      "faces": 6,
      "value": 6
    }
  ],
  "detailed_rands": [
    {
      "kind":  "normal",
      "sides": 6,
      "value": 6
    }
  ]
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions