mirror of
https://github.com/Nighthawk42/roll20-character-sheets.git
synced 2026-09-10 17:12:33 +00:00
Feature/Bugfix: action buttons now change to the selected token before applying its effects when targeting is not used but generic token mode is enabled
This commit is contained in:
@@ -10812,19 +10812,19 @@ on('change:prevRoundInit', (info) => {
|
||||
|
||||
/* Select token instance functionality */
|
||||
on('clicked:selectToken', async function(info) {
|
||||
getTokenId("selected", "select");
|
||||
getTokenId("selected", "select", "true");
|
||||
});
|
||||
on('clicked:repeating_tokens:selectinstance', async function(info) {
|
||||
setAttrs({"tokenId_selected":info.sourceAttribute.replace("repeating_tokens_","").replace("_selectinstance","")});
|
||||
});
|
||||
|
||||
/* setSelectModes: select (always set selection or bars), false (do not set selection or bars), unset (set if unset)*/
|
||||
function getTokenId(target="selected", setSelectMode="false", callback=()=>{}) {
|
||||
function getTokenId(target="selected", setSelectMode="false", queryGenericMode="false", callback=()=>{}) {
|
||||
getAttrs(["tokenId_selected"], function(values) {
|
||||
let tokenId_selected = values.tokenId_selected;
|
||||
|
||||
/* If setting is disabled, ask if it should be enabled. Continue if yes */
|
||||
checkGenericMode(async function(genericModeCheck) {
|
||||
checkGenericMode(queryGenericMode, async function(genericModeCheck) {
|
||||
if (genericModeCheck == "false") { return; }
|
||||
|
||||
/* Get selected token attributes */
|
||||
@@ -10872,21 +10872,21 @@ function getTokenId(target="selected", setSelectMode="false", callback=()=>{}) {
|
||||
}
|
||||
/* Manipulate token instances functionality */
|
||||
on('clicked:addToken', async function(info) {
|
||||
getTokenId("selected", "add", (selectAttrs) => {
|
||||
getTokenId("selected", "add", "true", (selectAttrs) => {
|
||||
updateToken(selectAttrs);
|
||||
});
|
||||
});
|
||||
on('clicked:addTokenMultiple', async function(info) {
|
||||
getTokenId(`target|Target`, "add", (selectAttrs) => { updateToken(selectAttrs);
|
||||
getTokenId(`target|Target`, "add", (selectAttrs) => { updateToken(selectAttrs);
|
||||
getTokenId(`target|Target`, "add", (selectAttrs) => { updateToken(selectAttrs);
|
||||
getTokenId(`target|Target`, "add", (selectAttrs) => { updateToken(selectAttrs);
|
||||
getTokenId(`target|Target`, "add", (selectAttrs) => { updateToken(selectAttrs);
|
||||
getTokenId(`target|Target`, "add", (selectAttrs) => { updateToken(selectAttrs);
|
||||
getTokenId(`target|Target`, "add", (selectAttrs) => { updateToken(selectAttrs);
|
||||
getTokenId(`target|Target`, "add", (selectAttrs) => { updateToken(selectAttrs);
|
||||
getTokenId(`target|Target`, "add", (selectAttrs) => { updateToken(selectAttrs);
|
||||
getTokenId(`target|Target`, "add", (selectAttrs) => { updateToken(selectAttrs);
|
||||
getTokenId(`target|Target`, "add", "true", (selectAttrs) => { updateToken(selectAttrs);
|
||||
getTokenId(`target|Target`, "add", "true", (selectAttrs) => { updateToken(selectAttrs);
|
||||
getTokenId(`target|Target`, "add", "true", (selectAttrs) => { updateToken(selectAttrs);
|
||||
getTokenId(`target|Target`, "add", "true", (selectAttrs) => { updateToken(selectAttrs);
|
||||
getTokenId(`target|Target`, "add", "true", (selectAttrs) => { updateToken(selectAttrs);
|
||||
getTokenId(`target|Target`, "add", "true", (selectAttrs) => { updateToken(selectAttrs);
|
||||
getTokenId(`target|Target`, "add", "true", (selectAttrs) => { updateToken(selectAttrs);
|
||||
getTokenId(`target|Target`, "add", "true", (selectAttrs) => { updateToken(selectAttrs);
|
||||
getTokenId(`target|Target`, "add", "true", (selectAttrs) => { updateToken(selectAttrs);
|
||||
getTokenId(`target|Target`, "add", "true", (selectAttrs) => { updateToken(selectAttrs);
|
||||
});});});});});});});});});});
|
||||
});
|
||||
on('clicked:deleteToken', async function(info) {
|
||||
@@ -10898,7 +10898,7 @@ on('clicked:deleteToken', async function(info) {
|
||||
setAttrs({"tokenId_selected":""});
|
||||
}
|
||||
} else {
|
||||
getTokenId("selected", "false", (selectAttrs) => {
|
||||
getTokenId("selected", "false", "false", (selectAttrs) => {
|
||||
deleteToken(selectAttrs.tokenId);
|
||||
if (selectAttrs.tokenId == selectedId) {
|
||||
setAttrs({"tokenId_selected":""});
|
||||
@@ -10910,16 +10910,16 @@ on('clicked:deleteToken', async function(info) {
|
||||
on('clicked:deleteTokenMultiple', async function(info) {
|
||||
getAttrs(["tokenId_selected"], async function(values) {
|
||||
let selectedId = values.tokenId_selected;
|
||||
getTokenId("target|Target", "false", (selectAttrs) => { deleteToken(selectAttrs.tokenId); if (selectAttrs.tokenId == selectedId) { setAttrs({"tokenId_selected":""}); };
|
||||
getTokenId("target|Target", "false", (selectAttrs) => { deleteToken(selectAttrs.tokenId); if (selectAttrs.tokenId == selectedId) { setAttrs({"tokenId_selected":""}); };
|
||||
getTokenId("target|Target", "false", (selectAttrs) => { deleteToken(selectAttrs.tokenId); if (selectAttrs.tokenId == selectedId) { setAttrs({"tokenId_selected":""}); };
|
||||
getTokenId("target|Target", "false", (selectAttrs) => { deleteToken(selectAttrs.tokenId); if (selectAttrs.tokenId == selectedId) { setAttrs({"tokenId_selected":""}); };
|
||||
getTokenId("target|Target", "false", (selectAttrs) => { deleteToken(selectAttrs.tokenId); if (selectAttrs.tokenId == selectedId) { setAttrs({"tokenId_selected":""}); };
|
||||
getTokenId("target|Target", "false", (selectAttrs) => { deleteToken(selectAttrs.tokenId); if (selectAttrs.tokenId == selectedId) { setAttrs({"tokenId_selected":""}); };
|
||||
getTokenId("target|Target", "false", (selectAttrs) => { deleteToken(selectAttrs.tokenId); if (selectAttrs.tokenId == selectedId) { setAttrs({"tokenId_selected":""}); };
|
||||
getTokenId("target|Target", "false", (selectAttrs) => { deleteToken(selectAttrs.tokenId); if (selectAttrs.tokenId == selectedId) { setAttrs({"tokenId_selected":""}); };
|
||||
getTokenId("target|Target", "false", (selectAttrs) => { deleteToken(selectAttrs.tokenId); if (selectAttrs.tokenId == selectedId) { setAttrs({"tokenId_selected":""}); };
|
||||
getTokenId("target|Target", "false", (selectAttrs) => { deleteToken(selectAttrs.tokenId); if (selectAttrs.tokenId == selectedId) { setAttrs({"tokenId_selected":""}); };
|
||||
getTokenId("target|Target", "false", "false", (selectAttrs) => { deleteToken(selectAttrs.tokenId); if (selectAttrs.tokenId == selectedId) { setAttrs({"tokenId_selected":""}); };
|
||||
getTokenId("target|Target", "false", "false", (selectAttrs) => { deleteToken(selectAttrs.tokenId); if (selectAttrs.tokenId == selectedId) { setAttrs({"tokenId_selected":""}); };
|
||||
getTokenId("target|Target", "false", "false", (selectAttrs) => { deleteToken(selectAttrs.tokenId); if (selectAttrs.tokenId == selectedId) { setAttrs({"tokenId_selected":""}); };
|
||||
getTokenId("target|Target", "false", "false", (selectAttrs) => { deleteToken(selectAttrs.tokenId); if (selectAttrs.tokenId == selectedId) { setAttrs({"tokenId_selected":""}); };
|
||||
getTokenId("target|Target", "false", "false", (selectAttrs) => { deleteToken(selectAttrs.tokenId); if (selectAttrs.tokenId == selectedId) { setAttrs({"tokenId_selected":""}); };
|
||||
getTokenId("target|Target", "false", "false", (selectAttrs) => { deleteToken(selectAttrs.tokenId); if (selectAttrs.tokenId == selectedId) { setAttrs({"tokenId_selected":""}); };
|
||||
getTokenId("target|Target", "false", "false", (selectAttrs) => { deleteToken(selectAttrs.tokenId); if (selectAttrs.tokenId == selectedId) { setAttrs({"tokenId_selected":""}); };
|
||||
getTokenId("target|Target", "false", "false", (selectAttrs) => { deleteToken(selectAttrs.tokenId); if (selectAttrs.tokenId == selectedId) { setAttrs({"tokenId_selected":""}); };
|
||||
getTokenId("target|Target", "false", "false", (selectAttrs) => { deleteToken(selectAttrs.tokenId); if (selectAttrs.tokenId == selectedId) { setAttrs({"tokenId_selected":""}); };
|
||||
getTokenId("target|Target", "false", "false", (selectAttrs) => { deleteToken(selectAttrs.tokenId); if (selectAttrs.tokenId == selectedId) { setAttrs({"tokenId_selected":""}); };
|
||||
});});});});});});});});});});
|
||||
});
|
||||
});
|
||||
@@ -11195,11 +11195,11 @@ on(`change:actNum change:repeating_tokens:actNum`, (info) => {
|
||||
|
||||
|
||||
/* --- Token helper functions --- */
|
||||
async function checkGenericMode(callback=()=>{}) {
|
||||
async function checkGenericMode(executeQuery, callback=()=>{}) {
|
||||
getAttrs(["settingGenericTokenMode"], async function(values) {
|
||||
let genericMode = values.settingGenericTokenMode;
|
||||
|
||||
if (genericMode != "true") {
|
||||
if (genericMode != "true" && executeQuery == "true") {
|
||||
let queryResults = await sendQuery(["enableGenericMode",
|
||||
getTranslationByKeyCustom("Generic token mode not enabled for sheet. Enable setting?", "query-enable-generic-mode"), {
|
||||
[getTranslationByKeyCustom("No","query-no")]:"false",
|
||||
@@ -11564,48 +11564,61 @@ async function sendQuery(...args) {
|
||||
/* Action button functions */
|
||||
on('clicked:actionButtonDamage', async (data) => {
|
||||
getAttrs(["lastDefenceRoll"], async function(values) {
|
||||
|
||||
let defenceRoll = parseInt(values.lastDefenceRoll);
|
||||
data = Data.unpackage(data.originalRollId);
|
||||
data = data[0];
|
||||
getTokenId("selected", "unset", "false", (selectAttrs) => {
|
||||
changeActiveToken(selectAttrs.tokenId, async function() {
|
||||
|
||||
/* If the damage type is unset (such as for ranged weapon) query the player for a damage type */
|
||||
if (data.damageTypeOverride == "---") {
|
||||
let queryResults = await sendQuery(["damageTypeOverride",
|
||||
getTranslationByKeyCustom("Select damage type of attack", "query-damage-type"), {
|
||||
[getTranslationByKeyCustom("---", "weapon-type-None")]:"None",
|
||||
[getTranslationByKeyCustom("Slash","weapon-type-Slash")]:"Slash",
|
||||
[getTranslationByKeyCustom("Pierce","weapon-type-Pierce")]:"Pierce",
|
||||
[getTranslationByKeyCustom("Blunt","weapon-type-Blunt")]:"Blunt"
|
||||
/* If the damage type is unset (such as for ranged weapon) query the player for a damage type */
|
||||
if (data.damageTypeOverride == "---") {
|
||||
let queryResults = await sendQuery(["damageTypeOverride",
|
||||
getTranslationByKeyCustom("Select damage type of attack", "query-damage-type"), {
|
||||
[getTranslationByKeyCustom("---", "weapon-type-None")]:"None",
|
||||
[getTranslationByKeyCustom("Slash","weapon-type-Slash")]:"Slash",
|
||||
[getTranslationByKeyCustom("Pierce","weapon-type-Pierce")]:"Pierce",
|
||||
[getTranslationByKeyCustom("Blunt","weapon-type-Blunt")]:"Blunt"
|
||||
}
|
||||
]);
|
||||
data.damageTypeOverride = queryResults.damageTypeOverride;
|
||||
}
|
||||
]);
|
||||
data.damageTypeOverride = queryResults.damageTypeOverride;
|
||||
}
|
||||
|
||||
/* If taking Light damage, process it as an Add AutoEffect */
|
||||
if (data.flatLightOverride != undefined && data.flatLightOverride != 0) {
|
||||
data.autoScriptOverride = `(Add -${data.flatLightOverride} Light)`;
|
||||
}
|
||||
/* If taking Light damage, process it as an Add AutoEffect */
|
||||
if (data.flatLightOverride != undefined && data.flatLightOverride != 0) {
|
||||
data.autoScriptOverride = `(Add -${data.flatLightOverride} Light)`;
|
||||
}
|
||||
|
||||
if (data.AutoScript != undefined) {
|
||||
let overrideList = {}
|
||||
if (data.targetTokenId != undefined) { overrideList.targetTokenId = data.targetTokenId; }
|
||||
AutoScriptMain(data.AutoScript, "None", "false", "true", overrideList, () => {}, getTranslationByKeyCustom("Apply damage", "helper-text-applydamage"));
|
||||
} else {
|
||||
damageHelper(data, defenceRoll);
|
||||
}
|
||||
if (data.AutoScript != undefined) {
|
||||
let overrideList = {}
|
||||
if (data.targetTokenId != undefined) { overrideList.targetTokenId = data.targetTokenId; }
|
||||
AutoScriptMain(data.AutoScript, "None", "false", "true", overrideList, () => {}, getTranslationByKeyCustom("Apply damage", "helper-text-applydamage"));
|
||||
} else {
|
||||
damageHelper(data, defenceRoll);
|
||||
}
|
||||
|
||||
setAttrs({lastDefenceRoll: 0});
|
||||
setAttrs({"lastDefenceRoll": 0});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
on('clicked:actionButtonInflict', async (data) => {
|
||||
data = Data.unpackage(data.originalRollId);
|
||||
data = data[0];
|
||||
AutoScriptMain(data.AutoScript, "None", "false", "true", { targetTokenId: data.targetTokenId }, () => {}, getTranslationByKeyCustom("Apply ailments", "helper-text-applyailments"));
|
||||
getTokenId("selected", "unset", "false", (selectAttrs) => {
|
||||
changeActiveToken(selectAttrs.tokenId, () => {
|
||||
AutoScriptMain(data.AutoScript, "None", "false", "true", { targetTokenId: data.targetTokenId }, () => {}, getTranslationByKeyCustom("Apply ailments", "helper-text-applyailments"));
|
||||
});
|
||||
});
|
||||
});
|
||||
on('clicked:actionButtonGive', async (data) => {
|
||||
data = Data.unpackage(data.originalRollId);
|
||||
data = data[0];
|
||||
AutoScriptMain(data.AutoScript, "None", "false", "true", { targetTokenId: data.targetTokenId }, () => {}, getTranslationByKeyCustom("Give ailments", "helper-text-giveailments"));
|
||||
getTokenId("selected", "unset", "false", (selectAttrs) => {
|
||||
changeActiveToken(selectAttrs.tokenId, () => {
|
||||
AutoScriptMain(data.AutoScript, "None", "false", "true", { targetTokenId: data.targetTokenId }, () => {}, getTranslationByKeyCustom("Give ailments", "helper-text-giveailments"));
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user