diff --git a/DrD2StatusMarkers/0.1.2/DrD2StatusMarkers.js b/DrD2StatusMarkers/0.1.2/DrD2StatusMarkers.js new file mode 100644 index 0000000000..6df9106a8a --- /dev/null +++ b/DrD2StatusMarkers/0.1.2/DrD2StatusMarkers.js @@ -0,0 +1,82 @@ +// Github: TBD +// By: nesuprachy +// Contact: https://app.roll20.net/users/11071738/nesuprachy +// +// This script sets token markers based on relevant sheet attributes. +// Works with the DrD2 token marker set, icons must be named `RED`, `BLU`, `GRN`, `VIO`, `BLK` +// Uses TokenMod to set token markers from chat https://wiki.roll20.net/Script:Token_Mod + +var DrD2StatusMarkers = DrD2StatusMarkers || (function() { + 'use strict'; + + const version = '0.1.2'; + const lastUpdate = 1725975609706; + const markerAttributes = ['body_scarred', 'spirit_scarred', 'influence_scarred', 'danger', 'advantages', 'companion_bond_scarred']; + + checkInstall = function () { + log(`-=> DrD2StatusMarkers v${version} <=- [${new Date(lastUpdate)}]`); + }, + + handleMarkerAttributes = function (obj, prev) { + var attr = obj.get('name'); + if(markerAttributes.includes(attr)) { + var prevVal = parseInt(prev.current)||0; + var newVal = parseInt(obj.get('current'))||0; + var charId = obj.get('_characterid'); + var color = ''; + //log(`${obj.get('name')} changed`); + //log(`prevVal ${prevVal} -> newVal ${newVal}`); + switch (attr) { + case markerAttributes[0]: + color = 'RED'; + break; + case markerAttributes[1]: + color = 'BLU'; + break; + case markerAttributes[2]: + color = 'GRN'; + break; + case markerAttributes[3]: + color = 'VIO'; + break; + case markerAttributes[4]: + color = 'BLK'; + break; + case markerAttributes[5]: + color = 'GRY'; + break; + default: + break; + } + if(color){ + if(newVal > 0 && newVal < 10) { + sendChat('API', `!token-mod --ignore-selected --ids ${charId} --set statusmarkers|-${color}1|-${color}2|-${color}3|-${color}4|-${color}5|-${color}6|-${color}7|-${color}8|-${color}9|-${color}9plus|${color}${newVal}`, null, {noarchive:true} ); + //log(`!token-mod --ignore-selected --ids ${charId} --set statusmarkers|-${color}1|-${color}2|-${color}3|-${color}4|-${color}5|-${color}6|-${color}7|-${color}8|-${color}9|-${color}9plus|${color}${newVal}`); + } else if(newVal >= 10) { + sendChat('API', `!token-mod --ignore-selected --ids ${charId} --set statusmarkers|-${color}1|-${color}2|-${color}3|-${color}4|-${color}5|-${color}6|-${color}7|-${color}8|-${color}9|${color}9plus`, null, {noarchive:true} ); + //log(`!token-mod --ignore-selected --ids ${charId} --set statusmarkers|-${color}1|-${color}2|-${color}3|-${color}4|-${color}5|-${color}6|-${color}7|-${color}8|-${color}9|${color}9plus`); + } else { + sendChat('API', `!token-mod --ignore-selected --ids ${charId} --set statusmarkers|-${color}1|-${color}2|-${color}3|-${color}4|-${color}5|-${color}6|-${color}7|-${color}8|-${color}9|-${color}9plus`, null, {noarchive:true} ); + //log(`!token-mod --ignore-selected --ids ${charId} --set statusmarkers|-${color}1|-${color}2|-${color}3|-${color}4|-${color}5|-${color}6|-${color}7|-${color}8|-${color}9|-${color}9plus`); + } + } + } + }, + + registerEventHandlers = function () { + on('change:attribute:current', function(obj, prev){handleMarkerAttributes(obj, prev)}); + }; + + return { + CheckInstall: checkInstall, + RegisterEventHandlers: registerEventHandlers + }; + +}()); + +on('ready', () => { + 'use strict'; + + DrD2StatusMarkers.CheckInstall(); + DrD2StatusMarkers.RegisterEventHandlers(); +}); \ No newline at end of file diff --git a/DrD2StatusMarkers/DrD2StatusMarkers.js b/DrD2StatusMarkers/DrD2StatusMarkers.js index a234b62afc..6df9106a8a 100644 --- a/DrD2StatusMarkers/DrD2StatusMarkers.js +++ b/DrD2StatusMarkers/DrD2StatusMarkers.js @@ -9,9 +9,9 @@ var DrD2StatusMarkers = DrD2StatusMarkers || (function() { 'use strict'; - const version = '0.1.1'; - const lastUpdate = 1725386405067; - const markerAttributes = ['body_scarred', 'spirit_scarred', 'influence_scarred', 'danger', 'advantages']; + const version = '0.1.2'; + const lastUpdate = 1725975609706; + const markerAttributes = ['body_scarred', 'spirit_scarred', 'influence_scarred', 'danger', 'advantages', 'companion_bond_scarred']; checkInstall = function () { log(`-=> DrD2StatusMarkers v${version} <=- [${new Date(lastUpdate)}]`); @@ -42,6 +42,9 @@ var DrD2StatusMarkers = DrD2StatusMarkers || (function() { case markerAttributes[4]: color = 'BLK'; break; + case markerAttributes[5]: + color = 'GRY'; + break; default: break; } diff --git a/DrD2StatusMarkers/script.json b/DrD2StatusMarkers/script.json index 2c85bd069e..3035f1d4b5 100644 --- a/DrD2StatusMarkers/script.json +++ b/DrD2StatusMarkers/script.json @@ -1,8 +1,8 @@ { "name": "DrD2StatusMarkers", "script": "DrD2StatusMarkers.js", - "version": "0.1.1", - "previousversions": ["0.1.0"], + "version": "0.1.2", + "previousversions": ["0.1.0", "0.1.1"], "description": "Designed for use only with the Draci Doupe II sheet.\n\nThis script sets token markers based on relevant sheet attributes.\nWorks with the DrD2 token marker set, icons must be named `RED`, `BLU`, `GRN`, `VIO`, `BLK`.", "authors": "nesuprachy", "roll20userid": "11071738",