Outils pour utilisateurs

Outils du site


brouillon10

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
brouillon10 [2026/04/29 13:52] nanakibrouillon10 [2026/04/29 23:56] (Version actuelle) nanaki
Ligne 1: Ligne 1:
- 
 <html> <html>
 <head> <head>
 <meta charset="UTF-8"> <meta charset="UTF-8">
-<title>Simulateur Combat</title>+<title>Simulateur RPG</title>
  
 <style> <style>
-body{font-family:Arial;background:#1e1e1e;color:#eee;padding:20px+body { 
-select{margin:5px;width:250px+  font-family: Arial; 
-.box{background:#2a2a2a;padding:10px;margin-top:10px;border-radius:6px}+  background:#0b1a13; 
 +  color:#e0d3a3; 
 +  padding:10px; 
 +} 
 + 
 +h1,h2 { color:gold;
 + 
 +.box { 
 +  border:1px solid gold; 
 +  padding:10px; 
 +  margin-bottom:10px; 
 +
 + 
 +select { margin:3pxmax-width:150px; } 
 +input { margin:3px; width:50px; } 
 + 
 +.statLine { 
 +  display:flex; 
 +  justify-content:space-between; 
 +  max-width:260px; 
 +
 + 
 +.result { 
 +  background:#000; 
 +  color:#00ffcc; 
 +  padding:10px; 
 +  white-space:pre-wrap; 
 +
 + 
 +.small { 
 +  font-size:12px; 
 +  color:#aaa; 
 +}
 </style> </style>
 </head> </head>
Ligne 14: Ligne 45:
 <body> <body>
  
-<h1>Simulateur Combat</h1>+<h1>Simulateur</h1>
  
-<!-- RACE --+<div class="box"
-<h2>Race</h2> +Race : 
-<select id="race"> +<select id="race"></select>
-<option>Elfe</option> +
-<option>Nain</option> +
-<option>Géant</option> +
-<option>Olympien</option> +
-<option>HS</option> +
-</select>+
  
-<!-- EQUIPEMENT --+<h3>Stats de base</h3
-<h2>Équipement</h2>+<pre id="baseStats"></pre> 
 +</div>
  
-<select id="head"></select><br+<div class="box"> 
-<select id="body"></select><br+<h3>Améliorations</h3
-<select id="right"></select><br+<div id="stats"></div
-<select id="left"></select><br+<div id="cost"></div
-<select id="feet"></select><br> +</div>
-<select id="ring"></select><br>+
  
-<!-- PASSIFS --+<div class="box"
-<h2>Passifs</h2+<h3>Équipement (3 max + 1 anneau)</h3
-<select id="passivesmultiple size="8"></select>+ 
 +Tête <select id="head"></select> <span id="headStats"></span><br> 
 +Cou <select id="neck"></select> <span id="neckStats"></span><br> 
 +Dos <select id="cape"></select> <span id="capeStats"></span><br> 
 +Main droite <select id="rightHand"></select> <span id="rightStats"></span><br> 
 +Main gauche <select id="leftHand"></select> <span id="leftStats"></span><br> 
 +Corps <select id="body"></select> <span id="bodyStats"></span><br> 
 +Anneau <select id="ring"></select> <span id="ringStats"></span><br> 
 +Pieds <select id="feet"></select> <span id="feetStats"></span> 
 + 
 +<div id="limitWarn" style="color:red;"></div> 
 +</div>
  
-<!-- RESULT --> 
 <div class="box"> <div class="box">
-<h2>Résultats combat</h2+<h3>Passifs</h3
-<div id="result"></div>+<div id="skills"></div>
 </div> </div>
  
-<script>+<button onclick="resetAll()">Reset</button>
  
-/* ================= RACES ================= */+<pre id="result" class="result"></pre> 
 + 
 +<script>
  
 +// ===== RACES =====
 const races = { const races = {
-Elfe:{cc:9,ct:10,f:9,e:4,agi:9,fm:8}, +Elfe:{cc:9,ct:10,f:9,e:4,agi:9,p:5,mvt:5,pv:55,pm:30,r:4,rm:6,fm:8,m:6}, 
-Nain:{cc:11,ct:8,f:11,e:6,agi:6,fm:10}, +Nain:{cc:11,ct:8,f:11,e:6,agi:6,p:4,mvt:4,pv:50,pm:15,r:5,rm:4,fm:10,m:3}, 
-Géant:{cc:9,ct:10,f:12,e:4,agi:7,fm:6}, +Géant:{cc:9,ct:10,f:12,e:4,agi:7,p:4,mvt:5,pv:65,pm:20,r:5,rm:5,fm:6,m:5}, 
-Olympien:{cc:10,ct:9,f:10,e:5,agi:8,fm:7}, +Olympien:{cc:10,ct:9,f:10,e:5,agi:8,p:4,mvt:5,pv:60,pm:30,r:5,rm:6,fm:7,m:5}, 
-HS:{cc:8,ct:9,f:7,e:3,agi:11,fm:9}+HS:{cc:8,ct:9,f:7,e:3,agi:11,p:5,mvt:6,pv:45,pm:40,r:3,rm:7,fm:9,m:5}
 }; };
  
-/================= EQUIPEMENTS ================= */+/===== COST ===== 
 +const costTable 
 +cc:[100,50,30], ct:[110,50,30], 
 +f:[120,55,30], e:[120,55,30], 
 +agi:[95,45,25], 
 +m:[110,55,35], 
 +fm:[100,50,30], 
 +p:[110,85,78], 
 +pv:[4,2,1], 
 +pm:[5,3,1], 
 +mvt:[100,50,30], 
 +r:[40,30,15], 
 +rm:[50,40,20] 
 +}; 
 + 
 +// ===== PASSIFS ===== 
 +const skills 
 +{name:"Fulgurance",desc:"+1 esquive"}, 
 +{name:"Couverture",desc:"85% CC / 15% AGI"}, 
 +{name:"Réflexes fulgurants",desc:"85% AGI 15% CC"}, 
 +{name:"Anguille",desc:"Avantage esquive"
 +]; 
  
 +// ===== ÉQUIPEMENTS =====
 const equipments = [ const equipments = [
-{name:"Rien",slot:"all"}, 
  
-{name:"Armure sylvestre",slot:"body",stats:{e:2}}, +/* ================= COMMUNS ================= */
-{name:"Gladius",slot:"weapon",stats:{cc:1}}, +
-{name:"Lance elfique",slot:"weapon",stats:{cc:1,f:1}}, +
-{name:"Arc long",slot:"weapon2h",stats:{ct:2,cc:-2}},+
  
-{name:"Bouclier",slot:"offhand",stats:{cc:1}}, +{name:"Arc",race:"all",slot:"weapon2h",stats:{cc:-1,ct:1}}, 
-{name:"Bottes rapides",slot:"feet",stats:{agi:1}}, +{name:"Armure matelassée",race:"all",slot:"body",stats:{e:1,agi:-2}}, 
-{name:"Anneau puissance",slot:"ring",stats:{m:1}} +{name:"Bâton de marche",race:"all",slot:"weapon",stats:{mvt:1}}, 
-];+{name:"Bottes de marche",race:"all",slot:"feet",stats:{mvt:1}}, 
 +{name:"Bouclier Parma",race:"all",slot:"offhand",stats:{e:1,agi:-2}}, 
 +{name:"Fustibale",race:"all",slot:"weapon",stats:{cc:-2,ct:1}}, 
 +{name:"Gladius",race:"all",slot:"weapon",stats:{cc:1}}, 
 +{name:"Sceptre",race:"all",slot:"weapon",stats:{fm:1}}, 
 +{name:"Lance",race:"all",slot:"weapon",stats:{ct:1,cc:-1}}, 
 +{name:"Targe",race:"all",slot:"offhand",stats:{cc:1,agi:-1}}, 
 +{name:"Visière",race:"all",slot:"head",stats:{p:1,cc:-1,fm:-1}}, 
 +{name:"Cape de chasse",race:"all",slot:"cape",stats:{ct:1}}, 
 +{name:"Collier tressé",race:"all",slot:"neck",stats:{pv:5,pm:5}}, 
 +{name:"Couronne d'Adonis",race:"all",slot:"head",stats:{rm:1}}, 
 +{name:"Ceinture",race:"all",slot:"body",stats:{r:1}}, 
 +{name:"Arc long",race:"all",slot:"weapon2h",stats:{ct:2,f:-1,cc:-2}}, 
 +{name:"Targe renforcée",race:"all",slot:"offhand",stats:{cc:1,pv:10}},
  
-/* ================= PASSIFS ================= */+/* ================= ELFES ================= */
  
-const passives = [+{name:"Bâton du Pèlerin",race:"Elfe",slot:"weapon",stats:{mvt:1,fm:1}}, 
 +{name:"Bottes Tâlroval",race:"Elfe",slot:"feet",stats:{mvt:2}}, 
 +{name:"Cuirasse",race:"Elfe",slot:"body",stats:{e:1,r:2}}, 
 +{name:"Lance de garde Sylvestre",race:"Elfe",slot:"weapon",stats:{cc:1,f:1}}, 
 +{name:"Sceptre de mage",race:"Elfe",slot:"weapon2h",stats:{m:1,fm:1}}, 
 +{name:"Arc Ensorcelé",race:"Elfe",slot:"weapon2h",stats:{ct:1,rm:2,cc:-1}}, 
 +{name:"Armure de garde Sylvestre",race:"Elfe",slot:"body",stats:{e:2,mvt:-1},magicBlock:true}, 
 +{name:"Toge de feuillage",race:"Elfe",slot:"body",stats:{fm:1,agi:1,pv:5}}, 
 +{name:"Marque Forestière",race:"Elfe",slot:"neck",stats:{pm:10,r:1}}, 
 +{name:"Capuche du chasseur",race:"Elfe",slot:"head",stats:{ct:1,r:1}},
  
-{name:"Fulgurance",effect:(s)=>{s.cc+=1;s.agi+=1}}, +/* ================= NAINS ================= */
-{name:"Couverture",effect:(s)=>{s.cover=true}}, +
-{name:"Anguille",effect:(s)=>{s.agi+=2}}, +
-{name:"Duelliste",effect:(s)=>{s.cc+=2}}, +
-{name:"Maître bretteur",effect:(s)=>{s.cc+=1}}, +
-{name:"Inépuisable",effect:(s)=>{s.resistMalus=1}}+
  
-];+{name:"Cotte de mailles",race:"Nain",slot:"body",stats:{e:2,agi:-4}}, 
 +{name:"Labrys",race:"Nain",slot:"weapon",stats:{cc:1,f:1}}, 
 +{name:"Marteau de guerre",race:"Nain",slot:"weapon2h",stats:{f:2,cc:-1}}, 
 +{name:"Targe renforcée naine",race:"Nain",slot:"offhand",stats:{cc:1,pv:10}}, 
 +{name:"Armure runique",race:"Nain",slot:"body",stats:{e:1,pm:8}}, 
 +{name:"Cape dorée",race:"Nain",slot:"cape",stats:{m:1,fm:1},magicBlock:true}, 
 +{name:"Solerets",race:"Nain",slot:"feet",stats:{mvt:1,pm:5,pv:5}}, 
 +{name:"Casque grossissant",race:"Nain",slot:"head",stats:{ct:2,p:-1}},
  
-/* ================= SELECT ================= */+/* ================= GÉANTS ================= */
  
-const race = document.getElementById("race"); +{name:"Bouclier Clipeus",race:"Géant",slot:"offhand",stats:{e:1,pv:10}}, 
-const passivesSelect = document.getElementById("passives");+{name:"Masse d'arme",race:"Géant",slot:"weapon",stats:{cc:1,f:1}}, 
 +{name:"Hallebarde de pierre",race:"Géant",slot:"weapon",stats:{cc:2,f:-1}}, 
 +{name:"Bâton de shaman",race:"Géant",slot:"weapon2h",stats:{fm:2,pv:-5}}, 
 +{name:"Javelot lourd",race:"Géant",slot:"weapon",stats:{f:2,ct:-1,cc:-1}}, 
 +{name:"Broigne",race:"Géant",slot:"body",stats:{e:2,f:-1}}, 
 +{name:"Fétiche de shaman",race:"Géant",slot:"offhand",stats:{r:2,pm:5}}, 
 +{name:"Bottes incandescentes",race:"Géant",slot:"feet",stats:{mvt:1,r:1,pv:5}}, 
 +{name:"Médaillon hanté",race:"Géant",slot:"neck",stats:{cc:1,ct:1}},
  
-const slots +/* ================= HS ================= */
-head:document.getElementById("head"), +
-body:document.getElementById("body"), +
-right:document.getElementById("right"), +
-left:document.getElementById("left"), +
-feet:document.getElementById("feet"), +
-ring:document.getElementById("ring"+
-};+
  
-/* ================= INIT ================= */+{name:"Bâton de sage",race:"HS",slot:"weapon2h",stats:{m:1,agi:1}}, 
 +{name:"Orbe de mana",race:"HS",slot:"weapon2h",stats:{m:1,rm:1}}, 
 +{name:"Cape de mage",race:"HS",slot:"cape",stats:{fm:1,rm:1}}, 
 +{name:"Armure de fourrure",race:"HS",slot:"body",stats:{e:2,rm:-3}}, 
 +{name:"Ceste",race:"HS",slot:"weapon",stats:{f:1,cc:1}}, 
 +{name:"Collier d'apaisement",race:"HS",slot:"neck",stats:{pv:10,pm:5}}, 
 +{name:"Bottes de voleur",race:"HS",slot:"feet",stats:{mvt:1,agi:1}}, 
 +{name:"Sarbacane",race:"HS",slot:"weapon",stats:{ct:1,f:10,cc:-1}}, 
 +{name:"Bouclier en lianes",race:"HS",slot:"offhand",stats:{cc:1,agi:1}},
  
-function initEquip(){+/* ================= OLYMPIENS ================= */
  
-Object.values(slots).forEach(s=>s.innerHTML="");+{name:"Armure hoplitique",race:"Olympien",slot:"body",stats:{e:1,m:1}}, 
 +{name:"Bouclier Ancile",race:"Olympien",slot:"offhand",stats:{e:1}}, 
 +{name:"Diadème",race:"Olympien",slot:"head",stats:{r:1,rm:2}}, 
 +{name:"Pilum",race:"Olympien",slot:"weapon",stats:{ct:1,f:1,cc:-1}}, 
 +{name:"Spatha",race:"Olympien",slot:"weapon",stats:{cc:1,f:1}}, 
 +{name:"Sceptre de puissance",race:"Olympien",slot:"weapon",stats:{m:1,pm:8}}, 
 +{name:"Lame Sainte",race:"Olympien",slot:"weapon",stats:{cc:1,m:1}}, 
 +{name:"Tiare d'Oracle",race:"Olympien",slot:"head",stats:{fm:1,p:1}}, 
 +{name:"Cnémides",race:"Olympien",slot:"feet",stats:{mvt:1,rm:1,r:1}},
  
-equipments.forEach((e,i)=>{+/* ================= ANNEAUX ================= */
  
-if(e.slot==="weapon"||e.slot==="weapon2h") +{name:"Anneau Caprice",race:"all",slot:"ring",stats:{fm:1}}, 
-slots.right.innerHTML += `<option value="${i}">${e.name}</option>`;+{name:"Anneau Férocité",race:"all",slot:"ring",stats:{f:1}}, 
 +{name:"Anneau Horizon",race:"all",slot:"ring",stats:{p:1}}, 
 +{name:"Anneau Prétention",race:"all",slot:"ring",stats:{ct:1}}, 
 +{name:"Anneau Souplesse",race:"all",slot:"ring",stats:{agi:1}}, 
 +{name:"Anneau Tenacité",race:"all",slot:"ring",stats:{e:1}}, 
 +{name:"Anneau Puissance",race:"all",slot:"ring",stats:{m:1}}, 
 +{name:"Anneau Finesse",race:"all",slot:"ring",stats:{cc:1}}
  
-if(e.slot==="offhand"+];
-slots.left.innerHTML += `<option value="${i}">${e.name}</option>`;+
  
-if(e.slot==="body") +// ===== INIT ===== 
-slots.body.innerHTML += `<option value="${i}">${e.name}</option>`;+const raceSelect = document.getElementById("race"); 
 +const statsDiv document.getElementById("stats"); 
 +const baseDiv = document.getElementById("baseStats");
  
-if(e.slot==="feet"+for(let r in races){ 
-slots.feet.innerHTML += `<option value="${i}">${e.name}</option>`;+raceSelect.innerHTML += `<option>${r}</option>`; 
 +}
  
-if(e.slot==="ring"+// stats UI 
-slots.ring.innerHTML += `<option value="${i}">${e.name}</option>`;+for(let s in costTable){ 
 +statsDiv.innerHTML += ` 
 +<div class="statLine"> 
 +<span>${s}</span> 
 +<input type="number" id="${s}" value="0" min="0"> 
 +</div>`; 
 +}
  
 +// passifs
 +skills.forEach(s=>{
 +document.getElementById("skills").innerHTML += `
 +<label>
 +<input type="checkbox" class="skill" data-name="${s.name}">
 +<b>${s.name}</b><br>
 +<span class="small">${s.desc}</span>
 +</label><br>`;
 }); });
  
 +// base stats
 +function displayBase(){
 +baseDiv.textContent = JSON.stringify(races[raceSelect.value],null,2);
 } }
 +raceSelect.addEventListener("change", displayBase);
 +displayBase();
  
-/================= PASSIFS ================= */+/===== COST ===== 
 +function calcCost(b,m1,m2,n){ 
 +let total=0,last=b; 
 +for(let i=1;i<=n;i++){ 
 +if(i===1) last=b; 
 +else if(i<=3) last+=m1; 
 +else last+=m2; 
 +total+=last; 
 +
 +return total; 
 +}
  
-function initPassives(){ +function updateCost(){ 
-passives.forEach((p,i)=>+let total=0; 
-let opt=document.createElement("option")+for(let s in costTable){ 
-opt.value=i+let v=+document.getElementById(s).value||0
-opt.textContent=p.name+let [b,m1,m2]=costTable[s]
-passivesSelect.appendChild(opt); +total+=calcCost(b,m1,m2,v); 
-});+} 
 +document.getElementById("cost").innerHTML="💰 PI : "+total;
 } }
  
-/================= CALCUL ================= */+/===== SLOTS ===== 
 +const slots 
 +head:head,neck:neck,cape:cape,rightHand:rightHand, 
 +leftHand:leftHand,body:body,ring:ring,feet:feet 
 +};
  
-function getStats(){+function resetSlots(){ 
 +Object.values(slots).forEach(s=>s.innerHTML="<option value=''>--</option>"); 
 +}
  
-let {...races[race.value]};+function fillEquip(){ 
 +let r=raceSelect.value;
  
-Object.values(slots).forEach(sel=>{ +equipments.forEach((e,i)=>{ 
-let item = equipments[sel.value]; +if(e.race!=="all"&&e.race!==r) return;
-if(!item || !item.stats) return;+
  
-Object.entries(item.stats).forEach(([k,v])=>{ +if(e.slot==="weapon"||e.slot==="weapon2h") rightHand.innerHTML+=`<option value="${i}">${e.name}</option>`; 
-s[k]=(s[k]||0)+v+if(e.slot==="offhand"leftHand.innerHTML+=`<option value="${i}">${e.name}</option>`; 
-});+if(e.slot==="body") body.innerHTML+=`<option value="${i}">${e.name}</option>`; 
 +if(e.slot==="head"head.innerHTML+=`<option value="${i}">${e.name}</option>`; 
 +if(e.slot==="neck") neck.innerHTML+=`<option value="${i}">${e.name}</option>`; 
 +if(e.slot==="cape"cape.innerHTML+=`<option value="${i}">${e.name}</option>`
 +if(e.slot==="feet") feet.innerHTML+=`<option value="${i}">${e.name}</option>`; 
 +if(e.slot==="ring"ring.innerHTML+=`<option value="${i}">${e.name}</option>`;
 }); });
 +}
  
-// passifs +raceSelect.addEventListener("change",()=>{ 
-[...passivesSelect.selectedOptions].forEach(o=>{ +resetSlots(); 
-passives[o.value].effect(s);+fillEquip(); 
 +autoCalculate();
 }); });
  
-return s;+resetSlots(); 
 +fillEquip(); 
 + 
 +// ===== BONUS ===== 
 +function displayStats(select,id){ 
 +let v=select.value; 
 +let el=document.getElementById(id); 
 +if(v===""){el.innerHTML="";return;} 
 +let e=equipments[v]; 
 +let txt=""; 
 +for(let in e.stats){ 
 +let val=e.stats[s]; 
 +txt+=val>0?`+${val} ${s} `:`${val} ${s} `; 
 +
 +el.innerHTML=txt;
 } }
  
-/* ================= CT DISTANCE ================= */+Object.entries(slots).forEach(([k,s])=>{ 
 +s.addEventListener("change",()=>{ 
 +displayStats(s,k+"Stats"); 
 +checkLimit(); 
 +autoCalculate(); 
 +}); 
 +});
  
-function ctAtRange(ctdist){ +// ===== LIMIT ===== 
-if(dist<=2return ct+function checkLimit(){ 
-return ct - (dist-2)*3;+let count=0; 
 +Object.entries(slots).forEach(([k,s])=>
 +if(k!=="ring"&&s.value!==""count++
 +})
 + 
 +if(count>=3){ 
 +limitWarn.innerText="Limite atteinte"; 
 +Object.entries(slots).forEach(([k,s])=>
 +if(k!=="ring"&&s.value==="") s.disabled=true; 
 +}); 
 +}else{ 
 +limitWarn.innerText=""; 
 +Object.values(slots).forEach(s=>s.disabled=false); 
 +}
 } }
  
-/================= ESQUIVE ================= */+/===== CALCUL ===== 
 +function calculate(){
  
-function dodgeShot(cc, agi){+let char={...races[raceSelect.value]};
  
-let def Math.max( +// stats investies 
-Math.floor(cc*0.75 + agi*0.25), +for(let s in costTable){ 
-Math.floor(cc*0.25 agi*0.75) +let v=+document.getElementById(s).value||0; 
-);+char[s]=(char[s]||0)+v; 
 +}
  
-return def;+// equip 
 +Object.values(slots).forEach(sel=>
 +if(sel.value===""return
 +let e=equipments[sel.value]; 
 +for(let s in e.stats){ 
 +char[s]=(char[s]||0)+e.stats[s];
 } }
 +});
  
-/* ================= UPDATE ================= */+// esquive 
 +let esquive=Math.round(char.agi*0.75+char.cc*0.25);
  
-function update(){+let checked=[...document.querySelectorAll(".skill:checked")].map(e=>e.dataset.name);
  
-let s getStats();+if(checked.includes("Réflexes fulgurants")) 
 +esquive=Math.round(char.agi*0.85+char.cc*0.15);
  
-let res = ` +if(checked.includes("Couverture")) 
-<b>CC :</b> ${s.cc}<br> +esquive=Math.round(char.cc*0.85+char.agi*0.15);
-<b>FM :</b> ${s.fm}<br><br>+
  
-<b>CT :</b><br> +if(checked.includes("Fulgurance")) 
-1 case : ${ctAtRange(s.ct,1)}<br> +esquive+=1;
-2 cases : ${ctAtRange(s.ct,2)}<br> +
-3 cases : ${ctAtRange(s.ct,3)}<br> +
-4 cases : ${ctAtRange(s.ct,4)}<br><br>+
  
-<b>Esquive tir :</b> ${dodgeShot(s.cc,s.agi)} +// affichage 
-`;+result.textContent = 
 +"===== STATS =====\n"
 +JSON.stringify(char,null,2)+ 
 +"\n\n⚔ CC : "+char.cc
 +"\n🎯 CT : "+char.ct+ 
 +"\n✨ FM : "+char.fm+ 
 +"\n🛡 Esquive : "+esquive; 
 +}
  
-if(s.coverres += "<br>✔ Couverture active (anti tir)";+// ===== AUTO ===== 
 +function autoCalculate()
 +updateCost(); 
 +calculate(); 
 +}
  
-document.getElementById("result").innerHTML res;+// events stats 
 +document.querySelectorAll("#stats input").forEach(i=>{ 
 +i.addEventListener("input", autoCalculate); 
 +});
  
-}+// passifs 
 +document.querySelectorAll(".skill").forEach(s=>
 +s.addEventListener("change", autoCalculate); 
 +});
  
-/================= EVENTS ================= */+/===== RESET ===== 
 +function resetAll(){
  
-document.querySelectorAll("select").forEach(s=>+document.querySelectorAll("#stats input").forEach(i=>i.value=0); 
-s.addEventListener("change",update);+ 
 +Object.values(slots).forEach(s=>
 +s.value=""
 +s.disabled=false;
 }); });
  
-/* ================= START ================= */+document.querySelectorAll(".skill").forEach(s=>s.checked=false);
  
-initEquip(); +resetSlots(); 
-initPassives(); +fillEquip(); 
-update();+displayBase(); 
 +checkLimit(); 
 +autoCalculate(); 
 +}
  
-</script>+// init 
 +autoCalculate();
  
 +</script>
 </body> </body>
 </html> </html>
brouillon10.1777463554.txt.gz · Dernière modification : 2026/04/29 13:52 de nanaki