simulateur_saison3_1
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 | ||
| simulateur_saison3_1 [2026/10/02 00:18] – nanaki | simulateur_saison3_1 [2026/10/02 08:33] (Version actuelle) – nanaki | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| + | Bonjour, | ||
| + | Voici le simulateur pour la saison 3. | ||
| + | N' | ||
| < | < | ||
| < | < | ||
| <meta charset=" | <meta charset=" | ||
| + | <meta name=" | ||
| < | < | ||
| < | < | ||
| body { | body { | ||
| - | font-family: | + | font-family: |
| background:# | background:# | ||
| color:# | color:# | ||
| Ligne 12: | Ligne 16: | ||
| } | } | ||
| - | h1,h2 { | + | h1,h2 { color: |
| - | | + | h3 { color:# |
| - | } | + | |
| .box { | .box { | ||
| Ligne 24: | Ligne 27: | ||
| select { | select { | ||
| margin:3px; | margin:3px; | ||
| - | max-width:180px; | + | max-width:220px; |
| } | } | ||
| input { | input { | ||
| margin:3px; | margin:3px; | ||
| - | width:60px; | + | width:65px; |
| } | } | ||
| Ligne 43: | Ligne 46: | ||
| padding: | padding: | ||
| white-space: | white-space: | ||
| + | overflow-wrap: | ||
| } | } | ||
| Ligne 50: | Ligne 54: | ||
| } | } | ||
| - | .equipStats { | + | .equipStats { margin-left: |
| - | | + | |
| - | } | + | |
| - | .bonus { | + | .bonus, |
| - | | + | .malus { color:# |
| - | } | + | |
| - | + | ||
| - | .malus { | + | |
| - | | + | |
| - | } | + | |
| - | .special | + | button |
| - | | + | |
| + | padding:7px 10px; | ||
| + | cursor: | ||
| } | } | ||
| </ | </ | ||
| Ligne 181: | Ligne 180: | ||
| </ | </ | ||
| - | <button onclick=" | + | < |
| - | <button onclick=" | + | < |
| - | <button onclick=" | + | < |
| - | <button onclick=" | + | < |
| <pre id=" | <pre id=" | ||
| - | |||
| < | < | ||
| + | "use strict"; | ||
| /* ========================================================= | /* ========================================================= | ||
| Ligne 198: | Ligne 197: | ||
| Elfe:{ | Elfe:{ | ||
| - | a:2, | + | a: |
| - | | + | p: |
| - | | + | fm: |
| - | | + | |
| - | | + | |
| - | | + | |
| - | p:5, | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | fm:8, | + | |
| - | | + | |
| - | | + | |
| }, | }, | ||
| Nain:{ | Nain:{ | ||
| - | a:2, | + | a: |
| - | | + | p: |
| - | | + | fm: |
| - | | + | |
| - | | + | |
| - | | + | |
| - | p:4, | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | fm:10, | + | |
| - | | + | |
| - | | + | |
| }, | }, | ||
| Géant:{ | Géant:{ | ||
| - | a:2, | + | a: |
| - | | + | p: |
| - | | + | fm: |
| - | | + | |
| - | | + | |
| - | | + | |
| - | p:4, | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | fm:6, | + | |
| - | | + | |
| - | | + | |
| }, | }, | ||
| Olympien:{ | Olympien:{ | ||
| - | a:2, | + | a: |
| - | | + | p: |
| - | | + | fm: |
| - | | + | |
| - | | + | |
| - | | + | |
| - | p:4, | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | fm:7, | + | |
| - | | + | |
| - | | + | |
| }, | }, | ||
| HS:{ | HS:{ | ||
| - | a:2, | + | a: |
| - | | + | p: |
| - | | + | fm: |
| - | | + | |
| - | | + | |
| - | | + | |
| - | p:5, | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | fm:9, | + | |
| - | | + | |
| - | | + | |
| } | } | ||
| }; | }; | ||
| - | |||
| /* ========================================================= | /* ========================================================= | ||
| - | ORDRE DES CARACTERISTIQUES | + | |
| ========================================================= */ | ========================================================= */ | ||
| const statOrder = [ | const statOrder = [ | ||
| - | " | + | " |
| - | | + | " |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | " | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| ]; | ]; | ||
| const statLabels = { | const statLabels = { | ||
| - | + | | |
| - | | + | agi:" |
| - | | + | mvt:" |
| - | | + | res:" |
| - | | + | |
| - | | + | |
| - | agi:" | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | mvt:" | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | res:" | + | |
| - | | + | |
| }; | }; | ||
| - | |||
| /* ========================================================= | /* ========================================================= | ||
| Ligne 336: | Ligne 248: | ||
| const costTable = { | const costTable = { | ||
| - | |||
| a: | a: | ||
| - | |||
| cc: | cc: | ||
| ct: | ct: | ||
| - | |||
| f: | f: | ||
| e: | e: | ||
| - | |||
| agi: | agi: | ||
| - | |||
| pui: | pui: | ||
| res: | res: | ||
| - | |||
| fm: | fm: | ||
| - | |||
| p: | p: | ||
| - | |||
| pv:[4,2,1], | pv:[4,2,1], | ||
| pm:[5,3,1], | pm:[5,3,1], | ||
| - | |||
| mvt: | mvt: | ||
| - | |||
| r: | r: | ||
| rm: | rm: | ||
| }; | }; | ||
| - | |||
| /* ========================================================= | /* ========================================================= | ||
| | | ||
| - | ========================================================= | + | ========================================================= */ |
| - | + | ||
| - | Règle : | + | |
| - | - équipement normal = toutes les races | + | |
| - | - équipement exo = uniquement la race indiquée dans " | + | |
| - | + | ||
| - | Rappel : | + | |
| - | R = r | + | |
| - | Rés = res | + | |
| - | */ | + | |
| const equipments = [ | const equipments = [ | ||
| - | /* ========================= | + | /* COMMUN */ |
| - | COMMUN | + | |
| - | ========================= | + | |
| - | { | + | {name:" |
| - | | + | {name:" |
| - | race:" | + | {name:" |
| - | slot:" | + | {name:" |
| - | stats:{mvt:1} | + | {name:" |
| - | }, | + | {name:" |
| + | {name:" | ||
| + | {name:" | ||
| + | {name:" | ||
| + | {name:" | ||
| + | {name:" | ||
| + | {name:" | ||
| + | {name:" | ||
| + | {name:" | ||
| - | { | + | {name:" |
| - | | + | {name:" |
| - | | + | {name:" |
| - | | + | |
| - | | + | |
| - | }, | + | |
| - | { | + | {name:" |
| - | | + | {name:" |
| - | | + | {name:" |
| - | | + | |
| - | stats:{fm:1} | + | |
| - | }, | + | |
| - | { | + | {name:" |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | }, | + | |
| - | { | + | {name:" |
| - | | + | {name:" |
| - | | + | {name:" |
| - | | + | |
| - | stats:{f:12,ct:1} | + | |
| - | }, | + | |
| - | { | + | {name:" |
| - | | + | {name:" |
| - | | + | {name:" |
| - | slot:" | + | {name:" |
| - | stats:{cc:-2,f:-2,feu:true} | + | |
| - | }, | + | |
| - | { | + | /* OLYMPIENS */ |
| - | name:" | + | |
| - | race:" | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | { | + | {name:" |
| - | name:"Lance", | + | {name:"Lame sainte", |
| - | race:"all", | + | {name:" |
| - | slot:" | + | {name:" |
| - | stats: | + | {name:" |
| - | }, | + | {name:" |
| + | {name:" | ||
| + | {name:" | ||
| + | {name:" | ||
| + | {name:" | ||
| + | {name:" | ||
| + | {name:" | ||
| - | { | + | /* ELFES */ |
| - | name:" | + | |
| - | race:" | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | { | + | {name:" |
| - | name:"Arc", | + | {name:"Baton du Pelerin", |
| - | race:"all", | + | {name:" |
| - | slot:" | + | {name:" |
| - | stats: | + | {name:" |
| - | }, | + | {name:" |
| + | {name:" | ||
| + | {name:" | ||
| + | {name:" | ||
| + | {name:" | ||
| + | {name:" | ||
| + | {name:" | ||
| - | { | + | /* NAINS */ |
| - | name:" | + | |
| - | race:" | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | { | + | {name:" |
| - | | + | {name:" |
| - | race:"all", | + | {name:" |
| - | slot:" | + | {name:" |
| - | stats:{demolition: | + | {name:" |
| - | }, | + | {name:" |
| + | {name:" | ||
| + | {name:" | ||
| + | {name:" | ||
| + | {name:" | ||
| + | {name:" | ||
| + | {name:" | ||
| - | { | + | /* GEANTS */ |
| - | name:" | + | |
| - | race:" | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | { | + | {name:" |
| - | | + | {name:" |
| - | race:"all", | + | {name:" |
| - | slot:" | + | {name:" |
| - | stats: | + | {name:" |
| - | }, | + | {name:" |
| + | {name:" | ||
| + | {name:" | ||
| + | {name:" | ||
| + | {name:" | ||
| + | {name:" | ||
| + | {name:" | ||
| - | { | + | /* HS */ |
| - | name:" | + | |
| - | race:" | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | { | + | {name:" |
| - | name:"Bouclier Parma", | + | {name:"Mains de mana", |
| - | race:"all", | + | {name:" |
| - | slot:" | + | {name:" |
| - | stats: | + | {name:" |
| - | }, | + | {name:" |
| + | {name:" | ||
| + | {name:" | ||
| + | {name:" | ||
| + | {name:" | ||
| + | {name:" | ||
| + | {name:" | ||
| - | { | + | /* LUTINS |
| - | name:"Écu brillant", | + | |
| - | race:" | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | { | + | {name:" |
| - | name:"Armure matelassée", | + | {name:"Anneau de Caprice", |
| - | race:"all", | + | {name:" |
| - | slot:"body", | + | {name:" |
| - | stats: | + | {name:" |
| - | }, | + | {name:" |
| + | {name:" | ||
| + | {name:" | ||
| + | {name:" | ||
| + | {name:" | ||
| - | { | + | {name:" |
| - | name:" | + | |
| - | race:" | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | + | ||
| - | { | + | |
| - | name:" | + | |
| - | race:" | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | + | ||
| - | { | + | |
| - | name:" | + | |
| - | race:" | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | + | ||
| - | { | + | |
| - | name:" | + | |
| - | race:" | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | + | ||
| - | { | + | |
| - | name:" | + | |
| - | race:" | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | + | ||
| - | { | + | |
| - | name:" | + | |
| - | race:" | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | + | ||
| - | { | + | |
| - | name:" | + | |
| - | race:" | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | + | ||
| - | { | + | |
| - | name:" | + | |
| - | race:" | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | + | ||
| - | { | + | |
| - | name:" | + | |
| - | race:" | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | + | ||
| - | { | + | |
| - | name:" | + | |
| - | race:" | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | + | ||
| - | + | ||
| - | /* ========================= | + | |
| - | | + | |
| - | ========================= */ | + | |
| - | + | ||
| - | { | + | |
| - | name:" | + | |
| - | race:" | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | + | ||
| - | { | + | |
| - | name:" | + | |
| - | race:" | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | + | ||
| - | { | + | |
| - | name:" | + | |
| - | race:" | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | + | ||
| - | { | + | |
| - | name:" | + | |
| - | race:" | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | + | ||
| - | { | + | |
| - | name:" | + | |
| - | race:" | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | + | ||
| - | { | + | |
| - | name:" | + | |
| - | race:" | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | + | ||
| - | { | + | |
| - | name:" | + | |
| - | race:" | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | + | ||
| - | { | + | |
| - | name:" | + | |
| - | race:" | + | |
| - | exo:true, | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | + | ||
| - | { | + | |
| - | name:" | + | |
| - | race:" | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | + | ||
| - | { | + | |
| - | name:" | + | |
| - | race:" | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | + | ||
| - | { | + | |
| - | name:" | + | |
| - | race:" | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | + | ||
| - | { | + | |
| - | name:" | + | |
| - | race:" | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | + | ||
| - | + | ||
| - | /* ========================= | + | |
| - | | + | |
| - | ========================= */ | + | |
| - | + | ||
| - | { | + | |
| - | name:" | + | |
| - | race:" | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | + | ||
| - | { | + | |
| - | name:" | + | |
| - | race:" | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | + | ||
| - | { | + | |
| - | name:" | + | |
| - | race:" | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | + | ||
| - | { | + | |
| - | name:" | + | |
| - | race:" | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | + | ||
| - | { | + | |
| - | name:" | + | |
| - | race:" | + | |
| - | exo:true, | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | + | ||
| - | { | + | |
| - | name:" | + | |
| - | race:" | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | + | ||
| - | { | + | |
| - | name:" | + | |
| - | race:" | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | + | ||
| - | { | + | |
| - | name:" | + | |
| - | race:" | + | |
| - | exo:true, | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | + | ||
| - | { | + | |
| - | name:" | + | |
| - | race:" | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | + | ||
| - | { | + | |
| - | name:" | + | |
| - | race:" | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | + | ||
| - | { | + | |
| - | name:" | + | |
| - | race:" | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | + | ||
| - | { | + | |
| - | name:" | + | |
| - | race:" | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | + | ||
| - | + | ||
| - | /* ========================= | + | |
| - | | + | |
| - | ========================= */ | + | |
| - | + | ||
| - | { | + | |
| - | name:" | + | |
| - | race:" | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | + | ||
| - | { | + | |
| - | name:" | + | |
| - | race:" | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | + | ||
| - | { | + | |
| - | name:" | + | |
| - | race:" | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | + | ||
| - | { | + | |
| - | name:" | + | |
| - | race:" | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | + | ||
| - | { | + | |
| - | name:" | + | |
| - | race:" | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | + | ||
| - | { | + | |
| - | name:" | + | |
| - | race:" | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | + | ||
| - | { | + | |
| - | name:" | + | |
| - | race:" | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | + | ||
| - | { | + | |
| - | name:" | + | |
| - | race:" | + | |
| - | exo:true, | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | + | ||
| - | { | + | |
| - | name:" | + | |
| - | race:" | + | |
| - | exo:true, | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | + | ||
| - | { | + | |
| - | name:" | + | |
| - | race:" | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | + | ||
| - | { | + | |
| - | name:" | + | |
| - | race:" | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | + | ||
| - | { | + | |
| - | name:" | + | |
| - | race:" | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | + | ||
| - | + | ||
| - | /* ========================= | + | |
| - | | + | |
| - | ========================= */ | + | |
| - | + | ||
| - | { | + | |
| - | name:" | + | |
| - | race:" | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | + | ||
| - | { | + | |
| - | name:" | + | |
| - | race:" | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | + | ||
| - | { | + | |
| - | name:" | + | |
| - | race:" | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | + | ||
| - | { | + | |
| - | name:" | + | |
| - | race:" | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | + | ||
| - | { | + | |
| - | name:" | + | |
| - | race:" | + | |
| - | exo:true, | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | + | ||
| - | { | + | |
| - | name:" | + | |
| - | race:" | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | + | ||
| - | { | + | |
| - | name:" | + | |
| - | race:" | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | + | ||
| - | { | + | |
| - | name:" | + | |
| - | race:" | + | |
| - | exo:true, | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | + | ||
| - | { | + | |
| - | name:" | + | |
| - | race:" | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | + | ||
| - | { | + | |
| - | name:" | + | |
| - | race:" | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | + | ||
| - | { | + | |
| - | name:" | + | |
| - | race:" | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | + | ||
| - | { | + | |
| - | name:" | + | |
| - | race:" | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | + | ||
| - | + | ||
| - | /* ========================= | + | |
| - | HS | + | |
| - | ========================= */ | + | |
| - | + | ||
| - | { | + | |
| - | name:" | + | |
| - | race:" | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | + | ||
| - | { | + | |
| - | name:" | + | |
| - | race:" | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | + | ||
| - | { | + | |
| - | name:" | + | |
| - | race:" | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | + | ||
| - | { | + | |
| - | name:" | + | |
| - | race:" | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | + | ||
| - | { | + | |
| - | name:" | + | |
| - | race:" | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | + | ||
| - | { | + | |
| - | name:" | + | |
| - | race:" | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | + | ||
| - | { | + | |
| - | name:" | + | |
| - | race:" | + | |
| - | exo:true, | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | + | ||
| - | { | + | |
| - | name:" | + | |
| - | race:" | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | + | ||
| - | { | + | |
| - | name:" | + | |
| - | race:" | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | + | ||
| - | { | + | |
| - | name:" | + | |
| - | race:" | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | + | ||
| - | { | + | |
| - | name:" | + | |
| - | race:" | + | |
| - | exo:true, | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | + | ||
| - | { | + | |
| - | name:" | + | |
| - | race:" | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | + | ||
| - | + | ||
| - | /* ========================= | + | |
| - | | + | |
| - | ========================= */ | + | |
| - | + | ||
| - | { | + | |
| - | name:" | + | |
| - | race:" | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | + | ||
| - | { | + | |
| - | name:" | + | |
| - | race:" | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | + | ||
| - | { | + | |
| - | name:" | + | |
| - | race:" | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | + | ||
| - | { | + | |
| - | name:" | + | |
| - | race:" | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | + | ||
| - | { | + | |
| - | name:" | + | |
| - | race:" | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | + | ||
| - | { | + | |
| - | name:" | + | |
| - | race:" | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | + | ||
| - | { | + | |
| - | name:" | + | |
| - | race:" | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | + | ||
| - | { | + | |
| - | name:" | + | |
| - | race:" | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | + | ||
| - | { | + | |
| - | name:" | + | |
| - | race:" | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | + | ||
| - | { | + | |
| - | name:" | + | |
| - | race:" | + | |
| - | slot:" | + | |
| - | stats: | + | |
| - | }, | + | |
| - | + | ||
| - | { | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | } | + | |
| ]; | ]; | ||
| - | |||
| /* ========================================================= | /* ========================================================= | ||
| Ligne 1124: | Ligne 404: | ||
| const skills = [ | const skills = [ | ||
| - | |||
| { | { | ||
| name:" | name:" | ||
| - | desc:" | + | desc:" |
| }, | }, | ||
| - | |||
| { | { | ||
| name:" | name:" | ||
| desc:" | desc:" | ||
| }, | }, | ||
| - | |||
| { | { | ||
| name:" | name:" | ||
| desc:" | desc:" | ||
| }, | }, | ||
| - | |||
| { | { | ||
| name:" | name:" | ||
| - | desc:" | + | desc:" |
| }, | }, | ||
| - | |||
| { | { | ||
| name:" | name:" | ||
| - | desc:" | + | desc:" |
| }, | }, | ||
| - | |||
| { | { | ||
| name:" | name:" | ||
| - | desc:" | + | desc:" |
| } | } | ||
| - | |||
| ]; | ]; | ||
| - | |||
| /* ========================================================= | /* ========================================================= | ||
| Ligne 1163: | Ligne 435: | ||
| const spells = [ | const spells = [ | ||
| - | |||
| {name:" | {name:" | ||
| {name:" | {name:" | ||
| Ligne 1179: | Ligne 450: | ||
| {name:" | {name:" | ||
| {name:" | {name:" | ||
| - | |||
| ]; | ]; | ||
| - | |||
| /* ========================================================= | /* ========================================================= | ||
| Ligne 1189: | Ligne 458: | ||
| const raceSelect = document.getElementById(" | const raceSelect = document.getElementById(" | ||
| - | for(const r in races){ | + | Object.keys(races).forEach(r=> |
| + | const option=document.createElement(" | ||
| + | option.value=r; | ||
| + | option.textContent=r; | ||
| + | raceSelect.appendChild(option); | ||
| + | }); | ||
| - | const o=document.createElement(" | + | /* AMELIORATIONS */ |
| - | + | ||
| - | o.value=r; | + | |
| - | o.textContent=r; | + | |
| - | + | ||
| - | raceSelect.appendChild(o); | + | |
| - | } | + | |
| - | + | ||
| - | + | ||
| - | /* ========================================================= | + | |
| - | | + | |
| - | ========================================================= | + | |
| const statsDiv=document.getElementById(" | const statsDiv=document.getElementById(" | ||
| statOrder.forEach(stat=> | statOrder.forEach(stat=> | ||
| - | + | | |
| - | | + | |
| - | | + | |
| - | } | + | |
| const line=document.createElement(" | const line=document.createElement(" | ||
| - | |||
| line.className=" | line.className=" | ||
| const label=document.createElement(" | const label=document.createElement(" | ||
| - | + | | |
| - | | + | |
| - | | + | |
| const input=document.createElement(" | const input=document.createElement(" | ||
| - | |||
| input.type=" | input.type=" | ||
| input.id=" | input.id=" | ||
| Ligne 1228: | Ligne 484: | ||
| input.min=0; | input.min=0; | ||
| - | input.addEventListener( | + | input.addEventListener(" |
| - | | + | |
| - | | + | |
| - | ); | + | |
| - | + | ||
| - | line.appendChild(label); | + | |
| - | line.appendChild(input); | + | |
| + | line.append(label, | ||
| statsDiv.appendChild(line); | statsDiv.appendChild(line); | ||
| }); | }); | ||
| - | + | /* PASSIFS */ | |
| - | /* ========================================================= | + | |
| - | PASSIFS | + | |
| - | ========================================================= | + | |
| const skillsDiv=document.getElementById(" | const skillsDiv=document.getElementById(" | ||
| skills.forEach((s, | skills.forEach((s, | ||
| - | |||
| const label=document.createElement(" | const label=document.createElement(" | ||
| - | |||
| const cb=document.createElement(" | const cb=document.createElement(" | ||
| cb.type=" | cb.type=" | ||
| cb.id=" | cb.id=" | ||
| + | cb.addEventListener(" | ||
| - | | + | |
| - | | + | |
| - | | + | |
| ); | ); | ||
| - | | + | skillsDiv.append(label,document.createElement(" |
| - | + | ||
| - | label.appendChild( | + | |
| - | document.createTextNode( | + | |
| - | " " | + | |
| - | ) | + | |
| - | ); | + | |
| - | + | ||
| - | | + | |
| - | skillsDiv.appendChild( | + | |
| - | | + | |
| - | | + | |
| }); | }); | ||
| - | + | /* SORTS */ | |
| - | /* ========================================================= | + | |
| - | SORTS | + | |
| - | ========================================================= | + | |
| const spellsDiv=document.getElementById(" | const spellsDiv=document.getElementById(" | ||
| spells.forEach((s, | spells.forEach((s, | ||
| - | |||
| const label=document.createElement(" | const label=document.createElement(" | ||
| - | |||
| const cb=document.createElement(" | const cb=document.createElement(" | ||
| cb.type=" | cb.type=" | ||
| cb.id=" | cb.id=" | ||
| + | cb.addEventListener(" | ||
| - | | + | |
| - | | + | |
| - | calculate | + | |
| - | ); | + | |
| - | + | ||
| - | label.appendChild(cb); | + | |
| - | + | ||
| - | label.appendChild( | + | |
| document.createTextNode( | document.createTextNode( | ||
| - | " " | + | " " |
| - | | + | |
| ) | ) | ||
| ); | ); | ||
| - | spellsDiv.appendChild(label); | + | spellsDiv.append(label,document.createElement(" |
| - | + | ||
| - | spellsDiv.appendChild( | + | |
| - | | + | |
| - | | + | |
| }); | }); | ||
| - | |||
| /* ========================================================= | /* ========================================================= | ||
| | | ||
| ========================================================= */ | ========================================================= */ | ||
| - | |||
| - | const head=document.getElementById(" | ||
| - | const cape=document.getElementById(" | ||
| - | const rightHand=document.getElementById(" | ||
| - | const leftHand=document.getElementById(" | ||
| - | const body=document.getElementById(" | ||
| - | const ring=document.getElementById(" | ||
| - | const feet=document.getElementById(" | ||
| const slots = { | const slots = { | ||
| + | head: | ||
| + | cape: | ||
| + | rightHand: | ||
| + | leftHand: | ||
| + | body: | ||
| + | ring: | ||
| + | feet: | ||
| + | }; | ||
| - | | + | const statIds = { |
| - | cape:cape, | + | |
| - | rightHand:rightHand, | + | cape:" |
| - | leftHand:leftHand, | + | rightHand:" |
| - | body:body, | + | leftHand:" |
| - | ring:ring, | + | body:" |
| - | feet:feet | + | ring:" |
| + | feet:" | ||
| }; | }; | ||
| + | /* COMPATIBILITE EXOTIQUE */ | ||
| - | /* ========================================================= | + | function canEquip(item, |
| - | REGLE D' | + | |
| - | ========================================================= | + | |
| - | Normal : | + | if(!item.exo){ |
| - | | + | return true; |
| + | | ||
| - | Exo : | + | const aliases = { |
| - | | + | " |
| - | */ | + | " |
| + | " | ||
| + | " | ||
| + | }; | ||
| - | function canEquip(e,race){ | + | const owner=aliases[item.race]||item.race; |
| - | | + | return |
| - | + | ||
| - | | + | |
| - | } | + | |
| - | + | ||
| - | return true; | + | |
| } | } | ||
| - | + | /* REMPLISSAGE */ | |
| - | /* ========================================================= | + | |
| - | REMPLISSAGE | + | |
| - | ========================================================= | + | |
| function fillEquip(){ | function fillEquip(){ | ||
| const race=raceSelect.value; | const race=raceSelect.value; | ||
| - | |||
| - | const statIds = { | ||
| - | |||
| - | head:" | ||
| - | cape:" | ||
| - | rightHand:" | ||
| - | leftHand:" | ||
| - | body:" | ||
| - | ring:" | ||
| - | feet:" | ||
| - | |||
| - | }; | ||
| - | |||
| for(const key in slots){ | for(const key in slots){ | ||
| const select=slots[key]; | const select=slots[key]; | ||
| - | |||
| select.innerHTML=""; | select.innerHTML=""; | ||
| - | |||
| const empty=document.createElement(" | const empty=document.createElement(" | ||
| - | |||
| empty.value=""; | empty.value=""; | ||
| empty.textContent=" | empty.textContent=" | ||
| - | |||
| select.appendChild(empty); | select.appendChild(empty); | ||
| - | + | | |
| - | /* | + | .filter(e=> |
| - | On récupère uniquement les objets compatibles | + | .filter(e=> |
| - | avec le slot et la race. | + | .sort((a, |
| - | + | a.name.localeCompare( | |
| - | Puis on les trie par ordre alphabétique. | + | b.name, |
| - | + | " | |
| - | | + | {sensitivity:" |
| - | | + | |
| - | É / E | + | |
| - | é / e | + | |
| - | | + | |
| - | */ | + | |
| - | + | ||
| - | | + | |
| - | | + | |
| - | + | ||
| - | | + | |
| - | | + | |
| ) | ) | ||
| - | |||
| - | .filter( | ||
| - | e => canEquip(e, | ||
| - | ) | ||
| - | |||
| - | .sort( | ||
| - | (a,b) => | ||
| - | a.name.localeCompare( | ||
| - | b.name, | ||
| - | " | ||
| - | { | ||
| - | sensitivity:" | ||
| - | } | ||
| - | ) | ||
| - | ); | ||
| - | |||
| - | |||
| - | availableEquipments.forEach(e=> | ||
| - | |||
| - | const o=document.createElement( | ||
| - | " | ||
| ); | ); | ||
| - | o.value= | + | available.forEach(item=>{ |
| - | equipments.indexOf(e); | + | |
| - | | + | |
| - | e.name+ | + | |
| - | | + | |
| - | | + | |
| + | option.textContent=item.name+(item.exo?" | ||
| + | select.appendChild(option); | ||
| }); | }); | ||
| - | |||
| select.onchange=()=> | select.onchange=()=> | ||
| - | |||
| - | displayStats( | ||
| - | select, | ||
| - | statIds[key] | ||
| - | ); | ||
| checkLimit(key); | checkLimit(key); | ||
| + | displayAllEquipStats(); | ||
| calculate(); | calculate(); | ||
| }; | }; | ||
| } | } | ||
| - | |||
| displayAllEquipStats(); | displayAllEquipStats(); | ||
| - | |||
| checkLimit(); | checkLimit(); | ||
| - | |||
| calculate(); | calculate(); | ||
| } | } | ||
| + | /* AFFICHAGE DES BONUS */ | ||
| - | /* ========================================================= | + | const statNames = { |
| - | | + | a:" |
| - | ========================================================= */ | + | cc:" |
| - | + | pv:" | |
| - | const statNames={ | + | rm:" |
| - | + | ||
| - | a:" | + | |
| - | + | ||
| - | | + | |
| - | | + | |
| - | + | ||
| - | | + | |
| - | + | ||
| - | cc:" | + | |
| - | | + | |
| - | | + | |
| - | + | ||
| - | | + | |
| - | + | ||
| - | pv:" | + | |
| - | | + | |
| - | + | ||
| - | | + | |
| - | | + | |
| - | rm:" | + | |
| - | + | ||
| - | | + | |
| - | | + | |
| esquive:" | esquive:" | ||
| - | |||
| demolition:" | demolition:" | ||
| - | |||
| magique:" | magique:" | ||
| feu:" | feu:" | ||
| }; | }; | ||
| - | |||
| function displayStats(select, | function displayStats(select, | ||
| Ligne 1513: | Ligne 643: | ||
| const el=document.getElementById(id); | const el=document.getElementById(id); | ||
| - | if(!el){ | + | if(!el) return; |
| - | | + | |
| - | } | + | |
| - | + | ||
| - | + | ||
| - | const index=select.value; | + | |
| - | + | ||
| - | + | ||
| - | if(index==="" | + | |
| + | if(select.value==="" | ||
| el.innerHTML=""; | el.innerHTML=""; | ||
| - | |||
| return; | return; | ||
| } | } | ||
| + | const item=equipments[Number(select.value)]; | ||
| - | | + | if(!item){ |
| - | Number(index) | + | |
| - | ]; | + | |
| - | + | ||
| - | + | ||
| - | | + | |
| el.innerHTML=""; | el.innerHTML=""; | ||
| - | |||
| return; | return; | ||
| } | } | ||
| - | |||
| let html=""; | let html=""; | ||
| + | for(const [stat, | ||
| - | for( | + | |
| - | const [stat, | + | |
| - | of Object.entries( | + | |
| - | e.stats || {} | + | |
| - | ) | + | |
| - | ){ | + | |
| - | + | ||
| - | | + | |
| - | | + | |
| - | | + | |
| if(value===true){ | if(value===true){ | ||
| - | + | | |
| - | | + | |
| - | | + | |
| continue; | continue; | ||
| } | } | ||
| - | + | | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| continue; | continue; | ||
| } | } | ||
| - | |||
| if(value> | if(value> | ||
| - | + | | |
| - | | + | |
| - | | + | |
| }else{ | }else{ | ||
| - | + | | |
| - | | + | |
| - | | + | |
| } | } | ||
| } | } | ||
| - | |||
| el.innerHTML=html; | el.innerHTML=html; | ||
| } | } | ||
| - | |||
| function displayAllEquipStats(){ | function displayAllEquipStats(){ | ||
| - | | + | |
| - | head, | + | displayStats(slots[key],statIds[key]); |
| - | " | + | |
| - | | + | |
| - | + | ||
| - | displayStats( | + | |
| - | | + | |
| - | " | + | |
| - | ); | + | |
| - | + | ||
| - | | + | |
| - | rightHand, | + | |
| - | " | + | |
| - | | + | |
| - | + | ||
| - | | + | |
| - | leftHand, | + | |
| - | " | + | |
| - | ); | + | |
| - | + | ||
| - | displayStats( | + | |
| - | body, | + | |
| - | " | + | |
| - | ); | + | |
| - | + | ||
| - | displayStats( | + | |
| - | ring, | + | |
| - | " | + | |
| - | ); | + | |
| - | + | ||
| - | displayStats( | + | |
| - | feet, | + | |
| - | " | + | |
| - | ); | + | |
| } | } | ||
| - | |||
| /* ========================================================= | /* ========================================================= | ||
| - | | + | |
| ========================================================= */ | ========================================================= */ | ||
| - | function checkLimit( | + | function checkLimit(changedSlot=null){ |
| - | | + | |
| - | ){ | + | |
| - | | + | const warn=document.getElementById(" |
| - | + | ||
| - | + | ||
| - | for( | + | |
| - | const key in slots | + | |
| - | ){ | + | |
| - | + | ||
| - | if(key===" | + | |
| - | continue; | + | |
| - | } | + | |
| - | + | ||
| - | + | ||
| - | if( | + | |
| - | slots[key].value !== "" | + | |
| - | ){ | + | |
| - | + | ||
| - | count++; | + | |
| - | } | + | |
| - | } | + | |
| - | + | ||
| - | + | ||
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| + | const count=Object.keys(slots) | ||
| + | .filter(key=> | ||
| + | .filter(key=> | ||
| + | .length; | ||
| if(count> | if(count> | ||
| - | if( | + | if(changedSlot&& |
| - | | + | |
| - | | + | |
| - | | + | |
| - | + | ||
| - | slots[ | + | |
| - | changedSlot | + | |
| - | ].value=""; | + | |
| + | slots[changedSlot].value=""; | ||
| displayStats( | displayStats( | ||
| slots[changedSlot], | slots[changedSlot], | ||
| - | changedSlot+" | + | |
| ); | ); | ||
| } | } | ||
| - | |||
| - | |||
| - | count--; | ||
| - | |||
| warn.textContent= | warn.textContent= | ||
| - | " | + | " |
| - | | + | return false; |
| + | | ||
| - | | + | |
| - | | + | |
| } | } | ||
| - | |||
| - | |||
| - | /* ========================================================= | ||
| - | RESET DES EQUIPEMENTS | ||
| - | ========================================================= */ | ||
| function resetSlots(){ | function resetSlots(){ | ||
| - | for( | + | for(const key in slots){ |
| - | | + | |
| - | | + | |
| slots[key].value=""; | slots[key].value=""; | ||
| } | } | ||
| - | |||
| displayAllEquipStats(); | displayAllEquipStats(); | ||
| - | |||
| checkLimit(); | checkLimit(); | ||
| } | } | ||
| - | |||
| /* ========================================================= | /* ========================================================= | ||
| Ligne 1725: | Ligne 740: | ||
| function displayBase(){ | function displayBase(){ | ||
| - | const r= | + | const r=races[raceSelect.value]; |
| - | | + | |
| - | | + | |
| - | | + | |
| - | + | ||
| - | + | ||
| - | const baseStats= | + | |
| - | document.getElementById( | + | |
| - | " | + | |
| - | ); | + | |
| let text=""; | let text=""; | ||
| - | |||
| - | |||
| - | /* | ||
| - | | ||
| - | les améliorations et la fiche finale. | ||
| - | */ | ||
| statOrder.forEach(stat=> | statOrder.forEach(stat=> | ||
| - | if( | + | if(r[stat]!==undefined){ |
| - | | + | |
| - | | + | |
| - | text += | + | text+=(statLabels[stat]||stat)+": |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| } | } | ||
| }); | }); | ||
| - | + | document.getElementById(" | |
| - | | + | |
| - | | + | |
| } | } | ||
| - | |||
| /* ========================================================= | /* ========================================================= | ||
| - | CALCUL DU COUT | + | COUT |
| ========================================================= */ | ========================================================= */ | ||
| function calcCost(){ | function calcCost(){ | ||
| - | let total = 0; | + | let total=0; |
| for(const stat in costTable){ | for(const stat in costTable){ | ||
| - | const input = document.getElementById(" | + | const input=document.getElementById(" |
| - | if(!input){ | + | if(!input) continue; |
| - | | + | |
| - | } | + | |
| - | const level = Math.max(0, parseInt(input.value) || 0); | + | const level=Math.max(0, |
| - | const costs = costTable[stat]; | + | |
| - | if(level | + | if(!level) continue; |
| - | | + | |
| - | } | + | |
| - | const B = costs[0]; | + | const [B,M1,M2]=costTable[stat]; |
| - | const M1 = costs[1]; | + | |
| - | const M2 = costs[2]; | + | |
| - | for(let n = 1; n <= level; n++){ | + | for(let n=1; |
| let cost; | let cost; | ||
| - | if(n === 1){ | + | if(n===1){ |
| - | cost = B; | + | cost=B; |
| - | } | + | }else if(n===2){ |
| - | | + | cost=B+M1; |
| - | cost = B + M1; | + | }else if(n===3){ |
| - | } | + | cost=B+2*M1; |
| - | | + | }else{ |
| - | cost = B + 2 * M1; | + | cost=B+2*M1+(n-3)*M2; |
| - | } | + | |
| - | | + | |
| - | cost = B + 2 * M1 + (n - 3) * M2; | + | |
| } | } | ||
| - | total += cost; | + | total+=cost; |
| } | } | ||
| } | } | ||
| Ligne 1819: | Ligne 796: | ||
| } | } | ||
| + | function updateCost(){ | ||
| + | document.getElementById(" | ||
| + | "Coût total : " | ||
| + | } | ||
| + | /* ========================================================= | ||
| + | | ||
| + | ========================================================= */ | ||
| - | function | + | function |
| - | document.getElementById( | + | |
| - | | + | |
| - | ).textContent= | + | |
| - | "Coût total : "+ | + | |
| - | calcCost(); | + | |
| - | } | + | |
| + | return cb? | ||
| + | } | ||
| /* ========================================================= | /* ========================================================= | ||
| - | | + | |
| ========================================================= */ | ========================================================= */ | ||
| function calculate(){ | function calculate(){ | ||
| - | const race= | + | const race=races[raceSelect.value]; |
| - | | + | |
| - | | + | |
| - | | + | |
| - | + | ||
| - | + | ||
| - | if(!race){ | + | |
| - | return; | + | |
| - | } | + | |
| + | if(!race) return; | ||
| updateCost(); | updateCost(); | ||
| - | |||
| displayBase(); | displayBase(); | ||
| + | const char={...race}; | ||
| - | /* | + | /* Améliorations |
| - | Copie des stats raciales | + | |
| - | | + | |
| - | | + | for(const stat in costTable){ |
| - | + | ||
| - | + | ||
| - | | + | |
| - | const stat in race | + | |
| - | ){ | + | |
| - | + | ||
| - | char[stat]= | + | |
| - | race[stat]; | + | |
| - | } | + | |
| - | + | ||
| - | + | ||
| - | /* | + | |
| - | Ajout des améliorations | + | |
| - | */ | + | |
| - | + | ||
| - | for( | + | |
| - | | + | |
| - | | + | |
| - | + | ||
| - | const input= | + | |
| - | document.getElementById( | + | |
| - | " | + | |
| - | ); | + | |
| + | const input=document.getElementById(" | ||
| if(input){ | if(input){ | ||
| char[stat]= | char[stat]= | ||
| - | (char[stat] || 0)+ | + | (char[stat]||0)+ |
| - | ( | + | (parseInt(input.value,10)||0); |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| } | } | ||
| } | } | ||
| + | /* Equipements */ | ||
| - | | + | |
| - | Ajout équipement | + | |
| - | */ | + | |
| - | for( | + | |
| - | | + | |
| - | ){ | + | |
| - | | + | |
| - | slots[key].value; | + | |
| + | const item=equipments[Number(value)]; | ||
| - | | + | if(!item) continue; |
| - | continue; | + | |
| - | } | + | |
| - | + | ||
| - | + | ||
| - | const e= | + | |
| - | equipments[ | + | |
| - | Number(index) | + | |
| - | ]; | + | |
| - | + | ||
| - | + | ||
| - | | + | |
| - | | + | |
| - | } | + | |
| - | for( | + | for(const [stat,bonus] of Object.entries(item.stats||{})){ |
| - | | + | |
| - | | + | |
| - | e.stats || {} | + | |
| - | | + | |
| - | | + | |
| - | if( | + | if(typeof |
| - | | + | |
| - | | + | |
| - | | + | |
| - | char[stat]= | + | char[stat]=(char[stat]||0)+bonus; |
| - | | + | |
| - | value; | + | |
| } | } | ||
| } | } | ||
| } | } | ||
| + | /* Passifs */ | ||
| - | | + | |
| - | Sorts actifs | + | const couverture=isChecked(1); |
| - | | + | const reflexes=isChecked(2); |
| + | | ||
| - | | + | |
| - | let bestProt=0; | + | |
| - | | + | |
| + | ? null | ||
| + | : equipments[Number(rightHand.value)]; | ||
| + | const griffesActives= | ||
| + | griffes&& | ||
| - | | + | |
| - | | + | |
| + | } | ||
| - | const cb= | + | /* Sorts : bonus de plus grande valeur absolue */ |
| - | document.getElementById( | + | |
| - | " | + | |
| - | ); | + | |
| + | let bestDex=0; | ||
| + | let bestProt=0; | ||
| - | if( | + | const spellDetails=[]; |
| - | cb && | + | |
| - | cb.checked | + | |
| - | ){ | + | |
| - | bestDex= | + | spells.forEach((spell,i)=>{ |
| - | Math.max( | + | |
| - | bestDex, | + | |
| - | s.dex | + | |
| - | | + | |
| + | const cb=document.getElementById(" | ||
| - | bestProt= | + | if(!cb||!cb.checked) return; |
| - | Math.max( | + | |
| - | bestProt, | + | |
| - | s.prot | + | |
| - | | + | |
| + | if(Math.abs(spell.dex)> | ||
| + | bestDex=spell.dex; | ||
| + | } | ||
| - | spellDetails.push( | + | if(Math.abs(spell.prot)> |
| - | s.name | + | |
| - | | + | |
| - | | + | |
| } | } | ||
| - | ); | ||
| + | spellDetails.push(spell.name); | ||
| + | }); | ||
| - | document.getElementById( | + | document.getElementById(" |
| - | | + | |
| - | | + | |
| spellDetails.length | spellDetails.length | ||
| + | ? "Sorts actifs : " | ||
| + | " | Bonus Dex : " | ||
| + | " | Protection : " | ||
| + | : ""; | ||
| - | ? | + | /* Dés */ |
| - | "Sorts actifs : "+ | + | const ccDice=char.cc*2; |
| - | | + | const ctDice=char.ct*2; |
| - | " | + | const fmDice=char.fm*2; |
| - | | + | const agiDice=char.agi*2; |
| - | " | Protection : "+ | + | |
| - | bestProt | + | |
| - | : | + | /* Fiche personnage */ |
| - | | + | let result="=== PERSONNAGE ===\n\n"; |
| + | statOrder.forEach(stat=> | ||
| - | /* | + | if(char[stat]!==undefined){ |
| - | Dés de caractéristiques | + | |
| - | */ | + | |
| - | const ccDice= | + | |
| - | char.cc*2; | + | (statLabels[stat]||stat)+ |
| - | + | ": " | |
| - | const ctDice= | + | |
| - | char.ct*2; | + | |
| - | + | ||
| - | const fmDice= | + | |
| - | char.fm*2; | + | |
| - | + | ||
| - | const agiDice= | + | |
| - | char.agi*2; | + | |
| - | + | ||
| - | + | ||
| - | /* | + | |
| - | | + | |
| - | */ | + | |
| - | + | ||
| - | let result=""; | + | |
| - | + | ||
| - | + | ||
| - | | + | |
| - | "=== PERSONNAGE ===\n\n"; | + | |
| - | + | ||
| - | + | ||
| - | /* | + | |
| - | Même ordre que les stats | + | |
| - | de base et les améliorations. | + | |
| - | */ | + | |
| - | + | ||
| - | statOrder.forEach( | + | |
| - | stat=> | + | |
| - | + | ||
| - | if( | + | |
| - | | + | |
| - | undefined | + | |
| - | ){ | + | |
| - | + | ||
| - | result += | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | ": "+ | + | |
| - | | + | |
| - | | + | |
| - | } | + | |
| } | } | ||
| - | ); | + | |
| + | if(griffes){ | ||
| - | | + | |
| - | "\n=== COMBAT ===\n\n"; | + | ? |
| + | : "\nGriffes : inactif (arme autre que ceste)."; | ||
| + | } | ||
| + | result+=" | ||
| - | /* | + | /* Touchers |
| - | CC / CT / FM | + | |
| - | | + | |
| const finalCC= | const finalCC= | ||
| - | ccDice+ | + | ccDice+bestDex+(fulgurance? |
| - | | + | |
| const finalCT= | const finalCT= | ||
| - | ctDice+ | + | ctDice+bestDex; |
| - | | + | |
| const finalFM= | const finalFM= | ||
| - | fmDice+ | + | fmDice+bestDex; |
| - | | + | |
| + | result+=" | ||
| + | result+=" | ||
| + | result+=" | ||
| - | | + | |
| - | " | + | |
| - | finalCC+ | + | |
| - | " | + | |
| + | result+=" | ||
| - | | + | for(let cases=1; |
| - | " | + | |
| - | finalCT+ | + | |
| - | " | + | |
| - | + | ||
| - | + | ||
| - | result += | + | |
| - | "FM : "+ | + | |
| - | finalFM+ | + | |
| - | " | + | |
| - | + | ||
| - | + | ||
| - | /* | + | |
| - | Tir selon distance | + | |
| - | */ | + | |
| - | + | ||
| - | result += | + | |
| - | "\n=== TIR ===\n\n"; | + | |
| - | + | ||
| - | + | ||
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | + | ||
| - | let ctDistance= | + | |
| - | finalCT; | + | |
| + | let ctDistance=finalCT; | ||
| if(cases> | if(cases> | ||
| - | + | | |
| - | | + | |
| - | | + | |
| } | } | ||
| - | + | | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| } | } | ||
| + | /* Esquive CAC */ | ||
| - | | + | |
| - | Esquive CAC | + | |
| - | */ | + | |
| - | | + | |
| - | | + | |
| - | ccDice, | + | |
| - | agiDice | + | |
| - | )+ | + | |
| - | bestProt; | + | |
| + | /* Esquive tir */ | ||
| - | | + | |
| - | | + | |
| - | */ | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| + | | ||
| ); | ); | ||
| + | }else if(reflexes){ | ||
| - | if( | + | evadeStat=Math.floor( |
| - | fulg && | + | char.agi*0.85+char.cc*0.15 |
| - | fulg.checked | + | ); |
| - | ){ | + | |
| - | meleeDodge+=1; | + | }else{ |
| + | |||
| + | evadeStat=Math.max( | ||
| + | Math.floor(char.cc*0.75+char.agi*0.25), | ||
| + | Math.floor(char.agi*0.75+char.cc*0.25) | ||
| + | ); | ||
| } | } | ||
| + | const fulguranceDodge= | ||
| + | fulgurance? | ||
| - | | + | |
| - | | + | |
| + | result+=" | ||
| + | result+=" | ||
| - | | + | |
| - | "Esquive | + | |
| - | meleeDodge+ | + | |
| - | " | + | |
| + | const fmDodge=fmDice+bestProt; | ||
| - | | + | |
| - | | + | |
| - | */ | + | |
| - | | + | |
| - | agiDice+ | + | |
| - | bestProt; | + | |
| + | result+=" | ||
| + | result+=" | ||
| - | | + | |
| - | "\n=== ESQUIVE TIR ===\n\n" | + | |
| + | const threshold=6+6*lvl; | ||
| - | | + | |
| - | "Esquive tir : "+ | + | "Sort niveau " |
| - | | + | " (seuil " |
| - | " | + | |
| + | " | ||
| + | } | ||
| - | + | | |
| - | /* | + | |
| - | | + | |
| - | */ | + | |
| - | + | ||
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| } | } | ||
| - | |||
| /* ========================================================= | /* ========================================================= | ||
| | | ||
| + | | ||
| ========================================================= */ | ========================================================= */ | ||
| function calculatePush(){ | function calculatePush(){ | ||
| - | const F= | + | const F=parseInt( |
| - | | + | document.getElementById(" |
| - | document.getElementById( | + | )||0; |
| - | | + | |
| - | | + | |
| - | ) || 0; | + | |
| + | const E=parseInt( | ||
| + | document.getElementById(" | ||
| + | )||0; | ||
| - | const E= | + | const Agi=parseInt( |
| - | | + | document.getElementById(" |
| - | document.getElementById( | + | )||0; |
| - | | + | |
| - | | + | |
| - | ) || 0; | + | |
| + | const PV=parseInt( | ||
| + | document.getElementById(" | ||
| + | )||0; | ||
| - | const Agi= | + | const buff=parseInt( |
| - | | + | document.getElementById(" |
| - | document.getElementById( | + | )||0; |
| - | | + | |
| - | | + | |
| - | ) || 0; | + | |
| + | const debuff=parseInt( | ||
| + | document.getElementById(" | ||
| + | )||0; | ||
| - | const PV= | + | const stab=parseInt( |
| - | | + | document.getElementById(" |
| - | document.getElementById( | + | )||0; |
| - | | + | |
| - | | + | |
| - | ) || 0; | + | |
| + | const finalF=F+buff+debuff+stab; | ||
| - | const buff= | + | const score=finalF+E+Agi; |
| - | parseInt( | + | |
| - | document.getElementById( | + | |
| - | " | + | |
| - | ).value | + | |
| - | ) || 0; | + | |
| - | + | | |
| - | const debuff= | + | "Force finale : " |
| - | parseInt( | + | "\nEndurance |
| - | | + | "\nAgilité |
| - | | + | "\nPV actuels : " |
| - | | + | "\n\nScore |
| - | ) || 0; | + | |
| - | + | ||
| - | + | ||
| - | const stab= | + | |
| - | parseInt( | + | |
| - | document.getElementById( | + | |
| - | " | + | |
| - | ).value | + | |
| - | ) || 0; | + | |
| - | + | ||
| - | + | ||
| - | const finalF= | + | |
| - | F+ | + | |
| - | buff+ | + | |
| - | debuff+ | + | |
| - | stab; | + | |
| - | + | ||
| - | + | ||
| - | const score= | + | |
| - | finalF+ | + | |
| - | E+ | + | |
| - | Agi; | + | |
| - | + | ||
| - | + | ||
| - | const result= | + | |
| - | "Force finale : "+ | + | |
| - | | + | |
| - | "\n"+ | + | |
| - | " | + | |
| - | | + | |
| - | "\n"+ | + | |
| - | " | + | |
| - | | + | |
| - | "\n"+ | + | |
| - | " | + | |
| - | | + | |
| - | "\n\n"+ | + | |
| - | " | + | |
| - | | + | |
| - | + | ||
| - | + | ||
| - | document.getElementById( | + | |
| - | " | + | |
| - | ).textContent= | + | |
| - | result; | + | |
| } | } | ||
| - | + | /* EVENEMENTS POUSSEE */ | |
| - | /* ========================================================= | + | |
| - | EVENEMENTS POUSSEE | + | |
| - | ========================================================= | + | |
| [ | [ | ||
| Ligne 2323: | Ligne 1100: | ||
| ].forEach(id=> | ].forEach(id=> | ||
| - | document.getElementById( | + | |
| - | | + | |
| - | ).addEventListener( | + | |
| - | " | + | |
| - | calculatePush | + | |
| - | | + | |
| - | + | el.addEventListener(" | |
| - | document.getElementById( | + | |
| - | id | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| }); | }); | ||
| - | |||
| /* ========================================================= | /* ========================================================= | ||
| Ligne 2345: | Ligne 1111: | ||
| function resetAll(){ | function resetAll(){ | ||
| - | |||
| - | /* | ||
| - | Race | ||
| - | */ | ||
| raceSelect.selectedIndex=0; | raceSelect.selectedIndex=0; | ||
| + | statOrder.forEach(stat=> | ||
| - | /* | + | const input=document.getElementById(" |
| - | | + | |
| - | */ | + | |
| - | statOrder.forEach( | + | |
| - | stat=> | + | input.value=0; |
| - | + | ||
| - | const input= | + | |
| - | document.getElementById( | + | |
| - | " | + | |
| - | ); | + | |
| - | + | ||
| - | + | ||
| - | | + | |
| - | + | ||
| - | | + | |
| - | } | + | |
| } | } | ||
| - | ); | + | |
| - | + | ||
| - | + | ||
| - | /* | + | |
| - | | + | |
| - | */ | + | |
| resetSlots(); | resetSlots(); | ||
| + | skills.forEach((s, | ||
| - | /* | + | const cb=document.getElementById(" |
| - | | + | |
| - | */ | + | |
| - | skills.forEach( | + | |
| - | (s, | + | cb.checked=false; |
| - | + | ||
| - | const cb= | + | |
| - | document.getElementById( | + | |
| - | " | + | |
| - | ); | + | |
| - | + | ||
| - | + | ||
| - | | + | |
| - | cb.checked=false; | + | |
| - | } | + | |
| } | } | ||
| - | ); | + | |
| + | spells.forEach((s, | ||
| - | /* | + | const cb=document.getElementById(" |
| - | | + | |
| - | */ | + | |
| - | spells.forEach( | + | |
| - | (s, | + | cb.checked=false; |
| - | + | ||
| - | const cb= | + | |
| - | document.getElementById( | + | |
| - | " | + | |
| - | ); | + | |
| - | + | ||
| - | + | ||
| - | | + | |
| - | cb.checked=false; | + | |
| - | } | + | |
| } | } | ||
| - | ); | + | |
| - | + | ||
| - | + | ||
| - | /* | + | |
| - | | + | |
| - | */ | + | |
| - | + | ||
| - | document.getElementById( | + | |
| - | " | + | |
| - | ).value=10; | + | |
| - | + | ||
| - | + | ||
| - | document.getElementById( | + | |
| - | " | + | |
| - | ).value=0; | + | |
| - | + | ||
| - | + | ||
| - | document.getElementById( | + | |
| - | " | + | |
| - | ).value=5; | + | |
| - | + | ||
| - | + | ||
| - | document.getElementById( | + | |
| - | " | + | |
| - | ).value=5; | + | |
| - | + | ||
| - | + | ||
| - | document.getElementById( | + | |
| - | " | + | |
| - | ).value=50; | + | |
| - | + | ||
| - | + | ||
| - | document.getElementById( | + | |
| - | " | + | |
| - | ).value=0; | + | |
| - | + | ||
| - | + | ||
| - | document.getElementById( | + | |
| - | " | + | |
| - | ).value=0; | + | |
| + | document.getElementById(" | ||
| + | document.getElementById(" | ||
| + | document.getElementById(" | ||
| + | document.getElementById(" | ||
| + | document.getElementById(" | ||
| + | document.getElementById(" | ||
| + | document.getElementById(" | ||
| fillEquip(); | fillEquip(); | ||
| - | |||
| calculate(); | calculate(); | ||
| - | |||
| calculatePush(); | calculatePush(); | ||
| } | } | ||
| - | |||
| /* ========================================================= | /* ========================================================= | ||
| - | | + | |
| ========================================================= */ | ========================================================= */ | ||
| - | function | + | function |
| const data={ | const data={ | ||
| - | + | | |
| - | | + | |
| - | | + | |
| upgrades: | upgrades: | ||
| - | |||
| equipment: | equipment: | ||
| - | |||
| skills:[], | skills:[], | ||
| - | |||
| spells:[] | spells:[] | ||
| - | |||
| }; | }; | ||
| + | statOrder.forEach(stat=> | ||
| - | /* | + | const input=document.getElementById(" |
| - | | + | |
| - | */ | + | |
| - | statOrder.forEach( | + | |
| - | stat=> | + | data.upgrades[stat]=parseInt(input.value,10)||0; |
| - | + | ||
| - | const input= | + | |
| - | document.getElementById( | + | |
| - | " | + | |
| - | ); | + | |
| - | + | ||
| - | + | ||
| - | | + | |
| - | + | ||
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | } | + | |
| } | } | ||
| - | ); | + | |
| - | + | | |
| - | /* | + | data.equipment[key]=slots[key].value; |
| - | | + | |
| - | */ | + | |
| - | + | ||
| - | | + | |
| - | | + | |
| - | | + | |
| - | + | ||
| - | data.equipment[key]= | + | |
| - | | + | |
| } | } | ||
| + | skills.forEach((s, | ||
| - | /* | + | const cb=document.getElementById(" |
| - | | + | |
| - | */ | + | |
| - | skills.forEach( | + | |
| - | (s, | + | data.skills.push(i); |
| - | + | ||
| - | const cb= | + | |
| - | document.getElementById( | + | |
| - | " | + | |
| - | ); | + | |
| - | + | ||
| - | + | ||
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | + | ||
| - | | + | |
| - | } | + | |
| } | } | ||
| - | ); | + | |
| + | spells.forEach((s, | ||
| - | /* | + | const cb=document.getElementById(" |
| - | | + | |
| - | */ | + | |
| - | spells.forEach( | + | |
| - | (s, | + | data.spells.push(i); |
| - | + | ||
| - | const cb= | + | |
| - | document.getElementById( | + | |
| - | " | + | |
| - | ); | + | |
| - | + | ||
| - | + | ||
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | + | ||
| - | | + | |
| - | } | + | |
| } | } | ||
| - | ); | + | |
| - | + | return | |
| - | const text= | + | |
| - | JSON.stringify( | + | |
| - | | + | |
| - | null, | + | |
| - | 2 | + | |
| - | ); | + | |
| - | + | ||
| - | + | ||
| - | prompt( | + | |
| - | " | + | |
| - | text | + | |
| - | ); | + | |
| } | } | ||
| + | function applyBuildData(data){ | ||
| - | /* ========================================================= | + | if(data.race&& |
| - | IMPORT | + | raceSelect.value=data.race; |
| - | ========================================================= */ | + | } |
| - | function importBuild(){ | + | if(data.upgrades){ |
| - | const text= | + | statOrder.forEach(stat=>{ |
| - | prompt( | + | |
| - | " | + | |
| - | ); | + | |
| + | const input=document.getElementById(" | ||
| - | | + | |
| - | | + | input.value=data.upgrades[stat]; |
| + | } | ||
| + | | ||
| } | } | ||
| + | fillEquip(); | ||
| - | | + | |
| - | | + | |
| - | JSON.parse(text); | + | |
| + | if(data.equipment[key]!==undefined){ | ||
| - | /* | + | const wanted=String(data.equipment[key]); |
| - | | + | |
| - | */ | + | |
| - | if( | + | const exists=[...slots[key].options] |
| - | data.race && | + | |
| - | races[data.race] | + | |
| - | ){ | + | |
| - | raceSelect.value= | + | if(exists){ |
| - | | + | slots[key].value=wanted; |
| + | | ||
| + | } | ||
| } | } | ||
| + | } | ||
| + | skills.forEach((s, | ||
| - | | + | |
| - | | + | |
| - | */ | + | |
| - | if(data.upgrades){ | + | if(cb){ |
| + | cb.checked= | ||
| + | Array.isArray(data.skills)&& | ||
| + | data.skills.includes(i); | ||
| + | } | ||
| + | }); | ||
| - | statOrder.forEach( | + | spells.forEach((s,i)=>{ |
| - | stat=>{ | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | + | | |
| - | | + | cb.checked= |
| - | input && | + | |
| - | data.upgrades[stat] !== | + | |
| - | undefined | + | |
| - | | + | |
| - | + | ||
| - | input.value= | + | |
| - | data.upgrades[stat]; | + | |
| - | } | + | |
| - | | + | |
| - | | + | |
| } | } | ||
| + | }); | ||
| + | /* Corrige les configurations importées dépassant la limite */ | ||
| - | /* | + | let count=0; |
| - | | + | |
| - | */ | + | |
| - | fillEquip(); | + | for(const key of [ |
| + | " | ||
| + | " | ||
| + | ]){ | ||
| + | if(slots[key].value!=="" | ||
| - | if(data.equipment){ | + | count++; |
| - | | + | |
| - | const key in slots | + | slots[key].value="" |
| - | | + | |
| - | + | ||
| - | | + | |
| - | data.equipment[key] !== | + | |
| - | undefined | + | |
| - | ){ | + | |
| - | + | ||
| - | | + | |
| - | data.equipment[key]; | + | |
| - | } | + | |
| } | } | ||
| } | } | ||
| + | } | ||
| + | displayAllEquipStats(); | ||
| + | checkLimit(); | ||
| + | calculate(); | ||
| + | } | ||
| - | /* | + | function exportBuild(){ |
| - | | + | |
| - | */ | + | |
| - | skills.forEach( | + | const text=JSON.stringify(getBuildData(),null,2); |
| - | | + | |
| - | const cb= | + | prompt("Copiez cette configuration :",text); |
| - | document.getElementById( | + | } |
| - | | + | |
| - | | + | |
| + | function importBuild(){ | ||
| - | if(cb){ | + | |
| - | + | ||
| - | cb.checked= | + | |
| - | Array.isArray( | + | |
| - | data.skills | + | |
| - | ) && | + | |
| - | data.skills.includes(i); | + | |
| - | } | + | |
| - | } | + | |
| - | ); | + | |
| - | + | ||
| - | + | ||
| - | /* | + | |
| - | | + | |
| - | */ | + | |
| - | + | ||
| - | spells.forEach( | + | |
| - | (s, | + | |
| - | + | ||
| - | | + | |
| - | document.getElementById( | + | |
| - | | + | |
| - | ); | + | |
| - | + | ||
| - | + | ||
| - | if(cb){ | + | |
| - | + | ||
| - | cb.checked= | + | |
| - | Array.isArray( | + | |
| - | data.spells | + | |
| - | ) && | + | |
| - | data.spells.includes(i); | + | |
| - | } | + | |
| - | } | + | |
| - | ); | + | |
| - | + | ||
| - | + | ||
| - | displayAllEquipStats(); | + | |
| - | + | ||
| - | checkLimit(); | + | |
| - | + | ||
| - | calculate(); | + | |
| + | if(!text) return; | ||
| + | try{ | ||
| + | applyBuildData(JSON.parse(text)); | ||
| }catch(e){ | }catch(e){ | ||
| - | + | | |
| - | | + | |
| - | | + | |
| - | | + | |
| } | } | ||
| } | } | ||
| - | |||
| - | |||
| - | /* ========================================================= | ||
| - | LIEN DE PARTAGE | ||
| - | ========================================================= */ | ||
| function copyLink(){ | function copyLink(){ | ||
| - | const data={ | + | const encoded=btoa( |
| - | + | | |
| - | | + | |
| - | raceSelect.value, | + | |
| - | + | ||
| - | upgrades: | + | |
| - | + | ||
| - | equipment: | + | |
| - | + | ||
| - | skills: | + | |
| - | + | ||
| - | spells:[] | + | |
| - | + | ||
| - | }; | + | |
| - | + | ||
| - | + | ||
| - | statOrder.forEach( | + | |
| - | stat=> | + | |
| - | + | ||
| - | const input= | + | |
| - | document.getElementById( | + | |
| - | " | + | |
| - | ); | + | |
| - | + | ||
| - | + | ||
| - | if(input){ | + | |
| - | + | ||
| - | data.upgrades[stat]= | + | |
| - | parseInt( | + | |
| - | input.value | + | |
| - | | + | |
| - | } | + | |
| - | } | + | |
| ); | ); | ||
| - | |||
| - | |||
| - | for( | ||
| - | const key in slots | ||
| - | ){ | ||
| - | |||
| - | data.equipment[key]= | ||
| - | slots[key].value; | ||
| - | } | ||
| - | |||
| - | |||
| - | skills.forEach( | ||
| - | (s,i)=>{ | ||
| - | |||
| - | const cb= | ||
| - | document.getElementById( | ||
| - | " | ||
| - | ); | ||
| - | |||
| - | |||
| - | if( | ||
| - | cb && | ||
| - | cb.checked | ||
| - | ){ | ||
| - | |||
| - | data.skills.push(i); | ||
| - | } | ||
| - | } | ||
| - | ); | ||
| - | |||
| - | |||
| - | spells.forEach( | ||
| - | (s,i)=>{ | ||
| - | |||
| - | const cb= | ||
| - | document.getElementById( | ||
| - | " | ||
| - | ); | ||
| - | |||
| - | |||
| - | if( | ||
| - | cb && | ||
| - | cb.checked | ||
| - | ){ | ||
| - | |||
| - | data.spells.push(i); | ||
| - | } | ||
| - | } | ||
| - | ); | ||
| - | |||
| - | |||
| - | const encoded= | ||
| - | btoa( | ||
| - | encodeURIComponent( | ||
| - | JSON.stringify(data) | ||
| - | ) | ||
| - | ); | ||
| - | |||
| const url= | const url= | ||
| location.origin+ | location.origin+ | ||
| location.pathname+ | location.pathname+ | ||
| - | "? | + | "? |
| - | | + | |
| + | if(navigator.clipboard&& | ||
| - | | + | |
| - | | + | |
| - | ); | + | .catch(()=> |
| + | }else{ | ||
| - | alert( | + | prompt("Copiez ce lien :",url); |
| - | | + | |
| - | | + | |
| } | } | ||
| - | |||
| - | |||
| - | /* ========================================================= | ||
| - | | ||
| - | ========================================================= */ | ||
| function loadFromURL(){ | function loadFromURL(){ | ||
| - | const params= | + | const params=new URLSearchParams(location.search); |
| - | | + | |
| - | | + | |
| - | | + | |
| + | const encoded=params.get(" | ||
| - | | + | if(!encoded) return; |
| - | params.get(" | + | |
| - | + | ||
| - | + | ||
| - | | + | |
| - | | + | |
| - | } | + | |
| try{ | try{ | ||
| - | const data= | + | const data=JSON.parse( |
| - | | + | decodeURIComponent(atob(encoded)) |
| - | decodeURIComponent( | + | |
| - | | + | |
| - | | + | |
| - | ); | + | |
| - | + | ||
| - | + | ||
| - | if( | + | |
| - | data.race && | + | |
| - | races[data.race] | + | |
| - | ){ | + | |
| - | + | ||
| - | raceSelect.value= | + | |
| - | data.race; | + | |
| - | } | + | |
| - | + | ||
| - | + | ||
| - | if(data.upgrades){ | + | |
| - | + | ||
| - | statOrder.forEach( | + | |
| - | stat=> | + | |
| - | + | ||
| - | const input= | + | |
| - | document.getElementById( | + | |
| - | " | + | |
| - | ); | + | |
| - | + | ||
| - | + | ||
| - | if( | + | |
| - | input && | + | |
| - | data.upgrades[stat] !== | + | |
| - | undefined | + | |
| - | ){ | + | |
| - | + | ||
| - | input.value= | + | |
| - | data.upgrades[stat]; | + | |
| - | } | + | |
| - | } | + | |
| - | ); | + | |
| - | } | + | |
| - | + | ||
| - | + | ||
| - | fillEquip(); | + | |
| - | + | ||
| - | + | ||
| - | if(data.equipment){ | + | |
| - | + | ||
| - | for( | + | |
| - | const key in slots | + | |
| - | ){ | + | |
| - | + | ||
| - | if( | + | |
| - | data.equipment[key] !== | + | |
| - | undefined | + | |
| - | ){ | + | |
| - | + | ||
| - | slots[key].value= | + | |
| - | data.equipment[key]; | + | |
| - | } | + | |
| - | } | + | |
| - | } | + | |
| - | + | ||
| - | + | ||
| - | skills.forEach( | + | |
| - | (s, | + | |
| - | + | ||
| - | const cb= | + | |
| - | document.getElementById( | + | |
| - | " | + | |
| - | ); | + | |
| - | + | ||
| - | + | ||
| - | if(cb){ | + | |
| - | + | ||
| - | cb.checked= | + | |
| - | Array.isArray( | + | |
| - | data.skills | + | |
| - | ) && | + | |
| - | data.skills.includes(i); | + | |
| - | } | + | |
| - | } | + | |
| ); | ); | ||
| - | + | applyBuildData(data); | |
| - | spells.forEach( | + | |
| - | (s, | + | |
| - | + | ||
| - | const cb= | + | |
| - | document.getElementById( | + | |
| - | " | + | |
| - | ); | + | |
| - | + | ||
| - | + | ||
| - | if(cb){ | + | |
| - | + | ||
| - | cb.checked= | + | |
| - | Array.isArray( | + | |
| - | | + | |
| - | ) && | + | |
| - | data.spells.includes(i); | + | |
| - | } | + | |
| - | } | + | |
| - | ); | + | |
| - | + | ||
| - | + | ||
| - | displayAllEquipStats(); | + | |
| - | + | ||
| - | checkLimit(); | + | |
| - | + | ||
| - | calculate(); | + | |
| }catch(e){ | }catch(e){ | ||
| - | console.log( | + | console.log(" |
| - | | + | |
| - | | + | |
| } | } | ||
| } | } | ||
| - | |||
| /* ========================================================= | /* ========================================================= | ||
| Ligne 3013: | Ligne 1357: | ||
| ========================================================= */ | ========================================================= */ | ||
| - | raceSelect.addEventListener( | + | raceSelect.addEventListener(" |
| - | | + | |
| - | | + | |
| - | + | ||
| - | resetSlots(); | + | |
| - | + | ||
| - | fillEquip(); | + | |
| - | + | ||
| - | calculate(); | + | |
| - | } | + | |
| - | ); | + | |
| + | resetSlots(); | ||
| + | fillEquip(); | ||
| + | calculate(); | ||
| + | }); | ||
| /* ========================================================= | /* ========================================================= | ||
| Ligne 3031: | Ligne 1369: | ||
| fillEquip(); | fillEquip(); | ||
| - | |||
| displayBase(); | displayBase(); | ||
| - | |||
| calculate(); | calculate(); | ||
| - | |||
| calculatePush(); | calculatePush(); | ||
| - | |||
| loadFromURL(); | loadFromURL(); | ||
simulateur_saison3_1.1790893118.txt.gz · Dernière modification : 2026/10/02 00:18 de nanaki
