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 23:19] nanakibrouillon10 [2026/04/29 23:56] (Version actuelle) nanaki
Ligne 1: Ligne 1:
-<!DOCTYPE html> 
 <html> <html>
 <head> <head>
Ligne 82: Ligne 81:
 </div> </div>
  
-<button onclick="calculate()">Calculer</button>+<button onclick="resetAll()">Reset</button>
  
 <pre id="result" class="result"></pre> <pre id="result" class="result"></pre>
Ligne 114: Ligne 113:
 // ===== PASSIFS ===== // ===== PASSIFS =====
 const skills = [ const skills = [
-{name:"Fulgurance",desc:"+1 esquive",cost:2}, +{name:"Fulgurance",desc:"+1 esquive"}, 
-{name:"Couverture",desc:"85% CC / 15% AGI",cost:4}, +{name:"Couverture",desc:"85% CC / 15% AGI"}, 
-{name:"Réflexes fulgurants",desc:"85% AGI / 15% CC",cost:4}, +{name:"Réflexes fulgurants",desc:"85% AGI / 15% CC"}, 
-{name:"Anguille",desc:"Avantage esquive",cost:4}+{name:"Anguille",desc:"Avantage esquive"}
 ]; ];
 +
  
 // ===== ÉQUIPEMENTS ===== // ===== ÉQUIPEMENTS =====
 const equipments = [ const equipments = [
 +
 +/* ================= COMMUNS ================= */
 +
 {name:"Arc",race:"all",slot:"weapon2h",stats:{cc:-1,ct:1}}, {name:"Arc",race:"all",slot:"weapon2h",stats:{cc:-1,ct:1}},
 +{name:"Armure matelassée",race:"all",slot:"body",stats:{e:1,agi:-2}},
 +{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:"Gladius",race:"all",slot:"weapon",stats:{cc:1}},
-{name:"Bouclier",race:"all",slot:"offhand",stats:{e:1}}, +{name:"Sceptre",race:"all",slot:"weapon",stats:{fm:1}}, 
-{name:"Armure",race:"all",slot:"body",stats:{e:2}}, +{name:"Lance",race:"all",slot:"weapon",stats:{ct:1,cc:-1}}, 
-{name:"Casque",race:"all",slot:"head",stats:{p:1}}, +{name:"Targe",race:"all",slot:"offhand",stats:{cc:1,agi:-1}}, 
-{name:"Cape",race:"all",slot:"cape",stats:{ct:1}}, +{name:"Visière",race:"all",slot:"head",stats:{p:1,cc:-1,fm:-1}}, 
-{name:"Collier",race:"all",slot:"neck",stats:{pv:5}}, +{name:"Cape de chasse",race:"all",slot:"cape",stats:{ct:1}}, 
-{name:"Bottes",race:"all",slot:"feet",stats:{mvt:1}}, +{name:"Collier tressé",race:"all",slot:"neck",stats:{pv:5,pm:5}}, 
-{name:"Anneau",race:"all",slot:"ring",stats:{fm:1}}+{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}}, 
 + 
 +/* ================= ELFES ================= */ 
 + 
 +{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}}, 
 + 
 +/* ================= NAINS ================= */ 
 + 
 +{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}}, 
 + 
 +/* ================= GÉANTS ================= */ 
 + 
 +{name:"Bouclier Clipeus",race:"Géant",slot:"offhand",stats:{e:1,pv:10}}, 
 +{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}}, 
 + 
 +/* ================= HS ================= */ 
 + 
 +{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}}, 
 + 
 +/* ================= OLYMPIENS ================= */ 
 + 
 +{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}}, 
 + 
 +/* ================= ANNEAUX ================= */ 
 + 
 +{name:"Anneau Caprice",race:"all",slot:"ring",stats:{fm:1}}
 +{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}} 
 ]; ];
  
Ligne 138: Ligne 221:
 const baseDiv = document.getElementById("baseStats"); const baseDiv = document.getElementById("baseStats");
  
-// races 
 for(let r in races){ for(let r in races){
 raceSelect.innerHTML += `<option>${r}</option>`; raceSelect.innerHTML += `<option>${r}</option>`;
Ligne 157: Ligne 239:
 <label> <label>
 <input type="checkbox" class="skill" data-name="${s.name}"> <input type="checkbox" class="skill" data-name="${s.name}">
-<b>${s.name}</b> (${s.cost})<br>+<b>${s.name}</b><br>
 <span class="small">${s.desc}</span> <span class="small">${s.desc}</span>
 </label><br>`; </label><br>`;
Ligne 169: Ligne 251:
 displayBase(); displayBase();
  
-// ===== COST LIVE =====+// ===== COST =====
 function calcCost(b,m1,m2,n){ function calcCost(b,m1,m2,n){
 let total=0,last=b; let total=0,last=b;
Ligne 190: Ligne 272:
 document.getElementById("cost").innerHTML="💰 PI : "+total; document.getElementById("cost").innerHTML="💰 PI : "+total;
 } }
- 
-document.querySelectorAll("#stats input").forEach(i=>{ 
-i.addEventListener("input",updateCost); 
-}); 
-updateCost(); 
  
 // ===== SLOTS ===== // ===== SLOTS =====
Ligne 226: Ligne 303:
 resetSlots(); resetSlots();
 fillEquip(); fillEquip();
 +autoCalculate();
 }); });
  
Ligne 231: Ligne 309:
 fillEquip(); fillEquip();
  
-// ===== BONUS AFFICHAGE =====+// ===== BONUS =====
 function displayStats(select,id){ function displayStats(select,id){
 let v=select.value; let v=select.value;
Ligne 246: Ligne 324:
  
 Object.entries(slots).forEach(([k,s])=>{ Object.entries(slots).forEach(([k,s])=>{
-s.addEventListener("change",()=>displayStats(s,k+"Stats"));+s.addEventListener("change",()=>
 +displayStats(s,k+"Stats")
 +checkLimit(); 
 +autoCalculate(); 
 +});
 }); });
  
Ligne 266: Ligne 348:
 } }
 } }
- 
-Object.values(slots).forEach(s=>s.addEventListener("change",checkLimit)); 
  
 // ===== CALCUL ===== // ===== CALCUL =====
Ligne 273: Ligne 353:
  
 let char={...races[raceSelect.value]}; let char={...races[raceSelect.value]};
 +
 +// stats investies
 +for(let s in costTable){
 +let v=+document.getElementById(s).value||0;
 +char[s]=(char[s]||0)+v;
 +}
  
 // equip // equip
Ligne 298: Ligne 384:
  
 // affichage // affichage
-result.textContent=+result.textContent = 
 +"===== STATS =====\n"+
 JSON.stringify(char,null,2)+ JSON.stringify(char,null,2)+
 "\n\n⚔ CC : "+char.cc+ "\n\n⚔ CC : "+char.cc+
Ligne 305: Ligne 392:
 "\n🛡 Esquive : "+esquive; "\n🛡 Esquive : "+esquive;
 } }
 +
 +// ===== AUTO =====
 +function autoCalculate(){
 +updateCost();
 +calculate();
 +}
 +
 +// events stats
 +document.querySelectorAll("#stats input").forEach(i=>{
 +i.addEventListener("input", autoCalculate);
 +});
 +
 +// passifs
 +document.querySelectorAll(".skill").forEach(s=>{
 +s.addEventListener("change", autoCalculate);
 +});
 +
 +// ===== RESET =====
 +function resetAll(){
 +
 +document.querySelectorAll("#stats input").forEach(i=>i.value=0);
 +
 +Object.values(slots).forEach(s=>{
 +s.value="";
 +s.disabled=false;
 +});
 +
 +document.querySelectorAll(".skill").forEach(s=>s.checked=false);
 +
 +resetSlots();
 +fillEquip();
 +displayBase();
 +checkLimit();
 +autoCalculate();
 +}
 +
 +// init
 +autoCalculate();
  
 </script> </script>
 </body> </body>
 </html> </html>
brouillon10.1777497552.txt.gz · Dernière modification : 2026/04/29 23:19 de nanaki