brouillon10
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| brouillon10 [2026/04/23 11:41] – nanaki | brouillon10 [2026/04/29 13:54] (Version actuelle) – nanaki | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| - | Version finale distance | ||
| - | |||
| < | < | ||
| + | < | ||
| + | <meta charset=" | ||
| + | < | ||
| < | < | ||
| - | body { font-family: | + | body { font-family: |
| - | + | h1,h2 { color: | |
| - | table { border-collapse: collapse; width: 100%; font-size: 13px; } | + | .box { border:1px solid gold; padding:10px; margin-bottom: |
| - | td, th { border: 1px solid #ccc; padding: | + | select, |
| - | th { background: #f2f2f2; } | + | button |
| - | + | ||
| - | .controls | + | |
| </ | </ | ||
| </ | </ | ||
| Ligne 17: | Ligne 16: | ||
| < | < | ||
| - | <div class=" | + | <h1> |
| - | Points : <span id="points">0</span> / 15 | + | <div class=" |
| + | Race | ||
| + | < | ||
| + | </div> | ||
| - | <br><br> | + | <div class=" |
| + | Stats | ||
| + | <div id=" | ||
| + | </div> | ||
| - | Recherche : | + | <div class=" |
| - | <input type="text" id="search" | + | Équipement<br> |
| - | + | Tête <select id="head"></ | |
| - | Filtre type : | + | Cou < |
| - | <select id="filterType"> | + | Dos <select id="cape"></ |
| - | <option value="all">Tous</option> | + | Main droite |
| - | <option value="DIS">Distance</option> | + | Main gauche |
| - | <option value="P">Passif</option> | + | Corps <select id="body"></ |
| - | </ | + | Anneau |
| + | Pieds <select id=" | ||
| + | </div> | ||
| + | <div class=" | ||
| + | Compétences | ||
| + | <div id=" | ||
| </ | </ | ||
| - | <table id="skills"> | + | <button onclick="calculate()"> |
| + | <button onclick=" | ||
| - | <thead> | + | <pre id=" |
| - | < | + | |
| - | < | + | |
| - | < | + | |
| - | < | + | |
| - | < | + | |
| - | < | + | |
| - | < | + | |
| - | < | + | |
| - | < | + | |
| - | </ | + | |
| - | </thead> | + | |
| - | <tbody> | + | <script> |
| - | < | + | // ===== DATA ===== |
| + | const races = { | ||
| + | Elfe: | ||
| + | Nain: | ||
| + | }; | ||
| - | <tr data-type=" | + | const costTable |
| - | < | + | cc: |
| - | < | + | pv:[4,2,1], mvt: |
| - | </tr> | + | }; |
| - | <tr data-type="DIS"> | + | const equipments |
| - | < | + | {name:"Lance elfe", |
| - | < | + | {name:"Targe",race:"Nain", |
| - | </tr> | + | {name:" |
| + | {name:" | ||
| + | ]; | ||
| - | <tr data-type="DIS"> | + | const skills |
| - | < | + | |
| - | < | + | |
| - | </tr> | + | |
| - | <tr data-type=" | + | // ===== DOM ===== |
| - | < | + | const raceSelect |
| - | < | + | const statsDiv |
| - | </tr> | + | const skillsDiv = document.getElementById(" |
| - | <tr data-type="DIS"> | + | const head = document.getElementById("head"); |
| - | < | + | const neck = document.getElementById("neck"); |
| - | < | + | const cape = document.getElementById("cape"); |
| - | </tr> | + | const rightHand = document.getElementById(" |
| + | const leftHand = document.getElementById(" | ||
| + | const body = document.getElementById(" | ||
| + | const ring = document.getElementById(" | ||
| + | const feet = document.getElementById(" | ||
| - | <tr data-type=" | + | // ===== INIT ===== |
| - | < | + | |
| - | < | + | |
| - | </tr> | + | |
| - | <!-- ===== NIVEAU 2 ===== --> | + | // race |
| + | for(let r in races){ | ||
| + | raceSelect.innerHTML += `<option> | ||
| + | } | ||
| - | <tr data-type="DIS"> | + | // stats |
| - | < | + | for(let s in costTable){ |
| - | < | + | statsDiv.innerHTML += `${s} <input type="number" |
| - | </tr> | + | } |
| - | <tr data-type=" | + | // skills |
| - | <td>< | + | skills.forEach(s=>{ |
| - | <td>Communs</ | + | skillsDiv.innerHTML += `<label>< |
| - | </tr> | + | }); |
| - | <tr data-type=" | + | // slots reset |
| - | <td>< | + | function resetSlots(){ |
| - | < | + | [head, |
| - | </tr> | + | sel.innerHTML = `<option value=""> |
| + | }); | ||
| + | } | ||
| - | < | + | // remplir équipements |
| + | function fillEquip(){ | ||
| + | let r = raceSelect.value; | ||
| - | <tr data-type=" | + | equipments.forEach((e, |
| - | < | + | if(e.race!=="all" |
| - | < | + | |
| - | </tr> | + | |
| - | <!-- ===== NIVEAU 4 ===== --> | + | if(e.slot===" |
| + | if(e.slot===" | ||
| + | if(e.slot===" | ||
| + | }); | ||
| + | } | ||
| - | <tr data-type=" | + | // update |
| - | < | + | raceSelect.addEventListener("change", ()=>{ |
| - | < | + | resetSlots(); |
| - | </tr> | + | fillEquip(); |
| + | }); | ||
| - | <tr data-type=" | + | resetSlots(); |
| - | < | + | fillEquip(); |
| - | < | + | |
| - | </tr> | + | |
| - | <tr data-type="P"> | + | // 2 mains |
| - | < | + | rightHand.addEventListener("change", ()=>{ |
| - | < | + | let v = rightHand.value; |
| - | </tr> | + | if(v==="" |
| - | </ | + | let item = equipments[v]; |
| - | </ | + | if(item.slot===" |
| + | leftHand.value=""; | ||
| + | leftHand.disabled=true; | ||
| + | }else{ | ||
| + | leftHand.disabled=false; | ||
| + | } | ||
| + | }); | ||
| - | < | + | // ===== CALCUL ===== |
| + | function calculate(){ | ||
| - | let max = 15; | + | let char = {...races[raceSelect.value]}; |
| + | let total = 0; | ||
| - | document.querySelectorAll(".skill").forEach(cb=>{ | + | // stats |
| - | cb.addEventListener("change", ()=>{ | + | for(let s in costTable){ |
| - | let total = document.querySelectorAll(".skill: | + | let v = parseInt(document.getElementById(s).value)||0; |
| - | if(total > max){ cb.checked = false; return; } | + | char[s]+=v; |
| - | points.innerText = total; | + | } |
| - | }); | + | |
| + | // equip | ||
| + | [rightHand, | ||
| + | if(sel.value==="" | ||
| + | let e = equipments[sel.value]; | ||
| + | for(let stat in e.stats){ | ||
| + | char[stat]=(char[stat]||0)+e.stats[stat]; | ||
| + | } | ||
| }); | }); | ||
| - | function filter(){ | + | // affichage |
| - | let t = filterType.value; | + | result.innerText |
| - | let s = search.value.toLowerCase(); | + | } |
| - | document.querySelectorAll("# | + | // ===== EXPORT ===== |
| - | let txt = r.innerText.toLowerCase(); | + | function exportWiki(){ |
| - | let ok = (t==" | + | |
| - | && | + | let txt="=== Build ===\n"; |
| - | r.style.display | + | txt+=" |
| + | |||
| + | document.querySelectorAll(" | ||
| + | txt+="* "+s.parentNode.innerText+"\n"; | ||
| }); | }); | ||
| - | } | ||
| - | filterType.onchange | + | result.innerText=txt; |
| - | search.oninput = filter; | + | } |
| </ | </ | ||
brouillon10.1776937272.txt.gz · Dernière modification : 2026/04/23 11:41 de nanaki
