brouillon8
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 | ||
| brouillon8 [2026/04/28 18:49] – nanaki | brouillon8 [2026/04/28 19:04] (Version actuelle) – nanaki | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| - | Essai | + | Essai 3 |
| < | < | ||
| Ligne 8: | Ligne 7: | ||
| < | < | ||
| - | body { | + | body { font-family: |
| - | | + | h1,h2 { color: |
| - | | + | .box { border:1px solid gold; padding:10px; margin-bottom: |
| - | | + | select, |
| - | | + | button { padding:8px; margin:5px; background: |
| - | } | + | |
| - | h1,h2 { color: gold; } | + | |
| - | .box { | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | } | + | |
| - | select, input { | + | |
| - | | + | |
| - | } | + | |
| - | button { | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | cursor: | + | |
| - | } | + | |
| </ | </ | ||
| </ | </ | ||
| Ligne 35: | Ligne 17: | ||
| < | < | ||
| - | <h1>🧝 Simulateur | + | < |
| <div class=" | <div class=" | ||
| - | <h2>Race</h2> | + | Race |
| <select id=" | <select id=" | ||
| </ | </ | ||
| <div class=" | <div class=" | ||
| - | <h2>Stats à améliorer</ | + | Stats |
| <div id=" | <div id=" | ||
| </ | </ | ||
| <div class=" | <div class=" | ||
| - | <h2>Équipement< | + | Équipement< |
| Tête <select id=" | Tête <select id=" | ||
| Cou <select id=" | Cou <select id=" | ||
| Ligne 57: | Ligne 38: | ||
| Corps <select id=" | Corps <select id=" | ||
| Anneau <select id=" | Anneau <select id=" | ||
| - | Pieds <select id=" | + | Pieds <select id=" |
| </ | </ | ||
| <div class=" | <div class=" | ||
| - | <h2>Compétences | + | Compétences |
| <div id=" | <div id=" | ||
| </ | </ | ||
| <button onclick=" | <button onclick=" | ||
| - | <button onclick=" | + | <button onclick=" |
| - | <div class=" | ||
| - | < | ||
| <pre id=" | <pre id=" | ||
| - | </ | ||
| < | < | ||
| - | // ================= RACES ================= | + | // ===== DATA ===== |
| const races = { | const races = { | ||
| Elfe: | Elfe: | ||
| Ligne 85: | Ligne 63: | ||
| }; | }; | ||
| - | // ================= COST ================= | + | |
| const costTable = { | const costTable = { | ||
| - | cc:[100,50,30], ct:[110,50,30], f: | + | cc: |
| - | agi: | + | pv:[4,2,1], mvt: |
| - | fm: | + | |
| }; | }; | ||
| - | function cost(stat, | ||
| - | if(n<=0) return 0; | ||
| - | let [B, | ||
| - | let total=B, | ||
| - | for(let i=2; | ||
| - | if(i<=3) prev+=M1; | ||
| - | else prev+=M2; | ||
| - | total+=prev; | ||
| - | } | ||
| - | return total; | ||
| - | } | ||
| - | |||
| - | // ================= EQUIPEMENTS ================= | ||
| const equipments = [ | const equipments = [ | ||
| - | {name:" | ||
| {name:" | {name:" | ||
| - | {name:" | + | {name:" |
| - | {name:" | + | {name:" |
| - | {name:" | + | {name:" |
| - | {name:" | + | |
| - | {name:" | + | |
| - | {name:" | + | |
| - | {name:" | + | |
| - | {name:" | + | |
| ]; | ]; | ||
| - | // ================= SKILLS ================= | + | const skills = [" |
| - | const skills = [ | + | |
| - | " | + | // ===== DOM ===== |
| - | "Maître bretteur","Inépuisable","Coup d' | + | const raceSelect = document.getElementById("race"); |
| - | "Arme infusée","Attaque drainante","Frappe à la tempe", | + | const statsDiv = document.getElementById("stats"); |
| - | "Attaque violente","Attaque précise","Bousculade" | + | const skillsDiv = document.getElementById("skills"); |
| - | ]; | + | |
| + | const head = document.getElementById("head"); | ||
| + | const neck = document.getElementById("neck"); | ||
| + | const cape = document.getElementById("cape"); | ||
| + | const rightHand = document.getElementById("rightHand"); | ||
| + | const leftHand = document.getElementById("leftHand"); | ||
| + | const body = document.getElementById("body"); | ||
| + | const ring = document.getElementById("ring"); | ||
| + | const feet = document.getElementById(" | ||
| - | // ================= INIT ================= | + | // ===== INIT ===== |
| // race | // race | ||
| for(let r in races){ | for(let r in races){ | ||
| - | race.innerHTML += `< | + | raceSelect.innerHTML += `< |
| } | } | ||
| // stats | // stats | ||
| for(let s in costTable){ | for(let s in costTable){ | ||
| - | stats.innerHTML += `${s.toUpperCase()} <input type=" | + | statsDiv.innerHTML += `${s} <input type=" |
| } | } | ||
| Ligne 143: | Ligne 109: | ||
| }); | }); | ||
| - | // slots | + | // slots reset |
| - | const slotMap = { | + | function resetSlots(){ |
| - | head:" | + | [head, |
| - | rightHand: | + | sel.innerHTML = `<option value=""> |
| - | leftHand:" | + | |
| - | ring:" | + | |
| - | }; | + | |
| - | + | ||
| - | function initSlots(){ | + | |
| - | Object.keys(slotMap).forEach(id=>{ | + | |
| - | document.getElementById(id).innerHTML = `<option value=""> | + | |
| }); | }); | ||
| } | } | ||
| - | function | + | // remplir équipements |
| - | let r = race.value; | + | function |
| + | let r = raceSelect.value; | ||
| - | equipments.forEach((item,i)=>{ | + | equipments.forEach((e,i)=>{ |
| - | if(item.race!==" | + | if(e.race!==" |
| - | for(let slot in slotMap){ | + | if(e.slot===" |
| - | let s = slotMap[slot]; | + | if(e.slot===" |
| - | if(Array.isArray(s) ? s.includes(item.slot) : s===item.slot){ | + | if(e.slot===" |
| - | document.getElementById(slot).innerHTML += `<option value=" | + | |
| - | } | + | |
| - | } | + | |
| }); | }); | ||
| } | } | ||
| - | race.addEventListener(" | + | // update |
| - | initSlots(); | + | raceSelect.addEventListener(" |
| - | populateEquip(); | + | resetSlots(); |
| + | fillEquip(); | ||
| }); | }); | ||
| - | initSlots(); | + | resetSlots(); |
| - | populateEquip(); | + | fillEquip(); |
| - | // ================= 2H ================= | + | // 2 mains |
| rightHand.addEventListener(" | rightHand.addEventListener(" | ||
| - | let val = rightHand.value; | + | let v = rightHand.value; |
| - | if(val==="" | + | if(v==="" |
| - | let item = equipments[val]; | + | |
| + | let item = equipments[v]; | ||
| if(item.slot===" | if(item.slot===" | ||
| leftHand.value=""; | leftHand.value=""; | ||
| Ligne 193: | Ligne 152: | ||
| }); | }); | ||
| - | // ================= CALCUL | + | // ===== CALCUL ===== |
| function calculate(){ | function calculate(){ | ||
| - | let char = {...races[race.value]}; | + | let char = {...races[raceSelect.value]}; |
| - | let totalPi=0; | + | let total = 0; |
| - | let magicBlocked=false; | + | |
| // stats | // stats | ||
| for(let s in costTable){ | for(let s in costTable){ | ||
| - | let v=parseInt(document.getElementById(s).value)||0; | + | let v = parseInt(document.getElementById(s).value)||0; |
| char[s]+=v; | char[s]+=v; | ||
| - | totalPi+=cost(s, | ||
| } | } | ||
| // equip | // equip | ||
| - | let slots = [head, | + | [rightHand, |
| - | let count=0; | + | |
| - | + | ||
| - | slots.forEach(sel=> | + | |
| if(sel.value==="" | if(sel.value==="" | ||
| - | count++; | + | let e = equipments[sel.value]; |
| - | let item = equipments[sel.value]; | + | for(let stat in e.stats){ |
| - | if(item.magicBlock) magicBlocked=true; | + | char[stat]=(char[stat]||0)+e.stats[stat]; |
| - | for(let stat in item.stats){ | + | |
| - | char[stat]=(char[stat]||0)+item.stats[stat]; | + | |
| } | } | ||
| }); | }); | ||
| - | |||
| - | if(count> | ||
| - | |||
| - | if(ring.value!=="" | ||
| - | let item = equipments[ring.value]; | ||
| - | for(let stat in item.stats){ | ||
| - | char[stat]+=item.stats[stat]; | ||
| - | } | ||
| - | } | ||
| - | |||
| - | // skills | ||
| - | let sk = document.querySelectorAll(" | ||
| - | if(sk.length> | ||
| // affichage | // affichage | ||
| - | result.innerText = | + | result.innerText = JSON.stringify(char,null,2); |
| - | Object.entries(char).map(([k,v])=> | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| } | } | ||
| - | // ================= EXPORT | + | // ===== EXPORT ===== |
| function exportWiki(){ | function exportWiki(){ | ||
| - | let txt="==== Build ====\n\n"; | + | let txt=" |
| - | txt+="=== Race ===\n"+race.value+" | + | txt+=" |
| - | + | ||
| - | txt+=" | + | |
| - | for(let s in costTable){ | + | |
| - | let v=document.getElementById(s).value; | + | |
| - | if(v>0) txt+=" | + | |
| - | } | + | |
| - | + | ||
| - | txt+=" | + | |
| - | + | ||
| - | let map = { | + | |
| - | " | + | |
| - | "Main droite": | + | |
| - | " | + | |
| - | }; | + | |
| - | + | ||
| - | for(let k in map){ | + | |
| - | if(map[k].value!=="" | + | |
| - | txt+=" | + | |
| - | } | + | |
| - | } | + | |
| - | txt+=" | ||
| document.querySelectorAll(" | document.querySelectorAll(" | ||
| - | txt+=" | + | txt+=" |
| }); | }); | ||
brouillon8.1777394993.txt.gz · Dernière modification : 2026/04/28 18:49 de nanaki
