feat: compendium système avec 78 cartes de tarot

Généré depuis assets/data/tarot.json vers packs-system/hamalron-items/
via tools/generate-tarot-packs.mjs + @foundryvtt/foundryvtt-cli

Le resetDeck() importe depuis le compendium si aucun item monde
n'existe, ou crée les cartes depuis le fichier JSON en dernier recours.
This commit is contained in:
2026-07-10 23:53:39 +02:00
parent 29b93b5ed1
commit f2839c4b54
85 changed files with 1410 additions and 4 deletions
+2 -3
View File
@@ -5,6 +5,5 @@ dist/
regles/
.history/
packs-system/**/LOCK
packs-system/**/MANIFEST-*
packs-system/**/LOG*
packs-system/**/CURRENT*
packs-system/**/LOG
packs-system/**/LOG.old
Binary file not shown.
+1
View File
@@ -0,0 +1 @@
MANIFEST-000052
Binary file not shown.
+17
View File
@@ -0,0 +1,17 @@
{
"_id": "tarot_001",
"_key": "!items!tarot_001",
"name": "Le Bateleur",
"type": "tarot",
"img": "icons/svg/treasure.svg",
"folder": null,
"sort": 100000,
"flags": {},
"system": {
"type": "atout",
"symbole": "coupe",
"valeur": "1",
"description": "<p>Le Bateleur</p>",
"image": "icons/svg/treasure.svg"
}
}
+17
View File
@@ -0,0 +1,17 @@
{
"_id": "tarot_002",
"_key": "!items!tarot_002",
"name": "La Papesse",
"type": "tarot",
"img": "icons/svg/treasure.svg",
"folder": null,
"sort": 200000,
"flags": {},
"system": {
"type": "atout",
"symbole": "coupe",
"valeur": "2",
"description": "<p>La Papesse</p>",
"image": "icons/svg/treasure.svg"
}
}
+17
View File
@@ -0,0 +1,17 @@
{
"_id": "tarot_003",
"_key": "!items!tarot_003",
"name": "L'Impératrice",
"type": "tarot",
"img": "icons/svg/treasure.svg",
"folder": null,
"sort": 300000,
"flags": {},
"system": {
"type": "atout",
"symbole": "coupe",
"valeur": "3",
"description": "<p>L'Impératrice</p>",
"image": "icons/svg/treasure.svg"
}
}
+17
View File
@@ -0,0 +1,17 @@
{
"_id": "tarot_004",
"_key": "!items!tarot_004",
"name": "L'Empereur",
"type": "tarot",
"img": "icons/svg/treasure.svg",
"folder": null,
"sort": 400000,
"flags": {},
"system": {
"type": "atout",
"symbole": "coupe",
"valeur": "4",
"description": "<p>L'Empereur</p>",
"image": "icons/svg/treasure.svg"
}
}
+17
View File
@@ -0,0 +1,17 @@
{
"_id": "tarot_005",
"_key": "!items!tarot_005",
"name": "Le Pape",
"type": "tarot",
"img": "icons/svg/treasure.svg",
"folder": null,
"sort": 500000,
"flags": {},
"system": {
"type": "atout",
"symbole": "coupe",
"valeur": "5",
"description": "<p>Le Pape</p>",
"image": "icons/svg/treasure.svg"
}
}
+17
View File
@@ -0,0 +1,17 @@
{
"_id": "tarot_006",
"_key": "!items!tarot_006",
"name": "L'Amoureux",
"type": "tarot",
"img": "icons/svg/treasure.svg",
"folder": null,
"sort": 600000,
"flags": {},
"system": {
"type": "atout",
"symbole": "coupe",
"valeur": "6",
"description": "<p>L'Amoureux</p>",
"image": "icons/svg/treasure.svg"
}
}
+17
View File
@@ -0,0 +1,17 @@
{
"_id": "tarot_007",
"_key": "!items!tarot_007",
"name": "Le Chariot",
"type": "tarot",
"img": "icons/svg/treasure.svg",
"folder": null,
"sort": 700000,
"flags": {},
"system": {
"type": "atout",
"symbole": "coupe",
"valeur": "7",
"description": "<p>Le Chariot</p>",
"image": "icons/svg/treasure.svg"
}
}
+17
View File
@@ -0,0 +1,17 @@
{
"_id": "tarot_008",
"_key": "!items!tarot_008",
"name": "La Justice",
"type": "tarot",
"img": "icons/svg/treasure.svg",
"folder": null,
"sort": 800000,
"flags": {},
"system": {
"type": "atout",
"symbole": "coupe",
"valeur": "8",
"description": "<p>La Justice</p>",
"image": "icons/svg/treasure.svg"
}
}
+17
View File
@@ -0,0 +1,17 @@
{
"_id": "tarot_009",
"_key": "!items!tarot_009",
"name": "L'Hermite",
"type": "tarot",
"img": "icons/svg/treasure.svg",
"folder": null,
"sort": 900000,
"flags": {},
"system": {
"type": "atout",
"symbole": "coupe",
"valeur": "9",
"description": "<p>L'Hermite</p>",
"image": "icons/svg/treasure.svg"
}
}
+17
View File
@@ -0,0 +1,17 @@
{
"_id": "tarot_010",
"_key": "!items!tarot_010",
"name": "La Roue de Fortune",
"type": "tarot",
"img": "icons/svg/treasure.svg",
"folder": null,
"sort": 1000000,
"flags": {},
"system": {
"type": "atout",
"symbole": "coupe",
"valeur": "10",
"description": "<p>La Roue de Fortune</p>",
"image": "icons/svg/treasure.svg"
}
}
+17
View File
@@ -0,0 +1,17 @@
{
"_id": "tarot_011",
"_key": "!items!tarot_011",
"name": "La Force",
"type": "tarot",
"img": "icons/svg/treasure.svg",
"folder": null,
"sort": 1100000,
"flags": {},
"system": {
"type": "atout",
"symbole": "coupe",
"valeur": "11",
"description": "<p>La Force</p>",
"image": "icons/svg/treasure.svg"
}
}
+17
View File
@@ -0,0 +1,17 @@
{
"_id": "tarot_012",
"_key": "!items!tarot_012",
"name": "Le Pendu",
"type": "tarot",
"img": "icons/svg/treasure.svg",
"folder": null,
"sort": 1200000,
"flags": {},
"system": {
"type": "atout",
"symbole": "coupe",
"valeur": "12",
"description": "<p>Le Pendu</p>",
"image": "icons/svg/treasure.svg"
}
}
+17
View File
@@ -0,0 +1,17 @@
{
"_id": "tarot_013",
"_key": "!items!tarot_013",
"name": "L'Arcane sans Nom",
"type": "tarot",
"img": "icons/svg/treasure.svg",
"folder": null,
"sort": 1300000,
"flags": {},
"system": {
"type": "atout",
"symbole": "coupe",
"valeur": "13",
"description": "<p>L'Arcane sans Nom</p>",
"image": "icons/svg/treasure.svg"
}
}
+17
View File
@@ -0,0 +1,17 @@
{
"_id": "tarot_014",
"_key": "!items!tarot_014",
"name": "La Tempérance",
"type": "tarot",
"img": "icons/svg/treasure.svg",
"folder": null,
"sort": 1400000,
"flags": {},
"system": {
"type": "atout",
"symbole": "coupe",
"valeur": "14",
"description": "<p>La Tempérance</p>",
"image": "icons/svg/treasure.svg"
}
}
+17
View File
@@ -0,0 +1,17 @@
{
"_id": "tarot_015",
"_key": "!items!tarot_015",
"name": "Le Diable",
"type": "tarot",
"img": "icons/svg/treasure.svg",
"folder": null,
"sort": 1500000,
"flags": {},
"system": {
"type": "atout",
"symbole": "coupe",
"valeur": "15",
"description": "<p>Le Diable</p>",
"image": "icons/svg/treasure.svg"
}
}
+17
View File
@@ -0,0 +1,17 @@
{
"_id": "tarot_016",
"_key": "!items!tarot_016",
"name": "La Maison Dieu",
"type": "tarot",
"img": "icons/svg/treasure.svg",
"folder": null,
"sort": 1600000,
"flags": {},
"system": {
"type": "atout",
"symbole": "coupe",
"valeur": "16",
"description": "<p>La Maison Dieu</p>",
"image": "icons/svg/treasure.svg"
}
}
+17
View File
@@ -0,0 +1,17 @@
{
"_id": "tarot_017",
"_key": "!items!tarot_017",
"name": "L'Étoile",
"type": "tarot",
"img": "icons/svg/treasure.svg",
"folder": null,
"sort": 1700000,
"flags": {},
"system": {
"type": "atout",
"symbole": "coupe",
"valeur": "17",
"description": "<p>L'Étoile</p>",
"image": "icons/svg/treasure.svg"
}
}
+17
View File
@@ -0,0 +1,17 @@
{
"_id": "tarot_018",
"_key": "!items!tarot_018",
"name": "La Lune",
"type": "tarot",
"img": "icons/svg/treasure.svg",
"folder": null,
"sort": 1800000,
"flags": {},
"system": {
"type": "atout",
"symbole": "coupe",
"valeur": "18",
"description": "<p>La Lune</p>",
"image": "icons/svg/treasure.svg"
}
}
+17
View File
@@ -0,0 +1,17 @@
{
"_id": "tarot_019",
"_key": "!items!tarot_019",
"name": "Le Soleil",
"type": "tarot",
"img": "icons/svg/treasure.svg",
"folder": null,
"sort": 1900000,
"flags": {},
"system": {
"type": "atout",
"symbole": "coupe",
"valeur": "19",
"description": "<p>Le Soleil</p>",
"image": "icons/svg/treasure.svg"
}
}
+17
View File
@@ -0,0 +1,17 @@
{
"_id": "tarot_020",
"_key": "!items!tarot_020",
"name": "Le Jugement",
"type": "tarot",
"img": "icons/svg/treasure.svg",
"folder": null,
"sort": 2000000,
"flags": {},
"system": {
"type": "atout",
"symbole": "coupe",
"valeur": "20",
"description": "<p>Le Jugement</p>",
"image": "icons/svg/treasure.svg"
}
}
+17
View File
@@ -0,0 +1,17 @@
{
"_id": "tarot_021",
"_key": "!items!tarot_021",
"name": "Le Monde",
"type": "tarot",
"img": "icons/svg/treasure.svg",
"folder": null,
"sort": 2100000,
"flags": {},
"system": {
"type": "atout",
"symbole": "coupe",
"valeur": "21",
"description": "<p>Le Monde</p>",
"image": "icons/svg/treasure.svg"
}
}
+17
View File
@@ -0,0 +1,17 @@
{
"_id": "tarot_022",
"_key": "!items!tarot_022",
"name": "Le Mat",
"type": "tarot",
"img": "icons/svg/treasure.svg",
"folder": null,
"sort": 2200000,
"flags": {},
"system": {
"type": "atout",
"symbole": "coupe",
"valeur": "lemat",
"description": "<p>Le Mat</p>",
"image": "icons/svg/treasure.svg"
}
}
+17
View File
@@ -0,0 +1,17 @@
{
"_id": "tarot_023",
"_key": "!items!tarot_023",
"name": "As de Bâton",
"type": "tarot",
"img": "icons/svg/treasure.svg",
"folder": null,
"sort": 2300000,
"flags": {},
"system": {
"type": "numéro",
"symbole": "baton",
"valeur": "1",
"description": "<p>As de Bâton</p>",
"image": "icons/svg/treasure.svg"
}
}
+17
View File
@@ -0,0 +1,17 @@
{
"_id": "tarot_024",
"_key": "!items!tarot_024",
"name": "2 de Bâton",
"type": "tarot",
"img": "icons/svg/treasure.svg",
"folder": null,
"sort": 2400000,
"flags": {},
"system": {
"type": "numéro",
"symbole": "baton",
"valeur": "2",
"description": "<p>2 de Bâton</p>",
"image": "icons/svg/treasure.svg"
}
}
+17
View File
@@ -0,0 +1,17 @@
{
"_id": "tarot_025",
"_key": "!items!tarot_025",
"name": "3 de Bâton",
"type": "tarot",
"img": "icons/svg/treasure.svg",
"folder": null,
"sort": 2500000,
"flags": {},
"system": {
"type": "numéro",
"symbole": "baton",
"valeur": "3",
"description": "<p>3 de Bâton</p>",
"image": "icons/svg/treasure.svg"
}
}
+17
View File
@@ -0,0 +1,17 @@
{
"_id": "tarot_026",
"_key": "!items!tarot_026",
"name": "4 de Bâton",
"type": "tarot",
"img": "icons/svg/treasure.svg",
"folder": null,
"sort": 2600000,
"flags": {},
"system": {
"type": "numéro",
"symbole": "baton",
"valeur": "4",
"description": "<p>4 de Bâton</p>",
"image": "icons/svg/treasure.svg"
}
}
+17
View File
@@ -0,0 +1,17 @@
{
"_id": "tarot_027",
"_key": "!items!tarot_027",
"name": "5 de Bâton",
"type": "tarot",
"img": "icons/svg/treasure.svg",
"folder": null,
"sort": 2700000,
"flags": {},
"system": {
"type": "numéro",
"symbole": "baton",
"valeur": "5",
"description": "<p>5 de Bâton</p>",
"image": "icons/svg/treasure.svg"
}
}
+17
View File
@@ -0,0 +1,17 @@
{
"_id": "tarot_028",
"_key": "!items!tarot_028",
"name": "6 de Bâton",
"type": "tarot",
"img": "icons/svg/treasure.svg",
"folder": null,
"sort": 2800000,
"flags": {},
"system": {
"type": "numéro",
"symbole": "baton",
"valeur": "6",
"description": "<p>6 de Bâton</p>",
"image": "icons/svg/treasure.svg"
}
}
+17
View File
@@ -0,0 +1,17 @@
{
"_id": "tarot_029",
"_key": "!items!tarot_029",
"name": "7 de Bâton",
"type": "tarot",
"img": "icons/svg/treasure.svg",
"folder": null,
"sort": 2900000,
"flags": {},
"system": {
"type": "numéro",
"symbole": "baton",
"valeur": "7",
"description": "<p>7 de Bâton</p>",
"image": "icons/svg/treasure.svg"
}
}
+17
View File
@@ -0,0 +1,17 @@
{
"_id": "tarot_030",
"_key": "!items!tarot_030",
"name": "8 de Bâton",
"type": "tarot",
"img": "icons/svg/treasure.svg",
"folder": null,
"sort": 3000000,
"flags": {},
"system": {
"type": "numéro",
"symbole": "baton",
"valeur": "8",
"description": "<p>8 de Bâton</p>",
"image": "icons/svg/treasure.svg"
}
}
+17
View File
@@ -0,0 +1,17 @@
{
"_id": "tarot_031",
"_key": "!items!tarot_031",
"name": "9 de Bâton",
"type": "tarot",
"img": "icons/svg/treasure.svg",
"folder": null,
"sort": 3100000,
"flags": {},
"system": {
"type": "numéro",
"symbole": "baton",
"valeur": "9",
"description": "<p>9 de Bâton</p>",
"image": "icons/svg/treasure.svg"
}
}
+17
View File
@@ -0,0 +1,17 @@
{
"_id": "tarot_032",
"_key": "!items!tarot_032",
"name": "10 de Bâton",
"type": "tarot",
"img": "icons/svg/treasure.svg",
"folder": null,
"sort": 3200000,
"flags": {},
"system": {
"type": "numéro",
"symbole": "baton",
"valeur": "10",
"description": "<p>10 de Bâton</p>",
"image": "icons/svg/treasure.svg"
}
}
+17
View File
@@ -0,0 +1,17 @@
{
"_id": "tarot_033",
"_key": "!items!tarot_033",
"name": "As de Coupe",
"type": "tarot",
"img": "icons/svg/treasure.svg",
"folder": null,
"sort": 3300000,
"flags": {},
"system": {
"type": "numéro",
"symbole": "coupe",
"valeur": "1",
"description": "<p>As de Coupe</p>",
"image": "icons/svg/treasure.svg"
}
}
+17
View File
@@ -0,0 +1,17 @@
{
"_id": "tarot_034",
"_key": "!items!tarot_034",
"name": "2 de Coupe",
"type": "tarot",
"img": "icons/svg/treasure.svg",
"folder": null,
"sort": 3400000,
"flags": {},
"system": {
"type": "numéro",
"symbole": "coupe",
"valeur": "2",
"description": "<p>2 de Coupe</p>",
"image": "icons/svg/treasure.svg"
}
}
+17
View File
@@ -0,0 +1,17 @@
{
"_id": "tarot_035",
"_key": "!items!tarot_035",
"name": "3 de Coupe",
"type": "tarot",
"img": "icons/svg/treasure.svg",
"folder": null,
"sort": 3500000,
"flags": {},
"system": {
"type": "numéro",
"symbole": "coupe",
"valeur": "3",
"description": "<p>3 de Coupe</p>",
"image": "icons/svg/treasure.svg"
}
}
+17
View File
@@ -0,0 +1,17 @@
{
"_id": "tarot_036",
"_key": "!items!tarot_036",
"name": "4 de Coupe",
"type": "tarot",
"img": "icons/svg/treasure.svg",
"folder": null,
"sort": 3600000,
"flags": {},
"system": {
"type": "numéro",
"symbole": "coupe",
"valeur": "4",
"description": "<p>4 de Coupe</p>",
"image": "icons/svg/treasure.svg"
}
}
+17
View File
@@ -0,0 +1,17 @@
{
"_id": "tarot_037",
"_key": "!items!tarot_037",
"name": "5 de Coupe",
"type": "tarot",
"img": "icons/svg/treasure.svg",
"folder": null,
"sort": 3700000,
"flags": {},
"system": {
"type": "numéro",
"symbole": "coupe",
"valeur": "5",
"description": "<p>5 de Coupe</p>",
"image": "icons/svg/treasure.svg"
}
}
+17
View File
@@ -0,0 +1,17 @@
{
"_id": "tarot_038",
"_key": "!items!tarot_038",
"name": "6 de Coupe",
"type": "tarot",
"img": "icons/svg/treasure.svg",
"folder": null,
"sort": 3800000,
"flags": {},
"system": {
"type": "numéro",
"symbole": "coupe",
"valeur": "6",
"description": "<p>6 de Coupe</p>",
"image": "icons/svg/treasure.svg"
}
}
+17
View File
@@ -0,0 +1,17 @@
{
"_id": "tarot_039",
"_key": "!items!tarot_039",
"name": "7 de Coupe",
"type": "tarot",
"img": "icons/svg/treasure.svg",
"folder": null,
"sort": 3900000,
"flags": {},
"system": {
"type": "numéro",
"symbole": "coupe",
"valeur": "7",
"description": "<p>7 de Coupe</p>",
"image": "icons/svg/treasure.svg"
}
}
+17
View File
@@ -0,0 +1,17 @@
{
"_id": "tarot_040",
"_key": "!items!tarot_040",
"name": "8 de Coupe",
"type": "tarot",
"img": "icons/svg/treasure.svg",
"folder": null,
"sort": 4000000,
"flags": {},
"system": {
"type": "numéro",
"symbole": "coupe",
"valeur": "8",
"description": "<p>8 de Coupe</p>",
"image": "icons/svg/treasure.svg"
}
}
+17
View File
@@ -0,0 +1,17 @@
{
"_id": "tarot_041",
"_key": "!items!tarot_041",
"name": "9 de Coupe",
"type": "tarot",
"img": "icons/svg/treasure.svg",
"folder": null,
"sort": 4100000,
"flags": {},
"system": {
"type": "numéro",
"symbole": "coupe",
"valeur": "9",
"description": "<p>9 de Coupe</p>",
"image": "icons/svg/treasure.svg"
}
}
+17
View File
@@ -0,0 +1,17 @@
{
"_id": "tarot_042",
"_key": "!items!tarot_042",
"name": "10 de Coupe",
"type": "tarot",
"img": "icons/svg/treasure.svg",
"folder": null,
"sort": 4200000,
"flags": {},
"system": {
"type": "numéro",
"symbole": "coupe",
"valeur": "10",
"description": "<p>10 de Coupe</p>",
"image": "icons/svg/treasure.svg"
}
}
+17
View File
@@ -0,0 +1,17 @@
{
"_id": "tarot_043",
"_key": "!items!tarot_043",
"name": "As de Denier",
"type": "tarot",
"img": "icons/svg/treasure.svg",
"folder": null,
"sort": 4300000,
"flags": {},
"system": {
"type": "numéro",
"symbole": "denier",
"valeur": "1",
"description": "<p>As de Denier</p>",
"image": "icons/svg/treasure.svg"
}
}
+17
View File
@@ -0,0 +1,17 @@
{
"_id": "tarot_044",
"_key": "!items!tarot_044",
"name": "2 de Denier",
"type": "tarot",
"img": "icons/svg/treasure.svg",
"folder": null,
"sort": 4400000,
"flags": {},
"system": {
"type": "numéro",
"symbole": "denier",
"valeur": "2",
"description": "<p>2 de Denier</p>",
"image": "icons/svg/treasure.svg"
}
}
+17
View File
@@ -0,0 +1,17 @@
{
"_id": "tarot_045",
"_key": "!items!tarot_045",
"name": "3 de Denier",
"type": "tarot",
"img": "icons/svg/treasure.svg",
"folder": null,
"sort": 4500000,
"flags": {},
"system": {
"type": "numéro",
"symbole": "denier",
"valeur": "3",
"description": "<p>3 de Denier</p>",
"image": "icons/svg/treasure.svg"
}
}
+17
View File
@@ -0,0 +1,17 @@
{
"_id": "tarot_046",
"_key": "!items!tarot_046",
"name": "4 de Denier",
"type": "tarot",
"img": "icons/svg/treasure.svg",
"folder": null,
"sort": 4600000,
"flags": {},
"system": {
"type": "numéro",
"symbole": "denier",
"valeur": "4",
"description": "<p>4 de Denier</p>",
"image": "icons/svg/treasure.svg"
}
}
+17
View File
@@ -0,0 +1,17 @@
{
"_id": "tarot_047",
"_key": "!items!tarot_047",
"name": "5 de Denier",
"type": "tarot",
"img": "icons/svg/treasure.svg",
"folder": null,
"sort": 4700000,
"flags": {},
"system": {
"type": "numéro",
"symbole": "denier",
"valeur": "5",
"description": "<p>5 de Denier</p>",
"image": "icons/svg/treasure.svg"
}
}
+17
View File
@@ -0,0 +1,17 @@
{
"_id": "tarot_048",
"_key": "!items!tarot_048",
"name": "6 de Denier",
"type": "tarot",
"img": "icons/svg/treasure.svg",
"folder": null,
"sort": 4800000,
"flags": {},
"system": {
"type": "numéro",
"symbole": "denier",
"valeur": "6",
"description": "<p>6 de Denier</p>",
"image": "icons/svg/treasure.svg"
}
}
+17
View File
@@ -0,0 +1,17 @@
{
"_id": "tarot_049",
"_key": "!items!tarot_049",
"name": "7 de Denier",
"type": "tarot",
"img": "icons/svg/treasure.svg",
"folder": null,
"sort": 4900000,
"flags": {},
"system": {
"type": "numéro",
"symbole": "denier",
"valeur": "7",
"description": "<p>7 de Denier</p>",
"image": "icons/svg/treasure.svg"
}
}
+17
View File
@@ -0,0 +1,17 @@
{
"_id": "tarot_050",
"_key": "!items!tarot_050",
"name": "8 de Denier",
"type": "tarot",
"img": "icons/svg/treasure.svg",
"folder": null,
"sort": 5000000,
"flags": {},
"system": {
"type": "numéro",
"symbole": "denier",
"valeur": "8",
"description": "<p>8 de Denier</p>",
"image": "icons/svg/treasure.svg"
}
}
+17
View File
@@ -0,0 +1,17 @@
{
"_id": "tarot_051",
"_key": "!items!tarot_051",
"name": "9 de Denier",
"type": "tarot",
"img": "icons/svg/treasure.svg",
"folder": null,
"sort": 5100000,
"flags": {},
"system": {
"type": "numéro",
"symbole": "denier",
"valeur": "9",
"description": "<p>9 de Denier</p>",
"image": "icons/svg/treasure.svg"
}
}
+17
View File
@@ -0,0 +1,17 @@
{
"_id": "tarot_052",
"_key": "!items!tarot_052",
"name": "10 de Denier",
"type": "tarot",
"img": "icons/svg/treasure.svg",
"folder": null,
"sort": 5200000,
"flags": {},
"system": {
"type": "numéro",
"symbole": "denier",
"valeur": "10",
"description": "<p>10 de Denier</p>",
"image": "icons/svg/treasure.svg"
}
}
+17
View File
@@ -0,0 +1,17 @@
{
"_id": "tarot_053",
"_key": "!items!tarot_053",
"name": "As d'Épée",
"type": "tarot",
"img": "icons/svg/treasure.svg",
"folder": null,
"sort": 5300000,
"flags": {},
"system": {
"type": "numéro",
"symbole": "epee",
"valeur": "1",
"description": "<p>As d'Épée</p>",
"image": "icons/svg/treasure.svg"
}
}
+17
View File
@@ -0,0 +1,17 @@
{
"_id": "tarot_054",
"_key": "!items!tarot_054",
"name": "2 d'Épée",
"type": "tarot",
"img": "icons/svg/treasure.svg",
"folder": null,
"sort": 5400000,
"flags": {},
"system": {
"type": "numéro",
"symbole": "epee",
"valeur": "2",
"description": "<p>2 d'Épée</p>",
"image": "icons/svg/treasure.svg"
}
}
+17
View File
@@ -0,0 +1,17 @@
{
"_id": "tarot_055",
"_key": "!items!tarot_055",
"name": "3 d'Épée",
"type": "tarot",
"img": "icons/svg/treasure.svg",
"folder": null,
"sort": 5500000,
"flags": {},
"system": {
"type": "numéro",
"symbole": "epee",
"valeur": "3",
"description": "<p>3 d'Épée</p>",
"image": "icons/svg/treasure.svg"
}
}
+17
View File
@@ -0,0 +1,17 @@
{
"_id": "tarot_056",
"_key": "!items!tarot_056",
"name": "4 d'Épée",
"type": "tarot",
"img": "icons/svg/treasure.svg",
"folder": null,
"sort": 5600000,
"flags": {},
"system": {
"type": "numéro",
"symbole": "epee",
"valeur": "4",
"description": "<p>4 d'Épée</p>",
"image": "icons/svg/treasure.svg"
}
}
+17
View File
@@ -0,0 +1,17 @@
{
"_id": "tarot_057",
"_key": "!items!tarot_057",
"name": "5 d'Épée",
"type": "tarot",
"img": "icons/svg/treasure.svg",
"folder": null,
"sort": 5700000,
"flags": {},
"system": {
"type": "numéro",
"symbole": "epee",
"valeur": "5",
"description": "<p>5 d'Épée</p>",
"image": "icons/svg/treasure.svg"
}
}
+17
View File
@@ -0,0 +1,17 @@
{
"_id": "tarot_058",
"_key": "!items!tarot_058",
"name": "6 d'Épée",
"type": "tarot",
"img": "icons/svg/treasure.svg",
"folder": null,
"sort": 5800000,
"flags": {},
"system": {
"type": "numéro",
"symbole": "epee",
"valeur": "6",
"description": "<p>6 d'Épée</p>",
"image": "icons/svg/treasure.svg"
}
}
+17
View File
@@ -0,0 +1,17 @@
{
"_id": "tarot_059",
"_key": "!items!tarot_059",
"name": "7 d'Épée",
"type": "tarot",
"img": "icons/svg/treasure.svg",
"folder": null,
"sort": 5900000,
"flags": {},
"system": {
"type": "numéro",
"symbole": "epee",
"valeur": "7",
"description": "<p>7 d'Épée</p>",
"image": "icons/svg/treasure.svg"
}
}
+17
View File
@@ -0,0 +1,17 @@
{
"_id": "tarot_060",
"_key": "!items!tarot_060",
"name": "8 d'Épée",
"type": "tarot",
"img": "icons/svg/treasure.svg",
"folder": null,
"sort": 6000000,
"flags": {},
"system": {
"type": "numéro",
"symbole": "epee",
"valeur": "8",
"description": "<p>8 d'Épée</p>",
"image": "icons/svg/treasure.svg"
}
}
+17
View File
@@ -0,0 +1,17 @@
{
"_id": "tarot_061",
"_key": "!items!tarot_061",
"name": "9 d'Épée",
"type": "tarot",
"img": "icons/svg/treasure.svg",
"folder": null,
"sort": 6100000,
"flags": {},
"system": {
"type": "numéro",
"symbole": "epee",
"valeur": "9",
"description": "<p>9 d'Épée</p>",
"image": "icons/svg/treasure.svg"
}
}
+17
View File
@@ -0,0 +1,17 @@
{
"_id": "tarot_062",
"_key": "!items!tarot_062",
"name": "10 d'Épée",
"type": "tarot",
"img": "icons/svg/treasure.svg",
"folder": null,
"sort": 6200000,
"flags": {},
"system": {
"type": "numéro",
"symbole": "epee",
"valeur": "10",
"description": "<p>10 d'Épée</p>",
"image": "icons/svg/treasure.svg"
}
}
+17
View File
@@ -0,0 +1,17 @@
{
"_id": "tarot_063",
"_key": "!items!tarot_063",
"name": "Valet de Bâton",
"type": "tarot",
"img": "icons/svg/treasure.svg",
"folder": null,
"sort": 6300000,
"flags": {},
"system": {
"type": "figure",
"symbole": "baton",
"valeur": "valet",
"description": "<p>Valet de Bâton</p>",
"image": "icons/svg/treasure.svg"
}
}
+17
View File
@@ -0,0 +1,17 @@
{
"_id": "tarot_064",
"_key": "!items!tarot_064",
"name": "Cavalier de Bâton",
"type": "tarot",
"img": "icons/svg/treasure.svg",
"folder": null,
"sort": 6400000,
"flags": {},
"system": {
"type": "figure",
"symbole": "baton",
"valeur": "cavalier",
"description": "<p>Cavalier de Bâton</p>",
"image": "icons/svg/treasure.svg"
}
}
+17
View File
@@ -0,0 +1,17 @@
{
"_id": "tarot_065",
"_key": "!items!tarot_065",
"name": "Reine de Bâton",
"type": "tarot",
"img": "icons/svg/treasure.svg",
"folder": null,
"sort": 6500000,
"flags": {},
"system": {
"type": "figure",
"symbole": "baton",
"valeur": "reine",
"description": "<p>Reine de Bâton</p>",
"image": "icons/svg/treasure.svg"
}
}
+17
View File
@@ -0,0 +1,17 @@
{
"_id": "tarot_066",
"_key": "!items!tarot_066",
"name": "Roi de Bâton",
"type": "tarot",
"img": "icons/svg/treasure.svg",
"folder": null,
"sort": 6600000,
"flags": {},
"system": {
"type": "figure",
"symbole": "baton",
"valeur": "roi",
"description": "<p>Roi de Bâton</p>",
"image": "icons/svg/treasure.svg"
}
}
+17
View File
@@ -0,0 +1,17 @@
{
"_id": "tarot_067",
"_key": "!items!tarot_067",
"name": "Valet de Coupe",
"type": "tarot",
"img": "icons/svg/treasure.svg",
"folder": null,
"sort": 6700000,
"flags": {},
"system": {
"type": "figure",
"symbole": "coupe",
"valeur": "valet",
"description": "<p>Valet de Coupe</p>",
"image": "icons/svg/treasure.svg"
}
}
+17
View File
@@ -0,0 +1,17 @@
{
"_id": "tarot_068",
"_key": "!items!tarot_068",
"name": "Cavalier de Coupe",
"type": "tarot",
"img": "icons/svg/treasure.svg",
"folder": null,
"sort": 6800000,
"flags": {},
"system": {
"type": "figure",
"symbole": "coupe",
"valeur": "cavalier",
"description": "<p>Cavalier de Coupe</p>",
"image": "icons/svg/treasure.svg"
}
}
+17
View File
@@ -0,0 +1,17 @@
{
"_id": "tarot_069",
"_key": "!items!tarot_069",
"name": "Reine de Coupe",
"type": "tarot",
"img": "icons/svg/treasure.svg",
"folder": null,
"sort": 6900000,
"flags": {},
"system": {
"type": "figure",
"symbole": "coupe",
"valeur": "reine",
"description": "<p>Reine de Coupe</p>",
"image": "icons/svg/treasure.svg"
}
}
+17
View File
@@ -0,0 +1,17 @@
{
"_id": "tarot_070",
"_key": "!items!tarot_070",
"name": "Roi de Coupe",
"type": "tarot",
"img": "icons/svg/treasure.svg",
"folder": null,
"sort": 7000000,
"flags": {},
"system": {
"type": "figure",
"symbole": "coupe",
"valeur": "roi",
"description": "<p>Roi de Coupe</p>",
"image": "icons/svg/treasure.svg"
}
}
+17
View File
@@ -0,0 +1,17 @@
{
"_id": "tarot_071",
"_key": "!items!tarot_071",
"name": "Valet de Denier",
"type": "tarot",
"img": "icons/svg/treasure.svg",
"folder": null,
"sort": 7100000,
"flags": {},
"system": {
"type": "figure",
"symbole": "denier",
"valeur": "valet",
"description": "<p>Valet de Denier</p>",
"image": "icons/svg/treasure.svg"
}
}
+17
View File
@@ -0,0 +1,17 @@
{
"_id": "tarot_072",
"_key": "!items!tarot_072",
"name": "Cavalier de Denier",
"type": "tarot",
"img": "icons/svg/treasure.svg",
"folder": null,
"sort": 7200000,
"flags": {},
"system": {
"type": "figure",
"symbole": "denier",
"valeur": "cavalier",
"description": "<p>Cavalier de Denier</p>",
"image": "icons/svg/treasure.svg"
}
}
+17
View File
@@ -0,0 +1,17 @@
{
"_id": "tarot_073",
"_key": "!items!tarot_073",
"name": "Reine de Denier",
"type": "tarot",
"img": "icons/svg/treasure.svg",
"folder": null,
"sort": 7300000,
"flags": {},
"system": {
"type": "figure",
"symbole": "denier",
"valeur": "reine",
"description": "<p>Reine de Denier</p>",
"image": "icons/svg/treasure.svg"
}
}
+17
View File
@@ -0,0 +1,17 @@
{
"_id": "tarot_074",
"_key": "!items!tarot_074",
"name": "Roi de Denier",
"type": "tarot",
"img": "icons/svg/treasure.svg",
"folder": null,
"sort": 7400000,
"flags": {},
"system": {
"type": "figure",
"symbole": "denier",
"valeur": "roi",
"description": "<p>Roi de Denier</p>",
"image": "icons/svg/treasure.svg"
}
}
+17
View File
@@ -0,0 +1,17 @@
{
"_id": "tarot_075",
"_key": "!items!tarot_075",
"name": "Valet d'Épée",
"type": "tarot",
"img": "icons/svg/treasure.svg",
"folder": null,
"sort": 7500000,
"flags": {},
"system": {
"type": "figure",
"symbole": "epee",
"valeur": "valet",
"description": "<p>Valet d'Épée</p>",
"image": "icons/svg/treasure.svg"
}
}
+17
View File
@@ -0,0 +1,17 @@
{
"_id": "tarot_076",
"_key": "!items!tarot_076",
"name": "Cavalier d'Épée",
"type": "tarot",
"img": "icons/svg/treasure.svg",
"folder": null,
"sort": 7600000,
"flags": {},
"system": {
"type": "figure",
"symbole": "epee",
"valeur": "cavalier",
"description": "<p>Cavalier d'Épée</p>",
"image": "icons/svg/treasure.svg"
}
}
+17
View File
@@ -0,0 +1,17 @@
{
"_id": "tarot_077",
"_key": "!items!tarot_077",
"name": "Reine d'Épée",
"type": "tarot",
"img": "icons/svg/treasure.svg",
"folder": null,
"sort": 7700000,
"flags": {},
"system": {
"type": "figure",
"symbole": "epee",
"valeur": "reine",
"description": "<p>Reine d'Épée</p>",
"image": "icons/svg/treasure.svg"
}
}
+17
View File
@@ -0,0 +1,17 @@
{
"_id": "tarot_078",
"_key": "!items!tarot_078",
"name": "Roi d'Épée",
"type": "tarot",
"img": "icons/svg/treasure.svg",
"folder": null,
"sort": 7800000,
"flags": {},
"system": {
"type": "figure",
"symbole": "epee",
"valeur": "roi",
"description": "<p>Roi d'Épée</p>",
"image": "icons/svg/treasure.svg"
}
}
+80
View File
@@ -0,0 +1,80 @@
import { promises as fs } from "fs"
import path from "path"
import { compilePack } from "@foundryvtt/foundryvtt-cli"
const DATA_FILE = "assets/data/tarot.json"
const SRC_DIR = "packs_src/hamalron-items"
const DEST_DIR = "packs-system/hamalron-items"
async function main() {
const raw = await fs.readFile(DATA_FILE, "utf-8")
const cards = JSON.parse(raw)
if (!Array.isArray(cards)) {
console.error("Invalid data: expected array")
process.exit(1)
}
console.log(`Generating ${cards.length} tarot cards...`)
// Clear and recreate the destination LevelDB
await fs.mkdir(DEST_DIR, { recursive: true })
// Create a temporary directory for individual JSON files
await fs.mkdir(SRC_DIR, { recursive: true })
const existing = await fs.readdir(SRC_DIR)
for (const f of existing) {
await fs.unlink(path.join(SRC_DIR, f))
}
// Write each card as a single JSON document file
for (let i = 0; i < cards.length; i++) {
const card = cards[i]
const id = `tarot_${String(i + 1).padStart(3, "0")}`
const doc = {
_id: id,
_key: `!items!${id}`,
name: card.name,
type: "tarot",
img: "icons/svg/treasure.svg",
folder: null,
sort: (i + 1) * 100000,
flags: {},
system: {
type: card.type,
symbole: card.symbole,
valeur: card.valeur,
description: card.description || `<p>${card.name}</p>`,
image: "icons/svg/treasure.svg",
},
}
// Write as JSON file for the pack tool
const filePath = path.join(SRC_DIR, `${id}.json`)
await fs.writeFile(filePath, JSON.stringify(doc, null, 2), "utf-8")
}
console.log("Compiling to LevelDB...")
// Compile using the CLI
try {
// Update the source dir to use JSON instead of YAML
await compilePack(SRC_DIR, DEST_DIR, { yaml: false, log: true })
console.log(`Compiled to ${DEST_DIR}`)
// Count entries
const files = await fs.readdir(DEST_DIR)
console.log(`LevelDB files: ${files.length}`)
} catch (e) {
console.error("Compile error:", e.message)
// Fallback: copy JSON to a packs/ dir
console.log("Fallback: copy JSON to packs/...")
const fallbackDir = "packs"
await fs.mkdir(fallbackDir, { recursive: true })
for (const f of existing) {
await fs.unlink(path.join(SRC_DIR, f)).catch(() => {})
}
console.log(`JSON data in ${SRC_DIR} (compile to LevelDB manually)`)
}
}
main().catch(console.error)
+1 -1
View File
@@ -1,3 +1,3 @@
import { CompendiumsManager } from './CompendiumsManager.mjs';
CompendiumsManager.packToDistDir()
CompendiumsManager.packToDistDir('packs_src', 'packs-system')