grblくんのプロトコルっぽい部分

TypeScript向けに必要そうな箇所だけ抜いたインターフェイスを書いてます。

パブリックな場所に置くとDCMA受けそうな予感がするので公開はしません。変数名にも著作権があるという点は否定しないので、こればっかりはすみません。

ただまあ、私の知り合いに私的利用の範囲で見せる程度ならグレーだと思うので、気になる人は声かけてください。

初期値

ページを開いたときに取ってくる色んな情報。start.jsonくんです

なぜか他プレイヤーのHPとか取れる。どうして……? あとlyriaの存在をチェックする変数がある。尊い。

raidid

urlで/#raid_multi/{raid_id}となるやつ。少なくとも各プレイヤーにおいてはユニークだと思って良さそう。

player

プレイヤーの編成。player.paramがArrayになっていて、nameとかhpmaxあたりが取れる。

summon

召喚石。nameとかrecast、requireあたりが取れる。

通常攻撃

通常攻撃は皆さんご存知の通りnormal_attack_result.jsonで処理されています

scenarioの中のcmdが何をしているかの指定になっています。下記にざっくりわかったところを書きます。あんまいらなさそうなところは書きません。

scenario内cmdリスト

condition

おそらく表示上の調整。攻撃ボタンを押してからバフ・デバフが付いたように見えるのはこの処理があるから。

あとは奥義効果とかもこれで付与されてるっぽい。

wait

同上。攻撃ボタンを押してバフ・デバフなどを調整したあとごく短時間のウェイトがかかっているのはこれによる。

attack

通常攻撃。damage: Array<Array<Object>>がキモで、連撃と追撃をここで解決している。

ちなみに敵からの攻撃も同一のこのコマンドから発生している。

special_npc

おそらく奥義と思われる。トータルには表示用の文字列しかないので、計算にはlist(Array)をforEachしてlist[i].damage[0].valueがいいんじゃないかな。

ちょっとtotalもそうだけど、なぜArrayになっているかわからないので、キャラクターによって変わることを踏まえて二重forEachにしていい気もする。

recast

おそらく奥義ゲージの蓄積を示しているっぽい。

modechange

敵のモードゲージ。%で見れるけど手元だとそこまで細かく見えないのでかき消す予定。

heal

吸収とかによる回復。

ability

トリガ系とかこれで発動する。

damage

奥義追加ダメージとかがこれに当たるっぽい。誰が打ったのか情報を持っていないので、コンテキストから判断するしかないかも……?

構造はhealとほぼ同じで、インターフェイス流用している感じがすごい。

アビリティ

実 家 の よ う な a b i l i t y _ r e s u l t . j s o n

はい。こいつはクソ厄介です。なぜかというとscenarioが奇怪な動きをするからです……。

scenarioはnormal_attack_result.jsonのようにArrayで、新しく発動したアビリティが[0]側にあるんですけど、途中に空のArrayが挟み込まれ、それ以降にいつのだかわからないコマンドが出現します。

なんとなく見た感じだとstatusっぽいんですけど、statusは別にあるんですよね……マジで謎。

あと、誰が打ったかはposで確認できるんですけど、何個目のアビかは判断できないので、リキャは別途statusから引っ張るしかなさそう。

ざっくり見た感じだけど、cmd: damage, healさえ追跡すれば誰がどれくらいの値を出したか確認できるっぽい。