From 115fcc4f18be6e645522e2c4668458753af3da92 Mon Sep 17 00:00:00 2001 From: Anthony Murphy Date: Thu, 28 Mar 2024 21:40:20 +1100 Subject: [PATCH] Initial dice roller --- README.md | 33 +- rmss/assets/fonts/PragRoman.ttf | Bin 0 -> 85484 bytes rmss/assets/fonts/PragRoman.woff2 | Bin 0 -> 31704 bytes rmss/assets/icons/R.svg | 68 ++++ rmss/assets/icons/vec-alldice-jp.svg | 354 ++++++++++++++++++ .../actor-sheet/actor-sheet-skillcat.less | 4 +- rmss/less/actor-sheet/actor-sheet.less | 7 + rmss/less/rmss.less | 4 + rmss/less/skillcat-sheet/skillcat-sheet.less | 7 + rmss/less/tools/dice-roller.less | 20 + rmss/module/controls.js | 26 ++ rmss/module/documents/actor.js | 52 +++ .../module/sheets/actors/rmss_player_sheet.js | 12 +- rmss/module/sheets/apps/rmss_dice_roller.js | 85 +++++ .../apps/rmss_dice_roller_processing.js | 131 +++++++ .../sheets/apps/rmss_dice_roller_rolls.js | 71 ++++ .../apps/rmss_import_skill_categories.js | 56 +++ ...categories.db => rmss_skill_categories.db} | 0 rmss/packs/smss_skill_categories.db | 48 +++ rmss/rmss.css | 24 +- rmss/rmss.js | 20 +- rmss/system.json | 24 +- rmss/templates/chat/chat_dice_roll.html | 28 ++ .../actors/parts/actor-skill-categories.html | 3 +- .../sheets/apps/app_dice_roller.html | 27 ++ .../apps/app_skill_category_importer.html | 17 + 26 files changed, 1077 insertions(+), 44 deletions(-) create mode 100644 rmss/assets/fonts/PragRoman.ttf create mode 100644 rmss/assets/fonts/PragRoman.woff2 create mode 100644 rmss/assets/icons/R.svg create mode 100644 rmss/assets/icons/vec-alldice-jp.svg create mode 100644 rmss/less/tools/dice-roller.less create mode 100644 rmss/module/controls.js create mode 100644 rmss/module/sheets/apps/rmss_dice_roller.js create mode 100644 rmss/module/sheets/apps/rmss_dice_roller_processing.js create mode 100644 rmss/module/sheets/apps/rmss_dice_roller_rolls.js create mode 100644 rmss/module/sheets/apps/rmss_import_skill_categories.js rename rmss/packs/{skill_categories.db => rmss_skill_categories.db} (100%) create mode 100644 rmss/packs/smss_skill_categories.db create mode 100644 rmss/templates/chat/chat_dice_roll.html create mode 100644 rmss/templates/sheets/apps/app_dice_roller.html create mode 100644 rmss/templates/sheets/apps/app_skill_category_importer.html diff --git a/README.md b/README.md index 02c6273..f461929 100644 --- a/README.md +++ b/README.md @@ -1,33 +1,14 @@ -# Rolemaster Standard System for Foundry VTT +This system is based on the video tutorials by Cédric Hauteville you can watch them here: https://www.youtube.com/playlist?list=PLFV9z59nkHDccUbRXVt623UdloPTclIrz parts of it were also lifted from the Foundry VTT Boilerplate system by XXX. -## Introduction -This is an in-development implementation of the Rolemaster Standard System for FoundryVTT. All rights to the system remain property of Iron Crown Enterprises (http://ironcrown.com/). This system will not include any of the book content and aims to provide only what is on the character sheet. +Icons have been sourced from https://game-icons.net -If you need access to the Rolemaster Standard System you may be out of luck as the system has been out of print for some time. However it's successor Rolemaster Fantasy Roleplaying is broadly compatible and can be purchased as a PDF via Drive Thru RPG here: https://www.drivethrurpg.com/product/91995/Rolemaster-Fantasy-Role-Playing?cPath=1361_6495 +Dice shapes are licensed under Creative Commons Attribution-Noncommercial-Share Alike 3.0 License and appear from https://www.deviantart.com/jpatterson/art/Polyhedral-RPG-Gaming-Dice-Dec-2014-502024799 created by jpatterson -## How to Use -Download the latest release from this repository and then extract the rmss folder. Drag it into the systems folder of your FoundryVTT Data Directory. More detailed instructions can be found [here](docs/INSTALL.md) in the docs directory. +Dice 10 Icon (https://game-icons.net/1x1/skoll/d10.html) by Skoll and licensed under CC BY 3.0 https://creativecommons.org/licenses/by/3.0/ -If you are using this system I highly recommend the "Simple Dice Roller" module which will allow you to roll dice easily while this feature is in development. You can install it in the Foundry Modules section or you can visit the following link for more instructions: https://foundryvtt.com/packages/simple-dice-roller/ +This system uses less for CSS you can see a good installation guide for VSCode at https://code.visualstudio.com/docs/languages/css#_transpiling-sass-and-less-into-css -Further information on how the system works can be found [here](docs/USAGE.md) +User Notes -## Goals/ToDo -Project goals include: - - A functionaing character sheet that automates some of the basic maths. - - A dice roller that allows you to perform the most common rolls in the system. - - A basic combat tracker +Skill Categories and Skills cannot be renamed if they are owned and you cannot drag a duplicate named skill to the sheet -I maintain a public Trello board here where I log my work items: https://trello.com/b/JkXd5EGx/rmss-for-foundryvtt-features - -## About Me -My name is Anthony, I'm a DevOps Engineer who has been playing Roleplaying Games since the mid 80's. I've been involved in numerous small programming projects. This system is by far the largest thing I've done. If the code here is awful it's because I'm learning CSS/Javascript as I go. - -## Credits -This system is based on: - - The Foundry VTT Boilerplate system by Asacolips. (https://gitlab.com/asacolips-projects/foundry-mods/boilerplate) - - The video tutorials by Cédric Hauteville you can watch them here: https://www.youtube.com/playlist?list=PLFV9z59nkHDccUbRXVt623UdloPTclIrz - -Icons used in this system have been sourced from https://game-icons.net - -This system uses less for CSS. If you change the CSS and need to rebuild it you can see a good installation guide for Less on VSCode at https://code.visualstudio.com/docs/languages/css#_transpiling-sass-and-less-into-css \ No newline at end of file diff --git a/rmss/assets/fonts/PragRoman.ttf b/rmss/assets/fonts/PragRoman.ttf new file mode 100644 index 0000000000000000000000000000000000000000..d2293804d6327cfcaca6dd6a03b74768d3e88875 GIT binary patch literal 85484 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 z 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 E3lHXS9{>OV literal 0 HcmV?d00001 diff --git a/rmss/assets/fonts/PragRoman.woff2 b/rmss/assets/fonts/PragRoman.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..e935647fc95bc89a8748b1239c06b000000f6e7c GIT binary patch literal 31704 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 + + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/rmss/assets/icons/vec-alldice-jp.svg b/rmss/assets/icons/vec-alldice-jp.svg new file mode 100644 index 0000000..0fec769 --- /dev/null +++ b/rmss/assets/icons/vec-alldice-jp.svg @@ -0,0 +1,354 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Hit + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + D4 + + + + + + + + + + D8 + + + + + + + D6 + + + + + + + + + + + + D10 + + + + + + + + + + + + + D12 + + + + + + + + + + + + D20 + + + + + + 1 + + + + + + 2 + + + + + + 3 + + + + + + 14 + + + + + + 15 + + + + + + 16 + + + + + + 17 + + + + + + 18 + + + + + + 19 + + + + + + 20 + + + + + + 4 + + + + + + 5 + + + + + + 6 + + + + + + 7 + + + + + + 8 + + + + + + 9 + + + + + + 10 + + + + + + 11 + + + + + + 12 + + + + + + 13 + + + + + + 40 + + + + + + 50 + + + + + + 60 + + + + + + 70 + + + + + + 80 + + + + + + 90 + + + + + + 0 + + + + + + 00 + + + + + + 30 + + + + + + * + + + + + + X + + + + + + - + + + + + + + + + + + + image/svg+xml + + + + + Openclipart + + + + + + + + + + + \ No newline at end of file diff --git a/rmss/less/actor-sheet/actor-sheet-skillcat.less b/rmss/less/actor-sheet/actor-sheet-skillcat.less index c3794e6..da74fd4 100644 --- a/rmss/less/actor-sheet/actor-sheet-skillcat.less +++ b/rmss/less/actor-sheet/actor-sheet-skillcat.less @@ -12,7 +12,7 @@ padding-bottom: 3px; display: flex; justify-content: flex-end; - flex-direction: column; + //flex-direction: column; justify-content: center; } @@ -37,7 +37,7 @@ padding-bottom: 3px; display: flex; justify-content: flex-end; - flex-direction: column; + //flex-direction: column; justify-content: center; background-image: linear-gradient(rgba(0, 0, 0, 0.1) 0 0); } diff --git a/rmss/less/actor-sheet/actor-sheet.less b/rmss/less/actor-sheet/actor-sheet.less index 9d410ba..2bcddf4 100644 --- a/rmss/less/actor-sheet/actor-sheet.less +++ b/rmss/less/actor-sheet/actor-sheet.less @@ -4,6 +4,13 @@ display: flex; } + +.rm-heading { + font-size: 1.0em; + font-family: PragRoman; + border-bottom: 0px; +} + // Header CSS .actor-icon { diff --git a/rmss/less/rmss.less b/rmss/less/rmss.less index 93ac91f..1ad38b1 100644 --- a/rmss/less/rmss.less +++ b/rmss/less/rmss.less @@ -16,5 +16,9 @@ @import "./skillcat-sheet/skillcat-sheet.less"; @import "./skillcat-sheet/applicable-stats-grid.less"; +//Apps + +@import "./tools/dice-roller.less"; + // Generics @import "./item-sheet.less"; \ No newline at end of file diff --git a/rmss/less/skillcat-sheet/skillcat-sheet.less b/rmss/less/skillcat-sheet/skillcat-sheet.less index 48139e6..342fdff 100644 --- a/rmss/less/skillcat-sheet/skillcat-sheet.less +++ b/rmss/less/skillcat-sheet/skillcat-sheet.less @@ -1,3 +1,10 @@ +//.skillcat-icons { +// display: flex; +// justify-content: space-around; +// flex-direction: row; +// align-items: center; +//} + .skillcat-name, .skill-name, .item-name, .spell-name, .equipable-name { font-family: Signika, sans-serif; font-size: 12px; diff --git a/rmss/less/tools/dice-roller.less b/rmss/less/tools/dice-roller.less new file mode 100644 index 0000000..158cd22 --- /dev/null +++ b/rmss/less/tools/dice-roller.less @@ -0,0 +1,20 @@ +.dice-roller-options { + display: flex; + flex-direction: column; +} + +.dice-roller-item { + display: flex; + align-items: center; + margin:5px; +} + +.dice-roller-item div { + flex: 1; +} + +.roll-button-container { + display: flex; + flex-direction: column; + justify-content: flex-end; +} \ No newline at end of file diff --git a/rmss/module/controls.js b/rmss/module/controls.js new file mode 100644 index 0000000..ca50455 --- /dev/null +++ b/rmss/module/controls.js @@ -0,0 +1,26 @@ + +export function registerGetSceneControlButtonsHook() { + Hooks.on("getSceneControlButtons", getSceneControlButtons); +} + +function getSceneControlButtons(controls) { + if (canvas == null) { + return; + } + controls.push({ + name: "rmss", + title: "Rolemaster Standard System", + icon: "fas fa-r", + layer: "ControlsLayer", + tools: [ + { + name: "rmmsdiceroller", + title: "Dice Roller", + icon: "fas fa-dice", + onClick: () => { return new game.rmss.applications.RMSSToolsDiceRoller().render(true); }, + button: true + } + ], + activeTool: "rmmsdiceroller" + }); +} diff --git a/rmss/module/documents/actor.js b/rmss/module/documents/actor.js index 23e47d6..cb4edb8 100644 --- a/rmss/module/documents/actor.js +++ b/rmss/module/documents/actor.js @@ -27,6 +27,8 @@ export class RMSSActor extends Actor { _prepareCharacterData(actorData) { if (actorData.type !== "character") return; + this.calculateBasicStatBonus(actorData); + // Calculate Stat Bonuses for the Actor this.calculateStatBonuses(actorData); @@ -51,6 +53,56 @@ export class RMSSActor extends Actor { const data = actorData.data; } + // This checks to see if you have a Rollable Table called "Basic Stat Bonus Table" and uses it to calculate the basic stat bonuses. + calculateBasicStatBonus(actorData) { + const systemData = actorData.system; + for (const table of game.tables) { + if (table.name === "Basic Stat Bonus Table") { + for (const result of table.results) { + if (actorData.system.stats.agility.temp >= Number(result.range[0]) && actorData.system.stats.agility.basic_bonus <= Number(result.range[1])) { + actorData.system.stats.agility.basic_bonus = parseInt(result.text, 10); + } + + if (actorData.system.stats.constitution.temp >= Number(result.range[0]) && actorData.system.stats.constitution.basic_bonus <= Number(result.range[1])) { + actorData.system.stats.constitution.basic_bonus = parseInt(result.text, 10); + } + + if (actorData.system.stats.memory.temp >= Number(result.range[0]) && actorData.system.stats.memory.basic_bonus <= Number(result.range[1])) { + actorData.system.stats.memory.basic_bonus = parseInt(result.text, 10); + } + + if (actorData.system.stats.reasoning.temp >= Number(result.range[0]) && actorData.system.stats.reasoning.basic_bonus <= Number(result.range[1])) { + actorData.system.stats.reasoning.basic_bonus = parseInt(result.text, 10); + } + + if (actorData.system.stats.self_discipline.temp >= Number(result.range[0]) && actorData.system.stats.self_discipline.basic_bonus <= Number(result.range[1])) { + actorData.system.stats.self_discipline.basic_bonus = parseInt(result.text, 10); + } + + if (actorData.system.stats.empathy.temp >= Number(result.range[0]) && actorData.system.stats.empathy.basic_bonus <= Number(result.range[1])) { + actorData.system.stats.empathy.basic_bonus = parseInt(result.text, 10); + } + + if (actorData.system.stats.intuition.temp >= Number(result.range[0]) && actorData.system.stats.intuition.basic_bonus <= Number(result.range[1])) { + actorData.system.stats.intuition.basic_bonus = parseInt(result.text, 10); + } + + if (actorData.system.stats.presence.temp >= Number(result.range[0]) && actorData.system.stats.presence.basic_bonus <= Number(result.range[1])) { + actorData.system.stats.presence.basic_bonus = parseInt(result.text, 10); + } + + if (actorData.system.stats.quickness.temp >= Number(result.range[0]) && actorData.system.stats.quickness.basic_bonus <= Number(result.range[1])) { + actorData.system.stats.quickness.basic_bonus = parseInt(result.text, 10); + } + + if (actorData.system.stats.strength.temp >= Number(result.range[0]) && actorData.system.stats.strength.basic_bonus <= Number(result.range[1])) { + actorData.system.stats.strength.basic_bonus = parseInt(result.text, 10); + } + } + } + } + } + // Tally each stat bonus and populate the total field. calculateStatBonuses(actorData) { const systemData = actorData.system; diff --git a/rmss/module/sheets/actors/rmss_player_sheet.js b/rmss/module/sheets/actors/rmss_player_sheet.js index 283ac2f..11d16da 100644 --- a/rmss/module/sheets/actors/rmss_player_sheet.js +++ b/rmss/module/sheets/actors/rmss_player_sheet.js @@ -202,7 +202,7 @@ export default class RMSSPlayerSheet extends ActorSheet { async renderCharacterSettings(data) { console.log(data); - const configSheet = await renderTemplate("systems/rmss/templates/sheets/actors/dialogs/actor-settings.html", data); + const configSheet = await renderTemplate("systems/rmss/templates/sheets/actors/dialogs/app_skill_category_importer.html", data); return (configSheet); } @@ -215,6 +215,11 @@ export default class RMSSPlayerSheet extends ActorSheet { item.sheet.render(true); }); + html.find(".item-roll").click(ev => { + const item = this.actor.items.get(ev.currentTarget.getAttribute("data-item-id")); + new game.rmss.applications.RMSSToolsDiceRoller(item.name, item.system.total_bonus).render(true); + }); + // ------------------------------------------------------------- // Everything below here is only needed if the sheet is editable if (!this.isEditable) return; @@ -229,15 +234,14 @@ export default class RMSSPlayerSheet extends ActorSheet { item.delete(); }); - // Show Sheet Settings + // Show Skill Category Importer html.find(".import-skillcats").click(async ev => { let selectOptions = {}; for (const pack of game.packs) { selectOptions[pack.metadata.id] = pack.metadata.label; } - - new game.rmss.applications.RMSSActorSheetConfig(selectOptions, this.actor).render(true); + new game.rmss.applications.RMSSToolsSCImporter(selectOptions, this.actor).render(true); }); // Check/Uncheck Favorite Skill diff --git a/rmss/module/sheets/apps/rmss_dice_roller.js b/rmss/module/sheets/apps/rmss_dice_roller.js new file mode 100644 index 0000000..6bf0a6c --- /dev/null +++ b/rmss/module/sheets/apps/rmss_dice_roller.js @@ -0,0 +1,85 @@ +import { + roll_one_to_onehundred, + roll_low_open_ended, + roll_high_open_ended, + roll_open_ended +} from "./rmss_dice_roller_rolls.js"; +import { + getOpenEndedRollModifier, + processOpenEndedSixtySixRoll, + processOpenEndedRoll, + processHighOpenEndedRoll, + processLowOpenEndedRoll +} from "./rmss_dice_roller_processing.js"; + +export default class RMSSToolsDiceRoller extends FormApplication { + constructor(itemName, characterBonus) { + super(); + this.itemName = itemName; + this.characterBonus = characterBonus; + this.rollType = [ + {value: "one_to_onehundred", text: "1-100", selected: false}, + {value: "open_ended", text: "Open-Ended", selected: true}, + {value: "high_open_ended", text: "High Open-Ended", selected: false}, + {value: "low_open_ended", text: "Low Open-Ended", selected: false} + ]; + } + + static get defaultOptions() { + return mergeObject(super.defaultOptions, { + classes: ["form"], + title: "Rolemaster Dice Roller", + popOut: true, + width: 380, + height: 210, + template: "systems/rmss/templates/sheets/apps/app_dice_roller.html" + }); + } + + getData() { + // Send data to the template + return { + itemName: this.itemName, + characterBonus: this.characterBonus, + selectOptions: this.rollType, + }; + } + + activateListeners(html) { + super.activateListeners(html); + } + + async _updateObject(event, formData) { + console.log("Rolling Dice"); + console.log(formData); + console.log(event); + switch (formData.rollType) { + case "one_to_onehundred": + this.roll_one_to_onehundred(); + break; + case "open_ended": + this.roll_open_ended(); + break; + case "high_open_ended": + this.roll_high_open_ended(); + break; + case "low_open_ended": + this.roll_low_open_ended(); + break; + } + } +} + +RMSSToolsDiceRoller.prototype.roll_one_to_onehundred = roll_one_to_onehundred; +RMSSToolsDiceRoller.prototype.roll_low_open_ended = roll_low_open_ended; +RMSSToolsDiceRoller.prototype.roll_high_open_ended = roll_high_open_ended; +RMSSToolsDiceRoller.prototype.roll_open_ended = roll_open_ended; + +RMSSToolsDiceRoller.prototype.getOpenEndedRollModifier = + getOpenEndedRollModifier; +RMSSToolsDiceRoller.prototype.processOpenEndedSixtySixRoll = + processOpenEndedSixtySixRoll; +RMSSToolsDiceRoller.prototype.processOpenEndedRoll = processOpenEndedRoll; +RMSSToolsDiceRoller.prototype.processHighOpenEndedRoll = + processHighOpenEndedRoll; +RMSSToolsDiceRoller.prototype.processLowOpenEndedRoll = processLowOpenEndedRoll; diff --git a/rmss/module/sheets/apps/rmss_dice_roller_processing.js b/rmss/module/sheets/apps/rmss_dice_roller_processing.js new file mode 100644 index 0000000..727839f --- /dev/null +++ b/rmss/module/sheets/apps/rmss_dice_roller_processing.js @@ -0,0 +1,131 @@ +export async function getOpenEndedRollModifier() { + return await new Roll("1d100x>95").roll({ async: true }); +} + +export function processOpenEndedSixtySixRoll(baseroll, rolltype) { + // Log the Roll to Chat + let chatOptions = { + type: CONST.CHAT_MESSAGE_TYPES.ROLL, + rolls: [baseroll], + flavor: rolltype, + rollMode: game.settings.get("core", "rollMode"), + content: "You rolled a 66!", + }; + + ChatMessage.create(chatOptions); +} + +export function processOpenEndedRoll(baseroll, rolltype) { + // Define the Chat Message Template + let chatTemplate = "systems/rmss/templates/chat/chat_dice_roll.html"; + + // Pass the Data through to be used in the Chat Message + let chatData = { + baseroll: baseroll, + total: baseroll.result, + highopen: false, + lowopen: false, + }; + + // Render the Rolls to the Chat Window + renderTemplate(chatTemplate, chatData).then((html) => { + let chatOptions = { + type: CONST.CHAT_MESSAGE_TYPES.ROLL, + rolls: [baseroll], + flavor: rolltype, + rollMode: game.settings.get("core", "rollMode"), + content: html, + }; + + ChatMessage.create(chatOptions); + }); +} + +export async function processHighOpenEndedRoll(baseroll, rolltype) { + // Get the Base Roll followed by the High Open Ended Roll + let originalRoll = baseroll; + let openendedRoll = await this.getOpenEndedRollModifier(); + + // Create a rolls array for Dice So Nice integration. + let rolls = [originalRoll, openendedRoll]; + + // Create an Array to hold the High Open Ended Roll Results and set the total to base roll + let openendedResults = []; + let total = Number(originalRoll.result); + + // Each time the High Open Ended Roll is triggered add the result to an array and add it to the total. + for (const rollResult of openendedRoll.dice[0].results) { + openendedResults.push(rollResult.result); + total = total + Number(rollResult.result); + } + + // Define the Chat Message Template + let chatTemplate = "systems/rmss/templates/chat/chat_dice_roll.html"; + + // Pass the Data through to be used in the Chat Message + let chatData = { + baseroll: baseroll, + opeendedresults: [openendedResults], + highopen: true, + lowopen: false, + total: total, + }; + + // Render the Rolls to the Chat Window + renderTemplate(chatTemplate, chatData).then((html) => { + let chatOptions = { + type: CONST.CHAT_MESSAGE_TYPES.ROLL, + rolls: rolls, + flavor: rolltype, + rollMode: game.settings.get("core", "rollMode"), + content: html, + }; + + ChatMessage.create(chatOptions); + }); +} + +export async function processLowOpenEndedRoll(baseroll, rolltype) { + // Get the Base Roll followed by the Low Open Ended Roll + let originalRoll = baseroll; + let openendedRoll = await this.getOpenEndedRollModifier(); + + // Create a rolls array for Dice So Nice integration. + let rolls = [originalRoll, openendedRoll]; + + // Create an Array to hold the Low Open Ended Roll Results and set the total to base roll + let openendedResults = []; + let total = Number(originalRoll.result); + + // Each time the Low Open Ended Roll is triggered add the result to an array and subtract it from the total. + for (const rollResult of openendedRoll.dice[0].results) { + openendedResults.push(rollResult.result); + total = total - Number(rollResult.result); + } + + // Define the Chat Message Template + let chatTemplate = "systems/rmss/templates/chat/chat_dice_roll.html"; + + // Pass the Data through to be used in the Chat Message + let chatData = { + baseroll: baseroll, + rolls: rolls, + opeendedresults: [openendedResults], + highopen: false, + lowopen: true, + total: total, + }; + + // Render the Rolls to the Chat Window + renderTemplate(chatTemplate, chatData).then((html) => { + let chatOptions = { + type: CONST.CHAT_MESSAGE_TYPES.ROLL, + rolls: rolls, + flavor: rolltype, + rollMode: game.settings.get("core", "rollMode"), + content: html, + }; + + ChatMessage.create(chatOptions); + }); +} diff --git a/rmss/module/sheets/apps/rmss_dice_roller_rolls.js b/rmss/module/sheets/apps/rmss_dice_roller_rolls.js new file mode 100644 index 0000000..21bff32 --- /dev/null +++ b/rmss/module/sheets/apps/rmss_dice_roller_rolls.js @@ -0,0 +1,71 @@ +export async function roll_one_to_onehundred() { + // Construct the Roll instance + let baseroll = await new Roll("1d100 + @characterBonus", {characterBonus: this.characterBonus}).roll({async: true}); + let rolltype = "Roll Type: 1-100"; + + // Log the Roll to Chat + let chatOptions = { + type: CONST.CHAT_MESSAGE_TYPES.ROLL, + rolls: [baseroll], + flavor: rolltype, + rollMode: game.settings.get("core", "rollMode") + }; + + ChatMessage.create(chatOptions); + this.close(); +}; + +export async function roll_low_open_ended() { + // Construct the Roll instance + let baseroll = await new Roll("1d100").roll({async: true}); + console.log(baseroll.result); + let rolltype = "Roll Type: Low Open-Ended"; + + switch (true) { + case (baseroll.result < 6): + this.processLowOpenEndedRoll(baseroll, rolltype); + break; + case (baseroll.result === 66): + this.processOpenEndedSixtySixRoll(baseroll, rolltype); + break; + default: + this.processOpenEndedRoll(baseroll, rolltype); + } +} + +export async function roll_high_open_ended() { + // Construct the Roll instance + let baseroll = await new Roll("1d100").roll({async: true}); + console.log(baseroll.result); + let rolltype = "Roll Type: High Open-Ended"; + switch (true) { + case (baseroll.result === 66): + this.processOpenEndedSixtySixRoll(baseroll, rolltype); + break; + case (baseroll.result > 95): + this.processHighOpenEndedRoll(baseroll, rolltype); + break; + default: + this.processOpenEndedRoll(baseroll, rolltype); + } +} + +export async function roll_open_ended() { + // Construct the Roll instance + let baseroll = await new Roll("1d100").roll({async: true}); + console.log(baseroll.result); + let rolltype = "Roll Type: Open-Ended"; + switch (true) { + case (baseroll.result < 6): + this.processLowOpenEndedRoll(baseroll, rolltype); + break; + case (baseroll.result === 66): + this.processOpenEndedSixtySixRoll(baseroll, rolltype); + break; + case (baseroll.result > 95): + this.processHighOpenEndedRoll(baseroll, rolltype); + break; + default: + this.processOpenEndedRoll(baseroll, rolltype); + } +} diff --git a/rmss/module/sheets/apps/rmss_import_skill_categories.js b/rmss/module/sheets/apps/rmss_import_skill_categories.js new file mode 100644 index 0000000..22c6c86 --- /dev/null +++ b/rmss/module/sheets/apps/rmss_import_skill_categories.js @@ -0,0 +1,56 @@ +export default class RMSSToolsSCImporter extends FormApplication { + + constructor(selectOptions, character) { + super(); + this.selectOptions = selectOptions; + this.character = character; + } + + static get defaultOptions() { + return mergeObject(super.defaultOptions, { + classes: ["form"], + popOut: true, + title: "Import Skill Categories", + template: "systems/rmss/templates/sheets/apps/app_skill_category_importer.html" + }); + } + + getData() { + // Send data to the template + return { + selectOptions: this.selectOptions + }; + } + + activateListeners(html) { + super.activateListeners(html); + } + + async _updateObject(event, formData) { + console.log("Deleting Old Skill Categories."); + for (const item of this.character.items) { + if (item.type === "skill_category") { + item.delete(); + } + } + + const pack = game.packs.get(formData.selectOptions); + const skillCategoryData = await pack.getIndex(); + + console.log("Importing New Skill Categories."); + + for (const sc of skillCategoryData) { + const newitem = await pack.getDocument(sc._id); + + let newDocuments = []; + if (newitem.type === "skill_category") { + console.log(newitem); + newDocuments.push(newitem); + } + if (newDocuments.length > 0) { + await Item.createDocuments(newDocuments, {parent: this.character}); + } + } + } +} + diff --git a/rmss/packs/skill_categories.db b/rmss/packs/rmss_skill_categories.db similarity index 100% rename from rmss/packs/skill_categories.db rename to rmss/packs/rmss_skill_categories.db diff --git a/rmss/packs/smss_skill_categories.db b/rmss/packs/smss_skill_categories.db new file mode 100644 index 0000000..9c20b02 --- /dev/null +++ b/rmss/packs/smss_skill_categories.db @@ -0,0 +1,48 @@ +{"name":"Special Attacks","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","system":{"description":"Description here.","applicable_stats":"St/Ag/SD","app_stat_1":"St","app_stat_2":"Ag","app_stat_3":"SD","development_cost":"0","ranks":0,"new_ranks":{"value":0,"max":3,"max_default":3},"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"flags":{"core":{"sourceId":"Item.by1LH6XYGWd5d9bs"}},"_stats":{"systemId":"rmss","systemVersion":"0.0.3","coreVersion":"10.291","createdTime":1662898332987,"modifiedTime":1670979889250,"lastModifiedBy":"AKzFUDVFn0NcwQv9"},"folder":null,"sort":0,"ownership":{"default":0,"AKzFUDVFn0NcwQv9":3},"_id":"19mzrZOIjHOQMJRb"} +{"name":"Athletic • Gymnastics","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","system":{"description":"Description here.","applicable_stats":"Ag/Qu/Ag","app_stat_1":"Ag","app_stat_2":"Qu","app_stat_3":"Ag","development_cost":"0","ranks":0,"new_ranks":{"value":0,"max":3,"max_default":3},"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"flags":{"core":{"sourceId":"Item.TASzGNEwHMQUz1AV"}},"_stats":{"systemId":"rmss","systemVersion":"0.0.3","coreVersion":"10.291","createdTime":1662897573841,"modifiedTime":1670979417390,"lastModifiedBy":"AKzFUDVFn0NcwQv9"},"folder":null,"sort":0,"ownership":{"default":0,"AKzFUDVFn0NcwQv9":3},"_id":"1pzqttjfJqGkCio2"} +{"name":"Lore • Technical","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","system":{"description":"Description here.","applicable_stats":"Me/Re/Me","app_stat_1":"Me","app_stat_2":"Re","app_stat_3":"Me","development_cost":"0","ranks":0,"new_ranks":{"value":0,"max":3,"max_default":3},"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"flags":{"core":{"sourceId":"Item.Tw2FXIQb5HA89kbX"}},"_stats":{"systemId":"rmss","systemVersion":"0.0.3","coreVersion":"10.291","createdTime":1662898032616,"modifiedTime":1670979629255,"lastModifiedBy":"AKzFUDVFn0NcwQv9"},"folder":null,"sort":0,"ownership":{"default":0,"AKzFUDVFn0NcwQv9":3},"_id":"8b1DqVmR2w3aFZ9H"} +{"name":"Armor • Medium","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","system":{"description":"Description here.","applicable_stats":"St/Ag/St","app_stat_1":"St","app_stat_2":"Ag","app_stat_3":"St","development_cost":"0","ranks":0,"new_ranks":{"value":0,"max":3,"max_default":3},"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"flags":{"core":{"sourceId":"Item.ENiEBop9Kgrn9pBt"}},"_stats":{"systemId":"rmss","systemVersion":"0.0.3","coreVersion":"10.291","createdTime":1662897408501,"modifiedTime":1670979376804,"lastModifiedBy":"AKzFUDVFn0NcwQv9"},"folder":null,"sort":0,"ownership":{"default":0,"AKzFUDVFn0NcwQv9":3},"_id":"9tRVGNuqiUXLkt7X"} +{"name":"Outdoor • Environmental","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","system":{"description":"Description here.","applicable_stats":"SD/In/Me","app_stat_1":"SD","app_stat_2":"In","app_stat_3":"Me","development_cost":"0","ranks":0,"new_ranks":{"value":0,"max":3,"max_default":3},"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"flags":{"core":{"sourceId":"Item.49iK0oluVd5Z1fpc"}},"_stats":{"systemId":"rmss","systemVersion":"0.0.3","coreVersion":"10.291","createdTime":1662898214394,"modifiedTime":1670979688946,"lastModifiedBy":"AKzFUDVFn0NcwQv9"},"folder":null,"sort":0,"ownership":{"default":0,"AKzFUDVFn0NcwQv9":3},"_id":"AleqAY3hcYEWwKOx"} +{"name":"Awareness • Perceptions","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","system":{"description":"Description here.","applicable_stats":"In/SD/In","app_stat_1":"In","app_stat_2":"SD","app_stat_3":"In","development_cost":"0","ranks":0,"new_ranks":{"value":0,"max":3,"max_default":3},"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"flags":{"core":{"sourceId":"Item.gJHBJS3aEz62XbxE"}},"_stats":{"systemId":"rmss","systemVersion":"0.0.3","coreVersion":"10.291","createdTime":1662897610482,"modifiedTime":1670979421091,"lastModifiedBy":"AKzFUDVFn0NcwQv9"},"folder":null,"sort":0,"ownership":{"default":0,"AKzFUDVFn0NcwQv9":3},"_id":"CYkI6APa2sQ772D0"} +{"name":"Directed Powers","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","system":{"description":"Description here.","applicable_stats":"Ag/SD/Ag","app_stat_1":"Ag","app_stat_2":"SD","app_stat_3":"Ag","development_cost":"0","ranks":0,"new_ranks":{"value":0,"max":3,"max_default":3},"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"flags":{"core":{"sourceId":"Item.RA46DfHavzTTrp99"}},"_stats":{"systemId":"rmss","systemVersion":"0.0.3","coreVersion":"10.291","createdTime":1662897900117,"modifiedTime":1670979547990,"lastModifiedBy":"AKzFUDVFn0NcwQv9"},"folder":null,"sort":0,"ownership":{"default":0,"AKzFUDVFn0NcwQv9":3},"_id":"CjTPpZGQoacSBAyu"} +{"name":"Science/Analytic • Medical","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","system":{"description":"Description here.","applicable_stats":"Me/Re/In","app_stat_1":"Me","app_stat_2":"Re","app_stat_3":"In","development_cost":"0","ranks":0,"new_ranks":{"value":0,"max":3,"max_default":3},"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"flags":{"core":{"sourceId":"Item.BfDFjciYPFezmes0"}},"_stats":{"systemId":"rmss","systemVersion":"0.0.3","coreVersion":"10.291","createdTime":1662898290307,"modifiedTime":1670979824114,"lastModifiedBy":"AKzFUDVFn0NcwQv9"},"folder":null,"sort":0,"ownership":{"default":0,"AKzFUDVFn0NcwQv9":3},"_id":"DAwVBEPE5QJHoxIt"} +{"name":"Science/Analytic • Basic","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","system":{"description":"Description here.","applicable_stats":"Re/Me/Re","app_stat_1":"Re","app_stat_2":"Me","app_stat_3":"Re","development_cost":"0","ranks":0,"new_ranks":{"value":0,"max":3,"max_default":3},"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"flags":{"core":{"sourceId":"Item.BfDFjciYPFezmes0"}},"_stats":{"systemId":"rmss","systemVersion":"0.0.3","coreVersion":"10.291","createdTime":1662898290307,"modifiedTime":1670979752303,"lastModifiedBy":"AKzFUDVFn0NcwQv9"},"folder":null,"sort":0,"ownership":{"default":0,"AKzFUDVFn0NcwQv9":3},"_id":"FEqpspsCMjUJz7FE"} +{"name":"Awareness • Senses","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","system":{"description":"Description here.","applicable_stats":"In/SD/In","app_stat_1":"In","app_stat_2":"SD","app_stat_3":"In","development_cost":"0","ranks":0,"new_ranks":{"value":0,"max":3,"max_default":3},"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"flags":{"core":{"sourceId":"Item.QplAVXReCFVlKVB8"}},"_stats":{"systemId":"rmss","systemVersion":"0.0.3","coreVersion":"10.291","createdTime":1662897666266,"modifiedTime":1670979423515,"lastModifiedBy":"AKzFUDVFn0NcwQv9"},"folder":null,"sort":0,"ownership":{"default":0,"AKzFUDVFn0NcwQv9":3},"_id":"KJZRbH17p30EJa04"} +{"name":"Weapon • 1-H Melee","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","system":{"description":"Description here.","applicable_stats":"St/Ag/St","app_stat_1":"St","app_stat_2":"Ag","app_stat_3":"St","development_cost":"0","ranks":0,"new_ranks":{"value":0,"max":3,"max_default":3},"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"flags":{"core":{"sourceId":"Item.CXllZNGgTe80uZRQ"}},"_stats":{"systemId":"rmss","systemVersion":"0.0.3","coreVersion":"10.291","createdTime":1662898744329,"modifiedTime":1670980248154,"lastModifiedBy":"AKzFUDVFn0NcwQv9"},"folder":null,"sort":0,"ownership":{"default":0,"AKzFUDVFn0NcwQv9":3},"_id":"KZeBMZBjBkGctBb0"} +{"name":"Athletic • Endurance","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","system":{"description":"Description here.","applicable_stats":"Co/Ag/St","app_stat_1":"Co","app_stat_2":"Ag","app_stat_3":"St","development_cost":"0","ranks":0,"new_ranks":{"value":0,"max":3,"max_default":3},"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"flags":{"core":{"sourceId":"Item.ldmZhkHo8m4VvV2V"}},"_stats":{"systemId":"rmss","systemVersion":"0.0.3","coreVersion":"10.291","createdTime":1662897539929,"modifiedTime":1670979416149,"lastModifiedBy":"AKzFUDVFn0NcwQv9"},"folder":null,"sort":0,"ownership":{"default":0,"AKzFUDVFn0NcwQv9":3},"_id":"Ko33CPZI7C0rSIRl"} +{"name":"Subterfuge • Stealth","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","system":{"description":"Description here.","applicable_stats":"Ag/SD/In","app_stat_1":"Ag","app_stat_2":"SD","app_stat_3":"In","development_cost":"0","ranks":0,"new_ranks":{"value":0,"max":3,"max_default":3},"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"flags":{"core":{"sourceId":"Item.FM9stBeKGFVdAPdc"}},"_stats":{"systemId":"rmss","systemVersion":"0.0.3","coreVersion":"10.291","createdTime":1662898591826,"modifiedTime":1670979913428,"lastModifiedBy":"AKzFUDVFn0NcwQv9"},"folder":null,"sort":0,"ownership":{"default":0,"AKzFUDVFn0NcwQv9":3},"_id":"LBLcWrV4qjxllEw9"} +{"name":"Weapon • 2-H Melee","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","system":{"description":"Description here.","applicable_stats":"St/Ag/St","app_stat_1":"St","app_stat_2":"Ag","app_stat_3":"St","development_cost":"0","ranks":0,"new_ranks":{"value":0,"max":3,"max_default":3},"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"flags":{"core":{"sourceId":"Item.CXllZNGgTe80uZRQ"}},"_stats":{"systemId":"rmss","systemVersion":"0.0.3","coreVersion":"10.291","createdTime":1662898744329,"modifiedTime":1670980269575,"lastModifiedBy":"AKzFUDVFn0NcwQv9"},"folder":null,"sort":0,"ownership":{"default":0,"AKzFUDVFn0NcwQv9":3},"_id":"Ld41o7ekmwzXwXgQ"} +{"name":"Subterfuge • Mechanics","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","system":{"description":"Description here.","applicable_stats":"In/Ag/Re","app_stat_1":"In","app_stat_2":"Ag","app_stat_3":"Re","development_cost":"0","ranks":0,"new_ranks":{"value":0,"max":3,"max_default":3},"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"flags":{"core":{"sourceId":"Item.O0Zwk5hAhCMx6ajP"}},"_stats":{"systemId":"rmss","systemVersion":"0.0.3","coreVersion":"10.291","createdTime":1662898576285,"modifiedTime":1670979911668,"lastModifiedBy":"AKzFUDVFn0NcwQv9"},"folder":null,"sort":0,"ownership":{"default":0,"AKzFUDVFn0NcwQv9":3},"_id":"Mspp4CJDKjuqxVxU"} +{"name":"Weapon • 1-H Firearms","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","system":{"description":"Description here.","applicable_stats":"Ag/St/Ag","app_stat_1":"Ag","app_stat_2":"St","app_stat_3":"Ag","development_cost":"0","ranks":0,"new_ranks":{"value":0,"max":3,"max_default":3},"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"flags":{"core":{"sourceId":"Item.CXllZNGgTe80uZRQ"}},"_stats":{"systemId":"rmss","systemVersion":"0.0.3","coreVersion":"10.291","createdTime":1662898744329,"modifiedTime":1670980265600,"lastModifiedBy":"AKzFUDVFn0NcwQv9"},"folder":null,"sort":0,"ownership":{"default":0,"AKzFUDVFn0NcwQv9":3},"_id":"NZXsMbVcm9kYd1gB"} +{"name":"Weapon • 1-H Energy","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","system":{"description":"Description here.","applicable_stats":"Ag/Ag/Ag","app_stat_1":"Ag","app_stat_2":"Ag","app_stat_3":"Ag","development_cost":"0","ranks":0,"new_ranks":{"value":0,"max":3,"max_default":3},"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"flags":{"core":{"sourceId":"Item.CXllZNGgTe80uZRQ"}},"_stats":{"systemId":"rmss","systemVersion":"0.0.3","coreVersion":"10.291","createdTime":1662898744329,"modifiedTime":1670980254758,"lastModifiedBy":"AKzFUDVFn0NcwQv9"},"folder":null,"sort":0,"ownership":{"default":0,"AKzFUDVFn0NcwQv9":3},"_id":"On5jQJQVDflVDAp7"} +{"name":"Technical/Trade • Professional","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","system":{"description":"Description here.","applicable_stats":"Re/Me/In","app_stat_1":"Re","app_stat_2":"Me","app_stat_3":"In","development_cost":"0","ranks":0,"new_ranks":{"value":0,"max":3,"max_default":3},"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"flags":{"core":{"sourceId":"Item.xNTn6oV9yMOmfP0Z"}},"_stats":{"systemId":"rmss","systemVersion":"0.0.3","coreVersion":"10.291","createdTime":1662898699996,"modifiedTime":1670979981424,"lastModifiedBy":"AKzFUDVFn0NcwQv9"},"folder":null,"sort":0,"ownership":{"default":0,"AKzFUDVFn0NcwQv9":3},"_id":"PtPyhFeSb8OuqGIt"} +{"name":"Lore • Academic","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","system":{"description":"Description here.","applicable_stats":"Me/Re/Me","app_stat_1":"Me","app_stat_2":"Re","app_stat_3":"Me","development_cost":"0","ranks":0,"new_ranks":{"value":0,"max":3,"max_default":3},"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"flags":{"core":{"sourceId":"Item.V9otC0Kh0y0B3P8Q"}},"_stats":{"systemId":"rmss","systemVersion":"0.0.3","coreVersion":"10.291","createdTime":1662897982070,"modifiedTime":1670979619507,"lastModifiedBy":"AKzFUDVFn0NcwQv9"},"folder":null,"sort":0,"ownership":{"default":0,"AKzFUDVFn0NcwQv9":3},"_id":"Q1fe44wicIwgiOW0"} +{"name":"Weapon • 2-H Firearms","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","system":{"description":"Description here.","applicable_stats":"Ag/St/Ag","app_stat_1":"Ag","app_stat_2":"St","app_stat_3":"Ag","development_cost":"0","ranks":0,"new_ranks":{"value":0,"max":3,"max_default":3},"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"flags":{"core":{"sourceId":"Item.CXllZNGgTe80uZRQ"}},"_stats":{"systemId":"rmss","systemVersion":"0.0.3","coreVersion":"10.291","createdTime":1662898744329,"modifiedTime":1670980274500,"lastModifiedBy":"AKzFUDVFn0NcwQv9"},"folder":null,"sort":0,"ownership":{"default":0,"AKzFUDVFn0NcwQv9":3},"_id":"QYXxP8bwKoLYf2IJ"} +{"name":"Psychic •","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","system":{"description":"Description here.","applicable_stats":"SD/SD","app_stat_1":"SD","app_stat_2":"SD","app_stat_3":"None","development_cost":"0","ranks":0,"new_ranks":{"value":0,"max":3,"max_default":3},"rank_bonus":-15,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"flags":{"core":{"sourceId":"Item.oAwFLBD7uNUBdNgI"}},"_stats":{"systemId":"rmss","systemVersion":"0.0.3","coreVersion":"10.291","createdTime":1670979716214,"modifiedTime":1670979743085,"lastModifiedBy":"AKzFUDVFn0NcwQv9"},"folder":null,"sort":0,"ownership":{"default":0,"AKzFUDVFn0NcwQv9":3},"_id":"RNo0LJNOdgcTVuVk"} +{"name":"Outdoor • Animal","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","system":{"description":"Description here.","applicable_stats":"Em/Ag/Em","app_stat_1":"Em","app_stat_2":"Ag","app_stat_3":"Em","development_cost":"0","ranks":0,"new_ranks":{"value":0,"max":3,"max_default":3},"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"flags":{"core":{"sourceId":"Item.6UjbXeI6IFrsdTEy"}},"_stats":{"systemId":"rmss","systemVersion":"0.0.3","coreVersion":"10.291","createdTime":1662898166391,"modifiedTime":1670979687230,"lastModifiedBy":"AKzFUDVFn0NcwQv9"},"folder":null,"sort":0,"ownership":{"default":0,"AKzFUDVFn0NcwQv9":3},"_id":"SWttx3JsJVR6WG5e"} +{"name":"Artistic • Passive","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","system":{"description":"Description here.","applicable_stats":"Em/In/Pr","app_stat_1":"Em","app_stat_2":"In","app_stat_3":"Pr","development_cost":"0","ranks":0,"new_ranks":{"value":0,"max":3,"max_default":3},"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"flags":{"core":{"sourceId":"Item.NTMvAPWeh5G55Kjs"}},"_stats":{"systemId":"rmss","systemVersion":"0.0.3","coreVersion":"10.291","createdTime":1662897462965,"modifiedTime":1670979379203,"lastModifiedBy":"AKzFUDVFn0NcwQv9"},"folder":null,"sort":0,"ownership":{"default":0,"AKzFUDVFn0NcwQv9":3},"_id":"U8rN3zps2go0IS6O"} +{"name":"Weapon • Missile/Thrown","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","system":{"description":"Description here.","applicable_stats":"Ag/St/Ag","app_stat_1":"Ag","app_stat_2":"St","app_stat_3":"Ag","development_cost":"0","ranks":0,"new_ranks":{"value":0,"max":3,"max_default":3},"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"flags":{"core":{"sourceId":"Item.8a1d0Z2MfJe0R1Eb"}},"_stats":{"systemId":"rmss","systemVersion":"0.0.3","coreVersion":"10.291","createdTime":1662898823756,"modifiedTime":1670980277959,"lastModifiedBy":"AKzFUDVFn0NcwQv9"},"folder":null,"sort":0,"ownership":{"default":0,"AKzFUDVFn0NcwQv9":3},"_id":"V7IAKktApiLkKNbB"} +{"name":"Combat Maneuvers","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","system":{"description":"Description here.","applicable_stats":"Ag/Qu/SD","app_stat_1":"Ag","app_stat_2":"Qu","app_stat_3":"SD","development_cost":"0","ranks":0,"new_ranks":{"value":0,"max":3,"max_default":3},"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"flags":{"core":{"sourceId":"Item.bwL0nMJePO6OQNue"}},"_stats":{"systemId":"rmss","systemVersion":"0.0.3","coreVersion":"10.291","createdTime":1662897819566,"modifiedTime":1670979488179,"lastModifiedBy":"AKzFUDVFn0NcwQv9"},"folder":null,"sort":0,"ownership":{"default":0,"AKzFUDVFn0NcwQv9":3},"_id":"Yj8rbirDtPSyFxKe"} +{"name":"Lore • General","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","system":{"description":"Description here.","applicable_stats":"Me/Re/Me","app_stat_1":"Me","app_stat_2":"Re","app_stat_3":"Me","development_cost":"0","ranks":0,"new_ranks":{"value":0,"max":3,"max_default":3},"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"flags":{"core":{"sourceId":"Item.5fCeVMz6xVnkmH8o"}},"_stats":{"systemId":"rmss","systemVersion":"0.0.3","coreVersion":"10.291","createdTime":1662897962808,"modifiedTime":1670979625749,"lastModifiedBy":"AKzFUDVFn0NcwQv9"},"folder":null,"sort":0,"ownership":{"default":0,"AKzFUDVFn0NcwQv9":3},"_id":"b969dpNiQSpqaDsH"} +{"name":"Technical/Trade • Gunnery","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","system":{"description":"Description here.","applicable_stats":"In/Ag/Ag","app_stat_1":"In","app_stat_2":"Ag","app_stat_3":"Ag","development_cost":"0","ranks":0,"new_ranks":{"value":0,"max":3,"max_default":3},"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"flags":{"core":{"sourceId":"Item.1td9QGD20b4nkD6h"}},"_stats":{"systemId":"rmss","systemVersion":"0.0.3","coreVersion":"10.291","createdTime":1662898674902,"modifiedTime":1670979967399,"lastModifiedBy":"AKzFUDVFn0NcwQv9"},"folder":null,"sort":0,"ownership":{"default":0,"AKzFUDVFn0NcwQv9":3},"_id":"bgDehY2PthlhPUai"} +{"name":"Martial Arts • Striking","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","system":{"description":"Description here.","applicable_stats":"St/Ag/St","app_stat_1":"St","app_stat_2":"Ag","app_stat_3":"St","development_cost":"0","ranks":0,"new_ranks":{"value":0,"max":3,"max_default":3},"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"flags":{"core":{"sourceId":"Item.HVistg0XNoVGsSKZ"}},"_stats":{"systemId":"rmss","systemVersion":"0.0.3","coreVersion":"10.291","createdTime":1662898114714,"modifiedTime":1670979640244,"lastModifiedBy":"AKzFUDVFn0NcwQv9"},"folder":null,"sort":0,"ownership":{"default":0,"AKzFUDVFn0NcwQv9":3},"_id":"cSJMJ97JBsfZO8Ge"} +{"name":"Technical/Trade • Vocational","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","system":{"description":"Description here.","applicable_stats":"Me/In/Re","app_stat_1":"Me","app_stat_2":"In","app_stat_3":"Re","development_cost":"0","ranks":0,"new_ranks":{"value":0,"max":3,"max_default":3},"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"flags":{"core":{"sourceId":"Item.1td9QGD20b4nkD6h"}},"_stats":{"systemId":"rmss","systemVersion":"0.0.3","coreVersion":"10.291","createdTime":1662898674902,"modifiedTime":1670980052328,"lastModifiedBy":"AKzFUDVFn0NcwQv9"},"folder":null,"sort":0,"ownership":{"default":0,"AKzFUDVFn0NcwQv9":3},"_id":"e6RrjsyHbvz6OuZF"} +{"name":"Influence","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","system":{"description":"Description here.","applicable_stats":"Pr/Em/In","app_stat_1":"Pr","app_stat_2":"Em","app_stat_3":"In","development_cost":"0","ranks":0,"new_ranks":{"value":0,"max":3,"max_default":3},"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"flags":{"core":{"sourceId":"Item.zOKTXAFd6bK3XJZ5"}},"_stats":{"systemId":"rmss","systemVersion":"0.0.3","coreVersion":"10.291","createdTime":1662897929958,"modifiedTime":1670979557055,"lastModifiedBy":"AKzFUDVFn0NcwQv9"},"folder":null,"sort":0,"ownership":{"default":0,"AKzFUDVFn0NcwQv9":3},"_id":"ehfUJPUyO2Fzme35"} +{"name":"Self Control","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","system":{"description":"Description here.","applicable_stats":"SD/Pr/SD","app_stat_1":"SD","app_stat_2":"Pr","app_stat_3":"SD","development_cost":"0","ranks":0,"new_ranks":{"value":0,"max":3,"max_default":3},"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"flags":{"core":{"sourceId":"Item.1B82OxRKQ781NEa9"}},"_stats":{"systemId":"rmss","systemVersion":"0.0.3","coreVersion":"10.291","createdTime":1662898315491,"modifiedTime":1670979881437,"lastModifiedBy":"AKzFUDVFn0NcwQv9"},"folder":null,"sort":0,"ownership":{"default":0,"AKzFUDVFn0NcwQv9":3},"_id":"fjpVO4rOlSIbrsly"} +{"name":"Crafts","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","system":{"description":"Description here.","applicable_stats":"Ag/Me/SD","app_stat_1":"Ag","app_stat_2":"Me","app_stat_3":"SD","development_cost":"0","ranks":0,"new_ranks":{"value":0,"max":3,"max_default":3},"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"flags":{"core":{"sourceId":"Item.6nErPtcQ33WXkyH4"}},"_stats":{"systemId":"rmss","systemVersion":"0.0.3","coreVersion":"10.291","createdTime":1662897865848,"modifiedTime":1670979490274,"lastModifiedBy":"AKzFUDVFn0NcwQv9"},"folder":null,"sort":0,"ownership":{"default":0,"AKzFUDVFn0NcwQv9":3},"_id":"iKc4n9ZubKtG6SvK"} +{"name":"Science/Analytic • Engineering","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","system":{"description":"Description here.","applicable_stats":"Me/Re/In","app_stat_1":"Me","app_stat_2":"Re","app_stat_3":"In","development_cost":"0","ranks":0,"new_ranks":{"value":0,"max":3,"max_default":3},"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"flags":{"core":{"sourceId":"Item.BfDFjciYPFezmes0"}},"_stats":{"systemId":"rmss","systemVersion":"0.0.3","coreVersion":"10.291","createdTime":1662898290307,"modifiedTime":1670979792357,"lastModifiedBy":"AKzFUDVFn0NcwQv9"},"folder":null,"sort":0,"ownership":{"default":0,"AKzFUDVFn0NcwQv9":3},"_id":"jT4YOfJEKXOjW7yN"} +{"name":"Technical/Trade • General","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","system":{"description":"Description here.","applicable_stats":"Re/Me/SD","app_stat_1":"Re","app_stat_2":"Me","app_stat_3":"SD","development_cost":"0","ranks":0,"new_ranks":{"value":0,"max":3,"max_default":3},"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"flags":{"core":{"sourceId":"Item.1td9QGD20b4nkD6h"}},"_stats":{"systemId":"rmss","systemVersion":"0.0.3","coreVersion":"10.291","createdTime":1662898674902,"modifiedTime":1670979941026,"lastModifiedBy":"AKzFUDVFn0NcwQv9"},"folder":null,"sort":0,"ownership":{"default":0,"AKzFUDVFn0NcwQv9":3},"_id":"k1fYuSWiGncFKqYq"} +{"name":"Artistic • Active","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","system":{"description":"Description here.","applicable_stats":"Pr/Em/Ag","app_stat_1":"Pr","app_stat_2":"Em","app_stat_3":"Ag","development_cost":"0","ranks":0,"new_ranks":{"value":0,"max":3,"max_default":3},"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"flags":{"core":{"sourceId":"Item.cEffILww7nn8vqJ7"}},"_stats":{"systemId":"rmss","systemVersion":"0.0.3","coreVersion":"10.291","createdTime":1662897441727,"modifiedTime":1670979378056,"lastModifiedBy":"AKzFUDVFn0NcwQv9"},"folder":null,"sort":0,"ownership":{"default":0,"AKzFUDVFn0NcwQv9":3},"_id":"mM8gBxoxUWs9JwaZ"} +{"name":"Subterfuge • Attack","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","system":{"description":"Description here.","applicable_stats":"Ag/SD/In","app_stat_1":"Ag","app_stat_2":"SD","app_stat_3":"In","development_cost":"0","ranks":0,"new_ranks":{"value":0,"max":3,"max_default":3},"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"flags":{"core":{"sourceId":"Item.Zva3DO0Zmk3G5xWT"}},"_stats":{"systemId":"rmss","systemVersion":"0.0.3","coreVersion":"10.291","createdTime":1662898559045,"modifiedTime":1670979909587,"lastModifiedBy":"AKzFUDVFn0NcwQv9"},"folder":null,"sort":0,"ownership":{"default":0,"AKzFUDVFn0NcwQv9":3},"_id":"nel3MMlV6G6UbUqz"} +{"name":"Armor • Light","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","system":{"description":"Description here.","applicable_stats":"Ag/St/Ag","app_stat_1":"Ag","app_stat_2":"St","app_stat_3":"Ag","development_cost":"0","ranks":0,"new_ranks":{"value":0,"max":3,"max_default":3},"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"flags":{"core":{"sourceId":"Item.TMGapmlYutNuQaw8"}},"_stats":{"systemId":"rmss","systemVersion":"0.0.3","coreVersion":"10.291","createdTime":1662897388838,"modifiedTime":1670979375450,"lastModifiedBy":"AKzFUDVFn0NcwQv9"},"folder":null,"sort":0,"ownership":{"default":0,"AKzFUDVFn0NcwQv9":3},"_id":"oUBH3ZiQhwgyEwuC"} +{"name":"Athletic • Brawn","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","system":{"description":"Description here.","applicable_stats":"St/Co/Ag","app_stat_1":"St","app_stat_2":"Co","app_stat_3":"Ag","development_cost":"0","ranks":0,"new_ranks":{"value":0,"max":3,"max_default":3},"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"flags":{"core":{"sourceId":"Item.VufLKW42mP7RtinG"}},"_stats":{"systemId":"rmss","systemVersion":"0.0.3","coreVersion":"10.291","createdTime":1662897509473,"modifiedTime":1670979414458,"lastModifiedBy":"AKzFUDVFn0NcwQv9"},"folder":null,"sort":0,"ownership":{"default":0,"AKzFUDVFn0NcwQv9":3},"_id":"omcYQ5goZenLxv1d"} +{"name":"Awareness • Searching","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","system":{"description":"Description here.","applicable_stats":"In/Re/SD","app_stat_1":"In","app_stat_2":"Re","app_stat_3":"SD","development_cost":"0","ranks":0,"new_ranks":{"value":0,"max":3,"max_default":3},"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"flags":{"core":{"sourceId":"Item.NZl30XPdtYjHqtwp"}},"_stats":{"systemId":"rmss","systemVersion":"0.0.3","coreVersion":"10.291","createdTime":1662897647294,"modifiedTime":1670979422361,"lastModifiedBy":"AKzFUDVFn0NcwQv9"},"folder":null,"sort":0,"ownership":{"default":0,"AKzFUDVFn0NcwQv9":3},"_id":"pa35A84DZkI6I611"} +{"name":"Weapon • Support","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","system":{"description":"Description here.","applicable_stats":"Ag/St/Ag","app_stat_1":"Ag","app_stat_2":"St","app_stat_3":"Ag","development_cost":"0","ranks":0,"new_ranks":{"value":0,"max":3,"max_default":3},"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"flags":{"core":{"sourceId":"Item.8a1d0Z2MfJe0R1Eb"}},"_stats":{"systemId":"rmss","systemVersion":"0.0.3","coreVersion":"10.291","createdTime":1662898823756,"modifiedTime":1670980279746,"lastModifiedBy":"AKzFUDVFn0NcwQv9"},"folder":null,"sort":0,"ownership":{"default":0,"AKzFUDVFn0NcwQv9":3},"_id":"pkxuna2rIm1ZjyEK"} +{"name":"Armor • Heavy","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","system":{"description":"Description here.","applicable_stats":"St/Ag/St","app_stat_1":"St","app_stat_2":"Ag","app_stat_3":"St","development_cost":"0","ranks":0,"new_ranks":{"value":0,"max":3,"max_default":3},"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"flags":{"core":{"sourceId":"Item.7UA8xwzcBrKZfFk9"}},"_stats":{"systemId":"rmss","systemVersion":"0.0.3","coreVersion":"10.291","createdTime":1662897366792,"modifiedTime":1670979372753,"lastModifiedBy":"AKzFUDVFn0NcwQv9"},"folder":null,"sort":0,"ownership":{"default":0,"AKzFUDVFn0NcwQv9":3},"_id":"r6D1tALgD1wR0GGj"} +{"name":"Weapon • 2-H Energy","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","system":{"description":"Description here.","applicable_stats":"Ag/Ag/Ag","app_stat_1":"Ag","app_stat_2":"Ag","app_stat_3":"Ag","development_cost":"0","ranks":0,"new_ranks":{"value":0,"max":3,"max_default":3},"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"flags":{"core":{"sourceId":"Item.CXllZNGgTe80uZRQ"}},"_stats":{"systemId":"rmss","systemVersion":"0.0.3","coreVersion":"10.291","createdTime":1662898744329,"modifiedTime":1670980272057,"lastModifiedBy":"AKzFUDVFn0NcwQv9"},"folder":null,"sort":0,"ownership":{"default":0,"AKzFUDVFn0NcwQv9":3},"_id":"rw987ZssCMcfx8n7"} +{"name":"Urban","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","system":{"description":"Description here.","applicable_stats":"In/Pr/Re","app_stat_1":"In","app_stat_2":"Pr","app_stat_3":"Re","development_cost":"0","ranks":0,"new_ranks":{"value":0,"max":3,"max_default":3},"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"flags":{"core":{"sourceId":"Item.JAY4cM0lv1wZm3vo"}},"_stats":{"systemId":"rmss","systemVersion":"0.0.3","coreVersion":"10.291","createdTime":1662898721300,"modifiedTime":1670980058009,"lastModifiedBy":"AKzFUDVFn0NcwQv9"},"folder":null,"sort":0,"ownership":{"default":0,"AKzFUDVFn0NcwQv9":3},"_id":"sV50mwPLEO7ju9nT"} +{"name":"Communcations","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","system":{"description":"Description here.","applicable_stats":"Re/Me/Em","app_stat_1":"Re","app_stat_2":"Me","app_stat_3":"Em","development_cost":"0","ranks":0,"new_ranks":{"value":0,"max":3,"max_default":3},"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"flags":{"core":{"sourceId":"Item.fh63pdckz6VYGAFc"}},"_stats":{"systemId":"rmss","systemVersion":"0.0.3","coreVersion":"10.291","createdTime":1662897838640,"modifiedTime":1670979489034,"lastModifiedBy":"AKzFUDVFn0NcwQv9"},"folder":null,"sort":0,"ownership":{"default":0,"AKzFUDVFn0NcwQv9":3},"_id":"tXyzk5v0PTLAxmFk"} +{"name":"Body Development","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","system":{"description":"Description here.","applicable_stats":"Co/SD/Co","app_stat_1":"Co","app_stat_2":"SD","app_stat_3":"Co","development_cost":"0","ranks":0,"new_ranks":{"value":0,"max":3,"max_default":3},"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"flags":{"core":{"sourceId":"Item.cWtQ0YU3kGBhL8iR"}},"_stats":{"systemId":"rmss","systemVersion":"0.0.3","coreVersion":"10.291","createdTime":1662897724809,"modifiedTime":1670979475450,"lastModifiedBy":"AKzFUDVFn0NcwQv9"},"folder":null,"sort":0,"ownership":{"default":0,"AKzFUDVFn0NcwQv9":3},"_id":"y6Tq2DSvZm0dIZ7A"} +{"name":"Science/Analytic • Specialized","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","system":{"description":"Description here.","applicable_stats":"Re/Me/Re","app_stat_1":"Re","app_stat_2":"Me","app_stat_3":"Re","development_cost":"0","ranks":0,"new_ranks":{"value":0,"max":3,"max_default":3},"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"flags":{"core":{"sourceId":"Item.BfDFjciYPFezmes0"}},"_stats":{"systemId":"rmss","systemVersion":"0.0.3","coreVersion":"10.291","createdTime":1662898290307,"modifiedTime":1670979851643,"lastModifiedBy":"AKzFUDVFn0NcwQv9"},"folder":null,"sort":0,"ownership":{"default":0,"AKzFUDVFn0NcwQv9":3},"_id":"yHwwkDNq6DuylHYa"} +{"name":"Science/Analytic • Technical","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","system":{"description":"Description here.","applicable_stats":"Re/Me/Ag","app_stat_1":"Re","app_stat_2":"Me","app_stat_3":"Ag","development_cost":"0","ranks":0,"new_ranks":{"value":0,"max":3,"max_default":3},"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"flags":{"core":{"sourceId":"Item.BfDFjciYPFezmes0"}},"_stats":{"systemId":"rmss","systemVersion":"0.0.3","coreVersion":"10.291","createdTime":1662898290307,"modifiedTime":1670979874641,"lastModifiedBy":"AKzFUDVFn0NcwQv9"},"folder":null,"sort":0,"ownership":{"default":0,"AKzFUDVFn0NcwQv9":3},"_id":"z1Z1K02tzG1JU5wN"} +{"name":"Mind Point Development","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","system":{"description":"Description here.","applicable_stats":"SD","app_stat_1":"SD","app_stat_2":"None","app_stat_3":"None","development_cost":"0","ranks":0,"new_ranks":{"value":0,"max":3,"max_default":3},"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"flags":{"core":{"sourceId":"Item.Q7rKLS4gJwH2Lygw"}},"_stats":{"systemId":"rmss","systemVersion":"0.0.3","coreVersion":"10.291","createdTime":1662898277091,"modifiedTime":1670979677773,"lastModifiedBy":"AKzFUDVFn0NcwQv9"},"folder":null,"sort":0,"ownership":{"default":0,"AKzFUDVFn0NcwQv9":3},"_id":"zYUB46z7lYODAIK2"} diff --git a/rmss/rmss.css b/rmss/rmss.css index 04c8b12..653de51 100644 --- a/rmss/rmss.css +++ b/rmss/rmss.css @@ -11,7 +11,6 @@ padding-bottom: 3px; display: flex; justify-content: flex-end; - flex-direction: column; justify-content: center; } .skillcat-grid-container > div:nth-child(24n+1), @@ -34,7 +33,6 @@ padding-bottom: 3px; display: flex; justify-content: flex-end; - flex-direction: column; justify-content: center; background-image: linear-gradient(rgba(0, 0, 0, 0.1) 0 0); } @@ -46,6 +44,11 @@ .container { display: flex; } +.rm-heading { + font-size: 1em; + font-family: PragRoman; + border-bottom: 0px; +} .actor-icon { flex-shrink: 1; } @@ -505,6 +508,23 @@ flex-direction: column; justify-content: center; } +.dice-roller-options { + display: flex; + flex-direction: column; +} +.dice-roller-item { + display: flex; + align-items: center; + margin: 5px; +} +.dice-roller-item div { + flex: 1; +} +.roll-button-container { + display: flex; + flex-direction: column; + justify-content: flex-end; +} .sheet form { display: flex; flex-direction: column; diff --git a/rmss/rmss.js b/rmss/rmss.js index 46cc9f7..1894e87 100644 --- a/rmss/rmss.js +++ b/rmss/rmss.js @@ -1,5 +1,6 @@ // Import Configuration Object import { rmss } from "./module/config.js"; +//import { registerGetSceneControlButtonsHook } from "./module/controls.js"; // Import document classes. import { RMSSActor } from "./module/documents/actor.js"; @@ -16,7 +17,8 @@ import RMSSSkillCategorySheet from "./module/sheets/skills/rmss_skill_category_s import RMSSSkillSheet from "./module/sheets/skills/rmss_skill_sheet.js"; import RMSSPlayerSheet from "./module/sheets/actors/rmss_player_sheet.js"; -import RMSSActorSheetConfig from "./module/sheets/actors/rmss_player_sheet_config.js"; +import RMSSToolsSCImporter from "./module/sheets/apps/rmss_import_skill_categories.js"; +import RMSSToolsDiceRoller from "./module/sheets/apps/rmss_dice_roller.js"; /** Preload handlebars templates for character sheets */ async function preloadHandlebarsTemplates() { @@ -41,11 +43,14 @@ async function preloadHandlebarsTemplates() { "systems/rmss/templates/sheets/actors/parts/actor-spells.html", "systems/rmss/templates/sheets/actors/parts/actor-fav-spells.html", "systems/rmss/templates/sheets/actors/parts/actor-fav-items.html", - "systems/rmss/templates/sheets/actors/apps/actor-settings.html" + "systems/rmss/templates/sheets/apps/app_skill_category_importer.html" ]; return loadTemplates(templatePaths); } +// Register Scene Controls +// registerGetSceneControlButtonsHook(); + // Hook the init function and set up our system Hooks.once("init", function() { console.log("rmss | Initialising Rolemaster Standard System"); @@ -56,7 +61,8 @@ Hooks.once("init", function() { RMSSActor, RMSSItem, applications: { - RMSSActorSheetConfig + RMSSToolsSCImporter, + RMSSToolsDiceRoller } }; @@ -64,6 +70,14 @@ Hooks.once("init", function() { CONFIG.Actor.documentClass = RMSSActor; CONFIG.Item.documentClass = RMSSItem; + // Add PragRoman Font + CONFIG.fontDefinitions["PragRoman"] = { + editor: true, + fonts: [ + {urls: ["systems/rmss/assets/fonts/PragRoman.woff2"]} + ] + }; + // Make Config Data Available CONFIG.rmss = rmss; diff --git a/rmss/system.json b/rmss/system.json index 5955493..d7a0870 100644 --- a/rmss/system.json +++ b/rmss/system.json @@ -2,19 +2,31 @@ "name": "rmss", "title": "Rolemaster Standard System", "description": "The Rolemaster Standard System system for FoundryVTT.", - "author": "Cynicide", + "authors": [{ + "name": "Cynicide" + }], "version": "0.0.3", - "minimumCoreVersion": "0.8.6", - "compatibleCoreVersion": "10", + "compatibility": { + "minimum": 10, + "verified": "11.315", + "maximum": 11 + }, "esmodules":[ "rmss.js" ], "styles": ["rmss.css"], "packs": [ { - "name": "skill_categories", - "label": "Skill Categories", + "name": "rmss_skill_categories", + "label": "RMSS Skill Categories", "system": "rmss", - "path": "./packs/skill_categories.db", + "path": "./packs/rmss_skill_categories.db", + "type": "Item" + }, + { + "name": "smss_skill_categories", + "label": "Spacemaster Skill Categories", + "system": "rmss", + "path": "./packs/smss_skill_categories.db", "type": "Item" } ], diff --git a/rmss/templates/chat/chat_dice_roll.html b/rmss/templates/chat/chat_dice_roll.html new file mode 100644 index 0000000..64a5896 --- /dev/null +++ b/rmss/templates/chat/chat_dice_roll.html @@ -0,0 +1,28 @@ +

\ No newline at end of file diff --git a/rmss/templates/sheets/actors/parts/actor-skill-categories.html b/rmss/templates/sheets/actors/parts/actor-skill-categories.html index 50f7b77..f971ad1 100644 --- a/rmss/templates/sheets/actors/parts/actor-skill-categories.html +++ b/rmss/templates/sheets/actors/parts/actor-skill-categories.html @@ -34,9 +34,10 @@
{{skill_category.system.special_bonus_1}}
{{skill_category.system.special_bonus_2}}
{{skill_category.system.total_bonus}}
-
+
+
{{/each}}
\ No newline at end of file diff --git a/rmss/templates/sheets/apps/app_dice_roller.html b/rmss/templates/sheets/apps/app_dice_roller.html new file mode 100644 index 0000000..e3dd5d4 --- /dev/null +++ b/rmss/templates/sheets/apps/app_dice_roller.html @@ -0,0 +1,27 @@ +
+
+
+
+
Rolling for:
{{itemName}}
+
+
+
Character Bonus:
{{characterBonus}}
+
+
+
Misc Bonus:
+
+
+
Select Roll Type:
+
+ +
+
+
+ +
+
+ \ No newline at end of file diff --git a/rmss/templates/sheets/apps/app_skill_category_importer.html b/rmss/templates/sheets/apps/app_skill_category_importer.html new file mode 100644 index 0000000..d6187d1 --- /dev/null +++ b/rmss/templates/sheets/apps/app_skill_category_importer.html @@ -0,0 +1,17 @@ +
+
+

Import Skill Categories

+
+ WARNING: This will erase your existing Skill Categories and import all Skill Categories from the selected Compendium. +
+
+ Select Compendium: +
+
+ +
+ +
+
\ No newline at end of file -- 2.35.3