diff --git a/module/actor/actor-sheet.js b/module/actor/actor-sheet.js index d1037aa..c00e470 100644 --- a/module/actor/actor-sheet.js +++ b/module/actor/actor-sheet.js @@ -75,22 +75,23 @@ export default class DeltaGreenActorSheet extends ActorSheet { name: training.name, id: training.id, key: training.attribute, - rollType: "skill", }; // Convert the machine-readable name to a human-readable one. switch (true) { + // Stats case DG.statistics.includes(training.attribute): simplifiedTraining.attribute = training.attribute.toUpperCase(); simplifiedTraining.targetNumber = this.actor.system.statistics[training.attribute].value; - simplifiedTraining.rollType = "stat"; break; + // Skills case DG.skills.includes(training.attribute): simplifiedTraining.attribute = this.actor.system.skills[training.attribute].label; simplifiedTraining.targetNumber = this.actor.system.skills[training.attribute].proficiency; break; + // Typed Skills default: simplifiedTraining.attribute = this.actor.system.typedSkills[training.attribute].label; @@ -910,6 +911,7 @@ export default class DeltaGreenActorSheet extends ActorSheet { rollType: dataset.rolltype, key: dataset.key, actor: this.actor, + specialTrainingName: dataset?.name || null, // Only applies to Special Training Rolls item, }; @@ -919,6 +921,7 @@ export default class DeltaGreenActorSheet extends ActorSheet { case "stat": case "skill": case "sanity": + case "special-training": case "weapon": roll = new DGPercentileRoll("1D100", {}, rollOptions); break; diff --git a/module/roll/roll.js b/module/roll/roll.js index 8397513..480ce57 100644 --- a/module/roll/roll.js +++ b/module/roll/roll.js @@ -97,6 +97,24 @@ export class DGPercentileRoll extends DGRoll { this.localizedKey = `${skill.group} (${skill.label})`; } break; + case "special-training": { + this.specialTrainingName = options.specialTrainingName; + if (statKeys.includes(this.key)) { + this.target = this.actor.system.statistics[this.key].x5; + this.localizedKey = game.i18n.localize(`DG.Attributes.${this.key}`); + } + if (skillKeys.includes(this.key)) { + this.target = this.actor.system.skills[this.key].proficiency; + this.localizedKey = game.i18n.localize(`DG.Skills.${this.key}`); + } + if (typedSkillKeys.includes(this.key)) { + const skill = this.actor.system.typedSkills[this.key]; + this.target = skill.proficiency; + this.localizedKey = `${skill.group} (${skill.label})`; + } + this.localizedKey = `${this.specialTrainingName} - (${this.localizedKey})`; + break; + } case "sanity": this.target = this.actor.system.sanity.value; this.localizedKey = game.i18n.localize("DG.Attributes.SAN"); diff --git a/templates/actor/custom-skills-partial.html b/templates/actor/custom-skills-partial.html index ad56bcb..34c5c3b 100644 --- a/templates/actor/custom-skills-partial.html +++ b/templates/actor/custom-skills-partial.html @@ -28,7 +28,7 @@ {{/each}} {{#each specialTraining as |training|}}
-