Better demeanor autocomplete handling
This commit is contained in:
@@ -118,6 +118,13 @@ export class BaseSheetL5r5e extends ActorSheet {
|
|||||||
* @override
|
* @override
|
||||||
*/
|
*/
|
||||||
async _updateObject(event, formData) {
|
async _updateObject(event, formData) {
|
||||||
|
// Remove autocomplete list name/index if exist
|
||||||
|
if (formData["autoCompleteListName"] || formData["autoCompleteListSelectedIndex"]) {
|
||||||
|
delete formData["autoCompleteListName"];
|
||||||
|
delete formData["autoCompleteListSelectedIndex"];
|
||||||
|
}
|
||||||
|
|
||||||
|
// Symbols
|
||||||
["data.notes", "data.description"].forEach((name) => {
|
["data.notes", "data.description"].forEach((name) => {
|
||||||
if (!formData[name]) {
|
if (!formData[name]) {
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -70,7 +70,7 @@ export class NpcSheetL5r5e extends BaseCharacterSheetL5r5e {
|
|||||||
html,
|
html,
|
||||||
"data.attitude",
|
"data.attitude",
|
||||||
CONFIG.l5r5e.demeanors.map((e) => {
|
CONFIG.l5r5e.demeanors.map((e) => {
|
||||||
let modifiers = [];
|
const modifiers = [];
|
||||||
Object.entries(e.mod).forEach(([k, v]) => {
|
Object.entries(e.mod).forEach(([k, v]) => {
|
||||||
modifiers.push(`${game.i18n.localize(`l5r5e.rings.${k}`)} ${v}`);
|
modifiers.push(`${game.i18n.localize(`l5r5e.rings.${k}`)} ${v}`);
|
||||||
});
|
});
|
||||||
@@ -78,4 +78,27 @@ export class NpcSheetL5r5e extends BaseCharacterSheetL5r5e {
|
|||||||
})
|
})
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update the actor.
|
||||||
|
* @param event
|
||||||
|
* @param formData
|
||||||
|
*/
|
||||||
|
_updateObject(event, formData) {
|
||||||
|
// Redo the demeanor to set the rings data
|
||||||
|
if (formData["autoCompleteListName"] === "data.attitude" && formData["autoCompleteListSelectedIndex"] >= 0) {
|
||||||
|
const demeanor = CONFIG.l5r5e.demeanors[formData["autoCompleteListSelectedIndex"]] || null;
|
||||||
|
if (demeanor) {
|
||||||
|
formData["data.attitude"] = game.i18n.localize(`l5r5e.demeanor.${demeanor.id}`);
|
||||||
|
CONFIG.l5r5e.stances.forEach((ring) => {
|
||||||
|
formData[`data.rings_affinities.${ring}`] = 0;
|
||||||
|
});
|
||||||
|
Object.entries(demeanor.mod).forEach(([k, v]) => {
|
||||||
|
formData[`data.rings_affinities.${k}`] = v;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return super._updateObject(event, formData);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -780,6 +780,12 @@ export class HelpersL5r5e {
|
|||||||
inp.addEventListener("change", (e) => {
|
inp.addEventListener("change", (e) => {
|
||||||
if (e.doSubmit) {
|
if (e.doSubmit) {
|
||||||
closeAllLists();
|
closeAllLists();
|
||||||
|
if (e.autoCompleteSelectedIndex) {
|
||||||
|
$(inp).prepend(
|
||||||
|
`<input type="hidden" name="autoCompleteListName" value="${name}">` +
|
||||||
|
`<input type="hidden" name="autoCompleteListSelectedIndex" value="${e.autoCompleteSelectedIndex}">`
|
||||||
|
);
|
||||||
|
}
|
||||||
$(inp).parent().submit();
|
$(inp).parent().submit();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -836,6 +842,7 @@ export class HelpersL5r5e {
|
|||||||
|
|
||||||
const changeEvt = new Event("change");
|
const changeEvt = new Event("change");
|
||||||
changeEvt.doSubmit = true;
|
changeEvt.doSubmit = true;
|
||||||
|
changeEvt.autoCompleteSelectedIndex = selectedIndex;
|
||||||
inp.dispatchEvent(changeEvt);
|
inp.dispatchEvent(changeEvt);
|
||||||
});
|
});
|
||||||
listDiv.appendChild(choiceDiv);
|
listDiv.appendChild(choiceDiv);
|
||||||
|
|||||||
Reference in New Issue
Block a user