Rollable weapons
This commit is contained in:
@@ -55,10 +55,17 @@ export class frostgraveActorSheet extends ActorSheet {
|
||||
// Edit Inventory Item
|
||||
html.find(".item-edit").click((ev) => {
|
||||
const card = $(ev.currentTarget).parents(".item-card");
|
||||
const item = this.actor.getOwnedItem(card.data("item-id"));
|
||||
const item = this.actor.items.get(card.data("item-id"));
|
||||
item.sheet.render(true);
|
||||
});
|
||||
|
||||
html.find(".weapon-attack a").click((ev) => {
|
||||
const card = $(ev.currentTarget).parents(".item-card");
|
||||
const item = this.actor.items.get(card.data("item-id"));
|
||||
console.log("ACTOR: ", this.actor);
|
||||
this.actor.attackWeapon(item);
|
||||
});
|
||||
|
||||
// Delete Inventory Item
|
||||
html.find(".item-delete").click((ev) => {
|
||||
const card = $(ev.currentTarget).parents(".item-card");
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import { FrostgraveUtility } from "../frostgrave-utility.js";
|
||||
/**
|
||||
* Extend the base Actor entity by defining a custom roll data structure which is ideal for the Simple system.
|
||||
* @extends {Actor}
|
||||
@@ -30,4 +31,27 @@ export class frostgraveActor extends Actor {
|
||||
data.exptotal = data.expscenario + data.expbanked;
|
||||
}
|
||||
|
||||
async attackWeapon( weapon ) {
|
||||
|
||||
let target = FrostgraveUtility.getTarget();
|
||||
if ( target == undefined) {
|
||||
ui.notifications.warn(game.i18n.localize("FROSTGRAVE.SelectTargetNeeded"));
|
||||
return;
|
||||
}
|
||||
|
||||
let stat
|
||||
if ( FrostgraveUtility.isRanged( weapon.data.data.subcategory)) {
|
||||
stat = this.data.data.stats.shoot;
|
||||
console.log("TIR");
|
||||
} else {
|
||||
stat = this.data.data.stats.fight;
|
||||
console.log("CC");
|
||||
}
|
||||
|
||||
let roll = new Roll("1d20+"+stat.actual);
|
||||
let score = roll.evaluate( {async:false}).total;
|
||||
await FrostgraveUtility.showDiceSoNice(roll);
|
||||
roll.toMessage();
|
||||
}
|
||||
|
||||
}
|
||||
44
module/frostgrave-utility.js
Normal file
44
module/frostgrave-utility.js
Normal file
@@ -0,0 +1,44 @@
|
||||
/* -------------------------------------------- */
|
||||
export class FrostgraveUtility {
|
||||
|
||||
static isRanged( subcategory ) {
|
||||
if (subcategory == 'Bow' || subcategory == 'Crossbow')
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static getTarget() {
|
||||
if (game.user.targets && game.user.targets.size == 1) {
|
||||
for (let target of game.user.targets) {
|
||||
return target;
|
||||
}
|
||||
}
|
||||
return undefined;
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static async showDiceSoNice(roll, rollMode = undefined) {
|
||||
if (game.modules.get("dice-so-nice") && game.modules.get("dice-so-nice").active) {
|
||||
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 = ChatUtility.getUsers(user => user.isGM);
|
||||
break;
|
||||
case "roll": //everybody
|
||||
whisper = ChatUtility.getUsers(user => user.active);
|
||||
break;
|
||||
case "selfroll":
|
||||
whisper = [game.user.id];
|
||||
break;
|
||||
}
|
||||
await game.dice3d.showForRoll(roll, game.user, true, whisper, blind);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -21,12 +21,13 @@ Hooks.once("init", async function () {
|
||||
};
|
||||
|
||||
// Define custom Entity classes
|
||||
CONFIG.Actor.documentClas = frostgraveActor;
|
||||
CONFIG.Item.documentClas = frostgraveItem;
|
||||
CONFIG.Actor.documentClass = frostgraveActor;
|
||||
CONFIG.Item.documentClass = frostgraveItem;
|
||||
|
||||
// Register sheet application classes
|
||||
Actors.unregisterSheet("core", ActorSheet);
|
||||
Actors.registerSheet("foundryvtt-frostgrave", frostgraveActorSheet, {
|
||||
types: ["character"],
|
||||
makeDefault: true,
|
||||
});
|
||||
Items.unregisterSheet("core", ItemSheet);
|
||||
|
||||
Reference in New Issue
Block a user