mirror of
https://github.com/Nighthawk42/roll20-character-sheets.git
synced 2026-08-30 11:42:29 +00:00
603 lines
30 KiB
HTML
603 lines
30 KiB
HTML
<div class="main">
|
|
<input type="hidden" name="attr_version" value="" />
|
|
<input type="hidden" class="ongletActif" name="attr_ongletActif" value="caracteristiques" />
|
|
|
|
<div class="header">
|
|
<div class="stars"></div>
|
|
<table class="personnage-main">
|
|
<tr>
|
|
<th class="input-label">Nom</th>
|
|
<td><input type="text" name="attr_name" spellcheck="false" /></td>
|
|
</tr>
|
|
<tr>
|
|
<th class="input-label">Âge</th>
|
|
<td><input type="text" name="attr_age" spellcheck="false" /></td>
|
|
</tr>
|
|
<tr>
|
|
<th class="input-label">Sexe</th>
|
|
<td><input type="text" name="attr_sexe" spellcheck="false" /></td>
|
|
</tr>
|
|
<tr>
|
|
<th class="input-label">Nationalité</th>
|
|
<td><input type="text" name="attr_nationalite" spellcheck="false" /></td>
|
|
</tr>
|
|
</table>
|
|
<div class="personnage-genial">
|
|
<label class="input-label">Je suis génial(e)<br /><span>parce que...</span></label>
|
|
<textarea name="attr_genial_parce_que" spellcheck="false"></textarea>
|
|
</div>
|
|
<div class="personnage-problematique">
|
|
<label class="input-label"><span>Mais</span> la société a des problèmes <span>avec moi parce
|
|
que...</span></label>
|
|
<textarea name="attr_problematique_parce_que" spellcheck="false"></textarea>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="onglets">
|
|
<button type="action" name="act_caracteristiques" data-id="caracteristiques">Caractéristiques</button>
|
|
<button type="action" name="act_competences" data-id="competences">Compétences</button>
|
|
<button type="action" name="act_inventaire" data-id="inventaire">Possessions</button>
|
|
</div>
|
|
|
|
<div class="contenu">
|
|
<div class="caracteristiques">
|
|
<div class="section">
|
|
<div class="sectionCol">
|
|
<h1>Caractéristiques</h1>
|
|
<table class="table sheet-table--caracteristiques">
|
|
<thead>
|
|
<tr>
|
|
<th></th>
|
|
<th>Car.</th>
|
|
<th>Valeur</th>
|
|
<th>Bonus</th>
|
|
<th>Total / 100</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td class="caracteristique-jet">
|
|
<button type="roll" name="Force"
|
|
value="&{template:competence} {{rollname=Force}} {{jet=[[1d100]]}} {{competence=[[@{force_total}]]}} {{fail=[[@{force_total} + 1]]}} {{fumble=[[{96,@{force_total} + 1}kh1]]}}"
|
|
class="roll"></button>
|
|
</td>
|
|
<td class="caracteristique-nom">FOR</td>
|
|
<td class="caracteristique-valeur"><input type="number" name="attr_FOR" value="10" />
|
|
</td>
|
|
<td class="caracteristique-bonus"><input type="number" name="attr_force_bonus"
|
|
value="0" /></td>
|
|
<td class="caracteristique-total"><input type="text" readonly disabled
|
|
name="attr_force_total" value="(@{FOR} + @{force_bonus}) * 5" /></td>
|
|
</tr>
|
|
<tr>
|
|
<td class="caracteristique-jet">
|
|
<button type="roll" name="Dextérité"
|
|
value="&{template:competence} {{rollname=Dextérité}} {{jet=[[1d100]]}} {{competence=[[@{dexterite_total}]]}} {{fail=[[@{dexterite_total} + 1]]}} {{fumble=[[{96,@{dexterite_total} + 1}kh1]]}}"
|
|
class="roll"></button>
|
|
</td>
|
|
<td class="caracteristique-nom">DEX</td>
|
|
<td class="caracteristique-valeur"><input type="number" name="attr_DEX" value="10" />
|
|
</td>
|
|
<td class="caracteristique-bonus"><input type="number" name="attr_dexterite_bonus"
|
|
value="0" /></td>
|
|
<td class="caracteristique-total"><input type="text" readonly disabled
|
|
name="attr_dexterite_total" value="(@{DEX} + @{dexterite_bonus}) * 5" /></td>
|
|
</tr>
|
|
<tr>
|
|
<td class="caracteristique-jet">
|
|
<button type="roll" name="Endurance"
|
|
value="&{template:competence} {{rollname=Endurance}} {{jet=[[1d100]]}} {{competence=[[@{endurance_total}]]}} {{fail=[[@{endurance_total} + 1]]}} {{fumble=[[{96,@{endurance_total} + 1}kh1]]}}"
|
|
class="roll"></button>
|
|
</td>
|
|
<td class="caracteristique-nom">END</td>
|
|
<td class="caracteristique-valeur"><input type="number" name="attr_END" value="10" />
|
|
</td>
|
|
<td class="caracteristique-bonus"><input type="number" name="attr_endurance_bonus"
|
|
value="0" /></td>
|
|
<td class="caracteristique-total"><input type="text" readonly disabled
|
|
name="attr_endurance_total" value="(@{END} + @{endurance_bonus}) * 5" /></td>
|
|
</tr>
|
|
<tr>
|
|
<td class="caracteristique-jet">
|
|
<button type="roll" name="Intelligence"
|
|
value="&{template:competence} {{rollname=Intelligence}} {{jet=[[1d100]]}} {{competence=[[@{intelligence_total}]]}} {{fail=[[@{intelligence_total} + 1]]}} {{fumble=[[{96,@{intelligence_total} + 1}kh1]]}}"
|
|
class="roll"></button>
|
|
</td>
|
|
<td class="caracteristique-nom">INT</td>
|
|
<td class="caracteristique-valeur"><input type="number" name="attr_INT" value="10" />
|
|
</td>
|
|
<td class="caracteristique-bonus"><input type="number" name="attr_intelligence_bonus"
|
|
value="0" /></td>
|
|
<td class="caracteristique-total"><input type="text" readonly disabled
|
|
name="attr_intelligence_total" value="(@{INT} + @{intelligence_bonus}) * 5" />
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="caracteristique-jet">
|
|
<button type="roll" name="Intuition"
|
|
value="&{template:competence} {{rollname=Intuition}} {{jet=[[1d100]]}} {{competence=[[@{intuition_total}]]}} {{fail=[[@{intuition_total} + 1]]}} {{fumble=[[{96,@{intuition_total} + 1}kh1]]}}"
|
|
class="roll"></button>
|
|
</td>
|
|
<td class="caracteristique-nom">INO</td>
|
|
<td class="caracteristique-valeur"><input type="number" name="attr_INO" value="10" />
|
|
</td>
|
|
<td class="caracteristique-bonus"><input type="number" name="attr_intuition_bonus"
|
|
value="0" /></td>
|
|
<td class="caracteristique-total"><input type="text" readonly disabled
|
|
name="attr_intuition_total" value="(@{INO} + @{intuition_bonus}) * 5" /></td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<div class="sectionCol sheet-sectionCol--divider"></div>
|
|
<div class="sectionCol">
|
|
<h1>LE PHYSIQUE</h1>
|
|
<div class="healthStats">
|
|
<div class="healthBlock">
|
|
<div class="healthInput">
|
|
<input type="text" name="attr_pv_max" min="1" />
|
|
</div>
|
|
<span>PV Max</span>
|
|
</div>
|
|
<div class="healthBlock">
|
|
<div class="healthInput">
|
|
<input type="text" name="attr_pv" min="0" />
|
|
</div>
|
|
<span>PV restants</span>
|
|
</div>
|
|
<div class="protectionBlock">
|
|
<div class="protectionInput">
|
|
<input type="text" name="attr_protection" value="0" />
|
|
</div>
|
|
<span>Protection</span>
|
|
</div>
|
|
</div>
|
|
<h1>LE MENTAL</h1>
|
|
<div class="mindStats">
|
|
<div class="mindStats-inputs">
|
|
<div class="mindBlock">
|
|
<div class="mindInput">
|
|
<input type="text" name="attr_psm_max" min="1" />
|
|
</div>
|
|
<span>Santé mentale Max</span>
|
|
</div>
|
|
<div class="mindBlock">
|
|
<div class="mindInput">
|
|
<input type="text" name="attr_psm" min="0" />
|
|
</div>
|
|
<span>Santé mentale</span>
|
|
</div>
|
|
<div class="mindBlock">
|
|
<div class="mindInput"></div>
|
|
</div>
|
|
</div>
|
|
<div class="mindEffects">
|
|
<span>Troubles mentaux</span>
|
|
<input type="text" spellcheck="false" />
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="section">
|
|
<div class="sectionCol sheet-sectionCol--full">
|
|
<h1>Armes</h1>
|
|
<div class="table">
|
|
<fieldset class="tableHead sheet-weapons">
|
|
<div class="fieldset">
|
|
<div class="weapon-jet"></div>
|
|
<div class="weapon-nom">Nom de l'arme</div>
|
|
<div class="weapon-degats">Dégâts</div>
|
|
<div class="weapon-commentaires">Commentaires</div>
|
|
</div>
|
|
</fieldset>
|
|
<fieldset class="repeating_weapons">
|
|
<div class="tableBody">
|
|
<div class="weapon-jet">
|
|
<button type="roll" name="Dégâts"
|
|
value="&{template:competence} {{rollname=@{weapon_name}}} {{jet=[[@{weapon_nombre_de_jets}@{weapon_type_de_de} + @{weapon_bonus}]]}}"
|
|
class="roll"></button>
|
|
</div>
|
|
<div class="weapon-nom"><input type="text" name="attr_weapon_name" spellcheck="false" />
|
|
</div>
|
|
<div class="weapon-degats">
|
|
<input type="number" name="attr_weapon_nombre_de_jets" min="0" value="1" />
|
|
<select name="attr_weapon_type_de_de">
|
|
<option value="d3">d3</option>
|
|
<option value="d4">d4</option>
|
|
<option value="d6" selected>d6</option>
|
|
<option value="d8">d8</option>
|
|
<option value="d10">d10</option>
|
|
<option value="d12">d12</option>
|
|
</select>
|
|
+
|
|
<input type="number" name="attr_weapon_bonus" value="0" />
|
|
</div>
|
|
<div class="weapon-commentaires"><input type="text" name="attr_weapon_comments"
|
|
spellcheck="false" /></div>
|
|
</div>
|
|
</fieldset>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="competences">
|
|
<div class="section">
|
|
<div class="sectionCol sheet-sectionCol--full">
|
|
<input type="hidden" class="competence-methode" name="attr_competence_methode_hidden"
|
|
value="moyenne" />
|
|
<h1>Compétences</h1>
|
|
<p class="competence-methode-selector">
|
|
Méthode de calcul des compétences :
|
|
<select name="attr_competence_methode">
|
|
<option value="moyenne" selected>Par moyenne</option>
|
|
<option value="points">Par répartition</option>
|
|
</select>
|
|
</p>
|
|
<p class="competence-points-restants">Points restants : <input type="text" readonly
|
|
name="attr_competence_points_restants" value="50" /></p>
|
|
<div class="table competence-table">
|
|
<div class="tableHead">
|
|
<div class="competence-jet"></div>
|
|
<div class="competence-nom">Compétence</div>
|
|
<div class="competence-liens">Lien</div>
|
|
<div class="competence-base">Base</div>
|
|
<div class="competence-points">Points</div>
|
|
<div class="competence-bonus">Bonus</div>
|
|
<div class="competence-total">Total</div>
|
|
</div>
|
|
<fieldset class="repeating_competences">
|
|
<div class="tableBody">
|
|
<div class="competence-jet">
|
|
<button type="roll" name="Compétence"
|
|
value="&{template:competence} {{rollname=@{competence_nom}}} {{jet=[[1d100]]}} {{competence=[[@{competence_total}]]}} {{fail=[[@{competence_total} + 1]]}} {{fumble=[[{96,@{competence_total} + 1}kh1]]}}"
|
|
class="roll"></button>
|
|
</div>
|
|
<div class="competence-nom">
|
|
<select name="attr_competence_nom">
|
|
<option value="" selected></option>
|
|
<option value="Adaptation">Adaptation</option>
|
|
<option value="Astrophysique, mathématiques">Astrophysique, mathématiques
|
|
</option>
|
|
<option value="Biologie, géologie">Biologie, géologie</option>
|
|
<option value="Bricoler, bidouiller">Bricoler, bidouiller</option>
|
|
<option value="Combat à distance">Combat à distance</option>
|
|
<option value="Combat au corps à corps">Combat au corps à corps</option>
|
|
<option value="Comprendre l’étrange">Comprendre l’étrange</option>
|
|
<option value="Convaincre">Convaincre</option>
|
|
<option value="Courir, sauter, nager">Courir, sauter, nager</option>
|
|
<option value="Déplacement en zéro G">Déplacement en zéro G</option>
|
|
<option value="Discrétion">Discrétion</option>
|
|
<option value="Garder son calme">Garder son calme</option>
|
|
<option value="Observer">Observer</option>
|
|
<option value="Pilotage">Pilotage</option>
|
|
<option value="Programmation">Programmation</option>
|
|
<option value="Réflexes">Réflexes</option>
|
|
<option value="Soigner">Soigner</option>
|
|
<option value="Survie">Survie</option>
|
|
</select>
|
|
</div>
|
|
<div class="competence-liens">
|
|
<input type="text" readonly name="attr_competence_stat1" value="?" />
|
|
/
|
|
<input type="text" readonly name="attr_competence_stat2" value="?" />
|
|
</div>
|
|
<div class="competence-base">
|
|
<input type="text" readonly name="attr_competence_base" value="0" />
|
|
</div>
|
|
<div class="competence-points">
|
|
<input type="number" name="attr_competence_points" value="0" />
|
|
</div>
|
|
<div class="competence-bonus">
|
|
<input type="number" name="attr_competence_bonus" value="0" />
|
|
</div>
|
|
<div class="competence-total">
|
|
<input type="text" readonly name="attr_competence_total" value="0" />
|
|
</div>
|
|
</div>
|
|
</fieldset>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="section">
|
|
<div class="sectionCol sheet-sectionCol--full">
|
|
<h1>Compétences spéciales</h1>
|
|
<div class="table competence-table">
|
|
<div class="tableHead">
|
|
<div class="competence-jet"></div>
|
|
<div class="competence-nom">Compétence</div>
|
|
<div class="competence-base">Base</div>
|
|
<div class="competence-bonus">Bonus</div>
|
|
<div class="competence-total">Total</div>
|
|
</div>
|
|
<fieldset class="repeating_competencesspeciales">
|
|
<div class="tableBody">
|
|
<div class="competence-jet">
|
|
<button type="roll" name="Compétence spéciale"
|
|
value="&{template:competence} {{rollname=@{nom}}} {{jet=[[1d100]]}} {{competence=[[@{total}]]}} {{fail=[[@{total} + 1]]}} {{fumble=[[{96,@{total} + 1}kh1]]}}"
|
|
class="roll"></button>
|
|
</div>
|
|
<div class="competence-nom">
|
|
<input type="text" name="attr_nom" spellcheck="false" />
|
|
</div>
|
|
<div class="competence-base">
|
|
<input type="number" name="attr_base" value="50" />
|
|
</div>
|
|
<div class="competence-bonus">
|
|
<input type="number" name="attr_bonus" value="0" />
|
|
</div>
|
|
<div class="competence-total">
|
|
<input type="text" readonly name="attr_total" value="0" />
|
|
</div>
|
|
</div>
|
|
</fieldset>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="inventaire">
|
|
<div class="section">
|
|
<div class="sectionCol">
|
|
<h1>Possessions</h1>
|
|
<textarea name="attr_possessions" spellcheck="false"></textarea>
|
|
</div>
|
|
<div class="sectionCol sheet-sectionCol--divider"></div>
|
|
<div class="sectionCol">
|
|
<h1>Notes</h1>
|
|
<textarea name="attr_notes" spellcheck="false"></textarea>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<rolltemplate class="sheet-rolltemplate-competence">
|
|
<div class="sheet-template-container">
|
|
<div class="sheet-template-header">Jet de<br /><span>{{ rollname }}</span></div>
|
|
<div class="sheet-template-rolled">{{ jet }}{{#competence}} / {{ competence }}{{/competence}}</div>
|
|
{{#competence}}
|
|
<div class="sheet-template-result">
|
|
{{#rollGreater() jet 99}}Échec critique</div>{{/rollGreater() jet 99}}
|
|
{{#rollLess() jet 100}}
|
|
{{#rollBetween() jet fumble 99}}<span>Échec critique</span>{{/rollBetween() jet fumble 99}}
|
|
{{#rollBetween() jet fail 95}}<span>Échec</span>{{/rollBetween() jet fail 95}}
|
|
{{#rollBetween() jet 6 competence}}<span>Réussite</span>{{/rollBetween() jet 6 competence}}
|
|
{{#rollLess() jet 6}}<span>Réussite critique</span>{{/rollLess() jet 6}}
|
|
{{/rollLess() jet 100}}
|
|
</div>
|
|
{{/competence}}
|
|
</rolltemplate>
|
|
|
|
<script type="text/worker">
|
|
const competences = {
|
|
"Adaptation": {
|
|
"links": ["END", "INO"]
|
|
},
|
|
"Astrophysique, mathématiques": {
|
|
"links": ["INT", "INO"]
|
|
},
|
|
"Biologie, géologie": {
|
|
"links": ["DEX", "INT"]
|
|
},
|
|
"Bricoler, bidouiller": {
|
|
"links": ["DEX", "INO"]
|
|
},
|
|
"Combat à distance": {
|
|
"links": ["DEX", "INT"]
|
|
},
|
|
"Combat au corps à corps": {
|
|
"links": ["END", "FOR"]
|
|
},
|
|
"Comprendre l’étrange": {
|
|
"links": ["INT", "INO"]
|
|
},
|
|
"Convaincre": {
|
|
"links": ["FOR", "INT"]
|
|
},
|
|
"Courir, sauter, nager": {
|
|
"links": ["DEX", "END"]
|
|
},
|
|
"Déplacement en zéro G": {
|
|
"links": ["DEX", "FOR"]
|
|
},
|
|
"Discrétion": {
|
|
"links": ["DEX", "INO"]
|
|
},
|
|
"Garder son calme": {
|
|
"links": ["END", "INO"]
|
|
},
|
|
"Observer": {
|
|
"links": ["END", "INO"]
|
|
},
|
|
"Pilotage": {
|
|
"links": ["DEX", "INT"]
|
|
},
|
|
"Programmation": {
|
|
"links": ["INT", "INO"]
|
|
},
|
|
"Réflexes": {
|
|
"links": ["DEX", "FOR"]
|
|
},
|
|
"Soigner": {
|
|
"links": ["DEX", "INT"]
|
|
},
|
|
"Survie": {
|
|
"links": ["END", "INO"]
|
|
}
|
|
};
|
|
|
|
const buttonlist = ["caracteristiques","competences","inventaire"];
|
|
buttonlist.forEach(button => {
|
|
on(`clicked:${button}`, function() {
|
|
setAttrs({
|
|
ongletActif: button
|
|
});
|
|
});
|
|
});
|
|
|
|
on(`sheet:opened`, function (eventInfo) {
|
|
getAttrs(['version'], function (values) {
|
|
console.log(values);
|
|
if (values.version === "1.0") {
|
|
return;
|
|
}
|
|
|
|
const toSet = {
|
|
version: "1.0"
|
|
};
|
|
const noms = Object.keys(competences);
|
|
const base = calculateBase(10, 10, "moyenne");
|
|
for (let i = 0; i < noms.length; i += 1) {
|
|
const id = generateRowID();
|
|
const links = competences[noms[i]].links;
|
|
toSet[`repeating_competences_${id}_competence_nom`] = noms[i];
|
|
toSet[`repeating_competences_${id}_competence_stat1`] = links[0];
|
|
toSet[`repeating_competences_${id}_competence_stat2`] = links[1];
|
|
toSet[`repeating_competences_${id}_competence_base`] = base;
|
|
toSet[`repeating_competences_${id}_competence_points`] = 0;
|
|
toSet[`repeating_competences_${id}_competence_bonus`] = 0;
|
|
toSet[`repeating_competences_${id}_competence_total`] = base;
|
|
}
|
|
|
|
setAttrs(toSet);
|
|
});
|
|
});
|
|
|
|
function calculateBase(stat1, stat2, methode) {
|
|
if (methode === 'moyenne') {
|
|
return Math.floor((parseInt(stat1, 10) + parseInt(stat2, 10)) / 2) * 5;
|
|
}
|
|
|
|
return (parseInt(stat1, 10) + parseInt(stat2, 10)) * 2;
|
|
}
|
|
|
|
function calculatePoints(points, methode) {
|
|
if (methode !== 'points') {
|
|
return 0;
|
|
}
|
|
|
|
return parseInt(points, 10) || 0;
|
|
}
|
|
|
|
function refreshStatsFor(ids) {
|
|
const toGet = [
|
|
"competence_methode", "FOR", "INT", "INO", "DEX", "END",
|
|
];
|
|
|
|
for (let i = 0; i < ids.length; i += 1) {
|
|
toGet.push(
|
|
`repeating_competences_${ids[i]}_competence_nom`,
|
|
`repeating_competences_${ids[i]}_competence_points`,
|
|
`repeating_competences_${ids[i]}_competence_bonus`
|
|
);
|
|
}
|
|
|
|
getAttrs(toGet, function (values) {
|
|
const toSet = {};
|
|
for (let i = 0; i < ids.length; i += 1) {
|
|
let links = ['', ''];
|
|
let base = 0;
|
|
let points = 0;
|
|
let bonus = 0;
|
|
|
|
const nom = values[`repeating_competences_${ids[i]}_competence_nom`];
|
|
if (nom && competences[nom]) {
|
|
links = competences[nom].links;
|
|
base = calculateBase(
|
|
values[links[0]],
|
|
values[links[1]],
|
|
values.competence_methode
|
|
);
|
|
points = calculatePoints(
|
|
values[`repeating_competences_${ids[i]}_competence_points`],
|
|
values.competence_methode
|
|
);
|
|
bonus = parseInt(values[`repeating_competences_${ids[i]}_competence_bonus`], 10) || 0;
|
|
}
|
|
|
|
toSet[`repeating_competences_${ids[i]}_competence_stat1`] = links[0];
|
|
toSet[`repeating_competences_${ids[i]}_competence_stat2`] = links[1];
|
|
toSet[`repeating_competences_${ids[i]}_competence_base`] = base;
|
|
toSet[`repeating_competences_${ids[i]}_competence_total`] = base + points + bonus;
|
|
}
|
|
|
|
setAttrs(toSet);
|
|
});
|
|
}
|
|
|
|
on(`change:endurance`, function () {
|
|
getAttrs(["endurance", "pv_max", "pv"], function (values) {
|
|
if (values.pv_max !== '' || values.pv !== '') {
|
|
return;
|
|
}
|
|
|
|
const pv = Math.min(14, parseInt(values.endurance, 10));
|
|
setAttrs({
|
|
"pv_max": pv,
|
|
"pv": pv,
|
|
});
|
|
});
|
|
});
|
|
|
|
on(`change:competence_methode change:FOR change:END change:INO change:INT change:DEX`, function (eventInfo) {
|
|
setAttrs({
|
|
"competence_methode_hidden": eventInfo.newValue
|
|
});
|
|
|
|
getSectionIDs('competences', function (IDs) {
|
|
refreshStatsFor(IDs);
|
|
});
|
|
});
|
|
|
|
on(`change:repeating_competences`, function (eventInfo) {
|
|
const ID = eventInfo.sourceAttribute.split('_')[2];
|
|
refreshStatsFor([ID]);
|
|
});
|
|
|
|
on(`change:repeating_competences:competence_points`, function (eventInfo) {
|
|
getSectionIDs('competences', function (ids) {
|
|
const toGet = [];
|
|
for (let i = 0; i < ids.length; i += 1) {
|
|
toGet.push(`repeating_competences_${ids[i]}_competence_points`);
|
|
}
|
|
|
|
getAttrs(toGet, function (values) {
|
|
let sum = 0;
|
|
for (let i = 0; i < ids.length; i += 1) {
|
|
sum += parseInt(values[`repeating_competences_${ids[i]}_competence_points`], 10) || 0;
|
|
}
|
|
|
|
setAttrs({
|
|
"competence_points_restants": 50 - sum
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
on(`remove:repeating_competences`, function (eventInfo) {
|
|
getAttrs(["competence_points_restants"], function (values) {
|
|
setAttrs({
|
|
"competence_points_restants": parseInt(values.competence_points_restants, 10)
|
|
+ parseInt(eventInfo.removedInfo[`${eventInfo.sourceAttribute}_competence_points`] || 0, 10)
|
|
});
|
|
});
|
|
});
|
|
|
|
on(`change:repeating_competencesspeciales:base change:repeating_competencesspeciales:bonus`, function (eventInfo) {
|
|
const ID = eventInfo.sourceAttribute.split('_')[2];
|
|
getAttrs([`repeating_competencesspeciales_${ID}_base`, `repeating_competencesspeciales_${ID}_bonus`], function (values) {
|
|
setAttrs({
|
|
[`repeating_competencesspeciales_${ID}_total`]: (parseInt(values[`repeating_competencesspeciales_${ID}_base`], 10) || 0)
|
|
+ (parseInt(values[`repeating_competencesspeciales_${ID}_bonus`], 10) || 0)
|
|
});
|
|
});
|
|
});
|
|
</script>
|
|
|
|
|
|
|
|
|