@opfr/definitions 1.7.0 → 1.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/dist/index.d.ts +1 -0
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.es.js +233 -92
  4. package/dist/index.js +1 -0
  5. package/dist/index.js.map +1 -1
  6. package/dist/index.umd.js +1 -1
  7. package/dist/locales/fr/story.json +118 -0
  8. package/dist/story/constants.d.ts +7 -0
  9. package/dist/story/constants.d.ts.map +1 -0
  10. package/dist/story/constants.js +12 -0
  11. package/dist/story/constants.js.map +1 -0
  12. package/dist/story/index.d.ts +5 -0
  13. package/dist/story/index.d.ts.map +1 -0
  14. package/dist/story/index.js +4 -0
  15. package/dist/story/index.js.map +1 -0
  16. package/dist/story/stories/chapter-1/chapter.d.ts +3 -0
  17. package/dist/story/stories/chapter-1/chapter.d.ts.map +1 -0
  18. package/dist/story/stories/chapter-1/chapter.js +7 -0
  19. package/dist/story/stories/chapter-1/chapter.js.map +1 -0
  20. package/dist/story/stories/chapter-1/scenes.d.ts +3 -0
  21. package/dist/story/stories/chapter-1/scenes.d.ts.map +1 -0
  22. package/dist/story/stories/chapter-1/scenes.js +17 -0
  23. package/dist/story/stories/chapter-1/scenes.js.map +1 -0
  24. package/dist/story/stories/chapter-1/steps/stepsSceneOne.d.ts +3 -0
  25. package/dist/story/stories/chapter-1/steps/stepsSceneOne.d.ts.map +1 -0
  26. package/dist/story/stories/chapter-1/steps/stepsSceneOne.js +32 -0
  27. package/dist/story/stories/chapter-1/steps/stepsSceneOne.js.map +1 -0
  28. package/dist/story/stories/chapter-1/steps/stepsSceneTwo.d.ts +3 -0
  29. package/dist/story/stories/chapter-1/steps/stepsSceneTwo.d.ts.map +1 -0
  30. package/dist/story/stories/chapter-1/steps/stepsSceneTwo.js +50 -0
  31. package/dist/story/stories/chapter-1/steps/stepsSceneTwo.js.map +1 -0
  32. package/dist/story/stories/common.d.ts +3 -0
  33. package/dist/story/stories/common.d.ts.map +1 -0
  34. package/dist/story/stories/common.js +35 -0
  35. package/dist/story/stories/common.js.map +1 -0
  36. package/dist/story/types/actions.d.ts +19 -0
  37. package/dist/story/types/actions.d.ts.map +1 -0
  38. package/dist/story/types/actions.js +2 -0
  39. package/dist/story/types/actions.js.map +1 -0
  40. package/dist/story/types/chapters.d.ts +9 -0
  41. package/dist/story/types/chapters.d.ts.map +1 -0
  42. package/dist/story/types/chapters.js +2 -0
  43. package/dist/story/types/chapters.js.map +1 -0
  44. package/dist/story/types/common.d.ts +19 -0
  45. package/dist/story/types/common.d.ts.map +1 -0
  46. package/dist/story/types/common.js +2 -0
  47. package/dist/story/types/common.js.map +1 -0
  48. package/dist/story/types/index.d.ts +6 -0
  49. package/dist/story/types/index.d.ts.map +1 -0
  50. package/dist/story/types/index.js +2 -0
  51. package/dist/story/types/index.js.map +1 -0
  52. package/dist/story/types/scenes.d.ts +9 -0
  53. package/dist/story/types/scenes.d.ts.map +1 -0
  54. package/dist/story/types/scenes.js +2 -0
  55. package/dist/story/types/scenes.js.map +1 -0
  56. package/dist/story/types/steps/actionStep.d.ts +18 -0
  57. package/dist/story/types/steps/actionStep.d.ts.map +1 -0
  58. package/dist/story/types/steps/actionStep.js +2 -0
  59. package/dist/story/types/steps/actionStep.js.map +1 -0
  60. package/dist/story/types/steps/index.d.ts +8 -0
  61. package/dist/story/types/steps/index.d.ts.map +1 -0
  62. package/dist/story/types/steps/index.js +4 -0
  63. package/dist/story/types/steps/index.js.map +1 -0
  64. package/dist/story/types/steps/infoStep.d.ts +19 -0
  65. package/dist/story/types/steps/infoStep.d.ts.map +1 -0
  66. package/dist/story/types/steps/infoStep.js +2 -0
  67. package/dist/story/types/steps/infoStep.js.map +1 -0
  68. package/dist/story/types/steps/messageStep.d.ts +8 -0
  69. package/dist/story/types/steps/messageStep.d.ts.map +1 -0
  70. package/dist/story/types/steps/messageStep.js +2 -0
  71. package/dist/story/types/steps/messageStep.js.map +1 -0
  72. package/package.json +6 -10
  73. package/public/locales/fr/common.json +64 -0
  74. package/public/locales/fr/equipment.json +120 -0
  75. package/public/locales/fr/item.json +446 -0
  76. package/public/locales/fr/story.json +118 -0
  77. /package/{locales/common/fr.json → dist/locales/fr/common.json} +0 -0
  78. /package/{locales/equipments/fr.json → dist/locales/fr/equipment.json} +0 -0
  79. /package/{locales/items/fr.json → dist/locales/fr/item.json} +0 -0
package/package.json CHANGED
@@ -1,15 +1,13 @@
1
1
  {
2
2
  "name": "@opfr/definitions",
3
- "version": "1.7.0",
3
+ "version": "1.8.0",
4
4
  "private": false,
5
5
  "description": "OPFR definitions",
6
6
  "author": "Matthieu VEIGA",
7
7
  "scripts": {
8
8
  "prepublish": "npm run build",
9
- "build": "vite build && tsc",
10
- "generate:all": "npm run generate:image_ids && npm run generate:badges",
11
- "generate:image_ids": "node scripts/generateImageIds.mjs",
12
- "generate:badges": "node scripts/generateBadges.mjs"
9
+ "build": "npm run build:locales && vite build && tsc",
10
+ "build:locales": "node scripts/buildLocales.mjs"
13
11
  },
14
12
  "peerDependencies": {
15
13
  "@opfr/emojis": "^1.0.0",
@@ -30,19 +28,17 @@
30
28
  "import": "./dist/index.es.js",
31
29
  "require": "./dist/index.umd.js"
32
30
  },
33
- "./locales/common/*.json": "./locales/common/*.json",
34
- "./locales/items/*.json": "./locales/items/*.json",
35
- "./locales/equipments/*.json": "./locales/equipments/*.json",
31
+ "./public/locales/*": "./public/locales/*",
36
32
  "./assets/*": "./assets/*"
37
33
  },
38
34
  "files": [
39
35
  "dist",
40
- "locales",
36
+ "public",
41
37
  "assets"
42
38
  ],
43
39
  "eslintIgnore": [
44
40
  "node_modules",
45
41
  "dist"
46
42
  ],
47
- "gitHead": "415ffc7bbbf05e8f88f7f87296c9dd81a227edbd"
43
+ "gitHead": "de020619b61917c338996a67c13a8bb2d11c8e59"
48
44
  }
@@ -0,0 +1,64 @@
1
+ {
2
+ "xp": {
3
+ "user": "{{amount}} {{emoji}}",
4
+ "crew": "(équipage: {{amount}} {{emoji}})"
5
+ },
6
+ "sort": {
7
+ "null": "Aucun tri",
8
+ "quantity": "Quantité",
9
+ "category": "Catégorie",
10
+ "alpha": "Alphabétique"
11
+ },
12
+ "ranks": {
13
+ "BASIC": {
14
+ "text_one": "basique",
15
+ "text_other": "basiques"
16
+ },
17
+ "COMMON": {
18
+ "text_one": "commun",
19
+ "text_m_one": "commun",
20
+ "text_f_one": "commune",
21
+ "text_other": "communs",
22
+ "text_m_other": "communs",
23
+ "text_f_other": "communes"
24
+ },
25
+ "RARE": {
26
+ "text_one": "rare",
27
+ "text_other": "rares"
28
+ },
29
+ "EPIC": {
30
+ "text_one": "épique",
31
+ "text_other": "épiques"
32
+ },
33
+ "LEGENDARY": {
34
+ "text_one": "légendaire",
35
+ "text_other": "légendaires"
36
+ },
37
+ "MYTHIC": {
38
+ "text_one": "mythique",
39
+ "text_other": "mythiques"
40
+ }
41
+ },
42
+ "characteristics": {
43
+ "agility": "Agilité",
44
+ "agility_min": "Ag.",
45
+ "strength": "Force",
46
+ "strength_min": "Fo.",
47
+ "intelligence": "Intelligence",
48
+ "intelligence_min": "Int.",
49
+ "chance": "Chance",
50
+ "chance_min": "Ch.",
51
+ "vitality": "Vitalité",
52
+ "vitality_min": "Vit.",
53
+ "wisdom": "Sagesse",
54
+ "wisdom_min": "Sa.",
55
+ "points_one": "1 point",
56
+ "points_other": "{{count}} points"
57
+ },
58
+ "factions": {
59
+ "pirate": "Pirate",
60
+ "marine": "Marine",
61
+ "revolutionary": "Révolutionnaire",
62
+ "citizen": "Citoyen"
63
+ }
64
+ }
@@ -0,0 +1,120 @@
1
+ {
2
+ "equipment": {
3
+ "adventurer": {
4
+ "hat": {
5
+ "name": "Chapeau de l'Aventurier",
6
+ "description": "Large, symbolique, beaucoup d'histoires cachées dedans."
7
+ },
8
+ "necklace": {
9
+ "name": "Collier de l'Aventurier",
10
+ "description": "Porter le monde entier à son doigt, une île à la fois. (Note : Adapté en collier)"
11
+ },
12
+ "outfit": {
13
+ "name": "Tenue de l'Aventurier",
14
+ "description": "Confortable, solide, et suffisamment neutre pour ne pas se faire remarquer… trop."
15
+ },
16
+ "ring": {
17
+ "name": "Anneau de l'Aventurier",
18
+ "description": "Porter le monde entier à son doigt, une île à la fois."
19
+ },
20
+ "weapon": {
21
+ "name": "Dague de l'Aventurier",
22
+ "description": "Courte, rapide, et parfaite pour les situations où l'épée prend trop de place."
23
+ },
24
+ "boot": {
25
+ "name": "Bottes de l'Aventurier",
26
+ "description": "Elles ont vu des routes impossibles et en redemandent."
27
+ }
28
+ },
29
+ "marine": {
30
+ "hat": {
31
+ "name": "Chapeau du Marine",
32
+ "description": "Il indique qui vous êtes avant même que vous ayez dit un mot."
33
+ },
34
+ "outfit": {
35
+ "name": "Tenue du Marine",
36
+ "description": "Propre, droite, réglementaire, tout ce que la vie en mer n'est pas."
37
+ },
38
+ "ring": {
39
+ "name": "Anneau du Marine",
40
+ "description": "Symbole d'un serment, qu'on ait envie de le tenir ou non."
41
+ },
42
+ "weapon": {
43
+ "name": "Épée du Marine",
44
+ "description": "Standard, fiable, et portée par ceux qui croient encore en la justice."
45
+ }
46
+ },
47
+ "pirate": {
48
+ "hat": {
49
+ "name": "Chapeau du Pirate",
50
+ "description": "Ça dit tout : liberté, chaos, et une totale absence de règles vestimentaires."
51
+ },
52
+ "outfit": {
53
+ "name": "Tenue du Pirate",
54
+ "description": "Elle a vu des combats, des fêtes, et des tempêtes, et elle ne s'en excuse pas."
55
+ },
56
+ "ring": {
57
+ "name": "Anneau du Pirate",
58
+ "description": "Aucune règle, aucune pitié, beaucoup de style."
59
+ },
60
+ "weapon": {
61
+ "name": "Pistolet du Pirate",
62
+ "description": "Bruyant, imprévisible, et idéal pour mettre fin à une conversation ennuyeuse."
63
+ }
64
+ },
65
+ "revolutionary": {
66
+ "hat": {
67
+ "name": "Bandeau du Révolutionnaire",
68
+ "description": "Discret, déterminé, et qui dit clairement que vous n'êtes pas du côté du gouvernement."
69
+ },
70
+ "outfit": {
71
+ "name": "Tenue du Révolutionnaire",
72
+ "description": "Sobre, fonctionnelle, et taillée pour renverser des empires."
73
+ },
74
+ "ring": {
75
+ "name": "Anneau du Révolutionnaire",
76
+ "description": "Pour ceux qui portent leurs convictions même quand ça coûte cher."
77
+ },
78
+ "boot": {
79
+ "name": "Bottes du Révolutionnaire",
80
+ "description": "Faites pour courir vers le danger ou depuis les autorités, souvent les deux."
81
+ }
82
+ },
83
+ "herborist": {
84
+ "hat": {
85
+ "name": "Chapeau du Petit Herboriste",
86
+ "description": "Large et protecteur, idéal pour les longues journées de cueillette."
87
+ },
88
+ "outfit": {
89
+ "name": "Tenue du Petit Herboriste",
90
+ "description": "Verte, pleine de poches, et qui sent toujours un peu la nature sauvage."
91
+ },
92
+ "weapon": {
93
+ "name": "Gants du Petit Herboriste",
94
+ "description": "Protègent des plantes venimeuses et donnent l'air studieux."
95
+ },
96
+ "boot": {
97
+ "name": "Sandales du Petit Herboriste",
98
+ "description": "Légères, pratiques, et étonnamment résistantes aux piqûres de plantes."
99
+ }
100
+ },
101
+ "little_blacksmith": {
102
+ "necklace": {
103
+ "name": "Collier du Petit Forgeron",
104
+ "description": "Un talisman d'atelier qui porte chance… surtout quand on rate."
105
+ },
106
+ "outfit": {
107
+ "name": "Tenue du Petit Forgeron",
108
+ "description": "Protège des étincelles et donne l'air sérieux, même quand on débute."
109
+ },
110
+ "ring": {
111
+ "name": "Anneau du Petit Forgeron",
112
+ "description": "Gravé à la sueur du premier essai, ça ne s'oublie pas."
113
+ },
114
+ "weapon": {
115
+ "name": "Marteau du Petit Forgeron",
116
+ "description": "Trop petit pour les pros, parfait pour commencer à faire des dégâts."
117
+ }
118
+ }
119
+ }
120
+ }
@@ -0,0 +1,446 @@
1
+ {
2
+ "item": {
3
+ "resource": {
4
+ "fishbone": {
5
+ "name": "Arête de poisson",
6
+ "description": "Inutile seule, dangereuse dans la gorge, indispensable dans les bonnes mains."
7
+ },
8
+ "cereal": {
9
+ "name": "Céréale",
10
+ "description": "La base de tout repas qui se respecte et de tout marin qui ne veut pas mourir de faim."
11
+ },
12
+ "flour": {
13
+ "name": "Farine",
14
+ "description": "Blanche, poudreuse, et responsable de la moitié des explosions accidentelles en cuisine."
15
+ },
16
+ "milk": {
17
+ "name": "Lait",
18
+ "description": "Frais, nourrissant, et étrangement difficile à conserver sur un bateau."
19
+ },
20
+ "egg": {
21
+ "name": "Œufs",
22
+ "description": "Fragiles comme les promesses, mais bien plus utiles en omelette."
23
+ },
24
+ "sea_water": {
25
+ "name": "Eau de mer",
26
+ "description": "Gratuite, illimitée, et absolument imbuvable, mais idéale pour cuisiner."
27
+ },
28
+ "sea_salt": {
29
+ "name": "Sel marin",
30
+ "description": "L'assaisonnement universel des mers du monde, et des plaies ouvertes, mais c'est un autre usage."
31
+ },
32
+ "sugar": {
33
+ "name": "Sucre",
34
+ "description": "Doux, tentant, et capable de transformer un marin bougon en enfant heureux."
35
+ },
36
+ "shark": {
37
+ "name": "Requin",
38
+ "description": "Il faut du courage pour le pêcher… et encore plus pour le cuisiner sans se faire manger avant."
39
+ },
40
+ "medicinal_herb": {
41
+ "name": "Herbe médicinale",
42
+ "description": "Une plante qu'on trouve partout, mais que personne ne ramasse avant d'en avoir besoin."
43
+ },
44
+ "cotton": {
45
+ "name": "Coton",
46
+ "description": "Doux, léger, et absolument inutile en combat."
47
+ },
48
+ "hemp": {
49
+ "name": "Chanvre",
50
+ "description": "La fibre polyvalente du marin désespéré : on en fait des cordes, des sacs, et parfois des excuses."
51
+ },
52
+ "essence_water": {
53
+ "name": "Essence d'eau",
54
+ "description": "L'âme liquide de l'océan, condensée en quelques gouttes tremblotantes."
55
+ },
56
+ "essence_moon": {
57
+ "name": "Essence de lune",
58
+ "description": "Récoltée par nuit claire, elle sent vaguement le rêve et les mauvaises décisions."
59
+ },
60
+ "essence_earth": {
61
+ "name": "Essence de terre",
62
+ "description": "Sent la boue, mais d'une boue très noble, promis."
63
+ },
64
+ "essence_life": {
65
+ "name": "Essence de vitalité",
66
+ "description": "Ça déborde d'énergie… à condition de ne pas la renverser."
67
+ },
68
+ "essence_fire": {
69
+ "name": "Essence de feu",
70
+ "description": "Chaude, instable, et clairement pas faite pour les mains tremblantes."
71
+ },
72
+ "essence_haki": {
73
+ "name": "Essence de haki",
74
+ "description": "La volonté ultime, la vôtre ou celle de quelqu'un d'autre, on ne sait plus trop."
75
+ },
76
+ "essence_wind": {
77
+ "name": "Essence de vent",
78
+ "description": "Impossible à saisir, encore plus difficile à conserver, mais quelle allure."
79
+ },
80
+ "glass_vial": {
81
+ "name": "Fiole en verre",
82
+ "description": "Un contenant vide qui attend son destin avec une patience admirable."
83
+ },
84
+ "concentrated_water": {
85
+ "name": "Concentré d'eau",
86
+ "description": "De l'eau, mais version sérieuse."
87
+ },
88
+ "concentrated_fire": {
89
+ "name": "Concentré de feu",
90
+ "description": "Ne pas agiter. Ne pas chauffer. Ne pas respirer dessus."
91
+ },
92
+ "concentrated_moon": {
93
+ "name": "Concentré de lune",
94
+ "description": "Mystérieux, légèrement luisant, idéal pour impressionner en soirée."
95
+ },
96
+ "concentrated_earth": {
97
+ "name": "Concentré de terre",
98
+ "description": "La quintessence du sol sous vos pieds, sans les cailloux."
99
+ },
100
+ "concentrated_wind": {
101
+ "name": "Concentré de vent",
102
+ "description": "Du vent en bouteille, enfin une solution au problème des journées sans brise."
103
+ },
104
+ "concentrated_life": {
105
+ "name": "Concentré de vie",
106
+ "description": "Ça sent le printemps, ça brille un peu, et ça coûte cher à fabriquer."
107
+ },
108
+ "scarlet_poppy": {
109
+ "name": "Coquelicot écarlate",
110
+ "description": "Rouge comme le sang d'un ennemi vaincu, utile comme une fleur qui sait ses priorités."
111
+ },
112
+ "ebony_poppy": {
113
+ "name": "Pavot d'ébène",
114
+ "description": "Une fleur noire qui pousse là où personne ne va, ce qui explique pourquoi personne n'en a."
115
+ },
116
+ "immaculate_rose": {
117
+ "name": "Rose immaculée",
118
+ "description": "Si pure qu'on hésite à la cueillir. On le fait quand même."
119
+ },
120
+ "white_mugwort": {
121
+ "name": "Armoise blanche",
122
+ "description": "Une herbe aux vertus mystérieuses que les vieilles sorcières gardent jalousement."
123
+ },
124
+ "cursed_hawthorn": {
125
+ "name": "Aubépine maudite",
126
+ "description": "Même les botanistes portent des gants pour la toucher. Vous voilà prévenus."
127
+ },
128
+ "adult_mandrake": {
129
+ "name": "Mandragore adulte",
130
+ "description": "Elle crie moins fort qu'une jeune, mais elle en veut toujours autant à celui qui la déracine."
131
+ },
132
+ "edelweiss": {
133
+ "name": "Edelweiss",
134
+ "description": "Poussant sur les sommets inaccessibles, elle prouve que la beauté aime compliquer la vie."
135
+ },
136
+ "vermilion_saffron": {
137
+ "name": "Safran vermeille",
138
+ "description": "Rare, précieux, et qui tache les doigts pour une semaine."
139
+ },
140
+ "fairy_wings": {
141
+ "name": "Ailes de fée",
142
+ "description": "Légères comme un mensonge, magiques comme une promesse tenue."
143
+ },
144
+ "mermaid_tear": {
145
+ "name": "Larme de sirène",
146
+ "description": "Il ha fallu beaucoup de persuasion… ou un film triste. Les deux fonctionnent."
147
+ },
148
+ "phoenix_feather": {
149
+ "name": "Plume de Phénix",
150
+ "description": "Tombée d'un oiseau légendaire, elle régénère ce qu'elle touche, y compris les espoirs perdus."
151
+ },
152
+ "blank_parchment": {
153
+ "name": "Parchemin vierge",
154
+ "description": "Une page blanche pleine de potentiel et d'encre qui n'attend qu'à couler."
155
+ },
156
+ "compass_rose": {
157
+ "name": "Rose des vents",
158
+ "description": "Elle indique toujours le bon chemin, même quand vous n'avez pas envie de l'entendre."
159
+ },
160
+ "dragon_heart": {
161
+ "name": "Cœur de Dragon",
162
+ "description": "Ça bat encore un peu, ce qui est techniquement très perturbant pour un objet d'inventaire."
163
+ },
164
+ "raw_iron": {
165
+ "name": "Fer brut",
166
+ "description": "Arraché à la terre avec effort, il attend qu'on lui donne une forme et un destin."
167
+ },
168
+ "scrap": {
169
+ "name": "Ferraille",
170
+ "description": "Les restes de quelque chose de mieux. Recyclable, mais humble."
171
+ },
172
+ "nail": {
173
+ "name": "Clous",
174
+ "description": "Petits, indispensables, et toujours perdus au moment crucial."
175
+ },
176
+ "iron_ingot": {
177
+ "name": "Lingot de fer",
178
+ "description": "Du métal purifié qui ne demande qu'à devenir quelque chose de dangereux."
179
+ },
180
+ "gold_dust": {
181
+ "name": "Poudre d'or",
182
+ "description": "Brillante, précieuse, et qui part dans le vent si on éternue."
183
+ },
184
+ "gunpowder": {
185
+ "name": "Poudre à canon",
186
+ "description": "À manipuler avec le respect qu'on doit aux choses capables de vous faire voler."
187
+ },
188
+ "diamond": {
189
+ "name": "Diamant",
190
+ "description": "La dureté incarnée, même les forgerons hésitent avant de le travailler."
191
+ },
192
+ "gold": {
193
+ "name": "Or",
194
+ "description": "Le métal que tout le monde veut, que personne ne mérite vraiment, et qui fait des merveilles en lingot."
195
+ },
196
+ "sparkling_manganese": {
197
+ "name": "Manganèse scintillante",
198
+ "description": "Un métal étrange qui brille un peu trop pour être tout à fait normal."
199
+ },
200
+ "emerald": {
201
+ "name": "Émeraude",
202
+ "description": "Verte comme la jalousie des autres quand vous la sortez."
203
+ },
204
+ "ruby": {
205
+ "name": "Rubis",
206
+ "description": "Rouge passion, chaud comme une flamme, et très apprécié des collectionneurs imprudents."
207
+ },
208
+ "sapphire": {
209
+ "name": "Saphir",
210
+ "description": "Bleu profond comme l'océan, et presque aussi difficile à trouver."
211
+ },
212
+ "opal": {
213
+ "name": "Opale",
214
+ "description": "Change de couleur selon l'angle, ce qui la rend belle, mystérieuse, et impossible à décrire."
215
+ },
216
+ "mithril": {
217
+ "name": "Mithril",
218
+ "description": "Le métal des légendes : léger, résistant, et hors de prix même dans les bonnes îles."
219
+ },
220
+ "rock": {
221
+ "name": "Pierre",
222
+ "description": "Le truc le plus basique du monde, mais ça fait toujours son petit effet quand on le lance."
223
+ },
224
+ "dark_obsidian": {
225
+ "name": "Obsidienne sombre",
226
+ "description": "Tranchante comme une mauvaise nouvelle et fragile comme les illusions."
227
+ },
228
+ "dragon_scale": {
229
+ "name": "Écaille de Dragon",
230
+ "description": "Un morceau d'armure naturelle qui n'a malheureusement pas suffi à sauver son ancien propriétaire."
231
+ },
232
+ "fragment_poneglyph": {
233
+ "name": "Morceau de ponéglyphe",
234
+ "description": "Un gros caillou avec des gribouillis que personne ne sait lire, mais ça fait très sérieux sur une étagère."
235
+ },
236
+ "wood": {
237
+ "name": "Bois",
238
+ "description": "La matière première de tout ce qui flotte, brûle, ou tient debout."
239
+ },
240
+ "teak_wood": {
241
+ "name": "Bois de teck",
242
+ "description": "Dense, imperméable, et suffisamment noble pour qu'un charpentier en soit fier."
243
+ },
244
+ "wooden_board": {
245
+ "name": "Planche de bois",
246
+ "description": "Plate, utile, et polyvalente, comme le meilleur membre d'équipage."
247
+ },
248
+ "glue": {
249
+ "name": "Colle",
250
+ "description": "Ce qui maintient tout ensemble quand les clous abandonnent."
251
+ },
252
+ "anchor": {
253
+ "name": "Ancre",
254
+ "description": "Elle retient le bateau là où le capitaine dit de rester... En théorie."
255
+ },
256
+ "rudder": {
257
+ "name": "Gouvernail",
258
+ "description": "Le seul objet à bord qui décide vraiment où vous allez."
259
+ },
260
+ "adam_wood": {
261
+ "name": "Bois d'Adam",
262
+ "description": "Le matériau dont sont faits les navires légendaires et les rêves de charpentiers."
263
+ },
264
+ "marine_granite": {
265
+ "name": "Granit marin",
266
+ "description": "Une roche qui a survécu aux tempêtes, elle sait ce qu'elle fait."
267
+ },
268
+ "bowl": {
269
+ "name": "Bol",
270
+ "description": "Rond, creux, et indispensable pour manger sans se salir les mains… trop."
271
+ },
272
+ "lifeboat": {
273
+ "name": "Canot de sauvetage",
274
+ "description": "Pour les plans B, C, et D, quand le bateau décide d'arrêter de flotter."
275
+ },
276
+ "cloth": {
277
+ "name": "Chiffon",
278
+ "description": "Moins impressionnant qu'une armure, mais toujours là quand il faut essuyer quelque chose."
279
+ },
280
+ "tissue": {
281
+ "name": "Tissu",
282
+ "description": "La matière de base de tout ce qui couvre, protège, et fait bonne impression."
283
+ },
284
+ "leather": {
285
+ "name": "Cuir",
286
+ "description": "Robuste, élégant, et qui sent l'aventure vécue."
287
+ },
288
+ "rope": {
289
+ "name": "Corde",
290
+ "description": "L'outil universel du marin : grimper, attacher, ligoter, les usages sont illimités."
291
+ },
292
+ "hammoc": {
293
+ "name": "Hamac",
294
+ "description": "Le meilleur ami du marin fatigué, suspendu entre deux certitudes."
295
+ },
296
+ "boat_sail": {
297
+ "name": "Voile de bateau",
298
+ "description": "Elle attrape le vent et convertit les tempêtes en vitesse."
299
+ },
300
+ "holey_boot": {
301
+ "name": "Botte trouée",
302
+ "description": "Une botte qui a vécu. Trop vécu. Remplacez-la."
303
+ },
304
+ "pure_water": {
305
+ "name": "Eau pure",
306
+ "description": "Filtrée, clarifiée, et totalement dépourvue du goût douteux qui caractérise l'eau de mer. Un luxe relatif."
307
+ },
308
+ "little_king_seas": {
309
+ "name": "Petit Roi des Mers",
310
+ "description": "Une bête des profondeurs qui n'a de \"petit\" que le nom, le pêcher est déjà un exploit, le ramener entier en est un autre."
311
+ },
312
+ "energy_crystal": {
313
+ "name": "Cristal d'Energie",
314
+ "description": "Un fragment de puissance cristallisée qui attend d'être fusionné à un équipement, à manier avec précaution, il a tendance à amplifier aussi bien le meilleur que le pire."
315
+ }
316
+ },
317
+ "consumable": {
318
+ "sardine": {
319
+ "name": "Sardine",
320
+ "description": "Le poisson du peuple : pas glamour, mais toujours là quand les autres ont disparu."
321
+ },
322
+ "mackerel": {
323
+ "name": "Maquereau",
324
+ "description": "Un poisson honnête qui ne fait pas de mystère sur ce qu'il est."
325
+ },
326
+ "fruit": {
327
+ "name": "Fruits",
328
+ "description": "Colorés, sucrés, et à consommer avec prudence si vous êtes dans l'univers de One Piece."
329
+ },
330
+ "tuna": {
331
+ "name": "Thon",
332
+ "description": "Gros, puissant, et délicieux, exactement le genre d'adversaire qu'on est content de croiser."
333
+ },
334
+ "swordfish": {
335
+ "name": "Espadon",
336
+ "description": "Son épée naturelle est impressionnante, mais c'est en sashimi qu'il excelle vraiment."
337
+ },
338
+ "cereal_bowl": {
339
+ "name": "Bol de céréales",
340
+ "description": "Le repas du matin qui dit 'je vis dangereusement, mais raisonnablement'."
341
+ },
342
+ "strawberry_cake": {
343
+ "name": "Fraisier",
344
+ "description": "Un gâteau trop beau pour être mangé sur un bateau en pleine tempête. On le mange quand même."
345
+ },
346
+ "cheese": {
347
+ "name": "Fromage affiné",
348
+ "description": "Ça pue la mort, mais ça goûte le paradis."
349
+ },
350
+ "omelet": {
351
+ "name": "Omelette nourrissante",
352
+ "description": "Simple, efficace, et capable de remettre un combattant sur pied en deux bouchées."
353
+ },
354
+ "bread": {
355
+ "name": "Pain de campagne",
356
+ "description": "Rustique, solide, et parfait pour survivre ou assommer quelqu'un en cas d'urgence."
357
+ },
358
+ "binks_rum": {
359
+ "name": "Rhum de Binks",
360
+ "description": "Boire à la santé des morts depuis des générations, une tradition qu'on ne remet pas en question."
361
+ },
362
+ "energy_tonic": {
363
+ "name": "Tonique d'Énergie",
364
+ "description": "Un coup de fouet liquide pour ceux qui n'ont plus le droit de s'effondrer."
365
+ },
366
+ "energy_infusion": {
367
+ "name": "Infusion d'Énergie",
368
+ "description": "Plus douce qu'un tonique, mais suffisante pour repousser l'épuisement d'une heure."
369
+ },
370
+ "concentrated_energy": {
371
+ "name": "Concentré d'Énergie",
372
+ "description": "Trois gorgées max, au-delà, le cœur prend des décisions seul."
373
+ },
374
+ "energy_elixir": {
375
+ "name": "Élixir d'Énergie",
376
+ "description": "La version finale, définitive, et légèrement terrifiante du regain de force."
377
+ },
378
+ "minor_potion": {
379
+ "name": "Potion mineure",
380
+ "description": "Soigne les petits bobos et les grandes humiliations de combat."
381
+ },
382
+ "medium_potion": {
383
+ "name": "Potion moyenne",
384
+ "description": "Pour les blessures qu'on ne peut plus nier avec un sourire."
385
+ },
386
+ "elixir_life": {
387
+ "name": "Élixir de vie",
388
+ "description": "Un flacon qui sent la seconde chance, à utiliser avant qu'il soit trop tard."
389
+ },
390
+ "skill_hourglass": {
391
+ "name": "Sablier de compétences",
392
+ "description": "Le temps file, les compétences changent, parfait pour ceux qui veulent tout recommencer."
393
+ },
394
+ "scroll_agility": {
395
+ "name": "Parchemin d'Agilité",
396
+ "description": "Transcrit le secret de ceux qui esquivent les coups en faisant semblant de trébucher."
397
+ },
398
+ "scroll_strength": {
399
+ "name": "Parchemin de Force",
400
+ "description": "La sueur de mille entraînements condensée en symboles illisibles mais efficaces."
401
+ },
402
+ "scroll_intelligence": {
403
+ "name": "Parchemin d'Intelligence",
404
+ "description": "Contient plus de savoir qu'il n'en a l'air, comme son propriétaire, espérons."
405
+ },
406
+ "scroll_chance": {
407
+ "name": "Parchemin de Chance",
408
+ "description": "Personne ne sait vraiment comment ça marche, mais ça marche."
409
+ },
410
+ "scroll_wisdom": {
411
+ "name": "Parchemin de Sagesse",
412
+ "description": "Pour ceux qui veulent réfléchir avant de frapper. Concept révolutionnaire."
413
+ },
414
+ "scroll_vitality": {
415
+ "name": "Parchemin de Vitalité",
416
+ "description": "Bourré d'énergie vitale, à ne pas confondre avec un rouleau de printemps."
417
+ },
418
+ "pure_energy_essence": {
419
+ "name": "Essence d'énergie pure",
420
+ "description": "Au-delà de l'éxilir, au-delà du raisonnable, une dose suffit à faire sentir qu'on pourrait traverser Grand Line à la nage."
421
+ }
422
+ },
423
+ "chest": {
424
+ "common_chest": {
425
+ "name": "Coffre Commun",
426
+ "description": "Un coffre ordinaire qui cache des trésors ordinaires, mais un trésor reste un trésor."
427
+ },
428
+ "rare_chest": {
429
+ "name": "Coffre Rare",
430
+ "description": "Fermé à double tour et plein de bonnes surprises pour les courageux"
431
+ },
432
+ "epic_chest": {
433
+ "name": "Coffre Epique",
434
+ "description": "Ce coffre a une histoire, et elle ne se termine pas avec \"ils vécurent heureux\"."
435
+ },
436
+ "legendary_chest": {
437
+ "name": "Coffre Légendaire",
438
+ "description": "On en parle dans les tavernes depuis des années... Et pour cause."
439
+ },
440
+ "mythic_chest": {
441
+ "name": "Coffre Mythique",
442
+ "description": "Si vous l'avez ouvert, racontez-nous ce qu'il y avait dedans."
443
+ }
444
+ }
445
+ }
446
+ }