Redo Skill button, fixes and translations. (css missing)

This commit is contained in:
Melon-PieldeSapo
2024-12-30 17:29:01 +01:00
parent d6f44e7b21
commit 3d1fa12e64
9 changed files with 227 additions and 248 deletions
+9 -2
View File
@@ -27,8 +27,15 @@
"Mosh.CharacterGenerator.StatOption": "Stats & Saves",
"Mosh.CharacterGenerator.StatOptionPopupTitle": "Class Attribute and Saves option",
"Mosh.CharacterGenerator.StatOptionPopupText": "Choose where to apply the bonus of:",
"Mosh.CharacterGenerator.SkillOptionPopupTitle": "Choose your skills",
"Mosh.CharacterGenerator.SkillOptionChoice": "Option",
"Mosh.CharacterGenerator.SkillOption.Classerror": "You need to select a class first.",
"Mosh.CharacterGenerator.SkillOption.PopupTitle": "Choose your skills",
"Mosh.CharacterGenerator.SkillOption.PopupTrainedDescription": "Choose 1 Trained skill",
"Mosh.CharacterGenerator.SkillOption.PopupExpertDescription": "Choose 1 Expert skill",
"Mosh.CharacterGenerator.SkillOption.PopupMasterDescription": "Choose 1 Master skill",
"Mosh.CharacterGenerator.SkillOption.PopupFullMasterDescription": "Choose 1 Master skill, and an Expert and Trained Skill prerequisite.",
"Mosh.CharacterGenerator.SkillOption.PopupFullExperDescription": "Choose 1 Expert skill, and Trained Skill prerequisite.",
"Mosh.CharacterGenerator.SkillOption.ChoiceWord": "Option",
"Mosh.CharacterGenerator.SkillOption.ChoiceText":"Choose 1 from these skill bonus options",
"Mosh.CharacterGenerator.Tables": "Tables",
"Mosh.CharacterGenerator.Table.Loadout": "Loadout Table",
"Mosh.CharacterGenerator.Table.Patch": "Patch Table",
+1 -1
View File
@@ -136,7 +136,7 @@ export class MothershipClassSheet extends MothershipItemSheet {
DialogContent+=`<option value='speed'>${game.i18n.localize("Mosh.Speed")}</option>`
}
if ( ! stats.includes("intellect")){
DialogContent+=`<option value='intellect'>${game.i18n.localize("Mosh.Intelect")}</option>`
DialogContent+=`<option value='intellect'>${game.i18n.localize("Mosh.Intellect")}</option>`
}
if ( ! stats.includes("combat")){
DialogContent+=`<option value='combat'>${game.i18n.localize("Mosh.Combat")}</option>`
+53 -71
View File
@@ -172,7 +172,7 @@ export class DLActorGenerator extends FormApplication {
let li_html = `<li><img src="${skill.img}" title="${skill.name}" width="24" height="24"/> ${await TextEditor.enrichHTML(skill.name, { async: true })}</li>`;
html.find(`ul[id="system.class.skils.text"]`).append(li_html);
}
let old_skills = html.find(`input[id="system.class.skills.uuid"]`).prop("value").split(",").filter(Boolean);
let old_skills = await html.find(`input[id="system.class.skills.uuid"]`).prop("value").split(",").filter(Boolean);
html.find(`input[id="system.class.skills.uuid"]`).prop("value", old_skills.concat(skillsUuid).join(","));
}
@@ -187,15 +187,15 @@ export class DLActorGenerator extends FormApplication {
}
for (let i = 0; i < skillPopupOptions.trained; i++) {
await this.showSkillDialog('systems/mosh/templates/dialogs/actor-generator/actor-generator-skill-option-single-dialog.html', "trained");
await this.showSkillDialog('systems/mosh/templates/dialogs/actor-generator/actor-generator-skill-option-single-dialog.html', "Trained");
}
for (let i = 0; i < skillPopupOptions.expert; i++) {
await this.showSkillDialog('systems/mosh/templates/dialogs/actor-generator/actor-generator-skill-option-single-dialog.html', "expert");
await this.showSkillDialog('systems/mosh/templates/dialogs/actor-generator/actor-generator-skill-option-single-dialog.html', "Expert");
}
for (let i = 0; i < skillPopupOptions.master; i++) {
await this.showSkillDialog('systems/mosh/templates/dialogs/actor-generator/actor-generator-skill-option-single-dialog.html', "master");
await this.showSkillDialog('systems/mosh/templates/dialogs/actor-generator/actor-generator-skill-option-single-dialog.html', "Master");
}
//console.log(existingSkills);
@@ -213,7 +213,7 @@ export class DLActorGenerator extends FormApplication {
let skillPopupData = {
title: game.i18n.localize("Mosh.CharacterGenerator.SkillOptionPopupTitle"),
title: game.i18n.localize("Mosh.CharacterGenerator.SkillOption.PopupTitle"),
existingSkills: skillsUuid,
skills: {
trained: all_skills.filter(i => i.system.rank == "Trained"),
@@ -222,15 +222,15 @@ export class DLActorGenerator extends FormApplication {
}
};
if (exclusive) {
skillPopupData.description = game.i18n.localize("Mosh.CharacterGenerator.SkillOptionPopup" + exclusive + "Description");
skillPopupData.description = game.i18n.localize("Mosh.CharacterGenerator.SkillOption.Popup" + exclusive + "Description");
switch (exclusive) {
case "master":
case "Master":
skillPopupData.skills = all_skills.filter(i => i.system.rank == "Master" && i.system.prerequisite_ids.filter(item => skillsUuid.includes(item)).length > 0);
break;
case "expert":
case "Expert":
skillPopupData.skills = all_skills.filter(i => i.system.rank == "Expert" && i.system.prerequisite_ids.filter(item => skillsUuid.includes(item)).length > 0);
break;
case "trained":
case "Trained":
skillPopupData.skills = all_skills.filter(i => i.system.rank == "Trained");
break;
}
@@ -240,7 +240,7 @@ export class DLActorGenerator extends FormApplication {
return new Promise((resolve) => {
let d = new Dialog({
title: game.i18n.localize("Mosh.CharacterGenerator.SkillOptionPopupTitle"),
title: game.i18n.localize("Mosh.CharacterGenerator.SkillOption.PopupTitle"),
content: popUpContent,
buttons: {
"1": {
@@ -277,20 +277,20 @@ export class DLActorGenerator extends FormApplication {
return new Promise((resolve) => {
let d = new Dialog({
title: game.i18n.localize("Mosh.CharacterGenerator.SkillOptionPopupTitle"),
title: game.i18n.localize("Mosh.CharacterGenerator.SkillOption.PopupTitle"),
content: popUpContent,
width: 450,
window:{width: 500,},
buttons: {
"1": {
icon: '<i class="fas fa-check"></i>',
label: game.i18n.localize("Mosh.CharacterGenerator.SkillOptionChoice") + " 1",
label: game.i18n.localize("Mosh.CharacterGenerator.SkillOption.ChoiceWord") + " 1",
callback: () => {
resolve(option_1);
}
},
"2": {
icon: '<i class="fas fa-check"></i>',
label: game.i18n.localize("Mosh.CharacterGenerator.SkillOptionChoice") + " 2",
label: game.i18n.localize("Mosh.CharacterGenerator.SkillOption.ChoiceWord") + " 2",
callback: () => {
resolve(option_2);
}
@@ -301,6 +301,38 @@ export class DLActorGenerator extends FormApplication {
});
}
async applyClassSkills(html) {
let class_uuid = html.find(`input[id="system.class.uuid"]`).prop("value");
if (class_uuid == "") {
ui.notifications.error(game.i18n.localize("Mosh.CharacterGenerator.SkillOption.Classerror"));
}
let classObject = await fromUuid(class_uuid);
await html.find(`ul[id="system.class.skils.text"]`).empty();
await html.find(`input[id="system.class.skills.uuid"]`).prop("value", "");
this.skillsUuid = classObject.system.base_adjustment.skills_granted.slice();
await this.updateSkillHtmlUl(html, this.skillsUuid);
let option_skills_1 = classObject.system.selected_adjustment.choose_skill_and;
await this.popUpSkillOptions(option_skills_1);
let option_skills_2 = classObject.system.selected_adjustment.choose_skill_or;
const isEmptyOption1 = Object.values(option_skills_2.option_1).every(x => x === null || x === '' || x === 0);
const isEmptyOption2 = Object.values(option_skills_2.option_2).every(x => x === null || x === '' || x === 0);
let option_skills_2_choosed = {}
if (isEmptyOption1 == false && isEmptyOption2 == false) {
//we need to choose-> render popup with both options
option_skills_2_choosed = await this.showOptionsDialog(option_skills_2.option_1,option_skills_2.option_2);
} else if (isEmptyOption1 == false) {
//there is only option 1 (edge case) but we go with it.
option_skills_2_choosed = option_skills_2.option_1;
} else if (isEmptyOption2 == false) {
//there is only option 2 (edge case) but we go with it.
option_skills_2_choosed = option_skills_2.option_2;
}
await this.popUpSkillOptions(option_skills_2_choosed);
}
async updateClass(classUuid, randomCharacter = false) {
const droppedObject = await fromUuid(classUuid);
@@ -329,31 +361,7 @@ export class DLActorGenerator extends FormApplication {
* Skills
* */
this._element.find(`ul[id="system.class.skils.text"]`).empty();
this.skillsUuid = droppedObject.system.base_adjustment.skills_granted.slice();
await this.updateSkillHtmlUl(this._element, this.skillsUuid);
let option_skills_1 = droppedObject.system.selected_adjustment.choose_skill_and;
await this.popUpSkillOptions(option_skills_1);
let option_skills_2 = droppedObject.system.selected_adjustment.choose_skill_or;
const isEmptyOption1 = Object.values(option_skills_2.option_1).every(x => x === null || x === '' || x === 0);
const isEmptyOption2 = Object.values(option_skills_2.option_2).every(x => x === null || x === '' || x === 0);
let option_skills_2_choosed = {}
if (isEmptyOption1 == false && isEmptyOption2 == false) {
//we need to choose-> render popup with both options
option_skills_2_choosed = await this.showOptionsDialog(option_skills_2.option_1,option_skills_2.option_2);
} else if (isEmptyOption1 == false) {
//there is only option 1 (edge case) but we go with it.
option_skills_2_choosed = option_skills_2.option_1;
} else if (isEmptyOption2 == false) {
//there is only option 2 (edge case) but we go with it.
option_skills_2_choosed = option_skills_2.option_2;
}
await this.popUpSkillOptions(option_skills_2_choosed);
await this.applyClassSkills(this._element);
/**
* Stats
@@ -391,38 +399,6 @@ export class DLActorGenerator extends FormApplication {
});
d.render(true);
}
/*
for(let i = 0; i < statsandsaves.length; i++) {
let obj = statsandsaves[i];
if (obj.options.length == 1){
//only 1 option, then its forced
this._element.find(`input[name="${obj.options[0]}"]`).prop("value",obj.value);
}else{
let buttons_options = {};
for(let j = 0; j < obj.options.length; j++) {
buttons_options[j] = {
icon: '<i class="fas fa-check"></i>',
label: obj.options[j].replace(/\.bonus/i,"").replace(/(.*)\.+/i,""),
callback: () => this._element.find(`input[name="${obj.options[j]}"]`).prop("value",obj.value)
};
}
let d = new Dialog({
title: "Class Attribute and Saves option",
content: `<p>You must choose where to apply the bonus of (${obj.value})</p>`,
buttons: buttons_options,
default: "1",
//render: html => console.log("Register interactivity in the rendered dialog"),
//close: html => console.log("This always is logged no matter which option is chosen")
});
d.render(true);
}
}*/
//}catch{
// ui.notifications.error("Class has invalid stats and saves configuration.");
//}
//todo: add robotic flag.
return;
}
@@ -513,6 +489,12 @@ export class DLActorGenerator extends FormApplication {
html.find(`img[id="system.credits.value"]`).click(ev => {
this.rollCredits(html)
});
/** Redo Skills */
html.find(`i[id="system.class.skills.redo"]`).click(ev => {
this.applyClassSkills(html)
});
/** Roll everything button */
html.find(`div[id="roll.everything"]`).click(ev => {
this.rollEverything(html)
@@ -97,7 +97,7 @@
<div class="resource mainstat">
<div class="mainstatlabel">
<span class=" mainstattext" data-key="intellect" data-roll="d100"
data-label="{{ localize 'Mosh.Intelect' }}">{{ localize 'Mosh.Intelect' }}</span>
data-label="{{ localize 'Mosh.Intellect' }}">{{ localize 'Mosh.Intellect' }}</span>
</div>
<img class="clicable-item circle-input" id="system.stats.intellect.value" src="icons/svg/d20-black.svg"
alt="roll">
@@ -243,6 +243,10 @@
<div class="fulllabel mainstatlabel">
<span class=" mainstattext" data-key="skills" data-label="skills">{{ localize 'Mosh.Skills' }}</span>
</div>
<i class="clicable-item circle-input fa fa-undo" id="system.class.skills.redo" alt="restart" style="
font-size: 37px;
text-align: center;
"></i>
</div>
<div class="headerinputfield ulinputfield">
<input type="hidden" id="system.class.skills.uuid" name="system.class.skills.uuid" class="noborder">
@@ -1,70 +1,79 @@
<div class="grid grid-2col widegap">
<div class="mosh">
<div style="border:3px solid #111;border-radius: 1em;padding: 0.5em;">
<div class="{{cssClass}} characterGeneratorSkillPopup">
<div>
<p class="skillpopupDescription">{{localize 'Mosh.CharacterGenerator.SkillOption.ChoiceText'}}</p>
</div>
<div class="grid grid-2col widegap">
<div style="border:3px solid #111;border-radius: 1em;padding: 0.5em;">
<p style="text-decoration: underline;">{{localize 'Mosh.CharacterGenerator.SkillOptionChoice'}} 1</p>
<p style="text-decoration: underline;">{{localize 'Mosh.CharacterGenerator.SkillOption.ChoiceWord'}}: 1
</p>
<ul>
{{#if option_1.master}}
<li>
{{localize 'Mosh.SkillRankMaster'}} : {{option_1.master}}
</li>
{{/if}}
{{#if option_1.expert}}
<li>
{{localize 'Mosh.SkillRankExpert'}} : {{option_1.expert}}
</li>
{{/if}}
{{#if option_1.trained}}
<li>
{{localize 'Mosh.SkillRankTrained'}} : {{option_1.trained}}
</li>
{{/if}}
{{#if option_1.master_full_set}}
<li>
{{localize 'Mosh.SkillRankMaster'}} & {{localize 'Mosh.SkillsPrerequisite'}} :
{{option_1.master_full_set}}
</li>
{{/if}}
{{#if option_1.expert_full_set}}
<li>
{{localize 'Mosh.SkillRankExpert'}} & {{localize 'Mosh.SkillsPrerequisite'}} :
{{option_1.expert_full_set}}
</li>
{{/if}}
</ul>
<ul>
{{#if option_1.master}}
<li>
{{localize 'Mosh.SkillRankMaster'}} : {{option_1.master}}
</li>
{{/if}}
{{#if option_1.expert}}
<li>
{{localize 'Mosh.SkillRankExpert'}} : {{option_1.expert}}
</li>
{{/if}}
{{#if option_1.trained}}
<li>
{{localize 'Mosh.SkillRankTrained'}} : {{option_1.trained}}
</li>
{{/if}}
{{#if option_1.master_full_set}}
<li>
{{localize 'Mosh.SkillRankMaster'}} & {{localize 'Mosh.SkillsPrerequisite'}} :
{{option_1.master_full_set}}
</li>
{{/if}}
{{#if option_1.expert_full_set}}
<li>
{{localize 'Mosh.SkillRankExpert'}} & {{localize 'Mosh.SkillsPrerequisite'}} :
{{option_1.expert_full_set}}
</li>
{{/if}}
</ul>
</div>
<div style="border:3px solid #111;border-radius: 1em;padding: 0.5em;">
<p style="text-decoration: underline;">{{localize 'Mosh.CharacterGenerator.SkillOption.ChoiceWord'}}: 2
</p>
<ul>
{{#if option_2.master}}
<li>
{{localize 'Mosh.SkillRankMaster'}} : {{option_2.master}}
</li>
{{/if}}
{{#if option_2.expert}}
<li>
{{localize 'Mosh.SkillRankExpert'}} : {{option_2.expert}}
</li>
{{/if}}
{{#if option_2.trained}}
<li>
{{localize 'Mosh.SkillRankTrained'}} : {{option_2.trained}}
</li>
{{/if}}
{{#if option_2.master_full_set}}
<li>
{{localize 'Mosh.SkillRankMaster'}} & {{localize 'Mosh.SkillsPrerequisite'}} :
{{option_2.master_full_set}}
</li>
{{/if}}
{{#if option_2.expert_full_set}}
<li>
{{localize 'Mosh.SkillRankExpert'}} & {{localize 'Mosh.SkillsPrerequisite'}} :
{{option_2.expert_full_set}}
</li>
{{/if}}
</ul>
</div>
</div>
</div>
<div style="border:3px solid #111;border-radius: 1em;padding: 0.5em;">
<p style="text-decoration: underline;">{{localize 'Mosh.CharacterGenerator.SkillOptionChoice'}} 2</p>
<ul>
{{#if option_2.master}}
<li>
{{localize 'Mosh.SkillRankMaster'}} : {{option_2.master}}
</li>
{{/if}}
{{#if option_2.expert}}
<li>
{{localize 'Mosh.SkillRankExpert'}} : {{option_2.expert}}
</li>
{{/if}}
{{#if option_2.trained}}
<li>
{{localize 'Mosh.SkillRankTrained'}} : {{option_2.trained}}
</li>
{{/if}}
{{#if option_2.master_full_set}}
<li>
{{localize 'Mosh.SkillRankMaster'}} & {{localize 'Mosh.SkillsPrerequisite'}} :
{{option_2.master_full_set}}
</li>
{{/if}}
{{#if option_2.expert_full_set}}
<li>
{{localize 'Mosh.SkillRankExpert'}} & {{localize 'Mosh.SkillsPrerequisite'}} :
{{option_2.expert_full_set}}
</li>
{{/if}}
</ul>
</div>
</div>
@@ -1,17 +1,13 @@
<!DOCTYPE html>
<html lang="en">
<div class="mosh">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{{title}}</title>
</head>
<form id="skillForm" class="{{cssClass}} characterGeneratorSkillPopup">
<div>
<p class="skillpopupDescription">{{localize
'Mosh.CharacterGenerator.SkillOption.PopupFullExpertDescription'}}</p>
</div>
<div class="grid grid-1col widegap center">
<body>
<form id="skillForm">
<div class="grid grid-1col widegap">
<div>
<div class="dropdownSkill">
<label for="dropdownExpert">{{localize 'Mosh.SkillRankExpert'}}:</label>
<select id="dropdownExpert" name="dropdownExpert" onchange="updateDropdownExpert()">
<option selected id="dropdownExpertDefault" value="" data-uuid="" data-prerequisite_ids='[]'>---
@@ -25,7 +21,7 @@
</select>
</div>
<div>
<div class="dropdownSkill">
<label for="dropdownTrained">{{localize 'Mosh.SkillRankTrained'}}:</label>
<select id="dropdownTrained" name="dropdownTrained">
<option selected id="dropdownTrainedDefault" value="" data-uuid="" data-prerequisite_ids='[]'>---
@@ -41,32 +37,29 @@
</div>
</div>
</form>
</div>
<script>
<script>
function updateDropdownExpert() {
// Logic to update dropdownTrained based on the selection of dropdownExpert
function updateDropdownExpert() {
// Logic to update dropdownTrained based on the selection of dropdownExpert
let dropdownExpert = document.getElementById('dropdownExpert');
let dropdownTrained = document.getElementById('dropdownTrained');
let selectedValue = dropdownExpert.options[dropdownExpert.selectedIndex].getAttribute('data-uuid');
let dropdownExpert = document.getElementById('dropdownExpert');
let dropdownTrained = document.getElementById('dropdownTrained');
let selectedValue = dropdownExpert.options[dropdownExpert.selectedIndex].getAttribute('data-uuid');
let prerequisiteIds = JSON.parse(dropdownExpert.options[dropdownExpert.selectedIndex].getAttribute('data-prerequisite_ids'));
let prerequisiteIds = JSON.parse(dropdownExpert.options[dropdownExpert.selectedIndex].getAttribute('data-prerequisite_ids'));
for (let i = 0; i < dropdownTrained.options.length; i++) {
let option = dropdownTrained.options[i];
let optionUuid = option.getAttribute('data-uuid');
if (prerequisiteIds.includes(optionUuid)) {
option.hidden = false;
} else {
option.hidden = true;
if (dropdownTrained.options[dropdownTrained.selectedIndex].getAttribute('data-uuid') == optionUuid) {
dropdownTrained.selectedIndex = 0;
}
for (let i = 0; i < dropdownTrained.options.length; i++) {
let option = dropdownTrained.options[i];
let optionUuid = option.getAttribute('data-uuid');
if (prerequisiteIds.includes(optionUuid)) {
option.hidden = false;
} else {
option.hidden = true;
if (dropdownTrained.options[dropdownTrained.selectedIndex].getAttribute('data-uuid') == optionUuid) {
dropdownTrained.selectedIndex = 0;
}
}
}
</script>
</body>
</html>
}
</script>
@@ -1,17 +1,13 @@
<!DOCTYPE html>
<html lang="en">
<div class="mosh">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{{title}}</title>
</head>
<form id="skillForm" class="{{cssClass}} characterGeneratorSkillPopup">
<div>
<p class="skillpopupDescription">{{localize
'Mosh.CharacterGenerator.SkillOption.PopupFullMasterDescription'}}</p>
</div>
<div class="grid grid-1col widegap center">
<body>
<form id="skillForm">
<div class="grid grid-1col widegap">
<div>
<div class="dropdownSkill">
<label for="dropdownMaster">{{localize 'Mosh.SkillRankMaster'}}:</label>
<select id="dropdownMaster" name="dropdownMaster" onchange="updateDropdownMaster()">
<option selected id="dropdownMasterDefault" value="" data-uuid="" data-prerequisite_ids='[]'>---
@@ -24,7 +20,7 @@
{{/each}}
</select>
</div>
<div>
<div class="dropdownSkill">
<label for="dropdownExpert">{{localize 'Mosh.SkillRankExpert'}}:</label>
<select id="dropdownExpert" name="dropdownExpert" onchange="updateDropdownExpert()">
<option selected id="dropdownExpertDefault" value="" data-uuid="" data-prerequisite_ids='[]'>---
@@ -38,7 +34,7 @@
</select>
</div>
<div>
<div class="dropdownSkill">
<label for="dropdownTrained">{{localize 'Mosh.SkillRankTrained'}}:</label>
<select id="dropdownTrained" name="dropdownTrained">
<option selected id="dropdownTrainedDefault" value="" data-uuid="" data-prerequisite_ids='[]'>---
@@ -54,57 +50,54 @@
</div>
</div>
</form>
</div>
<script>
function updateDropdownMaster() {
// Logic to update dropdownExpert based on the selection of dropdownMaster
<script>
function updateDropdownMaster() {
// Logic to update dropdownExpert based on the selection of dropdownMaster
let dropdownMaster = document.getElementById('dropdownMaster');
let dropdownExpert = document.getElementById('dropdownExpert');
let selectedValue = dropdownMaster.options[dropdownMaster.selectedIndex].getAttribute('data-uuid');
let dropdownMaster = document.getElementById('dropdownMaster');
let dropdownExpert = document.getElementById('dropdownExpert');
let selectedValue = dropdownMaster.options[dropdownMaster.selectedIndex].getAttribute('data-uuid');
let prerequisiteIds = JSON.parse(dropdownMaster.options[dropdownMaster.selectedIndex].getAttribute('data-prerequisite_ids'));
let prerequisiteIds = JSON.parse(dropdownMaster.options[dropdownMaster.selectedIndex].getAttribute('data-prerequisite_ids'));
for (let i = 0; i < dropdownExpert.options.length; i++) {
let option = dropdownExpert.options[i];
let optionUuid = option.getAttribute('data-uuid');
if (prerequisiteIds.includes(optionUuid)) {
option.hidden = false;
} else {
option.hidden = true;
if (dropdownExpert.options[dropdownExpert.selectedIndex].getAttribute('data-uuid') == optionUuid) {
dropdownExpert.selectedIndex = 0;
let dropdownTrained = document.getElementById('dropdownTrained');
dropdownTrained.selectedIndex = 0;
}
for (let i = 0; i < dropdownExpert.options.length; i++) {
let option = dropdownExpert.options[i];
let optionUuid = option.getAttribute('data-uuid');
if (prerequisiteIds.includes(optionUuid)) {
option.hidden = false;
} else {
option.hidden = true;
if (dropdownExpert.options[dropdownExpert.selectedIndex].getAttribute('data-uuid') == optionUuid) {
dropdownExpert.selectedIndex = 0;
let dropdownTrained = document.getElementById('dropdownTrained');
dropdownTrained.selectedIndex = 0;
}
}
}
}
function updateDropdownExpert() {
// Logic to update dropdownTrained based on the selection of dropdownExpert
function updateDropdownExpert() {
// Logic to update dropdownTrained based on the selection of dropdownExpert
let dropdownExpert = document.getElementById('dropdownExpert');
let dropdownTrained = document.getElementById('dropdownTrained');
let selectedValue = dropdownExpert.options[dropdownExpert.selectedIndex].getAttribute('data-uuid');
let dropdownExpert = document.getElementById('dropdownExpert');
let dropdownTrained = document.getElementById('dropdownTrained');
let selectedValue = dropdownExpert.options[dropdownExpert.selectedIndex].getAttribute('data-uuid');
let prerequisiteIds = JSON.parse(dropdownExpert.options[dropdownExpert.selectedIndex].getAttribute('data-prerequisite_ids'));
let prerequisiteIds = JSON.parse(dropdownExpert.options[dropdownExpert.selectedIndex].getAttribute('data-prerequisite_ids'));
for (let i = 0; i < dropdownTrained.options.length; i++) {
let option = dropdownTrained.options[i];
let optionUuid = option.getAttribute('data-uuid');
if (prerequisiteIds.includes(optionUuid)) {
option.hidden = false;
} else {
option.hidden = true;
if (dropdownTrained.options[dropdownTrained.selectedIndex].getAttribute('data-uuid') == optionUuid) {
dropdownTrained.selectedIndex = 0;
}
for (let i = 0; i < dropdownTrained.options.length; i++) {
let option = dropdownTrained.options[i];
let optionUuid = option.getAttribute('data-uuid');
if (prerequisiteIds.includes(optionUuid)) {
option.hidden = false;
} else {
option.hidden = true;
if (dropdownTrained.options[dropdownTrained.selectedIndex].getAttribute('data-uuid') == optionUuid) {
dropdownTrained.selectedIndex = 0;
}
}
}
</script>
</body>
</html>
}
</script>
@@ -1,18 +1,11 @@
<!DOCTYPE html>
<html lang="en">
<div class="mosh">
<form id="skillForm" class="{{cssClass}} characterGeneratorSkillPopup">
<div>
<p class="skillpopupDescription">{{description}}:</p>
</div>
<div class="grid grid-1col widegap center">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{{title}}</title>
</head>
<body>
<form id="skillForm">
<div class="grid grid-1col widegap">
<div>
<label for="dropdownSkill">{{description}}:</label>
<div class="dropdownSkill">
<select id="dropdownSkill" name="dropdownSkill">
<option selected id="dropdownSkillDefault" value="" data-uuid="" data-prerequisite_ids='[]'>---
</option>
@@ -28,6 +21,4 @@
</div>
</form>
</body>
</html>
</div>
+2 -2
View File
@@ -49,8 +49,8 @@
<div class="mainstatwrapper">
<div class="resource mainstat">
<div class="mainstatlabel">
<span class=" mainstattext" data-key="intellect" data-label="{{ localize 'Mosh.Intelect' }}">{{ localize
'Mosh.Intelect' }}</span>
<span class=" mainstattext" data-key="intellect" data-label="{{ localize 'Mosh.Intellect' }}">{{ localize
'Mosh.Intellect' }}</span>
</div>
<input class="circle-input" id="system.base_adjustment.intellect" type="text"
name="system.base_adjustment.intellect" value="{{system.base_adjustment.intellect}}" data-dtype="Number" />