Manage stuff
This commit is contained in:
@ -181,27 +181,26 @@ export class PegasusActor extends Actor {
|
||||
/* -------------------------------------------- */
|
||||
async manageWorstFear(flag) {
|
||||
if (flag) {
|
||||
let effect = await PegasusUtility.getEffectFromCompendium( "Worst Fear" )
|
||||
console.log("got effect", effect)
|
||||
let effect = await PegasusUtility.getEffectFromCompendium("Worst Fear")
|
||||
effect.data.worstfear = true
|
||||
this.createEmbeddedDocuments( 'Item', [effect])
|
||||
this.createEmbeddedDocuments('Item', [effect])
|
||||
} else {
|
||||
let effect = this.data.items.find( item => item.type == "effect" && item.data.data.worstfear )
|
||||
let effect = this.data.items.find(item => item.type == "effect" && item.data.data.worstfear)
|
||||
if (effect) {
|
||||
this.deleteEmbeddedDocuments( 'Item', [ effect.id ])
|
||||
this.deleteEmbeddedDocuments('Item', [effect.id])
|
||||
}
|
||||
}
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
async manageDesires(flag) {
|
||||
if (flag) {
|
||||
let effect = await PegasusUtility.getEffectFromCompendium( "Desires" )
|
||||
let effect = await PegasusUtility.getEffectFromCompendium("Desires")
|
||||
effect.data.desires = true
|
||||
this.createEmbeddedDocuments( 'Item', [effect])
|
||||
this.createEmbeddedDocuments('Item', [effect])
|
||||
} else {
|
||||
let effect = this.data.items.find( item => item.type == "effect" && item.data.data.desires )
|
||||
let effect = this.data.items.find(item => item.type == "effect" && item.data.data.desires)
|
||||
if (effect) {
|
||||
this.deleteEmbeddedDocuments( 'Item', [ effect.id ])
|
||||
this.deleteEmbeddedDocuments('Item', [effect.id])
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -230,13 +229,14 @@ export class PegasusActor extends Actor {
|
||||
if (item && item.data.data) {
|
||||
|
||||
let nrg = duplicate(this.data.data.nrg)
|
||||
if ( !item.data.data.activated) { // Current value
|
||||
|
||||
if ( item.data.data.cost > nrg.value) {
|
||||
return ui.notifications.warn("Not enough NRG to activate the Power " + item.name )
|
||||
if (!item.data.data.activated) { // Current value
|
||||
|
||||
if (item.data.data.costspent > nrg.value || item.data.data.costspent > nrg.max) {
|
||||
return ui.notifications.warn("Not enough NRG to activate the Power " + item.name)
|
||||
}
|
||||
nrg.activated += item.data.data.cost
|
||||
nrg.value -= item.data.data.cost
|
||||
nrg.activated += item.data.data.costspent
|
||||
nrg.value -= item.data.data.costspent
|
||||
nrg.max -= item.data.data.costspent
|
||||
this.update({ 'data.nrg': nrg })
|
||||
|
||||
let effects = []
|
||||
@ -248,19 +248,20 @@ export class PegasusActor extends Actor {
|
||||
await this.createEmbeddedDocuments('Item', effects)
|
||||
}
|
||||
} else {
|
||||
nrg.activated -= item.data.data.cost
|
||||
nrg.activated -= item.data.data.costspent
|
||||
nrg.max += item.data.data.costspent
|
||||
this.update({ 'data.nrg': nrg })
|
||||
|
||||
let toRem = []
|
||||
for( let item of this.data.items) {
|
||||
for (let item of this.data.items) {
|
||||
if (item.type == 'effect' && item.data.data.powerId == itemId) {
|
||||
toRem.push( item.id)
|
||||
toRem.push(item.id)
|
||||
}
|
||||
}
|
||||
if (toRem.length) {
|
||||
await this.deleteEmbeddedDocuments('Item', toRem)
|
||||
}
|
||||
}
|
||||
}
|
||||
let update = { _id: item.id, "data.activated": !item.data.data.activated }
|
||||
await this.updateEmbeddedDocuments('Item', [update]) // Updates one EmbeddedEntity
|
||||
}
|
||||
@ -468,6 +469,47 @@ export class PegasusActor extends Actor {
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async cleanPerkEffects(itemId) {
|
||||
let effects = []
|
||||
for (let item of this.data.items) {
|
||||
if (item.type == "effect" && item.data.data.perkId == itemId) {
|
||||
effects.push(item.id)
|
||||
}
|
||||
}
|
||||
if (effects.length) {
|
||||
await this.deleteEmbeddedDocuments('Item', effects)
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async updatePerkUsed(itemId, index, checked) {
|
||||
let item = this.items.get(itemId)
|
||||
if (item && index) {
|
||||
let key = "data.used" + index
|
||||
await this.updateEmbeddedDocuments('Item', [{ _id: itemId, [`${key}`]: checked }] )
|
||||
item = this.items.get(itemId) // Refresh
|
||||
if (item.data.data.nbuse == "next1action" && item.data.data.used1) {
|
||||
this.cleanPerkEffects(itemId)
|
||||
}
|
||||
if (item.data.data.nbuse == "next2action" && item.data.data.used1 && item.data.data.used2) {
|
||||
this.cleanPerkEffects(itemId)
|
||||
}
|
||||
if (item.data.data.nbuse == "next3action" && item.data.data.used1 && item.data.data.used2 && item.data.data.used3) {
|
||||
this.cleanPerkEffects(itemId)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async updatePowerSpentCost(itemId, value) {
|
||||
let item = this.items.get(itemId)
|
||||
if (item && value) {
|
||||
value = Number(value) || 0
|
||||
await this.updateEmbeddedDocuments('Item', [{ _id: itemId, 'data.costspent': value }])
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async updatePerkStatus(itemId, status) {
|
||||
let item = this.items.get(itemId)
|
||||
@ -477,15 +519,7 @@ export class PegasusActor extends Actor {
|
||||
|
||||
let updateOK = true
|
||||
if (status == "ready") {
|
||||
let effects = []
|
||||
for (let item of this.data.items) {
|
||||
if (item.type == "effect" && item.data.data.perkId == itemId) {
|
||||
effects.push(item.id)
|
||||
}
|
||||
}
|
||||
if (effects.length) {
|
||||
await this.deleteEmbeddedDocuments('Item', effects)
|
||||
}
|
||||
this.cleanPerkEffects(itemId)
|
||||
if (item.data.data.features.nrgcost.flag) {
|
||||
let nrg = duplicate(this.data.data.nrg)
|
||||
nrg.activated -= item.data.data.features.nrgcost.value
|
||||
|
Reference in New Issue
Block a user