brouillon6
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 | ||
| brouillon6 [2026/05/01 23:43] – nanaki | brouillon6 [2026/05/02 00:09] (Version actuelle) – nanaki | ||
|---|---|---|---|
| Ligne 8: | Ligne 8: | ||
| font-family: | font-family: | ||
| background:# | background:# | ||
| - | color:#e0d3a3; | + | color:#7dd3fc; |
| padding: | padding: | ||
| } | } | ||
| Ligne 245: | Ligne 245: | ||
| } | } | ||
| + | // stats UI | ||
| for(let s in costTable){ | for(let s in costTable){ | ||
| - | statsDiv.innerHTML += `<div class=" | + | statsDiv.innerHTML += ` |
| + | <div class=" | ||
| + | < | ||
| + | <input type=" | ||
| + | </ | ||
| } | } | ||
| + | // passifs | ||
| skills.forEach(s=> | skills.forEach(s=> | ||
| - | skills.innerHTML += `< | + | document.getElementById(" |
| + | < | ||
| + | <input type=" | ||
| + | <b> | ||
| + | <span class=" | ||
| + | </ | ||
| }); | }); | ||
| - | // ===== BASE ===== | + | // base stats |
| function displayBase(){ | function displayBase(){ | ||
| baseDiv.textContent = JSON.stringify(races[raceSelect.value], | baseDiv.textContent = JSON.stringify(races[raceSelect.value], | ||
| Ligne 279: | Ligne 290: | ||
| total+=calcCost(b, | total+=calcCost(b, | ||
| } | } | ||
| - | document.getElementById(" | + | document.getElementById(" |
| + | } | ||
| + | |||
| + | // ===== SLOTS ===== | ||
| + | const slots = { | ||
| + | head: | ||
| + | leftHand: | ||
| + | }; | ||
| + | |||
| + | function resetSlots(){ | ||
| + | Object.values(slots).forEach(s=> | ||
| + | } | ||
| + | |||
| + | function fillEquip(){ | ||
| + | let r=raceSelect.value; | ||
| + | |||
| + | equipments.forEach((e, | ||
| + | if(e.race!==" | ||
| + | |||
| + | if(e.slot===" | ||
| + | if(e.slot===" | ||
| + | if(e.slot===" | ||
| + | if(e.slot===" | ||
| + | if(e.slot===" | ||
| + | if(e.slot===" | ||
| + | if(e.slot===" | ||
| + | if(e.slot===" | ||
| + | }); | ||
| + | } | ||
| + | |||
| + | raceSelect.addEventListener(" | ||
| + | resetSlots(); | ||
| + | fillEquip(); | ||
| + | autoCalculate(); | ||
| + | }); | ||
| + | |||
| + | resetSlots(); | ||
| + | fillEquip(); | ||
| + | |||
| + | // ===== BONUS ===== | ||
| + | function displayStats(select, | ||
| + | let v=select.value; | ||
| + | let el=document.getElementById(id); | ||
| + | if(v==="" | ||
| + | let e=equipments[v]; | ||
| + | let txt=""; | ||
| + | for(let s in e.stats){ | ||
| + | let val=e.stats[s]; | ||
| + | txt+=val> | ||
| + | } | ||
| + | el.innerHTML=txt; | ||
| + | } | ||
| + | |||
| + | const slotToStatId = { | ||
| + | head:" | ||
| + | neck:" | ||
| + | cape:" | ||
| + | rightHand:" | ||
| + | leftHand:" | ||
| + | body:" | ||
| + | ring:" | ||
| + | feet:" | ||
| + | }; | ||
| + | |||
| + | Object.entries(slots).forEach(([k, | ||
| + | s.addEventListener(" | ||
| + | displayStats(s, | ||
| + | checkLimit(); | ||
| + | autoCalculate(); | ||
| + | }); | ||
| + | }); | ||
| + | |||
| + | // ===== LIMIT ===== | ||
| + | function checkLimit(){ | ||
| + | let count=0; | ||
| + | Object.entries(slots).forEach(([k, | ||
| + | if(k!==" | ||
| + | }); | ||
| + | |||
| + | if(count> | ||
| + | limitWarn.innerText=" | ||
| + | Object.entries(slots).forEach(([k, | ||
| + | if(k!==" | ||
| + | }); | ||
| + | }else{ | ||
| + | limitWarn.innerText=""; | ||
| + | Object.values(slots).forEach(s=> | ||
| + | } | ||
| } | } | ||
| Ligne 287: | Ligne 385: | ||
| let char={...races[raceSelect.value]}; | let char={...races[raceSelect.value]}; | ||
| + | // stats investies | ||
| for(let s in costTable){ | for(let s in costTable){ | ||
| let v=+document.getElementById(s).value||0; | let v=+document.getElementById(s).value||0; | ||
| Ligne 292: | Ligne 391: | ||
| } | } | ||
| + | // equip | ||
| + | Object.values(slots).forEach(sel=> | ||
| + | if(sel.value==="" | ||
| + | let e=equipments[sel.value]; | ||
| + | for(let s in e.stats){ | ||
| + | char[s]=(char[s]||0)+e.stats[s]; | ||
| + | } | ||
| + | }); | ||
| + | |||
| + | // ===== ESQUIVE ===== | ||
| let esquive=Math.round(char.agi*0.75+char.cc*0.25); | let esquive=Math.round(char.agi*0.75+char.cc*0.25); | ||
| + | let checked=[...document.querySelectorAll(" | ||
| + | |||
| + | if(checked.includes(" | ||
| + | esquive=Math.round(char.agi*0.85+char.cc*0.15); | ||
| + | |||
| + | if(checked.includes(" | ||
| + | esquive=Math.round(char.cc*0.85+char.agi*0.15); | ||
| + | |||
| + | if(checked.includes(" | ||
| + | esquive+=1; | ||
| + | |||
| + | // ===== MAGIE ===== | ||
| let jetFM = char.fm * 2; | let jetFM = char.fm * 2; | ||
| - | let sorts=""; | + | let sorts = ""; |
| - | for(let lvl=1; | + | for(let lvl=1; lvl<=5; lvl++){ |
| - | let seuil=6+6*lvl; | + | let seuil = 6 + 6 * lvl; |
| - | sorts+=`Niv ${lvl} : ${jetFM> | + | let reussite |
| + | |||
| + | sorts += `Niveau ${lvl} → Seuil ${seuil} | Jet ${jetFM} ${reussite}\n`; | ||
| } | } | ||
| + | // ===== AFFICHAGE ===== | ||
| result.textContent = | result.textContent = | ||
| + | "===== STATS =====\n" | ||
| JSON.stringify(char, | JSON.stringify(char, | ||
| - | "\n⚡ A : " | + | |
| + | "\n\n⚔ CC : " | ||
| + | " | ||
| + | "\n✨ FM : " | ||
| " | " | ||
| - | " | + | |
| + | " | ||
| + | "Jet FM (x2) : " | ||
| + | sorts; | ||
| } | } | ||
| + | |||
| + | // ===== AUTO ===== | ||
| + | function autoCalculate(){ | ||
| + | updateCost(); | ||
| + | calculate(); | ||
| + | } | ||
| + | |||
| + | // events stats | ||
| + | document.querySelectorAll("# | ||
| + | i.addEventListener(" | ||
| + | }); | ||
| + | |||
| + | // passifs | ||
| + | document.querySelectorAll(" | ||
| + | s.addEventListener(" | ||
| + | }); | ||
| + | |||
| + | // ===== RESET ===== | ||
| + | function resetAll(){ | ||
| + | |||
| + | document.querySelectorAll("# | ||
| + | |||
| + | Object.values(slots).forEach(s=> | ||
| + | s.value=""; | ||
| + | s.disabled=false; | ||
| + | }); | ||
| + | |||
| + | document.querySelectorAll(" | ||
| + | |||
| + | resetSlots(); | ||
| + | fillEquip(); | ||
| + | displayBase(); | ||
| + | checkLimit(); | ||
| + | autoCalculate(); | ||
| + | } | ||
| + | |||
| + | // init | ||
| + | autoCalculate(); | ||
| + | |||
| + | |||
| // ===== POUSSEE ===== | // ===== POUSSEE ===== | ||
brouillon6.1777671825.txt.gz · Dernière modification : 2026/05/01 23:43 de nanaki
