Fix numbering
This commit is contained in:
parent
9974c5365a
commit
f590e1fe6a
@ -224,17 +224,9 @@ export class PegasusActorSheet extends ActorSheet {
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async _onDrop(event) {
|
||||
let data = event.dataTransfer.getData('text/plain');
|
||||
if (data) {
|
||||
let dataItem = JSON.parse( data);
|
||||
let npc = game.actors.get( dataItem.id);
|
||||
if ( npc ) {
|
||||
this.actor.addSubActor( dataItem.id);
|
||||
return;
|
||||
}
|
||||
}
|
||||
super._onDrop(event);
|
||||
async _onDropItem(event, dragData) {
|
||||
let item = await PegasusUtility.searchItem( dragData)
|
||||
this.actor.preprocessItem( event, item, true )
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
|
@ -255,8 +255,24 @@ export class PegasusActor extends Actor {
|
||||
getAttribute(attrKey) {
|
||||
return this.data.data.attributes[attrKey];
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async preprocessItem( event, item, onDrop = false) {
|
||||
if ( item.data.type == 'race') {
|
||||
this.applyRace(item.data)
|
||||
} else if ( item.data.type == 'ability') {
|
||||
this.applyAbility(item.data, [], true)
|
||||
await this.createEmbeddedDocuments('Item', [item.data] )
|
||||
} else {
|
||||
if ( onDrop) {
|
||||
await super._onDropItem(event, dragData)
|
||||
} else {
|
||||
await this.createEmbeddedDocuments('Item', [item.data] )
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async equipGear(equipmentId) {
|
||||
let item = this.data.items.find(item => item.id == equipmentId);
|
||||
if (item && item.data.data) {
|
||||
@ -354,7 +370,7 @@ export class PegasusActor extends Actor {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async computeNRGHealth() {
|
||||
if ( this.isToken) return
|
||||
if ( this.isToken ) return
|
||||
if (this.isOwner || game.user.isGM) {
|
||||
let updates = {}
|
||||
let phyDiceValue = PegasusUtility.getDiceValue(this.data.data.statistics.phy.value) + this.data.data.secondary.health.bonus + this.data.data.statistics.phy.mod;
|
||||
@ -454,12 +470,15 @@ export class PegasusActor extends Actor {
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
applyAbility(ability, updates = []) {
|
||||
applyAbility(ability, updates = [], directUpdate = false) {
|
||||
if (ability.data.affectedstat != "notapplicable") {
|
||||
let stat = duplicate(this.data.data.statistics[ability.data.affectedstat])
|
||||
stat.value += parseInt(ability.data.statlevelincrease)
|
||||
stat.mod += parseInt(ability.data.statmodifier)
|
||||
updates[`data.statistics.${ability.data.affectedstat}`] = stat
|
||||
if(directUpdate) {
|
||||
this.update(updates)
|
||||
}
|
||||
}
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
@ -470,7 +489,7 @@ export class PegasusActor extends Actor {
|
||||
newItems.push(race);
|
||||
|
||||
for (let ability of race.data.abilities) {
|
||||
newItems.push(ability);
|
||||
newItems.push(ability)
|
||||
this.applyAbility(ability, updates)
|
||||
}
|
||||
if (race.data.powersgained) {
|
||||
|
@ -197,16 +197,6 @@ export class PegasusItemSheet extends ItemSheet {
|
||||
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async searchItem( dataItem) {
|
||||
let item;
|
||||
if (dataItem.pack) {
|
||||
item = await fromUuid("Compendium."+dataItem.pack+"."+dataItem.id);
|
||||
} else {
|
||||
item = game.items.get(dataItem.id )
|
||||
}
|
||||
return item;
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
async addAbility(event, item, dataItem) {
|
||||
let newItem = duplicate(item.data);
|
||||
@ -362,7 +352,7 @@ export class PegasusItemSheet extends ItemSheet {
|
||||
let data = event.dataTransfer.getData('text/plain');
|
||||
if (data) {
|
||||
let dataItem = JSON.parse( data );
|
||||
let item = await this.searchItem( dataItem);
|
||||
let item = await PegasusUtility.searchItem( dataItem);
|
||||
if ( item.data.type == 'specialisation') {
|
||||
return this.addEffectSpec( event, item, dataItem);
|
||||
}
|
||||
@ -373,7 +363,7 @@ export class PegasusItemSheet extends ItemSheet {
|
||||
let data = event.dataTransfer.getData('text/plain');
|
||||
if (data) {
|
||||
let dataItem = JSON.parse( data );
|
||||
let item = await this.searchItem( dataItem);
|
||||
let item = await PegasusUtility.searchItem( dataItem);
|
||||
if ( item.data.type == 'ability') {
|
||||
return this.addAbility( event, item, dataItem);
|
||||
}
|
||||
@ -387,7 +377,7 @@ export class PegasusItemSheet extends ItemSheet {
|
||||
let data = event.dataTransfer.getData('text/plain');
|
||||
if (data) {
|
||||
let dataItem = JSON.parse( data );
|
||||
let item = await this.searchItem( dataItem);
|
||||
let item = await PegasusUtility.searchItem( dataItem);
|
||||
if ( item.data.type == 'specialisation') {
|
||||
return this.addPerkSpecialisation( event, item, dataItem);
|
||||
}
|
||||
@ -398,7 +388,7 @@ export class PegasusItemSheet extends ItemSheet {
|
||||
let data = event.dataTransfer.getData('text/plain');
|
||||
if (data) {
|
||||
let dataItem = JSON.parse( data );
|
||||
let item = await this.searchItem( dataItem);
|
||||
let item = await PegasusUtility.searchItem( dataItem);
|
||||
if ( item.data.type == 'power') {
|
||||
return this.addPower( event, item, dataItem);
|
||||
}
|
||||
@ -408,7 +398,7 @@ export class PegasusItemSheet extends ItemSheet {
|
||||
let data = event.dataTransfer.getData('text/plain');
|
||||
if (data) {
|
||||
let dataItem = JSON.parse( data );
|
||||
let item = await this.searchItem( dataItem);
|
||||
let item = await PegasusUtility.searchItem( dataItem);
|
||||
if ( item.data.type == 'power') {
|
||||
return this.addAbilityPower( event, item, dataItem);
|
||||
}
|
||||
@ -425,7 +415,7 @@ export class PegasusItemSheet extends ItemSheet {
|
||||
let data = event.dataTransfer.getData('text/plain');
|
||||
if (data) {
|
||||
let dataItem = JSON.parse( data );
|
||||
let item = await this.searchItem( dataItem);
|
||||
let item = await PegasusUtility.searchItem( dataItem);
|
||||
if ( item.data.type == 'specialisation') {
|
||||
return this.addRoleSpecialisation( event, item, dataItem);
|
||||
}
|
||||
|
@ -15,6 +15,7 @@ import { PegasusNPCSheet } from "./pegasus-npc-sheet.js";
|
||||
import { PegasusUtility } from "./pegasus-utility.js";
|
||||
import { PegasusCombat } from "./pegasus-combat.js";
|
||||
import { PegasusItem } from "./pegasus-item.js";
|
||||
import { PegasusToken } from "./pegasus-token.js";
|
||||
|
||||
/* -------------------------------------------- */
|
||||
/* Foundry VTT Initialization */
|
||||
@ -52,9 +53,10 @@ Hooks.once("init", async function () {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
// Define custom Entity classes
|
||||
CONFIG.Combat.documentClass = PegasusCombat;
|
||||
CONFIG.Actor.documentClass = PegasusActor;
|
||||
CONFIG.Item.documentClass = PegasusItem;
|
||||
CONFIG.Combat.documentClass = PegasusCombat
|
||||
CONFIG.Actor.documentClass = PegasusActor
|
||||
CONFIG.Item.documentClass = PegasusItem
|
||||
//CONFIG.Token.objectClass = PegasusToken
|
||||
game.system.pegasus = { };
|
||||
|
||||
/* -------------------------------------------- */
|
||||
|
6
modules/pegasus-token.js
Normal file
6
modules/pegasus-token.js
Normal file
@ -0,0 +1,6 @@
|
||||
import { PegasusUtility } from "./pegasus-utility.js";
|
||||
|
||||
/* -------------------------------------------- */
|
||||
export class PegasusToken extends Token {
|
||||
|
||||
}
|
@ -17,6 +17,10 @@ export class PegasusUtility {
|
||||
Hooks.on("getCombatTrackerEntryContext", (html, options) => {
|
||||
PegasusUtility.pushInitiativeOptions(html, options);
|
||||
});
|
||||
Hooks.on("dropCanvasData", (canvas, data) => {
|
||||
PegasusUtility.dropItemOnToken(canvas, data)
|
||||
});
|
||||
|
||||
this.rollDataStore = {}
|
||||
this.defenderStore = {}
|
||||
this.diceList = [];
|
||||
@ -41,7 +45,7 @@ export class PegasusUtility {
|
||||
/* -------------------------------------------- */
|
||||
static pushInitiativeOptions(html, options) {
|
||||
console.log('Option pushed....')
|
||||
options.push( { name: "Apply -10", condition: true, icon: '<i class="fas fa-plus"></i>', callback: target => { PegasusCombat.decInitBy10(target.data('combatant-id'), -10); } } )
|
||||
options.push({ name: "Apply -10", condition: true, icon: '<i class="fas fa-plus"></i>', callback: target => { PegasusCombat.decInitBy10(target.data('combatant-id'), -10); } })
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
@ -55,6 +59,27 @@ export class PegasusUtility {
|
||||
this.specs = specs.map(i => i.toObject());
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static async dropItemOnToken(canvas, data) {
|
||||
if (data.type != "Item") {
|
||||
return
|
||||
}
|
||||
|
||||
const position = canvas.grid.getTopLeft(data.x, data.y)
|
||||
let x = position[0]
|
||||
let y = position[1]
|
||||
const tokensList = [...canvas.tokens.placeables]
|
||||
for(let token of tokensList) {
|
||||
if ( x >= token.x && x <= (token.x + token.width)
|
||||
&& y >= token.y && y <= (token.y + token.height) ) {
|
||||
let item = await this.searchItem(data)
|
||||
token.actor.preprocessItem("none", item, false )
|
||||
console.log("Dropped !!!", item, token)
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static async loadCompendiumData(compendium) {
|
||||
const pack = game.packs.get(compendium);
|
||||
@ -152,7 +177,6 @@ export class PegasusUtility {
|
||||
|
||||
const templatePaths = [
|
||||
'systems/fvtt-pegasus-rpg/templates/editor-notes-gm.html',
|
||||
'systems/fvtt-pegasus-rpg/templates/partial-roll-common-dices.html',
|
||||
'systems/fvtt-pegasus-rpg/templates/partial-roll-select-effects.html',
|
||||
'systems/fvtt-pegasus-rpg/templates/partial-options-statistics.html',
|
||||
'systems/fvtt-pegasus-rpg/templates/partial-options-level.html',
|
||||
@ -449,8 +473,8 @@ export class PegasusUtility {
|
||||
}
|
||||
// Init stuf
|
||||
if (rollData.isInit) {
|
||||
let combat = game.combats.get( rollData.combatId)
|
||||
combat.updateEmbeddedDocuments("Combatant", [ { _id: rollData.combatantId, initiative: rollData.finalScore } ]);
|
||||
let combat = game.combats.get(rollData.combatId)
|
||||
combat.updateEmbeddedDocuments("Combatant", [{ _id: rollData.combatantId, initiative: rollData.finalScore }]);
|
||||
}
|
||||
// And save the roll
|
||||
this.saveRollData(rollData);
|
||||
@ -539,6 +563,17 @@ export class PegasusUtility {
|
||||
game.socket.emit("system.fvtt-weapons-of-the-gods", { msg: "msg_gm_chat_message", data: chatGM });
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static async searchItem(dataItem) {
|
||||
let item;
|
||||
if (dataItem.pack) {
|
||||
item = await fromUuid("Compendium." + dataItem.pack + "." + dataItem.id);
|
||||
} else {
|
||||
item = game.items.get(dataItem.id)
|
||||
}
|
||||
return item;
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static split3Columns(data) {
|
||||
|
||||
|
@ -183,6 +183,6 @@
|
||||
"templateVersion": 64,
|
||||
"title": "Pegasus RPG",
|
||||
"url": "https://www.uberwald.me/data/files/fvtt-pegasus-rpg",
|
||||
"version": "0.2.7",
|
||||
"version": "0.3.0",
|
||||
"background" : "./images/ui/pegasus_welcome_page.webp"
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user