Outils pour utilisateurs

Outils du site


simulateur

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
simulateur [2026/04/30 00:22] nanakisimulateur [2026/05/01 10:18] (Version actuelle) nanaki
Ligne 1: Ligne 1:
 +Voici un simulateur en version beta, n'hésitez pas à faire vos remarques sur le discord ou le forum.
 +
 <html> <html>
 <head> <head>
Ligne 89: Ligne 91:
 // ===== RACES ===== // ===== RACES =====
 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,a:2}, 
-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}, +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,a:2}, 
-Géant:{cc:9,ct:10,f:12,e:4,agi:7,p:4,mvt:5,pv:65,pm:20,r:5,rm:5,fm:6,m:5}, +Géant:{cc:9,ct:10,f:12,e:4,agi:7,p:4,mvt:5,pv:65,pm:20,r:5,rm:5,fm:6,m:5,a:2}, 
-Olympien:{cc:10,ct:9,f:10,e:5,agi:8,p:4,mvt:5,pv:60,pm:30,r:5,rm:6,fm:7,m:5}, +Olympien:{cc:10,ct:9,f:10,e:5,agi:8,p:4,mvt:5,pv:60,pm:30,r:5,rm:6,fm:7,m:5,a:2}, 
-HS:{cc:8,ct:9,f:7,e:3,agi:11,p:5,mvt:6,pv:45,pm:40,r:3,rm:7,fm:9,m:5}+HS:{cc:8,ct:9,f:7,e:3,agi:11,p:5,mvt:6,pv:45,pm:40,r:3,rm:7,fm:9,m:5,a:2}
 }; };
  
 // ===== COST ===== // ===== COST =====
 const costTable = { const costTable = {
 +a:[800,200,100],
 cc:[100,50,30], ct:[110,50,30], cc:[100,50,30], ct:[110,50,30],
 f:[120,55,30], e:[120,55,30], f:[120,55,30], e:[120,55,30],
Ligne 113: Ligne 116:
 // ===== PASSIFS ===== // ===== PASSIFS =====
 const skills = [ const skills = [
-{name:"Fulgurance",desc:"+1 esquive"},+{name:"Fulgurance",desc:"+1 toucher au cac + 1 esquive tous les 5 mouvements"},
 {name:"Couverture",desc:"85% CC / 15% AGI"}, {name:"Couverture",desc:"85% CC / 15% AGI"},
 {name:"Réflexes fulgurants",desc:"85% AGI / 15% CC"}, {name:"Réflexes fulgurants",desc:"85% AGI / 15% CC"},
 +{name:"Berserker",desc:"+1 toucher au cac tous les 10 pv perdus"},
 +{name:"Griffes",desc:"+3 dégâts au poings"},
 {name:"Anguille",desc:"Avantage esquive"} {name:"Anguille",desc:"Avantage esquive"}
 ]; ];
  
-// ===== ÉQUIPEMENTS ===== 
 const equipments = [ const equipments = [
  
Ligne 141: Ligne 145:
 {name:"Arc long",race:"all",slot:"weapon2h",stats:{ct:2,f:-1,cc:-2}}, {name:"Arc long",race:"all",slot:"weapon2h",stats:{ct:2,f:-1,cc:-2}},
 {name:"Targe renforcée",race:"all",slot:"offhand",stats:{cc:1,pv:10}}, {name:"Targe renforcée",race:"all",slot:"offhand",stats:{cc:1,pv:10}},
 +
 +/* ===== NOUVEAUX COMMUNS ===== */
 +
 +{name:"Torche",race:"all",slot:"weapon",stats:{cc:-2,f:-2}},
 +{name:"Hache de jet",race:"all",slot:"weapon",stats:{ct:1}},
 +{name:"Pierre Noire",race:"all",slot:"weapon",stats:{f:1,cc:-1}},
 +{name:"Main-gauche offensive",race:"all",slot:"offhand",stats:{cc:2,f:-1}},
  
 /* ================= ELFES ================= */ /* ================= ELFES ================= */
  
-{name:"Bâton du Pèlerin",race:"Elfe",slot:"weapon",stats:{mvt:1,fm:1}}, +{name:"Bâton du Pèlerin",race:"all",slot:"weapon",stats:{mvt:1,fm:1}}, 
-{name:"Bottes Tâlroval",race:"Elfe",slot:"feet",stats:{mvt:2}}, +{name:"Bottes Tâlroval",race:"all",slot:"feet",stats:{mvt:2}}, 
-{name:"Cuirasse",race:"Elfe",slot:"body",stats:{e:1,r:2}}, +{name:"Cuirasse",race:"all",slot:"body",stats:{e:1,r:2}}, 
-{name:"Lance de garde Sylvestre",race:"Elfe",slot:"weapon",stats:{cc:1,f:1}}, +{name:"Lance de garde Sylvestre",race:"all",slot:"weapon",stats:{cc:1,f:1}}, 
-{name:"Sceptre de mage",race:"Elfe",slot:"weapon2h",stats:{m:1,fm:1}}, +{name:"Sceptre de mage",race:"all",slot:"weapon2h",stats:{m:1,fm:1}}, 
-{name:"Arc Ensorcelé",race:"Elfe",slot:"weapon2h",stats:{ct:1,rm:2,cc:-1}}, +{name:"Arc Ensorcelé",race:"all",slot:"weapon2h",stats:{ct:1,rm:2,cc:-1}}, 
-{name:"Armure de garde Sylvestre",race:"Elfe",slot:"body",stats:{e:2,mvt:-1},magicBlock:true}, +{name:"Armure de garde Sylvestre",race:"all",slot:"body",stats:{e:2,mvt:-1},magicBlock:true}, 
-{name:"Toge de feuillage",race:"Elfe",slot:"body",stats:{fm:1,agi:1,pv:5}}, +{name:"Toge de feuillage",race:"all",slot:"body",stats:{fm:1,agi:1,pv:5}}, 
-{name:"Marque Forestière",race:"Elfe",slot:"neck",stats:{pm:10,r:1}}, +{name:"Marque Forestière",race:"all",slot:"neck",stats:{pm:10,r:1}}, 
-{name:"Capuche du chasseur",race:"Elfe",slot:"head",stats:{ct:1,r:1}},+{name:"Capuche du chasseur",race:"all",slot:"head",stats:{ct:1,r:1}}, 
 + 
 +// spécifique elfe 
 +{name:"Arc Elfique",race:"Elfe",slot:"weapon2h",stats:{ct:2,cc:-1}},
  
 /* ================= NAINS ================= */ /* ================= NAINS ================= */
  
-{name:"Cotte de mailles",race:"Nain",slot:"body",stats:{e:2,agi:-4}}, +{name:"Cotte de mailles",race:"all",slot:"body",stats:{e:2,agi:-4}}, 
-{name:"Labrys",race:"Nain",slot:"weapon",stats:{cc:1,f:1}}, +{name:"Labrys",race:"all",slot:"weapon",stats:{cc:1,f:1}}, 
-{name:"Marteau de guerre",race:"Nain",slot:"weapon2h",stats:{f:2,cc:-1}}, +{name:"Marteau de guerre",race:"all",slot:"weapon2h",stats:{f:2,cc:-1}}, 
-{name:"Targe renforcée naine",race:"Nain",slot:"offhand",stats:{cc:1,pv:10}}, +{name:"Targe renforcée naine",race:"all",slot:"offhand",stats:{cc:1,pv:10}}, 
-{name:"Armure runique",race:"Nain",slot:"body",stats:{e:1,pm:8}}, +{name:"Armure runique",race:"all",slot:"body",stats:{e:1,pm:8}}, 
-{name:"Cape dorée",race:"Nain",slot:"cape",stats:{m:1,fm:1},magicBlock:true}, +{name:"Cape dorée",race:"all",slot:"cape",stats:{m:1,fm:1},magicBlock:true}, 
-{name:"Solerets",race:"Nain",slot:"feet",stats:{mvt:1,pm:5,pv:5}}, +{name:"Solerets",race:"all",slot:"feet",stats:{mvt:1,pm:5,pv:5}}, 
-{name:"Casque grossissant",race:"Nain",slot:"head",stats:{ct:2,p:-1}},+{name:"Casque grossissant",race:"all",slot:"head",stats:{ct:2,p:-1}}, 
 + 
 +// spécifiques nains 
 +{name:"Bâton d'archimage",race:"Nain",slot:"weapon2h",stats:{m:2,fm:-1}}, 
 +{name:"Hache runique",race:"Nain",slot:"weapon",stats:{cc:1,f:2}},
  
 /* ================= GÉANTS ================= */ /* ================= GÉANTS ================= */
  
-{name:"Bouclier Clipeus",race:"Géant",slot:"offhand",stats:{e:1,pv:10}}, +{name:"Bouclier Clipeus",race:"all",slot:"offhand",stats:{e:1,pv:10}}, 
-{name:"Masse d'arme",race:"Géant",slot:"weapon",stats:{cc:1,f:1}}, +{name:"Masse d'arme",race:"all",slot:"weapon",stats:{cc:1,f:1}}, 
-{name:"Hallebarde de pierre",race:"Géant",slot:"weapon",stats:{cc:2,f:-1}},+{name:"Hallebarde de pierre",race:"all",slot:"weapon",stats:{cc:2,f:-1}},
 {name:"Bâton de shaman",race:"Géant",slot:"weapon2h",stats:{fm:2,pv:-5}}, {name:"Bâton de shaman",race:"Géant",slot:"weapon2h",stats:{fm:2,pv:-5}},
-{name:"Javelot lourd",race:"Géant",slot:"weapon",stats:{f:2,ct:-1,cc:-1}}, +{name:"Javelot lourd",race:"all",slot:"weapon",stats:{f:2,ct:-1,cc:-1}}, 
-{name:"Broigne",race:"Géant",slot:"body",stats:{e:2,f:-1}}, +{name:"Broigne",race:"all",slot:"body",stats:{e:2,f:-1}}, 
-{name:"Fétiche de shaman",race:"Géant",slot:"offhand",stats:{r:2,pm:5}}, +{name:"Fétiche de shaman",race:"all",slot:"offhand",stats:{r:2,pm:5}}, 
-{name:"Bottes incandescentes",race:"Géant",slot:"feet",stats:{mvt:1,r:1,pv:5}}, +{name:"Bottes incandescentes",race:"all",slot:"feet",stats:{mvt:1,r:1,pv:5}}, 
-{name:"Médaillon hanté",race:"Géant",slot:"neck",stats:{cc:1,ct:1}},+{name:"Médaillon hanté",race:"all",slot:"neck",stats:{cc:1,ct:1}}, 
 + 
 +// spécifique géant 
 +{name:"Peau de granit manifiée",race:"Géant",slot:"body",stats:{m:1,rm:2,agi:-2}},
  
 /* ================= HS ================= */ /* ================= HS ================= */
  
-{name:"Bâton de sage",race:"HS",slot:"weapon2h",stats:{m:1,agi:1}}, +{name:"Bâton de sage",race:"all",slot:"weapon2h",stats:{m:1,agi:1}}, 
-{name:"Orbe de mana",race:"HS",slot:"weapon2h",stats:{m:1,rm:1}}, +{name:"Orbe de mana",race:"all",slot:"weapon2h",stats:{m:1,rm:1}}, 
-{name:"Cape de mage",race:"HS",slot:"cape",stats:{fm:1,rm:1}}, +{name:"Cape de mage",race:"all",slot:"cape",stats:{fm:1,rm:1}}, 
-{name:"Armure de fourrure",race:"HS",slot:"body",stats:{e:2,rm:-3}}, +{name:"Armure de fourrure",race:"all",slot:"body",stats:{e:2,rm:-3}}, 
-{name:"Ceste",race:"HS",slot:"weapon",stats:{f:1,cc:1}}, +{name:"Ceste",race:"all",slot:"weapon",stats:{f:1,cc:1}}, 
-{name:"Collier d'apaisement",race:"HS",slot:"neck",stats:{pv:10,pm:5}}, +{name:"Collier d'apaisement",race:"all",slot:"neck",stats:{pv:10,pm:5}}, 
-{name:"Bottes de voleur",race:"HS",slot:"feet",stats:{mvt:1,agi:1}}, +{name:"Bottes de voleur",race:"all",slot:"feet",stats:{mvt:1,agi:1}}, 
-{name:"Sarbacane",race:"HS",slot:"weapon",stats:{ct:1,f:10,cc:-1}}, +{name:"Sarbacane",race:"all",slot:"weapon",stats:{ct:1,f:10,cc:-1}}, 
-{name:"Bouclier en lianes",race:"HS",slot:"offhand",stats:{cc:1,agi:1}},+{name:"Bouclier en lianes",race:"all",slot:"offhand",stats:{cc:1,agi:1}}, 
 + 
 +// spécifiques HS 
 +{name:"Manteau de feuillage",race:"HS",slot:"body",stats:{e:1,agi:2}}, 
 +{name:"Bottes griffues",race:"HS",slot:"feet",stats:{cc:1,f:1,pv:5}},
  
 /* ================= OLYMPIENS ================= */ /* ================= OLYMPIENS ================= */
  
-{name:"Armure hoplitique",race:"Olympien",slot:"body",stats:{e:1,m:1}}, +{name:"Armure hoplitique",race:"all",slot:"body",stats:{e:1,m:1}}, 
-{name:"Bouclier Ancile",race:"Olympien",slot:"offhand",stats:{e:1}}, +{name:"Bouclier Ancile",race:"all",slot:"offhand",stats:{e:1}}, 
-{name:"Diadème",race:"Olympien",slot:"head",stats:{r:1,rm:2}}, +{name:"Diadème",race:"all",slot:"head",stats:{r:1,rm:2}}, 
-{name:"Pilum",race:"Olympien",slot:"weapon",stats:{ct:1,f:1,cc:-1}}, +{name:"Pilum",race:"all",slot:"weapon",stats:{ct:1,f:1,cc:-1}}, 
-{name:"Spatha",race:"Olympien",slot:"weapon",stats:{cc:1,f:1}}, +{name:"Spatha",race:"all",slot:"weapon",stats:{cc:1,f:1}}, 
-{name:"Sceptre de puissance",race:"Olympien",slot:"weapon",stats:{m:1,pm:8}}, +{name:"Sceptre de puissance",race:"all",slot:"weapon",stats:{m:1,pm:8}}, 
-{name:"Lame Sainte",race:"Olympien",slot:"weapon",stats:{cc:1,m:1}}, +{name:"Lame Sainte",race:"all",slot:"weapon",stats:{cc:1,m:1}}, 
-{name:"Tiare d'Oracle",race:"Olympien",slot:"head",stats:{fm:1,p:1}}, +{name:"Tiare d'Oracle",race:"all",slot:"head",stats:{fm:1,p:1}}, 
-{name:"Cnémides",race:"Olympien",slot:"feet",stats:{mvt:1,rm:1,r:1}},+{name:"Cnémides",race:"all",slot:"feet",stats:{mvt:1,rm:1,r:1}}, 
 + 
 +// spécifique olympien 
 +{name:"Lorica",race:"Olympien",slot:"body",stats:{e:2,agi:-2}},
  
 /* ================= ANNEAUX ================= */ /* ================= ANNEAUX ================= */
Ligne 321: Ligne 349:
 el.innerHTML=txt; el.innerHTML=txt;
 } }
 +
 +const slotToStatId = {
 +head:"headStats",
 +neck:"neckStats",
 +cape:"capeStats",
 +rightHand:"rightStats",
 +leftHand:"leftStats",
 +body:"bodyStats",
 +ring:"ringStats",
 +feet:"feetStats"
 +};
  
 Object.entries(slots).forEach(([k,s])=>{ Object.entries(slots).forEach(([k,s])=>{
 s.addEventListener("change",()=>{ s.addEventListener("change",()=>{
-displayStats(s,k+"Stats");+displayStats(s, slotToStatId[k]);
 checkLimit(); checkLimit();
 autoCalculate(); autoCalculate();
Ligne 368: Ligne 407:
 }); });
  
-// esquive+// ===== 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);
  
Ligne 382: Ligne 421:
 esquive+=1; esquive+=1;
  
-// affichage+// ===== MAGIE ===== 
 +let jetFM = char.fm * 2; 
 + 
 +let sorts = ""; 
 +for(let lvl=1; lvl<=5; lvl++){ 
 +let seuil = 6 + 6 * lvl; 
 +let reussite = jetFM >= seuil ? "✅" : "❌"; 
 + 
 +sorts += `Niveau ${lvl} → Seuil ${seuil} | Jet ${jetFM} ${reussite}\n`; 
 +
 + 
 +// ===== AFFICHAGE =====
 result.textContent = result.textContent =
 "===== STATS =====\n"+ "===== STATS =====\n"+
 JSON.stringify(char,null,2)+ JSON.stringify(char,null,2)+
 +
 "\n\n⚔ CC : "+char.cc+ "\n\n⚔ CC : "+char.cc+
 "\n🎯 CT : "+char.ct+ "\n🎯 CT : "+char.ct+
 "\n✨ FM : "+char.fm+ "\n✨ FM : "+char.fm+
-"\n🛡 Esquive : "+esquive;+"\n🛡 Esquive : "+esquive
 + 
 +"\n\n===== MAGIE =====\n"
 +"Jet FM (x2) : "+jetFM+"\n\n"
 +sorts;
 } }
  
simulateur.1777501356.txt.gz · Dernière modification : 2026/04/30 00:22 de nanaki