mirror of
https://github.com/Foundryborne/daggerheart.git
synced 2026-01-11 19:25:21 +01:00
Initial commit
This commit is contained in:
commit
aa4021d1a2
163 changed files with 26530 additions and 0 deletions
50
module/data/adversaryRoll.mjs
Normal file
50
module/data/adversaryRoll.mjs
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
export default class DhpAdversaryRoll extends foundry.abstract.TypeDataModel {
|
||||
static defineSchema() {
|
||||
const fields = foundry.data.fields;
|
||||
|
||||
return {
|
||||
roll: new fields.StringField({}),
|
||||
total: new fields.NumberField({ integer: true }),
|
||||
modifiers: new fields.ArrayField(new fields.SchemaField({
|
||||
value: new fields.NumberField({ integer: true }),
|
||||
label: new fields.StringField({}),
|
||||
title: new fields.StringField({}),
|
||||
})),
|
||||
diceResults: new fields.ArrayField(new fields.SchemaField({
|
||||
value: new fields.NumberField({ integer: true }),
|
||||
discarded: new fields.BooleanField({ initial: false }),
|
||||
})),
|
||||
targets: new fields.ArrayField(new fields.SchemaField({
|
||||
id: new fields.StringField({}),
|
||||
name: new fields.StringField({}),
|
||||
img: new fields.StringField({}),
|
||||
difficulty: new fields.NumberField({ integer: true, nullable: true }),
|
||||
evasion: new fields.NumberField({ integer: true }),
|
||||
hit: new fields.BooleanField({ initial: false }),
|
||||
})),
|
||||
damage: new fields.SchemaField({
|
||||
value: new fields.StringField({}),
|
||||
type: new fields.StringField({ choices: Object.keys(SYSTEM.GENERAL.damageTypes), integer: false }),
|
||||
}, { nullable: true, initial: null })
|
||||
}
|
||||
}
|
||||
|
||||
prepareDerivedData(){
|
||||
const diceKeys = Object.keys(this.diceResults);
|
||||
const highestIndex = 0;
|
||||
for(var index in diceKeys){
|
||||
const resultIndex = Number.parseInt(index);
|
||||
if(highestIndex === resultIndex) continue;
|
||||
|
||||
const current = this.diceResults[resultIndex];
|
||||
const highest = this.diceResults[highestIndex];
|
||||
|
||||
if(current.value > highest.value) this.diceResults[highestIndex].discarded = true;
|
||||
else this.diceResults[resultIndex].discarded = true;
|
||||
}
|
||||
|
||||
this.targets.forEach(target => {
|
||||
target.hit = target.difficulty ? this.total >= target.difficulty : this.total >= target.evasion;
|
||||
});
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue