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さえ追跡すれば誰がどれくらいの値を出したか確認できるっぽい。