Add skills as items
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
import { M5Character } from "../actors/M5Character"
|
||||
import { M5Skill } from "../M5Base"
|
||||
|
||||
export class M5Item extends Item {
|
||||
static readonly SKILL = "skill"
|
||||
|
||||
getRollData() {
|
||||
if (!this.actor)
|
||||
return null
|
||||
|
||||
const actor = this.actor as any
|
||||
const context = (this as any).data
|
||||
|
||||
let ret = null
|
||||
if (context.type === "skill") {
|
||||
const character = actor as M5Character
|
||||
const actorData = actor.data.data
|
||||
const itemData = context.data as M5Skill
|
||||
|
||||
ret = {
|
||||
fw: itemData.fw,
|
||||
bonus: M5Character.attributeBonus(character.attribute(itemData.attribute))
|
||||
}
|
||||
} else {
|
||||
ret = actor.getRollData()
|
||||
ret.item = foundry.utils.deepClone(context.data)
|
||||
}
|
||||
|
||||
return ret
|
||||
}
|
||||
|
||||
async roll() {
|
||||
const item = (this as any).data
|
||||
|
||||
// Initialize chat data.
|
||||
const speaker = ChatMessage.getSpeaker({ actor: this.actor })
|
||||
const rollMode = (game as Game).settings.get('core', 'rollMode')
|
||||
const label = `[${item.type}] ${item.name}`
|
||||
|
||||
// If there's no roll data, send a chat message.
|
||||
if (!item.data.formula) {
|
||||
ChatMessage.create({
|
||||
speaker: speaker,
|
||||
rollMode: rollMode,
|
||||
flavor: label,
|
||||
content: item.data.description ?? ''
|
||||
})
|
||||
} else { // Otherwise, create a roll and send a chat message from it.
|
||||
// Retrieve roll data.
|
||||
const rollData = this.getRollData()
|
||||
|
||||
// Invoke the roll and submit it to chat.
|
||||
const roll = new Roll(item.data.formula, rollData)
|
||||
// If you need to store the value first, uncomment the next line.
|
||||
// let result = await roll.roll({async: true})
|
||||
roll.toMessage({
|
||||
speaker: speaker,
|
||||
rollMode: rollMode,
|
||||
flavor: label,
|
||||
})
|
||||
return roll
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user