Initial import with skill sheet worning
This commit is contained in:
@@ -9,108 +9,83 @@ export default class LethalFantasyCharacter extends foundry.abstract.TypeDataMod
|
||||
const schema = {}
|
||||
|
||||
schema.description = new fields.HTMLField({ required: true, textSearch: true })
|
||||
schema.langues = new fields.HTMLField({ required: true, textSearch: true })
|
||||
schema.notes = new fields.HTMLField({ required: true, textSearch: true })
|
||||
schema.biens = new fields.HTMLField({ required: true, textSearch: true })
|
||||
|
||||
// Caractéristiques
|
||||
// Carac
|
||||
const characteristicField = (label) => {
|
||||
const schema = {
|
||||
valeur: new fields.NumberField({ ...requiredInteger, initial: 10, min: 0 }),
|
||||
progression: new fields.SchemaField({
|
||||
experience: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
||||
progres: new fields.BooleanField(),
|
||||
}),
|
||||
value: new fields.NumberField({ ...requiredInteger, initial: 3, min: 0 }),
|
||||
percent: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 100 }),
|
||||
attackMod: new fields.NumberField({ ...requiredInteger, initial: 0 }),
|
||||
defenseMod: new fields.NumberField({ ...requiredInteger, initial: 0 })
|
||||
}
|
||||
return new fields.SchemaField(schema, { label })
|
||||
}
|
||||
|
||||
schema.caracteristiques = new fields.SchemaField(
|
||||
schema.characteristics = new fields.SchemaField(
|
||||
Object.values(SYSTEM.CHARACTERISTICS).reduce((obj, characteristic) => {
|
||||
obj[characteristic.id] = characteristicField(characteristic.label)
|
||||
return obj
|
||||
}, {}),
|
||||
)
|
||||
|
||||
// Ressources
|
||||
const resourceField = (label) => {
|
||||
// Carac
|
||||
const saveField = (label) => {
|
||||
const schema = {
|
||||
valeur: new fields.StringField({
|
||||
required: true,
|
||||
nullable: false,
|
||||
initial: SYSTEM.RESOURCE_VALUE.ZERO,
|
||||
choices: Object.fromEntries(Object.entries(SYSTEM.RESOURCE_VALUE).map(([key, value]) => [value, { label: `${value}` }])),
|
||||
blank: true,
|
||||
}),
|
||||
max: new fields.StringField({
|
||||
required: true,
|
||||
nullable: false,
|
||||
initial: SYSTEM.RESOURCE_VALUE.ZERO,
|
||||
choices: Object.fromEntries(Object.entries(SYSTEM.RESOURCE_VALUE).map(([key, value]) => [value, { label: `${value}` }])),
|
||||
blank: true,
|
||||
}),
|
||||
experience: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
||||
value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 })
|
||||
}
|
||||
return new fields.SchemaField(schema, { label })
|
||||
}
|
||||
|
||||
schema.ressources = new fields.SchemaField(
|
||||
Object.values(SYSTEM.RESOURCES).reduce((obj, resource) => {
|
||||
obj[resource.id] = resourceField(resource.label)
|
||||
schema.saves = new fields.SchemaField(
|
||||
Object.values(SYSTEM.SAVES).reduce((obj, save) => {
|
||||
obj[save.id] = saveField(save.label)
|
||||
return obj
|
||||
}, {}),
|
||||
)
|
||||
|
||||
schema.commanditaire = new fields.StringField({})
|
||||
|
||||
schema.dv = new fields.StringField({
|
||||
required: true,
|
||||
nullable: false,
|
||||
initial: SYSTEM.RESOURCE_VALUE.ZERO,
|
||||
choices: Object.fromEntries(Object.entries(SYSTEM.RESOURCE_VALUE).map(([key, value]) => [value, { label: `${value}` }])),
|
||||
})
|
||||
|
||||
schema.pv = new fields.SchemaField({
|
||||
schema.hp = new fields.SchemaField({
|
||||
value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
||||
max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
||||
})
|
||||
|
||||
schema.dmax = new fields.SchemaField({
|
||||
valeur: new fields.StringField({
|
||||
required: true,
|
||||
nullable: false,
|
||||
initial: SYSTEM.RESOURCE_VALUE.ZERO,
|
||||
choices: Object.fromEntries(Object.entries(SYSTEM.RESOURCE_VALUE).map(([key, value]) => [value, { label: `${value}` }])),
|
||||
}),
|
||||
experience: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
||||
schema.perception = new fields.SchemaField({
|
||||
value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
||||
bonus: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 })
|
||||
})
|
||||
|
||||
schema.voies = new fields.SchemaField({
|
||||
majeure: new fields.SchemaField({
|
||||
id: new fields.DocumentIdField(),
|
||||
key: new fields.StringField({ required: true }),
|
||||
nom: new fields.StringField({ required: true }),
|
||||
}),
|
||||
mineure: new fields.SchemaField({
|
||||
id: new fields.DocumentIdField(),
|
||||
key: new fields.StringField({ required: true }),
|
||||
nom: new fields.StringField({ required: true }),
|
||||
}),
|
||||
schema.grit = new fields.SchemaField({
|
||||
earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
||||
current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 })
|
||||
})
|
||||
schema.luck = new fields.SchemaField({
|
||||
earned: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
||||
current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 })
|
||||
})
|
||||
schema.movement = new fields.SchemaField({
|
||||
walk: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
||||
jog: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
||||
sprint: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
||||
run: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
||||
armorAdjust: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
||||
})
|
||||
schema.biodata = new fields.SchemaField({
|
||||
class: new fields.StringField({ required: true, nullable: false, initial: "" }),
|
||||
level: new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 }),
|
||||
mortal: new fields.StringField({ required: true, nullable: false, initial: "" }),
|
||||
alignment: new fields.StringField({ required: true, nullable: false, initial: "" }),
|
||||
age: new fields.NumberField({ ...requiredInteger, initial: 15, min: 6 }),
|
||||
height: new fields.NumberField({ ...requiredInteger, initial: 170, min: 50 }),
|
||||
eyes: new fields.StringField({ required: true, nullable: false, initial: "" }),
|
||||
hair: new fields.StringField({ required: true, nullable: false, initial: "" })
|
||||
})
|
||||
schema.developmentPoints = new fields.SchemaField({
|
||||
total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
||||
remaining: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 })
|
||||
})
|
||||
|
||||
return schema
|
||||
}
|
||||
|
||||
/** @override */
|
||||
static LOCALIZATION_PREFIXES = ["TENEBRIS.Character"]
|
||||
|
||||
get hasVoieMajeure() {
|
||||
return !!this.voies.majeure.id
|
||||
}
|
||||
|
||||
get hasVoieMineure() {
|
||||
return !!this.voies.mineure.id
|
||||
}
|
||||
static LOCALIZATION_PREFIXES = ["LETHALFANTASY.Character"]
|
||||
|
||||
/**
|
||||
* Rolls a dice for a character.
|
||||
@@ -127,9 +102,6 @@ export default class LethalFantasyCharacter extends foundry.abstract.TypeDataMod
|
||||
rollValue = this.caracteristiques[rollTarget].valeur
|
||||
opponentTarget = game.user.targets.first()
|
||||
break
|
||||
case ROLL_TYPE.RESOURCE:
|
||||
rollValue = this.ressources[rollTarget].valeur
|
||||
break
|
||||
case ROLL_TYPE.DAMAGE:
|
||||
rollValue = this.parent.items.get(rollTarget).system.degats
|
||||
opponentTarget = game.user.targets.first()
|
||||
@@ -165,12 +137,6 @@ export default class LethalFantasyCharacter extends foundry.abstract.TypeDataMod
|
||||
})
|
||||
if (!roll) return null
|
||||
|
||||
// Perte de ressouces
|
||||
if (rollType === ROLL_TYPE.RESOURCE && roll.resultType === "failure") {
|
||||
const value = this.ressources[rollTarget].valeur
|
||||
const newValue = LethalFantasyUtils.findLowerDice(value)
|
||||
await this.parent.update({ [`system.ressources.${rollTarget}.valeur`]: newValue })
|
||||
}
|
||||
await roll.toMessage({}, { rollMode: roll.options.rollMode })
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user