first commit

This commit is contained in:
2020-11-28 19:12:19 +01:00
commit c3a7388592
38 changed files with 3189 additions and 0 deletions

View File

@@ -0,0 +1,124 @@
export default class KHDiceRoller {
async rollSpellCostInChat(cost, speaker) {
let formula = cost + "d6"
const roll = new Roll(formula);
let res = roll.roll();
let rollData = {
name: "SPELL.COST",
res: res,
showFormula: true
};
const html = await renderTemplate("systems/kopparhavet/templates/dice/roll.html", rollData);
await roll.toMessage({
create: true,
content: html,
user: game.user._id,
speaker: {
actor: speaker._id,
token: speaker.token,
alias: speaker.name,
},
});
}
async rollDamageInChat(facesNr, speaker) {
let formula = facesNr + "d6x6"
const roll = new Roll(formula);
let res = roll.roll();
let rollData = {
name: "ITEM.DAMAGE",
res: res,
showFormula: true
};
const html = await renderTemplate("systems/kopparhavet/templates/dice/roll.html", rollData);
await roll.toMessage({
create: true,
content: html,
user: game.user._id,
speaker: {
actor: speaker._id,
token: speaker.token,
alias: speaker.name,
},
});
}
async rollArmorInChat(armor, hasHelmet, speaker) {
let formula = armor + "d6"
if(hasHelmet) {
formula += "x6"
}
const roll = new Roll(formula);
let res = roll.roll();
let rollData = {
name: "ITEM.DEFENCE",
res: res,
showFormula: true
};
const html = await renderTemplate("systems/kopparhavet/templates/dice/roll.html", rollData);
await roll.toMessage({
create: true,
content: html,
user: game.user._id,
speaker: {
actor: speaker._id,
token: speaker.token,
alias: speaker.name,
},
});
}
async rollSkillInChat(skillName, skillValue, showValue, speaker) {
const roll = new Roll(`1d100`);
let res = roll.roll();
let computedName = skillName
if(showValue) {
computedName += " (" + skillValue + ")"
}
let rollData = {
name: computedName,
res: res
};
if(skillValue > 0) {
if(res.total <= skillValue) {
rollData.success = true
} else {
rollData.failure = true
}
}
const html = await renderTemplate("systems/kopparhavet/templates/dice/roll.html", rollData);
await roll.toMessage({
create: true,
content: html,
user: game.user._id,
speaker: {
actor: speaker._id,
token: speaker.token,
alias: speaker.name,
},
});
}
}

View File

@@ -0,0 +1,35 @@
export default class ItemHelpers {
static async itemUpdate(event, formData) {
formData = expandObject(formData);
if (this.object.isOwned && this.object.actor?.compendium?.metadata) {
return;
}
// Handle the free-form modifications list
const formAttrs = expandObject(formData)?.data?.modifications || {};
const modifications = Object.values(formAttrs).reduce((obj, v) => {
let k = v["key"].trim();
delete v["key"];
obj[k] = v;
return obj;
}, {});
// Remove modifications which are no longer used
if (this.object.data?.data?.modifications) {
for (let k of Object.keys(this.object.data.data.modifications)) {
if (!modifications.hasOwnProperty(k)) modifications[`-=${k}`] = null;
}
}
// recombine modifications to formData
if (Object.keys(modifications).length > 0) {
setProperty(formData, `data.modifications`, modifications);
}
// Update the Item
this.item.data.flags.loaded = false;
this.object.update(formData);
}
}