// 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"; import { RMSSItem } from "./module/documents/item.js"; // Import Sheets import RMSSItemSheet from "./module/sheets/items/rmss_item_sheet.js"; import RMSSArmorSheet from "./module/sheets/items/rmss_armor_sheet.js"; import RMSSTransportSheet from "./module/sheets/items/rmss_transport_sheet.js"; import RMSSWeaponSheet from "./module/sheets/items/rmss_weapon_sheet.js"; import RMSSHerbOrPoisonSheet from "./module/sheets/items/rmss_herb_or_poison_sheet.js"; import RMSSSpellSheet from "./module/sheets/spells/rmss_spell_sheet.js"; import RMSSSkillCategorySheet from "./module/sheets/skills/rmss_skill_category_sheet.js"; import RMSSSkillSheet from "./module/sheets/skills/rmss_skill_sheet.js"; import RMSSPlayerSheet from "./module/sheets/actors/rmss_player_sheet.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() { const templatePaths = [ "systems/fvtt-rolemaster-frp/templates/sheets/actors/parts/actor-stats.html", "systems/fvtt-rolemaster-frp/templates/sheets/actors/parts/actor-fixed-info.html", "systems/fvtt-rolemaster-frp/templates/sheets/actors/parts/actor-armor-info.html", "systems/fvtt-rolemaster-frp/templates/sheets/actors/parts/actor-resistance.html", "systems/fvtt-rolemaster-frp/templates/sheets/actors/parts/actor-race-stat-fixed-info.html", "systems/fvtt-rolemaster-frp/templates/sheets/actors/parts/actor-role-traits.html", "systems/fvtt-rolemaster-frp/templates/sheets/actors/parts/actor-background-info.html", "systems/fvtt-rolemaster-frp/templates/sheets/actors/parts/actor-skill-categories.html", "systems/fvtt-rolemaster-frp/templates/sheets/actors/parts/actor-skills.html", "systems/fvtt-rolemaster-frp/templates/sheets/actors/parts/actor-fav-skills.html", "systems/fvtt-rolemaster-frp/templates/sheets/actors/parts/actor-items.html", "systems/fvtt-rolemaster-frp/templates/sheets/actors/parts/actor-weapons.html", "systems/fvtt-rolemaster-frp/templates/sheets/actors/parts/actor-money.html", "systems/fvtt-rolemaster-frp/templates/sheets/actors/parts/actor-skill-categories.html", "systems/fvtt-rolemaster-frp/templates/sheets/actors/parts/actor-skills.html", "systems/fvtt-rolemaster-frp/templates/sheets/actors/parts/actor-armor.html", "systems/fvtt-rolemaster-frp/templates/sheets/actors/parts/actor-herbs.html", "systems/fvtt-rolemaster-frp/templates/sheets/actors/parts/actor-spells.html", "systems/fvtt-rolemaster-frp/templates/sheets/actors/parts/actor-fav-spells.html", "systems/fvtt-rolemaster-frp/templates/sheets/actors/parts/actor-fav-items.html", "systems/fvtt-rolemaster-frp/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"); // Load our custom actor and item classes console.log("rmss | Loading Rolemaster Actor and Item classes"); game.rmss = { RMSSActor, RMSSItem, applications: { RMSSToolsSCImporter, RMSSToolsDiceRoller } }; // Define custom Document classes CONFIG.Actor.documentClass = RMSSActor; CONFIG.Item.documentClass = RMSSItem; // Add PragRoman Font CONFIG.fontDefinitions["PragRoman"] = { editor: true, fonts: [ { urls: ["systems/fvtt-rolemaster-frp/assets/fonts/PragRoman.woff2"] } ] }; // Make Config Data Available CONFIG.rmss = rmss; // Unregister Default Sheets console.log("rmss | Unregistering core sheets"); Items.unregisterSheet("core", ItemSheet); Actors.unregisterSheet("core", ActorSheet); // Register RMSS Sheets console.log("rmss | Registering RMSS sheets"); // Items Items.registerSheet("fvtt-rolemaster-frp", RMSSItemSheet, { makeDefault: true, label: "rmss.entity_sheet.item", types: ["item"] }); Items.registerSheet("fvtt-rolemaster-frp", RMSSArmorSheet, { makeDefault: true, label: "rmss.entity_sheet.armor", types: ["armor"] }); Items.registerSheet("fvtt-rolemaster-frp", RMSSTransportSheet, { makeDefault: true, label: "rmss.entity_sheet.transport", types: ["transport"] }); Items.registerSheet("fvtt-rolemaster-frp", RMSSWeaponSheet, { makeDefault: true, label: "rmss.entity_sheet.weapon", types: ["weapon"] }); Items.registerSheet("fvtt-rolemaster-frp", RMSSHerbOrPoisonSheet, { makeDefault: true, label: "rmss.entity_sheet.herb_or_poison", types: ["herb_or_poison"] }); // Spells Items.registerSheet("fvtt-rolemaster-frp", RMSSSpellSheet, { makeDefault: true, label: "rmss.entity_sheet.spell", types: ["spell"] }); // Skills Items.registerSheet("fvtt-rolemaster-frp", RMSSSkillCategorySheet, { makeDefault: true, label: "rmss.entity_sheet.skill_category", types: ["skill_category"] }); Items.registerSheet("fvtt-rolemaster-frp", RMSSSkillSheet, { makeDefault: true, label: "rmss.entity_sheet.skill", types: ["skill"] }); // Actors Actors.registerSheet("fvtt-rolemaster-frp", RMSSPlayerSheet, { makeDefault: true, label: "rmss.entity_sheet.player_characrer", types: ["character"] }); // Preload Handlebars Templates console.log("rmss | Preloading Handlebars Templates"); preloadHandlebarsTemplates(); // Handlebars Helpers Handlebars.registerHelper('count', function (list) { return list.length; }) Handlebars.registerHelper('includes', function (array, val) { return array.includes(val); }) Handlebars.registerHelper('upper', function (text) { return text.toUpperCase(); }) Handlebars.registerHelper('lower', function (text) { return text.toLowerCase() }) Handlebars.registerHelper('upperFirst', function (text) { if (typeof text !== 'string') return text return text.charAt(0).toUpperCase() + text.slice(1) }) Handlebars.registerHelper('notEmpty', function (list) { return list.length > 0; }) Handlebars.registerHelper('mul', function (a, b) { return parseInt(a) * parseInt(b); }) Handlebars.registerHelper("switch", function (value, options) { this.switch_value = value; return options.fn(this); }); Handlebars.registerHelper("case", function (value, options) { if (value === this.switch_value) { return options.fn(this); } }); // Handle v12 removal of this helper Handlebars.registerHelper('select', function (selected, options) { const escapedValue = RegExp.escape(Handlebars.escapeExpression(selected)); const rgx = new RegExp(' value=[\"\']' + escapedValue + '[\"\']'); const html = options.fn(this); return html.replace(rgx, "$& selected"); }); });