Roll20
https://roll20.net/Roll20を使いながらメモをしていく予定。
キャラクターのアトリビュート、アビリティ、マクロの違いが分かりにくいのでメモ
アトリビュート Attribute
キャラクターの記録項目。基本数字だが文字項目でもOK。curとmaxがセットになっている。能力値、技能値、ヒットポイントなど。項目名で括れるものはすべてアトリビュート。
チャットの@コマンドで参照できる。
アビリティ Ability
アビリティーとどう違うの?と思うかもしれないけど、日本だとチャットパレットっていったほうが通りが良い。マクロやセリフを登録して、ボタンクリックやチャットの%コマンドで実行できる。
#決めゼリフ1
マクロ
プレイヤー用のマクロ登録。ボタンクリックやチャットの#コマンドで実行できる。
マスターの登録したマクロはプレイヤーに公開することもできる。
ハンドアウからチャットコマンドやマクロを呼び出すことが出来る
Roll20のチャットコマンドはリンクとして挿入できる。URLのバッククォート。
ただし各自の設定メニューの「Character popout windows」にチェックがついてると機能せず、Page Not Found になる。
★これ最初ハマるので注意。
selectedとtarget
チャットやマクロで@{selected|mp_cur}などと打つと、選択しているキャラクターのmp現在値が参照できる。これを元に計算式を組むと、能力を組み合わせた判定が自由に記述できる。
@{target|mp_cur}であれば、チャットやマクロを実行した後に、目標を選択するモードになって、目標を選択してから目標のアトリビュートに対して判定することもできる。
【vsMP】@{selected|token_name} vs @{target|token_name}
/roll 1d100<[[((@{selected|mp_cur}-@{target|mp_cur})*5)+50]]
公開されているAPIのインストール
APIというとコード書かなきゃいけないみたいだけど、人の作ったAPIを利用できるという機能。ワンクリックで機能が増える。
HPがゼロになったら死亡マークがつけられるものとかある。
APIの開発
こっちは自分でコードを書くほう。今書いているものを整えたらgitで公開していきます。
キャラクター名とトークン名
キャラクター名character_nameはキャラクターシートのName欄。キャラクターシートをEditにしたときに最初に出てくるNameと、BasicタブにあるNameは同じデータを見てる。トークン名token_nameはトークンをダブルクリックしたときに開くトークン名。トークンの名前表示をONにしたときに表示されるのはこっち。
チャットで指定できるのはキャラクター名で、トークン名で指定はできない。
キャラクター名に二つ名とかつけたくなるけど、チャットで指定しにくいので略称にしておくのが無難。
困ってること
「ゲームをコピー」したときに、APIスクリプトがコピーされない。もしかしたら方法があるのかもしれないけど、まだ調べきってない。
とりあえず、ゲームをコピーして、そっちをセッションのバックアップとして考えることにする。
次のゲームはいまの盤面からスタート。
キャラクター保管庫
あとで書く。GMがサブスクリプションに加入してれば、出入り自由にできる。よく使うヘルプ
チャット https://help.roll20.net/hc/en-us/articles/360039675093-Text-Chatダイス https://help.roll20.net/hc/en-us/articles/360037773133-Dice-Reference
マクロ https://help.roll20.net/hc/en-us/articles/360037256794-Macros
API https://help.roll20.net/hc/en-us/articles/360037256714-API
APIから利用できるタグ
<code><span><div><label><a><br><br /><p><b><i><del><strike><u><img>
<blockquote><mark><cite><small><ul><ol><li><hr><dl><dt><dd><sup>
<sub><big><pre><figure><figcaption><strong><em><table><tr><td><th>
<tbody><thead><tfoot><h1><h2><h3><h4><h5><h6>
忘れがちなことをメモ
- E+ホイールでトークン回転
- 移動時にQを押すと中間点をマーク。移動後にXを押すと初期位置から最終位置まで中間点経由の距離を表示。
動的照明
- GMはトークン選択してCtrl+Lで、そのトークンから見た視界にできる。よくヘルプから探せなくなるので書いておく。
MAP作りのコツ
- MAPの壁は黒ではなく、明るめの色にする。動的照明で遮られて黒いのかMAPの壁で黒いのかわからん。本当は動的照明で隠される領域が灰色になるのが良いと思う。
- 動的照明レイヤーの壁は水色、扉は赤がよい。黒とかで線を引くとMAPととっさに見分けがつかない。
- 扉を遮るオブジェクトは、扉の厚みの「向こう側」に置く。プレイヤーから見た時に扉か壁なのかわかりづらい。
- 「トークンドロップ時に更新する」はONのほうがプレイヤーの体感がよい。プレイヤーがトークンをひょいひょい動かして探索できてしまうので、情報開示とのかねあいで。
- 暗視があってもなくても、「暗視」を1m設定したほうが良い。プレイヤーが自分のトークンが探せない。
- とにかく「空間がない」のか、「視界が遮断されている」のかの区別をどうつけるかがポイント。光が回り込んでくれると最高なんだけど、重くなりそうだから実装されなさそう。
狭間用Roll20関連情報
めちゃくちゃ重要
ゲーム起動した状態で[設定]-[Personalization & Display]-[Character popout windows]のチェックを外すこと。これをやっていないとキャラクターシートがリアルタイムに更新されないので、キャラクターシート更新系のいろんなAPIが動かないように見えちゃう。
動作の違いは、ブラウザの親ウインドウの範囲外にキャラクターシートを移動できるかどうか。
チェックを外すと親ウインドウの外へ移動できなくなるので、マルチモニタの場合ブラウザを複数タブ開いて、それぞれ別モニタにタブを持っていくのがよい。
開発方針メモ
キャラクターの特定は必ずmsg.whoを起点とする。APIでsendChatを使うときはそこに気を付ける。
キャラクター名は便宜上短いものを使い、正式な名前はbioに書く。
キャラクター名は一意になるようにあとでチェック関数作る。
実装されているAPI
技能ロール
!rqn 技能成功率,キャラクター名,判定の前に表示する文字
ハウスルールの決定的成功段階やファンブル段階も含まれている。77はこれから。
例えば共通マクロに登録されている「視力」は
!rqn [[@{selected|scan_total}]],@{selected|character_name},視力
第二引数と第三引数は、チャットに表示させるための文字列を取るだけ。
!rqn @{selected|scan_total} }}
などとすることで自分のキャラクターの「視力」ロールになる。
***対抗ロール
#highlight(){ !rqvs 能力値,倍率 }
***倍率ロール
#highlight(){ !rqx 攻撃能力値,目標値 }
***攻撃ロール
#highlight(){{ !rqatk s,0,@{select|character_name},@{target|character_name}
上記のままAbility欄にコピペで、自分のキャラクターを選択してトークンマクロボタンから実行して敵を選択する。
1.自分には最初に攻撃の成功度とダメージが表示される。(他の人には表示されない)
2.攻撃された相手に「防御選択」ボタンが表示される。(他の人には表示されない)
3.相手が防御選択をすると攻撃と防御の結果が表示され、攻撃が命中した場合は目標に「ダメージ適用」ボタンが表示される。
防御ロールは攻撃から自動的に発生するので単独では使用しない(APIとしては存在する)
Roll20スクリプトの仕様に合わせてルールの解釈を厳密化
- 一回の攻撃に対して回避と受けを行う場合、判定は常に両方行う。回避でファンブルしても受けに成功していれば、受けによるダメージ減少は適用される。
- 回避のファンブルは攻撃が失敗している場合自動命中するが、攻撃がファンブルしている場合は自動命中しない。
- 破砕武器の効果的成功/決定的成功は武器のAPも1/2として扱うが、武器受けが効果的成功以上であれば1/2にならない。
- 盾の持ち手に盾のAPの半分を加算するルールはシンプルに部位のAPに加算しておく。
- 近接攻撃は必ずs-切裂、i-刺突、b-破砕の何れかに分類される。身体武器や動物の噛みつきなどは貫通すると記載されていなければすべて破砕扱い。
実装予定だがまだ実装していない機能
- 特種用途用に攻撃APIをプレイヤーが工夫しやすい形式にする
- 対抗要求、倍率要求、技能要求
- 武器名とか取得して表示
- NPCのロール、マスターからしか見えないようにしないと…
- 発射部位
- 武器手別 t-投げ,m-発射 → mi発射貫通とかか?別に考えるか?/たぶん近接か発射かを先に区別してそのあとに特殊効果がよい
- 武器名称から自動で攻撃種別選択
- APIをユーザーがチャットから指定しやすい形に整理
- SIZによる命中ボーナス/牽制しないことによるボーナス
- 部位の名称表示
- 狙いを定めた攻撃(成功率半分、部位指定) 部位指定だけはできるので、成功率を半分にした武器を別の行に用意することで対処可能。
- 100%以上の分割攻撃、分割受け。まだターン制御を作っていないので、部位狙いと同じように成功率を半分にした別の行を作る。
- ラウンド進行、戦闘行動回数制限、自動FP減少もやる予定。
- ファンブル表の自動適応
- 失敗した攻撃に対する成功した受け。
- MaxAP超過によるAP損失。
- かすみなどによる自動攻撃成功率減少(混沌の諸相にも使える)
- 鋭刃・防護などの効果
- 呪文投射時の自動MP減少
- キャラクターをSelectしなくても、1キャラクターしか保持していなければ自動的にSelectされる機能
- 部位別の失血等の処理
- 「行動開始~終了」の管理。ラウンド進行管理と合わせて、呪文投射中の打撃を受けた際の集中力ロールや行動変更による遅延計算
- 武器を抜く/構える
- 貫通状態の管理。
- 部位生成はとりあえず人間近接を全体に→あとでタイプを判定しながら生成する関数を作る。
- 自動ノックバック
- 呪文投射開始からの集中モードと、任意のSRでの投射。それまでに集中できたSRによる浄化成功度加算。
留保
- NPCの部位HPをスプレッドシートで一覧化→サンドボックスから外部への接続はできないので、ブラウザに代替させる必要がある。すぐにはできないので別の方法を考える。
参考
NPC作成用スプレッドシートhttps://app.roll20.net/forum/post/699709/slug%7D