Outils pour utilisateurs

Outils du site


brouillon8

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
brouillon8 [2026/04/28 18:49] nanakibrouillon8 [2026/04/28 19:04] (Version actuelle) nanaki
Ligne 1: Ligne 1:
-Essai  +Essai 3
  
 <html> <html>
Ligne 8: Ligne 7:
  
 <style> <style>
-body { +body { font-family: Arial; background:#0b1a13; color:#e0d3a3; padding:20px;
-    font-family: Arial; +h1,h2 { color:gold;
-    background: #0b1a13; +.box { border:1px solid gold; padding:10px; margin-bottom:15px;
-    color: #e0d3a3; +select,input { margin:3px;} 
-    padding: 20px; +button { padding:8px; margin:5px; background:gold; border:none;}
-+
-h1,h2 { color: gold; } +
-.box { +
-    border: 1px solid gold; +
-    padding: 12px; +
-    margin-bottom: 15px; +
-+
-select, input { +
-    margin: 5px; +
-+
-button { +
-    padding:10px; +
-    margin:5px; +
-    background:gold; +
-    border:none; +
-    cursor:pointer; +
-}+
 </style> </style>
 </head> </head>
Ligne 35: Ligne 17:
 <body> <body>
  
-<h1>🧝 Simulateur RPG</h1>+<h1>Simulateur</h1>
  
 <div class="box"> <div class="box">
-<h2>Race</h2>+Race
 <select id="race"></select> <select id="race"></select>
 </div> </div>
  
 <div class="box"> <div class="box">
-<h2>Stats à améliorer</h2>+Stats
 <div id="stats"></div> <div id="stats"></div>
 </div> </div>
  
 <div class="box"> <div class="box">
-<h2>Équipement</h2> +Équipement<br>
 Tête <select id="head"></select><br> Tête <select id="head"></select><br>
 Cou <select id="neck"></select><br> Cou <select id="neck"></select><br>
Ligne 57: Ligne 38:
 Corps <select id="body"></select><br> Corps <select id="body"></select><br>
 Anneau <select id="ring"></select><br> Anneau <select id="ring"></select><br>
-Pieds <select id="feet"></select><br> +Pieds <select id="feet"></select>
 </div> </div>
  
 <div class="box"> <div class="box">
-<h2>Compétences (max 15)</h2>+Compétences
 <div id="skills"></div> <div id="skills"></div>
 </div> </div>
  
 <button onclick="calculate()">Calculer</button> <button onclick="calculate()">Calculer</button>
-<button onclick="exportWiki()">📤 Export DokuWiki</button>+<button onclick="exportWiki()">Export Wiki</button>
  
-<div class="box"> 
-<h2>Résultat</h2> 
 <pre id="result"></pre> <pre id="result"></pre>
-</div> 
  
 <script> <script>
  
-// ================= RACES =================+// ===== DATA ===== 
 const races = { const races = {
 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}, 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},
Ligne 85: Ligne 63:
 }; };
  
-// ================= COST =================+
 const costTable = { const costTable = {
-cc:[100,50,30], ct:[110,50,30], f:[120,55,30], e:[120,55,30], +cc:[100,50,30], f:[120,55,30], e:[120,55,30], m:[110,55,35], 
-agi:[95,45,25], m:[110,55,35], pv:[4,2,1], pm:[5,3,1], +pv:[4,2,1], mvt:[100,50,30]
-fm:[100,50,30], rm:[50,40,20], r:[40,30,15], mvt:[100,50,30], p:[110,85,78]+
 }; };
  
-function cost(stat,n){ 
-if(n<=0) return 0; 
-let [B,M1,M2]=costTable[stat]; 
-let total=B,prev=B; 
-for(let i=2;i<=n;i++){ 
-if(i<=3) prev+=M1; 
-else prev+=M2; 
-total+=prev; 
-} 
-return total; 
-} 
- 
-// ================= EQUIPEMENTS ================= 
 const equipments = [ const equipments = [
-{name:"Armure sylvestre",race:"Elfe",slot:"torse",stats:{e:2,mvt:-1},magicBlock:true}, 
 {name:"Lance elfe",race:"Elfe",slot:"weapon",stats:{cc:1,f:1},magicBlock:true}, {name:"Lance elfe",race:"Elfe",slot:"weapon",stats:{cc:1,f:1},magicBlock:true},
-{name:"Targe renforcée",race:"Nain",slot:"defensive",stats:{cc:1,pv:10},magicBlock:true}, +{name:"Targe",race:"Nain",slot:"defensive",stats:{cc:1,pv:10},magicBlock:true}, 
-{name:"Bottes Tâlroval",race:"Elfe",slot:"feet",stats:{mvt:2}}, +{name:"Armure elfe",race:"Elfe",slot:"torse",stats:{e:2,mvt:-1},magicBlock:true}, 
-{name:"Arc long",race:"all",slot:"weapon2h",stats:{ct:2,f:-1,cc:-2}}, +{name:"Arc long",race:"all",slot:"weapon2h",stats:{ct:2}}
-{name:"Gladius",race:"all",slot:"weapon",stats:{cc:1}}, +
-{name:"Bouclier Parma",race:"all",slot:"defensive",stats:{e:1,agi:-2}}, +
-{name:"Collier tressé",race:"all",slot:"neck",stats:{pv:5,pm:5}}, +
-{name:"Cape de chasse",race:"all",slot:"cape",stats:{ct:1}}, +
-{name:"Anneau F",race:"all",slot:"ring",stats:{f:1}}+
 ]; ];
  
-// ================= SKILLS ================= +const skills = ["Fulgurance","Duelliste","Encaisser","Anguille"]; 
-const skills = [ + 
-"Fulgurance","Duelliste","Couverture","Encaisser","Anguille", +// ===== DOM ===== 
-"Maître bretteur","Inépuisable","Coup d'épaule","Croc-en-jambe", +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("feet");
  
-// ================= INIT =================+// ===== INIT =====
  
 // race // race
 for(let r in races){ for(let r in races){
-race.innerHTML += `<option>${r}</option>`;+raceSelect.innerHTML += `<option>${r}</option>`;
 } }
  
 // stats // stats
 for(let s in costTable){ for(let s in costTable){
-stats.innerHTML += `${s.toUpperCase()} <input type="number" id="${s}" value="0"><br>`;+statsDiv.innerHTML += `${s} <input type="number" id="${s}" value="0"><br>`;
 } }
  
Ligne 143: Ligne 109:
 }); });
  
-// slots +// slots reset 
-const slotMap = +function resetSlots()
-head:"head", neck:"neck", cape:"cape", +[head,neck,cape,rightHand,leftHand,body,ring,feet].forEach(sel=>{ 
-rightHand:["weapon","weapon2h"], +sel.innerHTML = `<option value="">--</option>`;
-leftHand:"defensive", body:"torse", +
-ring:"ring", feet:"feet" +
-}; +
- +
-function initSlots(){ +
-Object.keys(slotMap).forEach(id=>{ +
-document.getElementById(id).innerHTML = `<option value="">-- Aucun --</option>`;+
 }); });
 } }
  
-function populateEquip(){ +// remplir équipements 
-let r = race.value;+function fillEquip(){ 
 +let r = raceSelect.value;
  
-equipments.forEach((item,i)=>{ +equipments.forEach((e,i)=>{ 
-if(item.race!=="all" && item.race!==r) return;+if(e.race!=="all" && e.race!==r) return;
  
-for(let slot in slotMap){ +if(e.slot==="weapon"||e.slot==="weapon2h") rightHand.innerHTML += `<option value="${i}">${e.name}</option>`
-let s slotMap[slot]+if(e.slot==="defensive"leftHand.innerHTML += `<option value="${i}">${e.name}</option>`; 
-if(Array.isArray(s) ? s.includes(item.slot) : s===item.slot){ +if(e.slot==="torse"body.innerHTML += `<option value="${i}">${e.name}</option>`;
-document.getElementById(slot).innerHTML += `<option value="${i}">${item.name}</option>`; +
-+
-}+
 }); });
 } }
  
-race.addEventListener("change", ()=>{ +// update 
-initSlots(); +raceSelect.addEventListener("change", ()=>{ 
-populateEquip();+resetSlots(); 
 +fillEquip();
 }); });
  
-initSlots(); +resetSlots(); 
-populateEquip();+fillEquip();
  
-// ================= 2H =================+// 2 mains
 rightHand.addEventListener("change", ()=>{ rightHand.addEventListener("change", ()=>{
-let val = rightHand.value; +let = rightHand.value; 
-if(val===""){ leftHand.disabled=false; return;} +if(v===""){ leftHand.disabled=false; return;} 
-let item = equipments[val];+ 
 +let item = equipments[v];
 if(item.slot==="weapon2h"){ if(item.slot==="weapon2h"){
 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,v); 
 } }
  
 // equip // equip
-let slots = [head,neck,cape,rightHand,leftHand,body,feet]+[rightHand,leftHand,body].forEach(sel=>{
-let count=0; +
- +
-slots.forEach(sel=>{+
 if(sel.value==="") return; if(sel.value==="") return;
-count++; +let = 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>3){ alert("Max 3 objets !"); return; } 
- 
-if(ring.value!==""){ 
-let item = equipments[ring.value]; 
-for(let stat in item.stats){ 
-char[stat]+=item.stats[stat]; 
-} 
-} 
- 
-// skills 
-let sk = document.querySelectorAll(".sk:checked"); 
-if(sk.length>15){ alert("Max 15 compétences"); return; } 
  
 // affichage // affichage
-result.innerText = +result.innerText = JSON.stringify(char,null,2);
-Object.entries(char).map(([k,v])=>k.toUpperCase()+": "+v).join("\n") + +
-"\n\nPI: "+totalPi + +
-"\nCompétences: "+sk.length+"/15"+
-"\nMagie: "+(magicBlocked?"❌ BLOQUÉE":"✔ OK");+
 } }
  
-// ================= EXPORT =================+// ===== EXPORT =====
 function exportWiki(){ function exportWiki(){
  
-let txt="==== Build ====\n\n"; +let txt="=== Build ===\n"; 
-txt+="=== Race ===\n"+race.value+"\n\n"; +txt+="Race"+raceSelect.value+"\n\n";
- +
-txt+="=== Stats ===\n"; +
-for(let s in costTable){ +
-let v=document.getElementById(s).value; +
-if(v>0) txt+="  * +"+v+" "+s+"\n"; +
-+
- +
-txt+="\n=== Équipement ===\n"; +
- +
-let map = { +
-"Tête":head,"Cou":neck,"Dos":cape, +
-"Main droite":rightHand,"Main gauche":leftHand, +
-"Corps":body,"Anneau":ring,"Pieds":feet +
-}; +
- +
-for(let k in map){ +
-if(map[k].value!==""){ +
-txt+="  * "+k+" : "+equipments[map[k].value].name+"\n"; +
-+
-}+
  
-txt+="\n=== Compétences ===\n"; 
 document.querySelectorAll(".sk:checked").forEach(s=>{ document.querySelectorAll(".sk:checked").forEach(s=>{
-txt+="  * "+s.parentNode.innerText+"\n";+txt+="* "+s.parentNode.innerText+"\n";
 }); });
  
brouillon8.1777394993.txt.gz · Dernière modification : 2026/04/28 18:49 de nanaki