Converted lots of document access to V10.
This commit is contained in:
@@ -7,38 +7,40 @@ export class M5Item extends Item {
|
||||
static readonly SKILL = "skill"
|
||||
|
||||
prepareDerivedData() {
|
||||
const itemId: string = (this as any).id
|
||||
const itemType: string = (this as any).type
|
||||
const actor = (this.actor as any)
|
||||
const character = actor as M5Character
|
||||
const context = (this as any).data
|
||||
const calc = context.data.calc
|
||||
const itemData = (this as any).system
|
||||
const calc = itemData.calc
|
||||
|
||||
if (context.type === "skill") {
|
||||
calc.fw = context.data.fw
|
||||
if (itemType === "skill") {
|
||||
calc.fw = itemData.fw
|
||||
calc.bonus = 0
|
||||
|
||||
let pairs: Array<M5ModPair> = [{
|
||||
source: context.name,
|
||||
source: (this as any).name,
|
||||
mod: {
|
||||
type: M5ModType.SKILL,
|
||||
id: context._id,
|
||||
id: itemId,
|
||||
operation: M5ModOperation.SET,
|
||||
value: context.data.fw
|
||||
value: itemData.fw
|
||||
}
|
||||
}]
|
||||
|
||||
if (character) {
|
||||
const actorCalc = character.derivedData({ skills: true, weapons: true, defensiveWeapons: true, armor: true, items: true, spells: true })
|
||||
if (actorCalc?.skillMods && Object.keys(actorCalc.skillMods).indexOf(context._id) !== -1) {
|
||||
pairs = pairs.concat(actorCalc.skillMods[context._id])
|
||||
if (actorCalc?.skillMods && Object.keys(actorCalc.skillMods).indexOf(itemId) !== -1) {
|
||||
pairs = pairs.concat(actorCalc.skillMods[itemId])
|
||||
|
||||
if (context.data?.attribute && context.data?.attribute !== "") {
|
||||
if (itemData?.attribute && itemData.attribute !== "") {
|
||||
pairs.push({
|
||||
source: context.name,
|
||||
source: (this as any).name,
|
||||
mod: {
|
||||
type: M5ModType.SKILL,
|
||||
id: context._id,
|
||||
id: itemId,
|
||||
operation: M5ModOperation.ADD,
|
||||
value: actorCalc.attributes[context.data.attribute].bonus
|
||||
value: actorCalc.attributes[itemData.attribute].bonus
|
||||
}
|
||||
})
|
||||
}
|
||||
@@ -55,11 +57,11 @@ export class M5Item extends Item {
|
||||
|
||||
calc.ew = calc.fw + calc.bonus
|
||||
calc.sources = res.mods
|
||||
} else if (context.type === "weapon") {
|
||||
} else if (itemType === "weapon") {
|
||||
calc.fw = 0
|
||||
calc.bonus = 0
|
||||
calc.special = context.data.special ? 2 : 0
|
||||
calc.ew = calc.special + context.data.stats.attackBonus
|
||||
calc.special = itemData.special ? 2 : 0
|
||||
calc.ew = calc.special + itemData.stats.attackBonus
|
||||
calc.combatSkills = null
|
||||
|
||||
if (actor) {
|
||||
@@ -69,21 +71,21 @@ export class M5Item extends Item {
|
||||
calc.combatSkills = actorCalc.skills.combat
|
||||
}
|
||||
|
||||
const skill = character.getItem(context.data.skillId)
|
||||
//console.log("M5Item.prepareDerivedData:weapon", context.data, skill?.data?.data)
|
||||
const skill = character.getItem(itemData.skillId)
|
||||
//console.log("M5Item.prepareDerivedData:weapon", itemData, skill?.system)
|
||||
if (skill) {
|
||||
skill.prepareDerivedData()
|
||||
const skillData = skill.data.data
|
||||
const skillData = skill.system
|
||||
calc.ew += skillData.calc.ew
|
||||
calc.bonus += skillData.calc.bonus
|
||||
calc.fw += skillData.fw
|
||||
}
|
||||
}
|
||||
} else if (context.type === "defensiveWeapon") {
|
||||
} else if (itemType === "defensiveWeapon") {
|
||||
calc.fw = 0
|
||||
calc.bonus = 0
|
||||
calc.special = context.data.special ? 2 : 0
|
||||
calc.ew = calc.special + context.data.stats.defenseBonus
|
||||
calc.special = itemData.special ? 2 : 0
|
||||
calc.ew = calc.special + itemData.stats.defenseBonus
|
||||
calc.combatSkills = null
|
||||
|
||||
if (actor) {
|
||||
@@ -93,28 +95,28 @@ export class M5Item extends Item {
|
||||
calc.combatSkills = actorCalc.skills.combat
|
||||
}
|
||||
|
||||
const skill = character.getItem(context.data.skillId)
|
||||
//console.log("M5Item.prepareDerivedData:weapon", context.data, skill?.data?.data)
|
||||
const skill = character.getItem(itemData.skillId)
|
||||
//console.log("M5Item.prepareDerivedData:weapon", itemData, skill?.system)
|
||||
if (skill) {
|
||||
skill.prepareDerivedData()
|
||||
const skillData = skill.data.data
|
||||
const skillData = skill.system
|
||||
calc.ew += skillData.calc.ew
|
||||
calc.bonus += skillData.calc.bonus
|
||||
calc.fw += skillData.fw
|
||||
}
|
||||
}
|
||||
} else if (context.type === "spell") {
|
||||
calc.ew = context.data.bonus
|
||||
} else if (itemType === "spell") {
|
||||
calc.ew = itemData.bonus
|
||||
if (actor) {
|
||||
const actorCalc = character.derivedData({ weapons: true, defensiveWeapons: true, armor: true, items: true, spells: true })
|
||||
if (actorCalc) {
|
||||
calc.ew += actorCalc.stats.spellCasting.value
|
||||
}
|
||||
}
|
||||
} else if (context.type === "item") {
|
||||
} else if (itemType === "item") {
|
||||
calc.mods = {}
|
||||
Object.keys(context.data?.mods).forEach(key => {
|
||||
const mod = context.data.mods[key]
|
||||
Object.keys(itemData?.mods).forEach(key => {
|
||||
const mod = itemData.mods[key]
|
||||
const modCalc = {}
|
||||
switch (mod.type) {
|
||||
case M5ModType.ATTRIBUTE: {
|
||||
@@ -139,28 +141,28 @@ export class M5Item extends Item {
|
||||
Object.keys(actorCalc.skills.general).forEach(skillId => {
|
||||
const skill = character.getItem(skillId)
|
||||
if (skill)
|
||||
modCalc[skillId] = `${category}: ${skill.data.name}`
|
||||
modCalc[skillId] = `${category}: ${skill.name}`
|
||||
})
|
||||
|
||||
category = (game as Game).i18n.localize("midgard5.language")
|
||||
Object.keys(actorCalc.skills.language).forEach(skillId => {
|
||||
const skill = character.getItem(skillId)
|
||||
if (skill)
|
||||
modCalc[skillId] = `${category}: ${skill.data.name}`
|
||||
modCalc[skillId] = `${category}: ${skill.name}`
|
||||
})
|
||||
|
||||
category = (game as Game).i18n.localize("midgard5.weapon-skill")
|
||||
Object.keys(actorCalc.skills.combat).forEach(skillId => {
|
||||
const skill = character.getItem(skillId)
|
||||
if (skill)
|
||||
modCalc[skillId] = `${category}: ${skill.data.name}`
|
||||
modCalc[skillId] = `${category}: ${skill.name}`
|
||||
})
|
||||
|
||||
category = (game as Game).i18n.localize("midgard5.innate-ability")
|
||||
Object.keys(actorCalc.skills.innate).forEach(skillId => {
|
||||
const skill = character.getItem(skillId)
|
||||
if (skill)
|
||||
modCalc[skillId] = `${category}: ${skill.data.name}`
|
||||
modCalc[skillId] = `${category}: ${skill.name}`
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -175,7 +177,7 @@ export class M5Item extends Item {
|
||||
|
||||
getRollData() {
|
||||
const actor = this.actor as any
|
||||
const context = (this as any).data
|
||||
const item = this as any
|
||||
|
||||
let ret: M5RollData = actor?.getRollData() ?? {
|
||||
c: null,
|
||||
@@ -185,13 +187,13 @@ export class M5Item extends Item {
|
||||
res: {}
|
||||
}
|
||||
|
||||
ret.i = context.data
|
||||
ret.iType = context.type
|
||||
ret.i = item.system
|
||||
ret.iType = item.type
|
||||
return ret
|
||||
}
|
||||
|
||||
async roll() {
|
||||
const item = (this as any).data
|
||||
const item = (this as any)
|
||||
|
||||
// Initialize chat data.
|
||||
const speaker = ChatMessage.getSpeaker({ actor: this.actor })
|
||||
@@ -199,11 +201,11 @@ export class M5Item extends Item {
|
||||
const label = `[${item.type}] ${item.name}`
|
||||
|
||||
// If there's no roll data, send a chat message.
|
||||
const formulaNames = item.data.rolls?.formulas ? Object.keys(item.data.rolls.formulas) : []
|
||||
const formulaNames = item.system.rolls?.formulas ? Object.keys(item.system.rolls.formulas) : []
|
||||
if (formulaNames.length > 0) {
|
||||
const rollData = this.getRollData()
|
||||
formulaNames.forEach(formulaName => {
|
||||
const formula = item.data.rolls.formulas[formulaName]
|
||||
const formula = item.system.rolls.formulas[formulaName]
|
||||
if (formula) {
|
||||
rollData.rolls[formulaName] = {
|
||||
formula: formula.formula,
|
||||
@@ -224,7 +226,7 @@ export class M5Item extends Item {
|
||||
speaker: speaker,
|
||||
rollMode: rollMode,
|
||||
flavor: label,
|
||||
content: item.data.description ?? ''
|
||||
content: item.system.description ?? ''
|
||||
})
|
||||
return null
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user