Fix criticals roll
This commit is contained in:
parent
8168cbfdd9
commit
7bc7570eb4
@ -147,3 +147,11 @@ rmfrp.armor_values = {
|
|||||||
"19": "19",
|
"19": "19",
|
||||||
"20": "20"
|
"20": "20"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
rmfrp.keyToCriticalTable ={
|
||||||
|
K: "krush",
|
||||||
|
P: "puncture",
|
||||||
|
S: "slash",
|
||||||
|
U: "unbalance",
|
||||||
|
G: "grapple"
|
||||||
|
}
|
@ -183,19 +183,24 @@ export class RMFRPProcessTable {
|
|||||||
}
|
}
|
||||||
let roll = new Roll("1d100")
|
let roll = new Roll("1d100")
|
||||||
await roll.evaluate()
|
await roll.evaluate()
|
||||||
|
await RMFRPUtility.showDiceSoNice(roll, game.settings.get("core", "rollMode"))
|
||||||
let score = roll.total
|
let score = roll.total
|
||||||
console.log("Critical Roll: ", score)
|
console.log("Critical Roll: ", score)
|
||||||
// Search the result
|
// Search the result
|
||||||
for (let criticalDef of table.criticals) {
|
for (let criticalDef of table.criticals) {
|
||||||
if (Number(criticalDef.score) ) {
|
if (Number(criticalDef.score) ) {
|
||||||
if (Number(criticalDef.score) == score) {
|
if (Number(criticalDef.score) == score) {
|
||||||
return criticalDef.levels[criticalKey.toUpperCase()]
|
let critDef = foundry.utils.duplicate(criticalDef.levels[criticalKey.toUpperCase()])
|
||||||
|
critDef.diceResult = score
|
||||||
|
return critDef
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// Score is XX-YY so split it to get the range values
|
// Score is XX-YY so split it to get the range values
|
||||||
let range = criticalDef.score.split("-")
|
let range = criticalDef.score.split("-")
|
||||||
if (Number(range[0]) <= score && score <= Number(range[1])) {
|
if (Number(range[0]) <= score && score <= Number(range[1])) {
|
||||||
return criticalDef.levels[criticalKey.toUpperCase()]
|
let critDef = foundry.utils.duplicate(criticalDef.levels[criticalKey.toUpperCase()])
|
||||||
|
critDef.diceResult = score
|
||||||
|
return critDef
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,7 +6,7 @@ export class RMFRPUtility {
|
|||||||
static async init() {
|
static async init() {
|
||||||
}
|
}
|
||||||
|
|
||||||
static capitalizeFirstLetters(str){
|
static capitalizeFirstLetters(str) {
|
||||||
return str.toLowerCase().replace(/^\w|\s\w/g, function (letter) {
|
return str.toLowerCase().replace(/^\w|\s\w/g, function (letter) {
|
||||||
return letter.toUpperCase();
|
return letter.toUpperCase();
|
||||||
})
|
})
|
||||||
@ -19,7 +19,7 @@ export class RMFRPUtility {
|
|||||||
this.gameSystem = game.settings.get("fvtt-rolemaster-frp", "game_system");
|
this.gameSystem = game.settings.get("fvtt-rolemaster-frp", "game_system");
|
||||||
|
|
||||||
const skillCategories = await RMFRPUtility.loadCompendium("fvtt-rolemaster-frp.skill_categories")
|
const skillCategories = await RMFRPUtility.loadCompendium("fvtt-rolemaster-frp.skill_categories")
|
||||||
this.skillCategories = skillCategories.map(i => i.toObject()).filter( i => i.system.game_system == "common" || i.system.game_system == this.gameSystem);
|
this.skillCategories = skillCategories.map(i => i.toObject()).filter(i => i.system.game_system == "common" || i.system.game_system == this.gameSystem);
|
||||||
// Sort skill categories by name
|
// Sort skill categories by name
|
||||||
this.skillCategories.sort((a, b) => a.name.localeCompare(b.name));
|
this.skillCategories.sort((a, b) => a.name.localeCompare(b.name));
|
||||||
}
|
}
|
||||||
@ -50,6 +50,32 @@ export class RMFRPUtility {
|
|||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
static async showDiceSoNice(roll, rollMode) {
|
||||||
|
if (game.modules.get("dice-so-nice")?.active) {
|
||||||
|
if (game.dice3d) {
|
||||||
|
let whisper = null;
|
||||||
|
let blind = false;
|
||||||
|
rollMode = rollMode ?? game.settings.get("core", "rollMode");
|
||||||
|
switch (rollMode) {
|
||||||
|
case "blindroll": //GM only
|
||||||
|
blind = true;
|
||||||
|
case "gmroll": //GM + rolling player
|
||||||
|
whisper = this.getUsers(user => user.isGM);
|
||||||
|
break;
|
||||||
|
case "roll": //everybody
|
||||||
|
whisper = this.getUsers(user => user.active);
|
||||||
|
break;
|
||||||
|
case "selfroll":
|
||||||
|
whisper = [game.user.id];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
await game.dice3d.showForRoll(roll, game.user, true, whisper, blind);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static async loadCompendiumData(compendium) {
|
static async loadCompendiumData(compendium) {
|
||||||
const pack = game.packs.get(compendium);
|
const pack = game.packs.get(compendium);
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
import { RMFRPUtility } from "../../rmfrp-utility.js";
|
||||||
|
|
||||||
export default class RMFRPToolsDiceRoller extends FormApplication {
|
export default class RMFRPToolsDiceRoller extends FormApplication {
|
||||||
|
|
||||||
@ -72,34 +73,14 @@ export default class RMFRPToolsDiceRoller extends FormApplication {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async showDiceSoNice(roll, rollMode) {
|
getWeaponCriticalTableName( key) {
|
||||||
if (game.modules.get("dice-so-nice")?.active) {
|
return CONFIG.rmfrp.keyToCriticalTable[key.toUpperCase()]
|
||||||
if (game.dice3d) {
|
|
||||||
let whisper = null;
|
|
||||||
let blind = false;
|
|
||||||
rollMode = rollMode ?? game.settings.get("core", "rollMode");
|
|
||||||
switch (rollMode) {
|
|
||||||
case "blindroll": //GM only
|
|
||||||
blind = true;
|
|
||||||
case "gmroll": //GM + rolling player
|
|
||||||
whisper = this.getUsers(user => user.isGM);
|
|
||||||
break;
|
|
||||||
case "roll": //everybody
|
|
||||||
whisper = this.getUsers(user => user.active);
|
|
||||||
break;
|
|
||||||
case "selfroll":
|
|
||||||
whisper = [game.user.id];
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
await game.dice3d.showForRoll(roll, game.user, true, whisper, blind);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async roll(rollKey, formData) {
|
async roll(rollKey, formData) {
|
||||||
let baseRoll = await new Roll("1d100").roll();
|
let baseRoll = await new Roll("1d100").roll();
|
||||||
await this.showDiceSoNice(baseRoll, game.settings.get("core", "rollMode"))
|
await RMFRPUtility.showDiceSoNice(baseRoll, game.settings.get("core", "rollMode"))
|
||||||
let rollType = this.rollType.find(r => r.value == rollKey)?.text;
|
let rollType = this.rollType.find(r => r.value == rollKey)?.text;
|
||||||
let rollData = {
|
let rollData = {
|
||||||
name: this.itemName,
|
name: this.itemName,
|
||||||
@ -126,11 +107,11 @@ export default class RMFRPToolsDiceRoller extends FormApplication {
|
|||||||
if (baseRoll.result < 6) {
|
if (baseRoll.result < 6) {
|
||||||
rollData.lowopen = true
|
rollData.lowopen = true
|
||||||
let newRoll = await new Roll("-1d100").roll();
|
let newRoll = await new Roll("-1d100").roll();
|
||||||
await this.showDiceSoNice(newRoll, game.settings.get("core", "rollMode"))
|
await RMFRPUtility.showDiceSoNice(newRoll, game.settings.get("core", "rollMode"))
|
||||||
rollData.rolls.push(newRoll);
|
rollData.rolls.push(newRoll);
|
||||||
while (newRoll.result > 95) {
|
while (newRoll.result > 95) {
|
||||||
newRoll = await new Roll("-1d100").roll();
|
newRoll = await new Roll("-1d100").roll();
|
||||||
await this.showDiceSoNice(newRoll, game.settings.get("core", "rollMode"))
|
await RMFRPUtility.showDiceSoNice(newRoll, game.settings.get("core", "rollMode"))
|
||||||
rollData.rolls.push(newRoll);
|
rollData.rolls.push(newRoll);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -140,11 +121,11 @@ export default class RMFRPToolsDiceRoller extends FormApplication {
|
|||||||
if (baseRoll.result > 95) {
|
if (baseRoll.result > 95) {
|
||||||
rollData.highopen = true
|
rollData.highopen = true
|
||||||
let newRoll = await new Roll("1d100").roll();
|
let newRoll = await new Roll("1d100").roll();
|
||||||
await this.showDiceSoNice(newRoll, game.settings.get("core", "rollMode"))
|
await RMFRPUtility.showDiceSoNice(newRoll, game.settings.get("core", "rollMode"))
|
||||||
rollData.rolls.push(newRoll);
|
rollData.rolls.push(newRoll);
|
||||||
while (newRoll.result > 95) {
|
while (newRoll.result > 95) {
|
||||||
newRoll = await new Roll("1d100").roll();
|
newRoll = await new Roll("1d100").roll();
|
||||||
await this.showDiceSoNice(newRoll, game.settings.get("core", "rollMode"))
|
await RMFRPUtility.showDiceSoNice(newRoll, game.settings.get("core", "rollMode"))
|
||||||
rollData.rolls.push(newRoll);
|
rollData.rolls.push(newRoll);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -181,17 +162,19 @@ export default class RMFRPToolsDiceRoller extends FormApplication {
|
|||||||
rollData.attackResult = attackResult;
|
rollData.attackResult = attackResult;
|
||||||
// Is it a a critical ?
|
// Is it a a critical ?
|
||||||
let critical = attackResult.match(/(\d+)(\w)?(\w)?/);
|
let critical = attackResult.match(/(\d+)(\w)?(\w)?/);
|
||||||
if (critical && critical[2]) {
|
if (critical && critical[2] && critical[3]) {
|
||||||
if ( critical[2] === "F") {
|
if ( critical[2] === "F") {
|
||||||
hasFumble = true
|
hasFumble = true
|
||||||
} else {
|
} else {
|
||||||
let criticalTable = this.weapon.system.critical_table
|
let criticalTable = this.getWeaponCriticalTableName(critical[3])
|
||||||
|
//let criticalTable = this.weapon.system.critical_table
|
||||||
if ( !criticalTable ) {
|
if ( !criticalTable ) {
|
||||||
ui.notifications.error("Critical table not found for weapon: " + this.weapon.name);
|
ui.notifications.error("Critical table not found for weapon: " + this.weapon.name);
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
let criticalResult = await game.rmfrp.attackTables.getCriticalResult(criticalTable, critical[2]);
|
let criticalResult = await game.rmfrp.attackTables.getCriticalResult(criticalTable, critical[2]);
|
||||||
rollData.criticalResult = criticalResult;
|
rollData.criticalResult = criticalResult;
|
||||||
|
rollData.criticalTable = criticalTable;
|
||||||
console.log("Critical Result: ", criticalResult);
|
console.log("Critical Result: ", criticalResult);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1 +1 @@
|
|||||||
MANIFEST-000208
|
MANIFEST-000212
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
2025/01/18-18:15:46.177424 7f3b919fa6c0 Recovering log #206
|
2025/02/09-17:59:02.058056 7f46ad7fa6c0 Recovering log #210
|
||||||
2025/01/18-18:15:46.187462 7f3b919fa6c0 Delete type=3 #204
|
2025/02/09-17:59:02.108672 7f46ad7fa6c0 Delete type=3 #208
|
||||||
2025/01/18-18:15:46.187523 7f3b919fa6c0 Delete type=0 #206
|
2025/02/09-17:59:02.108745 7f46ad7fa6c0 Delete type=0 #210
|
||||||
2025/01/18-18:19:43.034876 7f3b8b3ff6c0 Level-0 table #211: started
|
2025/02/09-18:10:51.141649 7f46abbff6c0 Level-0 table #215: started
|
||||||
2025/01/18-18:19:43.034902 7f3b8b3ff6c0 Level-0 table #211: 0 bytes OK
|
2025/02/09-18:10:51.141686 7f46abbff6c0 Level-0 table #215: 0 bytes OK
|
||||||
2025/01/18-18:19:43.041054 7f3b8b3ff6c0 Delete type=0 #209
|
2025/02/09-18:10:51.147603 7f46abbff6c0 Delete type=0 #213
|
||||||
2025/01/18-18:19:43.041200 7f3b8b3ff6c0 Manual compaction at level-0 from '!items!1HevhbCbvMonyQXe' @ 72057594037927935 : 1 .. '!items!yRIFroc5VC9Oj3qY' @ 0 : 0; will stop at (end)
|
2025/02/09-18:10:51.166026 7f46abbff6c0 Manual compaction at level-0 from '!items!1HevhbCbvMonyQXe' @ 72057594037927935 : 1 .. '!items!yRIFroc5VC9Oj3qY' @ 0 : 0; will stop at (end)
|
||||||
2025/01/18-18:19:43.041231 7f3b8b3ff6c0 Manual compaction at level-1 from '!items!1HevhbCbvMonyQXe' @ 72057594037927935 : 1 .. '!items!yRIFroc5VC9Oj3qY' @ 0 : 0; will stop at (end)
|
2025/02/09-18:10:51.166064 7f46abbff6c0 Manual compaction at level-1 from '!items!1HevhbCbvMonyQXe' @ 72057594037927935 : 1 .. '!items!yRIFroc5VC9Oj3qY' @ 0 : 0; will stop at (end)
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
2025/01/18-15:51:04.184298 7f3b911f96c0 Recovering log #202
|
2025/01/18-18:15:46.177424 7f3b919fa6c0 Recovering log #206
|
||||||
2025/01/18-15:51:04.200991 7f3b911f96c0 Delete type=3 #200
|
2025/01/18-18:15:46.187462 7f3b919fa6c0 Delete type=3 #204
|
||||||
2025/01/18-15:51:04.201070 7f3b911f96c0 Delete type=0 #202
|
2025/01/18-18:15:46.187523 7f3b919fa6c0 Delete type=0 #206
|
||||||
2025/01/18-18:14:32.987104 7f3b8b3ff6c0 Level-0 table #207: started
|
2025/01/18-18:19:43.034876 7f3b8b3ff6c0 Level-0 table #211: started
|
||||||
2025/01/18-18:14:32.987144 7f3b8b3ff6c0 Level-0 table #207: 0 bytes OK
|
2025/01/18-18:19:43.034902 7f3b8b3ff6c0 Level-0 table #211: 0 bytes OK
|
||||||
2025/01/18-18:14:32.993171 7f3b8b3ff6c0 Delete type=0 #205
|
2025/01/18-18:19:43.041054 7f3b8b3ff6c0 Delete type=0 #209
|
||||||
2025/01/18-18:14:33.006820 7f3b8b3ff6c0 Manual compaction at level-0 from '!items!1HevhbCbvMonyQXe' @ 72057594037927935 : 1 .. '!items!yRIFroc5VC9Oj3qY' @ 0 : 0; will stop at (end)
|
2025/01/18-18:19:43.041200 7f3b8b3ff6c0 Manual compaction at level-0 from '!items!1HevhbCbvMonyQXe' @ 72057594037927935 : 1 .. '!items!yRIFroc5VC9Oj3qY' @ 0 : 0; will stop at (end)
|
||||||
2025/01/18-18:14:33.006858 7f3b8b3ff6c0 Manual compaction at level-1 from '!items!1HevhbCbvMonyQXe' @ 72057594037927935 : 1 .. '!items!yRIFroc5VC9Oj3qY' @ 0 : 0; will stop at (end)
|
2025/01/18-18:19:43.041231 7f3b8b3ff6c0 Manual compaction at level-1 from '!items!1HevhbCbvMonyQXe' @ 72057594037927935 : 1 .. '!items!yRIFroc5VC9Oj3qY' @ 0 : 0; will stop at (end)
|
||||||
|
Binary file not shown.
@ -1 +1 @@
|
|||||||
MANIFEST-000114
|
MANIFEST-000118
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
2025/01/18-18:15:46.190110 7f3b909f86c0 Recovering log #112
|
2025/02/09-17:59:02.113663 7f46ac7f86c0 Recovering log #116
|
||||||
2025/01/18-18:15:46.200873 7f3b909f86c0 Delete type=3 #110
|
2025/02/09-17:59:02.167668 7f46ac7f86c0 Delete type=3 #114
|
||||||
2025/01/18-18:15:46.200953 7f3b909f86c0 Delete type=0 #112
|
2025/02/09-17:59:02.167740 7f46ac7f86c0 Delete type=0 #116
|
||||||
2025/01/18-18:19:43.027077 7f3b8b3ff6c0 Level-0 table #117: started
|
2025/02/09-18:10:51.159538 7f46abbff6c0 Level-0 table #121: started
|
||||||
2025/01/18-18:19:43.027109 7f3b8b3ff6c0 Level-0 table #117: 0 bytes OK
|
2025/02/09-18:10:51.159574 7f46abbff6c0 Level-0 table #121: 0 bytes OK
|
||||||
2025/01/18-18:19:43.034763 7f3b8b3ff6c0 Delete type=0 #115
|
2025/02/09-18:10:51.165836 7f46abbff6c0 Delete type=0 #119
|
||||||
2025/01/18-18:19:43.041192 7f3b8b3ff6c0 Manual compaction at level-0 from '!folders!Lr9SCthdWWHecwEI' @ 72057594037927935 : 1 .. '!items!zvdsAxlRZnL6gqms' @ 0 : 0; will stop at (end)
|
2025/02/09-18:10:51.166053 7f46abbff6c0 Manual compaction at level-0 from '!folders!Lr9SCthdWWHecwEI' @ 72057594037927935 : 1 .. '!items!zvdsAxlRZnL6gqms' @ 0 : 0; will stop at (end)
|
||||||
2025/01/18-18:19:43.041225 7f3b8b3ff6c0 Manual compaction at level-1 from '!folders!Lr9SCthdWWHecwEI' @ 72057594037927935 : 1 .. '!items!zvdsAxlRZnL6gqms' @ 0 : 0; will stop at (end)
|
2025/02/09-18:10:51.178042 7f46abbff6c0 Manual compaction at level-1 from '!folders!Lr9SCthdWWHecwEI' @ 72057594037927935 : 1 .. '!items!zvdsAxlRZnL6gqms' @ 0 : 0; will stop at (end)
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
2025/01/18-15:51:04.203957 7f3b919fa6c0 Recovering log #108
|
2025/01/18-18:15:46.190110 7f3b909f86c0 Recovering log #112
|
||||||
2025/01/18-15:51:04.219103 7f3b919fa6c0 Delete type=3 #106
|
2025/01/18-18:15:46.200873 7f3b909f86c0 Delete type=3 #110
|
||||||
2025/01/18-15:51:04.219174 7f3b919fa6c0 Delete type=0 #108
|
2025/01/18-18:15:46.200953 7f3b909f86c0 Delete type=0 #112
|
||||||
2025/01/18-18:14:33.000727 7f3b8b3ff6c0 Level-0 table #113: started
|
2025/01/18-18:19:43.027077 7f3b8b3ff6c0 Level-0 table #117: started
|
||||||
2025/01/18-18:14:33.000756 7f3b8b3ff6c0 Level-0 table #113: 0 bytes OK
|
2025/01/18-18:19:43.027109 7f3b8b3ff6c0 Level-0 table #117: 0 bytes OK
|
||||||
2025/01/18-18:14:33.006724 7f3b8b3ff6c0 Delete type=0 #111
|
2025/01/18-18:19:43.034763 7f3b8b3ff6c0 Delete type=0 #115
|
||||||
2025/01/18-18:14:33.006839 7f3b8b3ff6c0 Manual compaction at level-0 from '!folders!Lr9SCthdWWHecwEI' @ 72057594037927935 : 1 .. '!items!zvdsAxlRZnL6gqms' @ 0 : 0; will stop at (end)
|
2025/01/18-18:19:43.041192 7f3b8b3ff6c0 Manual compaction at level-0 from '!folders!Lr9SCthdWWHecwEI' @ 72057594037927935 : 1 .. '!items!zvdsAxlRZnL6gqms' @ 0 : 0; will stop at (end)
|
||||||
2025/01/18-18:14:33.006865 7f3b8b3ff6c0 Manual compaction at level-1 from '!folders!Lr9SCthdWWHecwEI' @ 72057594037927935 : 1 .. '!items!zvdsAxlRZnL6gqms' @ 0 : 0; will stop at (end)
|
2025/01/18-18:19:43.041225 7f3b8b3ff6c0 Manual compaction at level-1 from '!folders!Lr9SCthdWWHecwEI' @ 72057594037927935 : 1 .. '!items!zvdsAxlRZnL6gqms' @ 0 : 0; will stop at (end)
|
||||||
|
Binary file not shown.
@ -3,7 +3,7 @@
|
|||||||
"title": "Rolemaster FRP System",
|
"title": "Rolemaster FRP System",
|
||||||
"description": "The Rolemaster FRP system for FoundryVTT.",
|
"description": "The Rolemaster FRP system for FoundryVTT.",
|
||||||
"manifest": "https://www.uberwald.me/gitea/public/fvtt-rolemaster-frp/raw/branch/develop/system.json",
|
"manifest": "https://www.uberwald.me/gitea/public/fvtt-rolemaster-frp/raw/branch/develop/system.json",
|
||||||
"download": "https://www.uberwald.me/gitea/public/fvtt-rolemaster-frp/archive/v12.0.18.zip",
|
"download": "https://www.uberwald.me/gitea/public/fvtt-rolemaster-frp/archive/v12.0.19.zip",
|
||||||
"authors": [
|
"authors": [
|
||||||
{
|
{
|
||||||
"name": "Cynicide",
|
"name": "Cynicide",
|
||||||
@ -14,7 +14,7 @@
|
|||||||
"email": ""
|
"email": ""
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"version": "12.0.18",
|
"version": "12.0.19",
|
||||||
"compatibility": {
|
"compatibility": {
|
||||||
"minimum": "12",
|
"minimum": "12",
|
||||||
"verified": "12"
|
"verified": "12"
|
||||||
|
@ -89,6 +89,9 @@
|
|||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
{{#if criticalResult}}
|
{{#if criticalResult}}
|
||||||
|
<div class="dice-result">
|
||||||
|
Critical: {{upperFirst criticalTable}} ({{criticalResult.diceResult}})
|
||||||
|
</div>
|
||||||
<div class="dice-result">
|
<div class="dice-result">
|
||||||
Critical {{criticalResult.key}}: {{criticalResult.description}}
|
Critical {{criticalResult.key}}: {{criticalResult.description}}
|
||||||
</div>
|
</div>
|
||||||
|
@ -101,7 +101,7 @@
|
|||||||
</td>
|
</td>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
<table>
|
<!-- <table>
|
||||||
<tr>
|
<tr>
|
||||||
<th>{{localize "rmfrp.weapon.critical_table"}}</th>
|
<th>{{localize "rmfrp.weapon.critical_table"}}</th>
|
||||||
<th>{{localize "rmfrp.weapon.lsl_crit_column"}}</th>
|
<th>{{localize "rmfrp.weapon.lsl_crit_column"}}</th>
|
||||||
@ -114,7 +114,7 @@
|
|||||||
<td>
|
<td>
|
||||||
<input class="short-input" name="system.lsl_crit_column" type="text" value="{{system.lsl_crit_column}}" data-dtype="Number"/>
|
<input class="short-input" name="system.lsl_crit_column" type="text" value="{{system.lsl_crit_column}}" data-dtype="Number"/>
|
||||||
</td>
|
</td>
|
||||||
</table>
|
</table> -->
|
||||||
|
|
||||||
<table class="short-input">
|
<table class="short-input">
|
||||||
<th class="short-input">{{localize "rmfrp.weapon.range_modifier"}}</th>
|
<th class="short-input">{{localize "rmfrp.weapon.range_modifier"}}</th>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user