Files
vermine2047/module/system/functions.mjs
T
François-Xavier Guillois 2b5e639e9e from totem to vermine - v0.0.12
2023-06-06 11:06:04 +02:00

110 lines
3.3 KiB
JavaScript

import { VERMINE } from './config.mjs'
/**
* renvoie le score d'une compétence d'un actor existant
* @param {VermineActor}
* @return {number||null} Data for rendering or null
*/
export function getActorSkillScore(actor, skillLabel, property = "value") {
let returnedValue = null;
for(let i in actor.system.skills){
for(let j in actor.system.skills[i].data){
if (actor.system.skills[i].data[j].label == skillLabel){
returnedValue = actor.system.skills[i].data[j][property];
}
}
}
if (returnedValue == null){
for(let i in actor.system.cskills.data){
if (actor.system.cskills.data[i].label == skillLabel){
returnedValue = actor.system.cskills.data[i][property];
}
}
}
return returnedValue;
}
/**
* renvoie le type d'une compétence
* @param {VermineActor}
* @return {string||null} Data for rendering or null
*/
export function getSkillTypeFromLabel(skillLabel) {
let returnedValue = null;
for(let i in VERMINE.skills){
for(let j in VERMINE.skills[i].data){
if (VERMINE.skills[i].data[j].label == skillLabel){
returnedValue = j;
}
}
}
return returnedValue;
}
/**
* met à jour le score d'une compétence d'un actor existant
* @param {VermineActor}
* @return {boolean} bool
*/
export function updateActorSkillScore(selectedActor, skillLabel, property = "value", updatedValue) {
try {
let updated = false;
// on recherche le label parmi les compétences
for (let st in selectedActor.system.skills){
for (let s in selectedActor.system.skills[st].data){
if (selectedActor.system.skills[st].data[s].label == skillLabel){
selectedActor.system.skills[st].data[s][property] = updatedValue; // printing the new value
const systemSkillKey = `system.skills.${st}.data.${s}.${property}`;
selectedActor.update({[systemSkillKey]:updatedValue }); // updating actor's data
updated = true;
}
}
}
if (updated == false){
for (let s in selectedActor.system.cskills.data){
if (selectedActor.system.cskills.data[s].label == skillLabel){
selectedActor.system.cskills.data[s][property] = updatedValue; // printing the new value
const systemSkillKey = `system.cskills.data.${s}.${property}`;
selectedActor.update({[systemSkillKey]:updatedValue }); // updating actor's data
updated = true;
}
}
}
return updated;
} catch(e){
return false;
}
}
/**
* réinitialise toutes les dépenses d'usure
* @param {VermineActor}
* @return {boolean} bool
*/
export function resetActorSkillUsure(selectedActor) {
try {
// on recherche les usures des compétences
for (let st in selectedActor.system.skills){
for (let s in selectedActor.system.skills[st].data){
const systemSkillKey = `system.skills.${st}.data.${s}.spent`;
selectedActor.update({[systemSkillKey]:0 }); // updating actor's data
}
}
// on recherche les usures des compétences céphaliques
for (let s in selectedActor.system.cskills.data){
const systemSkillKey = `system.cskills.data.${s}.spent`;
selectedActor.update({[systemSkillKey]:0 }); // updating actor's data
}
return true;
} catch(e){
return false;
}
}