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/23 11:41] nanakibrouillon10 [2026/04/29 13:54] (Version actuelle) nanaki
Ligne 1: Ligne 1:
-Version finale distance  
- 
  
 <html> <html>
 +<head>
 +<meta charset="UTF-8">
 +<title>Simulateur RPG</title>
  
 <style> <style>
-body { font-family: Arial; +body { font-family: Arial; background:#0b1a13color:#e0d3a3padding:20px;} 
- +h1,h2 { color:gold;
-table { border-collapsecollapsewidth100%font-size13px; } +.box { border:1px solid gold; padding:10px; margin-bottom:15px;} 
-tdth { border: 1px solid #ccc; padding: 5px; } +select,input margin:3px;} 
-th background#f2f2f2; } +button padding:8px; margin:5px; background:gold; border:none;}
- +
-.controls { margin-bottom:10px; }+
 </style> </style>
 </head> </head>
Ligne 17: Ligne 16:
 <body> <body>
  
-<div class="controls">+<h1>Simulateur</h1>
  
-Points : <span id="points">0</span> / 15+<div class="box"> 
 +Race 
 +<select id="race"></select> 
 +</div>
  
-<br><br>+<div class="box"> 
 +Stats 
 +<div id="stats"></div> 
 +</div>
  
-Recherche : +<div class="box"> 
-<input type="text" id="searchplaceholder="Nom, effet..."> +Équipement<br> 
- +Tête <select id="head"></select><br> 
-Filtre type : +Cou <select id="neck"></select><br> 
-<select id="filterType"> +Dos <select id="cape"></select><br
-<option value="all">Tous</option+Main droite <select id="rightHand"></select><br
-<option value="DIS">Distance</option+Main gauche <select id="leftHand"></select><br
-<option value="P">Passif</option+Corps <select id="body"></select><br
-</select>+Anneau <select id="ring"></select><br
 +Pieds <select id="feet"></select
 +</div>
  
 +<div class="box">
 +Compétences
 +<div id="skills"></div>
 </div> </div>
  
-<table id="skills">+<button onclick="calculate()">Calculer</button> 
 +<button onclick="exportWiki()">Export Wiki</button>
  
-<thead> +<pre id="result"></pre>
-<tr> +
-<th></th> +
-<th>Race</th> +
-<th>Nom</th> +
-<th>Coût</th> +
-<th>Type</th> +
-<th>Effet</th> +
-<th>Portée</th> +
-<th>Niv</th> +
-</tr> +
-</thead>+
  
-<tbody>+<script>
  
-<!-- ===== NIVEAU 1 ===== -->+// ===== DATA ===== 
 +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}, 
 +Nain:{cc:11,ct:8,f:11,e:6,agi:6,p:4,mvt:4,pv:50,pm:15,r:5,rm:4,fm:10,m:3} 
 +};
  
-<tr data-type="DIS"> +const costTable { 
-<td><input type="checkbox" class="skill"></td> +cc:[100,50,30], f:[120,55,30], e:[120,55,30], m:[110,55,35], 
-<td>Communs</td><td>Arme improvisée</td><td>2 MP</td><td>Jet</td><td>-2</td><td>min 2</td><td>1</td> +pv:[4,2,1], mvt:[100,50,30] 
-</tr>+};
  
-<tr data-type="DIS"> +const equipments 
-<td><input type="checkboxclass="skill"></td> +{name:"Lance elfe",race:"Elfe",slot:"weapon",stats:{cc:1,f:1},magicBlock:true}, 
-<td>Communs</td><td>Bout portant</td><td>MP</td><td>Jet</td><td>/</td><td>max 1</td><td>1</td> +{name:"Targe",race:"Nain",slot:"defensive",stats:{cc:1,pv:10},magicBlock:true}, 
-</tr>+{name:"Armure elfe",race:"Elfe",slot:"torse",stats:{e:2,mvt:-1},magicBlock:true}, 
 +{name:"Arc long",race:"all",slot:"weapon2h",stats:{ct:2}} 
 +];
  
-<tr data-type="DIS"+const skills ["Fulgurance","Duelliste","Encaisser","Anguille"];
-<td><input type="checkboxclass="skill"></td> +
-<td>Communs</td><td>Tir ajusté</td><td>2 MP</td><td>Distance</td><td>Avantage</td><td>min 2</td><td>1</td> +
-</tr>+
  
-<tr data-type="DIS"> +// ===== DOM ====
-<td><input type="checkboxclass="skill"></td> +const raceSelect document.getElementById("race"); 
-<td>Communs</td><td>Tir épuisant</td><td>/</td><td>Tir munitions</td><td>Essoufflement (X/3)</td><td>min 2</td><td>1</td> +const statsDiv document.getElementById("stats"); 
-</tr>+const skillsDiv = document.getElementById("skills");
  
-<tr data-type="DIS"> +const head document.getElementById("head"); 
-<td><input type="checkboxclass="skill"></td> +const neck document.getElementById("neck"); 
-<td>Communs</td><td>Tir précis</td><td>2 MP</td><td>Distance</td><td>+4 toucher -3 dégâts</td><td>min 2</td><td>1</td> +const cape document.getElementById("cape"); 
-</tr>+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");
  
-<tr data-type="DIS"> +// ===== INIT =====
-<td><input type="checkbox" class="skill"></td> +
-<td>Communs</td><td>Tir violent</td><td>2 MP</td><td>Distance</td><td>-6 toucher +2 dégâts</td><td>min 2</td><td>1</td> +
-</tr>+
  
-<!-- ===== NIVEAU 2 ===== -->+// race 
 +for(let r in races){ 
 +raceSelect.innerHTML += `<option>${r}</option>`; 
 +}
  
-<tr data-type="DIS"+// stats 
-<td><input type="checkboxclass="skill"></td+for(let s in costTable){ 
-<td>Communs</td><td>Jet de sable</td><td>4 MP, 1 Mvt</td><td>Distance</td><td>0</td><td>max 1</td><td>2</td> +statsDiv.innerHTML += `${s} <input type="numberid="${s}value="0"><br>`; 
-</tr>+}
  
-<tr data-type="DIS"+// skills 
-<td><input type="checkbox" class="skill"></td> +skills.forEach(s=>{ 
-<td>Communs</td><td>Tir à la cheville</td><td>6 MP</td><td>Tir munitions</td><td>Ralentissement(x1D2)</td><td>min 2</td><td>2</td> +skillsDiv.innerHTML += `<label><input type="checkbox" class="sk"> ${s}</label><br>`; 
-</tr>+});
  
-<tr data-type="DIS"+// slots reset 
-<td><input type="checkbox" class="skill"></td+function resetSlots(){ 
-<td>Communs</td><td>Tir handicapant</td><td>4 MP</td><td>Distance</td><td>Vulnérabilité (xX)</td><td>min 2</td><td>2</td> +[head,neck,cape,rightHand,leftHand,body,ring,feet].forEach(sel=>{ 
-</tr>+sel.innerHTML = `<option value="">--</option>`; 
 +}); 
 +}
  
-<!-- ===== NIVEAU 3 ===== -->+// remplir équipements 
 +function fillEquip(){ 
 +let r raceSelect.value;
  
-<tr data-type="DIS"+equipments.forEach((e,i)=>{ 
-<td><input type="checkboxclass="skill"></td> +if(e.race!=="all&& e.race!==r) return;
-<td>Communs</td><td>Jet infusé</td><td>10 MP</td><td>Jet</td><td>M/3</td><td>min 2</td><td>3</td> +
-</tr>+
  
-<!-- ===== NIVEAU 4 ===== -->+if(e.slot==="weapon"||e.slot==="weapon2h") rightHand.innerHTML += `<option value="${i}">${e.name}</option>`; 
 +if(e.slot==="defensive") leftHand.innerHTML +`<option value="${i}">${e.name}</option>`; 
 +if(e.slot==="torse") body.innerHTML +`<option value="${i}">${e.name}</option>`; 
 +}); 
 +}
  
-<tr data-type="P"> +// update 
-<td><input type="checkboxclass="skill"></td+raceSelect.addEventListener("change", ()=>{ 
-<td>Communs</td><td>Escarmoucheur</td><td>/</td><td>Passif</td><td>/</td><td>/</td><td>4</td> +resetSlots(); 
-</tr>+fillEquip(); 
 +});
  
-<tr data-type="P"> +resetSlots(); 
-<td><input type="checkbox" class="skill"></td> +fillEquip();
-<td>Communs</td><td>Lanceur</td><td>/</td><td>Passif</td><td>/</td><td>/</td><td>4</td> +
-</tr>+
  
-<tr data-type="P"> +// 2 mains 
-<td><input type="checkboxclass="skill"></td> +rightHand.addEventListener("change", ()=>{ 
-<td>Communs</td><td>Tireur d'élite</td><td>/</td><td>Passif</td><td>/</td><td>/</td><td>4</td> +let v = rightHand.value; 
-</tr>+if(v===""){ leftHand.disabled=false; return;}
  
-</tbody> +let item = equipments[v]; 
-</table>+if(item.slot==="weapon2h"){ 
 +leftHand.value=""; 
 +leftHand.disabled=true; 
 +}else{ 
 +leftHand.disabled=false; 
 +
 +});
  
-<script>+// ===== 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:checked").length; +let v = parseInt(document.getElementById(s).value)||0; 
-if(total > max){ cb.checked = false; return; } +char[s]+=v; 
-points.innerText = total+
-});+ 
 +// equip 
 +[rightHand,leftHand,body].forEach(sel=>{ 
 +if(sel.value===""return; 
 +let 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 JSON.stringify(char,null,2); 
-let s search.value.toLowerCase();+}
  
-document.querySelectorAll("#skills tbody tr").forEach(r=>+// ===== EXPORT ===== 
-let txt = r.innerText.toLowerCase(); +function exportWiki(){ 
-let ok (t=="all"||r.dataset.type==t) + 
-&& txt.includes(s)+let txt="=== Build ===\n"; 
-r.style.display ok ? "" "none";+txt+="Race: "+raceSelect.value+"\n\n"
 + 
 +document.querySelectorAll(".sk:checked").forEach(s=>
 +txt+=""+s.parentNode.innerText+"\n";
 }); });
-} 
  
-filterType.onchange filter+result.innerText=txt
-search.oninput = filter;+}
  
 </script> </script>
brouillon10.1776937272.txt.gz · Dernière modification : 2026/04/23 11:41 de nanaki