ID
const tokens = canvas.tokens.controlled; const caster = tokens[0]; if (tokens.length !== 1) { ui.notifications.warn('トークンを選択して下さい。'); } else { new Dialog({ title: 'Action!', content: `
修正値:
行動を選択
`, buttons: { Initiative:{ label:'イニシアチブ', callback: () => { rollCheck('イニシアチブ',, correction.value); }, }, Fortitude:{ label:'頑健セーヴ', callback: () => { rollCheck('頑健セーヴ',, correction.value); }, }, Reflex:{ label:'反応セーヴ', callback: () => { rollCheck('反応セーヴ',, correction.value); }, }, Will:{ label:'意志セーヴ', callback: () => { rollCheck('意志セーヴ',, correction.value); }, }, }, }).render(true); function rollCheck(name, mod, correction) { var roll; if(correction !== "" && correction !== undefined) { roll = new Roll(`1d20 + ${mod} + ${correction}`); } else { roll = new Roll(`1d20 + ${mod}`); } roll.roll(); roll.toMessage({ flavor: `${name} 判定`, speaker: { alias: token.actor.data.name }, }); } }
const tokens = canvas.tokens.controlled; const caster = tokens[0]; if (tokens.length !== 1) { ui.notifications.warn('トークンを選択して下さい。'); } else { new Dialog({ title: 'Action!', content: `
修正値:
行動を選択
`, buttons: { }, }).render(true); function rollCheckAttack(name, mod, correction) { var roll; var targetstring = ''; const targettokens = game.user.targets; targettokens.forEach(function( value ){ targetstring += '>' + value.name + ' '; }); if(correction !== "" && correction !== undefined) { roll = new Roll(`1d20 + ${mod} + ${correction}`); } else { roll = new Roll(`1d20 + ${mod}`); } roll.roll(); roll.toMessage({ flavor: `${name} 判定 ${targetstring}`, speaker: { alias: token.actor.data.name }, }); } function rollCheckDamage(name, damage, correction) { var roll; var targetstring = ''; const targettokens = game.user.targets; targettokens.forEach(function( value ){ targetstring += '>' + value.name + ' '; }); if(correction !== "" && correction !== undefined) { roll = new Roll(`${damage} + ${correction}`); } else { roll = new Roll(`${damage}`); } roll.roll(); roll.toMessage({ flavor: `${name} 判定 ${targetstring}`, speaker: { alias: token.actor.data.name }, }); } }
const tokens = canvas.tokens.controlled; const caster = tokens[0]; if (tokens.length !== 1) { ui.notifications.warn('トークンを選択して下さい。'); } else { new Dialog({ title: 'Action!', content: `
修正値:
行動を選択
`, buttons: { Intimidate:{ label:'〈威圧〉', callback: () => { rollCheck('〈威圧〉',, correction.value); }, }, Stealth:{ label:'〈隠密〉', callback: () => { rollCheck('〈隠密〉',, correction.value); }, }, Acrobat:{ label:'〈軽業〉', callback: () => { rollCheck('〈軽業〉',, correction.value); }, }, Appraise:{ label:'〈鑑定〉', callback: () => { rollCheck('〈鑑定〉',, correction.value); }, }, Ride:{ label:'〈騎乗〉', callback: () => { rollCheck('〈騎乗〉',, correction.value); }, }, Diplomacy:{ label:'〈交渉〉', callback: () => { rollCheck('〈交渉〉',, correction.value); }, }, SenseMotive:{ label:'〈真意看破〉', callback: () => { rollCheck('〈真意看破〉',, correction.value); }, }, Swim:{ label:'〈水泳〉', callback: () => { rollCheck('〈水泳〉',, correction.value); }, }, Survival:{ label:'〈生存〉', callback: () => { rollCheck('〈生存〉',, correction.value); }, }, EscapeArtist:{ label:'〈脱出術〉', callback: () => { rollCheck('〈脱出術〉',, correction.value); }, }, Perception:{ label:'〈知覚〉', callback: () => { rollCheck('〈知覚〉',, correction.value); }, }, Heal:{ label:'〈治療〉', callback: () => { rollCheck('〈治療〉',, correction.value); }, }, Climb:{ label:'〈登攀〉', callback: () => { rollCheck('〈登攀〉',, correction.value); }, }, Bluff:{ label:'〈はったり〉', callback: () => { rollCheck('〈はったり〉',, correction.value); }, }, Fly:{ label:'〈飛行〉', callback: () => { rollCheck('〈飛行〉',, correction.value); }, }, Disguise:{ label:'〈変装〉', callback: () => { rollCheck('〈変装〉',, correction.value); }, }, } }).render(true); function rollCheck(name, mod, correction) { var roll; if(correction !== "" && correction !== undefined) { roll = new Roll(`1d20 + ${mod} + ${correction}`); } else { roll = new Roll(`1d20 + ${mod}`); } roll.roll(); roll.toMessage({ flavor: `${name} 判定`, speaker: { alias: token.actor.data.name }, }); } }
攻撃ロールの書き方は「+25/+20/+15」という様にスラッシュ(/)で各攻撃を区切る事を想定してこのツールは作成されています。
説明
この画面で作成されたスクリプトを使用する際はFoundryVTTに日本語化(PF1)のモジュールが必要となります。
1.テキストボックスにIDを入力して、FoundryVTTマクロ作成ボタンを押す。
2.FoundryVTTのホットキーをクリック
3.マクロを作成
4.マクロを使用