basis of wound system

This commit is contained in:
François-Xavier Guillois
2023-09-05 15:04:06 +02:00
parent 983f856187
commit 848366e05c
7 changed files with 156 additions and 75 deletions
+78 -56
View File
@@ -1,4 +1,5 @@
import { VERMINE } from './config.mjs'
/**
* renvoie le score d'une compétence d'un actor existant
* @param {VermineActor}
@@ -14,33 +15,7 @@ export function getActorSkillScore(actor, skillLabel, property = "value") {
}
}
}
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;
}
@@ -64,46 +39,93 @@ export function updateActorSkillScore(selectedActor, skillLabel, property = "val
}
}
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;
}
}
/**
* renvoie le score de Sang froid (carac mental + social)
* @param {VermineActor}
* @return {number||null} Data for rendering or null
*/
export function setCharacterSelfControl(actor) {
let returnedValue = null;
for(let i in actor.system.abilities){
if (actor.system.abilities[i].category == 'mental' || actor.system.abilities[i].category == 'social'){
returnedValue += actor.system.abilities[i].value;
}
}
/// gestion de l'age
if (actor.system.identity.ageType == 1){
returnedValue--;
}
actor.update({ "system.attributes.self_control.max": returnedValue });
return returnedValue;
}
/**
* réinitialise toutes les dépenses d'usure
* renvoie le score d'Effort (carac physical + manual)
* @param {VermineActor}
* @return {boolean} bool
* @return {number||null} Data for rendering or null
*/
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
}
}
export function setCharacterEffort(actor) {
let returnedValue = null;
// 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
for(let i in actor.system.abilities){
if (actor.system.abilities[i].category == 'physical' || actor.system.abilities[i].category == 'manual'){
returnedValue += actor.system.abilities[i].value;
}
return true;
} catch(e){
return false;
}
/// gestion de l'age
if (actor.system.identity.ageType == 1){
returnedValue--;
} else if (actor.system.identity.ageType == 3){
returnedValue -= 2;
}
actor.update({ "system.attributes.effort.max": returnedValue });
return returnedValue;
}
/**
* définis les scores de seuil
* @param {VermineActor}
* @return {number||null} Data for rendering or null
*/
export function setCharacterThresholds(actor) {
const health = actor.system.abilities.health.value;
let returnedValue = null;
actor.update({ "system.minorWound.threshold": health });
actor.update({ "system.majorWound.threshold": health + 3});
actor.update({ "system.deadlyWound.threshold": (health + 7 < 11) ? health + 7 : 10 });
let lightWounds = 4;
let heavyWounds = 3;
let deadlyWounds = 2;
if (actor.system.identity.ageType == 3){
lightWounds--;
heavyWounds--;
deadlyWounds--;
} else if (actor.system.identity.ageType == 1){
deadlyWounds--;
}
actor.update({ "system.minorWound.max": lightWounds });
actor.update({ "system.majorWound.max": heavyWounds });
actor.update({ "system.deadlyWound.max": deadlyWounds });
// console.log('wounds', actor.system.minorWound, actor.system.majorWound, actor.system.deadlyWound);
return returnedValue;
}