Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
86 changes: 86 additions & 0 deletions DrD2StatusMarkers/0.1.5/DrD2StatusMarkers.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
// 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`, `GRY`, `load` followed by corresponding values
// 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.5';
const lastUpdate = 1781162585805;
const markerAttributes = ['body_scarred', 'spirit_scarred', 'influence_scarred', 'danger', 'advantages', 'companion_bond_scarred', 'load'];
const markerMap = {
body_scarred: 'RED',
spirit_scarred: 'BLU',
influence_scarred: 'GRN',
danger: 'VIO',
advantages: 'BLK',
companion_bond_scarred: 'GRY',
load: 'load'
},

checkInstall = function () {
log(`-=> DrD2StatusMarkers v${version} <=- [${new Date(lastUpdate)}]`);
},

handleMarkerAttributes = function (obj, prev) {
//const startTime = Date.now();

const attr = obj.get('name');
let marker = markerMap[attr];
const charId = obj.get('_characterid');

// Parse old and new values
const prevVal = (attr === 'load') ? prev.current : parseInt(prev.current) || 0;
const newVal = (attr === 'load') ? obj.get('current') : parseInt(obj.get('current')) || 0;
if(newVal === prevVal) return;

//log(`\'${obj.get('name')}\' of character \'${(getObj('character', charId)).get('name')}\' changed from ${prevVal} -> ${newVal}`);

// If attribute is 'load' set marker to 'S', 'L' or 'T'
// If newVal is between 0 and 10 set marker to new value
// If newVal is >= 10 set marker to 9+
// if newVal is <= 0 remove all markers except 'load'
if(marker){
const clearAllMarkers = `|-${marker}1|-${marker}2|-${marker}3|-${marker}4|-${marker}5|-${marker}6|-${marker}7|-${marker}8|-${marker}9|-${marker}9plus`;
if(attr === 'load'){
sendChat('API', `!token-mod --ignore-selected --ids ${charId} --set statusmarkers|-loadL|-loadS|-loadT|load${newVal}`, null, {noarchive:true});
//log(`!token-mod --ignore-selected --ids ${charId} --set statusmarkers|-loadL|-loadS|-loadT|load${newVal}`);
} else if(newVal > 0 && newVal < 10) {
sendChat('API', `!token-mod --ignore-selected --ids ${charId} --set statusmarkers${clearAllMarkers}|${marker}${newVal}`, null, {noarchive:true} );
//log(`!token-mod --ignore-selected --ids ${charId} --set statusmarkers${clearAllMarkers}|${marker}${newVal}`);
} else if(newVal >= 10) {
sendChat('API', `!token-mod --ignore-selected --ids ${charId} --set statusmarkers${clearAllMarkers}|${marker}9plus`, null, {noarchive:true} );
//log(`!token-mod --ignore-selected --ids ${charId} --set statusmarkers${clearAllMarkers}|${marker}9plus`);
} else {
sendChat('API', `!token-mod --ignore-selected --ids ${charId} --set statusmarkers${clearAllMarkers}`, null, {noarchive:true} );
//log(`!token-mod --ignore-selected --ids ${charId} --set statusmarkers${clearAllMarkers}`);
}
}

//const endTime = Date.now();
//log(`handleMarkerAttributes() took ${endTime - startTime} ms to execute`);
},

registerEventHandlers = function () {
on('change:attribute:current', function(obj, prev){
if(markerAttributes.includes(obj.get('name'))) handleMarkerAttributes(obj, prev);
});
};

return {
CheckInstall: checkInstall,
RegisterEventHandlers: registerEventHandlers
};

}());

on('ready', () => {
'use strict';

DrD2StatusMarkers.CheckInstall();
DrD2StatusMarkers.RegisterEventHandlers();
});
6 changes: 3 additions & 3 deletions DrD2StatusMarkers/DrD2StatusMarkers.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@
var DrD2StatusMarkers = DrD2StatusMarkers || (function() {
'use strict';

const version = '0.1.4';
const lastUpdate = 1739435813976;
const version = '0.1.5';
const lastUpdate = 1781162585805;
const markerAttributes = ['body_scarred', 'spirit_scarred', 'influence_scarred', 'danger', 'advantages', 'companion_bond_scarred', 'load'];
const markerMap = {
body_scarred: 'RED',
Expand All @@ -20,7 +20,7 @@ var DrD2StatusMarkers = DrD2StatusMarkers || (function() {
advantages: 'BLK',
companion_bond_scarred: 'GRY',
load: 'load'
};
},

checkInstall = function () {
log(`-=> DrD2StatusMarkers v${version} <=- [${new Date(lastUpdate)}]`);
Expand Down
4 changes: 2 additions & 2 deletions DrD2StatusMarkers/script.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
{
"name": "DrD2StatusMarkers",
"script": "DrD2StatusMarkers.js",
"version": "0.1.4",
"previousversions": ["0.1.0", "0.1.1", "0.1.2", "0.1.3"],
"version": "0.1.5",
"previousversions": ["0.1.0", "0.1.1", "0.1.2", "0.1.3", "0.1.4"],
"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`, `GRY`, `load` followed by corresponding values.\nYou can download the token marker set [here](https://download-directory.github.io/?url=https%3A%2F%2Fgithub.com%2Fnesuprachy%2Froll20-character-sheets%2Ftree%2FDraci-doupe-II%2FDraci%2520doupe%2520II%2Fassets%2FDrD2-token_markers).",
"authors": "nesuprachy",
"roll20userid": "11071738",
Expand Down
Loading