add applySkillImprovements action

This commit is contained in:
jalensailin
2025-07-18 22:48:02 -04:00
parent cb6628e725
commit 744487ab64
3 changed files with 75 additions and 73 deletions
+1 -1
View File
@@ -1097,7 +1097,7 @@ input.item-sheet-short-input {
margin: 5px;
}
.apply-skill-improvements {
a[data-action="applySkillImprovements"] {
float: right;
}
+70 -71
View File
@@ -21,6 +21,7 @@ export default class DeltaGreenActorSheet extends DGSheetMixin(ActorSheetV2) {
resetBreakingPoint: DeltaGreenActorSheet._resetBreakingPoint,
typedSkillAction: DeltaGreenActorSheet._onTypedSkillAction,
specialTrainingAction: DeltaGreenActorSheet._onSpecialTrainingAction,
applySkillImprovements: DeltaGreenActorSheet._applySkillImprovements,
},
});
@@ -626,6 +627,75 @@ export default class DeltaGreenActorSheet extends DGSheetMixin(ActorSheetV2) {
}
}
static _applySkillImprovements(event, target) {
const failedSkills = Object.entries(this.actor.system.skills).filter(
(skill) => skill[1].failure,
);
const failedTypedSkills = Object.entries(
this.actor.system.typedSkills,
).filter((skill) => skill[1].failure);
if (failedSkills.length === 0 && failedTypedSkills.length === 0) {
ui.notifications.warn("No Skills to Increase");
return;
}
let htmlContent = "";
let failedSkillNames = "";
failedSkills.forEach(([skill], value) => {
if (value === 0) {
failedSkillNames += game.i18n.localize(`DG.Skills.${skill}`);
} else {
failedSkillNames += `, ${game.i18n.localize(`DG.Skills.${skill}`)}`;
}
});
failedTypedSkills.forEach(([skillName, skillData], value) => {
if (value === 0 && failedSkillNames === "") {
failedSkillNames += `${game.i18n.localize(
`DG.TypeSkills.${skillData.group.split(" ").join("")}`,
)} (${skillData.label})`;
} else {
failedSkillNames += `, ${game.i18n.localize(
`DG.TypeSkills.${skillData.group.split(" ").join("")}`,
)} (${skillData.label})`;
}
});
const baseRollFormula = game.settings.get(
"deltagreen",
"skillImprovementFormula",
);
htmlContent += `<div>`;
htmlContent += ` <label>${game.i18n.localize(
"DG.Skills.ApplySkillImprovementsDialogLabel",
)} <b>+${baseRollFormula}%</b></label>`;
htmlContent += ` <hr>`;
htmlContent += ` <span> ${game.i18n.localize(
"DG.Skills.ApplySkillImprovementsDialogEffectsFollowing",
)} <b>${failedSkillNames}</b> </span>`;
htmlContent += `</div>`;
new Dialog({
content: htmlContent,
title:
game.i18n.translations.DG?.Skills?.ApplySkillImprovements ??
"Apply Skill Improvements",
default: "add",
buttons: {
apply: {
label: game.i18n.translations.DG?.Skills?.Apply ?? "Apply",
callback: (btn) => {
this._applySkillImprovements(
baseRollFormula,
failedSkills,
failedTypedSkills,
);
},
},
},
}).render(true);
}
/** @override */
activateListeners(html) {
super.activateListeners(html);
@@ -657,77 +727,6 @@ export default class DeltaGreenActorSheet extends DGSheetMixin(ActorSheetV2) {
});
}
html.find(".apply-skill-improvements").click((event) => {
event.preventDefault();
const failedSkills = Object.entries(this.actor.system.skills).filter(
(skill) => skill[1].failure,
);
const failedTypedSkills = Object.entries(
this.actor.system.typedSkills,
).filter((skill) => skill[1].failure);
if (failedSkills.length === 0 && failedTypedSkills.length === 0) {
ui.notifications.warn("No Skills to Increase");
return;
}
let htmlContent = "";
let failedSkillNames = "";
failedSkills.forEach(([skill], value) => {
if (value === 0) {
failedSkillNames += game.i18n.localize(`DG.Skills.${skill}`);
} else {
failedSkillNames += `, ${game.i18n.localize(`DG.Skills.${skill}`)}`;
}
});
failedTypedSkills.forEach(([skillName, skillData], value) => {
if (value === 0 && failedSkillNames === "") {
failedSkillNames += `${game.i18n.localize(
`DG.TypeSkills.${skillData.group.split(" ").join("")}`,
)} (${skillData.label})`;
} else {
failedSkillNames += `, ${game.i18n.localize(
`DG.TypeSkills.${skillData.group.split(" ").join("")}`,
)} (${skillData.label})`;
}
});
const baseRollFormula = game.settings.get(
"deltagreen",
"skillImprovementFormula",
);
htmlContent += `<div>`;
htmlContent += ` <label>${game.i18n.localize(
"DG.Skills.ApplySkillImprovementsDialogLabel",
)} <b>+${baseRollFormula}%</b></label>`;
htmlContent += ` <hr>`;
htmlContent += ` <span> ${game.i18n.localize(
"DG.Skills.ApplySkillImprovementsDialogEffectsFollowing",
)} <b>${failedSkillNames}</b> </span>`;
htmlContent += `</div>`;
new Dialog({
content: htmlContent,
title:
game.i18n.translations.DG?.Skills?.ApplySkillImprovements ??
"Apply Skill Improvements",
default: "add",
buttons: {
apply: {
label: game.i18n.translations.DG?.Skills?.Apply ?? "Apply",
callback: (btn) => {
this._applySkillImprovements(
baseRollFormula,
failedSkills,
failedTypedSkills,
);
},
},
},
}).render(true);
});
// Browse Weapon Compendiums
html.find(".weapon-browse").click((ev) => {
const dialog = new Dialog({
@@ -13,7 +13,10 @@
{{localize 'DG.SpecialTraining.Dialog.CreateSpecialTraining'}}
</a>
{{#if_eq actorType "agent" }}
<a class="item-control apply-skill-improvements action-pill">{{localize 'DG.Skills.ApplySkillImprovements'}}<i class="fas fa-dice"></i></a>
<a class="item-control action-pill" data-action="applySkillImprovements">
{{localize 'DG.Skills.ApplySkillImprovements'}}
<i class="fas fa-dice"></i>
</a>
{{/if_eq}}
</div>
<div class="grid-2col">