[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
(雛´-`).。oO(#TRPG
— しゅんしゅんひよこ (@Shunshun94) May 1, 2020
探索者の簡単な紹介カードをキャラクター保管所で作った CoC のキャラクターシートからささっと作れるツールを作ってみた。)https://t.co/xuK9fIqwp6 pic.twitter.com/MWxcioE0DZ
先日、クトゥルフ神話 TRPG で庭師は何を口遊む(リンク先シナリオ注意。読むとプレイできなくなる)というシナリオをやってきた。こちら、「秘匿ハンドアウト」というルールが使われておりキャラクターシートを作った後そのまま他の PL に共有することはできない。だが、公開可能な範囲で他のプレイヤーにデータを共有したい、という要求があった。
そこで、キャラクターの紹介カードを生成するツールを用意した。キャラクター画像の URL とキャラクターシートの URL を入れることでそれっぽいカードを生成できる。カードを生成した後、これをスクリーンショットして共有すればよい。ただ、これを画像で保存する機能を用意できていない。
カードには画像、名前、職業、性別、年齢、その他のメモおよび主な能力値が表示されている。名前、その他のメモ、主な能力値は後から編集が可能。主な能力値にはよく使う現在正気度ポイント、目星、図書館、聞き耳およびその他の能力からトップ4の値になっているものを表示している。ただしトップ4の値の中に母国語は含まれていない。
なお、キャラクター画像には Picrew の共有用 URLを使うことも可能になっている。
例によって jQuery でやっているがイベントのバインド部分と途中経過の表示部分のみ。
fileReader
に素直なループで読み込ませると fileReader.result
がどんどん上書きされてしまうのでウェイトを入れている。ただ、 fileReader を複数 new すればこんなことしなくてもいい気はする。さらに、今は Blog.text()
なるメソッドを使う方がベターっぽい。
const fileReader = new FileReader(); fileReader.onload = (e) => { $('#result').val(`${$('#result').val()}\n${fileReader.result}\n------------------------------`); }; $('#base').on('drop', (e) => { e.preventDefault(); const files = e.originalEvent.dataTransfer.files; const recursiveRead = (array, cursor) => { if(array.length > cursor) { $('#base').text(`読み込み中…… ${cursor + 1} / ${array.length}`); fileReader.readAsText(array[cursor]); setTimeout(()=>{recursiveRead(array, cursor + 1);}, 500); } else { $('#base').text(`おしまい!`); } }; recursiveRead(files, 0); });
妖精の手はオンセでは使いにくい。その処理があまりに独特であり、オンセではちょっと頭を使わないと処理がおいつかない。Twitter で検索してみるとこんな感じである。
これをオンセ中にササッと計算するブックマークレットを用意した。
最後に出た目を10とし、クリティカルしたものとして判定を継続するための式を出力する。クリティカル値が11以上だった場合などは考慮されていないので注意。
なお、以下からも試せる
元々の判定結果:
振り直しの式:
Selenium なんかで jQuery を前提としているスクリプトを html を開いて実行したい際等に使う。ただ、これを実行した後すぐに利用できるわけではなく、読み込みには時間がかかるので wait を入れたりしないといけない点には注意。
const script = document.createElement('script'); // 例として jQuery の 3.1.0 を入れているが別に他の物を入れてもいい script.setAttribute('src', 'https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js'); document.getElementsByTagName('body')[0].appendChild(script);
Instagram で開いている画像を別タブで開く ← これをブックマークに登録してください
動作にはポップアップブロックの解除が必要。
かなりお行儀の悪い方法で動いているので上手く動かなくなるかも。