93 lines
4.1 KiB
JavaScript
93 lines
4.1 KiB
JavaScript
import {BoLUtility} from "./bol-utility.js";
|
|
|
|
export default function registerHooks() {
|
|
|
|
/**
|
|
* Ready hook loads tables, and override's foundry's entity link functions to provide extension to pseudo entities
|
|
*/
|
|
|
|
Hooks.once("ready", async () => {
|
|
console.info("BOL | System Initialized.");
|
|
});
|
|
|
|
Hooks.on("renderPause", ((_app, html) => {
|
|
html.find("img").attr("src", "systems/bol/ui/pause2.webp")
|
|
}))
|
|
|
|
Hooks.on('renderChatLog', (log, html, data) => BoLUtility.chatListeners(html))
|
|
Hooks.on('renderChatMessage', (message, html, data) => BoLUtility.chatMessageHandler(message, html, data))
|
|
|
|
/**
|
|
* Create a macro when dropping an entity on the hotbar
|
|
* Item - open roll dialog for item
|
|
* Actor - open actor sheet
|
|
* Journal - open journal sheet
|
|
*/
|
|
Hooks.on("hotbarDrop", async (bar, data, slot) => {
|
|
console.log(data.type);
|
|
// Create item macro if rollable item - weapon, spell, prayer, trait, or skill
|
|
if (data.type == "Item") {
|
|
let item = data.data;
|
|
console.log(item);
|
|
// let command = `let onlyDamage = false;\nlet customLabel = "";\nlet skillDescription = "";\nlet dmgDescription = "";\n\nif (event) {\n if (event.shiftKey) onlyDamage = true;\n}\n\ngame.cof.macros.rollItemMacro("${item._id}", "${item.name}", "${item.type}", 0, 0, 0, onlyDamage, customLabel, skillDescription, dmgDescription);`;
|
|
|
|
// let macro = game.macros.entities.find(m => (m.name === item.name) && (m.command === command));
|
|
// if (!macro) {
|
|
// macro = await Macro.create({
|
|
// name: item.name,
|
|
// type : "script",
|
|
// img: item.img,
|
|
// command : command
|
|
// }, {displaySheet: false})
|
|
// }
|
|
// game.user.assignHotbarMacro(macro, slot);
|
|
}
|
|
// Create a macro to open the actor sheet of the actor dropped on the hotbar
|
|
else if (data.type == "Actor") {
|
|
let actor = game.actors.get(data.id);
|
|
let command = `/*\nPersonnalisez la macro selon vos besoins en suivant les exemples suivants : \ngame.bol.macros.rollMacro('attribute', 'vigor|agility|mind|appeal', adv, mod);\ngame.bol.macros.rollMacro('aptitude', 'init|melee|ranged|def', adv, mod);\n*/\ngame.bol.macros.rollMacro('attribute', 'vigor', 0, 0);`;
|
|
let macro = game.macros.entities.find(m => (m.name === actor.name) && (m.command === command));
|
|
if (!macro) {
|
|
macro = await Macro.create({
|
|
name: actor.name,
|
|
type: "script",
|
|
img: "icons/svg/dice-target.svg",
|
|
command: command
|
|
}, {displaySheet: false})
|
|
game.user.assignHotbarMacro(macro, slot);
|
|
}
|
|
}
|
|
// Create a macro to open the journal sheet of the journal dropped on the hotbar
|
|
else if (data.type == "JournalEntry") {
|
|
let journal = game.journal.get(data.id);
|
|
console.log(journal);
|
|
let command = `game.journal.get("${data.id}").sheet.render(true)`
|
|
let macro = game.macros.entities.find(m => (m.name === journal.name) && (m.command === command));
|
|
if (!macro) {
|
|
macro = await Macro.create({
|
|
name: journal.name,
|
|
type: "script",
|
|
img: (journal.img) ? journal.img : "icons/svg/book.svg",
|
|
command: command
|
|
}, {displaySheet: false})
|
|
game.user.assignHotbarMacro(macro, slot);
|
|
}
|
|
}
|
|
return false;
|
|
});
|
|
|
|
/********************************************************************************** */
|
|
Hooks.on("renderActorDirectory", (app, html, data) => {
|
|
if (game.user.isGM) {
|
|
const button = document.createElement('button');
|
|
button.style.width = '95%';
|
|
button.innerHTML = game.i18n.localize("BOL.ui.pclistbutton")
|
|
button.addEventListener('click', () => {
|
|
game.bol.charSummary.render(true)
|
|
})
|
|
html.find('.header-actions').after(button)
|
|
}
|
|
})
|
|
|
|
}
|