diff --git a/css/cde-theme.css b/css/cde-theme.css index 5b7e093..ac2e7a4 100644 --- a/css/cde-theme.css +++ b/css/cde-theme.css @@ -2046,7 +2046,7 @@ section.npc .cde-neon-tabs .item.active { Global UI Rules =============================================*/ #logo { - content: url("/systems/fvtt-chroniques-de-l-etrange/images/logo_jeu.png"); + content: url("/systems/fvtt-chroniques-de-l-etrange/images/logo_jeu.webp"); width: 100px; height: 100px; margin-left: 7px; @@ -2567,19 +2567,19 @@ ol.item-list li.item .item-controls a.item-control:hover { } [data-aspect="wood"] .cde-rr-row--auspicious { --rr-color: #cd171a; - --rr-icon: url(/systems/fvtt-chroniques-de-l-etrange/images/cde_feu.png); + --rr-icon: url(/systems/fvtt-chroniques-de-l-etrange/images/cde_feu.webp); } [data-aspect="wood"] .cde-rr-row--noxious { --rr-color: #009fe2; - --rr-icon: url(/systems/fvtt-chroniques-de-l-etrange/images/cde_eau.png); + --rr-icon: url(/systems/fvtt-chroniques-de-l-etrange/images/cde_eau.webp); } [data-aspect="wood"] .cde-rr-row--loksyu { --rr-color: #a85747; - --rr-icon: url(/systems/fvtt-chroniques-de-l-etrange/images/cde_terre.png); + --rr-icon: url(/systems/fvtt-chroniques-de-l-etrange/images/cde_terre.webp); } [data-aspect="wood"] .cde-rr-row--tinji { --rr-color: #70706e; - --rr-icon: url(/systems/fvtt-chroniques-de-l-etrange/images/cde_metal.png); + --rr-icon: url(/systems/fvtt-chroniques-de-l-etrange/images/cde_metal.webp); } [data-aspect="fire"] { --rr-accent: #cd171a; @@ -2587,19 +2587,19 @@ ol.item-list li.item .item-controls a.item-control:hover { } [data-aspect="fire"] .cde-rr-row--auspicious { --rr-color: #a85747; - --rr-icon: url(/systems/fvtt-chroniques-de-l-etrange/images/cde_terre.png); + --rr-icon: url(/systems/fvtt-chroniques-de-l-etrange/images/cde_terre.webp); } [data-aspect="fire"] .cde-rr-row--noxious { --rr-color: #41a436; - --rr-icon: url(/systems/fvtt-chroniques-de-l-etrange/images/cde_bois.png); + --rr-icon: url(/systems/fvtt-chroniques-de-l-etrange/images/cde_bois.webp); } [data-aspect="fire"] .cde-rr-row--loksyu { --rr-color: #70706e; - --rr-icon: url(/systems/fvtt-chroniques-de-l-etrange/images/cde_metal.png); + --rr-icon: url(/systems/fvtt-chroniques-de-l-etrange/images/cde_metal.webp); } [data-aspect="fire"] .cde-rr-row--tinji { --rr-color: #009fe2; - --rr-icon: url(/systems/fvtt-chroniques-de-l-etrange/images/cde_eau.png); + --rr-icon: url(/systems/fvtt-chroniques-de-l-etrange/images/cde_eau.webp); } [data-aspect="earth"] { --rr-accent: #a85747; @@ -2607,19 +2607,19 @@ ol.item-list li.item .item-controls a.item-control:hover { } [data-aspect="earth"] .cde-rr-row--auspicious { --rr-color: #70706e; - --rr-icon: url(/systems/fvtt-chroniques-de-l-etrange/images/cde_metal.png); + --rr-icon: url(/systems/fvtt-chroniques-de-l-etrange/images/cde_metal.webp); } [data-aspect="earth"] .cde-rr-row--noxious { --rr-color: #cd171a; - --rr-icon: url(/systems/fvtt-chroniques-de-l-etrange/images/cde_feu.png); + --rr-icon: url(/systems/fvtt-chroniques-de-l-etrange/images/cde_feu.webp); } [data-aspect="earth"] .cde-rr-row--loksyu { --rr-color: #009fe2; - --rr-icon: url(/systems/fvtt-chroniques-de-l-etrange/images/cde_eau.png); + --rr-icon: url(/systems/fvtt-chroniques-de-l-etrange/images/cde_eau.webp); } [data-aspect="earth"] .cde-rr-row--tinji { --rr-color: #41a436; - --rr-icon: url(/systems/fvtt-chroniques-de-l-etrange/images/cde_bois.png); + --rr-icon: url(/systems/fvtt-chroniques-de-l-etrange/images/cde_bois.webp); } [data-aspect="metal"] { --rr-accent: #70706e; @@ -2627,19 +2627,19 @@ ol.item-list li.item .item-controls a.item-control:hover { } [data-aspect="metal"] .cde-rr-row--auspicious { --rr-color: #009fe2; - --rr-icon: url(/systems/fvtt-chroniques-de-l-etrange/images/cde_eau.png); + --rr-icon: url(/systems/fvtt-chroniques-de-l-etrange/images/cde_eau.webp); } [data-aspect="metal"] .cde-rr-row--noxious { --rr-color: #a85747; - --rr-icon: url(/systems/fvtt-chroniques-de-l-etrange/images/cde_terre.png); + --rr-icon: url(/systems/fvtt-chroniques-de-l-etrange/images/cde_terre.webp); } [data-aspect="metal"] .cde-rr-row--loksyu { --rr-color: #41a436; - --rr-icon: url(/systems/fvtt-chroniques-de-l-etrange/images/cde_bois.png); + --rr-icon: url(/systems/fvtt-chroniques-de-l-etrange/images/cde_bois.webp); } [data-aspect="metal"] .cde-rr-row--tinji { --rr-color: #cd171a; - --rr-icon: url(/systems/fvtt-chroniques-de-l-etrange/images/cde_feu.png); + --rr-icon: url(/systems/fvtt-chroniques-de-l-etrange/images/cde_feu.webp); } [data-aspect="water"] { --rr-accent: #009fe2; @@ -2647,19 +2647,19 @@ ol.item-list li.item .item-controls a.item-control:hover { } [data-aspect="water"] .cde-rr-row--auspicious { --rr-color: #41a436; - --rr-icon: url(/systems/fvtt-chroniques-de-l-etrange/images/cde_bois.png); + --rr-icon: url(/systems/fvtt-chroniques-de-l-etrange/images/cde_bois.webp); } [data-aspect="water"] .cde-rr-row--noxious { --rr-color: #70706e; - --rr-icon: url(/systems/fvtt-chroniques-de-l-etrange/images/cde_metal.png); + --rr-icon: url(/systems/fvtt-chroniques-de-l-etrange/images/cde_metal.webp); } [data-aspect="water"] .cde-rr-row--loksyu { --rr-color: #cd171a; - --rr-icon: url(/systems/fvtt-chroniques-de-l-etrange/images/cde_feu.png); + --rr-icon: url(/systems/fvtt-chroniques-de-l-etrange/images/cde_feu.webp); } [data-aspect="water"] .cde-rr-row--tinji { --rr-color: #a85747; - --rr-icon: url(/systems/fvtt-chroniques-de-l-etrange/images/cde_terre.png); + --rr-icon: url(/systems/fvtt-chroniques-de-l-etrange/images/cde_terre.webp); } .cde-roll-result { background: #080c14; diff --git a/css/cde-theme.less b/css/cde-theme.less index 545f9dc..66a15f6 100644 --- a/css/cde-theme.less +++ b/css/cde-theme.less @@ -2029,7 +2029,7 @@ section.npc .cde-neon-tabs .item.active { color: @cde-supernatural; borde =============================================*/ #logo { - content: url("/systems/fvtt-chroniques-de-l-etrange/images/logo_jeu.png"); + content: url("/systems/fvtt-chroniques-de-l-etrange/images/logo_jeu.webp"); width: 100px; height: 100px; margin-left: 7px; @@ -2120,7 +2120,7 @@ strong.ellipsis { } // ============================================================ -// Circle input — replaces cercle.png overlay approach +// Circle input — replaces cercle.webp overlay approach // ============================================================ .cde-circle-input { width: 44px !important; @@ -2604,11 +2604,11 @@ ol.item-list { @wu-gray: #70706e; @wu-blue: #009fe2; -@wu-img-bois: ~"url(/systems/fvtt-chroniques-de-l-etrange/images/cde_bois.png)"; -@wu-img-feu: ~"url(/systems/fvtt-chroniques-de-l-etrange/images/cde_feu.png)"; -@wu-img-terre: ~"url(/systems/fvtt-chroniques-de-l-etrange/images/cde_terre.png)"; -@wu-img-metal: ~"url(/systems/fvtt-chroniques-de-l-etrange/images/cde_metal.png)"; -@wu-img-eau: ~"url(/systems/fvtt-chroniques-de-l-etrange/images/cde_eau.png)"; +@wu-img-bois: ~"url(/systems/fvtt-chroniques-de-l-etrange/images/cde_bois.webp)"; +@wu-img-feu: ~"url(/systems/fvtt-chroniques-de-l-etrange/images/cde_feu.webp)"; +@wu-img-terre: ~"url(/systems/fvtt-chroniques-de-l-etrange/images/cde_terre.webp)"; +@wu-img-metal: ~"url(/systems/fvtt-chroniques-de-l-etrange/images/cde_metal.webp)"; +@wu-img-eau: ~"url(/systems/fvtt-chroniques-de-l-etrange/images/cde_eau.webp)"; // Wu Xing aspect custom properties (accent color + icon per aspect) // Sets --rr-accent on the card root, plus per-row --rr-color/--rr-icon diff --git a/dist/system.js b/dist/system.js index 6677c1f..6d684c0 100644 --- a/dist/system.js +++ b/dist/system.js @@ -29,11 +29,11 @@ var MAGICS = { label: "CDE.InternalCinnabar", aspectlabel: "CDE.Metal", speciality: { - essence: { label: "CDE.Essence", classicon: "icon-yin", icon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yin.png", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_metal.png", labelicon: "Yin", labelelement: "CDE.Metal" }, - mind: { label: "CDE.Mind", classicon: "icon-yin", icon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yin.png", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_eau.png", labelicon: "Yin", labelelement: "CDE.Water" }, - purification: { label: "CDE.Purification", classicon: "icon-yinyang", icon: "/systems/fvtt-chroniques-de-l-etrange/images/yin_yang.png", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_terre.png", labelicon: "Yin/Yang", labelelement: "CDE.Earth" }, - manipulation: { label: "CDE.Manipulation", classicon: "icon-yang", icon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yang.png", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_feu.png", labelicon: "Yang", labelelement: "CDE.Fire" }, - aura: { label: "CDE.Aura", classicon: "icon-yang", icon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yang.png", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_bois.png", labelicon: "Yang", labelelement: "CDE.Wood" } + essence: { label: "CDE.Essence", classicon: "icon-yin", icon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yin.webp", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_metal.webp", labelicon: "Yin", labelelement: "CDE.Metal" }, + mind: { label: "CDE.Mind", classicon: "icon-yin", icon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yin.webp", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_eau.webp", labelicon: "Yin", labelelement: "CDE.Water" }, + purification: { label: "CDE.Purification", classicon: "icon-yinyang", icon: "/systems/fvtt-chroniques-de-l-etrange/images/yin_yang.webp", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_terre.webp", labelicon: "Yin/Yang", labelelement: "CDE.Earth" }, + manipulation: { label: "CDE.Manipulation", classicon: "icon-yang", icon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yang.webp", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_feu.webp", labelicon: "Yang", labelelement: "CDE.Fire" }, + aura: { label: "CDE.Aura", classicon: "icon-yang", icon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yang.webp", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_bois.webp", labelicon: "Yang", labelelement: "CDE.Wood" } } }, alchemy: { @@ -42,11 +42,11 @@ var MAGICS = { label: "CDE.Alchemy", aspectlabel: "CDE.Water", speciality: { - acupuncture: { label: "CDE.Acupuncture", classicon: "icon-yin", icon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yin.png", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_metal.png", labelicon: "Yin", labelelement: "CDE.Metal" }, - elixirs: { label: "CDE.Elixirs", classicon: "icon-yin", icon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yin.png", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_eau.png", labelicon: "Yin", labelelement: "CDE.Water" }, - poisons: { label: "CDE.Poisons", classicon: "icon-yinyang", icon: "/systems/fvtt-chroniques-de-l-etrange/images/yin_yang.png", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_terre.png", labelicon: "Yin/Yang", labelelement: "CDE.Earth" }, - arsenal: { label: "CDE.Arsenal", classicon: "icon-yang", icon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yang.png", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_feu.png", labelicon: "Yang", labelelement: "CDE.Fire" }, - potions: { label: "CDE.Potions", classicon: "icon-yang", icon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yang.png", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_bois.png", labelicon: "Yang", labelelement: "CDE.Wood" } + acupuncture: { label: "CDE.Acupuncture", classicon: "icon-yin", icon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yin.webp", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_metal.webp", labelicon: "Yin", labelelement: "CDE.Metal" }, + elixirs: { label: "CDE.Elixirs", classicon: "icon-yin", icon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yin.webp", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_eau.webp", labelicon: "Yin", labelelement: "CDE.Water" }, + poisons: { label: "CDE.Poisons", classicon: "icon-yinyang", icon: "/systems/fvtt-chroniques-de-l-etrange/images/yin_yang.webp", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_terre.webp", labelicon: "Yin/Yang", labelelement: "CDE.Earth" }, + arsenal: { label: "CDE.Arsenal", classicon: "icon-yang", icon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yang.webp", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_feu.webp", labelicon: "Yang", labelelement: "CDE.Fire" }, + potions: { label: "CDE.Potions", classicon: "icon-yang", icon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yang.webp", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_bois.webp", labelicon: "Yang", labelelement: "CDE.Wood" } } }, masteryoftheway: { @@ -55,11 +55,11 @@ var MAGICS = { label: "CDE.MasteryOfTheWay", aspectlabel: "CDE.Earth", speciality: { - curse: { label: "CDE.Curse", classicon: "icon-yin", icon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yin.png", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_metal.png", labelicon: "Yin", labelelement: "CDE.Metal" }, - transfiguration: { label: "CDE.Transfiguration", classicon: "icon-yin", icon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yin.png", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_eau.png", labelicon: "Yin", labelelement: "CDE.Water" }, - necromancy: { label: "CDE.Necromancy", classicon: "icon-yinyang", icon: "/systems/fvtt-chroniques-de-l-etrange/images/yin_yang.png", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_terre.png", labelicon: "Yin/Yang", labelelement: "CDE.Earth" }, - climatecontrol: { label: "CDE.ClimateControl", classicon: "icon-yang", icon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yang.png", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_feu.png", labelicon: "Yang", labelelement: "CDE.Fire" }, - goldenmagic: { label: "CDE.GoldenMagic", classicon: "icon-yang", icon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yang.png", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_bois.png", labelicon: "Yang", labelelement: "CDE.Wood" } + curse: { label: "CDE.Curse", classicon: "icon-yin", icon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yin.webp", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_metal.webp", labelicon: "Yin", labelelement: "CDE.Metal" }, + transfiguration: { label: "CDE.Transfiguration", classicon: "icon-yin", icon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yin.webp", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_eau.webp", labelicon: "Yin", labelelement: "CDE.Water" }, + necromancy: { label: "CDE.Necromancy", classicon: "icon-yinyang", icon: "/systems/fvtt-chroniques-de-l-etrange/images/yin_yang.webp", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_terre.webp", labelicon: "Yin/Yang", labelelement: "CDE.Earth" }, + climatecontrol: { label: "CDE.ClimateControl", classicon: "icon-yang", icon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yang.webp", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_feu.webp", labelicon: "Yang", labelelement: "CDE.Fire" }, + goldenmagic: { label: "CDE.GoldenMagic", classicon: "icon-yang", icon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yang.webp", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_bois.webp", labelicon: "Yang", labelelement: "CDE.Wood" } } }, exorcism: { @@ -68,11 +68,11 @@ var MAGICS = { label: "CDE.Exorcism", aspectlabel: "CDE.Fire", speciality: { - invocation: { label: "CDE.Invocation", classicon: "icon-yin", icon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yin.png", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_metal.png", labelicon: "Yin", labelelement: "CDE.Metal" }, - tracking: { label: "CDE.Tracking", classicon: "icon-yin", icon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yin.png", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_eau.png", labelicon: "Yin", labelelement: "CDE.Water" }, - protection: { label: "CDE.Protection", classicon: "icon-yinyang", icon: "/systems/fvtt-chroniques-de-l-etrange/images/yin_yang.png", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_terre.png", labelicon: "Yin/Yang", labelelement: "CDE.Earth" }, - punishment: { label: "CDE.Punishment", classicon: "icon-yang", icon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yang.png", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_feu.png", labelicon: "Yang", labelelement: "CDE.Fire" }, - domination: { label: "CDE.Domination", classicon: "icon-yang", icon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yang.png", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_bois.png", labelicon: "Yang", labelelement: "CDE.Wood" } + invocation: { label: "CDE.Invocation", classicon: "icon-yin", icon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yin.webp", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_metal.webp", labelicon: "Yin", labelelement: "CDE.Metal" }, + tracking: { label: "CDE.Tracking", classicon: "icon-yin", icon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yin.webp", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_eau.webp", labelicon: "Yin", labelelement: "CDE.Water" }, + protection: { label: "CDE.Protection", classicon: "icon-yinyang", icon: "/systems/fvtt-chroniques-de-l-etrange/images/yin_yang.webp", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_terre.webp", labelicon: "Yin/Yang", labelelement: "CDE.Earth" }, + punishment: { label: "CDE.Punishment", classicon: "icon-yang", icon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yang.webp", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_feu.webp", labelicon: "Yang", labelelement: "CDE.Fire" }, + domination: { label: "CDE.Domination", classicon: "icon-yang", icon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yang.webp", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_bois.webp", labelicon: "Yang", labelelement: "CDE.Wood" } } }, geomancy: { @@ -81,11 +81,11 @@ var MAGICS = { label: "CDE.Geomancy", aspectlabel: "CDE.Wood", speciality: { - neutralization: { label: "CDE.Neutralization", classicon: "icon-yin", icon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yin.png", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_metal.png", labelicon: "Yin", labelelement: "CDE.Metal" }, - divination: { label: "CDE.Divination", classicon: "icon-yin", icon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yin.png", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_eau.png", labelicon: "Yin", labelelement: "CDE.Water" }, - earthlyprayer: { label: "CDE.EarthlyPrayer", classicon: "icon-yinyang", icon: "/systems/fvtt-chroniques-de-l-etrange/images/yin_yang.png", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_terre.png", labelicon: "Yin/Yang", labelelement: "CDE.Earth" }, - heavenlyprayer: { label: "CDE.HeavenlyPrayer", classicon: "icon-yang", icon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yang.png", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_feu.png", labelicon: "Yang", labelelement: "CDE.Fire" }, - fungseoi: { label: "CDE.Fungseoi", classicon: "icon-yang", icon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yang.png", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_bois.png", labelicon: "Yang", labelelement: "CDE.Wood" } + neutralization: { label: "CDE.Neutralization", classicon: "icon-yin", icon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yin.webp", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_metal.webp", labelicon: "Yin", labelelement: "CDE.Metal" }, + divination: { label: "CDE.Divination", classicon: "icon-yin", icon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yin.webp", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_eau.webp", labelicon: "Yin", labelelement: "CDE.Water" }, + earthlyprayer: { label: "CDE.EarthlyPrayer", classicon: "icon-yinyang", icon: "/systems/fvtt-chroniques-de-l-etrange/images/yin_yang.webp", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_terre.webp", labelicon: "Yin/Yang", labelelement: "CDE.Earth" }, + heavenlyprayer: { label: "CDE.HeavenlyPrayer", classicon: "icon-yang", icon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yang.webp", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_feu.webp", labelicon: "Yang", labelelement: "CDE.Fire" }, + fungseoi: { label: "CDE.Fungseoi", classicon: "icon-yang", icon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yang.webp", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_bois.webp", labelicon: "Yang", labelelement: "CDE.Wood" } } } }; @@ -729,29 +729,29 @@ function registerHandlebarsHelpers() { }); Handlebars.registerHelper("getMagicAspectIcon", function(magic) { const icons = { - internalcinnabar: "/systems/fvtt-chroniques-de-l-etrange/images/cde_metal.png", - alchemy: "/systems/fvtt-chroniques-de-l-etrange/images/cde_eau.png", - masteryoftheway: "/systems/fvtt-chroniques-de-l-etrange/images/cde_terre.png", - exorcism: "/systems/fvtt-chroniques-de-l-etrange/images/cde_feu.png", - geomancy: "/systems/fvtt-chroniques-de-l-etrange/images/cde_bois.png" + internalcinnabar: "/systems/fvtt-chroniques-de-l-etrange/images/cde_metal.webp", + alchemy: "/systems/fvtt-chroniques-de-l-etrange/images/cde_eau.webp", + masteryoftheway: "/systems/fvtt-chroniques-de-l-etrange/images/cde_terre.webp", + exorcism: "/systems/fvtt-chroniques-de-l-etrange/images/cde_feu.webp", + geomancy: "/systems/fvtt-chroniques-de-l-etrange/images/cde_bois.webp" }; return icons[magic] ?? ""; }); Handlebars.registerHelper("getElementIcon", function(aspect) { const icons = { - metal: "/systems/fvtt-chroniques-de-l-etrange/images/cde_metal.png", - eau: "/systems/fvtt-chroniques-de-l-etrange/images/cde_eau.png", - terre: "/systems/fvtt-chroniques-de-l-etrange/images/cde_terre.png", - feu: "/systems/fvtt-chroniques-de-l-etrange/images/cde_feu.png", - bois: "/systems/fvtt-chroniques-de-l-etrange/images/cde_bois.png" + metal: "/systems/fvtt-chroniques-de-l-etrange/images/cde_metal.webp", + eau: "/systems/fvtt-chroniques-de-l-etrange/images/cde_eau.webp", + terre: "/systems/fvtt-chroniques-de-l-etrange/images/cde_terre.webp", + feu: "/systems/fvtt-chroniques-de-l-etrange/images/cde_feu.webp", + bois: "/systems/fvtt-chroniques-de-l-etrange/images/cde_bois.webp" }; return icons[aspect] ?? ""; }); Handlebars.registerHelper("getOrientationIcon", function(orientation) { const icons = { - yin: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yin.png", - yang: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yang.png", - yinyang: "/systems/fvtt-chroniques-de-l-etrange/images/yin_yang.png" + yin: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yin.webp", + yang: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yang.webp", + yinyang: "/systems/fvtt-chroniques-de-l-etrange/images/yin_yang.webp" }; return icons[orientation] ?? ""; }); @@ -944,11 +944,11 @@ var ASPECT_LABELS = { wood: "CDE.Wood" }; var ASPECT_ICONS = { - metal: "systems/fvtt-chroniques-de-l-etrange/images/cde_metal.png", - water: "systems/fvtt-chroniques-de-l-etrange/images/cde_eau.png", - earth: "systems/fvtt-chroniques-de-l-etrange/images/cde_terre.png", - fire: "systems/fvtt-chroniques-de-l-etrange/images/cde_feu.png", - wood: "systems/fvtt-chroniques-de-l-etrange/images/cde_bois.png" + metal: "systems/fvtt-chroniques-de-l-etrange/images/cde_metal.webp", + water: "systems/fvtt-chroniques-de-l-etrange/images/cde_eau.webp", + earth: "systems/fvtt-chroniques-de-l-etrange/images/cde_terre.webp", + fire: "systems/fvtt-chroniques-de-l-etrange/images/cde_feu.webp", + wood: "systems/fvtt-chroniques-de-l-etrange/images/cde_bois.webp" }; var ASPECT_FACES = { metal: [3, 8], @@ -2122,7 +2122,7 @@ function injectCompendiumLink(html) { section.classList.add("settings", "flexcol"); section.innerHTML = ` - + Lien utile diff --git a/dist/system.js.map b/dist/system.js.map index 61dc952..61cbff9 100644 --- a/dist/system.js.map +++ b/dist/system.js.map @@ -1,7 +1,7 @@ { "version": 3, "sources": ["../src/config/constants.js", "../src/config/localize.js", "../src/config/runtime.js", "../src/data/actors/character.js", "../src/data/actors/npc.js", "../src/data/actors/tinji.js", "../src/data/actors/loksyu.js", "../src/data/items/item.js", "../src/data/items/kungfu.js", "../src/data/items/spell.js", "../src/data/items/supernatural.js", "../src/data/items/weapon.js", "../src/data/items/armor.js", "../src/data/items/sanhei.js", "../src/data/items/ingredient.js", "../src/documents/chat-message.js", "../src/documents/actor.js", "../src/documents/item.js", "../src/ui/dice.js", "../src/ui/helpers.js", "../src/ui/templates.js", "../src/ui/initiative.js", "../src/ui/rolling.js", "../src/ui/sheets/actors/base.js", "../src/ui/sheets/actors/character.js", "../src/ui/sheets/actors/npc.js", "../src/ui/sheets/actors/tinji.js", "../src/ui/sheets/actors/loksyu.js", "../src/ui/sheets/items/base.js", "../src/ui/sheets/items/item.js", "../src/ui/sheets/items/kungfu.js", "../src/ui/sheets/items/spell.js", "../src/ui/sheets/items/supernatural.js", "../src/ui/sheets/items/weapon.js", "../src/ui/sheets/items/armor.js", "../src/ui/sheets/items/sanhei.js", "../src/ui/sheets/items/ingredient.js", "../src/migration.js", "../src/system.js"], - "sourcesContent": ["export const SYSTEM_ID = \"fvtt-chroniques-de-l-etrange\"\n\nexport const ACTOR_TYPES = {\n character: \"character\",\n npc: \"npc\",\n tinji: \"tinji\",\n loksyu: \"loksyu\",\n}\n\nexport const ITEM_TYPES = {\n item: \"item\",\n kungfu: \"kungfu\",\n spell: \"spell\",\n supernatural: \"supernatural\",\n weapon: \"weapon\",\n armor: \"armor\",\n sanhei: \"sanhei\",\n ingredient: \"ingredient\",\n}\n\nexport const SUBTYPES = {\n weapon: { id: \"weapon\", label: \"CDE.Weapon\" },\n armor: { id: \"armor\", label: \"CDE.Armor\" },\n sanhei: { id: \"sanhei\", label: \"CDE.Sanhei\" },\n other: { id: \"other\", label: \"CDE.Other\" },\n}\n\nexport const MAGICS = {\n internalcinnabar: {\n id: \"internalcinnabar\",\n background: \"linear-grey\",\n label: \"CDE.InternalCinnabar\",\n aspectlabel: \"CDE.Metal\",\n speciality: {\n essence: { label: \"CDE.Essence\", classicon: \"icon-yin\", icon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_yin.png\", elementicon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_metal.png\", labelicon: \"Yin\", labelelement: \"CDE.Metal\" },\n mind: { label: \"CDE.Mind\", classicon: \"icon-yin\", icon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_yin.png\", elementicon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_eau.png\", labelicon: \"Yin\", labelelement: \"CDE.Water\" },\n purification: { label: \"CDE.Purification\", classicon: \"icon-yinyang\", icon: \"/systems/fvtt-chroniques-de-l-etrange/images/yin_yang.png\", elementicon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_terre.png\", labelicon: \"Yin/Yang\", labelelement: \"CDE.Earth\" },\n manipulation: { label: \"CDE.Manipulation\", classicon: \"icon-yang\", icon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_yang.png\", elementicon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_feu.png\", labelicon: \"Yang\", labelelement: \"CDE.Fire\" },\n aura: { label: \"CDE.Aura\", classicon: \"icon-yang\", icon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_yang.png\", elementicon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_bois.png\", labelicon: \"Yang\", labelelement: \"CDE.Wood\" },\n },\n },\n alchemy: {\n id: \"alchemy\",\n background: \"linear-blue\",\n label: \"CDE.Alchemy\",\n aspectlabel: \"CDE.Water\",\n speciality: {\n acupuncture: { label: \"CDE.Acupuncture\", classicon: \"icon-yin\", icon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_yin.png\", elementicon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_metal.png\", labelicon: \"Yin\", labelelement: \"CDE.Metal\" },\n elixirs: { label: \"CDE.Elixirs\", classicon: \"icon-yin\", icon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_yin.png\", elementicon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_eau.png\", labelicon: \"Yin\", labelelement: \"CDE.Water\" },\n poisons: { label: \"CDE.Poisons\", classicon: \"icon-yinyang\", icon: \"/systems/fvtt-chroniques-de-l-etrange/images/yin_yang.png\", elementicon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_terre.png\", labelicon: \"Yin/Yang\", labelelement: \"CDE.Earth\" },\n arsenal: { label: \"CDE.Arsenal\", classicon: \"icon-yang\", icon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_yang.png\", elementicon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_feu.png\", labelicon: \"Yang\", labelelement: \"CDE.Fire\" },\n potions: { label: \"CDE.Potions\", classicon: \"icon-yang\", icon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_yang.png\", elementicon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_bois.png\", labelicon: \"Yang\", labelelement: \"CDE.Wood\" },\n },\n },\n masteryoftheway: {\n id: \"masteryoftheway\",\n background: \"linear-brown\",\n label: \"CDE.MasteryOfTheWay\",\n aspectlabel: \"CDE.Earth\",\n speciality: {\n curse: { label: \"CDE.Curse\", classicon: \"icon-yin\", icon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_yin.png\", elementicon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_metal.png\", labelicon: \"Yin\", labelelement: \"CDE.Metal\" },\n transfiguration: { label: \"CDE.Transfiguration\", classicon: \"icon-yin\", icon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_yin.png\", elementicon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_eau.png\", labelicon: \"Yin\", labelelement: \"CDE.Water\" },\n necromancy: { label: \"CDE.Necromancy\", classicon: \"icon-yinyang\", icon: \"/systems/fvtt-chroniques-de-l-etrange/images/yin_yang.png\", elementicon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_terre.png\", labelicon: \"Yin/Yang\", labelelement: \"CDE.Earth\" },\n climatecontrol: { label: \"CDE.ClimateControl\", classicon: \"icon-yang\", icon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_yang.png\", elementicon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_feu.png\", labelicon: \"Yang\", labelelement: \"CDE.Fire\" },\n goldenmagic: { label: \"CDE.GoldenMagic\", classicon: \"icon-yang\", icon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_yang.png\", elementicon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_bois.png\", labelicon: \"Yang\", labelelement: \"CDE.Wood\" },\n },\n },\n exorcism: {\n id: \"exorcism\",\n background: \"linear-red\",\n label: \"CDE.Exorcism\",\n aspectlabel: \"CDE.Fire\",\n speciality: {\n invocation: { label: \"CDE.Invocation\", classicon: \"icon-yin\", icon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_yin.png\", elementicon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_metal.png\", labelicon: \"Yin\", labelelement: \"CDE.Metal\" },\n tracking: { label: \"CDE.Tracking\", classicon: \"icon-yin\", icon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_yin.png\", elementicon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_eau.png\", labelicon: \"Yin\", labelelement: \"CDE.Water\" },\n protection: { label: \"CDE.Protection\", classicon: \"icon-yinyang\", icon: \"/systems/fvtt-chroniques-de-l-etrange/images/yin_yang.png\", elementicon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_terre.png\", labelicon: \"Yin/Yang\", labelelement: \"CDE.Earth\" },\n punishment: { label: \"CDE.Punishment\", classicon: \"icon-yang\", icon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_yang.png\", elementicon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_feu.png\", labelicon: \"Yang\", labelelement: \"CDE.Fire\" },\n domination: { label: \"CDE.Domination\", classicon: \"icon-yang\", icon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_yang.png\", elementicon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_bois.png\", labelicon: \"Yang\", labelelement: \"CDE.Wood\" },\n },\n },\n geomancy: {\n id: \"geomancy\",\n background: \"linear-green\",\n label: \"CDE.Geomancy\",\n aspectlabel: \"CDE.Wood\",\n speciality: {\n neutralization: { label: \"CDE.Neutralization\", classicon: \"icon-yin\", icon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_yin.png\", elementicon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_metal.png\", labelicon: \"Yin\", labelelement: \"CDE.Metal\" },\n divination: { label: \"CDE.Divination\", classicon: \"icon-yin\", icon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_yin.png\", elementicon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_eau.png\", labelicon: \"Yin\", labelelement: \"CDE.Water\" },\n earthlyprayer: { label: \"CDE.EarthlyPrayer\", classicon: \"icon-yinyang\", icon: \"/systems/fvtt-chroniques-de-l-etrange/images/yin_yang.png\", elementicon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_terre.png\", labelicon: \"Yin/Yang\", labelelement: \"CDE.Earth\" },\n heavenlyprayer: { label: \"CDE.HeavenlyPrayer\", classicon: \"icon-yang\", icon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_yang.png\", elementicon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_feu.png\", labelicon: \"Yang\", labelelement: \"CDE.Fire\" },\n fungseoi: { label: \"CDE.Fungseoi\", classicon: \"icon-yang\", icon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_yang.png\", elementicon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_bois.png\", labelicon: \"Yang\", labelelement: \"CDE.Wood\" },\n },\n },\n}\n\nexport const TEMPLATE_PARTIALS = [\n \"systems/fvtt-chroniques-de-l-etrange/templates/actor/parts/cde-character-skills.html\",\n \"systems/fvtt-chroniques-de-l-etrange/templates/actor/parts/cde-character-magics.html\",\n \"systems/fvtt-chroniques-de-l-etrange/templates/actor/parts/cde-character-nghang.html\",\n \"systems/fvtt-chroniques-de-l-etrange/templates/actor/parts/cde-character-treasures.html\",\n \"systems/fvtt-chroniques-de-l-etrange/templates/actor/parts/cde-character-items.html\",\n \"systems/fvtt-chroniques-de-l-etrange/templates/actor/parts/cde-character-kungfus.html\",\n \"systems/fvtt-chroniques-de-l-etrange/templates/actor/parts/cde-character-spells.html\",\n \"systems/fvtt-chroniques-de-l-etrange/templates/actor/parts/cde-npc-supernaturals.html\",\n \"systems/fvtt-chroniques-de-l-etrange/templates/actor/parts/cde-npc-spells.html\",\n \"systems/fvtt-chroniques-de-l-etrange/templates/actor/parts/cde-npc-kungfus.html\",\n \"systems/fvtt-chroniques-de-l-etrange/templates/actor/parts/cde-npc-items.html\",\n]\n", "import { MAGICS, SUBTYPES } from \"./constants.js\"\n\nexport function preLocalizeConfig() {\n const localizeConfigObject = (obj, keys) => {\n for (const o of Object.values(obj)) {\n for (const key of keys) {\n o[key] = game.i18n.localize(o[key])\n }\n }\n }\n\n localizeConfigObject(SUBTYPES, [\"label\"])\n Object.values(MAGICS).forEach((magic) => {\n magic.label = game.i18n.localize(magic.label)\n magic.aspectlabel = game.i18n.localize(magic.aspectlabel)\n Object.values(magic.speciality).forEach((spec) => {\n spec.label = game.i18n.localize(spec.label)\n spec.labelelement = game.i18n.localize(spec.labelelement)\n })\n })\n}\n", "export function configureRuntime() {\n CONFIG.Actor.compendiumBanner = \"/systems/fvtt-chroniques-de-l-etrange/images/banners/actor-banner.webp\"\n CONFIG.Adventure.compendiumBanner = \"/systems/fvtt-chroniques-de-l-etrange/images/banners/adventure-banner.webp\"\n CONFIG.Cards.compendiumBanner = \"ui/banners/cards-banner.webp\"\n CONFIG.Item.compendiumBanner = \"/systems/fvtt-chroniques-de-l-etrange/images/banners/item-banner.webp\"\n CONFIG.JournalEntry.compendiumBanner = \"/systems/fvtt-chroniques-de-l-etrange/images/banners/journalentry-banner.webp\"\n CONFIG.Macro.compendiumBanner = \"ui/banners/macro-banner.webp\"\n CONFIG.Playlist.compendiumBanner = \"ui/banners/playlist-banner.webp\"\n CONFIG.RollTable.compendiumBanner = \"ui/banners/rolltable-banner.webp\"\n CONFIG.Scene.compendiumBanner = \"/systems/fvtt-chroniques-de-l-etrange/images/banners/scene-banner.webp\"\n}\n", "export default class CharacterDataModel extends foundry.abstract.TypeDataModel {\n static defineSchema() {\n const { fields } = foundry.data\n const numberField = (initial = 0, extra = {}) => new fields.NumberField({ required: true, nullable: false, integer: true, initial, ...extra })\n const stringField = (initial = \"\") => new fields.StringField({ required: true, nullable: false, initial })\n const boolField = (initial = false) => new fields.BooleanField({ required: true, initial })\n const htmlField = (initial = \"\") => new fields.HTMLField({ required: true, nullable: false, initial, textSearch: true })\n\n const aspectField = (label, chinese) =>\n new fields.SchemaField({\n chinese: stringField(chinese),\n label: stringField(label),\n value: numberField(15, { min: 0 }),\n })\n\n const skillField = (label) =>\n new fields.SchemaField({\n label: stringField(label),\n specialities: stringField(\"\"),\n value: numberField(0, { min: 0 }),\n })\n\n const resourceField = (label) =>\n new fields.SchemaField({\n label: stringField(label),\n specialities: stringField(\"\"),\n value: numberField(0, { min: 0 }),\n debt: boolField(false),\n })\n\n const componentField = () =>\n new fields.SchemaField({\n value: stringField(\"\"),\n })\n\n const magicSpecialityField = () =>\n new fields.SchemaField({\n check: boolField(false),\n })\n\n const magicField = () =>\n new fields.SchemaField({\n visible: boolField(true),\n value: numberField(0, { min: 0 }),\n speciality: new fields.SchemaField({\n essence: magicSpecialityField(),\n mind: magicSpecialityField(),\n purification: magicSpecialityField(),\n manipulation: magicSpecialityField(),\n aura: magicSpecialityField(),\n acupuncture: magicSpecialityField(),\n elixirs: magicSpecialityField(),\n poisons: magicSpecialityField(),\n arsenal: magicSpecialityField(),\n potions: magicSpecialityField(),\n curse: magicSpecialityField(),\n transfiguration: magicSpecialityField(),\n necromancy: magicSpecialityField(),\n climatecontrol: magicSpecialityField(),\n goldenmagic: magicSpecialityField(),\n invocation: magicSpecialityField(),\n tracking: magicSpecialityField(),\n protection: magicSpecialityField(),\n punishment: magicSpecialityField(),\n domination: magicSpecialityField(),\n neutralization: magicSpecialityField(),\n divination: magicSpecialityField(),\n earthlyprayer: magicSpecialityField(),\n heavenlyprayer: magicSpecialityField(),\n fungseoi: magicSpecialityField(),\n }),\n })\n\n const treasureBranch = () =>\n new fields.SchemaField({\n value: numberField(0, { min: 0 }),\n max: numberField(0, { min: 0 }),\n min: numberField(0, { min: 0 }),\n })\n\n const treasureLevel = () =>\n new fields.SchemaField({\n san: treasureBranch(),\n zing: treasureBranch(),\n })\n\n const schema = {\n concept: stringField(\"\"),\n guardian: numberField(0, { min: 0, max: 5 }),\n initiative: numberField(1, { min: 0 }),\n anti_initiative: numberField(24, { min: 0 }),\n description: htmlField(\"\"),\n prefs: new fields.SchemaField({\n typeofthrow: new fields.SchemaField({\n check: boolField(true),\n choice: stringField(\"0\"),\n }),\n }),\n prompt: new fields.SchemaField({\n typeofthrow: new fields.SchemaField({\n check: boolField(true),\n choice: stringField(\"0\"),\n }),\n configure: new fields.SchemaField({\n numberofdice: numberField(0),\n aspect: numberField(0),\n bonus: numberField(0),\n bonusauspiciousdice: numberField(0),\n typeofthrow: numberField(0),\n aspectskill: numberField(0),\n bonusmalusskill: numberField(0),\n aspectspeciality: numberField(0),\n rolldifficulty: numberField(0),\n bonusmalusspeciality: numberField(0),\n }),\n }),\n aspect: new fields.SchemaField({\n fire: aspectField(\"CDE.Fire\", \"\u328B\"),\n earth: aspectField(\"CDE.Earth\", \"\u328F\"),\n metal: aspectField(\"CDE.Metal\", \"\u328E\"),\n water: aspectField(\"CDE.Water\", \"\u328C\"),\n wood: aspectField(\"CDE.Wood\", \"\u328D\"),\n }),\n skills: new fields.SchemaField({\n art: skillField(\"CDE.Art\"),\n investigation: skillField(\"CDE.Investigation\"),\n erudition: skillField(\"CDE.Erudition\"),\n knavery: skillField(\"CDE.Knavery\"),\n wordliness: skillField(\"CDE.Wordliness\"),\n prowess: skillField(\"CDE.Prowess\"),\n sciences: skillField(\"CDE.Sciences\"),\n technologies: skillField(\"CDE.Technologies\"),\n kungfu: skillField(\"CDE.KungFu\"),\n rangedcombat: skillField(\"CDE.RangedCombat\"),\n }),\n resources: new fields.SchemaField({\n supply: resourceField(\"CDE.Supply\"),\n inquiry: resourceField(\"CDE.Inquiry\"),\n influence: resourceField(\"CDE.Influence\"),\n }),\n component: new fields.SchemaField({\n one: componentField(),\n two: componentField(),\n three: componentField(),\n four: componentField(),\n five: componentField(),\n six: componentField(),\n seven: componentField(),\n eight: componentField(),\n nine: componentField(),\n zero: componentField(),\n }),\n magics: new fields.SchemaField({\n internalcinnabar: magicField(),\n alchemy: magicField(),\n masteryoftheway: magicField(),\n exorcism: magicField(),\n geomancy: magicField(),\n }),\n threetreasures: new fields.SchemaField({\n heiyang: new fields.SchemaField({ value: numberField(0, { min: 0 }), max: numberField(0, { min: 0 }) }),\n heiyin: new fields.SchemaField({ value: numberField(0, { min: 0 }), max: numberField(0, { min: 0 }) }),\n dicelevel: new fields.SchemaField({\n level0d: treasureLevel(),\n level1d: treasureLevel(),\n level2d: treasureLevel(),\n }),\n }),\n experience: new fields.SchemaField({\n value: numberField(0, { min: 0 }),\n max: numberField(0, { min: 0 }),\n min: numberField(0, { min: 0 }),\n }),\n }\n\n return schema\n }\n}\n", "export default class NpcDataModel extends foundry.abstract.TypeDataModel {\n static defineSchema() {\n const { fields } = foundry.data\n const numberField = (initial = 0, extra = {}) => new fields.NumberField({ required: true, nullable: false, integer: true, initial, ...extra })\n const stringField = (initial = \"\") => new fields.StringField({ required: true, nullable: false, initial })\n const boolField = (initial = false) => new fields.BooleanField({ required: true, initial })\n const htmlField = (initial = \"\") => new fields.HTMLField({ required: true, nullable: false, initial, textSearch: true })\n\n const aptitudeField = () =>\n new fields.SchemaField({\n value: numberField(0, { min: 0 }),\n speciality: stringField(\"\"),\n })\n\n const trackedField = () =>\n new fields.SchemaField({\n value: numberField(0, { min: 0 }),\n calcul: numberField(0, { min: 0 }),\n note: stringField(\"\"),\n })\n\n return {\n type: stringField(\"\"),\n threat: numberField(0, { min: 0, max: 4 }), // profane(0) | apprentice(1) | initiate(2) | accomplished(3) | renowned(4)\n nuisance: numberField(0, { min: 0, max: 5 }), // figurant(0) | minion(1) | adversary(2) | ally(3) | boss(4) | divinity(5)\n initiative: numberField(1, { min: 0 }),\n anti_initiative: numberField(24, { min: 0 }),\n aptitudes: new fields.SchemaField({\n physical: aptitudeField(),\n martial: aptitudeField(),\n mental: aptitudeField(),\n social: aptitudeField(),\n spiritual: aptitudeField(),\n }),\n vitality: trackedField(),\n hei: trackedField(),\n description: htmlField(\"\"),\n prefs: new fields.SchemaField({\n typeofthrow: new fields.SchemaField({\n check: boolField(false),\n choice: stringField(\"0\"),\n }),\n }),\n }\n }\n}\n", "export default class TinjiDataModel extends foundry.abstract.TypeDataModel {\n static defineSchema() {\n const { fields } = foundry.data\n const numberField = (initial = 0, extra = {}) => new fields.NumberField({ required: true, nullable: false, integer: true, initial, ...extra })\n const htmlField = (initial = \"\") => new fields.HTMLField({ required: true, nullable: false, initial, textSearch: true })\n\n return {\n value: numberField(0, { min: 0 }),\n description: htmlField(\"\"),\n }\n }\n}\n", "export default class LoksyuDataModel extends foundry.abstract.TypeDataModel {\n static defineSchema() {\n const { fields } = foundry.data\n const numberField = (initial = 0, extra = {}) => new fields.NumberField({ required: true, nullable: false, integer: true, initial, ...extra })\n const htmlField = (initial = \"\") => new fields.HTMLField({ required: true, nullable: false, initial, textSearch: true })\n\n const polarity = () =>\n new fields.SchemaField({\n yin: new fields.SchemaField({ value: numberField(0, { min: 0 }) }),\n yang: new fields.SchemaField({ value: numberField(0, { min: 0 }) }),\n })\n\n return {\n fire: polarity(),\n earth: polarity(),\n metal: polarity(),\n water: polarity(),\n wood: polarity(),\n description: htmlField(\"\"),\n }\n }\n}\n", "export default class EquipmentDataModel extends foundry.abstract.TypeDataModel {\n static defineSchema() {\n const { fields } = foundry.data\n const numberField = (initial = 0, extra = {}) => new fields.NumberField({ required: true, nullable: false, integer: true, initial, ...extra })\n const stringField = (initial = \"\") => new fields.StringField({ required: true, nullable: false, initial })\n const htmlField = (initial = \"\") => new fields.HTMLField({ required: true, nullable: false, initial, textSearch: true })\n\n return {\n reference: stringField(\"\"),\n description: htmlField(\"\"),\n quantity: numberField(1, { min: 0 }),\n weight: numberField(0, { min: 0 }),\n notes: htmlField(\"\"),\n }\n }\n}\n", "export default class KungfuDataModel extends foundry.abstract.TypeDataModel {\n static defineSchema() {\n const { fields } = foundry.data\n const stringField = (initial = \"\") => new fields.StringField({ required: true, nullable: false, initial })\n const htmlField = (initial = \"\") => new fields.HTMLField({ required: true, nullable: false, initial, textSearch: true })\n const boolField = (initial = false) => new fields.BooleanField({ required: true, initial })\n\n const techniqueField = () =>\n new fields.SchemaField({\n check: boolField(false),\n name: stringField(\"\"),\n activation: stringField(\"action-attack\"), // action-attack | action-defense | action-aid | action-attack-defense | reaction | dice | damage-inflicted | damage-received\n technique: htmlField(\"\"),\n })\n\n return {\n reference: stringField(\"\"),\n description: htmlField(\"\"),\n orientation: stringField(\"yin\"), // yin | yang | yinyang\n aspect: stringField(\"metal\"), // metal | eau | terre | feu | bois\n skill: stringField(\"kungfu\"), // kungfu | rangedcombat\n speciality: stringField(\"\"),\n style: stringField(\"\"),\n techniques: new fields.SchemaField({\n technique1: techniqueField(),\n technique2: techniqueField(),\n technique3: techniqueField(),\n }),\n notes: htmlField(\"\"),\n }\n }\n}\n", "export default class SpellDataModel extends foundry.abstract.TypeDataModel {\n static defineSchema() {\n const { fields } = foundry.data\n const stringField = (initial = \"\") => new fields.StringField({ required: true, nullable: false, initial })\n const htmlField = (initial = \"\") => new fields.HTMLField({ required: true, nullable: false, initial, textSearch: true })\n\n return {\n reference: stringField(\"\"),\n description: htmlField(\"\"),\n specialityname: stringField(\"\"),\n associatedelement: stringField(\"metal\"), // metal | eau | terre | feu | bois\n hei: stringField(\"\"),\n realizationtimeritual: stringField(\"\"),\n realizationtimeaccelerated: stringField(\"\"),\n flashback: stringField(\"\"),\n components: htmlField(\"\"),\n effects: htmlField(\"\"),\n examples: htmlField(\"\"),\n notes: htmlField(\"\"),\n discipline: stringField(\"internalcinnabar\"),\n heiType: stringField(\"yin\"),\n heiCost: new fields.NumberField({ required: true, nullable: false, integer: true, min: 0, initial: 1 }),\n difficulty: new fields.NumberField({ required: true, nullable: false, integer: true, min: 0, initial: 1 }),\n }\n }\n}\n", "export default class SupernaturalDataModel extends foundry.abstract.TypeDataModel {\n static defineSchema() {\n const { fields } = foundry.data\n const stringField = (initial = \"\") => new fields.StringField({ required: true, nullable: false, initial })\n const htmlField = (initial = \"\") => new fields.HTMLField({ required: true, nullable: false, initial, textSearch: true })\n\n return {\n reference: stringField(\"\"),\n description: htmlField(\"\"),\n notes: htmlField(\"\"),\n heiType: stringField(\"yin\"),\n heiCost: new fields.NumberField({ required: true, nullable: false, integer: true, min: 0, initial: 0 }),\n trigger: stringField(\"\"),\n effects: htmlField(\"\"),\n }\n }\n}\n", "export default class WeaponDataModel extends foundry.abstract.TypeDataModel {\n static defineSchema() {\n const { fields } = foundry.data\n const stringField = (initial = \"\") => new fields.StringField({ required: true, nullable: false, initial })\n const htmlField = (initial = \"\") => new fields.HTMLField({ required: true, nullable: false, initial, textSearch: true })\n const intField = (initial = 0, opts = {}) => new fields.NumberField({ required: true, nullable: false, integer: true, initial, ...opts })\n\n return {\n reference: stringField(\"\"),\n description: htmlField(\"\"),\n weaponType: stringField(\"melee\"),\n material: stringField(\"\"),\n damageAspect: stringField(\"metal\"),\n damageBase: intField(1),\n range: stringField(\"contact\"), // contact | courte | mediane | longue | extreme\n obtainLevel: intField(0, { min: 0, max: 5 }),\n obtainDifficulty: intField(0, { min: 0, max: 3 }),\n quantity: intField(1),\n notes: htmlField(\"\"),\n }\n }\n}\n", "export default class ArmorDataModel extends foundry.abstract.TypeDataModel {\n static defineSchema() {\n const { fields } = foundry.data\n const stringField = (initial = \"\") => new fields.StringField({ required: true, nullable: false, initial })\n const htmlField = (initial = \"\") => new fields.HTMLField({ required: true, nullable: false, initial, textSearch: true })\n const intField = (initial = 0, opts = {}) => new fields.NumberField({ required: true, nullable: false, integer: true, initial, ...opts })\n\n return {\n reference: stringField(\"\"),\n description: htmlField(\"\"),\n protectionValue: intField(0),\n domain: stringField(\"\"),\n obtainLevel: intField(0, { min: 0, max: 5 }),\n obtainDifficulty: intField(0, { min: 0, max: 3 }),\n quantity: intField(1),\n notes: htmlField(\"\"),\n }\n }\n}\n", "export default class SanheiDataModel extends foundry.abstract.TypeDataModel {\n static defineSchema() {\n const { fields } = foundry.data\n const stringField = (initial = \"\") => new fields.StringField({ required: true, nullable: false, initial })\n const htmlField = (initial = \"\") => new fields.HTMLField({ required: true, nullable: false, initial, textSearch: true })\n const intField = (initial = 0, opts = {}) => new fields.NumberField({ required: true, nullable: false, integer: true, initial, ...opts })\n\n const propertySchema = () => new fields.SchemaField({\n name: stringField(\"\"),\n heiCost: intField(0),\n heiType: stringField(\"yin\"),\n description: htmlField(\"\"),\n })\n\n return {\n reference: stringField(\"\"),\n description: htmlField(\"\"),\n heiType: stringField(\"yin\"),\n properties: new fields.SchemaField({\n prop1: propertySchema(),\n prop2: propertySchema(),\n prop3: propertySchema(),\n }),\n notes: htmlField(\"\"),\n }\n }\n}\n", "export default class IngredientDataModel extends foundry.abstract.TypeDataModel {\n static defineSchema() {\n const { fields } = foundry.data\n const stringField = (initial = \"\") => new fields.StringField({ required: true, nullable: false, initial })\n const htmlField = (initial = \"\") => new fields.HTMLField({ required: true, nullable: false, initial, textSearch: true })\n const intField = (initial = 0, opts = {}) => new fields.NumberField({ required: true, nullable: false, integer: true, initial, ...opts })\n\n return {\n reference: stringField(\"\"),\n description: htmlField(\"\"),\n school: stringField(\"all\"),\n obtainLevel: intField(0, { min: 0, max: 5 }),\n obtainDifficulty: intField(0, { min: 0, max: 3 }),\n quantity: intField(1),\n notes: htmlField(\"\"),\n }\n }\n}\n", "export class CDEMessage extends ChatMessage {\n async renderHTML({ canDelete, canClose = false, ...rest } = {}) {\n const html = await super.renderHTML({ canDelete, canClose, ...rest })\n this.#enrichChatCard(html)\n return html\n }\n\n getAssociatedActor() {\n if (this.speaker.scene && this.speaker.token) {\n const scene = game.scenes.get(this.speaker.scene)\n const token = scene?.tokens.get(this.speaker.token)\n if (token) return token.actor\n }\n return game.actors.get(this.speaker.actor)\n }\n\n #enrichChatCard(html) {\n const actor = this.getAssociatedActor()\n\n let img\n let nameText\n if (this.isContentVisible) {\n img = actor?.img ?? this.author.avatar\n nameText = this.alias\n } else {\n img = this.author.avatar\n nameText = this.author.name\n }\n\n const avatar = document.createElement(\"a\")\n avatar.classList.add(\"avatar\")\n if (actor) avatar.dataset.uuid = actor.uuid\n const avatarImg = document.createElement(\"img\")\n Object.assign(avatarImg, { src: img, alt: nameText })\n avatar.append(avatarImg)\n\n const name = document.createElement(\"span\")\n name.classList.add(\"name-stacked\")\n const title = document.createElement(\"span\")\n title.classList.add(\"title\")\n title.append(nameText)\n name.append(title)\n\n const sender = html.querySelector(\".message-sender\")\n sender?.replaceChildren(avatar, name)\n }\n}\n", "import { ACTOR_TYPES } from \"../config/constants.js\"\n\nexport class CDEActor extends Actor {\n getRollData() {\n const data = this.toObject(false).system\n return data\n }\n\n prepareBaseData() {\n super.prepareBaseData()\n\n if (this.type === ACTOR_TYPES.character) {\n this.system.anti_initiative = 25 - (this.system.initiative ?? 0)\n }\n\n if (this.type === ACTOR_TYPES.npc) {\n this.system.vitality.calcul = (this.system.aptitudes.physical.value ?? 0) * 4\n this.system.hei.calcul = (this.system.aptitudes.spiritual.value ?? 0) * 4\n this.system.anti_initiative = 25 - (this.system.initiative ?? 0)\n }\n }\n}\n", "export class CDEItem extends Item {\n get isWeapon() {\n return this.system.subtype === \"weapon\"\n }\n\n get isArmor() {\n return this.system.subtype === \"armor\"\n }\n\n get isSanhei() {\n return this.system.subtype === \"sanhei\"\n }\n\n get isOther() {\n return this.system.subtype === \"other\"\n }\n}\n", "const DIGIT_LABELS = [\n \"systems/fvtt-chroniques-de-l-etrange/images/dice-so-nice/digit/d10-1.webp\",\n \"systems/fvtt-chroniques-de-l-etrange/images/dice-so-nice/digit/d10-2.webp\",\n \"systems/fvtt-chroniques-de-l-etrange/images/dice-so-nice/digit/d10-3.webp\",\n \"systems/fvtt-chroniques-de-l-etrange/images/dice-so-nice/digit/d10-4.webp\",\n \"systems/fvtt-chroniques-de-l-etrange/images/dice-so-nice/digit/d10-5.webp\",\n \"systems/fvtt-chroniques-de-l-etrange/images/dice-so-nice/digit/d10-6.webp\",\n \"systems/fvtt-chroniques-de-l-etrange/images/dice-so-nice/digit/d10-7.webp\",\n \"systems/fvtt-chroniques-de-l-etrange/images/dice-so-nice/digit/d10-8.webp\",\n \"systems/fvtt-chroniques-de-l-etrange/images/dice-so-nice/digit/d10-9.webp\",\n \"systems/fvtt-chroniques-de-l-etrange/images/dice-so-nice/digit/d10-10.webp\",\n]\n\nconst CLASSIC_LABELS = [\n \"systems/fvtt-chroniques-de-l-etrange/images/dice-so-nice/d10-1.webp\",\n \"systems/fvtt-chroniques-de-l-etrange/images/dice-so-nice/d10-2.webp\",\n \"systems/fvtt-chroniques-de-l-etrange/images/dice-so-nice/d10-3.webp\",\n \"systems/fvtt-chroniques-de-l-etrange/images/dice-so-nice/d10-4.webp\",\n \"systems/fvtt-chroniques-de-l-etrange/images/dice-so-nice/d10-5.webp\",\n \"systems/fvtt-chroniques-de-l-etrange/images/dice-so-nice/d10-6.webp\",\n \"systems/fvtt-chroniques-de-l-etrange/images/dice-so-nice/d10-7.webp\",\n \"systems/fvtt-chroniques-de-l-etrange/images/dice-so-nice/d10-8.webp\",\n \"systems/fvtt-chroniques-de-l-etrange/images/dice-so-nice/d10-9.webp\",\n \"systems/fvtt-chroniques-de-l-etrange/images/dice-so-nice/d10-10.webp\",\n]\n\nexport function registerDice() {\n Hooks.once(\"diceSoNiceReady\", (dice3d) => {\n dice3d.addColorset(\n {\n name: \"cde\",\n description: \"CdE\",\n foreground: \"#000000\",\n background: \"#ffffff\",\n edge: \"#ffffff\",\n font: \"DeliusUnicase\",\n texture: \"ice\",\n material: \"plastic\",\n },\n \"preferred\",\n )\n\n dice3d.addSystem({ id: \"fvtt-chroniques-de-l-etrangedigit\", name: \"Chroniques de l'\u00E9trange digits\" }, \"preferred\")\n dice3d.addDicePreset({ type: \"d10\", labels: DIGIT_LABELS, system: \"fvtt-chroniques-de-l-etrangedigit\" })\n\n dice3d.addSystem({ id: \"fvtt-chroniques-de-l-etrange\", name: \"Chroniques de l'\u00E9trange\" }, \"preferred\")\n dice3d.addDicePreset({ type: \"d10\", labels: CLASSIC_LABELS, system: \"fvtt-chroniques-de-l-etrange\" })\n })\n}\n", "import { MAGICS } from \"../config/constants.js\"\n\nexport function registerHandlebarsHelpers() {\n const { Handlebars } = globalThis\n if (!Handlebars) return\n\n Handlebars.registerHelper(\"select\", function (selected, options) {\n const escapedValue = RegExp.escape(Handlebars.escapeExpression(selected))\n const rgx = new RegExp(` value=[\"']${escapedValue}[\"']`)\n const html = options.fn(this)\n return html.replace(rgx, \"$& selected\")\n })\n\n Handlebars.registerHelper(\"getMagicBackground\", function (magic) {\n return game.i18n.localize(MAGICS[magic]?.background ?? \"\")\n })\n\n Handlebars.registerHelper(\"getMagicLabel\", function (magic) {\n return game.i18n.localize(MAGICS[magic]?.label ?? \"\")\n })\n\n Handlebars.registerHelper(\"getMagicAspectLabel\", function (magic) {\n return game.i18n.localize(MAGICS[magic]?.aspectlabel ?? \"\")\n })\n\n Handlebars.registerHelper(\"getMagicSpecialityLabel\", function (magic, speciality) {\n return game.i18n.localize(MAGICS[magic]?.speciality?.[speciality]?.label ?? \"\")\n })\n\n Handlebars.registerHelper(\"getMagicSpecialityClassIcon\", function (magic, speciality) {\n return MAGICS[magic]?.speciality?.[speciality]?.classicon ?? \"\"\n })\n\n Handlebars.registerHelper(\"getMagicSpecialityIcon\", function (magic, speciality) {\n return MAGICS[magic]?.speciality?.[speciality]?.icon ?? \"\"\n })\n\n Handlebars.registerHelper(\"getMagicSpecialityElementIcon\", function (magic, speciality) {\n return MAGICS[magic]?.speciality?.[speciality]?.elementicon ?? \"\"\n })\n\n Handlebars.registerHelper(\"getMagicSpecialityLabelIcon\", function (magic, speciality) {\n return MAGICS[magic]?.speciality?.[speciality]?.labelicon ?? \"\"\n })\n\n Handlebars.registerHelper(\"getMagicSpecialityLabelElement\", function (magic, speciality) {\n return game.i18n.localize(MAGICS[magic]?.speciality?.[speciality]?.labelelement ?? \"\")\n })\n\n Handlebars.registerHelper(\"getMagicAspectIcon\", function (magic) {\n const icons = {\n internalcinnabar: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_metal.png\",\n alchemy: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_eau.png\",\n masteryoftheway: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_terre.png\",\n exorcism: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_feu.png\",\n geomancy: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_bois.png\",\n }\n return icons[magic] ?? \"\"\n })\n\n Handlebars.registerHelper(\"getElementIcon\", function (aspect) {\n const icons = {\n metal: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_metal.png\",\n eau: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_eau.png\",\n terre: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_terre.png\",\n feu: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_feu.png\",\n bois: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_bois.png\",\n }\n return icons[aspect] ?? \"\"\n })\n\n Handlebars.registerHelper(\"getOrientationIcon\", function (orientation) {\n const icons = {\n yin: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_yin.png\",\n yang: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_yang.png\",\n yinyang: \"/systems/fvtt-chroniques-de-l-etrange/images/yin_yang.png\",\n }\n return icons[orientation] ?? \"\"\n })\n\n Handlebars.registerHelper(\"getOrientationLabel\", function (orientation) {\n const keys = {\n yin: \"CDE.OrientationYin\",\n yang: \"CDE.OrientationYang\",\n yinyang: \"CDE.OrientationYinYang\",\n }\n return game.i18n.localize(keys[orientation] ?? \"CDE.Orientation\")\n })\n\n Handlebars.registerHelper(\"getActivationLabel\", function (activation) {\n const keys = {\n \"action-attack\": \"CDE.ActivationAttack\",\n \"action-defense\": \"CDE.ActivationDefense\",\n \"action-aid\": \"CDE.ActivationAid\",\n \"action-attack-defense\": \"CDE.ActivationAttackOrDefense\",\n reaction: \"CDE.ActivationReaction\",\n dice: \"CDE.ActivationDice\",\n \"damage-inflicted\": \"CDE.ActivationDamageInflicted\",\n \"damage-received\": \"CDE.ActivationDamageReceived\",\n }\n return game.i18n.localize(keys[activation] ?? \"CDE.Activation\")\n })\n}\n", "import { TEMPLATE_PARTIALS } from \"../config/constants.js\"\n\nexport async function preloadPartials() {\n return loadTemplates(TEMPLATE_PARTIALS)\n}\n", "/**\n * Initiative determination system for Chroniques de l'\u00C9trange.\n *\n * PJ formula: Initiative = Prouesse + Premi\u00E8re action (comp\u00E9tence/ressource/magie)\n * PNJ formula: Initiative = Aptitude physique + Premi\u00E8re action (aptitude)\n *\n * Range 1-24 ; anti-initiative = 25 \u2212 initiative.\n * Combat order is ascending (low initiative acts first).\n */\n\nconst PC_PROMPT_TEMPLATE = \"systems/fvtt-chroniques-de-l-etrange/templates/form/cde-initiative-prompt.html\"\nconst NPC_PROMPT_TEMPLATE = \"systems/fvtt-chroniques-de-l-etrange/templates/form/cde-initiative-prompt-npc.html\"\nconst RESULT_TEMPLATE = \"systems/fvtt-chroniques-de-l-etrange/templates/form/cde-initiative-result.html\"\n\n/** Skills, resources and magics available as \"premi\u00E8re action\" for a PC. */\nfunction buildPCOptions(sys) {\n const sk = sys.skills ?? {}\n const rs = sys.resources ?? {}\n const mg = sys.magics ?? {}\n return [\n { key: \"art\", label: game.i18n.localize(\"CDE.Art\"), value: sk.art?.value ?? 0 },\n { key: \"investigation\", label: game.i18n.localize(\"CDE.Investigation\"), value: sk.investigation?.value ?? 0 },\n { key: \"erudition\", label: game.i18n.localize(\"CDE.Erudition\"), value: sk.erudition?.value ?? 0 },\n { key: \"knavery\", label: game.i18n.localize(\"CDE.Knavery\"), value: sk.knavery?.value ?? 0 },\n { key: \"wordliness\", label: game.i18n.localize(\"CDE.Wordliness\"), value: sk.wordliness?.value ?? 0 },\n { key: \"prowess\", label: game.i18n.localize(\"CDE.Prowess\"), value: sk.prowess?.value ?? 0 },\n { key: \"sciences\", label: game.i18n.localize(\"CDE.Sciences\"), value: sk.sciences?.value ?? 0 },\n { key: \"technologies\", label: game.i18n.localize(\"CDE.Technologies\"), value: sk.technologies?.value ?? 0 },\n { key: \"kungfu\", label: game.i18n.localize(\"CDE.KungFu\"), value: sk.kungfu?.value ?? 0 },\n { key: \"rangedcombat\", label: game.i18n.localize(\"CDE.RangedCombat\"), value: sk.rangedcombat?.value ?? 0 },\n { key: \"supply\", label: game.i18n.localize(\"CDE.Supply\"), value: rs.supply?.value ?? 0 },\n { key: \"inquiry\", label: game.i18n.localize(\"CDE.Inquiry\"), value: rs.inquiry?.value ?? 0 },\n { key: \"influence\", label: game.i18n.localize(\"CDE.Influence\"), value: rs.influence?.value ?? 0 },\n { key: \"internalcinnabar\", label: game.i18n.localize(\"CDE.InternalCinnabar\"), value: mg.internalcinnabar?.value ?? 0 },\n { key: \"alchemy\", label: game.i18n.localize(\"CDE.Alchemy\"), value: mg.alchemy?.value ?? 0 },\n { key: \"masteryoftheway\", label: game.i18n.localize(\"CDE.MasteryOfTheWay\"), value: mg.masteryoftheway?.value ?? 0 },\n { key: \"exorcism\", label: game.i18n.localize(\"CDE.Exorcism\"), value: mg.exorcism?.value ?? 0 },\n { key: \"geomancy\", label: game.i18n.localize(\"CDE.Geomancy\"), value: mg.geomancy?.value ?? 0 },\n ]\n}\n\n/** Aptitudes available as \"premi\u00E8re action\" for an NPC. */\nfunction buildNPCOptions(sys) {\n const ap = sys.aptitudes ?? {}\n return [\n { key: \"physical\", label: game.i18n.localize(\"CDE.Physical\"), value: ap.physical?.value ?? 0 },\n { key: \"martial\", label: game.i18n.localize(\"CDE.Martial\"), value: ap.martial?.value ?? 0 },\n { key: \"mental\", label: game.i18n.localize(\"CDE.Mental\"), value: ap.mental?.value ?? 0 },\n { key: \"social\", label: game.i18n.localize(\"CDE.Social\"), value: ap.social?.value ?? 0 },\n { key: \"spiritual\", label: game.i18n.localize(\"CDE.Spiritual\"), value: ap.spiritual?.value ?? 0 },\n ]\n}\n\n/** Parse the dialog element and extract firstaction + modifier. */\nfunction readInitFields(dialog) {\n const root = dialog.element ?? dialog\n const selectedKey = root.querySelector(\"select[name='firstaction']\")?.value ?? \"\"\n const modifier = parseInt(root.querySelector(\"input[name='modifier']\")?.value ?? 0) || 0\n return { selectedKey, modifier }\n}\n\n/** Post a styled initiative chat message. */\nasync function sendInitChatMessage({ actor, baseName, baseValue, actionName, actionValue, modifier, initiative, antiInitiative }) {\n const html = await foundry.applications.handlebars.renderTemplate(RESULT_TEMPLATE, {\n actorName: actor.name,\n actorImg: actor.img,\n baseName,\n baseValue,\n actionName,\n actionValue,\n modifier,\n hasModifier: modifier !== 0,\n initiative,\n antiInitiative,\n })\n await ChatMessage.create({\n user: game.user.id,\n speaker: ChatMessage.getSpeaker({ actor }),\n content: html,\n })\n}\n\n/**\n * Open the PC initiative dialog, compute initiative (Prouesse + Premi\u00E8re action + modificateur)\n * and update the actor, then post a chat card.\n */\nexport async function rollInitiativePC(actor) {\n const sys = actor.system\n const prowess = sys.skills?.prowess?.value ?? 0\n const options = buildPCOptions(sys)\n const baseName = game.i18n.localize(\"CDE.Prowess\")\n\n const content = await foundry.applications.handlebars.renderTemplate(PC_PROMPT_TEMPLATE, {\n prowessValue: prowess,\n options,\n modifier: 0,\n })\n\n const result = await foundry.applications.api.DialogV2.prompt({\n window: { title: game.i18n.localize(\"CDE.InitiativeRoll\") },\n content,\n rejectClose: false,\n ok: {\n label: game.i18n.localize(\"CDE.Validate\"),\n callback: (_ev, _btn, dialog) => readInitFields(dialog),\n },\n })\n if (!result) return\n\n const { selectedKey, modifier } = result\n const selected = options.find((o) => o.key === selectedKey) ?? options[0]\n const rawValue = prowess + selected.value + modifier\n const initiative = Math.max(1, Math.min(24, rawValue))\n const antiInit = 25 - initiative\n\n await actor.update({ \"system.initiative\": initiative })\n await sendInitChatMessage({\n actor,\n baseName,\n baseValue: prowess,\n actionName: selected.label,\n actionValue: selected.value,\n modifier,\n initiative,\n antiInitiative: antiInit,\n })\n}\n\n/**\n * Open the NPC initiative dialog, compute initiative (Aptitude physique + Premi\u00E8re action + modificateur)\n * and update the actor, then post a chat card.\n */\nexport async function rollInitiativeNPC(actor) {\n const sys = actor.system\n const physical = sys.aptitudes?.physical?.value ?? 0\n const options = buildNPCOptions(sys)\n const baseName = game.i18n.localize(\"CDE.Physical\")\n\n const content = await foundry.applications.handlebars.renderTemplate(NPC_PROMPT_TEMPLATE, {\n physicalValue: physical,\n options,\n modifier: 0,\n })\n\n const result = await foundry.applications.api.DialogV2.prompt({\n window: { title: game.i18n.localize(\"CDE.InitiativeRoll\") },\n content,\n rejectClose: false,\n ok: {\n label: game.i18n.localize(\"CDE.Validate\"),\n callback: (_ev, _btn, dialog) => readInitFields(dialog),\n },\n })\n if (!result) return\n\n const { selectedKey, modifier } = result\n const selected = options.find((o) => o.key === selectedKey) ?? options[0]\n const rawValue = physical + selected.value + modifier\n const initiative = Math.max(1, Math.min(24, rawValue))\n const antiInit = 25 - initiative\n\n await actor.update({ \"system.initiative\": initiative })\n await sendInitChatMessage({\n actor,\n baseName,\n baseValue: physical,\n actionName: selected.label,\n actionValue: selected.value,\n modifier,\n initiative,\n antiInitiative: antiInit,\n })\n}\n", "/**\n * Wu Xing rolling system for Chroniques de l'\u00C9trange.\n *\n * The Wu Xing cycle maps each aspect (by index 0-4) to die face groups:\n * - metal=0 : faces 3,8\n * - water=1 : faces 1,6\n * - earth=2 : faces 0/10,5\n * - fire=3 : faces 2,7\n * - wood=4 : faces 4,9\n *\n * For a given active aspect the five result categories are:\n * successes / auspicious / noxious / loksyu (yin face, yang face) / tinji\n * Each category is associated with one of the five aspects in Wu Xing cycle order.\n */\n\nconst RESULT_TEMPLATE = \"systems/fvtt-chroniques-de-l-etrange/templates/form/cde-dice-result.html\"\nconst SKILL_PROMPT_TEMPLATE = \"systems/fvtt-chroniques-de-l-etrange/templates/form/cde-skill-dice-prompt.html\"\nconst SKILL_SPECIAL_PROMPT_TEMPLATE = \"systems/fvtt-chroniques-de-l-etrange/templates/form/cde-skill-special-dice-prompt.html\"\nconst MAGIC_PROMPT_TEMPLATE = \"systems/fvtt-chroniques-de-l-etrange/templates/form/cde-magic-dice-prompt.html\"\nconst WEAPON_PROMPT_TEMPLATE = \"systems/fvtt-chroniques-de-l-etrange/templates/form/cde-weapon-dice-prompt.html\"\n\n/** Maps i18n element label \u2192 aspect name (for speciality default aspect lookup) */\nconst LABELELEMENT_TO_ASPECT = {\n \"CDE.Metal\": \"metal\",\n \"CDE.Water\": \"water\",\n \"CDE.Earth\": \"earth\",\n \"CDE.Fire\": \"fire\",\n \"CDE.Wood\": \"wood\",\n}\n\n/** Map aspect index \u2192 string name used in result template */\nconst ASPECT_NAMES = [\"metal\", \"water\", \"earth\", \"fire\", \"wood\"]\n\n/** Map aspect name \u2192 i18n label key */\nconst ASPECT_LABELS = {\n metal: \"CDE.Metal\",\n water: \"CDE.Water\",\n earth: \"CDE.Earth\",\n fire: \"CDE.Fire\",\n wood: \"CDE.Wood\",\n}\n\n/** Map aspect name \u2192 image path */\nconst ASPECT_ICONS = {\n metal: \"systems/fvtt-chroniques-de-l-etrange/images/cde_metal.png\",\n water: \"systems/fvtt-chroniques-de-l-etrange/images/cde_eau.png\",\n earth: \"systems/fvtt-chroniques-de-l-etrange/images/cde_terre.png\",\n fire: \"systems/fvtt-chroniques-de-l-etrange/images/cde_feu.png\",\n wood: \"systems/fvtt-chroniques-de-l-etrange/images/cde_bois.png\",\n}\n\n/** Map aspect index \u2192 die face pair [yin, yang] (face=10 stored as 0) */\nconst ASPECT_FACES = {\n metal: [3, 8],\n water: [1, 6],\n earth: [0, 5], // 0 = face \"10\"\n fire: [2, 7],\n wood: [4, 9],\n}\n\n/**\n * Wu Xing generating/overcoming cycle:\n * wood \u2192 fire \u2192 earth \u2192 metal \u2192 water \u2192 wood (generating)\n * For each active aspect, the five categories in order:\n * [successes, auspicious, noxious, loksyu, tinji]\n */\nconst WU_XING_CYCLE = {\n wood: [\"wood\", \"fire\", \"water\", \"earth\", \"metal\"],\n fire: [\"fire\", \"earth\", \"wood\", \"metal\", \"water\"],\n earth: [\"earth\", \"metal\", \"fire\", \"water\", \"wood\"],\n metal: [\"metal\", \"water\", \"earth\", \"wood\", \"fire\"],\n water: [\"water\", \"wood\", \"metal\", \"fire\", \"earth\"],\n}\n\n/** Maps weapon range string \u2192 dice malus applied to the attack pool */\nconst RANGE_MALUS = {\n contact: 0,\n courte: 0,\n mediane: -1,\n longue: -2,\n extreme: -3,\n}\n\n/** Maps weapon type string \u2192 default skill key */\nconst WEAPON_TYPE_SKILL = {\n melee: \"kungfu\",\n thrown: \"rangedcombat\",\n ranged: \"rangedcombat\",\n firearm: \"rangedcombat\",\n}\n\n/** Maps weapon damageAspect name \u2192 ASPECT_NAMES index */\nconst WEAPON_ASPECT_INDEX = { metal: 0, eau: 1, water: 1, terre: 2, earth: 2, feu: 3, fire: 3, bois: 4, wood: 4 }\n\n/** Count how many times each die face appeared in the roll results */\nfunction countFaces(rollResults) {\n const counts = { 1:0, 2:0, 3:0, 4:0, 5:0, 6:0, 7:0, 8:0, 9:0, 0:0 }\n for (const die of rollResults) {\n const face = die.result === 10 ? 0 : die.result\n counts[face]++\n }\n return counts\n}\n\n/**\n * Compute Wu Xing result categories from face counts and active aspect.\n * Returns { successesdice, auspiciousdice, noxiousdice, loksyudice, tinjidice, loksyurepartition }\n */\nfunction computeWuXingResults(faces, aspectName, bonusAuspicious = 0) {\n const cycle = WU_XING_CYCLE[aspectName]\n if (!cycle) return null\n\n const [succAspect, ausAspect, noxAspect, lokAspect, tinAspect] = cycle\n const [succYin, succYang] = ASPECT_FACES[succAspect]\n const [ausYin, ausYang] = ASPECT_FACES[ausAspect]\n const [noxYin, noxYang] = ASPECT_FACES[noxAspect]\n const [lokYin, lokYang] = ASPECT_FACES[lokAspect]\n const [tinYin, tinYang] = ASPECT_FACES[tinAspect]\n\n const yin = game.i18n.localize(\"CDE.Yin\")\n const yang = game.i18n.localize(\"CDE.Yang\")\n\n return {\n successesdice: faces[succYin] + faces[succYang],\n auspiciousdice: faces[ausYin] + faces[ausYang] + bonusAuspicious,\n noxiousdice: faces[noxYin] + faces[noxYang],\n loksyudice: faces[lokYin] + faces[lokYang],\n loksyurepartition: `[${yin}(${faces[lokYin]}) ${yang}(${faces[lokYang]})]`,\n tinjidice: faces[tinYin] + faces[tinYang],\n }\n}\n\n/** Read a named field from a dialog DOM element */\nfunction readField(dlg, name) {\n const el = dlg.querySelector(`[name=\"${name}\"]`)\n if (!el) return null\n return el.type === \"checkbox\" ? el.checked : el.value\n}\n\n/**\n * Open a DialogV2.prompt with the given template + data and return the resolved form values.\n * The callback receives the DialogV2 application instance; fields are read from its .element.\n * @returns {Promise|null>}\n */\nasync function showRollPrompt({ title, template, data, fields }) {\n const content = await foundry.applications.handlebars.renderTemplate(template, data)\n return foundry.applications.api.DialogV2.prompt({\n window: { title },\n content,\n rejectClose: false,\n ok: {\n label: game.i18n.localize(\"CDE.Validate\"),\n callback: (event, button, dialog) => {\n // In AppV2, dialog is the application instance; .element is the root HTMLElement\n const root = dialog.element ?? dialog\n const result = {}\n for (const field of fields) {\n result[field] = readField(root, field)\n }\n return result\n },\n },\n })\n}\n\n/**\n * Open the skill roll prompt and return the user-confirmed parameters.\n * @param {object} params - Initial values\n * @returns {Promise}\n */\nexport async function showSkillPrompt(params) {\n return showRollPrompt({\n title: params.title,\n template: params.isSpecial ? SKILL_SPECIAL_PROMPT_TEMPLATE : SKILL_PROMPT_TEMPLATE,\n data: {\n numberofdice: params.numberofdice,\n aspect: Number(params.aspect ?? 0),\n bonusmalus: params.bonusmalus ?? 0,\n woundmalus: params.woundmalus ?? 0,\n bonusauspiciousdice: params.bonusauspiciousdice ?? 0,\n typeofthrow: Number(params.typeofthrow ?? 0),\n },\n fields: [\"aspect\", \"bonusmalus\", \"woundmalus\", \"bonusauspiciousdice\", \"typeofthrow\"],\n })\n}\n\n/**\n * Open the magic roll prompt and return the user-confirmed parameters.\n */\nexport async function showMagicPrompt(params) {\n return showRollPrompt({\n title: params.title,\n template: MAGIC_PROMPT_TEMPLATE,\n data: {\n numberofdice: params.numberofdice ?? 0,\n aspectskill: Number(params.aspectskill ?? 0),\n bonusmalusskill: params.bonusmalusskill ?? 0,\n bonusauspiciousdice: params.bonusauspiciousdice ?? 0,\n aspectspeciality: Number(params.aspectspeciality ?? 0),\n rolldifficulty: params.rolldifficulty ?? 1,\n bonusmalusspeciality: params.bonusmalusspeciality ?? 0,\n heispend: params.heispend ?? 0,\n typeofthrow: Number(params.typeofthrow ?? 0),\n },\n fields: [\"aspectskill\", \"bonusmalusskill\", \"bonusauspiciousdice\",\n \"aspectspeciality\", \"rolldifficulty\", \"bonusmalusspeciality\",\n \"heispend\", \"typeofthrow\"],\n })\n}\n\n/**\n * Open the weapon attack roll prompt and return user-confirmed parameters.\n */\nexport async function showWeaponPrompt(params) {\n return showRollPrompt({\n title: params.title,\n template: WEAPON_PROMPT_TEMPLATE,\n data: {\n numberofdice: params.numberofdice ?? 0,\n weaponName: params.weaponName ?? \"\",\n weaponTypeLabel: params.weaponTypeLabel ?? \"CDE.Weapon\",\n weaponAspectIcon: params.weaponAspectIcon ?? \"\",\n weaponAspectLabel: params.weaponAspectLabel ?? \"\",\n damageBase: params.damageBase ?? 1,\n weaponskill: params.weaponskill ?? \"kungfu\",\n aspect: Number(params.aspect ?? 0),\n effectiverange: params.effectiverange ?? \"contact\",\n bonusmalus: params.bonusmalus ?? 0,\n woundmalus: params.woundmalus ?? 0,\n bonusauspiciousdice: params.bonusauspiciousdice ?? 0,\n typeofthrow: Number(params.typeofthrow ?? 0),\n },\n fields: [\"weaponskill\", \"aspect\", \"effectiverange\", \"bonusmalus\", \"woundmalus\",\n \"bonusauspiciousdice\", \"typeofthrow\"],\n })\n}\n\n/**\n * Build and send a single enriched ChatMessage containing both the roll\n * (for Dice So Nice) and the Wu Xing result card.\n */\nasync function sendResultMessage(actor, resultData, roll, rollMode) {\n const html = await foundry.applications.handlebars.renderTemplate(RESULT_TEMPLATE, resultData)\n return ChatMessage.create({\n user: game.user.id,\n speaker: ChatMessage.getSpeaker({ actor }),\n content: html,\n rolls: [roll],\n rollMode,\n })\n}\n\nconst ROLL_MODES = [\"roll\", \"gmroll\", \"blindroll\", \"selfroll\"]\n\n/**\n * Main entry point: roll dice for a given actor.\n *\n * @param {Actor} actor\n * @param {string} rollKey - e.g. \"prowess-skill\", \"fire-aspect\", \"alchemy-magic-elixirs\"\n */\nexport async function rollForActor(actor, rollKey) {\n const parts = rollKey.split(\"-\")\n const skillLibel = parts[0]\n const typeLibel = parts[1]\n const specialLibel = parts[2] ?? null\n\n const sys = actor.system\n const typeOfThrow = Number(sys.prefs?.typeofthrow?.choice ?? 0)\n\n let numberofdice = 0\n let title = \"\"\n let isSpecial = false\n let isMagic = false\n let isMagicSpecial = false\n let kfDefaultAspect = -1 // set in \"itemkungfu\" case, used when computing defaultAspect\n\n // ---- Determine dice count + title ----\n const MAGIC_I18N_KEYS = {\n internalcinnabar: \"CDE.InternalCinnabar\",\n alchemy: \"CDE.Alchemy\",\n masteryoftheway: \"CDE.MasteryOfTheWay\",\n exorcism: \"CDE.Exorcism\",\n geomancy: \"CDE.Geomancy\",\n }\n\n switch (typeLibel) {\n case \"aspect\":\n numberofdice = sys.aspect[skillLibel]?.value ?? 0\n title = game.i18n.localize(sys.aspect[skillLibel]?.label ?? \"CDE.Roll\")\n break\n case \"skill\":\n numberofdice = sys.skills[skillLibel]?.value ?? 0\n title = game.i18n.localize(sys.skills[skillLibel]?.label ?? \"CDE.Roll\")\n break\n case \"special\":\n numberofdice = sys.skills[skillLibel]?.value ?? 0\n title = game.i18n.localize(sys.skills[skillLibel]?.label ?? \"CDE.Roll\")\n title += ` [${game.i18n.localize(\"CDE.Speciality\")}]`\n isSpecial = true\n if (!sys.skills[skillLibel]?.specialities) {\n ui.notifications.warn(game.i18n.localize(\"CDE.Error2\"))\n return\n }\n break\n case \"resource\":\n numberofdice = sys.resources[skillLibel]?.value ?? 0\n title = game.i18n.localize(sys.resources[skillLibel]?.label ?? \"CDE.Roll\")\n break\n case \"field\":\n numberofdice = sys.resources[skillLibel]?.value ?? 0\n title = game.i18n.localize(sys.resources[skillLibel]?.label ?? \"CDE.Roll\")\n title += ` [${game.i18n.localize(\"CDE.Field\")}]`\n isSpecial = true\n if (!sys.resources[skillLibel]?.specialities) {\n ui.notifications.warn(game.i18n.localize(\"CDE.Error4\"))\n return\n }\n break\n case \"magic\":\n numberofdice = sys.magics[skillLibel]?.value ?? 0\n isMagic = true\n title = game.i18n.localize(MAGIC_I18N_KEYS[skillLibel] ?? \"CDE.Magics\")\n break\n case \"magicspecial\":\n numberofdice = sys.magics[skillLibel]?.value ?? 0\n isMagicSpecial = true\n isMagic = true\n if (!sys.magics[skillLibel]?.speciality?.[specialLibel]?.check) {\n ui.notifications.warn(game.i18n.localize(\"CDE.Error6\"))\n return\n }\n title = `${game.i18n.localize(MAGIC_I18N_KEYS[skillLibel] ?? \"CDE.Magics\")} [${game.i18n.localize(game.system.CONST?.MAGICS?.[skillLibel]?.speciality?.[specialLibel]?.label ?? \"\")}]`\n break\n case \"itemkungfu\": {\n // skillLibel = item._id \u2014 look up the kungfu item to find which skill + aspect to use\n const kfItem = actor.items.get(skillLibel)\n if (!kfItem) { ui.notifications.warn(game.i18n.localize(\"CDE.Error0\")); return }\n const kfSkill = kfItem.system.skill ?? \"kungfu\"\n numberofdice = sys.skills[kfSkill]?.value ?? 0\n title = `${kfItem.name} [${game.i18n.localize(sys.skills[kfSkill]?.label ?? \"CDE.KungFu\")}]`\n kfDefaultAspect = ASPECT_NAMES.indexOf(kfItem.system.aspect ?? \"metal\")\n if (kfDefaultAspect < 0) kfDefaultAspect = 0\n break\n }\n case \"itemweapon\": {\n // skillLibel = item._id \u2014 look up the weapon item to find type + aspect + damage\n const wpItem = actor.items.get(skillLibel)\n if (!wpItem) { ui.notifications.warn(game.i18n.localize(\"CDE.Error0\")); return }\n\n const wpType = wpItem.system.weaponType ?? \"melee\"\n const wpSkill = WEAPON_TYPE_SKILL[wpType] ?? \"kungfu\"\n numberofdice = sys.skills[wpSkill]?.value ?? 0\n\n const wpAspectRaw = wpItem.system.damageAspect ?? \"metal\"\n const wpAspectIdx = WEAPON_ASPECT_INDEX[wpAspectRaw] ?? 0\n const wpRange = wpItem.system.range ?? \"contact\"\n\n const WEAPON_TYPE_LABELS = {\n melee: \"CDE.WeaponMelee\",\n thrown: \"CDE.WeaponThrown\",\n ranged: \"CDE.WeaponRanged\",\n firearm: \"CDE.WeaponFirearm\",\n }\n\n // Show weapon-specific prompt\n const wParams = await showWeaponPrompt({\n title: `${wpItem.name} [${game.i18n.localize(sys.skills[wpSkill]?.label ?? \"CDE.WeaponRoll\")}]`,\n numberofdice,\n weaponName: wpItem.name,\n weaponTypeLabel: WEAPON_TYPE_LABELS[wpType] ?? \"CDE.Weapon\",\n weaponAspectIcon: ASPECT_ICONS[ASPECT_NAMES[wpAspectIdx]] ?? \"\",\n weaponAspectLabel: game.i18n.localize(ASPECT_LABELS[ASPECT_NAMES[wpAspectIdx]] ?? \"\"),\n damageBase: wpItem.system.damageBase ?? 1,\n weaponskill: wpSkill,\n aspect: wpAspectIdx,\n effectiverange: wpRange,\n bonusmalus: 0,\n woundmalus: 0,\n bonusauspiciousdice: 0,\n typeofthrow: typeOfThrow,\n })\n\n if (!wParams) return // cancelled\n\n // Resolve final pool from weapon prompt values\n const wpChosenSkill = wParams.weaponskill ?? wpSkill\n const wpSkillDice = sys.skills[wpChosenSkill]?.value ?? 0\n const wpAspFinal = Number(wParams.aspect ?? wpAspectIdx)\n const wpAspectDice = sys.aspect[ASPECT_NAMES[wpAspFinal]]?.value ?? 0\n const wpRangeMalus = RANGE_MALUS[wParams.effectiverange ?? \"contact\"] ?? 0\n const wpBonusMalus = Number(wParams.bonusmalus ?? 0)\n const wpWoundMalus = Number(wParams.woundmalus ?? 0)\n const wpBonusAusp = Number(wParams.bonusauspiciousdice ?? 0)\n const wpThrowMode = Number(wParams.typeofthrow ?? 0)\n const wpDamageBase = wpItem.system.damageBase ?? 1\n\n const wpTotalDice = wpSkillDice + wpAspectDice + wpRangeMalus + wpBonusMalus - wpWoundMalus\n if (wpTotalDice <= 0) {\n ui.notifications.warn(game.i18n.localize(\"CDE.Error0\"))\n return\n }\n\n const wpRoll = new Roll(`${wpTotalDice}d10`)\n await wpRoll.evaluate()\n\n const wpAspectName = ASPECT_NAMES[wpAspFinal] ?? \"metal\"\n const wpFaces = countFaces(wpRoll.dice[0]?.results ?? [])\n const wpResults = computeWuXingResults(wpFaces, wpAspectName, wpBonusAusp)\n if (!wpResults) return\n\n const wpModParts = []\n if (wpRangeMalus !== 0) wpModParts.push(`${wpRangeMalus} ${game.i18n.localize(\"CDE.RangePenalty\")}`)\n if (wpBonusMalus !== 0) wpModParts.push(`${wpBonusMalus > 0 ? \"+\" : \"\"}${wpBonusMalus} ${game.i18n.localize(\"CDE.BonusMalus\")}`)\n if (wpWoundMalus !== 0) wpModParts.push(`-${wpWoundMalus} ${game.i18n.localize(\"CDE.WoundMalus\")}`)\n if (wpBonusAusp !== 0) wpModParts.push(`+${wpBonusAusp} ${game.i18n.localize(\"CDE.BonusAuspiciousDice\")}`)\n\n const wpMsg = await sendResultMessage(actor, {\n rollLabel: `${wpItem.name}`,\n aspectName: wpAspectName,\n aspectLabel: game.i18n.localize(ASPECT_LABELS[wpAspectName] ?? \"\"),\n aspectIcon: ASPECT_ICONS[wpAspectName] ?? \"\",\n totalDice: wpTotalDice,\n modifiersText: wpModParts.length ? wpModParts.join(\" \u00B7 \") : \"\",\n spellPower: null,\n rollDifficulty: null,\n actorName: actor.name ?? \"\",\n actorImg: actor.img ?? \"\",\n // weapon-specific\n weaponName: wpItem.name,\n damageBase: wpDamageBase,\n totalDamage: wpResults.successesdice * wpDamageBase,\n ...wpResults,\n aspect: wpAspectName,\n d1: wpFaces[1], d2: wpFaces[2], d3: wpFaces[3], d4: wpFaces[4], d5: wpFaces[5],\n d6: wpFaces[6], d7: wpFaces[7], d8: wpFaces[8], d9: wpFaces[9], d0: wpFaces[0],\n }, wpRoll, ROLL_MODES[wpThrowMode] ?? \"roll\")\n\n if (game.modules.get(\"dice-so-nice\")?.active && wpMsg?.id) {\n await game.dice3d.waitFor3DAnimationByMessageID(wpMsg.id)\n }\n return\n }\n default:\n ui.notifications.warn(`Unknown roll type: ${typeLibel}`)\n return\n }\n\n // For magic rolls the prompt allows adding HEI dice, so don't block early.\n // For itemkungfu, allow 0 base dice (user can add bonus dice in the prompt).\n if (numberofdice <= 0 && typeLibel !== \"aspect\" && typeLibel !== \"itemkungfu\" && !isMagic) {\n ui.notifications.warn(game.i18n.localize(\"CDE.Error0\"))\n return\n }\n\n // ---- Pre-compute default aspect for magic based on skill ----\n const MAGIC_ASPECTS = {\n internalcinnabar: 0, // metal\n alchemy: 1, // water\n masteryoftheway: 2, // earth\n exorcism: 3, // fire\n geomancy: 4, // wood\n }\n\n let defaultAspect = typeLibel === \"aspect\"\n ? [\"metal\",\"water\",\"earth\",\"fire\",\"wood\"].indexOf(skillLibel)\n : 0\n if (isMagic && MAGIC_ASPECTS[skillLibel] !== undefined) {\n defaultAspect = MAGIC_ASPECTS[skillLibel]\n }\n if (kfDefaultAspect >= 0) {\n defaultAspect = kfDefaultAspect\n }\n\n let defaultSpecialAspect = 0\n if (isMagicSpecial && specialLibel) {\n // Look up the speciality's element from the MAGICS config constant\n const specialCfg = game.system.CONST?.MAGICS?.[skillLibel]?.speciality?.[specialLibel]\n const aspectName = LABELELEMENT_TO_ASPECT[specialCfg?.labelelement]\n if (aspectName) {\n defaultSpecialAspect = ASPECT_NAMES.indexOf(aspectName)\n }\n }\n\n // ---- Show roll prompt ----\n let params\n\n if (isMagic) {\n params = await showMagicPrompt({\n title,\n numberofdice,\n aspectskill: defaultAspect,\n bonusmalusskill: 0,\n bonusauspiciousdice: 0,\n aspectspeciality: defaultSpecialAspect,\n rolldifficulty: 1,\n bonusmalusspeciality: 0,\n heispend: 0,\n typeofthrow: typeOfThrow,\n })\n } else {\n params = await showSkillPrompt({\n title,\n numberofdice,\n aspect: defaultAspect,\n bonusmalus: 0,\n woundmalus: 0,\n bonusauspiciousdice: 0,\n typeofthrow: typeOfThrow,\n isSpecial,\n })\n }\n\n if (!params) return // cancelled\n\n // ---- Compute total dice and roll ----\n let aspectIndex, bonusMalus, bonusAuspicious, throwMode\n let spellAspectIndex = null // magic only: aspect of the speciality for Wu Xing\n let rollDifficulty = 1 // magic only: multiplier applied to successes\n\n if (isMagic) {\n const skillAspectIndex = Number(params.aspectskill ?? 0)\n spellAspectIndex = Number(params.aspectspeciality ?? skillAspectIndex)\n aspectIndex = skillAspectIndex // used only for skill dice pool\n bonusMalus = Number(params.bonusmalusskill ?? 0)\n bonusAuspicious = Number(params.bonusauspiciousdice ?? 0)\n rollDifficulty = Math.max(1, Number(params.rolldifficulty ?? 1))\n throwMode = Number(params.typeofthrow ?? 0)\n // magic: magic skill + aspect + bonuses + 1 (speciality base) + HEI spent\n const aspectDice = sys.aspect[ASPECT_NAMES[aspectIndex]]?.value ?? 0\n const bonusSpec = Number(params.bonusmalusspeciality ?? 0)\n const heiDice = Number(params.heispend ?? 0)\n numberofdice = numberofdice + aspectDice + bonusMalus + 1 + bonusSpec + heiDice\n } else {\n aspectIndex = Number(params.aspect ?? 0)\n bonusMalus = Number(params.bonusmalus ?? 0)\n const woundMalus = Number(params.woundmalus ?? 0)\n bonusAuspicious = Number(params.bonusauspiciousdice ?? 0)\n throwMode = Number(params.typeofthrow ?? 0)\n\n const aspectDice = (typeLibel !== \"aspect\")\n ? (sys.aspect[ASPECT_NAMES[aspectIndex]]?.value ?? 0)\n : 0\n\n numberofdice = numberofdice + aspectDice + bonusMalus - woundMalus\n if (isSpecial) numberofdice += 1 // +1d for speciality\n }\n\n if (numberofdice <= 0) {\n ui.notifications.warn(game.i18n.localize(\"CDE.Error0\"))\n return\n }\n\n // ---- Roll ----\n const roll = new Roll(`${numberofdice}d10`)\n await roll.evaluate()\n\n const rollModeKey = ROLL_MODES[throwMode] ?? \"roll\"\n\n // ---- Compute Wu Xing results ----\n // For magic rolls, the spell's aspect (aspectspeciality) governs the Wu Xing\n // cycle (which faces count as successes/auspicious/etc.), not the skill aspect.\n const wuXingAspectName = spellAspectIndex !== null\n ? ASPECT_NAMES[spellAspectIndex]\n : ASPECT_NAMES[aspectIndex]\n const allResults = roll.dice[0]?.results ?? []\n const faces = countFaces(allResults)\n const results = computeWuXingResults(faces, wuXingAspectName, bonusAuspicious)\n if (!results) return\n\n // For magic, successesdice \u00D7 rollDifficulty = spell power\n const spellPower = isMagic ? results.successesdice * rollDifficulty : null\n\n // ---- Build modifier summary text ----\n const modParts = []\n if (isMagic) {\n const bm = Number(params.bonusmalusskill ?? 0)\n const bs = Number(params.bonusmalusspeciality ?? 0)\n const hs = Number(params.heispend ?? 0)\n const ba = Number(params.bonusauspiciousdice ?? 0)\n if (bm !== 0) modParts.push(`${bm > 0 ? \"+\" : \"\"}${bm} ${game.i18n.localize(\"CDE.BonusMalus\")}`)\n if (bs !== 0) modParts.push(`${bs > 0 ? \"+\" : \"\"}${bs} ${game.i18n.localize(\"CDE.SpellBonus\")}`)\n if (ba !== 0) modParts.push(`+${ba} ${game.i18n.localize(\"CDE.BonusAuspiciousDice\")}`)\n if (hs !== 0) modParts.push(`${hs} ${game.i18n.localize(\"CDE.HeiSpend\")}`)\n if (rollDifficulty !== 1) modParts.push(`\u00D7${rollDifficulty} ${game.i18n.localize(\"CDE.RollDifficulty\")}`)\n } else {\n const bm = Number(params.bonusmalus ?? 0)\n const wm = Number(params.woundmalus ?? 0)\n const ba = Number(params.bonusauspiciousdice ?? 0)\n if (bm !== 0) modParts.push(`${bm > 0 ? \"+\" : \"\"}${bm} ${game.i18n.localize(\"CDE.BonusMalus\")}`)\n if (wm !== 0) modParts.push(`-${wm} ${game.i18n.localize(\"CDE.WoundMalus\")}`)\n if (ba !== 0) modParts.push(`+${ba} ${game.i18n.localize(\"CDE.BonusAuspiciousDice\")}`)\n }\n\n // ---- Send single enriched ChatMessage (roll + result card) ----\n const msg = await sendResultMessage(actor, {\n // Roll identity\n rollLabel: title,\n aspectName: wuXingAspectName,\n aspectLabel: game.i18n.localize(ASPECT_LABELS[wuXingAspectName] ?? \"\"),\n aspectIcon: ASPECT_ICONS[wuXingAspectName] ?? \"\",\n totalDice: numberofdice,\n modifiersText: modParts.length ? modParts.join(\" \u00B7 \") : \"\",\n // Spell power (magic only)\n spellPower,\n rollDifficulty: isMagic ? rollDifficulty : null,\n // Actor info\n actorName: actor.name ?? \"\",\n actorImg: actor.img ?? \"\",\n // Wu Xing results\n aspect: wuXingAspectName,\n ...results,\n // Die face counts\n d1: faces[1], d2: faces[2], d3: faces[3], d4: faces[4], d5: faces[5],\n d6: faces[6], d7: faces[7], d8: faces[8], d9: faces[9], d0: faces[0],\n }, roll, rollModeKey)\n\n // ---- Wait for Dice So Nice animation ----\n if (game.modules.get(\"dice-so-nice\")?.active && msg?.id) {\n await game.dice3d.waitFor3DAnimationByMessageID(msg.id)\n }\n}\n", "const { HandlebarsApplicationMixin } = foundry.applications.api\n\nexport class CDEBaseActorSheet extends HandlebarsApplicationMixin(foundry.applications.sheets.ActorSheetV2) {\n static DEFAULT_OPTIONS = {\n classes: [\"fvtt-chroniques-de-l-etrange\", \"actor\"],\n position: { width: 920, height: 800 },\n window: { resizable: true },\n form: { submitOnChange: true },\n dragDrop: [{ dragSelector: \".item, [data-drag='true']\", dropSelector: null }],\n actions: {\n create: CDEBaseActorSheet.#onItemCreate,\n edit: CDEBaseActorSheet.#onItemEdit,\n delete: CDEBaseActorSheet.#onItemDelete,\n },\n }\n\n tabGroups = { primary: \"description\" }\n\n get title() {\n return this.document.name\n }\n\n async _prepareContext() {\n const descriptionHTML = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.description ?? \"\", { async: true })\n const cssClass = this.options.classes?.join(\" \") ?? \"\"\n return {\n actor: this.document,\n system: this.document.system,\n systemData: this.document.system,\n systemFields: this.document.system.schema.fields,\n items: this.document.items.contents,\n descriptionHTML,\n editable: this.isEditable,\n cssClass,\n }\n }\n\n // Restore the active tab after every render (including re-renders from submitOnChange).\n // AppV2 does NOT preserve tab state natively \u2014 we must re-apply it from this.tabGroups,\n // which is dynamically updated by changeTab() when the user clicks a tab.\n _onRender(context, options) {\n super._onRender?.(context, options)\n for (const [group, tab] of Object.entries(this.tabGroups)) {\n this.changeTab(tab, group, { force: true })\n }\n }\n\n static async #onItemCreate(event, target) {\n const type = target.dataset.type ?? \"item\"\n const cls = getDocumentClass(\"Item\")\n const labels = {\n item: \"CDE.ItemNew\",\n weapon: \"CDE.WeaponNew\",\n armor: \"CDE.ArmorNew\",\n sanhei: \"CDE.SanheiNew\",\n ingredient: \"CDE.IngredientNew\",\n kungfu: \"CDE.KFNew\",\n spell: \"CDE.SpellNew\",\n supernatural: \"CDE.SupernaturalNew\",\n }\n const name = game.i18n.localize(labels[type] ?? \"CDE.ItemNew\")\n const systemData = {}\n if (type === \"spell\" && target.dataset.discipline) {\n systemData.discipline = target.dataset.discipline\n }\n return cls.create({ name, type, system: systemData }, { parent: this.document })\n }\n\n static #onItemEdit(event, target) {\n const itemId = target.dataset.itemId ?? target.closest(\"[data-item-id]\")?.dataset.itemId\n const item = this.document.items.get(itemId)\n if (item) item.sheet.render(true)\n }\n\n static #onItemDelete(event, target) {\n const itemId = target.dataset.itemId ?? target.closest(\"[data-item-id]\")?.dataset.itemId\n const item = this.document.items.get(itemId)\n if (item) item.delete()\n }\n}\n", "import { MAGICS, SUBTYPES } from \"../../../config/constants.js\"\nimport { rollInitiativePC } from \"../../initiative.js\"\nimport { rollForActor } from \"../../rolling.js\"\nimport { CDEBaseActorSheet } from \"./base.js\"\n\nexport class CDECharacterSheet extends CDEBaseActorSheet {\n static DEFAULT_OPTIONS = {\n classes: [\"character\"],\n }\n\n static PARTS = {\n main: { template: \"systems/fvtt-chroniques-de-l-etrange/templates/actor/cde-character-sheet.html\" },\n }\n\n tabGroups = { primary: \"description\" }\n\n async _prepareContext() {\n const context = await super._prepareContext()\n context.equipments = context.items.filter((item) => item.type === \"item\")\n context.weapons = context.items.filter((item) => item.type === \"weapon\")\n context.armors = context.items.filter((item) => item.type === \"armor\")\n context.sanheis = context.items.filter((item) => item.type === \"sanhei\")\n context.ingredients = context.items.filter((item) => item.type === \"ingredient\")\n context.spells = context.items.filter((item) => item.type === \"spell\")\n context.kungfus = context.items.filter((item) => item.type === \"kungfu\")\n context.CDE = { MAGICS, SUBTYPES }\n\n // Group spells by discipline key (matches MAGICS keys)\n const spellsByDiscipline = {}\n for (const spell of context.spells) {\n const disc = spell.system?.discipline ?? \"internalcinnabar\"\n if (!spellsByDiscipline[disc]) spellsByDiscipline[disc] = []\n spellsByDiscipline[disc].push(spell)\n }\n\n // Build magicsDisplay: only include the 5 relevant specialities per magic type + grimoire\n const systemMagics = context.systemData.magics ?? {}\n context.magicsDisplay = Object.fromEntries(\n Object.entries(MAGICS).map(([magicKey, magicDef]) => {\n const magicData = systemMagics[magicKey] ?? {}\n return [\n magicKey,\n {\n value: magicData.value ?? 0,\n visible: magicData.visible ?? false,\n speciality: Object.fromEntries(\n Object.keys(magicDef.speciality).map((specKey) => [\n specKey,\n { check: magicData.speciality?.[specKey]?.check ?? false },\n ])\n ),\n grimoire: spellsByDiscipline[magicKey] ?? [],\n },\n ]\n })\n )\n\n return context\n }\n\n _onRender(context, options) {\n super._onRender?.(context, options)\n this.#bindInitiativeControls()\n this.#bindPrefs()\n this.#bindRollButtons()\n this.#bindComponentRandomize()\n }\n\n #bindInitiativeControls() {\n const buttons = this.element?.querySelectorAll(\".click-initiative\")\n if (!buttons?.length) return\n buttons.forEach((button) => {\n button.addEventListener(\"click\", async () => {\n const action = button.dataset.libelId\n let initiative = this.document.system.initiative ?? 1\n if (action === \"plus\") {\n initiative = initiative >= 24 ? 1 : initiative + 1\n await this.document.update({ \"system.initiative\": initiative })\n return\n }\n if (action === \"minus\") {\n initiative = initiative <= 1 ? 24 : initiative - 1\n await this.document.update({ \"system.initiative\": initiative })\n return\n }\n if (action === \"create\") {\n await rollInitiativePC(this.document)\n }\n })\n })\n }\n\n #bindPrefs() {\n const button = this.element?.querySelector(\".click-prefs\")\n if (!button) return\n button.addEventListener(\"click\", async () => {\n const current = this.document.system.prefs?.typeofthrow ?? { choice: \"0\", check: true }\n const html = `\n \n \n ${game.i18n.localize(\"CDE.ThrowType\")}\n \n 0\n 1\n 2\n 3\n \n \n \n ${game.i18n.localize(\"CDE.EnablePrompt\")}\n \n \n `\n const prefs = await Dialog.prompt({\n title: game.i18n.localize(\"CDE.Preferences\"),\n content: html,\n label: game.i18n.localize(\"CDE.Validate\"),\n callback: (dlg) => {\n const choice = dlg.querySelector(\"select[name='choice']\")?.value ?? \"0\"\n const check = dlg.querySelector(\"input[name='check']\")?.checked ?? false\n return { choice, check }\n },\n })\n if (prefs) {\n await this.document.update({\n \"system.prefs.typeofthrow.choice\": String(prefs.choice),\n \"system.prefs.typeofthrow.check\": !!prefs.check,\n })\n }\n })\n }\n\n #bindRollButtons() {\n const cells = this.element?.querySelectorAll(\"td.click[data-libel-id], td.click2[data-libel-id], .cde-roll-trigger[data-libel-id]\")\n if (!cells?.length) return\n cells.forEach((cell) => {\n cell.addEventListener(\"click\", (event) => {\n event.preventDefault()\n const rollKey = cell.dataset.libelId\n if (rollKey) rollForActor(this.document, rollKey)\n })\n })\n }\n\n #bindComponentRandomize() {\n const btn = this.element?.querySelector(\"[data-action='randomize-component']\")\n if (!btn) return\n btn.addEventListener(\"click\", async () => {\n const roll = new Roll(\"1d10\")\n await roll.evaluate()\n const face = roll.total === 10 ? 0 : roll.total\n const COMPONENT_KEYS = { 1:\"one\", 2:\"two\", 3:\"three\", 4:\"four\", 5:\"five\",\n 6:\"six\", 7:\"seven\", 8:\"eight\", 9:\"nine\", 0:\"zero\" }\n const componentKey = COMPONENT_KEYS[face]\n const componentValue = this.document.system.component?.[componentKey]?.value ?? \"\"\n const label = componentValue\n ? `${componentValue}`\n : `${game.i18n.localize(\"CDE.Component\")}${face}`\n const content = `\n \n ${game.i18n.localize(\"CDE.ChanceThrowResult\")}\n ${label}\n `\n await ChatMessage.create({\n user: game.user.id,\n speaker: ChatMessage.getSpeaker({ actor: this.document }),\n content,\n rolls: [roll],\n rollMode: \"roll\",\n })\n })\n }\n}\n", "import { rollInitiativeNPC } from \"../../initiative.js\"\nimport { CDEBaseActorSheet } from \"./base.js\"\n\nexport class CDENpcSheet extends CDEBaseActorSheet {\n static DEFAULT_OPTIONS = {\n classes: [\"npc\"],\n }\n\n static PARTS = {\n main: { template: \"systems/fvtt-chroniques-de-l-etrange/templates/actor/cde-npc-sheet.html\" },\n }\n\n tabGroups = { primary: \"description\" }\n\n async _prepareContext() {\n const context = await super._prepareContext()\n context.supernaturals = context.items.filter((item) => item.type === \"supernatural\")\n context.spells = context.items.filter((item) => item.type === \"spell\")\n context.kungfus = context.items.filter((item) => item.type === \"kungfu\")\n context.equipments = context.items.filter((item) => item.type === \"item\")\n return context\n }\n\n _onRender(context, options) {\n super._onRender?.(context, options)\n this.#bindInitiativeControls()\n }\n\n #bindInitiativeControls() {\n const buttons = this.element?.querySelectorAll(\".click-initiative-npc\")\n if (!buttons?.length) return\n buttons.forEach((button) => {\n button.addEventListener(\"click\", async () => {\n const action = button.dataset.libelId\n let initiative = this.document.system.initiative ?? 1\n if (action === \"plus\") {\n initiative = initiative >= 24 ? 1 : initiative + 1\n await this.document.update({ \"system.initiative\": initiative })\n return\n }\n if (action === \"minus\") {\n initiative = initiative <= 1 ? 24 : initiative - 1\n await this.document.update({ \"system.initiative\": initiative })\n return\n }\n if (action === \"create\") {\n await rollInitiativeNPC(this.document)\n }\n })\n })\n }\n}\n", "import { CDEBaseActorSheet } from \"./base.js\"\n\nexport class CDETinjiSheet extends CDEBaseActorSheet {\n static DEFAULT_OPTIONS = {\n classes: [\"tinji\"],\n }\n\n static PARTS = {\n main: { template: \"systems/fvtt-chroniques-de-l-etrange/templates/actor/cde-tinji-sheet.html\" },\n }\n\n tabGroups = { primary: \"tinji\" }\n}\n", "import { CDEBaseActorSheet } from \"./base.js\"\n\nexport class CDELoksyuSheet extends CDEBaseActorSheet {\n static DEFAULT_OPTIONS = {\n classes: [\"loksyu\"],\n }\n\n static PARTS = {\n main: { template: \"systems/fvtt-chroniques-de-l-etrange/templates/actor/cde-loksyu-sheet.html\" },\n }\n\n tabGroups = { primary: \"loksyu\" }\n}\n", "const { HandlebarsApplicationMixin } = foundry.applications.api\n\nexport class CDEBaseItemSheet extends HandlebarsApplicationMixin(foundry.applications.sheets.ItemSheetV2) {\n static DEFAULT_OPTIONS = {\n classes: [\"fvtt-chroniques-de-l-etrange\", \"item\"],\n position: { width: 520, height: \"auto\" },\n window: { resizable: true },\n form: { submitOnChange: true },\n actions: {},\n }\n\n tabGroups = { primary: \"details\" }\n\n get title() {\n return this.document.name\n }\n\n async _prepareContext() {\n const cssClass = this.options.classes?.join(\" \") ?? \"\"\n const enrichedDescription = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.description ?? \"\", { async: true })\n const enrichedNotes = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.notes ?? \"\", { async: true })\n return {\n item: this.document,\n system: this.document.system,\n systemData: this.document.system,\n systemFields: this.document.system.schema.fields,\n editable: this.isEditable,\n cssClass,\n enrichedDescription,\n enrichedNotes,\n descriptionHTML: enrichedDescription,\n notesHTML: enrichedNotes,\n }\n }\n\n // Restore the active tab after every render (including re-renders from submitOnChange).\n _onRender(context, options) {\n super._onRender?.(context, options)\n for (const [group, tab] of Object.entries(this.tabGroups)) {\n this.changeTab(tab, group, { force: true })\n }\n }\n}\n", "import { CDEBaseItemSheet } from \"./base.js\"\n\nexport class CDEItemSheet extends CDEBaseItemSheet {\n static DEFAULT_OPTIONS = {\n classes: [\"equipment\"],\n position: { width: 560, height: 460 },\n }\n\n static PARTS = {\n main: { template: \"systems/fvtt-chroniques-de-l-etrange/templates/item/cde-item-sheet.html\" },\n }\n}\n", "import { CDEBaseItemSheet } from \"./base.js\"\n\nexport class CDEKungfuSheet extends CDEBaseItemSheet {\n static DEFAULT_OPTIONS = {\n classes: [\"kungfu\"],\n position: { width: 720, height: 680 },\n }\n\n static PARTS = {\n main: { template: \"systems/fvtt-chroniques-de-l-etrange/templates/item/cde-kungfu-sheet.html\" },\n }\n\n async _prepareContext() {\n const context = await super._prepareContext()\n const techniques = this.document.system.techniques ?? {}\n const enrich = (value) => foundry.applications.ux.TextEditor.implementation.enrichHTML(value ?? \"\", { async: true })\n context.descriptionTechnique1HTML = await enrich(techniques.technique1?.technique)\n context.descriptionTechnique2HTML = await enrich(techniques.technique2?.technique)\n context.descriptionTechnique3HTML = await enrich(techniques.technique3?.technique)\n return context\n }\n}\n", "import { CDEBaseItemSheet } from \"./base.js\"\n\nexport class CDESpellSheet extends CDEBaseItemSheet {\n static DEFAULT_OPTIONS = {\n classes: [\"spell\"],\n position: { width: 660, height: 680 },\n }\n\n static PARTS = {\n main: { template: \"systems/fvtt-chroniques-de-l-etrange/templates/item/cde-spell-sheet.html\" },\n }\n\n async _prepareContext() {\n const context = await super._prepareContext()\n const enrich = (content) => foundry.applications.ux.TextEditor.implementation.enrichHTML(content ?? \"\", { async: true })\n context.spellDescriptionHTML = await enrich(this.document.system.description)\n context.componentsDescriptionHTML = await enrich(this.document.system.components)\n context.effectsDescriptionHTML = await enrich(this.document.system.effects)\n context.examplesDescriptionHTML = await enrich(this.document.system.examples)\n return context\n }\n}\n", "import { CDEBaseItemSheet } from \"./base.js\"\n\nexport class CDESupernaturalSheet extends CDEBaseItemSheet {\n static DEFAULT_OPTIONS = {\n classes: [\"supernatural\"],\n position: { width: 560, height: 520 },\n }\n\n static PARTS = {\n main: { template: \"systems/fvtt-chroniques-de-l-etrange/templates/item/cde-supernatural-sheet.html\" },\n }\n\n async _prepareContext() {\n const context = await super._prepareContext()\n const enrich = (content) => foundry.applications.ux.TextEditor.implementation.enrichHTML(content ?? \"\", { async: true })\n context.effectsHTML = await enrich(this.document.system.effects)\n return context\n }\n}\n", "import { CDEBaseItemSheet } from \"./base.js\"\n\nexport class CDEWeaponSheet extends CDEBaseItemSheet {\n static DEFAULT_OPTIONS = {\n classes: [\"weapon\"],\n position: { width: 580, height: 520 },\n }\n\n static PARTS = {\n main: { template: \"systems/fvtt-chroniques-de-l-etrange/templates/item/cde-weapon-sheet.html\" },\n }\n}\n", "import { CDEBaseItemSheet } from \"./base.js\"\n\nexport class CDEArmorSheet extends CDEBaseItemSheet {\n static DEFAULT_OPTIONS = {\n classes: [\"armor\"],\n position: { width: 520, height: 460 },\n }\n\n static PARTS = {\n main: { template: \"systems/fvtt-chroniques-de-l-etrange/templates/item/cde-armor-sheet.html\" },\n }\n}\n", "import { CDEBaseItemSheet } from \"./base.js\"\n\nexport class CDESanheiSheet extends CDEBaseItemSheet {\n static DEFAULT_OPTIONS = {\n classes: [\"sanhei\"],\n position: { width: 580, height: 620 },\n }\n\n static PARTS = {\n main: { template: \"systems/fvtt-chroniques-de-l-etrange/templates/item/cde-sanhei-sheet.html\" },\n }\n\n async _prepareContext() {\n const context = await super._prepareContext()\n const enrich = (content) => foundry.applications.ux.TextEditor.implementation.enrichHTML(content ?? \"\", { async: true })\n const props = this.document.system.properties\n context.prop1DescriptionHTML = await enrich(props.prop1.description)\n context.prop2DescriptionHTML = await enrich(props.prop2.description)\n context.prop3DescriptionHTML = await enrich(props.prop3.description)\n context.propFields = this.document.system.schema.fields.properties.fields\n return context\n }\n}\n", "import { CDEBaseItemSheet } from \"./base.js\"\n\nexport class CDEIngredientSheet extends CDEBaseItemSheet {\n static DEFAULT_OPTIONS = {\n classes: [\"ingredient\"],\n position: { width: 520, height: 460 },\n }\n\n static PARTS = {\n main: { template: \"systems/fvtt-chroniques-de-l-etrange/templates/item/cde-ingredient-sheet.html\" },\n }\n}\n", "import { SYSTEM_ID } from \"./config/constants.js\"\n\nconst MIGRATION_VERSION = \"3.0.0\"\n\nexport function registerSettings() {\n game.settings.register(SYSTEM_ID, \"migrationVersion\", {\n name: \"Migration version\",\n scope: \"world\",\n config: false,\n type: String,\n default: \"0.0.0\",\n })\n}\n\nexport async function migrateIfNeeded() {\n const current = game.system.version ?? MIGRATION_VERSION\n const stored = game.settings.get(SYSTEM_ID, \"migrationVersion\") ?? \"0.0.0\"\n if (!foundry.utils.isNewerVersion(current, stored)) return\n\n ui.notifications.info(`CHRONIQUESDELETRANGE | Migration vers ${current} en cours...`, { permanent: true })\n await migrateActors()\n await migrateItems()\n await migrateCompendiumActors()\n await migrateCompendiumItems()\n await game.settings.set(SYSTEM_ID, \"migrationVersion\", current)\n ui.notifications.info(`CHRONIQUESDELETRANGE | Migration vers ${current} termin\u00E9e.`)\n}\n\nasync function migrateActors() {\n const updates = []\n for (const actor of game.actors.contents) {\n const updateData = migrateActorData(actor)\n if (Object.keys(updateData).length > 0) {\n updates.push(actor.update(updateData, { enforceTypes: false }))\n }\n }\n await Promise.all(updates)\n}\n\nasync function migrateCompendiumActors() {\n const packs = game.packs.filter((p) => p.documentName === \"Actor\" && p.metadata.system === SYSTEM_ID)\n for (const pack of packs) {\n const content = await pack.getDocuments()\n for (const actor of content) {\n const updateData = migrateActorData(actor)\n if (Object.keys(updateData).length > 0) {\n await actor.update(updateData, { pack: pack.collection, enforceTypes: false })\n }\n }\n }\n}\n\nasync function migrateItems() {\n const updates = []\n for (const item of game.items.contents) {\n const updateData = migrateItemData(item)\n if (Object.keys(updateData).length > 0) {\n updates.push(item.update(updateData, { enforceTypes: false }))\n }\n }\n await Promise.all(updates)\n}\n\nasync function migrateCompendiumItems() {\n const packs = game.packs.filter((p) => p.documentName === \"Item\" && p.metadata.system === SYSTEM_ID)\n for (const pack of packs) {\n const content = await pack.getDocuments()\n for (const item of content) {\n const updateData = migrateItemData(item)\n if (Object.keys(updateData).length > 0) {\n await item.update(updateData, { pack: pack.collection, enforceTypes: false })\n }\n }\n }\n}\n\nfunction migrateActorData(actor) {\n const updateData = {}\n const system = actor.system ?? {}\n const actorType = actor.type\n\n // Fix legacy typo: masteryofthway -> masteryoftheway\n const legacyMagic = system.magics?.masteryofthway\n if (legacyMagic && !system.magics?.masteryoftheway) {\n updateData[\"system.magics.masteryoftheway\"] = legacyMagic\n updateData[\"system.magics.-=masteryofthway\"] = null\n }\n\n // Ensure prefs.typeofthrow exists on relevant actor types\n if ((actorType === \"character\" || actorType === \"npc\") && !system.prefs?.typeofthrow) {\n const defaultCheck = actorType === \"character\"\n updateData[\"system.prefs.typeofthrow\"] = { check: defaultCheck, choice: \"0\" }\n }\n\n // Migrate NPC field renames: levelofthreat \u2192 threat, powerofnuisance \u2192 nuisance\n if (actorType === \"npc\") {\n if (system.levelofthreat !== undefined && system.threat === undefined) {\n updateData[\"system.threat\"] = system.levelofthreat\n updateData[\"system.-=levelofthreat\"] = null\n }\n if (system.powerofnuisance !== undefined && system.nuisance === undefined) {\n updateData[\"system.nuisance\"] = system.powerofnuisance\n updateData[\"system.-=powerofnuisance\"] = null\n }\n }\n\n // Migrate character guardian from string to number\n if (actorType === \"character\" && typeof system.guardian === \"string\") {\n const guardianNum = parseInt(system.guardian, 10)\n if (!isNaN(guardianNum)) {\n updateData[\"system.guardian\"] = guardianNum\n }\n }\n\n return updateData\n}\n\nfunction migrateItemData(item) {\n const updateData = {}\n const system = item.system ?? {}\n\n // Add item-specific migrations here as needed\n\n return updateData\n}\n", "import { ACTOR_TYPES, ITEM_TYPES, MAGICS, SUBTYPES, SYSTEM_ID } from \"./config/constants.js\"\nimport { preLocalizeConfig } from \"./config/localize.js\"\nimport { configureRuntime } from \"./config/runtime.js\"\nimport { CharacterDataModel, LoksyuDataModel, NpcDataModel, TinjiDataModel } from \"./data/actors/index.js\"\nimport { EquipmentDataModel, KungfuDataModel, SpellDataModel, SupernaturalDataModel, WeaponDataModel, ArmorDataModel, SanheiDataModel, IngredientDataModel } from \"./data/items/index.js\"\nimport { CDEMessage } from \"./documents/chat-message.js\"\nimport { CDEActor } from \"./documents/actor.js\"\nimport { CDEItem } from \"./documents/item.js\"\nimport { registerDice } from \"./ui/dice.js\"\nimport { registerHandlebarsHelpers } from \"./ui/helpers.js\"\nimport { preloadPartials } from \"./ui/templates.js\"\nimport { CDELoksyuSheet, CDECharacterSheet, CDENpcSheet, CDETinjiSheet } from \"./ui/sheets/actors/index.js\"\nimport { CDEItemSheet, CDEKungfuSheet, CDESpellSheet, CDESupernaturalSheet, CDEWeaponSheet, CDEArmorSheet, CDESanheiSheet, CDEIngredientSheet } from \"./ui/sheets/items/index.js\"\nimport { migrateIfNeeded, registerSettings } from \"./migration.js\"\n\nHooks.once(\"i18nInit\", preLocalizeConfig)\n\nHooks.once(\"init\", async () => {\n console.info(`CHRONIQUESDELETRANGE | Initializing ${SYSTEM_ID}`)\n\n registerSettings()\n\n game.system.CONST = { MAGICS, SUBTYPES }\n\n CONFIG.Actor.dataModels = {\n [ACTOR_TYPES.character]: CharacterDataModel,\n [ACTOR_TYPES.npc]: NpcDataModel,\n [ACTOR_TYPES.tinji]: TinjiDataModel,\n [ACTOR_TYPES.loksyu]: LoksyuDataModel,\n }\n CONFIG.Item.dataModels = {\n [ITEM_TYPES.item]: EquipmentDataModel,\n [ITEM_TYPES.kungfu]: KungfuDataModel,\n [ITEM_TYPES.spell]: SpellDataModel,\n [ITEM_TYPES.supernatural]: SupernaturalDataModel,\n [ITEM_TYPES.weapon]: WeaponDataModel,\n [ITEM_TYPES.armor]: ArmorDataModel,\n [ITEM_TYPES.sanhei]: SanheiDataModel,\n [ITEM_TYPES.ingredient]: IngredientDataModel,\n }\n\n CONFIG.Actor.documentClass = CDEActor\n CONFIG.Item.documentClass = CDEItem\n CONFIG.ChatMessage.documentClass = CDEMessage\n\n configureRuntime()\n\n foundry.applications.apps.DocumentSheetConfig.unregisterSheet(Actor, \"core\", ActorSheet)\n foundry.applications.apps.DocumentSheetConfig.unregisterSheet(Item, \"core\", ItemSheet)\n\n foundry.applications.apps.DocumentSheetConfig.registerSheet(Actor, SYSTEM_ID, CDECharacterSheet, {\n types: [ACTOR_TYPES.character],\n makeDefault: true,\n label: \"CDE Character Sheet (V2)\",\n })\n foundry.applications.apps.DocumentSheetConfig.registerSheet(Actor, SYSTEM_ID, CDENpcSheet, {\n types: [ACTOR_TYPES.npc],\n makeDefault: true,\n label: \"CDE NPC Sheet (V2)\",\n })\n foundry.applications.apps.DocumentSheetConfig.registerSheet(Actor, SYSTEM_ID, CDETinjiSheet, {\n types: [ACTOR_TYPES.tinji],\n makeDefault: true,\n label: \"CDE Tinji Sheet (V2)\",\n })\n foundry.applications.apps.DocumentSheetConfig.registerSheet(Actor, SYSTEM_ID, CDELoksyuSheet, {\n types: [ACTOR_TYPES.loksyu],\n makeDefault: true,\n label: \"CDE Loksyu Sheet (V2)\",\n })\n\n foundry.applications.apps.DocumentSheetConfig.registerSheet(Item, SYSTEM_ID, CDEItemSheet, {\n types: [ITEM_TYPES.item],\n makeDefault: true,\n label: \"CDE Item Sheet (V2)\",\n })\n foundry.applications.apps.DocumentSheetConfig.registerSheet(Item, SYSTEM_ID, CDEKungfuSheet, {\n types: [ITEM_TYPES.kungfu],\n makeDefault: true,\n label: \"CDE KungFu Sheet (V2)\",\n })\n foundry.applications.apps.DocumentSheetConfig.registerSheet(Item, SYSTEM_ID, CDESpellSheet, {\n types: [ITEM_TYPES.spell],\n makeDefault: true,\n label: \"CDE Spell Sheet (V2)\",\n })\n foundry.applications.apps.DocumentSheetConfig.registerSheet(Item, SYSTEM_ID, CDESupernaturalSheet, {\n types: [ITEM_TYPES.supernatural],\n makeDefault: true,\n label: \"CDE Supernatural Sheet (V2)\",\n })\n foundry.applications.apps.DocumentSheetConfig.registerSheet(Item, SYSTEM_ID, CDEWeaponSheet, {\n types: [ITEM_TYPES.weapon],\n makeDefault: true,\n label: \"CDE Weapon Sheet (V2)\",\n })\n foundry.applications.apps.DocumentSheetConfig.registerSheet(Item, SYSTEM_ID, CDEArmorSheet, {\n types: [ITEM_TYPES.armor],\n makeDefault: true,\n label: \"CDE Armor Sheet (V2)\",\n })\n foundry.applications.apps.DocumentSheetConfig.registerSheet(Item, SYSTEM_ID, CDESanheiSheet, {\n types: [ITEM_TYPES.sanhei],\n makeDefault: true,\n label: \"CDE Sanhei Sheet (V2)\",\n })\n foundry.applications.apps.DocumentSheetConfig.registerSheet(Item, SYSTEM_ID, CDEIngredientSheet, {\n types: [ITEM_TYPES.ingredient],\n makeDefault: true,\n label: \"CDE Ingredient Sheet (V2)\",\n })\n\n await preloadPartials()\n registerHandlebarsHelpers()\n registerDice()\n Hooks.on(\"renderSettings\", (_app, html) => injectCompendiumLink(html))\n\n console.info(`CHRONIQUESDELETRANGE | Initialized`)\n})\n\nHooks.once(\"ready\", async () => {\n if (!game.modules.get(\"lib-wrapper\")?.active && game.user.isGM) {\n ui.notifications.error(\"System fvtt-chroniques-de-l-etrange requires the 'libWrapper' module. Please install and activate it.\")\n }\n await migrateIfNeeded()\n})\n\nfunction injectCompendiumLink(html) {\n const header = html[0]?.querySelector?.(\"h4.divider\")\n if (!header) return\n\n const section = document.createElement(\"section\")\n section.classList.add(\"settings\", \"flexcol\")\n section.innerHTML = `\n \n \n Lien utile \n \n \n \n Compendium pour Les CdE \n \n \n Guide d'installation\n \n Rendez-vous sur le site de l'\u00E9diteur, t\u00E9l\u00E9chargez les PDF contenant les liens vers les compendia, puis ajoutez leurs manifestes dans Foundry.\n \n \n \n `\n section.querySelector(\"button[data-action='open-cde-link']\")?.addEventListener(\"click\", () => {\n window.open(\"https://antre-monde.com/les-chroniques-de-letrengae/\", \"_blank\")\n })\n\n header.parentNode.insertBefore(section, header)\n}\n"], - "mappings": "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", + "sourcesContent": ["export const SYSTEM_ID = \"fvtt-chroniques-de-l-etrange\"\n\nexport const ACTOR_TYPES = {\n character: \"character\",\n npc: \"npc\",\n tinji: \"tinji\",\n loksyu: \"loksyu\",\n}\n\nexport const ITEM_TYPES = {\n item: \"item\",\n kungfu: \"kungfu\",\n spell: \"spell\",\n supernatural: \"supernatural\",\n weapon: \"weapon\",\n armor: \"armor\",\n sanhei: \"sanhei\",\n ingredient: \"ingredient\",\n}\n\nexport const SUBTYPES = {\n weapon: { id: \"weapon\", label: \"CDE.Weapon\" },\n armor: { id: \"armor\", label: \"CDE.Armor\" },\n sanhei: { id: \"sanhei\", label: \"CDE.Sanhei\" },\n other: { id: \"other\", label: \"CDE.Other\" },\n}\n\nexport const MAGICS = {\n internalcinnabar: {\n id: \"internalcinnabar\",\n background: \"linear-grey\",\n label: \"CDE.InternalCinnabar\",\n aspectlabel: \"CDE.Metal\",\n speciality: {\n essence: { label: \"CDE.Essence\", classicon: \"icon-yin\", icon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_yin.webp\", elementicon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_metal.webp\", labelicon: \"Yin\", labelelement: \"CDE.Metal\" },\n mind: { label: \"CDE.Mind\", classicon: \"icon-yin\", icon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_yin.webp\", elementicon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_eau.webp\", labelicon: \"Yin\", labelelement: \"CDE.Water\" },\n purification: { label: \"CDE.Purification\", classicon: \"icon-yinyang\", icon: \"/systems/fvtt-chroniques-de-l-etrange/images/yin_yang.webp\", elementicon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_terre.webp\", labelicon: \"Yin/Yang\", labelelement: \"CDE.Earth\" },\n manipulation: { label: \"CDE.Manipulation\", classicon: \"icon-yang\", icon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_yang.webp\", elementicon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_feu.webp\", labelicon: \"Yang\", labelelement: \"CDE.Fire\" },\n aura: { label: \"CDE.Aura\", classicon: \"icon-yang\", icon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_yang.webp\", elementicon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_bois.webp\", labelicon: \"Yang\", labelelement: \"CDE.Wood\" },\n },\n },\n alchemy: {\n id: \"alchemy\",\n background: \"linear-blue\",\n label: \"CDE.Alchemy\",\n aspectlabel: \"CDE.Water\",\n speciality: {\n acupuncture: { label: \"CDE.Acupuncture\", classicon: \"icon-yin\", icon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_yin.webp\", elementicon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_metal.webp\", labelicon: \"Yin\", labelelement: \"CDE.Metal\" },\n elixirs: { label: \"CDE.Elixirs\", classicon: \"icon-yin\", icon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_yin.webp\", elementicon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_eau.webp\", labelicon: \"Yin\", labelelement: \"CDE.Water\" },\n poisons: { label: \"CDE.Poisons\", classicon: \"icon-yinyang\", icon: \"/systems/fvtt-chroniques-de-l-etrange/images/yin_yang.webp\", elementicon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_terre.webp\", labelicon: \"Yin/Yang\", labelelement: \"CDE.Earth\" },\n arsenal: { label: \"CDE.Arsenal\", classicon: \"icon-yang\", icon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_yang.webp\", elementicon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_feu.webp\", labelicon: \"Yang\", labelelement: \"CDE.Fire\" },\n potions: { label: \"CDE.Potions\", classicon: \"icon-yang\", icon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_yang.webp\", elementicon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_bois.webp\", labelicon: \"Yang\", labelelement: \"CDE.Wood\" },\n },\n },\n masteryoftheway: {\n id: \"masteryoftheway\",\n background: \"linear-brown\",\n label: \"CDE.MasteryOfTheWay\",\n aspectlabel: \"CDE.Earth\",\n speciality: {\n curse: { label: \"CDE.Curse\", classicon: \"icon-yin\", icon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_yin.webp\", elementicon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_metal.webp\", labelicon: \"Yin\", labelelement: \"CDE.Metal\" },\n transfiguration: { label: \"CDE.Transfiguration\", classicon: \"icon-yin\", icon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_yin.webp\", elementicon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_eau.webp\", labelicon: \"Yin\", labelelement: \"CDE.Water\" },\n necromancy: { label: \"CDE.Necromancy\", classicon: \"icon-yinyang\", icon: \"/systems/fvtt-chroniques-de-l-etrange/images/yin_yang.webp\", elementicon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_terre.webp\", labelicon: \"Yin/Yang\", labelelement: \"CDE.Earth\" },\n climatecontrol: { label: \"CDE.ClimateControl\", classicon: \"icon-yang\", icon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_yang.webp\", elementicon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_feu.webp\", labelicon: \"Yang\", labelelement: \"CDE.Fire\" },\n goldenmagic: { label: \"CDE.GoldenMagic\", classicon: \"icon-yang\", icon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_yang.webp\", elementicon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_bois.webp\", labelicon: \"Yang\", labelelement: \"CDE.Wood\" },\n },\n },\n exorcism: {\n id: \"exorcism\",\n background: \"linear-red\",\n label: \"CDE.Exorcism\",\n aspectlabel: \"CDE.Fire\",\n speciality: {\n invocation: { label: \"CDE.Invocation\", classicon: \"icon-yin\", icon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_yin.webp\", elementicon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_metal.webp\", labelicon: \"Yin\", labelelement: \"CDE.Metal\" },\n tracking: { label: \"CDE.Tracking\", classicon: \"icon-yin\", icon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_yin.webp\", elementicon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_eau.webp\", labelicon: \"Yin\", labelelement: \"CDE.Water\" },\n protection: { label: \"CDE.Protection\", classicon: \"icon-yinyang\", icon: \"/systems/fvtt-chroniques-de-l-etrange/images/yin_yang.webp\", elementicon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_terre.webp\", labelicon: \"Yin/Yang\", labelelement: \"CDE.Earth\" },\n punishment: { label: \"CDE.Punishment\", classicon: \"icon-yang\", icon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_yang.webp\", elementicon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_feu.webp\", labelicon: \"Yang\", labelelement: \"CDE.Fire\" },\n domination: { label: \"CDE.Domination\", classicon: \"icon-yang\", icon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_yang.webp\", elementicon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_bois.webp\", labelicon: \"Yang\", labelelement: \"CDE.Wood\" },\n },\n },\n geomancy: {\n id: \"geomancy\",\n background: \"linear-green\",\n label: \"CDE.Geomancy\",\n aspectlabel: \"CDE.Wood\",\n speciality: {\n neutralization: { label: \"CDE.Neutralization\", classicon: \"icon-yin\", icon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_yin.webp\", elementicon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_metal.webp\", labelicon: \"Yin\", labelelement: \"CDE.Metal\" },\n divination: { label: \"CDE.Divination\", classicon: \"icon-yin\", icon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_yin.webp\", elementicon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_eau.webp\", labelicon: \"Yin\", labelelement: \"CDE.Water\" },\n earthlyprayer: { label: \"CDE.EarthlyPrayer\", classicon: \"icon-yinyang\", icon: \"/systems/fvtt-chroniques-de-l-etrange/images/yin_yang.webp\", elementicon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_terre.webp\", labelicon: \"Yin/Yang\", labelelement: \"CDE.Earth\" },\n heavenlyprayer: { label: \"CDE.HeavenlyPrayer\", classicon: \"icon-yang\", icon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_yang.webp\", elementicon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_feu.webp\", labelicon: \"Yang\", labelelement: \"CDE.Fire\" },\n fungseoi: { label: \"CDE.Fungseoi\", classicon: \"icon-yang\", icon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_yang.webp\", elementicon: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_bois.webp\", labelicon: \"Yang\", labelelement: \"CDE.Wood\" },\n },\n },\n}\n\nexport const TEMPLATE_PARTIALS = [\n \"systems/fvtt-chroniques-de-l-etrange/templates/actor/parts/cde-character-skills.html\",\n \"systems/fvtt-chroniques-de-l-etrange/templates/actor/parts/cde-character-magics.html\",\n \"systems/fvtt-chroniques-de-l-etrange/templates/actor/parts/cde-character-nghang.html\",\n \"systems/fvtt-chroniques-de-l-etrange/templates/actor/parts/cde-character-treasures.html\",\n \"systems/fvtt-chroniques-de-l-etrange/templates/actor/parts/cde-character-items.html\",\n \"systems/fvtt-chroniques-de-l-etrange/templates/actor/parts/cde-character-kungfus.html\",\n \"systems/fvtt-chroniques-de-l-etrange/templates/actor/parts/cde-character-spells.html\",\n \"systems/fvtt-chroniques-de-l-etrange/templates/actor/parts/cde-npc-supernaturals.html\",\n \"systems/fvtt-chroniques-de-l-etrange/templates/actor/parts/cde-npc-spells.html\",\n \"systems/fvtt-chroniques-de-l-etrange/templates/actor/parts/cde-npc-kungfus.html\",\n \"systems/fvtt-chroniques-de-l-etrange/templates/actor/parts/cde-npc-items.html\",\n]\n", "import { MAGICS, SUBTYPES } from \"./constants.js\"\n\nexport function preLocalizeConfig() {\n const localizeConfigObject = (obj, keys) => {\n for (const o of Object.values(obj)) {\n for (const key of keys) {\n o[key] = game.i18n.localize(o[key])\n }\n }\n }\n\n localizeConfigObject(SUBTYPES, [\"label\"])\n Object.values(MAGICS).forEach((magic) => {\n magic.label = game.i18n.localize(magic.label)\n magic.aspectlabel = game.i18n.localize(magic.aspectlabel)\n Object.values(magic.speciality).forEach((spec) => {\n spec.label = game.i18n.localize(spec.label)\n spec.labelelement = game.i18n.localize(spec.labelelement)\n })\n })\n}\n", "export function configureRuntime() {\n CONFIG.Actor.compendiumBanner = \"/systems/fvtt-chroniques-de-l-etrange/images/banners/actor-banner.webp\"\n CONFIG.Adventure.compendiumBanner = \"/systems/fvtt-chroniques-de-l-etrange/images/banners/adventure-banner.webp\"\n CONFIG.Cards.compendiumBanner = \"ui/banners/cards-banner.webp\"\n CONFIG.Item.compendiumBanner = \"/systems/fvtt-chroniques-de-l-etrange/images/banners/item-banner.webp\"\n CONFIG.JournalEntry.compendiumBanner = \"/systems/fvtt-chroniques-de-l-etrange/images/banners/journalentry-banner.webp\"\n CONFIG.Macro.compendiumBanner = \"ui/banners/macro-banner.webp\"\n CONFIG.Playlist.compendiumBanner = \"ui/banners/playlist-banner.webp\"\n CONFIG.RollTable.compendiumBanner = \"ui/banners/rolltable-banner.webp\"\n CONFIG.Scene.compendiumBanner = \"/systems/fvtt-chroniques-de-l-etrange/images/banners/scene-banner.webp\"\n}\n", "export default class CharacterDataModel extends foundry.abstract.TypeDataModel {\n static defineSchema() {\n const { fields } = foundry.data\n const numberField = (initial = 0, extra = {}) => new fields.NumberField({ required: true, nullable: false, integer: true, initial, ...extra })\n const stringField = (initial = \"\") => new fields.StringField({ required: true, nullable: false, initial })\n const boolField = (initial = false) => new fields.BooleanField({ required: true, initial })\n const htmlField = (initial = \"\") => new fields.HTMLField({ required: true, nullable: false, initial, textSearch: true })\n\n const aspectField = (label, chinese) =>\n new fields.SchemaField({\n chinese: stringField(chinese),\n label: stringField(label),\n value: numberField(15, { min: 0 }),\n })\n\n const skillField = (label) =>\n new fields.SchemaField({\n label: stringField(label),\n specialities: stringField(\"\"),\n value: numberField(0, { min: 0 }),\n })\n\n const resourceField = (label) =>\n new fields.SchemaField({\n label: stringField(label),\n specialities: stringField(\"\"),\n value: numberField(0, { min: 0 }),\n debt: boolField(false),\n })\n\n const componentField = () =>\n new fields.SchemaField({\n value: stringField(\"\"),\n })\n\n const magicSpecialityField = () =>\n new fields.SchemaField({\n check: boolField(false),\n })\n\n const magicField = () =>\n new fields.SchemaField({\n visible: boolField(true),\n value: numberField(0, { min: 0 }),\n speciality: new fields.SchemaField({\n essence: magicSpecialityField(),\n mind: magicSpecialityField(),\n purification: magicSpecialityField(),\n manipulation: magicSpecialityField(),\n aura: magicSpecialityField(),\n acupuncture: magicSpecialityField(),\n elixirs: magicSpecialityField(),\n poisons: magicSpecialityField(),\n arsenal: magicSpecialityField(),\n potions: magicSpecialityField(),\n curse: magicSpecialityField(),\n transfiguration: magicSpecialityField(),\n necromancy: magicSpecialityField(),\n climatecontrol: magicSpecialityField(),\n goldenmagic: magicSpecialityField(),\n invocation: magicSpecialityField(),\n tracking: magicSpecialityField(),\n protection: magicSpecialityField(),\n punishment: magicSpecialityField(),\n domination: magicSpecialityField(),\n neutralization: magicSpecialityField(),\n divination: magicSpecialityField(),\n earthlyprayer: magicSpecialityField(),\n heavenlyprayer: magicSpecialityField(),\n fungseoi: magicSpecialityField(),\n }),\n })\n\n const treasureBranch = () =>\n new fields.SchemaField({\n value: numberField(0, { min: 0 }),\n max: numberField(0, { min: 0 }),\n min: numberField(0, { min: 0 }),\n })\n\n const treasureLevel = () =>\n new fields.SchemaField({\n san: treasureBranch(),\n zing: treasureBranch(),\n })\n\n const schema = {\n concept: stringField(\"\"),\n guardian: numberField(0, { min: 0, max: 5 }),\n initiative: numberField(1, { min: 0 }),\n anti_initiative: numberField(24, { min: 0 }),\n description: htmlField(\"\"),\n prefs: new fields.SchemaField({\n typeofthrow: new fields.SchemaField({\n check: boolField(true),\n choice: stringField(\"0\"),\n }),\n }),\n prompt: new fields.SchemaField({\n typeofthrow: new fields.SchemaField({\n check: boolField(true),\n choice: stringField(\"0\"),\n }),\n configure: new fields.SchemaField({\n numberofdice: numberField(0),\n aspect: numberField(0),\n bonus: numberField(0),\n bonusauspiciousdice: numberField(0),\n typeofthrow: numberField(0),\n aspectskill: numberField(0),\n bonusmalusskill: numberField(0),\n aspectspeciality: numberField(0),\n rolldifficulty: numberField(0),\n bonusmalusspeciality: numberField(0),\n }),\n }),\n aspect: new fields.SchemaField({\n fire: aspectField(\"CDE.Fire\", \"\u328B\"),\n earth: aspectField(\"CDE.Earth\", \"\u328F\"),\n metal: aspectField(\"CDE.Metal\", \"\u328E\"),\n water: aspectField(\"CDE.Water\", \"\u328C\"),\n wood: aspectField(\"CDE.Wood\", \"\u328D\"),\n }),\n skills: new fields.SchemaField({\n art: skillField(\"CDE.Art\"),\n investigation: skillField(\"CDE.Investigation\"),\n erudition: skillField(\"CDE.Erudition\"),\n knavery: skillField(\"CDE.Knavery\"),\n wordliness: skillField(\"CDE.Wordliness\"),\n prowess: skillField(\"CDE.Prowess\"),\n sciences: skillField(\"CDE.Sciences\"),\n technologies: skillField(\"CDE.Technologies\"),\n kungfu: skillField(\"CDE.KungFu\"),\n rangedcombat: skillField(\"CDE.RangedCombat\"),\n }),\n resources: new fields.SchemaField({\n supply: resourceField(\"CDE.Supply\"),\n inquiry: resourceField(\"CDE.Inquiry\"),\n influence: resourceField(\"CDE.Influence\"),\n }),\n component: new fields.SchemaField({\n one: componentField(),\n two: componentField(),\n three: componentField(),\n four: componentField(),\n five: componentField(),\n six: componentField(),\n seven: componentField(),\n eight: componentField(),\n nine: componentField(),\n zero: componentField(),\n }),\n magics: new fields.SchemaField({\n internalcinnabar: magicField(),\n alchemy: magicField(),\n masteryoftheway: magicField(),\n exorcism: magicField(),\n geomancy: magicField(),\n }),\n threetreasures: new fields.SchemaField({\n heiyang: new fields.SchemaField({ value: numberField(0, { min: 0 }), max: numberField(0, { min: 0 }) }),\n heiyin: new fields.SchemaField({ value: numberField(0, { min: 0 }), max: numberField(0, { min: 0 }) }),\n dicelevel: new fields.SchemaField({\n level0d: treasureLevel(),\n level1d: treasureLevel(),\n level2d: treasureLevel(),\n }),\n }),\n experience: new fields.SchemaField({\n value: numberField(0, { min: 0 }),\n max: numberField(0, { min: 0 }),\n min: numberField(0, { min: 0 }),\n }),\n }\n\n return schema\n }\n}\n", "export default class NpcDataModel extends foundry.abstract.TypeDataModel {\n static defineSchema() {\n const { fields } = foundry.data\n const numberField = (initial = 0, extra = {}) => new fields.NumberField({ required: true, nullable: false, integer: true, initial, ...extra })\n const stringField = (initial = \"\") => new fields.StringField({ required: true, nullable: false, initial })\n const boolField = (initial = false) => new fields.BooleanField({ required: true, initial })\n const htmlField = (initial = \"\") => new fields.HTMLField({ required: true, nullable: false, initial, textSearch: true })\n\n const aptitudeField = () =>\n new fields.SchemaField({\n value: numberField(0, { min: 0 }),\n speciality: stringField(\"\"),\n })\n\n const trackedField = () =>\n new fields.SchemaField({\n value: numberField(0, { min: 0 }),\n calcul: numberField(0, { min: 0 }),\n note: stringField(\"\"),\n })\n\n return {\n type: stringField(\"\"),\n threat: numberField(0, { min: 0, max: 4 }), // profane(0) | apprentice(1) | initiate(2) | accomplished(3) | renowned(4)\n nuisance: numberField(0, { min: 0, max: 5 }), // figurant(0) | minion(1) | adversary(2) | ally(3) | boss(4) | divinity(5)\n initiative: numberField(1, { min: 0 }),\n anti_initiative: numberField(24, { min: 0 }),\n aptitudes: new fields.SchemaField({\n physical: aptitudeField(),\n martial: aptitudeField(),\n mental: aptitudeField(),\n social: aptitudeField(),\n spiritual: aptitudeField(),\n }),\n vitality: trackedField(),\n hei: trackedField(),\n description: htmlField(\"\"),\n prefs: new fields.SchemaField({\n typeofthrow: new fields.SchemaField({\n check: boolField(false),\n choice: stringField(\"0\"),\n }),\n }),\n }\n }\n}\n", "export default class TinjiDataModel extends foundry.abstract.TypeDataModel {\n static defineSchema() {\n const { fields } = foundry.data\n const numberField = (initial = 0, extra = {}) => new fields.NumberField({ required: true, nullable: false, integer: true, initial, ...extra })\n const htmlField = (initial = \"\") => new fields.HTMLField({ required: true, nullable: false, initial, textSearch: true })\n\n return {\n value: numberField(0, { min: 0 }),\n description: htmlField(\"\"),\n }\n }\n}\n", "export default class LoksyuDataModel extends foundry.abstract.TypeDataModel {\n static defineSchema() {\n const { fields } = foundry.data\n const numberField = (initial = 0, extra = {}) => new fields.NumberField({ required: true, nullable: false, integer: true, initial, ...extra })\n const htmlField = (initial = \"\") => new fields.HTMLField({ required: true, nullable: false, initial, textSearch: true })\n\n const polarity = () =>\n new fields.SchemaField({\n yin: new fields.SchemaField({ value: numberField(0, { min: 0 }) }),\n yang: new fields.SchemaField({ value: numberField(0, { min: 0 }) }),\n })\n\n return {\n fire: polarity(),\n earth: polarity(),\n metal: polarity(),\n water: polarity(),\n wood: polarity(),\n description: htmlField(\"\"),\n }\n }\n}\n", "export default class EquipmentDataModel extends foundry.abstract.TypeDataModel {\n static defineSchema() {\n const { fields } = foundry.data\n const numberField = (initial = 0, extra = {}) => new fields.NumberField({ required: true, nullable: false, integer: true, initial, ...extra })\n const stringField = (initial = \"\") => new fields.StringField({ required: true, nullable: false, initial })\n const htmlField = (initial = \"\") => new fields.HTMLField({ required: true, nullable: false, initial, textSearch: true })\n\n return {\n reference: stringField(\"\"),\n description: htmlField(\"\"),\n quantity: numberField(1, { min: 0 }),\n weight: numberField(0, { min: 0 }),\n notes: htmlField(\"\"),\n }\n }\n}\n", "export default class KungfuDataModel extends foundry.abstract.TypeDataModel {\n static defineSchema() {\n const { fields } = foundry.data\n const stringField = (initial = \"\") => new fields.StringField({ required: true, nullable: false, initial })\n const htmlField = (initial = \"\") => new fields.HTMLField({ required: true, nullable: false, initial, textSearch: true })\n const boolField = (initial = false) => new fields.BooleanField({ required: true, initial })\n\n const techniqueField = () =>\n new fields.SchemaField({\n check: boolField(false),\n name: stringField(\"\"),\n activation: stringField(\"action-attack\"), // action-attack | action-defense | action-aid | action-attack-defense | reaction | dice | damage-inflicted | damage-received\n technique: htmlField(\"\"),\n })\n\n return {\n reference: stringField(\"\"),\n description: htmlField(\"\"),\n orientation: stringField(\"yin\"), // yin | yang | yinyang\n aspect: stringField(\"metal\"), // metal | eau | terre | feu | bois\n skill: stringField(\"kungfu\"), // kungfu | rangedcombat\n speciality: stringField(\"\"),\n style: stringField(\"\"),\n techniques: new fields.SchemaField({\n technique1: techniqueField(),\n technique2: techniqueField(),\n technique3: techniqueField(),\n }),\n notes: htmlField(\"\"),\n }\n }\n}\n", "export default class SpellDataModel extends foundry.abstract.TypeDataModel {\n static defineSchema() {\n const { fields } = foundry.data\n const stringField = (initial = \"\") => new fields.StringField({ required: true, nullable: false, initial })\n const htmlField = (initial = \"\") => new fields.HTMLField({ required: true, nullable: false, initial, textSearch: true })\n\n return {\n reference: stringField(\"\"),\n description: htmlField(\"\"),\n specialityname: stringField(\"\"),\n associatedelement: stringField(\"metal\"), // metal | eau | terre | feu | bois\n hei: stringField(\"\"),\n realizationtimeritual: stringField(\"\"),\n realizationtimeaccelerated: stringField(\"\"),\n flashback: stringField(\"\"),\n components: htmlField(\"\"),\n effects: htmlField(\"\"),\n examples: htmlField(\"\"),\n notes: htmlField(\"\"),\n discipline: stringField(\"internalcinnabar\"),\n heiType: stringField(\"yin\"),\n heiCost: new fields.NumberField({ required: true, nullable: false, integer: true, min: 0, initial: 1 }),\n difficulty: new fields.NumberField({ required: true, nullable: false, integer: true, min: 0, initial: 1 }),\n }\n }\n}\n", "export default class SupernaturalDataModel extends foundry.abstract.TypeDataModel {\n static defineSchema() {\n const { fields } = foundry.data\n const stringField = (initial = \"\") => new fields.StringField({ required: true, nullable: false, initial })\n const htmlField = (initial = \"\") => new fields.HTMLField({ required: true, nullable: false, initial, textSearch: true })\n\n return {\n reference: stringField(\"\"),\n description: htmlField(\"\"),\n notes: htmlField(\"\"),\n heiType: stringField(\"yin\"),\n heiCost: new fields.NumberField({ required: true, nullable: false, integer: true, min: 0, initial: 0 }),\n trigger: stringField(\"\"),\n effects: htmlField(\"\"),\n }\n }\n}\n", "export default class WeaponDataModel extends foundry.abstract.TypeDataModel {\n static defineSchema() {\n const { fields } = foundry.data\n const stringField = (initial = \"\") => new fields.StringField({ required: true, nullable: false, initial })\n const htmlField = (initial = \"\") => new fields.HTMLField({ required: true, nullable: false, initial, textSearch: true })\n const intField = (initial = 0, opts = {}) => new fields.NumberField({ required: true, nullable: false, integer: true, initial, ...opts })\n\n return {\n reference: stringField(\"\"),\n description: htmlField(\"\"),\n weaponType: stringField(\"melee\"),\n material: stringField(\"\"),\n damageAspect: stringField(\"metal\"),\n damageBase: intField(1),\n range: stringField(\"contact\"), // contact | courte | mediane | longue | extreme\n obtainLevel: intField(0, { min: 0, max: 5 }),\n obtainDifficulty: intField(0, { min: 0, max: 3 }),\n quantity: intField(1),\n notes: htmlField(\"\"),\n }\n }\n}\n", "export default class ArmorDataModel extends foundry.abstract.TypeDataModel {\n static defineSchema() {\n const { fields } = foundry.data\n const stringField = (initial = \"\") => new fields.StringField({ required: true, nullable: false, initial })\n const htmlField = (initial = \"\") => new fields.HTMLField({ required: true, nullable: false, initial, textSearch: true })\n const intField = (initial = 0, opts = {}) => new fields.NumberField({ required: true, nullable: false, integer: true, initial, ...opts })\n\n return {\n reference: stringField(\"\"),\n description: htmlField(\"\"),\n protectionValue: intField(0),\n domain: stringField(\"\"),\n obtainLevel: intField(0, { min: 0, max: 5 }),\n obtainDifficulty: intField(0, { min: 0, max: 3 }),\n quantity: intField(1),\n notes: htmlField(\"\"),\n }\n }\n}\n", "export default class SanheiDataModel extends foundry.abstract.TypeDataModel {\n static defineSchema() {\n const { fields } = foundry.data\n const stringField = (initial = \"\") => new fields.StringField({ required: true, nullable: false, initial })\n const htmlField = (initial = \"\") => new fields.HTMLField({ required: true, nullable: false, initial, textSearch: true })\n const intField = (initial = 0, opts = {}) => new fields.NumberField({ required: true, nullable: false, integer: true, initial, ...opts })\n\n const propertySchema = () => new fields.SchemaField({\n name: stringField(\"\"),\n heiCost: intField(0),\n heiType: stringField(\"yin\"),\n description: htmlField(\"\"),\n })\n\n return {\n reference: stringField(\"\"),\n description: htmlField(\"\"),\n heiType: stringField(\"yin\"),\n properties: new fields.SchemaField({\n prop1: propertySchema(),\n prop2: propertySchema(),\n prop3: propertySchema(),\n }),\n notes: htmlField(\"\"),\n }\n }\n}\n", "export default class IngredientDataModel extends foundry.abstract.TypeDataModel {\n static defineSchema() {\n const { fields } = foundry.data\n const stringField = (initial = \"\") => new fields.StringField({ required: true, nullable: false, initial })\n const htmlField = (initial = \"\") => new fields.HTMLField({ required: true, nullable: false, initial, textSearch: true })\n const intField = (initial = 0, opts = {}) => new fields.NumberField({ required: true, nullable: false, integer: true, initial, ...opts })\n\n return {\n reference: stringField(\"\"),\n description: htmlField(\"\"),\n school: stringField(\"all\"),\n obtainLevel: intField(0, { min: 0, max: 5 }),\n obtainDifficulty: intField(0, { min: 0, max: 3 }),\n quantity: intField(1),\n notes: htmlField(\"\"),\n }\n }\n}\n", "export class CDEMessage extends ChatMessage {\n async renderHTML({ canDelete, canClose = false, ...rest } = {}) {\n const html = await super.renderHTML({ canDelete, canClose, ...rest })\n this.#enrichChatCard(html)\n return html\n }\n\n getAssociatedActor() {\n if (this.speaker.scene && this.speaker.token) {\n const scene = game.scenes.get(this.speaker.scene)\n const token = scene?.tokens.get(this.speaker.token)\n if (token) return token.actor\n }\n return game.actors.get(this.speaker.actor)\n }\n\n #enrichChatCard(html) {\n const actor = this.getAssociatedActor()\n\n let img\n let nameText\n if (this.isContentVisible) {\n img = actor?.img ?? this.author.avatar\n nameText = this.alias\n } else {\n img = this.author.avatar\n nameText = this.author.name\n }\n\n const avatar = document.createElement(\"a\")\n avatar.classList.add(\"avatar\")\n if (actor) avatar.dataset.uuid = actor.uuid\n const avatarImg = document.createElement(\"img\")\n Object.assign(avatarImg, { src: img, alt: nameText })\n avatar.append(avatarImg)\n\n const name = document.createElement(\"span\")\n name.classList.add(\"name-stacked\")\n const title = document.createElement(\"span\")\n title.classList.add(\"title\")\n title.append(nameText)\n name.append(title)\n\n const sender = html.querySelector(\".message-sender\")\n sender?.replaceChildren(avatar, name)\n }\n}\n", "import { ACTOR_TYPES } from \"../config/constants.js\"\n\nexport class CDEActor extends Actor {\n getRollData() {\n const data = this.toObject(false).system\n return data\n }\n\n prepareBaseData() {\n super.prepareBaseData()\n\n if (this.type === ACTOR_TYPES.character) {\n this.system.anti_initiative = 25 - (this.system.initiative ?? 0)\n }\n\n if (this.type === ACTOR_TYPES.npc) {\n this.system.vitality.calcul = (this.system.aptitudes.physical.value ?? 0) * 4\n this.system.hei.calcul = (this.system.aptitudes.spiritual.value ?? 0) * 4\n this.system.anti_initiative = 25 - (this.system.initiative ?? 0)\n }\n }\n}\n", "export class CDEItem extends Item {\n get isWeapon() {\n return this.system.subtype === \"weapon\"\n }\n\n get isArmor() {\n return this.system.subtype === \"armor\"\n }\n\n get isSanhei() {\n return this.system.subtype === \"sanhei\"\n }\n\n get isOther() {\n return this.system.subtype === \"other\"\n }\n}\n", "const DIGIT_LABELS = [\n \"systems/fvtt-chroniques-de-l-etrange/images/dice-so-nice/digit/d10-1.webp\",\n \"systems/fvtt-chroniques-de-l-etrange/images/dice-so-nice/digit/d10-2.webp\",\n \"systems/fvtt-chroniques-de-l-etrange/images/dice-so-nice/digit/d10-3.webp\",\n \"systems/fvtt-chroniques-de-l-etrange/images/dice-so-nice/digit/d10-4.webp\",\n \"systems/fvtt-chroniques-de-l-etrange/images/dice-so-nice/digit/d10-5.webp\",\n \"systems/fvtt-chroniques-de-l-etrange/images/dice-so-nice/digit/d10-6.webp\",\n \"systems/fvtt-chroniques-de-l-etrange/images/dice-so-nice/digit/d10-7.webp\",\n \"systems/fvtt-chroniques-de-l-etrange/images/dice-so-nice/digit/d10-8.webp\",\n \"systems/fvtt-chroniques-de-l-etrange/images/dice-so-nice/digit/d10-9.webp\",\n \"systems/fvtt-chroniques-de-l-etrange/images/dice-so-nice/digit/d10-10.webp\",\n]\n\nconst CLASSIC_LABELS = [\n \"systems/fvtt-chroniques-de-l-etrange/images/dice-so-nice/d10-1.webp\",\n \"systems/fvtt-chroniques-de-l-etrange/images/dice-so-nice/d10-2.webp\",\n \"systems/fvtt-chroniques-de-l-etrange/images/dice-so-nice/d10-3.webp\",\n \"systems/fvtt-chroniques-de-l-etrange/images/dice-so-nice/d10-4.webp\",\n \"systems/fvtt-chroniques-de-l-etrange/images/dice-so-nice/d10-5.webp\",\n \"systems/fvtt-chroniques-de-l-etrange/images/dice-so-nice/d10-6.webp\",\n \"systems/fvtt-chroniques-de-l-etrange/images/dice-so-nice/d10-7.webp\",\n \"systems/fvtt-chroniques-de-l-etrange/images/dice-so-nice/d10-8.webp\",\n \"systems/fvtt-chroniques-de-l-etrange/images/dice-so-nice/d10-9.webp\",\n \"systems/fvtt-chroniques-de-l-etrange/images/dice-so-nice/d10-10.webp\",\n]\n\nexport function registerDice() {\n Hooks.once(\"diceSoNiceReady\", (dice3d) => {\n dice3d.addColorset(\n {\n name: \"cde\",\n description: \"CdE\",\n foreground: \"#000000\",\n background: \"#ffffff\",\n edge: \"#ffffff\",\n font: \"DeliusUnicase\",\n texture: \"ice\",\n material: \"plastic\",\n },\n \"preferred\",\n )\n\n dice3d.addSystem({ id: \"fvtt-chroniques-de-l-etrangedigit\", name: \"Chroniques de l'\u00E9trange digits\" }, \"preferred\")\n dice3d.addDicePreset({ type: \"d10\", labels: DIGIT_LABELS, system: \"fvtt-chroniques-de-l-etrangedigit\" })\n\n dice3d.addSystem({ id: \"fvtt-chroniques-de-l-etrange\", name: \"Chroniques de l'\u00E9trange\" }, \"preferred\")\n dice3d.addDicePreset({ type: \"d10\", labels: CLASSIC_LABELS, system: \"fvtt-chroniques-de-l-etrange\" })\n })\n}\n", "import { MAGICS } from \"../config/constants.js\"\n\nexport function registerHandlebarsHelpers() {\n const { Handlebars } = globalThis\n if (!Handlebars) return\n\n Handlebars.registerHelper(\"select\", function (selected, options) {\n const escapedValue = RegExp.escape(Handlebars.escapeExpression(selected))\n const rgx = new RegExp(` value=[\"']${escapedValue}[\"']`)\n const html = options.fn(this)\n return html.replace(rgx, \"$& selected\")\n })\n\n Handlebars.registerHelper(\"getMagicBackground\", function (magic) {\n return game.i18n.localize(MAGICS[magic]?.background ?? \"\")\n })\n\n Handlebars.registerHelper(\"getMagicLabel\", function (magic) {\n return game.i18n.localize(MAGICS[magic]?.label ?? \"\")\n })\n\n Handlebars.registerHelper(\"getMagicAspectLabel\", function (magic) {\n return game.i18n.localize(MAGICS[magic]?.aspectlabel ?? \"\")\n })\n\n Handlebars.registerHelper(\"getMagicSpecialityLabel\", function (magic, speciality) {\n return game.i18n.localize(MAGICS[magic]?.speciality?.[speciality]?.label ?? \"\")\n })\n\n Handlebars.registerHelper(\"getMagicSpecialityClassIcon\", function (magic, speciality) {\n return MAGICS[magic]?.speciality?.[speciality]?.classicon ?? \"\"\n })\n\n Handlebars.registerHelper(\"getMagicSpecialityIcon\", function (magic, speciality) {\n return MAGICS[magic]?.speciality?.[speciality]?.icon ?? \"\"\n })\n\n Handlebars.registerHelper(\"getMagicSpecialityElementIcon\", function (magic, speciality) {\n return MAGICS[magic]?.speciality?.[speciality]?.elementicon ?? \"\"\n })\n\n Handlebars.registerHelper(\"getMagicSpecialityLabelIcon\", function (magic, speciality) {\n return MAGICS[magic]?.speciality?.[speciality]?.labelicon ?? \"\"\n })\n\n Handlebars.registerHelper(\"getMagicSpecialityLabelElement\", function (magic, speciality) {\n return game.i18n.localize(MAGICS[magic]?.speciality?.[speciality]?.labelelement ?? \"\")\n })\n\n Handlebars.registerHelper(\"getMagicAspectIcon\", function (magic) {\n const icons = {\n internalcinnabar: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_metal.webp\",\n alchemy: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_eau.webp\",\n masteryoftheway: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_terre.webp\",\n exorcism: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_feu.webp\",\n geomancy: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_bois.webp\",\n }\n return icons[magic] ?? \"\"\n })\n\n Handlebars.registerHelper(\"getElementIcon\", function (aspect) {\n const icons = {\n metal: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_metal.webp\",\n eau: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_eau.webp\",\n terre: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_terre.webp\",\n feu: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_feu.webp\",\n bois: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_bois.webp\",\n }\n return icons[aspect] ?? \"\"\n })\n\n Handlebars.registerHelper(\"getOrientationIcon\", function (orientation) {\n const icons = {\n yin: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_yin.webp\",\n yang: \"/systems/fvtt-chroniques-de-l-etrange/images/cde_yang.webp\",\n yinyang: \"/systems/fvtt-chroniques-de-l-etrange/images/yin_yang.webp\",\n }\n return icons[orientation] ?? \"\"\n })\n\n Handlebars.registerHelper(\"getOrientationLabel\", function (orientation) {\n const keys = {\n yin: \"CDE.OrientationYin\",\n yang: \"CDE.OrientationYang\",\n yinyang: \"CDE.OrientationYinYang\",\n }\n return game.i18n.localize(keys[orientation] ?? \"CDE.Orientation\")\n })\n\n Handlebars.registerHelper(\"getActivationLabel\", function (activation) {\n const keys = {\n \"action-attack\": \"CDE.ActivationAttack\",\n \"action-defense\": \"CDE.ActivationDefense\",\n \"action-aid\": \"CDE.ActivationAid\",\n \"action-attack-defense\": \"CDE.ActivationAttackOrDefense\",\n reaction: \"CDE.ActivationReaction\",\n dice: \"CDE.ActivationDice\",\n \"damage-inflicted\": \"CDE.ActivationDamageInflicted\",\n \"damage-received\": \"CDE.ActivationDamageReceived\",\n }\n return game.i18n.localize(keys[activation] ?? \"CDE.Activation\")\n })\n}\n", "import { TEMPLATE_PARTIALS } from \"../config/constants.js\"\n\nexport async function preloadPartials() {\n return loadTemplates(TEMPLATE_PARTIALS)\n}\n", "/**\n * Initiative determination system for Chroniques de l'\u00C9trange.\n *\n * PJ formula: Initiative = Prouesse + Premi\u00E8re action (comp\u00E9tence/ressource/magie)\n * PNJ formula: Initiative = Aptitude physique + Premi\u00E8re action (aptitude)\n *\n * Range 1-24 ; anti-initiative = 25 \u2212 initiative.\n * Combat order is ascending (low initiative acts first).\n */\n\nconst PC_PROMPT_TEMPLATE = \"systems/fvtt-chroniques-de-l-etrange/templates/form/cde-initiative-prompt.html\"\nconst NPC_PROMPT_TEMPLATE = \"systems/fvtt-chroniques-de-l-etrange/templates/form/cde-initiative-prompt-npc.html\"\nconst RESULT_TEMPLATE = \"systems/fvtt-chroniques-de-l-etrange/templates/form/cde-initiative-result.html\"\n\n/** Skills, resources and magics available as \"premi\u00E8re action\" for a PC. */\nfunction buildPCOptions(sys) {\n const sk = sys.skills ?? {}\n const rs = sys.resources ?? {}\n const mg = sys.magics ?? {}\n return [\n { key: \"art\", label: game.i18n.localize(\"CDE.Art\"), value: sk.art?.value ?? 0 },\n { key: \"investigation\", label: game.i18n.localize(\"CDE.Investigation\"), value: sk.investigation?.value ?? 0 },\n { key: \"erudition\", label: game.i18n.localize(\"CDE.Erudition\"), value: sk.erudition?.value ?? 0 },\n { key: \"knavery\", label: game.i18n.localize(\"CDE.Knavery\"), value: sk.knavery?.value ?? 0 },\n { key: \"wordliness\", label: game.i18n.localize(\"CDE.Wordliness\"), value: sk.wordliness?.value ?? 0 },\n { key: \"prowess\", label: game.i18n.localize(\"CDE.Prowess\"), value: sk.prowess?.value ?? 0 },\n { key: \"sciences\", label: game.i18n.localize(\"CDE.Sciences\"), value: sk.sciences?.value ?? 0 },\n { key: \"technologies\", label: game.i18n.localize(\"CDE.Technologies\"), value: sk.technologies?.value ?? 0 },\n { key: \"kungfu\", label: game.i18n.localize(\"CDE.KungFu\"), value: sk.kungfu?.value ?? 0 },\n { key: \"rangedcombat\", label: game.i18n.localize(\"CDE.RangedCombat\"), value: sk.rangedcombat?.value ?? 0 },\n { key: \"supply\", label: game.i18n.localize(\"CDE.Supply\"), value: rs.supply?.value ?? 0 },\n { key: \"inquiry\", label: game.i18n.localize(\"CDE.Inquiry\"), value: rs.inquiry?.value ?? 0 },\n { key: \"influence\", label: game.i18n.localize(\"CDE.Influence\"), value: rs.influence?.value ?? 0 },\n { key: \"internalcinnabar\", label: game.i18n.localize(\"CDE.InternalCinnabar\"), value: mg.internalcinnabar?.value ?? 0 },\n { key: \"alchemy\", label: game.i18n.localize(\"CDE.Alchemy\"), value: mg.alchemy?.value ?? 0 },\n { key: \"masteryoftheway\", label: game.i18n.localize(\"CDE.MasteryOfTheWay\"), value: mg.masteryoftheway?.value ?? 0 },\n { key: \"exorcism\", label: game.i18n.localize(\"CDE.Exorcism\"), value: mg.exorcism?.value ?? 0 },\n { key: \"geomancy\", label: game.i18n.localize(\"CDE.Geomancy\"), value: mg.geomancy?.value ?? 0 },\n ]\n}\n\n/** Aptitudes available as \"premi\u00E8re action\" for an NPC. */\nfunction buildNPCOptions(sys) {\n const ap = sys.aptitudes ?? {}\n return [\n { key: \"physical\", label: game.i18n.localize(\"CDE.Physical\"), value: ap.physical?.value ?? 0 },\n { key: \"martial\", label: game.i18n.localize(\"CDE.Martial\"), value: ap.martial?.value ?? 0 },\n { key: \"mental\", label: game.i18n.localize(\"CDE.Mental\"), value: ap.mental?.value ?? 0 },\n { key: \"social\", label: game.i18n.localize(\"CDE.Social\"), value: ap.social?.value ?? 0 },\n { key: \"spiritual\", label: game.i18n.localize(\"CDE.Spiritual\"), value: ap.spiritual?.value ?? 0 },\n ]\n}\n\n/** Parse the dialog element and extract firstaction + modifier. */\nfunction readInitFields(dialog) {\n const root = dialog.element ?? dialog\n const selectedKey = root.querySelector(\"select[name='firstaction']\")?.value ?? \"\"\n const modifier = parseInt(root.querySelector(\"input[name='modifier']\")?.value ?? 0) || 0\n return { selectedKey, modifier }\n}\n\n/** Post a styled initiative chat message. */\nasync function sendInitChatMessage({ actor, baseName, baseValue, actionName, actionValue, modifier, initiative, antiInitiative }) {\n const html = await foundry.applications.handlebars.renderTemplate(RESULT_TEMPLATE, {\n actorName: actor.name,\n actorImg: actor.img,\n baseName,\n baseValue,\n actionName,\n actionValue,\n modifier,\n hasModifier: modifier !== 0,\n initiative,\n antiInitiative,\n })\n await ChatMessage.create({\n user: game.user.id,\n speaker: ChatMessage.getSpeaker({ actor }),\n content: html,\n })\n}\n\n/**\n * Open the PC initiative dialog, compute initiative (Prouesse + Premi\u00E8re action + modificateur)\n * and update the actor, then post a chat card.\n */\nexport async function rollInitiativePC(actor) {\n const sys = actor.system\n const prowess = sys.skills?.prowess?.value ?? 0\n const options = buildPCOptions(sys)\n const baseName = game.i18n.localize(\"CDE.Prowess\")\n\n const content = await foundry.applications.handlebars.renderTemplate(PC_PROMPT_TEMPLATE, {\n prowessValue: prowess,\n options,\n modifier: 0,\n })\n\n const result = await foundry.applications.api.DialogV2.prompt({\n window: { title: game.i18n.localize(\"CDE.InitiativeRoll\") },\n content,\n rejectClose: false,\n ok: {\n label: game.i18n.localize(\"CDE.Validate\"),\n callback: (_ev, _btn, dialog) => readInitFields(dialog),\n },\n })\n if (!result) return\n\n const { selectedKey, modifier } = result\n const selected = options.find((o) => o.key === selectedKey) ?? options[0]\n const rawValue = prowess + selected.value + modifier\n const initiative = Math.max(1, Math.min(24, rawValue))\n const antiInit = 25 - initiative\n\n await actor.update({ \"system.initiative\": initiative })\n await sendInitChatMessage({\n actor,\n baseName,\n baseValue: prowess,\n actionName: selected.label,\n actionValue: selected.value,\n modifier,\n initiative,\n antiInitiative: antiInit,\n })\n}\n\n/**\n * Open the NPC initiative dialog, compute initiative (Aptitude physique + Premi\u00E8re action + modificateur)\n * and update the actor, then post a chat card.\n */\nexport async function rollInitiativeNPC(actor) {\n const sys = actor.system\n const physical = sys.aptitudes?.physical?.value ?? 0\n const options = buildNPCOptions(sys)\n const baseName = game.i18n.localize(\"CDE.Physical\")\n\n const content = await foundry.applications.handlebars.renderTemplate(NPC_PROMPT_TEMPLATE, {\n physicalValue: physical,\n options,\n modifier: 0,\n })\n\n const result = await foundry.applications.api.DialogV2.prompt({\n window: { title: game.i18n.localize(\"CDE.InitiativeRoll\") },\n content,\n rejectClose: false,\n ok: {\n label: game.i18n.localize(\"CDE.Validate\"),\n callback: (_ev, _btn, dialog) => readInitFields(dialog),\n },\n })\n if (!result) return\n\n const { selectedKey, modifier } = result\n const selected = options.find((o) => o.key === selectedKey) ?? options[0]\n const rawValue = physical + selected.value + modifier\n const initiative = Math.max(1, Math.min(24, rawValue))\n const antiInit = 25 - initiative\n\n await actor.update({ \"system.initiative\": initiative })\n await sendInitChatMessage({\n actor,\n baseName,\n baseValue: physical,\n actionName: selected.label,\n actionValue: selected.value,\n modifier,\n initiative,\n antiInitiative: antiInit,\n })\n}\n", "/**\n * Wu Xing rolling system for Chroniques de l'\u00C9trange.\n *\n * The Wu Xing cycle maps each aspect (by index 0-4) to die face groups:\n * - metal=0 : faces 3,8\n * - water=1 : faces 1,6\n * - earth=2 : faces 0/10,5\n * - fire=3 : faces 2,7\n * - wood=4 : faces 4,9\n *\n * For a given active aspect the five result categories are:\n * successes / auspicious / noxious / loksyu (yin face, yang face) / tinji\n * Each category is associated with one of the five aspects in Wu Xing cycle order.\n */\n\nconst RESULT_TEMPLATE = \"systems/fvtt-chroniques-de-l-etrange/templates/form/cde-dice-result.html\"\nconst SKILL_PROMPT_TEMPLATE = \"systems/fvtt-chroniques-de-l-etrange/templates/form/cde-skill-dice-prompt.html\"\nconst SKILL_SPECIAL_PROMPT_TEMPLATE = \"systems/fvtt-chroniques-de-l-etrange/templates/form/cde-skill-special-dice-prompt.html\"\nconst MAGIC_PROMPT_TEMPLATE = \"systems/fvtt-chroniques-de-l-etrange/templates/form/cde-magic-dice-prompt.html\"\nconst WEAPON_PROMPT_TEMPLATE = \"systems/fvtt-chroniques-de-l-etrange/templates/form/cde-weapon-dice-prompt.html\"\n\n/** Maps i18n element label \u2192 aspect name (for speciality default aspect lookup) */\nconst LABELELEMENT_TO_ASPECT = {\n \"CDE.Metal\": \"metal\",\n \"CDE.Water\": \"water\",\n \"CDE.Earth\": \"earth\",\n \"CDE.Fire\": \"fire\",\n \"CDE.Wood\": \"wood\",\n}\n\n/** Map aspect index \u2192 string name used in result template */\nconst ASPECT_NAMES = [\"metal\", \"water\", \"earth\", \"fire\", \"wood\"]\n\n/** Map aspect name \u2192 i18n label key */\nconst ASPECT_LABELS = {\n metal: \"CDE.Metal\",\n water: \"CDE.Water\",\n earth: \"CDE.Earth\",\n fire: \"CDE.Fire\",\n wood: \"CDE.Wood\",\n}\n\n/** Map aspect name \u2192 image path */\nconst ASPECT_ICONS = {\n metal: \"systems/fvtt-chroniques-de-l-etrange/images/cde_metal.webp\",\n water: \"systems/fvtt-chroniques-de-l-etrange/images/cde_eau.webp\",\n earth: \"systems/fvtt-chroniques-de-l-etrange/images/cde_terre.webp\",\n fire: \"systems/fvtt-chroniques-de-l-etrange/images/cde_feu.webp\",\n wood: \"systems/fvtt-chroniques-de-l-etrange/images/cde_bois.webp\",\n}\n\n/** Map aspect index \u2192 die face pair [yin, yang] (face=10 stored as 0) */\nconst ASPECT_FACES = {\n metal: [3, 8],\n water: [1, 6],\n earth: [0, 5], // 0 = face \"10\"\n fire: [2, 7],\n wood: [4, 9],\n}\n\n/**\n * Wu Xing generating/overcoming cycle:\n * wood \u2192 fire \u2192 earth \u2192 metal \u2192 water \u2192 wood (generating)\n * For each active aspect, the five categories in order:\n * [successes, auspicious, noxious, loksyu, tinji]\n */\nconst WU_XING_CYCLE = {\n wood: [\"wood\", \"fire\", \"water\", \"earth\", \"metal\"],\n fire: [\"fire\", \"earth\", \"wood\", \"metal\", \"water\"],\n earth: [\"earth\", \"metal\", \"fire\", \"water\", \"wood\"],\n metal: [\"metal\", \"water\", \"earth\", \"wood\", \"fire\"],\n water: [\"water\", \"wood\", \"metal\", \"fire\", \"earth\"],\n}\n\n/** Maps weapon range string \u2192 dice malus applied to the attack pool */\nconst RANGE_MALUS = {\n contact: 0,\n courte: 0,\n mediane: -1,\n longue: -2,\n extreme: -3,\n}\n\n/** Maps weapon type string \u2192 default skill key */\nconst WEAPON_TYPE_SKILL = {\n melee: \"kungfu\",\n thrown: \"rangedcombat\",\n ranged: \"rangedcombat\",\n firearm: \"rangedcombat\",\n}\n\n/** Maps weapon damageAspect name \u2192 ASPECT_NAMES index */\nconst WEAPON_ASPECT_INDEX = { metal: 0, eau: 1, water: 1, terre: 2, earth: 2, feu: 3, fire: 3, bois: 4, wood: 4 }\n\n/** Count how many times each die face appeared in the roll results */\nfunction countFaces(rollResults) {\n const counts = { 1:0, 2:0, 3:0, 4:0, 5:0, 6:0, 7:0, 8:0, 9:0, 0:0 }\n for (const die of rollResults) {\n const face = die.result === 10 ? 0 : die.result\n counts[face]++\n }\n return counts\n}\n\n/**\n * Compute Wu Xing result categories from face counts and active aspect.\n * Returns { successesdice, auspiciousdice, noxiousdice, loksyudice, tinjidice, loksyurepartition }\n */\nfunction computeWuXingResults(faces, aspectName, bonusAuspicious = 0) {\n const cycle = WU_XING_CYCLE[aspectName]\n if (!cycle) return null\n\n const [succAspect, ausAspect, noxAspect, lokAspect, tinAspect] = cycle\n const [succYin, succYang] = ASPECT_FACES[succAspect]\n const [ausYin, ausYang] = ASPECT_FACES[ausAspect]\n const [noxYin, noxYang] = ASPECT_FACES[noxAspect]\n const [lokYin, lokYang] = ASPECT_FACES[lokAspect]\n const [tinYin, tinYang] = ASPECT_FACES[tinAspect]\n\n const yin = game.i18n.localize(\"CDE.Yin\")\n const yang = game.i18n.localize(\"CDE.Yang\")\n\n return {\n successesdice: faces[succYin] + faces[succYang],\n auspiciousdice: faces[ausYin] + faces[ausYang] + bonusAuspicious,\n noxiousdice: faces[noxYin] + faces[noxYang],\n loksyudice: faces[lokYin] + faces[lokYang],\n loksyurepartition: `[${yin}(${faces[lokYin]}) ${yang}(${faces[lokYang]})]`,\n tinjidice: faces[tinYin] + faces[tinYang],\n }\n}\n\n/** Read a named field from a dialog DOM element */\nfunction readField(dlg, name) {\n const el = dlg.querySelector(`[name=\"${name}\"]`)\n if (!el) return null\n return el.type === \"checkbox\" ? el.checked : el.value\n}\n\n/**\n * Open a DialogV2.prompt with the given template + data and return the resolved form values.\n * The callback receives the DialogV2 application instance; fields are read from its .element.\n * @returns {Promise|null>}\n */\nasync function showRollPrompt({ title, template, data, fields }) {\n const content = await foundry.applications.handlebars.renderTemplate(template, data)\n return foundry.applications.api.DialogV2.prompt({\n window: { title },\n content,\n rejectClose: false,\n ok: {\n label: game.i18n.localize(\"CDE.Validate\"),\n callback: (event, button, dialog) => {\n // In AppV2, dialog is the application instance; .element is the root HTMLElement\n const root = dialog.element ?? dialog\n const result = {}\n for (const field of fields) {\n result[field] = readField(root, field)\n }\n return result\n },\n },\n })\n}\n\n/**\n * Open the skill roll prompt and return the user-confirmed parameters.\n * @param {object} params - Initial values\n * @returns {Promise}\n */\nexport async function showSkillPrompt(params) {\n return showRollPrompt({\n title: params.title,\n template: params.isSpecial ? SKILL_SPECIAL_PROMPT_TEMPLATE : SKILL_PROMPT_TEMPLATE,\n data: {\n numberofdice: params.numberofdice,\n aspect: Number(params.aspect ?? 0),\n bonusmalus: params.bonusmalus ?? 0,\n woundmalus: params.woundmalus ?? 0,\n bonusauspiciousdice: params.bonusauspiciousdice ?? 0,\n typeofthrow: Number(params.typeofthrow ?? 0),\n },\n fields: [\"aspect\", \"bonusmalus\", \"woundmalus\", \"bonusauspiciousdice\", \"typeofthrow\"],\n })\n}\n\n/**\n * Open the magic roll prompt and return the user-confirmed parameters.\n */\nexport async function showMagicPrompt(params) {\n return showRollPrompt({\n title: params.title,\n template: MAGIC_PROMPT_TEMPLATE,\n data: {\n numberofdice: params.numberofdice ?? 0,\n aspectskill: Number(params.aspectskill ?? 0),\n bonusmalusskill: params.bonusmalusskill ?? 0,\n bonusauspiciousdice: params.bonusauspiciousdice ?? 0,\n aspectspeciality: Number(params.aspectspeciality ?? 0),\n rolldifficulty: params.rolldifficulty ?? 1,\n bonusmalusspeciality: params.bonusmalusspeciality ?? 0,\n heispend: params.heispend ?? 0,\n typeofthrow: Number(params.typeofthrow ?? 0),\n },\n fields: [\"aspectskill\", \"bonusmalusskill\", \"bonusauspiciousdice\",\n \"aspectspeciality\", \"rolldifficulty\", \"bonusmalusspeciality\",\n \"heispend\", \"typeofthrow\"],\n })\n}\n\n/**\n * Open the weapon attack roll prompt and return user-confirmed parameters.\n */\nexport async function showWeaponPrompt(params) {\n return showRollPrompt({\n title: params.title,\n template: WEAPON_PROMPT_TEMPLATE,\n data: {\n numberofdice: params.numberofdice ?? 0,\n weaponName: params.weaponName ?? \"\",\n weaponTypeLabel: params.weaponTypeLabel ?? \"CDE.Weapon\",\n weaponAspectIcon: params.weaponAspectIcon ?? \"\",\n weaponAspectLabel: params.weaponAspectLabel ?? \"\",\n damageBase: params.damageBase ?? 1,\n weaponskill: params.weaponskill ?? \"kungfu\",\n aspect: Number(params.aspect ?? 0),\n effectiverange: params.effectiverange ?? \"contact\",\n bonusmalus: params.bonusmalus ?? 0,\n woundmalus: params.woundmalus ?? 0,\n bonusauspiciousdice: params.bonusauspiciousdice ?? 0,\n typeofthrow: Number(params.typeofthrow ?? 0),\n },\n fields: [\"weaponskill\", \"aspect\", \"effectiverange\", \"bonusmalus\", \"woundmalus\",\n \"bonusauspiciousdice\", \"typeofthrow\"],\n })\n}\n\n/**\n * Build and send a single enriched ChatMessage containing both the roll\n * (for Dice So Nice) and the Wu Xing result card.\n */\nasync function sendResultMessage(actor, resultData, roll, rollMode) {\n const html = await foundry.applications.handlebars.renderTemplate(RESULT_TEMPLATE, resultData)\n return ChatMessage.create({\n user: game.user.id,\n speaker: ChatMessage.getSpeaker({ actor }),\n content: html,\n rolls: [roll],\n rollMode,\n })\n}\n\nconst ROLL_MODES = [\"roll\", \"gmroll\", \"blindroll\", \"selfroll\"]\n\n/**\n * Main entry point: roll dice for a given actor.\n *\n * @param {Actor} actor\n * @param {string} rollKey - e.g. \"prowess-skill\", \"fire-aspect\", \"alchemy-magic-elixirs\"\n */\nexport async function rollForActor(actor, rollKey) {\n const parts = rollKey.split(\"-\")\n const skillLibel = parts[0]\n const typeLibel = parts[1]\n const specialLibel = parts[2] ?? null\n\n const sys = actor.system\n const typeOfThrow = Number(sys.prefs?.typeofthrow?.choice ?? 0)\n\n let numberofdice = 0\n let title = \"\"\n let isSpecial = false\n let isMagic = false\n let isMagicSpecial = false\n let kfDefaultAspect = -1 // set in \"itemkungfu\" case, used when computing defaultAspect\n\n // ---- Determine dice count + title ----\n const MAGIC_I18N_KEYS = {\n internalcinnabar: \"CDE.InternalCinnabar\",\n alchemy: \"CDE.Alchemy\",\n masteryoftheway: \"CDE.MasteryOfTheWay\",\n exorcism: \"CDE.Exorcism\",\n geomancy: \"CDE.Geomancy\",\n }\n\n switch (typeLibel) {\n case \"aspect\":\n numberofdice = sys.aspect[skillLibel]?.value ?? 0\n title = game.i18n.localize(sys.aspect[skillLibel]?.label ?? \"CDE.Roll\")\n break\n case \"skill\":\n numberofdice = sys.skills[skillLibel]?.value ?? 0\n title = game.i18n.localize(sys.skills[skillLibel]?.label ?? \"CDE.Roll\")\n break\n case \"special\":\n numberofdice = sys.skills[skillLibel]?.value ?? 0\n title = game.i18n.localize(sys.skills[skillLibel]?.label ?? \"CDE.Roll\")\n title += ` [${game.i18n.localize(\"CDE.Speciality\")}]`\n isSpecial = true\n if (!sys.skills[skillLibel]?.specialities) {\n ui.notifications.warn(game.i18n.localize(\"CDE.Error2\"))\n return\n }\n break\n case \"resource\":\n numberofdice = sys.resources[skillLibel]?.value ?? 0\n title = game.i18n.localize(sys.resources[skillLibel]?.label ?? \"CDE.Roll\")\n break\n case \"field\":\n numberofdice = sys.resources[skillLibel]?.value ?? 0\n title = game.i18n.localize(sys.resources[skillLibel]?.label ?? \"CDE.Roll\")\n title += ` [${game.i18n.localize(\"CDE.Field\")}]`\n isSpecial = true\n if (!sys.resources[skillLibel]?.specialities) {\n ui.notifications.warn(game.i18n.localize(\"CDE.Error4\"))\n return\n }\n break\n case \"magic\":\n numberofdice = sys.magics[skillLibel]?.value ?? 0\n isMagic = true\n title = game.i18n.localize(MAGIC_I18N_KEYS[skillLibel] ?? \"CDE.Magics\")\n break\n case \"magicspecial\":\n numberofdice = sys.magics[skillLibel]?.value ?? 0\n isMagicSpecial = true\n isMagic = true\n if (!sys.magics[skillLibel]?.speciality?.[specialLibel]?.check) {\n ui.notifications.warn(game.i18n.localize(\"CDE.Error6\"))\n return\n }\n title = `${game.i18n.localize(MAGIC_I18N_KEYS[skillLibel] ?? \"CDE.Magics\")} [${game.i18n.localize(game.system.CONST?.MAGICS?.[skillLibel]?.speciality?.[specialLibel]?.label ?? \"\")}]`\n break\n case \"itemkungfu\": {\n // skillLibel = item._id \u2014 look up the kungfu item to find which skill + aspect to use\n const kfItem = actor.items.get(skillLibel)\n if (!kfItem) { ui.notifications.warn(game.i18n.localize(\"CDE.Error0\")); return }\n const kfSkill = kfItem.system.skill ?? \"kungfu\"\n numberofdice = sys.skills[kfSkill]?.value ?? 0\n title = `${kfItem.name} [${game.i18n.localize(sys.skills[kfSkill]?.label ?? \"CDE.KungFu\")}]`\n kfDefaultAspect = ASPECT_NAMES.indexOf(kfItem.system.aspect ?? \"metal\")\n if (kfDefaultAspect < 0) kfDefaultAspect = 0\n break\n }\n case \"itemweapon\": {\n // skillLibel = item._id \u2014 look up the weapon item to find type + aspect + damage\n const wpItem = actor.items.get(skillLibel)\n if (!wpItem) { ui.notifications.warn(game.i18n.localize(\"CDE.Error0\")); return }\n\n const wpType = wpItem.system.weaponType ?? \"melee\"\n const wpSkill = WEAPON_TYPE_SKILL[wpType] ?? \"kungfu\"\n numberofdice = sys.skills[wpSkill]?.value ?? 0\n\n const wpAspectRaw = wpItem.system.damageAspect ?? \"metal\"\n const wpAspectIdx = WEAPON_ASPECT_INDEX[wpAspectRaw] ?? 0\n const wpRange = wpItem.system.range ?? \"contact\"\n\n const WEAPON_TYPE_LABELS = {\n melee: \"CDE.WeaponMelee\",\n thrown: \"CDE.WeaponThrown\",\n ranged: \"CDE.WeaponRanged\",\n firearm: \"CDE.WeaponFirearm\",\n }\n\n // Show weapon-specific prompt\n const wParams = await showWeaponPrompt({\n title: `${wpItem.name} [${game.i18n.localize(sys.skills[wpSkill]?.label ?? \"CDE.WeaponRoll\")}]`,\n numberofdice,\n weaponName: wpItem.name,\n weaponTypeLabel: WEAPON_TYPE_LABELS[wpType] ?? \"CDE.Weapon\",\n weaponAspectIcon: ASPECT_ICONS[ASPECT_NAMES[wpAspectIdx]] ?? \"\",\n weaponAspectLabel: game.i18n.localize(ASPECT_LABELS[ASPECT_NAMES[wpAspectIdx]] ?? \"\"),\n damageBase: wpItem.system.damageBase ?? 1,\n weaponskill: wpSkill,\n aspect: wpAspectIdx,\n effectiverange: wpRange,\n bonusmalus: 0,\n woundmalus: 0,\n bonusauspiciousdice: 0,\n typeofthrow: typeOfThrow,\n })\n\n if (!wParams) return // cancelled\n\n // Resolve final pool from weapon prompt values\n const wpChosenSkill = wParams.weaponskill ?? wpSkill\n const wpSkillDice = sys.skills[wpChosenSkill]?.value ?? 0\n const wpAspFinal = Number(wParams.aspect ?? wpAspectIdx)\n const wpAspectDice = sys.aspect[ASPECT_NAMES[wpAspFinal]]?.value ?? 0\n const wpRangeMalus = RANGE_MALUS[wParams.effectiverange ?? \"contact\"] ?? 0\n const wpBonusMalus = Number(wParams.bonusmalus ?? 0)\n const wpWoundMalus = Number(wParams.woundmalus ?? 0)\n const wpBonusAusp = Number(wParams.bonusauspiciousdice ?? 0)\n const wpThrowMode = Number(wParams.typeofthrow ?? 0)\n const wpDamageBase = wpItem.system.damageBase ?? 1\n\n const wpTotalDice = wpSkillDice + wpAspectDice + wpRangeMalus + wpBonusMalus - wpWoundMalus\n if (wpTotalDice <= 0) {\n ui.notifications.warn(game.i18n.localize(\"CDE.Error0\"))\n return\n }\n\n const wpRoll = new Roll(`${wpTotalDice}d10`)\n await wpRoll.evaluate()\n\n const wpAspectName = ASPECT_NAMES[wpAspFinal] ?? \"metal\"\n const wpFaces = countFaces(wpRoll.dice[0]?.results ?? [])\n const wpResults = computeWuXingResults(wpFaces, wpAspectName, wpBonusAusp)\n if (!wpResults) return\n\n const wpModParts = []\n if (wpRangeMalus !== 0) wpModParts.push(`${wpRangeMalus} ${game.i18n.localize(\"CDE.RangePenalty\")}`)\n if (wpBonusMalus !== 0) wpModParts.push(`${wpBonusMalus > 0 ? \"+\" : \"\"}${wpBonusMalus} ${game.i18n.localize(\"CDE.BonusMalus\")}`)\n if (wpWoundMalus !== 0) wpModParts.push(`-${wpWoundMalus} ${game.i18n.localize(\"CDE.WoundMalus\")}`)\n if (wpBonusAusp !== 0) wpModParts.push(`+${wpBonusAusp} ${game.i18n.localize(\"CDE.BonusAuspiciousDice\")}`)\n\n const wpMsg = await sendResultMessage(actor, {\n rollLabel: `${wpItem.name}`,\n aspectName: wpAspectName,\n aspectLabel: game.i18n.localize(ASPECT_LABELS[wpAspectName] ?? \"\"),\n aspectIcon: ASPECT_ICONS[wpAspectName] ?? \"\",\n totalDice: wpTotalDice,\n modifiersText: wpModParts.length ? wpModParts.join(\" \u00B7 \") : \"\",\n spellPower: null,\n rollDifficulty: null,\n actorName: actor.name ?? \"\",\n actorImg: actor.img ?? \"\",\n // weapon-specific\n weaponName: wpItem.name,\n damageBase: wpDamageBase,\n totalDamage: wpResults.successesdice * wpDamageBase,\n ...wpResults,\n aspect: wpAspectName,\n d1: wpFaces[1], d2: wpFaces[2], d3: wpFaces[3], d4: wpFaces[4], d5: wpFaces[5],\n d6: wpFaces[6], d7: wpFaces[7], d8: wpFaces[8], d9: wpFaces[9], d0: wpFaces[0],\n }, wpRoll, ROLL_MODES[wpThrowMode] ?? \"roll\")\n\n if (game.modules.get(\"dice-so-nice\")?.active && wpMsg?.id) {\n await game.dice3d.waitFor3DAnimationByMessageID(wpMsg.id)\n }\n return\n }\n default:\n ui.notifications.warn(`Unknown roll type: ${typeLibel}`)\n return\n }\n\n // For magic rolls the prompt allows adding HEI dice, so don't block early.\n // For itemkungfu, allow 0 base dice (user can add bonus dice in the prompt).\n if (numberofdice <= 0 && typeLibel !== \"aspect\" && typeLibel !== \"itemkungfu\" && !isMagic) {\n ui.notifications.warn(game.i18n.localize(\"CDE.Error0\"))\n return\n }\n\n // ---- Pre-compute default aspect for magic based on skill ----\n const MAGIC_ASPECTS = {\n internalcinnabar: 0, // metal\n alchemy: 1, // water\n masteryoftheway: 2, // earth\n exorcism: 3, // fire\n geomancy: 4, // wood\n }\n\n let defaultAspect = typeLibel === \"aspect\"\n ? [\"metal\",\"water\",\"earth\",\"fire\",\"wood\"].indexOf(skillLibel)\n : 0\n if (isMagic && MAGIC_ASPECTS[skillLibel] !== undefined) {\n defaultAspect = MAGIC_ASPECTS[skillLibel]\n }\n if (kfDefaultAspect >= 0) {\n defaultAspect = kfDefaultAspect\n }\n\n let defaultSpecialAspect = 0\n if (isMagicSpecial && specialLibel) {\n // Look up the speciality's element from the MAGICS config constant\n const specialCfg = game.system.CONST?.MAGICS?.[skillLibel]?.speciality?.[specialLibel]\n const aspectName = LABELELEMENT_TO_ASPECT[specialCfg?.labelelement]\n if (aspectName) {\n defaultSpecialAspect = ASPECT_NAMES.indexOf(aspectName)\n }\n }\n\n // ---- Show roll prompt ----\n let params\n\n if (isMagic) {\n params = await showMagicPrompt({\n title,\n numberofdice,\n aspectskill: defaultAspect,\n bonusmalusskill: 0,\n bonusauspiciousdice: 0,\n aspectspeciality: defaultSpecialAspect,\n rolldifficulty: 1,\n bonusmalusspeciality: 0,\n heispend: 0,\n typeofthrow: typeOfThrow,\n })\n } else {\n params = await showSkillPrompt({\n title,\n numberofdice,\n aspect: defaultAspect,\n bonusmalus: 0,\n woundmalus: 0,\n bonusauspiciousdice: 0,\n typeofthrow: typeOfThrow,\n isSpecial,\n })\n }\n\n if (!params) return // cancelled\n\n // ---- Compute total dice and roll ----\n let aspectIndex, bonusMalus, bonusAuspicious, throwMode\n let spellAspectIndex = null // magic only: aspect of the speciality for Wu Xing\n let rollDifficulty = 1 // magic only: multiplier applied to successes\n\n if (isMagic) {\n const skillAspectIndex = Number(params.aspectskill ?? 0)\n spellAspectIndex = Number(params.aspectspeciality ?? skillAspectIndex)\n aspectIndex = skillAspectIndex // used only for skill dice pool\n bonusMalus = Number(params.bonusmalusskill ?? 0)\n bonusAuspicious = Number(params.bonusauspiciousdice ?? 0)\n rollDifficulty = Math.max(1, Number(params.rolldifficulty ?? 1))\n throwMode = Number(params.typeofthrow ?? 0)\n // magic: magic skill + aspect + bonuses + 1 (speciality base) + HEI spent\n const aspectDice = sys.aspect[ASPECT_NAMES[aspectIndex]]?.value ?? 0\n const bonusSpec = Number(params.bonusmalusspeciality ?? 0)\n const heiDice = Number(params.heispend ?? 0)\n numberofdice = numberofdice + aspectDice + bonusMalus + 1 + bonusSpec + heiDice\n } else {\n aspectIndex = Number(params.aspect ?? 0)\n bonusMalus = Number(params.bonusmalus ?? 0)\n const woundMalus = Number(params.woundmalus ?? 0)\n bonusAuspicious = Number(params.bonusauspiciousdice ?? 0)\n throwMode = Number(params.typeofthrow ?? 0)\n\n const aspectDice = (typeLibel !== \"aspect\")\n ? (sys.aspect[ASPECT_NAMES[aspectIndex]]?.value ?? 0)\n : 0\n\n numberofdice = numberofdice + aspectDice + bonusMalus - woundMalus\n if (isSpecial) numberofdice += 1 // +1d for speciality\n }\n\n if (numberofdice <= 0) {\n ui.notifications.warn(game.i18n.localize(\"CDE.Error0\"))\n return\n }\n\n // ---- Roll ----\n const roll = new Roll(`${numberofdice}d10`)\n await roll.evaluate()\n\n const rollModeKey = ROLL_MODES[throwMode] ?? \"roll\"\n\n // ---- Compute Wu Xing results ----\n // For magic rolls, the spell's aspect (aspectspeciality) governs the Wu Xing\n // cycle (which faces count as successes/auspicious/etc.), not the skill aspect.\n const wuXingAspectName = spellAspectIndex !== null\n ? ASPECT_NAMES[spellAspectIndex]\n : ASPECT_NAMES[aspectIndex]\n const allResults = roll.dice[0]?.results ?? []\n const faces = countFaces(allResults)\n const results = computeWuXingResults(faces, wuXingAspectName, bonusAuspicious)\n if (!results) return\n\n // For magic, successesdice \u00D7 rollDifficulty = spell power\n const spellPower = isMagic ? results.successesdice * rollDifficulty : null\n\n // ---- Build modifier summary text ----\n const modParts = []\n if (isMagic) {\n const bm = Number(params.bonusmalusskill ?? 0)\n const bs = Number(params.bonusmalusspeciality ?? 0)\n const hs = Number(params.heispend ?? 0)\n const ba = Number(params.bonusauspiciousdice ?? 0)\n if (bm !== 0) modParts.push(`${bm > 0 ? \"+\" : \"\"}${bm} ${game.i18n.localize(\"CDE.BonusMalus\")}`)\n if (bs !== 0) modParts.push(`${bs > 0 ? \"+\" : \"\"}${bs} ${game.i18n.localize(\"CDE.SpellBonus\")}`)\n if (ba !== 0) modParts.push(`+${ba} ${game.i18n.localize(\"CDE.BonusAuspiciousDice\")}`)\n if (hs !== 0) modParts.push(`${hs} ${game.i18n.localize(\"CDE.HeiSpend\")}`)\n if (rollDifficulty !== 1) modParts.push(`\u00D7${rollDifficulty} ${game.i18n.localize(\"CDE.RollDifficulty\")}`)\n } else {\n const bm = Number(params.bonusmalus ?? 0)\n const wm = Number(params.woundmalus ?? 0)\n const ba = Number(params.bonusauspiciousdice ?? 0)\n if (bm !== 0) modParts.push(`${bm > 0 ? \"+\" : \"\"}${bm} ${game.i18n.localize(\"CDE.BonusMalus\")}`)\n if (wm !== 0) modParts.push(`-${wm} ${game.i18n.localize(\"CDE.WoundMalus\")}`)\n if (ba !== 0) modParts.push(`+${ba} ${game.i18n.localize(\"CDE.BonusAuspiciousDice\")}`)\n }\n\n // ---- Send single enriched ChatMessage (roll + result card) ----\n const msg = await sendResultMessage(actor, {\n // Roll identity\n rollLabel: title,\n aspectName: wuXingAspectName,\n aspectLabel: game.i18n.localize(ASPECT_LABELS[wuXingAspectName] ?? \"\"),\n aspectIcon: ASPECT_ICONS[wuXingAspectName] ?? \"\",\n totalDice: numberofdice,\n modifiersText: modParts.length ? modParts.join(\" \u00B7 \") : \"\",\n // Spell power (magic only)\n spellPower,\n rollDifficulty: isMagic ? rollDifficulty : null,\n // Actor info\n actorName: actor.name ?? \"\",\n actorImg: actor.img ?? \"\",\n // Wu Xing results\n aspect: wuXingAspectName,\n ...results,\n // Die face counts\n d1: faces[1], d2: faces[2], d3: faces[3], d4: faces[4], d5: faces[5],\n d6: faces[6], d7: faces[7], d8: faces[8], d9: faces[9], d0: faces[0],\n }, roll, rollModeKey)\n\n // ---- Wait for Dice So Nice animation ----\n if (game.modules.get(\"dice-so-nice\")?.active && msg?.id) {\n await game.dice3d.waitFor3DAnimationByMessageID(msg.id)\n }\n}\n", "const { HandlebarsApplicationMixin } = foundry.applications.api\n\nexport class CDEBaseActorSheet extends HandlebarsApplicationMixin(foundry.applications.sheets.ActorSheetV2) {\n static DEFAULT_OPTIONS = {\n classes: [\"fvtt-chroniques-de-l-etrange\", \"actor\"],\n position: { width: 920, height: 800 },\n window: { resizable: true },\n form: { submitOnChange: true },\n dragDrop: [{ dragSelector: \".item, [data-drag='true']\", dropSelector: null }],\n actions: {\n create: CDEBaseActorSheet.#onItemCreate,\n edit: CDEBaseActorSheet.#onItemEdit,\n delete: CDEBaseActorSheet.#onItemDelete,\n },\n }\n\n tabGroups = { primary: \"description\" }\n\n get title() {\n return this.document.name\n }\n\n async _prepareContext() {\n const descriptionHTML = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.description ?? \"\", { async: true })\n const cssClass = this.options.classes?.join(\" \") ?? \"\"\n return {\n actor: this.document,\n system: this.document.system,\n systemData: this.document.system,\n systemFields: this.document.system.schema.fields,\n items: this.document.items.contents,\n descriptionHTML,\n editable: this.isEditable,\n cssClass,\n }\n }\n\n // Restore the active tab after every render (including re-renders from submitOnChange).\n // AppV2 does NOT preserve tab state natively \u2014 we must re-apply it from this.tabGroups,\n // which is dynamically updated by changeTab() when the user clicks a tab.\n _onRender(context, options) {\n super._onRender?.(context, options)\n for (const [group, tab] of Object.entries(this.tabGroups)) {\n this.changeTab(tab, group, { force: true })\n }\n }\n\n static async #onItemCreate(event, target) {\n const type = target.dataset.type ?? \"item\"\n const cls = getDocumentClass(\"Item\")\n const labels = {\n item: \"CDE.ItemNew\",\n weapon: \"CDE.WeaponNew\",\n armor: \"CDE.ArmorNew\",\n sanhei: \"CDE.SanheiNew\",\n ingredient: \"CDE.IngredientNew\",\n kungfu: \"CDE.KFNew\",\n spell: \"CDE.SpellNew\",\n supernatural: \"CDE.SupernaturalNew\",\n }\n const name = game.i18n.localize(labels[type] ?? \"CDE.ItemNew\")\n const systemData = {}\n if (type === \"spell\" && target.dataset.discipline) {\n systemData.discipline = target.dataset.discipline\n }\n return cls.create({ name, type, system: systemData }, { parent: this.document })\n }\n\n static #onItemEdit(event, target) {\n const itemId = target.dataset.itemId ?? target.closest(\"[data-item-id]\")?.dataset.itemId\n const item = this.document.items.get(itemId)\n if (item) item.sheet.render(true)\n }\n\n static #onItemDelete(event, target) {\n const itemId = target.dataset.itemId ?? target.closest(\"[data-item-id]\")?.dataset.itemId\n const item = this.document.items.get(itemId)\n if (item) item.delete()\n }\n}\n", "import { MAGICS, SUBTYPES } from \"../../../config/constants.js\"\nimport { rollInitiativePC } from \"../../initiative.js\"\nimport { rollForActor } from \"../../rolling.js\"\nimport { CDEBaseActorSheet } from \"./base.js\"\n\nexport class CDECharacterSheet extends CDEBaseActorSheet {\n static DEFAULT_OPTIONS = {\n classes: [\"character\"],\n }\n\n static PARTS = {\n main: { template: \"systems/fvtt-chroniques-de-l-etrange/templates/actor/cde-character-sheet.html\" },\n }\n\n tabGroups = { primary: \"description\" }\n\n async _prepareContext() {\n const context = await super._prepareContext()\n context.equipments = context.items.filter((item) => item.type === \"item\")\n context.weapons = context.items.filter((item) => item.type === \"weapon\")\n context.armors = context.items.filter((item) => item.type === \"armor\")\n context.sanheis = context.items.filter((item) => item.type === \"sanhei\")\n context.ingredients = context.items.filter((item) => item.type === \"ingredient\")\n context.spells = context.items.filter((item) => item.type === \"spell\")\n context.kungfus = context.items.filter((item) => item.type === \"kungfu\")\n context.CDE = { MAGICS, SUBTYPES }\n\n // Group spells by discipline key (matches MAGICS keys)\n const spellsByDiscipline = {}\n for (const spell of context.spells) {\n const disc = spell.system?.discipline ?? \"internalcinnabar\"\n if (!spellsByDiscipline[disc]) spellsByDiscipline[disc] = []\n spellsByDiscipline[disc].push(spell)\n }\n\n // Build magicsDisplay: only include the 5 relevant specialities per magic type + grimoire\n const systemMagics = context.systemData.magics ?? {}\n context.magicsDisplay = Object.fromEntries(\n Object.entries(MAGICS).map(([magicKey, magicDef]) => {\n const magicData = systemMagics[magicKey] ?? {}\n return [\n magicKey,\n {\n value: magicData.value ?? 0,\n visible: magicData.visible ?? false,\n speciality: Object.fromEntries(\n Object.keys(magicDef.speciality).map((specKey) => [\n specKey,\n { check: magicData.speciality?.[specKey]?.check ?? false },\n ])\n ),\n grimoire: spellsByDiscipline[magicKey] ?? [],\n },\n ]\n })\n )\n\n return context\n }\n\n _onRender(context, options) {\n super._onRender?.(context, options)\n this.#bindInitiativeControls()\n this.#bindPrefs()\n this.#bindRollButtons()\n this.#bindComponentRandomize()\n }\n\n #bindInitiativeControls() {\n const buttons = this.element?.querySelectorAll(\".click-initiative\")\n if (!buttons?.length) return\n buttons.forEach((button) => {\n button.addEventListener(\"click\", async () => {\n const action = button.dataset.libelId\n let initiative = this.document.system.initiative ?? 1\n if (action === \"plus\") {\n initiative = initiative >= 24 ? 1 : initiative + 1\n await this.document.update({ \"system.initiative\": initiative })\n return\n }\n if (action === \"minus\") {\n initiative = initiative <= 1 ? 24 : initiative - 1\n await this.document.update({ \"system.initiative\": initiative })\n return\n }\n if (action === \"create\") {\n await rollInitiativePC(this.document)\n }\n })\n })\n }\n\n #bindPrefs() {\n const button = this.element?.querySelector(\".click-prefs\")\n if (!button) return\n button.addEventListener(\"click\", async () => {\n const current = this.document.system.prefs?.typeofthrow ?? { choice: \"0\", check: true }\n const html = `\n \n \n ${game.i18n.localize(\"CDE.ThrowType\")}\n \n 0\n 1\n 2\n 3\n \n \n \n ${game.i18n.localize(\"CDE.EnablePrompt\")}\n \n \n `\n const prefs = await Dialog.prompt({\n title: game.i18n.localize(\"CDE.Preferences\"),\n content: html,\n label: game.i18n.localize(\"CDE.Validate\"),\n callback: (dlg) => {\n const choice = dlg.querySelector(\"select[name='choice']\")?.value ?? \"0\"\n const check = dlg.querySelector(\"input[name='check']\")?.checked ?? false\n return { choice, check }\n },\n })\n if (prefs) {\n await this.document.update({\n \"system.prefs.typeofthrow.choice\": String(prefs.choice),\n \"system.prefs.typeofthrow.check\": !!prefs.check,\n })\n }\n })\n }\n\n #bindRollButtons() {\n const cells = this.element?.querySelectorAll(\"td.click[data-libel-id], td.click2[data-libel-id], .cde-roll-trigger[data-libel-id]\")\n if (!cells?.length) return\n cells.forEach((cell) => {\n cell.addEventListener(\"click\", (event) => {\n event.preventDefault()\n const rollKey = cell.dataset.libelId\n if (rollKey) rollForActor(this.document, rollKey)\n })\n })\n }\n\n #bindComponentRandomize() {\n const btn = this.element?.querySelector(\"[data-action='randomize-component']\")\n if (!btn) return\n btn.addEventListener(\"click\", async () => {\n const roll = new Roll(\"1d10\")\n await roll.evaluate()\n const face = roll.total === 10 ? 0 : roll.total\n const COMPONENT_KEYS = { 1:\"one\", 2:\"two\", 3:\"three\", 4:\"four\", 5:\"five\",\n 6:\"six\", 7:\"seven\", 8:\"eight\", 9:\"nine\", 0:\"zero\" }\n const componentKey = COMPONENT_KEYS[face]\n const componentValue = this.document.system.component?.[componentKey]?.value ?? \"\"\n const label = componentValue\n ? `${componentValue}`\n : `${game.i18n.localize(\"CDE.Component\")}${face}`\n const content = `\n \n ${game.i18n.localize(\"CDE.ChanceThrowResult\")}\n ${label}\n `\n await ChatMessage.create({\n user: game.user.id,\n speaker: ChatMessage.getSpeaker({ actor: this.document }),\n content,\n rolls: [roll],\n rollMode: \"roll\",\n })\n })\n }\n}\n", "import { rollInitiativeNPC } from \"../../initiative.js\"\nimport { CDEBaseActorSheet } from \"./base.js\"\n\nexport class CDENpcSheet extends CDEBaseActorSheet {\n static DEFAULT_OPTIONS = {\n classes: [\"npc\"],\n }\n\n static PARTS = {\n main: { template: \"systems/fvtt-chroniques-de-l-etrange/templates/actor/cde-npc-sheet.html\" },\n }\n\n tabGroups = { primary: \"description\" }\n\n async _prepareContext() {\n const context = await super._prepareContext()\n context.supernaturals = context.items.filter((item) => item.type === \"supernatural\")\n context.spells = context.items.filter((item) => item.type === \"spell\")\n context.kungfus = context.items.filter((item) => item.type === \"kungfu\")\n context.equipments = context.items.filter((item) => item.type === \"item\")\n return context\n }\n\n _onRender(context, options) {\n super._onRender?.(context, options)\n this.#bindInitiativeControls()\n }\n\n #bindInitiativeControls() {\n const buttons = this.element?.querySelectorAll(\".click-initiative-npc\")\n if (!buttons?.length) return\n buttons.forEach((button) => {\n button.addEventListener(\"click\", async () => {\n const action = button.dataset.libelId\n let initiative = this.document.system.initiative ?? 1\n if (action === \"plus\") {\n initiative = initiative >= 24 ? 1 : initiative + 1\n await this.document.update({ \"system.initiative\": initiative })\n return\n }\n if (action === \"minus\") {\n initiative = initiative <= 1 ? 24 : initiative - 1\n await this.document.update({ \"system.initiative\": initiative })\n return\n }\n if (action === \"create\") {\n await rollInitiativeNPC(this.document)\n }\n })\n })\n }\n}\n", "import { CDEBaseActorSheet } from \"./base.js\"\n\nexport class CDETinjiSheet extends CDEBaseActorSheet {\n static DEFAULT_OPTIONS = {\n classes: [\"tinji\"],\n }\n\n static PARTS = {\n main: { template: \"systems/fvtt-chroniques-de-l-etrange/templates/actor/cde-tinji-sheet.html\" },\n }\n\n tabGroups = { primary: \"tinji\" }\n}\n", "import { CDEBaseActorSheet } from \"./base.js\"\n\nexport class CDELoksyuSheet extends CDEBaseActorSheet {\n static DEFAULT_OPTIONS = {\n classes: [\"loksyu\"],\n }\n\n static PARTS = {\n main: { template: \"systems/fvtt-chroniques-de-l-etrange/templates/actor/cde-loksyu-sheet.html\" },\n }\n\n tabGroups = { primary: \"loksyu\" }\n}\n", "const { HandlebarsApplicationMixin } = foundry.applications.api\n\nexport class CDEBaseItemSheet extends HandlebarsApplicationMixin(foundry.applications.sheets.ItemSheetV2) {\n static DEFAULT_OPTIONS = {\n classes: [\"fvtt-chroniques-de-l-etrange\", \"item\"],\n position: { width: 520, height: \"auto\" },\n window: { resizable: true },\n form: { submitOnChange: true },\n actions: {},\n }\n\n tabGroups = { primary: \"details\" }\n\n get title() {\n return this.document.name\n }\n\n async _prepareContext() {\n const cssClass = this.options.classes?.join(\" \") ?? \"\"\n const enrichedDescription = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.description ?? \"\", { async: true })\n const enrichedNotes = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.notes ?? \"\", { async: true })\n return {\n item: this.document,\n system: this.document.system,\n systemData: this.document.system,\n systemFields: this.document.system.schema.fields,\n editable: this.isEditable,\n cssClass,\n enrichedDescription,\n enrichedNotes,\n descriptionHTML: enrichedDescription,\n notesHTML: enrichedNotes,\n }\n }\n\n // Restore the active tab after every render (including re-renders from submitOnChange).\n _onRender(context, options) {\n super._onRender?.(context, options)\n for (const [group, tab] of Object.entries(this.tabGroups)) {\n this.changeTab(tab, group, { force: true })\n }\n }\n}\n", "import { CDEBaseItemSheet } from \"./base.js\"\n\nexport class CDEItemSheet extends CDEBaseItemSheet {\n static DEFAULT_OPTIONS = {\n classes: [\"equipment\"],\n position: { width: 560, height: 460 },\n }\n\n static PARTS = {\n main: { template: \"systems/fvtt-chroniques-de-l-etrange/templates/item/cde-item-sheet.html\" },\n }\n}\n", "import { CDEBaseItemSheet } from \"./base.js\"\n\nexport class CDEKungfuSheet extends CDEBaseItemSheet {\n static DEFAULT_OPTIONS = {\n classes: [\"kungfu\"],\n position: { width: 720, height: 680 },\n }\n\n static PARTS = {\n main: { template: \"systems/fvtt-chroniques-de-l-etrange/templates/item/cde-kungfu-sheet.html\" },\n }\n\n async _prepareContext() {\n const context = await super._prepareContext()\n const techniques = this.document.system.techniques ?? {}\n const enrich = (value) => foundry.applications.ux.TextEditor.implementation.enrichHTML(value ?? \"\", { async: true })\n context.descriptionTechnique1HTML = await enrich(techniques.technique1?.technique)\n context.descriptionTechnique2HTML = await enrich(techniques.technique2?.technique)\n context.descriptionTechnique3HTML = await enrich(techniques.technique3?.technique)\n return context\n }\n}\n", "import { CDEBaseItemSheet } from \"./base.js\"\n\nexport class CDESpellSheet extends CDEBaseItemSheet {\n static DEFAULT_OPTIONS = {\n classes: [\"spell\"],\n position: { width: 660, height: 680 },\n }\n\n static PARTS = {\n main: { template: \"systems/fvtt-chroniques-de-l-etrange/templates/item/cde-spell-sheet.html\" },\n }\n\n async _prepareContext() {\n const context = await super._prepareContext()\n const enrich = (content) => foundry.applications.ux.TextEditor.implementation.enrichHTML(content ?? \"\", { async: true })\n context.spellDescriptionHTML = await enrich(this.document.system.description)\n context.componentsDescriptionHTML = await enrich(this.document.system.components)\n context.effectsDescriptionHTML = await enrich(this.document.system.effects)\n context.examplesDescriptionHTML = await enrich(this.document.system.examples)\n return context\n }\n}\n", "import { CDEBaseItemSheet } from \"./base.js\"\n\nexport class CDESupernaturalSheet extends CDEBaseItemSheet {\n static DEFAULT_OPTIONS = {\n classes: [\"supernatural\"],\n position: { width: 560, height: 520 },\n }\n\n static PARTS = {\n main: { template: \"systems/fvtt-chroniques-de-l-etrange/templates/item/cde-supernatural-sheet.html\" },\n }\n\n async _prepareContext() {\n const context = await super._prepareContext()\n const enrich = (content) => foundry.applications.ux.TextEditor.implementation.enrichHTML(content ?? \"\", { async: true })\n context.effectsHTML = await enrich(this.document.system.effects)\n return context\n }\n}\n", "import { CDEBaseItemSheet } from \"./base.js\"\n\nexport class CDEWeaponSheet extends CDEBaseItemSheet {\n static DEFAULT_OPTIONS = {\n classes: [\"weapon\"],\n position: { width: 580, height: 520 },\n }\n\n static PARTS = {\n main: { template: \"systems/fvtt-chroniques-de-l-etrange/templates/item/cde-weapon-sheet.html\" },\n }\n}\n", "import { CDEBaseItemSheet } from \"./base.js\"\n\nexport class CDEArmorSheet extends CDEBaseItemSheet {\n static DEFAULT_OPTIONS = {\n classes: [\"armor\"],\n position: { width: 520, height: 460 },\n }\n\n static PARTS = {\n main: { template: \"systems/fvtt-chroniques-de-l-etrange/templates/item/cde-armor-sheet.html\" },\n }\n}\n", "import { CDEBaseItemSheet } from \"./base.js\"\n\nexport class CDESanheiSheet extends CDEBaseItemSheet {\n static DEFAULT_OPTIONS = {\n classes: [\"sanhei\"],\n position: { width: 580, height: 620 },\n }\n\n static PARTS = {\n main: { template: \"systems/fvtt-chroniques-de-l-etrange/templates/item/cde-sanhei-sheet.html\" },\n }\n\n async _prepareContext() {\n const context = await super._prepareContext()\n const enrich = (content) => foundry.applications.ux.TextEditor.implementation.enrichHTML(content ?? \"\", { async: true })\n const props = this.document.system.properties\n context.prop1DescriptionHTML = await enrich(props.prop1.description)\n context.prop2DescriptionHTML = await enrich(props.prop2.description)\n context.prop3DescriptionHTML = await enrich(props.prop3.description)\n context.propFields = this.document.system.schema.fields.properties.fields\n return context\n }\n}\n", "import { CDEBaseItemSheet } from \"./base.js\"\n\nexport class CDEIngredientSheet extends CDEBaseItemSheet {\n static DEFAULT_OPTIONS = {\n classes: [\"ingredient\"],\n position: { width: 520, height: 460 },\n }\n\n static PARTS = {\n main: { template: \"systems/fvtt-chroniques-de-l-etrange/templates/item/cde-ingredient-sheet.html\" },\n }\n}\n", "import { SYSTEM_ID } from \"./config/constants.js\"\n\nconst MIGRATION_VERSION = \"3.0.0\"\n\nexport function registerSettings() {\n game.settings.register(SYSTEM_ID, \"migrationVersion\", {\n name: \"Migration version\",\n scope: \"world\",\n config: false,\n type: String,\n default: \"0.0.0\",\n })\n}\n\nexport async function migrateIfNeeded() {\n const current = game.system.version ?? MIGRATION_VERSION\n const stored = game.settings.get(SYSTEM_ID, \"migrationVersion\") ?? \"0.0.0\"\n if (!foundry.utils.isNewerVersion(current, stored)) return\n\n ui.notifications.info(`CHRONIQUESDELETRANGE | Migration vers ${current} en cours...`, { permanent: true })\n await migrateActors()\n await migrateItems()\n await migrateCompendiumActors()\n await migrateCompendiumItems()\n await game.settings.set(SYSTEM_ID, \"migrationVersion\", current)\n ui.notifications.info(`CHRONIQUESDELETRANGE | Migration vers ${current} termin\u00E9e.`)\n}\n\nasync function migrateActors() {\n const updates = []\n for (const actor of game.actors.contents) {\n const updateData = migrateActorData(actor)\n if (Object.keys(updateData).length > 0) {\n updates.push(actor.update(updateData, { enforceTypes: false }))\n }\n }\n await Promise.all(updates)\n}\n\nasync function migrateCompendiumActors() {\n const packs = game.packs.filter((p) => p.documentName === \"Actor\" && p.metadata.system === SYSTEM_ID)\n for (const pack of packs) {\n const content = await pack.getDocuments()\n for (const actor of content) {\n const updateData = migrateActorData(actor)\n if (Object.keys(updateData).length > 0) {\n await actor.update(updateData, { pack: pack.collection, enforceTypes: false })\n }\n }\n }\n}\n\nasync function migrateItems() {\n const updates = []\n for (const item of game.items.contents) {\n const updateData = migrateItemData(item)\n if (Object.keys(updateData).length > 0) {\n updates.push(item.update(updateData, { enforceTypes: false }))\n }\n }\n await Promise.all(updates)\n}\n\nasync function migrateCompendiumItems() {\n const packs = game.packs.filter((p) => p.documentName === \"Item\" && p.metadata.system === SYSTEM_ID)\n for (const pack of packs) {\n const content = await pack.getDocuments()\n for (const item of content) {\n const updateData = migrateItemData(item)\n if (Object.keys(updateData).length > 0) {\n await item.update(updateData, { pack: pack.collection, enforceTypes: false })\n }\n }\n }\n}\n\nfunction migrateActorData(actor) {\n const updateData = {}\n const system = actor.system ?? {}\n const actorType = actor.type\n\n // Fix legacy typo: masteryofthway -> masteryoftheway\n const legacyMagic = system.magics?.masteryofthway\n if (legacyMagic && !system.magics?.masteryoftheway) {\n updateData[\"system.magics.masteryoftheway\"] = legacyMagic\n updateData[\"system.magics.-=masteryofthway\"] = null\n }\n\n // Ensure prefs.typeofthrow exists on relevant actor types\n if ((actorType === \"character\" || actorType === \"npc\") && !system.prefs?.typeofthrow) {\n const defaultCheck = actorType === \"character\"\n updateData[\"system.prefs.typeofthrow\"] = { check: defaultCheck, choice: \"0\" }\n }\n\n // Migrate NPC field renames: levelofthreat \u2192 threat, powerofnuisance \u2192 nuisance\n if (actorType === \"npc\") {\n if (system.levelofthreat !== undefined && system.threat === undefined) {\n updateData[\"system.threat\"] = system.levelofthreat\n updateData[\"system.-=levelofthreat\"] = null\n }\n if (system.powerofnuisance !== undefined && system.nuisance === undefined) {\n updateData[\"system.nuisance\"] = system.powerofnuisance\n updateData[\"system.-=powerofnuisance\"] = null\n }\n }\n\n // Migrate character guardian from string to number\n if (actorType === \"character\" && typeof system.guardian === \"string\") {\n const guardianNum = parseInt(system.guardian, 10)\n if (!isNaN(guardianNum)) {\n updateData[\"system.guardian\"] = guardianNum\n }\n }\n\n return updateData\n}\n\nfunction migrateItemData(item) {\n const updateData = {}\n const system = item.system ?? {}\n\n // Add item-specific migrations here as needed\n\n return updateData\n}\n", "import { ACTOR_TYPES, ITEM_TYPES, MAGICS, SUBTYPES, SYSTEM_ID } from \"./config/constants.js\"\nimport { preLocalizeConfig } from \"./config/localize.js\"\nimport { configureRuntime } from \"./config/runtime.js\"\nimport { CharacterDataModel, LoksyuDataModel, NpcDataModel, TinjiDataModel } from \"./data/actors/index.js\"\nimport { EquipmentDataModel, KungfuDataModel, SpellDataModel, SupernaturalDataModel, WeaponDataModel, ArmorDataModel, SanheiDataModel, IngredientDataModel } from \"./data/items/index.js\"\nimport { CDEMessage } from \"./documents/chat-message.js\"\nimport { CDEActor } from \"./documents/actor.js\"\nimport { CDEItem } from \"./documents/item.js\"\nimport { registerDice } from \"./ui/dice.js\"\nimport { registerHandlebarsHelpers } from \"./ui/helpers.js\"\nimport { preloadPartials } from \"./ui/templates.js\"\nimport { CDELoksyuSheet, CDECharacterSheet, CDENpcSheet, CDETinjiSheet } from \"./ui/sheets/actors/index.js\"\nimport { CDEItemSheet, CDEKungfuSheet, CDESpellSheet, CDESupernaturalSheet, CDEWeaponSheet, CDEArmorSheet, CDESanheiSheet, CDEIngredientSheet } from \"./ui/sheets/items/index.js\"\nimport { migrateIfNeeded, registerSettings } from \"./migration.js\"\n\nHooks.once(\"i18nInit\", preLocalizeConfig)\n\nHooks.once(\"init\", async () => {\n console.info(`CHRONIQUESDELETRANGE | Initializing ${SYSTEM_ID}`)\n\n registerSettings()\n\n game.system.CONST = { MAGICS, SUBTYPES }\n\n CONFIG.Actor.dataModels = {\n [ACTOR_TYPES.character]: CharacterDataModel,\n [ACTOR_TYPES.npc]: NpcDataModel,\n [ACTOR_TYPES.tinji]: TinjiDataModel,\n [ACTOR_TYPES.loksyu]: LoksyuDataModel,\n }\n CONFIG.Item.dataModels = {\n [ITEM_TYPES.item]: EquipmentDataModel,\n [ITEM_TYPES.kungfu]: KungfuDataModel,\n [ITEM_TYPES.spell]: SpellDataModel,\n [ITEM_TYPES.supernatural]: SupernaturalDataModel,\n [ITEM_TYPES.weapon]: WeaponDataModel,\n [ITEM_TYPES.armor]: ArmorDataModel,\n [ITEM_TYPES.sanhei]: SanheiDataModel,\n [ITEM_TYPES.ingredient]: IngredientDataModel,\n }\n\n CONFIG.Actor.documentClass = CDEActor\n CONFIG.Item.documentClass = CDEItem\n CONFIG.ChatMessage.documentClass = CDEMessage\n\n configureRuntime()\n\n foundry.applications.apps.DocumentSheetConfig.unregisterSheet(Actor, \"core\", ActorSheet)\n foundry.applications.apps.DocumentSheetConfig.unregisterSheet(Item, \"core\", ItemSheet)\n\n foundry.applications.apps.DocumentSheetConfig.registerSheet(Actor, SYSTEM_ID, CDECharacterSheet, {\n types: [ACTOR_TYPES.character],\n makeDefault: true,\n label: \"CDE Character Sheet (V2)\",\n })\n foundry.applications.apps.DocumentSheetConfig.registerSheet(Actor, SYSTEM_ID, CDENpcSheet, {\n types: [ACTOR_TYPES.npc],\n makeDefault: true,\n label: \"CDE NPC Sheet (V2)\",\n })\n foundry.applications.apps.DocumentSheetConfig.registerSheet(Actor, SYSTEM_ID, CDETinjiSheet, {\n types: [ACTOR_TYPES.tinji],\n makeDefault: true,\n label: \"CDE Tinji Sheet (V2)\",\n })\n foundry.applications.apps.DocumentSheetConfig.registerSheet(Actor, SYSTEM_ID, CDELoksyuSheet, {\n types: [ACTOR_TYPES.loksyu],\n makeDefault: true,\n label: \"CDE Loksyu Sheet (V2)\",\n })\n\n foundry.applications.apps.DocumentSheetConfig.registerSheet(Item, SYSTEM_ID, CDEItemSheet, {\n types: [ITEM_TYPES.item],\n makeDefault: true,\n label: \"CDE Item Sheet (V2)\",\n })\n foundry.applications.apps.DocumentSheetConfig.registerSheet(Item, SYSTEM_ID, CDEKungfuSheet, {\n types: [ITEM_TYPES.kungfu],\n makeDefault: true,\n label: \"CDE KungFu Sheet (V2)\",\n })\n foundry.applications.apps.DocumentSheetConfig.registerSheet(Item, SYSTEM_ID, CDESpellSheet, {\n types: [ITEM_TYPES.spell],\n makeDefault: true,\n label: \"CDE Spell Sheet (V2)\",\n })\n foundry.applications.apps.DocumentSheetConfig.registerSheet(Item, SYSTEM_ID, CDESupernaturalSheet, {\n types: [ITEM_TYPES.supernatural],\n makeDefault: true,\n label: \"CDE Supernatural Sheet (V2)\",\n })\n foundry.applications.apps.DocumentSheetConfig.registerSheet(Item, SYSTEM_ID, CDEWeaponSheet, {\n types: [ITEM_TYPES.weapon],\n makeDefault: true,\n label: \"CDE Weapon Sheet (V2)\",\n })\n foundry.applications.apps.DocumentSheetConfig.registerSheet(Item, SYSTEM_ID, CDEArmorSheet, {\n types: [ITEM_TYPES.armor],\n makeDefault: true,\n label: \"CDE Armor Sheet (V2)\",\n })\n foundry.applications.apps.DocumentSheetConfig.registerSheet(Item, SYSTEM_ID, CDESanheiSheet, {\n types: [ITEM_TYPES.sanhei],\n makeDefault: true,\n label: \"CDE Sanhei Sheet (V2)\",\n })\n foundry.applications.apps.DocumentSheetConfig.registerSheet(Item, SYSTEM_ID, CDEIngredientSheet, {\n types: [ITEM_TYPES.ingredient],\n makeDefault: true,\n label: \"CDE Ingredient Sheet (V2)\",\n })\n\n await preloadPartials()\n registerHandlebarsHelpers()\n registerDice()\n Hooks.on(\"renderSettings\", (_app, html) => injectCompendiumLink(html))\n\n console.info(`CHRONIQUESDELETRANGE | Initialized`)\n})\n\nHooks.once(\"ready\", async () => {\n if (!game.modules.get(\"lib-wrapper\")?.active && game.user.isGM) {\n ui.notifications.error(\"System fvtt-chroniques-de-l-etrange requires the 'libWrapper' module. Please install and activate it.\")\n }\n await migrateIfNeeded()\n})\n\nfunction injectCompendiumLink(html) {\n const header = html[0]?.querySelector?.(\"h4.divider\")\n if (!header) return\n\n const section = document.createElement(\"section\")\n section.classList.add(\"settings\", \"flexcol\")\n section.innerHTML = `\n \n \n Lien utile \n \n \n \n Compendium pour Les CdE \n \n \n Guide d'installation\n \n Rendez-vous sur le site de l'\u00E9diteur, t\u00E9l\u00E9chargez les PDF contenant les liens vers les compendia, puis ajoutez leurs manifestes dans Foundry.\n \n \n \n `\n section.querySelector(\"button[data-action='open-cde-link']\")?.addEventListener(\"click\", () => {\n window.open(\"https://antre-monde.com/les-chroniques-de-letrengae/\", \"_blank\")\n })\n\n header.parentNode.insertBefore(section, header)\n}\n"], + "mappings": "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", "names": ["RESULT_TEMPLATE", "HandlebarsApplicationMixin"] } diff --git a/images/Capture d'�cran 2024-03-29 081605.png b/images/Capture d'�cran 2024-03-29 081605.png deleted file mode 100644 index 110a218..0000000 Binary files a/images/Capture d'�cran 2024-03-29 081605.png and /dev/null differ diff --git a/images/Capture d'�cran 2024-03-29 081605.webp b/images/Capture d'�cran 2024-03-29 081605.webp new file mode 100644 index 0000000..713428d Binary files /dev/null and b/images/Capture d'�cran 2024-03-29 081605.webp differ diff --git a/images/aide_magie_CdE_1.png b/images/aide_magie_CdE_1.png deleted file mode 100644 index 44c9c8a..0000000 Binary files a/images/aide_magie_CdE_1.png and /dev/null differ diff --git a/images/aide_magie_CdE_1.webp b/images/aide_magie_CdE_1.webp new file mode 100644 index 0000000..2bc2f17 Binary files /dev/null and b/images/aide_magie_CdE_1.webp differ diff --git a/images/aide_magie_CdE_2.png b/images/aide_magie_CdE_2.png deleted file mode 100644 index 7c6739c..0000000 Binary files a/images/aide_magie_CdE_2.png and /dev/null differ diff --git a/images/aide_magie_CdE_2.webp b/images/aide_magie_CdE_2.webp new file mode 100644 index 0000000..6d53ea6 Binary files /dev/null and b/images/aide_magie_CdE_2.webp differ diff --git a/images/aide_magie_CdE_3.png b/images/aide_magie_CdE_3.png deleted file mode 100644 index 50b4fcd..0000000 Binary files a/images/aide_magie_CdE_3.png and /dev/null differ diff --git a/images/aide_magie_CdE_3.webp b/images/aide_magie_CdE_3.webp new file mode 100644 index 0000000..99aa21d Binary files /dev/null and b/images/aide_magie_CdE_3.webp differ diff --git a/images/aspects/BOIS.gif b/images/aspects/BOIS.gif deleted file mode 100644 index 553a30a..0000000 Binary files a/images/aspects/BOIS.gif and /dev/null differ diff --git a/images/aspects/BOIS.webp b/images/aspects/BOIS.webp new file mode 100644 index 0000000..0373aa0 Binary files /dev/null and b/images/aspects/BOIS.webp differ diff --git a/images/aspects/EAU.gif b/images/aspects/EAU.gif deleted file mode 100644 index c7dc703..0000000 Binary files a/images/aspects/EAU.gif and /dev/null differ diff --git a/images/aspects/EAU.webp b/images/aspects/EAU.webp new file mode 100644 index 0000000..ab29b46 Binary files /dev/null and b/images/aspects/EAU.webp differ diff --git a/images/aspects/FEU.gif b/images/aspects/FEU.gif deleted file mode 100644 index 8ff942d..0000000 Binary files a/images/aspects/FEU.gif and /dev/null differ diff --git a/images/aspects/FEU.webp b/images/aspects/FEU.webp new file mode 100644 index 0000000..6643e6b Binary files /dev/null and b/images/aspects/FEU.webp differ diff --git a/images/aspects/METAL.gif b/images/aspects/METAL.gif deleted file mode 100644 index d81db93..0000000 Binary files a/images/aspects/METAL.gif and /dev/null differ diff --git a/images/aspects/METAL.webp b/images/aspects/METAL.webp new file mode 100644 index 0000000..56ccd16 Binary files /dev/null and b/images/aspects/METAL.webp differ diff --git a/images/aspects/TERRE.gif b/images/aspects/TERRE.gif deleted file mode 100644 index 77ed304..0000000 Binary files a/images/aspects/TERRE.gif and /dev/null differ diff --git a/images/aspects/TERRE.webp b/images/aspects/TERRE.webp new file mode 100644 index 0000000..244206e Binary files /dev/null and b/images/aspects/TERRE.webp differ diff --git a/images/background/Le_Monastere_Remi_Castaneda.jpg b/images/background/Le_Monastere_Remi_Castaneda.jpg deleted file mode 100644 index 9e04f52..0000000 Binary files a/images/background/Le_Monastere_Remi_Castaneda.jpg and /dev/null differ diff --git a/images/background/Le_Monastere_Remi_Castaneda.webp b/images/background/Le_Monastere_Remi_Castaneda.webp new file mode 100644 index 0000000..291c78e Binary files /dev/null and b/images/background/Le_Monastere_Remi_Castaneda.webp differ diff --git a/images/background/Le_Monast�re_R�mi_Castan�da.jpg b/images/background/Le_Monast�re_R�mi_Castan�da.jpg deleted file mode 100644 index 9e04f52..0000000 Binary files a/images/background/Le_Monast�re_R�mi_Castan�da.jpg and /dev/null differ diff --git a/images/background/Le_Monast�re_R�mi_Castan�da.webp b/images/background/Le_Monast�re_R�mi_Castan�da.webp new file mode 100644 index 0000000..291c78e Binary files /dev/null and b/images/background/Le_Monast�re_R�mi_Castan�da.webp differ diff --git a/images/background/accueil.jpg b/images/background/accueil.jpg deleted file mode 100644 index 0f76780..0000000 Binary files a/images/background/accueil.jpg and /dev/null differ diff --git a/images/background/accueil.webp b/images/background/accueil.webp new file mode 100644 index 0000000..8598fdf Binary files /dev/null and b/images/background/accueil.webp differ diff --git a/images/background/carte_cde.png b/images/background/carte_cde.png deleted file mode 100644 index 211c585..0000000 Binary files a/images/background/carte_cde.png and /dev/null differ diff --git a/images/background/carte_cde.webp b/images/background/carte_cde.webp new file mode 100644 index 0000000..8628971 Binary files /dev/null and b/images/background/carte_cde.webp differ diff --git a/images/background/carte_hk.jpg b/images/background/carte_hk.jpg deleted file mode 100644 index fccd15b..0000000 Binary files a/images/background/carte_hk.jpg and /dev/null differ diff --git a/images/background/carte_hk.webp b/images/background/carte_hk.webp new file mode 100644 index 0000000..b88d53c Binary files /dev/null and b/images/background/carte_hk.webp differ diff --git a/images/background/ecran.jpg b/images/background/ecran.jpg deleted file mode 100644 index e350b29..0000000 Binary files a/images/background/ecran.jpg and /dev/null differ diff --git a/images/background/ecran.webp b/images/background/ecran.webp new file mode 100644 index 0000000..3abe2cb Binary files /dev/null and b/images/background/ecran.webp differ diff --git a/images/background/fat_si.png b/images/background/fat_si.png deleted file mode 100644 index 95332f2..0000000 Binary files a/images/background/fat_si.png and /dev/null differ diff --git a/images/background/fat_si.webp b/images/background/fat_si.webp new file mode 100644 index 0000000..3e05d53 Binary files /dev/null and b/images/background/fat_si.webp differ diff --git a/images/background/fond_de_page_grand.png b/images/background/fond_de_page_grand.png deleted file mode 100644 index 19ca1bd..0000000 Binary files a/images/background/fond_de_page_grand.png and /dev/null differ diff --git a/images/background/fond_de_page_grand.webp b/images/background/fond_de_page_grand.webp new file mode 100644 index 0000000..104fd10 Binary files /dev/null and b/images/background/fond_de_page_grand.webp differ diff --git a/images/background/loksyu_roue_d_initiative.jpg b/images/background/loksyu_roue_d_initiative.jpg deleted file mode 100644 index 2a89cb8..0000000 Binary files a/images/background/loksyu_roue_d_initiative.jpg and /dev/null differ diff --git a/images/background/loksyu_roue_d_initiative.webp b/images/background/loksyu_roue_d_initiative.webp new file mode 100644 index 0000000..b65f477 Binary files /dev/null and b/images/background/loksyu_roue_d_initiative.webp differ diff --git a/images/background/loksyu_whole.png b/images/background/loksyu_whole.png deleted file mode 100644 index 3ef3719..0000000 Binary files a/images/background/loksyu_whole.png and /dev/null differ diff --git a/images/background/loksyu_whole.webp b/images/background/loksyu_whole.webp new file mode 100644 index 0000000..f1b2d29 Binary files /dev/null and b/images/background/loksyu_whole.webp differ diff --git a/images/background/nghang_whole.png b/images/background/nghang_whole.png deleted file mode 100644 index 99538a4..0000000 Binary files a/images/background/nghang_whole.png and /dev/null differ diff --git a/images/background/nghang_whole.webp b/images/background/nghang_whole.webp new file mode 100644 index 0000000..2b0d5b7 Binary files /dev/null and b/images/background/nghang_whole.webp differ diff --git a/images/background/roue_d_initiative_whole.png b/images/background/roue_d_initiative_whole.png deleted file mode 100644 index bc7a50d..0000000 Binary files a/images/background/roue_d_initiative_whole.png and /dev/null differ diff --git a/images/background/roue_d_initiative_whole.webp b/images/background/roue_d_initiative_whole.webp new file mode 100644 index 0000000..7020ef1 Binary files /dev/null and b/images/background/roue_d_initiative_whole.webp differ diff --git a/images/background/roue_d_initiative_whole_w_numbers.png b/images/background/roue_d_initiative_whole_w_numbers.png deleted file mode 100644 index bc8aa6b..0000000 Binary files a/images/background/roue_d_initiative_whole_w_numbers.png and /dev/null differ diff --git a/images/background/roue_d_initiative_whole_w_numbers.webp b/images/background/roue_d_initiative_whole_w_numbers.webp new file mode 100644 index 0000000..637798e Binary files /dev/null and b/images/background/roue_d_initiative_whole_w_numbers.webp differ diff --git a/images/background/supplement1.png b/images/background/supplement1.png deleted file mode 100644 index b43da47..0000000 Binary files a/images/background/supplement1.png and /dev/null differ diff --git a/images/background/supplement1.webp b/images/background/supplement1.webp new file mode 100644 index 0000000..84ef224 Binary files /dev/null and b/images/background/supplement1.webp differ diff --git a/images/bigsquare.png b/images/bigsquare.png deleted file mode 100644 index 7026d8e..0000000 Binary files a/images/bigsquare.png and /dev/null differ diff --git a/images/bigsquare.webp b/images/bigsquare.webp new file mode 100644 index 0000000..1d653cb Binary files /dev/null and b/images/bigsquare.webp differ diff --git a/images/boutons_initiative.png b/images/boutons_initiative.png deleted file mode 100644 index af921fe..0000000 Binary files a/images/boutons_initiative.png and /dev/null differ diff --git a/images/boutons_initiative.webp b/images/boutons_initiative.webp new file mode 100644 index 0000000..43c0c40 Binary files /dev/null and b/images/boutons_initiative.webp differ diff --git a/images/capacites-surnaturelles/ki-rin.png b/images/capacites-surnaturelles/ki-rin.png deleted file mode 100644 index 79d294d..0000000 Binary files a/images/capacites-surnaturelles/ki-rin.png and /dev/null differ diff --git a/images/capacites-surnaturelles/ki-rin.webp b/images/capacites-surnaturelles/ki-rin.webp new file mode 100644 index 0000000..a54cea9 Binary files /dev/null and b/images/capacites-surnaturelles/ki-rin.webp differ diff --git a/images/cde_bois.png b/images/cde_bois.png deleted file mode 100644 index 03cde3f..0000000 Binary files a/images/cde_bois.png and /dev/null differ diff --git a/images/cde_bois.webp b/images/cde_bois.webp new file mode 100644 index 0000000..4c00859 Binary files /dev/null and b/images/cde_bois.webp differ diff --git a/images/cde_eau.png b/images/cde_eau.png deleted file mode 100644 index 27a77d6..0000000 Binary files a/images/cde_eau.png and /dev/null differ diff --git a/images/cde_eau.webp b/images/cde_eau.webp new file mode 100644 index 0000000..e77b68e Binary files /dev/null and b/images/cde_eau.webp differ diff --git a/images/cde_feu.png b/images/cde_feu.png deleted file mode 100644 index 94f6b61..0000000 Binary files a/images/cde_feu.png and /dev/null differ diff --git a/images/cde_feu.webp b/images/cde_feu.webp new file mode 100644 index 0000000..a31e71b Binary files /dev/null and b/images/cde_feu.webp differ diff --git a/images/cde_fond_transp.png b/images/cde_fond_transp.png deleted file mode 100644 index 85e74a2..0000000 Binary files a/images/cde_fond_transp.png and /dev/null differ diff --git a/images/cde_fond_transp.webp b/images/cde_fond_transp.webp new file mode 100644 index 0000000..6c3c63f Binary files /dev/null and b/images/cde_fond_transp.webp differ diff --git a/images/cde_metal.png b/images/cde_metal.png deleted file mode 100644 index 94e906f..0000000 Binary files a/images/cde_metal.png and /dev/null differ diff --git a/images/cde_metal.webp b/images/cde_metal.webp new file mode 100644 index 0000000..577801e Binary files /dev/null and b/images/cde_metal.webp differ diff --git a/images/cde_terre.png b/images/cde_terre.png deleted file mode 100644 index 9d64152..0000000 Binary files a/images/cde_terre.png and /dev/null differ diff --git a/images/cde_terre.webp b/images/cde_terre.webp new file mode 100644 index 0000000..5312bed Binary files /dev/null and b/images/cde_terre.webp differ diff --git a/images/cde_yang.png b/images/cde_yang.png deleted file mode 100644 index 9ce30cf..0000000 Binary files a/images/cde_yang.png and /dev/null differ diff --git a/images/cde_yang.webp b/images/cde_yang.webp new file mode 100644 index 0000000..fdda88c Binary files /dev/null and b/images/cde_yang.webp differ diff --git a/images/cde_yin.png b/images/cde_yin.png deleted file mode 100644 index dba473f..0000000 Binary files a/images/cde_yin.png and /dev/null differ diff --git a/images/cde_yin.webp b/images/cde_yin.webp new file mode 100644 index 0000000..88a27e6 Binary files /dev/null and b/images/cde_yin.webp differ diff --git a/images/cercle.png b/images/cercle.png deleted file mode 100644 index 53028af..0000000 Binary files a/images/cercle.png and /dev/null differ diff --git a/images/cercle.webp b/images/cercle.webp new file mode 100644 index 0000000..4725538 Binary files /dev/null and b/images/cercle.webp differ diff --git a/images/d10-0.png b/images/d10-0.png deleted file mode 100644 index 1aa6f1b..0000000 Binary files a/images/d10-0.png and /dev/null differ diff --git a/images/d10-0.webp b/images/d10-0.webp new file mode 100644 index 0000000..9f2d5b3 Binary files /dev/null and b/images/d10-0.webp differ diff --git a/images/d10-1.png b/images/d10-1.png deleted file mode 100644 index 7939213..0000000 Binary files a/images/d10-1.png and /dev/null differ diff --git a/images/d10-1.webp b/images/d10-1.webp new file mode 100644 index 0000000..be8f252 Binary files /dev/null and b/images/d10-1.webp differ diff --git a/images/d10-10.png b/images/d10-10.png deleted file mode 100644 index ae88223..0000000 Binary files a/images/d10-10.png and /dev/null differ diff --git a/images/d10-10.webp b/images/d10-10.webp new file mode 100644 index 0000000..5fb7531 Binary files /dev/null and b/images/d10-10.webp differ diff --git a/images/d10-2.png b/images/d10-2.png deleted file mode 100644 index de51107..0000000 Binary files a/images/d10-2.png and /dev/null differ diff --git a/images/d10-2.webp b/images/d10-2.webp new file mode 100644 index 0000000..f8f09b1 Binary files /dev/null and b/images/d10-2.webp differ diff --git a/images/d10-3.png b/images/d10-3.png deleted file mode 100644 index 0374f93..0000000 Binary files a/images/d10-3.png and /dev/null differ diff --git a/images/d10-3.webp b/images/d10-3.webp new file mode 100644 index 0000000..925ec32 Binary files /dev/null and b/images/d10-3.webp differ diff --git a/images/d10-4.png b/images/d10-4.png deleted file mode 100644 index 041ccb0..0000000 Binary files a/images/d10-4.png and /dev/null differ diff --git a/images/d10-4.webp b/images/d10-4.webp new file mode 100644 index 0000000..c65697f Binary files /dev/null and b/images/d10-4.webp differ diff --git a/images/d10-5.png b/images/d10-5.png deleted file mode 100644 index d8657b9..0000000 Binary files a/images/d10-5.png and /dev/null differ diff --git a/images/d10-5.webp b/images/d10-5.webp new file mode 100644 index 0000000..82e580b Binary files /dev/null and b/images/d10-5.webp differ diff --git a/images/d10-6.png b/images/d10-6.png deleted file mode 100644 index a2be96c..0000000 Binary files a/images/d10-6.png and /dev/null differ diff --git a/images/d10-6.webp b/images/d10-6.webp new file mode 100644 index 0000000..6d4ce78 Binary files /dev/null and b/images/d10-6.webp differ diff --git a/images/d10-7.png b/images/d10-7.png deleted file mode 100644 index 0c0a890..0000000 Binary files a/images/d10-7.png and /dev/null differ diff --git a/images/d10-7.webp b/images/d10-7.webp new file mode 100644 index 0000000..2d7d37d Binary files /dev/null and b/images/d10-7.webp differ diff --git a/images/d10-8.png b/images/d10-8.png deleted file mode 100644 index c1d801a..0000000 Binary files a/images/d10-8.png and /dev/null differ diff --git a/images/d10-8.webp b/images/d10-8.webp new file mode 100644 index 0000000..e131c09 Binary files /dev/null and b/images/d10-8.webp differ diff --git a/images/d10-9.png b/images/d10-9.png deleted file mode 100644 index 2ee6e32..0000000 Binary files a/images/d10-9.png and /dev/null differ diff --git a/images/d10-9.webp b/images/d10-9.webp new file mode 100644 index 0000000..d009cff Binary files /dev/null and b/images/d10-9.webp differ diff --git a/images/d10-transparent.png b/images/d10-transparent.png deleted file mode 100644 index 96bf629..0000000 Binary files a/images/d10-transparent.png and /dev/null differ diff --git a/images/d10-transparent.webp b/images/d10-transparent.webp new file mode 100644 index 0000000..bbc28b5 Binary files /dev/null and b/images/d10-transparent.webp differ diff --git a/images/dice-plate/d10-0.png b/images/dice-plate/d10-0.png deleted file mode 100644 index 0aa634a..0000000 Binary files a/images/dice-plate/d10-0.png and /dev/null differ diff --git a/images/dice-plate/d10-0.webp b/images/dice-plate/d10-0.webp new file mode 100644 index 0000000..46067c7 Binary files /dev/null and b/images/dice-plate/d10-0.webp differ diff --git a/images/dice-plate/d10-1.png b/images/dice-plate/d10-1.png deleted file mode 100644 index 8fc947b..0000000 Binary files a/images/dice-plate/d10-1.png and /dev/null differ diff --git a/images/dice-plate/d10-1.webp b/images/dice-plate/d10-1.webp new file mode 100644 index 0000000..0794228 Binary files /dev/null and b/images/dice-plate/d10-1.webp differ diff --git a/images/dice-plate/d10-2.png b/images/dice-plate/d10-2.png deleted file mode 100644 index 147161a..0000000 Binary files a/images/dice-plate/d10-2.png and /dev/null differ diff --git a/images/dice-plate/d10-2.webp b/images/dice-plate/d10-2.webp new file mode 100644 index 0000000..4fc5672 Binary files /dev/null and b/images/dice-plate/d10-2.webp differ diff --git a/images/dice-plate/d10-3.png b/images/dice-plate/d10-3.png deleted file mode 100644 index e6c800f..0000000 Binary files a/images/dice-plate/d10-3.png and /dev/null differ diff --git a/images/dice-plate/d10-3.webp b/images/dice-plate/d10-3.webp new file mode 100644 index 0000000..fbd7239 Binary files /dev/null and b/images/dice-plate/d10-3.webp differ diff --git a/images/dice-plate/d10-4.png b/images/dice-plate/d10-4.png deleted file mode 100644 index 3ce5178..0000000 Binary files a/images/dice-plate/d10-4.png and /dev/null differ diff --git a/images/dice-plate/d10-4.webp b/images/dice-plate/d10-4.webp new file mode 100644 index 0000000..a892b57 Binary files /dev/null and b/images/dice-plate/d10-4.webp differ diff --git a/images/dice-plate/d10-5.png b/images/dice-plate/d10-5.png deleted file mode 100644 index 6e3be21..0000000 Binary files a/images/dice-plate/d10-5.png and /dev/null differ diff --git a/images/dice-plate/d10-5.webp b/images/dice-plate/d10-5.webp new file mode 100644 index 0000000..037e2a6 Binary files /dev/null and b/images/dice-plate/d10-5.webp differ diff --git a/images/dice-plate/d10-6.png b/images/dice-plate/d10-6.png deleted file mode 100644 index e0267e1..0000000 Binary files a/images/dice-plate/d10-6.png and /dev/null differ diff --git a/images/dice-plate/d10-6.webp b/images/dice-plate/d10-6.webp new file mode 100644 index 0000000..04dffb9 Binary files /dev/null and b/images/dice-plate/d10-6.webp differ diff --git a/images/dice-plate/d10-7.png b/images/dice-plate/d10-7.png deleted file mode 100644 index 2e57409..0000000 Binary files a/images/dice-plate/d10-7.png and /dev/null differ diff --git a/images/dice-plate/d10-7.webp b/images/dice-plate/d10-7.webp new file mode 100644 index 0000000..0660f76 Binary files /dev/null and b/images/dice-plate/d10-7.webp differ diff --git a/images/dice-plate/d10-8.png b/images/dice-plate/d10-8.png deleted file mode 100644 index 09a13fc..0000000 Binary files a/images/dice-plate/d10-8.png and /dev/null differ diff --git a/images/dice-plate/d10-8.webp b/images/dice-plate/d10-8.webp new file mode 100644 index 0000000..136f167 Binary files /dev/null and b/images/dice-plate/d10-8.webp differ diff --git a/images/dice-plate/d10-9.png b/images/dice-plate/d10-9.png deleted file mode 100644 index 67765de..0000000 Binary files a/images/dice-plate/d10-9.png and /dev/null differ diff --git a/images/dice-plate/d10-9.webp b/images/dice-plate/d10-9.webp new file mode 100644 index 0000000..618353b Binary files /dev/null and b/images/dice-plate/d10-9.webp differ diff --git a/images/fat_si/billy.png b/images/fat_si/billy.png deleted file mode 100644 index 847b693..0000000 Binary files a/images/fat_si/billy.png and /dev/null differ diff --git a/images/fat_si/billy.webp b/images/fat_si/billy.webp new file mode 100644 index 0000000..38c1d81 Binary files /dev/null and b/images/fat_si/billy.webp differ diff --git a/images/fat_si/brenda.png b/images/fat_si/brenda.png deleted file mode 100644 index 83892b3..0000000 Binary files a/images/fat_si/brenda.png and /dev/null differ diff --git a/images/fat_si/brenda.webp b/images/fat_si/brenda.webp new file mode 100644 index 0000000..d272a80 Binary files /dev/null and b/images/fat_si/brenda.webp differ diff --git a/images/fat_si/danny.png b/images/fat_si/danny.png deleted file mode 100644 index 3147a51..0000000 Binary files a/images/fat_si/danny.png and /dev/null differ diff --git a/images/fat_si/danny.webp b/images/fat_si/danny.webp new file mode 100644 index 0000000..7d166a0 Binary files /dev/null and b/images/fat_si/danny.webp differ diff --git a/images/fat_si/emerson.png b/images/fat_si/emerson.png deleted file mode 100644 index 6f55a40..0000000 Binary files a/images/fat_si/emerson.png and /dev/null differ diff --git a/images/fat_si/emerson.webp b/images/fat_si/emerson.webp new file mode 100644 index 0000000..15eb36a Binary files /dev/null and b/images/fat_si/emerson.webp differ diff --git a/images/fat_si/freddie.png b/images/fat_si/freddie.png deleted file mode 100644 index 308398d..0000000 Binary files a/images/fat_si/freddie.png and /dev/null differ diff --git a/images/fat_si/freddie.webp b/images/fat_si/freddie.webp new file mode 100644 index 0000000..c47f8ac Binary files /dev/null and b/images/fat_si/freddie.webp differ diff --git a/images/fat_si/lily.png b/images/fat_si/lily.png deleted file mode 100644 index 7fa548e..0000000 Binary files a/images/fat_si/lily.png and /dev/null differ diff --git a/images/fat_si/lily.webp b/images/fat_si/lily.webp new file mode 100644 index 0000000..8888acd Binary files /dev/null and b/images/fat_si/lily.webp differ diff --git a/images/fat_si/maggie.png b/images/fat_si/maggie.png deleted file mode 100644 index 43386d8..0000000 Binary files a/images/fat_si/maggie.png and /dev/null differ diff --git a/images/fat_si/maggie.webp b/images/fat_si/maggie.webp new file mode 100644 index 0000000..c73eeed Binary files /dev/null and b/images/fat_si/maggie.webp differ diff --git a/images/fat_si/mallory.png b/images/fat_si/mallory.png deleted file mode 100644 index 6d48db3..0000000 Binary files a/images/fat_si/mallory.png and /dev/null differ diff --git a/images/fat_si/mallory.webp b/images/fat_si/mallory.webp new file mode 100644 index 0000000..6a2a41e Binary files /dev/null and b/images/fat_si/mallory.webp differ diff --git a/images/fat_si/penny.png b/images/fat_si/penny.png deleted file mode 100644 index a135ee9..0000000 Binary files a/images/fat_si/penny.png and /dev/null differ diff --git a/images/fat_si/penny.webp b/images/fat_si/penny.webp new file mode 100644 index 0000000..9eb6252 Binary files /dev/null and b/images/fat_si/penny.webp differ diff --git a/images/fat_si/sam.png b/images/fat_si/sam.png deleted file mode 100644 index 0118963..0000000 Binary files a/images/fat_si/sam.png and /dev/null differ diff --git a/images/fat_si/sam.webp b/images/fat_si/sam.webp new file mode 100644 index 0000000..6f1f902 Binary files /dev/null and b/images/fat_si/sam.webp differ diff --git a/images/fond_de_page.png b/images/fond_de_page.png deleted file mode 100644 index 3a78e3e..0000000 Binary files a/images/fond_de_page.png and /dev/null differ diff --git a/images/fond_de_page.webp b/images/fond_de_page.webp new file mode 100644 index 0000000..1f0588a Binary files /dev/null and b/images/fond_de_page.webp differ diff --git a/images/installe_compendium.png b/images/installe_compendium.png deleted file mode 100644 index 60b3942..0000000 Binary files a/images/installe_compendium.png and /dev/null differ diff --git a/images/installe_compendium.webp b/images/installe_compendium.webp new file mode 100644 index 0000000..4c2849b Binary files /dev/null and b/images/installe_compendium.webp differ diff --git a/images/jetons/aides_de_jeu/jeton_zeongkei_scenario/Jeton_Zeongkei_Scenario.png b/images/jetons/aides_de_jeu/jeton_zeongkei_scenario/Jeton_Zeongkei_Scenario.png deleted file mode 100644 index 5b7602a..0000000 Binary files a/images/jetons/aides_de_jeu/jeton_zeongkei_scenario/Jeton_Zeongkei_Scenario.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jeton_zeongkei_scenario/Jeton_Zeongkei_Scenario.webp b/images/jetons/aides_de_jeu/jeton_zeongkei_scenario/Jeton_Zeongkei_Scenario.webp new file mode 100644 index 0000000..6f9bbea Binary files /dev/null and b/images/jetons/aides_de_jeu/jeton_zeongkei_scenario/Jeton_Zeongkei_Scenario.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_ann_lung_ami_rom1/Ann_Lung_pastel_token.png b/images/jetons/aides_de_jeu/jetons_ann_lung_ami_rom1/Ann_Lung_pastel_token.png deleted file mode 100644 index f652dca..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_ann_lung_ami_rom1/Ann_Lung_pastel_token.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_ann_lung_ami_rom1/Ann_Lung_pastel_token.webp b/images/jetons/aides_de_jeu/jetons_ann_lung_ami_rom1/Ann_Lung_pastel_token.webp new file mode 100644 index 0000000..1895f8f Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_ann_lung_ami_rom1/Ann_Lung_pastel_token.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_ann_lung_ami_rom1/Ann_Lung_token.png b/images/jetons/aides_de_jeu/jetons_ann_lung_ami_rom1/Ann_Lung_token.png deleted file mode 100644 index 6297c33..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_ann_lung_ami_rom1/Ann_Lung_token.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_ann_lung_ami_rom1/Ann_Lung_token.webp b/images/jetons/aides_de_jeu/jetons_ann_lung_ami_rom1/Ann_Lung_token.webp new file mode 100644 index 0000000..56e615e Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_ann_lung_ami_rom1/Ann_Lung_token.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_autres_ia_rom1/autre_d�mon.png b/images/jetons/aides_de_jeu/jetons_autres_ia_rom1/autre_d�mon.png deleted file mode 100644 index cb04ba5..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_autres_ia_rom1/autre_d�mon.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_autres_ia_rom1/autre_d�mon.webp b/images/jetons/aides_de_jeu/jetons_autres_ia_rom1/autre_d�mon.webp new file mode 100644 index 0000000..e101ac0 Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_autres_ia_rom1/autre_d�mon.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_autres_ia_rom1/autre_fant�me.png b/images/jetons/aides_de_jeu/jetons_autres_ia_rom1/autre_fant�me.png deleted file mode 100644 index 3bb3c71..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_autres_ia_rom1/autre_fant�me.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_autres_ia_rom1/autre_fant�me.webp b/images/jetons/aides_de_jeu/jetons_autres_ia_rom1/autre_fant�me.webp new file mode 100644 index 0000000..52b3936 Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_autres_ia_rom1/autre_fant�me.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_divers/traditional-chinese-man.png b/images/jetons/aides_de_jeu/jetons_divers/traditional-chinese-man.png deleted file mode 100644 index 8d0c001..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_divers/traditional-chinese-man.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_divers/traditional-chinese-man.webp b/images/jetons/aides_de_jeu/jetons_divers/traditional-chinese-man.webp new file mode 100644 index 0000000..67b376b Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_divers/traditional-chinese-man.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_divers/traditional-chinese-people.png b/images/jetons/aides_de_jeu/jetons_divers/traditional-chinese-people.png deleted file mode 100644 index 8c09181..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_divers/traditional-chinese-people.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_divers/traditional-chinese-people.webp b/images/jetons/aides_de_jeu/jetons_divers/traditional-chinese-people.webp new file mode 100644 index 0000000..d8098f8 Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_divers/traditional-chinese-people.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_divers/traditional-chinese-woman.png b/images/jetons/aides_de_jeu/jetons_divers/traditional-chinese-woman.png deleted file mode 100644 index 25a21d1..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_divers/traditional-chinese-woman.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_divers/traditional-chinese-woman.webp b/images/jetons/aides_de_jeu/jetons_divers/traditional-chinese-woman.webp new file mode 100644 index 0000000..d02a0d3 Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_divers/traditional-chinese-woman.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_elements_jeu_vtt/D10-0-blanc.png b/images/jetons/aides_de_jeu/jetons_elements_jeu_vtt/D10-0-blanc.png deleted file mode 100644 index 1aa6f1b..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_elements_jeu_vtt/D10-0-blanc.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_elements_jeu_vtt/D10-0-blanc.webp b/images/jetons/aides_de_jeu/jetons_elements_jeu_vtt/D10-0-blanc.webp new file mode 100644 index 0000000..9f2d5b3 Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_elements_jeu_vtt/D10-0-blanc.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_elements_jeu_vtt/d10-1-blanc.png b/images/jetons/aides_de_jeu/jetons_elements_jeu_vtt/d10-1-blanc.png deleted file mode 100644 index 7939213..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_elements_jeu_vtt/d10-1-blanc.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_elements_jeu_vtt/d10-1-blanc.webp b/images/jetons/aides_de_jeu/jetons_elements_jeu_vtt/d10-1-blanc.webp new file mode 100644 index 0000000..be8f252 Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_elements_jeu_vtt/d10-1-blanc.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_elements_jeu_vtt/d10-10-blanc.png b/images/jetons/aides_de_jeu/jetons_elements_jeu_vtt/d10-10-blanc.png deleted file mode 100644 index ae88223..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_elements_jeu_vtt/d10-10-blanc.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_elements_jeu_vtt/d10-10-blanc.webp b/images/jetons/aides_de_jeu/jetons_elements_jeu_vtt/d10-10-blanc.webp new file mode 100644 index 0000000..5fb7531 Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_elements_jeu_vtt/d10-10-blanc.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_elements_jeu_vtt/d10-2-blanc.png b/images/jetons/aides_de_jeu/jetons_elements_jeu_vtt/d10-2-blanc.png deleted file mode 100644 index de51107..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_elements_jeu_vtt/d10-2-blanc.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_elements_jeu_vtt/d10-2-blanc.webp b/images/jetons/aides_de_jeu/jetons_elements_jeu_vtt/d10-2-blanc.webp new file mode 100644 index 0000000..f8f09b1 Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_elements_jeu_vtt/d10-2-blanc.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_elements_jeu_vtt/d10-3-blanc.png b/images/jetons/aides_de_jeu/jetons_elements_jeu_vtt/d10-3-blanc.png deleted file mode 100644 index 0374f93..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_elements_jeu_vtt/d10-3-blanc.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_elements_jeu_vtt/d10-3-blanc.webp b/images/jetons/aides_de_jeu/jetons_elements_jeu_vtt/d10-3-blanc.webp new file mode 100644 index 0000000..925ec32 Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_elements_jeu_vtt/d10-3-blanc.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_elements_jeu_vtt/d10-4-blanc.png b/images/jetons/aides_de_jeu/jetons_elements_jeu_vtt/d10-4-blanc.png deleted file mode 100644 index 041ccb0..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_elements_jeu_vtt/d10-4-blanc.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_elements_jeu_vtt/d10-4-blanc.webp b/images/jetons/aides_de_jeu/jetons_elements_jeu_vtt/d10-4-blanc.webp new file mode 100644 index 0000000..c65697f Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_elements_jeu_vtt/d10-4-blanc.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_elements_jeu_vtt/d10-5-blanc.png b/images/jetons/aides_de_jeu/jetons_elements_jeu_vtt/d10-5-blanc.png deleted file mode 100644 index d8657b9..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_elements_jeu_vtt/d10-5-blanc.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_elements_jeu_vtt/d10-5-blanc.webp b/images/jetons/aides_de_jeu/jetons_elements_jeu_vtt/d10-5-blanc.webp new file mode 100644 index 0000000..82e580b Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_elements_jeu_vtt/d10-5-blanc.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_elements_jeu_vtt/d10-6-blanc.png b/images/jetons/aides_de_jeu/jetons_elements_jeu_vtt/d10-6-blanc.png deleted file mode 100644 index a2be96c..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_elements_jeu_vtt/d10-6-blanc.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_elements_jeu_vtt/d10-6-blanc.webp b/images/jetons/aides_de_jeu/jetons_elements_jeu_vtt/d10-6-blanc.webp new file mode 100644 index 0000000..6d4ce78 Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_elements_jeu_vtt/d10-6-blanc.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_elements_jeu_vtt/d10-7-blanc.png b/images/jetons/aides_de_jeu/jetons_elements_jeu_vtt/d10-7-blanc.png deleted file mode 100644 index 0c0a890..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_elements_jeu_vtt/d10-7-blanc.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_elements_jeu_vtt/d10-7-blanc.webp b/images/jetons/aides_de_jeu/jetons_elements_jeu_vtt/d10-7-blanc.webp new file mode 100644 index 0000000..2d7d37d Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_elements_jeu_vtt/d10-7-blanc.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_elements_jeu_vtt/d10-8-blanc.png b/images/jetons/aides_de_jeu/jetons_elements_jeu_vtt/d10-8-blanc.png deleted file mode 100644 index c1d801a..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_elements_jeu_vtt/d10-8-blanc.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_elements_jeu_vtt/d10-8-blanc.webp b/images/jetons/aides_de_jeu/jetons_elements_jeu_vtt/d10-8-blanc.webp new file mode 100644 index 0000000..e131c09 Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_elements_jeu_vtt/d10-8-blanc.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_elements_jeu_vtt/d10-9-blanc.png b/images/jetons/aides_de_jeu/jetons_elements_jeu_vtt/d10-9-blanc.png deleted file mode 100644 index 2ee6e32..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_elements_jeu_vtt/d10-9-blanc.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_elements_jeu_vtt/d10-9-blanc.webp b/images/jetons/aides_de_jeu/jetons_elements_jeu_vtt/d10-9-blanc.webp new file mode 100644 index 0000000..d009cff Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_elements_jeu_vtt/d10-9-blanc.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_elements_jeu_vtt/tigre_dragon.png b/images/jetons/aides_de_jeu/jetons_elements_jeu_vtt/tigre_dragon.png deleted file mode 100644 index 5b91f42..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_elements_jeu_vtt/tigre_dragon.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_elements_jeu_vtt/tigre_dragon.webp b/images/jetons/aides_de_jeu/jetons_elements_jeu_vtt/tigre_dragon.webp new file mode 100644 index 0000000..3ae9568 Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_elements_jeu_vtt/tigre_dragon.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_elements_jeu_vtt/tigre_dragon_256.png b/images/jetons/aides_de_jeu/jetons_elements_jeu_vtt/tigre_dragon_256.png deleted file mode 100644 index d910351..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_elements_jeu_vtt/tigre_dragon_256.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_elements_jeu_vtt/tigre_dragon_256.webp b/images/jetons/aides_de_jeu/jetons_elements_jeu_vtt/tigre_dragon_256.webp new file mode 100644 index 0000000..4042378 Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_elements_jeu_vtt/tigre_dragon_256.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_habitats/house.png b/images/jetons/aides_de_jeu/jetons_habitats/house.png deleted file mode 100644 index d3221d5..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_habitats/house.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_habitats/house.webp b/images/jetons/aides_de_jeu/jetons_habitats/house.webp new file mode 100644 index 0000000..bca5877 Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_habitats/house.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_mode_et_accessoires/big-diamond-ring.png b/images/jetons/aides_de_jeu/jetons_mode_et_accessoires/big-diamond-ring.png deleted file mode 100644 index f00cd74..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_mode_et_accessoires/big-diamond-ring.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_mode_et_accessoires/big-diamond-ring.webp b/images/jetons/aides_de_jeu/jetons_mode_et_accessoires/big-diamond-ring.webp new file mode 100644 index 0000000..97b6d72 Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_mode_et_accessoires/big-diamond-ring.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_mode_et_accessoires/cigarette.png b/images/jetons/aides_de_jeu/jetons_mode_et_accessoires/cigarette.png deleted file mode 100644 index 2adfade..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_mode_et_accessoires/cigarette.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_mode_et_accessoires/cigarette.webp b/images/jetons/aides_de_jeu/jetons_mode_et_accessoires/cigarette.webp new file mode 100644 index 0000000..486dbe3 Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_mode_et_accessoires/cigarette.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_mode_et_accessoires/delicate-perfume.png b/images/jetons/aides_de_jeu/jetons_mode_et_accessoires/delicate-perfume.png deleted file mode 100644 index a53c9cc..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_mode_et_accessoires/delicate-perfume.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_mode_et_accessoires/delicate-perfume.webp b/images/jetons/aides_de_jeu/jetons_mode_et_accessoires/delicate-perfume.webp new file mode 100644 index 0000000..4032c10 Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_mode_et_accessoires/delicate-perfume.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_mode_et_accessoires/emerald-necklace.png b/images/jetons/aides_de_jeu/jetons_mode_et_accessoires/emerald-necklace.png deleted file mode 100644 index f952835..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_mode_et_accessoires/emerald-necklace.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_mode_et_accessoires/emerald-necklace.webp b/images/jetons/aides_de_jeu/jetons_mode_et_accessoires/emerald-necklace.webp new file mode 100644 index 0000000..bed656b Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_mode_et_accessoires/emerald-necklace.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_mode_et_accessoires/feather.png b/images/jetons/aides_de_jeu/jetons_mode_et_accessoires/feather.png deleted file mode 100644 index 459b71e..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_mode_et_accessoires/feather.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_mode_et_accessoires/feather.webp b/images/jetons/aides_de_jeu/jetons_mode_et_accessoires/feather.webp new file mode 100644 index 0000000..5c63644 Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_mode_et_accessoires/feather.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_mode_et_accessoires/knapsack.png b/images/jetons/aides_de_jeu/jetons_mode_et_accessoires/knapsack.png deleted file mode 100644 index 00f75fe..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_mode_et_accessoires/knapsack.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_mode_et_accessoires/knapsack.webp b/images/jetons/aides_de_jeu/jetons_mode_et_accessoires/knapsack.webp new file mode 100644 index 0000000..f6f6a7d Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_mode_et_accessoires/knapsack.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_mode_et_accessoires/lighter.png b/images/jetons/aides_de_jeu/jetons_mode_et_accessoires/lighter.png deleted file mode 100644 index 0fbc6bb..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_mode_et_accessoires/lighter.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_mode_et_accessoires/lighter.webp b/images/jetons/aides_de_jeu/jetons_mode_et_accessoires/lighter.webp new file mode 100644 index 0000000..1712015 Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_mode_et_accessoires/lighter.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_mode_et_accessoires/polo-shirt.png b/images/jetons/aides_de_jeu/jetons_mode_et_accessoires/polo-shirt.png deleted file mode 100644 index 36e3097..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_mode_et_accessoires/polo-shirt.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_mode_et_accessoires/polo-shirt.webp b/images/jetons/aides_de_jeu/jetons_mode_et_accessoires/polo-shirt.webp new file mode 100644 index 0000000..bc4c4aa Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_mode_et_accessoires/polo-shirt.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_mode_et_accessoires/ringing-bell.png b/images/jetons/aides_de_jeu/jetons_mode_et_accessoires/ringing-bell.png deleted file mode 100644 index 738bcb4..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_mode_et_accessoires/ringing-bell.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_mode_et_accessoires/ringing-bell.webp b/images/jetons/aides_de_jeu/jetons_mode_et_accessoires/ringing-bell.webp new file mode 100644 index 0000000..8829188 Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_mode_et_accessoires/ringing-bell.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_mode_et_accessoires/smoking-pipe.png b/images/jetons/aides_de_jeu/jetons_mode_et_accessoires/smoking-pipe.png deleted file mode 100644 index c9ba681..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_mode_et_accessoires/smoking-pipe.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_mode_et_accessoires/smoking-pipe.webp b/images/jetons/aides_de_jeu/jetons_mode_et_accessoires/smoking-pipe.webp new file mode 100644 index 0000000..c02a5a0 Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_mode_et_accessoires/smoking-pipe.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_mode_et_accessoires/spectacles.png b/images/jetons/aides_de_jeu/jetons_mode_et_accessoires/spectacles.png deleted file mode 100644 index 29b8d02..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_mode_et_accessoires/spectacles.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_mode_et_accessoires/spectacles.webp b/images/jetons/aides_de_jeu/jetons_mode_et_accessoires/spectacles.webp new file mode 100644 index 0000000..08572c3 Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_mode_et_accessoires/spectacles.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/Assistant - noire.png b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/Assistant - noire.png deleted file mode 100644 index b211795..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/Assistant - noire.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/Assistant - noire.webp b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/Assistant - noire.webp new file mode 100644 index 0000000..f8629f2 Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/Assistant - noire.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/Assistant - rouge.png b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/Assistant - rouge.png deleted file mode 100644 index afa4f22..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/Assistant - rouge.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/Assistant - rouge.webp b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/Assistant - rouge.webp new file mode 100644 index 0000000..32addea Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/Assistant - rouge.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/El�phant - noire.png b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/El�phant - noire.png deleted file mode 100644 index 15d2621..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/El�phant - noire.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/El�phant - noire.webp b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/El�phant - noire.webp new file mode 100644 index 0000000..e6384d6 Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/El�phant - noire.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/El�phant - rouge.png b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/El�phant - rouge.png deleted file mode 100644 index df29332..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/El�phant - rouge.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/El�phant - rouge.webp b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/El�phant - rouge.webp new file mode 100644 index 0000000..3daad96 Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/El�phant - rouge.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/G�n�ral - noire.png b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/G�n�ral - noire.png deleted file mode 100644 index dc789df..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/G�n�ral - noire.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/G�n�ral - noire.webp b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/G�n�ral - noire.webp new file mode 100644 index 0000000..f5e7b36 Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/G�n�ral - noire.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/G�n�ral - rouge.png b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/G�n�ral - rouge.png deleted file mode 100644 index 94fddba..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/G�n�ral - rouge.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/G�n�ral - rouge.webp b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/G�n�ral - rouge.webp new file mode 100644 index 0000000..b641600 Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/G�n�ral - rouge.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/canon1 - noire.png b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/canon1 - noire.png deleted file mode 100644 index 35e8e3a..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/canon1 - noire.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/canon1 - noire.webp b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/canon1 - noire.webp new file mode 100644 index 0000000..62d5adc Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/canon1 - noire.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/canon1 - rouge.png b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/canon1 - rouge.png deleted file mode 100644 index b9c589a..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/canon1 - rouge.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/canon1 - rouge.webp b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/canon1 - rouge.webp new file mode 100644 index 0000000..8d50f89 Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/canon1 - rouge.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/canon2 - noire.png b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/canon2 - noire.png deleted file mode 100644 index 35e8e3a..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/canon2 - noire.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/canon2 - noire.webp b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/canon2 - noire.webp new file mode 100644 index 0000000..62d5adc Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/canon2 - noire.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/canon2 - rouge.png b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/canon2 - rouge.png deleted file mode 100644 index b9c589a..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/canon2 - rouge.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/canon2 - rouge.webp b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/canon2 - rouge.webp new file mode 100644 index 0000000..8d50f89 Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/canon2 - rouge.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/chariot1 - noire.png b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/chariot1 - noire.png deleted file mode 100644 index 037ee4c..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/chariot1 - noire.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/chariot1 - noire.webp b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/chariot1 - noire.webp new file mode 100644 index 0000000..27a6041 Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/chariot1 - noire.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/chariot1 -rouge.png b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/chariot1 -rouge.png deleted file mode 100644 index aeaa26c..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/chariot1 -rouge.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/chariot1 -rouge.webp b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/chariot1 -rouge.webp new file mode 100644 index 0000000..e3be589 Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/chariot1 -rouge.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/chariot2 - noire.png b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/chariot2 - noire.png deleted file mode 100644 index 037ee4c..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/chariot2 - noire.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/chariot2 - noire.webp b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/chariot2 - noire.webp new file mode 100644 index 0000000..27a6041 Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/chariot2 - noire.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/chariot2 -rouge.png b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/chariot2 -rouge.png deleted file mode 100644 index aeaa26c..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/chariot2 -rouge.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/chariot2 -rouge.webp b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/chariot2 -rouge.webp new file mode 100644 index 0000000..e3be589 Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/chariot2 -rouge.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/cheval1 - noire.png b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/cheval1 - noire.png deleted file mode 100644 index feca53e..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/cheval1 - noire.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/cheval1 - noire.webp b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/cheval1 - noire.webp new file mode 100644 index 0000000..52b61e3 Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/cheval1 - noire.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/cheval1 - rouge.png b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/cheval1 - rouge.png deleted file mode 100644 index 89808be..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/cheval1 - rouge.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/cheval1 - rouge.webp b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/cheval1 - rouge.webp new file mode 100644 index 0000000..4840974 Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/cheval1 - rouge.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/cheval2 - noire.png b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/cheval2 - noire.png deleted file mode 100644 index feca53e..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/cheval2 - noire.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/cheval2 - noire.webp b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/cheval2 - noire.webp new file mode 100644 index 0000000..52b61e3 Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/cheval2 - noire.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/cheval2 - rouge.png b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/cheval2 - rouge.png deleted file mode 100644 index 89808be..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/cheval2 - rouge.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/cheval2 - rouge.webp b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/cheval2 - rouge.webp new file mode 100644 index 0000000..4840974 Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/cheval2 - rouge.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/pion1 - noire.png b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/pion1 - noire.png deleted file mode 100644 index 404834a..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/pion1 - noire.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/pion1 - noire.webp b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/pion1 - noire.webp new file mode 100644 index 0000000..744211c Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/pion1 - noire.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/pion1 - rouge.png b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/pion1 - rouge.png deleted file mode 100644 index ed15dd5..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/pion1 - rouge.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/pion1 - rouge.webp b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/pion1 - rouge.webp new file mode 100644 index 0000000..84fa3f9 Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/pion1 - rouge.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/pion2 - noire.png b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/pion2 - noire.png deleted file mode 100644 index 404834a..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/pion2 - noire.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/pion2 - noire.webp b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/pion2 - noire.webp new file mode 100644 index 0000000..744211c Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/pion2 - noire.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/pion2 - rouge.png b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/pion2 - rouge.png deleted file mode 100644 index ed15dd5..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/pion2 - rouge.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/pion2 - rouge.webp b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/pion2 - rouge.webp new file mode 100644 index 0000000..84fa3f9 Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/pion2 - rouge.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/pion3 - noire.png b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/pion3 - noire.png deleted file mode 100644 index 404834a..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/pion3 - noire.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/pion3 - noire.webp b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/pion3 - noire.webp new file mode 100644 index 0000000..744211c Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/pion3 - noire.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/pion3 - rouge.png b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/pion3 - rouge.png deleted file mode 100644 index ed15dd5..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/pion3 - rouge.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/pion3 - rouge.webp b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/pion3 - rouge.webp new file mode 100644 index 0000000..84fa3f9 Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/pion3 - rouge.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/pion4 - noire.png b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/pion4 - noire.png deleted file mode 100644 index 404834a..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/pion4 - noire.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/pion4 - noire.webp b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/pion4 - noire.webp new file mode 100644 index 0000000..744211c Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/pion4 - noire.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/pion4 - rouge.png b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/pion4 - rouge.png deleted file mode 100644 index ed15dd5..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/pion4 - rouge.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/pion4 - rouge.webp b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/pion4 - rouge.webp new file mode 100644 index 0000000..84fa3f9 Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/pion4 - rouge.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/pion5 - noire.png b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/pion5 - noire.png deleted file mode 100644 index 404834a..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/pion5 - noire.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/pion5 - noire.webp b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/pion5 - noire.webp new file mode 100644 index 0000000..744211c Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/pion5 - noire.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/pion5 - rouge.png b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/pion5 - rouge.png deleted file mode 100644 index ed15dd5..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/pion5 - rouge.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/pion5 - rouge.webp b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/pion5 - rouge.webp new file mode 100644 index 0000000..84fa3f9 Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_pieces_zeongkei/pion5 - rouge.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_sapeque/OneDollarHKDCoin.png b/images/jetons/aides_de_jeu/jetons_sapeque/OneDollarHKDCoin.png deleted file mode 100644 index 62d51ab..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_sapeque/OneDollarHKDCoin.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_sapeque/OneDollarHKDCoin.webp b/images/jetons/aides_de_jeu/jetons_sapeque/OneDollarHKDCoin.webp new file mode 100644 index 0000000..a773517 Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_sapeque/OneDollarHKDCoin.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_sapeque/SAPEQUE.png b/images/jetons/aides_de_jeu/jetons_sapeque/SAPEQUE.png deleted file mode 100644 index 0cf822e..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_sapeque/SAPEQUE.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_sapeque/SAPEQUE.webp b/images/jetons/aides_de_jeu/jetons_sapeque/SAPEQUE.webp new file mode 100644 index 0000000..34aa178 Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_sapeque/SAPEQUE.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_sapeque/TwoDollarHKDCoin.png b/images/jetons/aides_de_jeu/jetons_sapeque/TwoDollarHKDCoin.png deleted file mode 100644 index c3edbaf..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_sapeque/TwoDollarHKDCoin.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_sapeque/TwoDollarHKDCoin.webp b/images/jetons/aides_de_jeu/jetons_sapeque/TwoDollarHKDCoin.webp new file mode 100644 index 0000000..0c7046a Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_sapeque/TwoDollarHKDCoin.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_technologie/anvil-impact.png b/images/jetons/aides_de_jeu/jetons_technologie/anvil-impact.png deleted file mode 100644 index 2f94919..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_technologie/anvil-impact.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_technologie/anvil-impact.webp b/images/jetons/aides_de_jeu/jetons_technologie/anvil-impact.webp new file mode 100644 index 0000000..6f946b3 Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_technologie/anvil-impact.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_technologie/archer.png b/images/jetons/aides_de_jeu/jetons_technologie/archer.png deleted file mode 100644 index 899769e..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_technologie/archer.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_technologie/archer.webp b/images/jetons/aides_de_jeu/jetons_technologie/archer.webp new file mode 100644 index 0000000..20a89f9 Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_technologie/archer.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_technologie/auto-repair.png b/images/jetons/aides_de_jeu/jetons_technologie/auto-repair.png deleted file mode 100644 index e0c173b..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_technologie/auto-repair.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_technologie/auto-repair.webp b/images/jetons/aides_de_jeu/jetons_technologie/auto-repair.webp new file mode 100644 index 0000000..8d37ff3 Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_technologie/auto-repair.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_technologie/electric-torch.png b/images/jetons/aides_de_jeu/jetons_technologie/electric-torch.png deleted file mode 100644 index b77df90..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_technologie/electric-torch.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_technologie/electric-torch.webp b/images/jetons/aides_de_jeu/jetons_technologie/electric-torch.webp new file mode 100644 index 0000000..8f244e9 Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_technologie/electric-torch.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_technologie/laptop.png b/images/jetons/aides_de_jeu/jetons_technologie/laptop.png deleted file mode 100644 index d273b7a..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_technologie/laptop.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_technologie/laptop.webp b/images/jetons/aides_de_jeu/jetons_technologie/laptop.webp new file mode 100644 index 0000000..34ca523 Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_technologie/laptop.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_technologie/nails.png b/images/jetons/aides_de_jeu/jetons_technologie/nails.png deleted file mode 100644 index 0ffb7de..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_technologie/nails.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_technologie/nails.webp b/images/jetons/aides_de_jeu/jetons_technologie/nails.webp new file mode 100644 index 0000000..7ebbf78 Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_technologie/nails.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_technologie/pc.png b/images/jetons/aides_de_jeu/jetons_technologie/pc.png deleted file mode 100644 index 3a3916c..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_technologie/pc.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_technologie/pc.webp b/images/jetons/aides_de_jeu/jetons_technologie/pc.webp new file mode 100644 index 0000000..531a433 Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_technologie/pc.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_technologie/pestle-mortar.png b/images/jetons/aides_de_jeu/jetons_technologie/pestle-mortar.png deleted file mode 100644 index 3a0fec0..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_technologie/pestle-mortar.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_technologie/pestle-mortar.webp b/images/jetons/aides_de_jeu/jetons_technologie/pestle-mortar.webp new file mode 100644 index 0000000..b531a1c Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_technologie/pestle-mortar.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_technologie/pistol-gun.png b/images/jetons/aides_de_jeu/jetons_technologie/pistol-gun.png deleted file mode 100644 index 99d8476..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_technologie/pistol-gun.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_technologie/pistol-gun.webp b/images/jetons/aides_de_jeu/jetons_technologie/pistol-gun.webp new file mode 100644 index 0000000..4be18cd Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_technologie/pistol-gun.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_technologie/scroll-quill.png b/images/jetons/aides_de_jeu/jetons_technologie/scroll-quill.png deleted file mode 100644 index a3e65c1..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_technologie/scroll-quill.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_technologie/scroll-quill.webp b/images/jetons/aides_de_jeu/jetons_technologie/scroll-quill.webp new file mode 100644 index 0000000..c8f8382 Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_technologie/scroll-quill.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_technologie/smartphone.png b/images/jetons/aides_de_jeu/jetons_technologie/smartphone.png deleted file mode 100644 index d9f3260..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_technologie/smartphone.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_technologie/smartphone.webp b/images/jetons/aides_de_jeu/jetons_technologie/smartphone.webp new file mode 100644 index 0000000..469346b Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_technologie/smartphone.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_technologie/standing-potion.png b/images/jetons/aides_de_jeu/jetons_technologie/standing-potion.png deleted file mode 100644 index 0b0f973..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_technologie/standing-potion.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_technologie/standing-potion.webp b/images/jetons/aides_de_jeu/jetons_technologie/standing-potion.webp new file mode 100644 index 0000000..421d3b2 Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_technologie/standing-potion.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_technologie/voodoo-doll.png b/images/jetons/aides_de_jeu/jetons_technologie/voodoo-doll.png deleted file mode 100644 index b75143c..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_technologie/voodoo-doll.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_technologie/voodoo-doll.webp b/images/jetons/aides_de_jeu/jetons_technologie/voodoo-doll.webp new file mode 100644 index 0000000..452550c Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_technologie/voodoo-doll.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_transports_hong_kong/auto.png b/images/jetons/aides_de_jeu/jetons_transports_hong_kong/auto.png deleted file mode 100644 index 22f5401..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_transports_hong_kong/auto.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_transports_hong_kong/auto.webp b/images/jetons/aides_de_jeu/jetons_transports_hong_kong/auto.webp new file mode 100644 index 0000000..55689e3 Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_transports_hong_kong/auto.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_transports_hong_kong/avion-de-ligne.png b/images/jetons/aides_de_jeu/jetons_transports_hong_kong/avion-de-ligne.png deleted file mode 100644 index c8617a3..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_transports_hong_kong/avion-de-ligne.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_transports_hong_kong/avion-de-ligne.webp b/images/jetons/aides_de_jeu/jetons_transports_hong_kong/avion-de-ligne.webp new file mode 100644 index 0000000..253d275 Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_transports_hong_kong/avion-de-ligne.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_transports_hong_kong/avion-helices.png b/images/jetons/aides_de_jeu/jetons_transports_hong_kong/avion-helices.png deleted file mode 100644 index 656eeeb..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_transports_hong_kong/avion-helices.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_transports_hong_kong/avion-helices.webp b/images/jetons/aides_de_jeu/jetons_transports_hong_kong/avion-helices.webp new file mode 100644 index 0000000..45bf0a4 Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_transports_hong_kong/avion-helices.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_transports_hong_kong/barque.png b/images/jetons/aides_de_jeu/jetons_transports_hong_kong/barque.png deleted file mode 100644 index 1bf9dc5..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_transports_hong_kong/barque.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_transports_hong_kong/barque.webp b/images/jetons/aides_de_jeu/jetons_transports_hong_kong/barque.webp new file mode 100644 index 0000000..b17f589 Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_transports_hong_kong/barque.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_transports_hong_kong/bateau-peche.png b/images/jetons/aides_de_jeu/jetons_transports_hong_kong/bateau-peche.png deleted file mode 100644 index 51d7f8a..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_transports_hong_kong/bateau-peche.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_transports_hong_kong/bateau-peche.webp b/images/jetons/aides_de_jeu/jetons_transports_hong_kong/bateau-peche.webp new file mode 100644 index 0000000..7473640 Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_transports_hong_kong/bateau-peche.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_transports_hong_kong/bus.png b/images/jetons/aides_de_jeu/jetons_transports_hong_kong/bus.png deleted file mode 100644 index d3545de..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_transports_hong_kong/bus.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_transports_hong_kong/bus.webp b/images/jetons/aides_de_jeu/jetons_transports_hong_kong/bus.webp new file mode 100644 index 0000000..a0ce9c0 Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_transports_hong_kong/bus.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_transports_hong_kong/ferry-boat.png b/images/jetons/aides_de_jeu/jetons_transports_hong_kong/ferry-boat.png deleted file mode 100644 index b9697a3..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_transports_hong_kong/ferry-boat.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_transports_hong_kong/ferry-boat.webp b/images/jetons/aides_de_jeu/jetons_transports_hong_kong/ferry-boat.webp new file mode 100644 index 0000000..d433214 Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_transports_hong_kong/ferry-boat.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_transports_hong_kong/funiculaire.png b/images/jetons/aides_de_jeu/jetons_transports_hong_kong/funiculaire.png deleted file mode 100644 index 15bea86..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_transports_hong_kong/funiculaire.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_transports_hong_kong/funiculaire.webp b/images/jetons/aides_de_jeu/jetons_transports_hong_kong/funiculaire.webp new file mode 100644 index 0000000..af68c9e Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_transports_hong_kong/funiculaire.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_transports_hong_kong/helicoptere.png b/images/jetons/aides_de_jeu/jetons_transports_hong_kong/helicoptere.png deleted file mode 100644 index bde183a..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_transports_hong_kong/helicoptere.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_transports_hong_kong/helicoptere.webp b/images/jetons/aides_de_jeu/jetons_transports_hong_kong/helicoptere.webp new file mode 100644 index 0000000..2d4b811 Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_transports_hong_kong/helicoptere.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_transports_hong_kong/jet.png b/images/jetons/aides_de_jeu/jetons_transports_hong_kong/jet.png deleted file mode 100644 index c050260..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_transports_hong_kong/jet.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_transports_hong_kong/jet.webp b/images/jetons/aides_de_jeu/jetons_transports_hong_kong/jet.webp new file mode 100644 index 0000000..d6829e6 Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_transports_hong_kong/jet.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_transports_hong_kong/jonque.png b/images/jetons/aides_de_jeu/jetons_transports_hong_kong/jonque.png deleted file mode 100644 index a7755ae..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_transports_hong_kong/jonque.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_transports_hong_kong/jonque.webp b/images/jetons/aides_de_jeu/jetons_transports_hong_kong/jonque.webp new file mode 100644 index 0000000..63391fc Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_transports_hong_kong/jonque.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_transports_hong_kong/moto.png b/images/jetons/aides_de_jeu/jetons_transports_hong_kong/moto.png deleted file mode 100644 index 3e5752b..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_transports_hong_kong/moto.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_transports_hong_kong/moto.webp b/images/jetons/aides_de_jeu/jetons_transports_hong_kong/moto.webp new file mode 100644 index 0000000..9fd1b4b Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_transports_hong_kong/moto.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_transports_hong_kong/moto2.png b/images/jetons/aides_de_jeu/jetons_transports_hong_kong/moto2.png deleted file mode 100644 index c746016..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_transports_hong_kong/moto2.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_transports_hong_kong/moto2.webp b/images/jetons/aides_de_jeu/jetons_transports_hong_kong/moto2.webp new file mode 100644 index 0000000..cd6c71d Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_transports_hong_kong/moto2.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_transports_hong_kong/paquebot.png b/images/jetons/aides_de_jeu/jetons_transports_hong_kong/paquebot.png deleted file mode 100644 index 6af7192..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_transports_hong_kong/paquebot.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_transports_hong_kong/paquebot.webp b/images/jetons/aides_de_jeu/jetons_transports_hong_kong/paquebot.webp new file mode 100644 index 0000000..5a67d54 Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_transports_hong_kong/paquebot.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_transports_hong_kong/patins.png b/images/jetons/aides_de_jeu/jetons_transports_hong_kong/patins.png deleted file mode 100644 index b7f37cc..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_transports_hong_kong/patins.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_transports_hong_kong/patins.webp b/images/jetons/aides_de_jeu/jetons_transports_hong_kong/patins.webp new file mode 100644 index 0000000..f1b4fe5 Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_transports_hong_kong/patins.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_transports_hong_kong/pieton.png b/images/jetons/aides_de_jeu/jetons_transports_hong_kong/pieton.png deleted file mode 100644 index 9e9301e..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_transports_hong_kong/pieton.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_transports_hong_kong/pieton.webp b/images/jetons/aides_de_jeu/jetons_transports_hong_kong/pieton.webp new file mode 100644 index 0000000..d5ed58e Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_transports_hong_kong/pieton.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_transports_hong_kong/poussepousse.png b/images/jetons/aides_de_jeu/jetons_transports_hong_kong/poussepousse.png deleted file mode 100644 index ab4ee12..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_transports_hong_kong/poussepousse.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_transports_hong_kong/poussepousse.webp b/images/jetons/aides_de_jeu/jetons_transports_hong_kong/poussepousse.webp new file mode 100644 index 0000000..b9edf45 Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_transports_hong_kong/poussepousse.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_transports_hong_kong/scooter.png b/images/jetons/aides_de_jeu/jetons_transports_hong_kong/scooter.png deleted file mode 100644 index 1a48886..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_transports_hong_kong/scooter.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_transports_hong_kong/scooter.webp b/images/jetons/aides_de_jeu/jetons_transports_hong_kong/scooter.webp new file mode 100644 index 0000000..b3a89f8 Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_transports_hong_kong/scooter.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_transports_hong_kong/skateboard.png b/images/jetons/aides_de_jeu/jetons_transports_hong_kong/skateboard.png deleted file mode 100644 index d6d2f75..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_transports_hong_kong/skateboard.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_transports_hong_kong/skateboard.webp b/images/jetons/aides_de_jeu/jetons_transports_hong_kong/skateboard.webp new file mode 100644 index 0000000..d831e45 Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_transports_hong_kong/skateboard.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_transports_hong_kong/taxi.png b/images/jetons/aides_de_jeu/jetons_transports_hong_kong/taxi.png deleted file mode 100644 index 5fd9110..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_transports_hong_kong/taxi.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_transports_hong_kong/taxi.webp b/images/jetons/aides_de_jeu/jetons_transports_hong_kong/taxi.webp new file mode 100644 index 0000000..c922d01 Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_transports_hong_kong/taxi.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_transports_hong_kong/telepherique.png b/images/jetons/aides_de_jeu/jetons_transports_hong_kong/telepherique.png deleted file mode 100644 index 34cebef..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_transports_hong_kong/telepherique.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_transports_hong_kong/telepherique.webp b/images/jetons/aides_de_jeu/jetons_transports_hong_kong/telepherique.webp new file mode 100644 index 0000000..d298c71 Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_transports_hong_kong/telepherique.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_transports_hong_kong/train-metro.png b/images/jetons/aides_de_jeu/jetons_transports_hong_kong/train-metro.png deleted file mode 100644 index d9cc4c5..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_transports_hong_kong/train-metro.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_transports_hong_kong/train-metro.webp b/images/jetons/aides_de_jeu/jetons_transports_hong_kong/train-metro.webp new file mode 100644 index 0000000..9acea2e Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_transports_hong_kong/train-metro.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_transports_hong_kong/tramway.png b/images/jetons/aides_de_jeu/jetons_transports_hong_kong/tramway.png deleted file mode 100644 index 38e1448..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_transports_hong_kong/tramway.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_transports_hong_kong/tramway.webp b/images/jetons/aides_de_jeu/jetons_transports_hong_kong/tramway.webp new file mode 100644 index 0000000..d1b3568 Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_transports_hong_kong/tramway.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_transports_hong_kong/trottinette.png b/images/jetons/aides_de_jeu/jetons_transports_hong_kong/trottinette.png deleted file mode 100644 index 6e8d131..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_transports_hong_kong/trottinette.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_transports_hong_kong/trottinette.webp b/images/jetons/aides_de_jeu/jetons_transports_hong_kong/trottinette.webp new file mode 100644 index 0000000..80e4f1c Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_transports_hong_kong/trottinette.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_transports_hong_kong/vedette.png b/images/jetons/aides_de_jeu/jetons_transports_hong_kong/vedette.png deleted file mode 100644 index 3f73676..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_transports_hong_kong/vedette.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_transports_hong_kong/vedette.webp b/images/jetons/aides_de_jeu/jetons_transports_hong_kong/vedette.webp new file mode 100644 index 0000000..711101e Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_transports_hong_kong/vedette.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_transports_hong_kong/velo.png b/images/jetons/aides_de_jeu/jetons_transports_hong_kong/velo.png deleted file mode 100644 index 4524b48..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_transports_hong_kong/velo.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_transports_hong_kong/velo.webp b/images/jetons/aides_de_jeu/jetons_transports_hong_kong/velo.webp new file mode 100644 index 0000000..399aca4 Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_transports_hong_kong/velo.webp differ diff --git a/images/jetons/aides_de_jeu/jetons_transports_hong_kong/voilier.png b/images/jetons/aides_de_jeu/jetons_transports_hong_kong/voilier.png deleted file mode 100644 index ff16700..0000000 Binary files a/images/jetons/aides_de_jeu/jetons_transports_hong_kong/voilier.png and /dev/null differ diff --git a/images/jetons/aides_de_jeu/jetons_transports_hong_kong/voilier.webp b/images/jetons/aides_de_jeu/jetons_transports_hong_kong/voilier.webp new file mode 100644 index 0000000..1fc1615 Binary files /dev/null and b/images/jetons/aides_de_jeu/jetons_transports_hong_kong/voilier.webp differ diff --git a/images/jetons/extraits_de_officiels/jetons_diagrammes/CDE-ROUE-GARDIENS.png b/images/jetons/extraits_de_officiels/jetons_diagrammes/CDE-ROUE-GARDIENS.png deleted file mode 100644 index c868d85..0000000 Binary files a/images/jetons/extraits_de_officiels/jetons_diagrammes/CDE-ROUE-GARDIENS.png and /dev/null differ diff --git a/images/jetons/extraits_de_officiels/jetons_diagrammes/CDE-ROUE-GARDIENS.webp b/images/jetons/extraits_de_officiels/jetons_diagrammes/CDE-ROUE-GARDIENS.webp new file mode 100644 index 0000000..3baf280 Binary files /dev/null and b/images/jetons/extraits_de_officiels/jetons_diagrammes/CDE-ROUE-GARDIENS.webp differ diff --git a/images/jetons/extraits_de_officiels/jetons_diagrammes/NgHang.png b/images/jetons/extraits_de_officiels/jetons_diagrammes/NgHang.png deleted file mode 100644 index 9152ee5..0000000 Binary files a/images/jetons/extraits_de_officiels/jetons_diagrammes/NgHang.png and /dev/null differ diff --git a/images/jetons/extraits_de_officiels/jetons_diagrammes/NgHang.webp b/images/jetons/extraits_de_officiels/jetons_diagrammes/NgHang.webp new file mode 100644 index 0000000..b3990f2 Binary files /dev/null and b/images/jetons/extraits_de_officiels/jetons_diagrammes/NgHang.webp differ diff --git a/images/jetons/extraits_de_officiels/jetons_diagrammes/labyrinthe.png b/images/jetons/extraits_de_officiels/jetons_diagrammes/labyrinthe.png deleted file mode 100644 index 8e7bd49..0000000 Binary files a/images/jetons/extraits_de_officiels/jetons_diagrammes/labyrinthe.png and /dev/null differ diff --git a/images/jetons/extraits_de_officiels/jetons_diagrammes/labyrinthe.webp b/images/jetons/extraits_de_officiels/jetons_diagrammes/labyrinthe.webp new file mode 100644 index 0000000..69d1a14 Binary files /dev/null and b/images/jetons/extraits_de_officiels/jetons_diagrammes/labyrinthe.webp differ diff --git a/images/jetons/extraits_de_officiels/jetons_diagrammes/loksyu.png b/images/jetons/extraits_de_officiels/jetons_diagrammes/loksyu.png deleted file mode 100644 index f07b054..0000000 Binary files a/images/jetons/extraits_de_officiels/jetons_diagrammes/loksyu.png and /dev/null differ diff --git a/images/jetons/extraits_de_officiels/jetons_diagrammes/loksyu.webp b/images/jetons/extraits_de_officiels/jetons_diagrammes/loksyu.webp new file mode 100644 index 0000000..213838e Binary files /dev/null and b/images/jetons/extraits_de_officiels/jetons_diagrammes/loksyu.webp differ diff --git a/images/jetons/extraits_de_officiels/jetons_diagrammes/roue.png b/images/jetons/extraits_de_officiels/jetons_diagrammes/roue.png deleted file mode 100644 index 8d4e812..0000000 Binary files a/images/jetons/extraits_de_officiels/jetons_diagrammes/roue.png and /dev/null differ diff --git a/images/jetons/extraits_de_officiels/jetons_diagrammes/roue.webp b/images/jetons/extraits_de_officiels/jetons_diagrammes/roue.webp new file mode 100644 index 0000000..34850b0 Binary files /dev/null and b/images/jetons/extraits_de_officiels/jetons_diagrammes/roue.webp differ diff --git a/images/jetons/extraits_de_officiels/jetons_diagrammes/roue_gardiens.png b/images/jetons/extraits_de_officiels/jetons_diagrammes/roue_gardiens.png deleted file mode 100644 index c868d85..0000000 Binary files a/images/jetons/extraits_de_officiels/jetons_diagrammes/roue_gardiens.png and /dev/null differ diff --git a/images/jetons/extraits_de_officiels/jetons_diagrammes/roue_gardiens.webp b/images/jetons/extraits_de_officiels/jetons_diagrammes/roue_gardiens.webp new file mode 100644 index 0000000..3baf280 Binary files /dev/null and b/images/jetons/extraits_de_officiels/jetons_diagrammes/roue_gardiens.webp differ diff --git a/images/jetons/extraits_de_officiels/jetons_diagrammes/roue_initiative.png b/images/jetons/extraits_de_officiels/jetons_diagrammes/roue_initiative.png deleted file mode 100644 index 8d4e812..0000000 Binary files a/images/jetons/extraits_de_officiels/jetons_diagrammes/roue_initiative.png and /dev/null differ diff --git a/images/jetons/extraits_de_officiels/jetons_diagrammes/roue_initiative.webp b/images/jetons/extraits_de_officiels/jetons_diagrammes/roue_initiative.webp new file mode 100644 index 0000000..34850b0 Binary files /dev/null and b/images/jetons/extraits_de_officiels/jetons_diagrammes/roue_initiative.webp differ diff --git a/images/jetons/extraits_de_officiels/jetons_diagrammes/schemaloshu.png b/images/jetons/extraits_de_officiels/jetons_diagrammes/schemaloshu.png deleted file mode 100644 index 4a316e6..0000000 Binary files a/images/jetons/extraits_de_officiels/jetons_diagrammes/schemaloshu.png and /dev/null differ diff --git a/images/jetons/extraits_de_officiels/jetons_diagrammes/schemaloshu.webp b/images/jetons/extraits_de_officiels/jetons_diagrammes/schemaloshu.webp new file mode 100644 index 0000000..9f66e54 Binary files /dev/null and b/images/jetons/extraits_de_officiels/jetons_diagrammes/schemaloshu.webp differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/TokenCdE_1.png b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/TokenCdE_1.png deleted file mode 100644 index a398e4b..0000000 Binary files a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/TokenCdE_1.png and /dev/null differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/TokenCdE_1.webp b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/TokenCdE_1.webp new file mode 100644 index 0000000..8b4b187 Binary files /dev/null and b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/TokenCdE_1.webp differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/TokenCdE_2.png b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/TokenCdE_2.png deleted file mode 100644 index 39f8e56..0000000 Binary files a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/TokenCdE_2.png and /dev/null differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/TokenCdE_2.webp b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/TokenCdE_2.webp new file mode 100644 index 0000000..9e72c44 Binary files /dev/null and b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/TokenCdE_2.webp differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/TokenCdE_3.png b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/TokenCdE_3.png deleted file mode 100644 index fa84227..0000000 Binary files a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/TokenCdE_3.png and /dev/null differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/TokenCdE_3.webp b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/TokenCdE_3.webp new file mode 100644 index 0000000..b74d548 Binary files /dev/null and b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/TokenCdE_3.webp differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/TokenCdE_4.png b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/TokenCdE_4.png deleted file mode 100644 index cc75b6f..0000000 Binary files a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/TokenCdE_4.png and /dev/null differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/TokenCdE_4.webp b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/TokenCdE_4.webp new file mode 100644 index 0000000..a657a43 Binary files /dev/null and b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/TokenCdE_4.webp differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/TokenCdE_5.png b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/TokenCdE_5.png deleted file mode 100644 index 95a9597..0000000 Binary files a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/TokenCdE_5.png and /dev/null differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/TokenCdE_5.webp b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/TokenCdE_5.webp new file mode 100644 index 0000000..95c1c18 Binary files /dev/null and b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/TokenCdE_5.webp differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/TokenCdE_6.png b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/TokenCdE_6.png deleted file mode 100644 index 86abda5..0000000 Binary files a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/TokenCdE_6.png and /dev/null differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/TokenCdE_6.webp b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/TokenCdE_6.webp new file mode 100644 index 0000000..96501af Binary files /dev/null and b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/TokenCdE_6.webp differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_10.png b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_10.png deleted file mode 100644 index 60d2f4a..0000000 Binary files a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_10.png and /dev/null differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_10.webp b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_10.webp new file mode 100644 index 0000000..cac21df Binary files /dev/null and b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_10.webp differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_11.png b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_11.png deleted file mode 100644 index 12c9fc3..0000000 Binary files a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_11.png and /dev/null differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_11.webp b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_11.webp new file mode 100644 index 0000000..c39ef76 Binary files /dev/null and b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_11.webp differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_12.png b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_12.png deleted file mode 100644 index 1d9cd98..0000000 Binary files a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_12.png and /dev/null differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_12.webp b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_12.webp new file mode 100644 index 0000000..7b7d023 Binary files /dev/null and b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_12.webp differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_13.png b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_13.png deleted file mode 100644 index 531ea98..0000000 Binary files a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_13.png and /dev/null differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_13.webp b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_13.webp new file mode 100644 index 0000000..e3db9ea Binary files /dev/null and b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_13.webp differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_14.png b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_14.png deleted file mode 100644 index 6bd24ec..0000000 Binary files a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_14.png and /dev/null differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_14.webp b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_14.webp new file mode 100644 index 0000000..e0ae95f Binary files /dev/null and b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_14.webp differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_15.png b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_15.png deleted file mode 100644 index 216561f..0000000 Binary files a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_15.png and /dev/null differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_15.webp b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_15.webp new file mode 100644 index 0000000..bb54bb0 Binary files /dev/null and b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_15.webp differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_16.png b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_16.png deleted file mode 100644 index 8f8de27..0000000 Binary files a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_16.png and /dev/null differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_16.webp b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_16.webp new file mode 100644 index 0000000..a9cd869 Binary files /dev/null and b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_16.webp differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_17.png b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_17.png deleted file mode 100644 index 8954a0f..0000000 Binary files a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_17.png and /dev/null differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_17.webp b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_17.webp new file mode 100644 index 0000000..cd42052 Binary files /dev/null and b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_17.webp differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_18.png b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_18.png deleted file mode 100644 index 78e61ad..0000000 Binary files a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_18.png and /dev/null differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_18.webp b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_18.webp new file mode 100644 index 0000000..8ccda3d Binary files /dev/null and b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_18.webp differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_19.png b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_19.png deleted file mode 100644 index a34bd6d..0000000 Binary files a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_19.png and /dev/null differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_19.webp b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_19.webp new file mode 100644 index 0000000..94643cf Binary files /dev/null and b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_19.webp differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_20.png b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_20.png deleted file mode 100644 index da75320..0000000 Binary files a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_20.png and /dev/null differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_20.webp b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_20.webp new file mode 100644 index 0000000..1ac9dbe Binary files /dev/null and b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_20.webp differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_21.png b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_21.png deleted file mode 100644 index 045d3cc..0000000 Binary files a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_21.png and /dev/null differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_21.webp b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_21.webp new file mode 100644 index 0000000..4d50b2f Binary files /dev/null and b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_21.webp differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_22.png b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_22.png deleted file mode 100644 index 67eb0fa..0000000 Binary files a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_22.png and /dev/null differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_22.webp b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_22.webp new file mode 100644 index 0000000..cd7133e Binary files /dev/null and b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_22.webp differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_23.png b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_23.png deleted file mode 100644 index 124baeb..0000000 Binary files a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_23.png and /dev/null differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_23.webp b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_23.webp new file mode 100644 index 0000000..886601e Binary files /dev/null and b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_23.webp differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_24.png b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_24.png deleted file mode 100644 index b9d3b13..0000000 Binary files a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_24.png and /dev/null differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_24.webp b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_24.webp new file mode 100644 index 0000000..7e1c63b Binary files /dev/null and b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_24.webp differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_25.png b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_25.png deleted file mode 100644 index 602ded8..0000000 Binary files a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_25.png and /dev/null differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_25.webp b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_25.webp new file mode 100644 index 0000000..001b7f9 Binary files /dev/null and b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_25.webp differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_26.png b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_26.png deleted file mode 100644 index 047a59d..0000000 Binary files a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_26.png and /dev/null differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_26.webp b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_26.webp new file mode 100644 index 0000000..f6245ce Binary files /dev/null and b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_26.webp differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_27.png b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_27.png deleted file mode 100644 index 1b16306..0000000 Binary files a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_27.png and /dev/null differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_27.webp b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_27.webp new file mode 100644 index 0000000..d464fb3 Binary files /dev/null and b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_27.webp differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_28.png b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_28.png deleted file mode 100644 index 2c520ac..0000000 Binary files a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_28.png and /dev/null differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_28.webp b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_28.webp new file mode 100644 index 0000000..99cd6db Binary files /dev/null and b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_28.webp differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_29.png b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_29.png deleted file mode 100644 index 578a9a8..0000000 Binary files a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_29.png and /dev/null differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_29.webp b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_29.webp new file mode 100644 index 0000000..9339bc4 Binary files /dev/null and b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_29.webp differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_30.png b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_30.png deleted file mode 100644 index baa05fc..0000000 Binary files a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_30.png and /dev/null differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_30.webp b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_30.webp new file mode 100644 index 0000000..4b2e112 Binary files /dev/null and b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_30.webp differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_31.png b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_31.png deleted file mode 100644 index 8111962..0000000 Binary files a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_31.png and /dev/null differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_31.webp b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_31.webp new file mode 100644 index 0000000..99c1854 Binary files /dev/null and b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_31.webp differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_32.png b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_32.png deleted file mode 100644 index f96b422..0000000 Binary files a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_32.png and /dev/null differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_32.webp b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_32.webp new file mode 100644 index 0000000..3d88b24 Binary files /dev/null and b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_32.webp differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_33.png b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_33.png deleted file mode 100644 index 4e76f1a..0000000 Binary files a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_33.png and /dev/null differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_33.webp b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_33.webp new file mode 100644 index 0000000..8e5fdbf Binary files /dev/null and b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_33.webp differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_34.png b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_34.png deleted file mode 100644 index 95e9c6c..0000000 Binary files a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_34.png and /dev/null differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_34.webp b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_34.webp new file mode 100644 index 0000000..1af7732 Binary files /dev/null and b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_34.webp differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_35.png b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_35.png deleted file mode 100644 index a4a165a..0000000 Binary files a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_35.png and /dev/null differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_35.webp b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_35.webp new file mode 100644 index 0000000..562ef32 Binary files /dev/null and b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_35.webp differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_36.png b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_36.png deleted file mode 100644 index b7befc6..0000000 Binary files a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_36.png and /dev/null differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_36.webp b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_36.webp new file mode 100644 index 0000000..2cc8dc2 Binary files /dev/null and b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_36.webp differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_37.png b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_37.png deleted file mode 100644 index 7918908..0000000 Binary files a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_37.png and /dev/null differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_37.webp b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_37.webp new file mode 100644 index 0000000..6a329e9 Binary files /dev/null and b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_37.webp differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_38.png b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_38.png deleted file mode 100644 index 8d06b73..0000000 Binary files a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_38.png and /dev/null differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_38.webp b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_38.webp new file mode 100644 index 0000000..42725a9 Binary files /dev/null and b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_38.webp differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_39.png b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_39.png deleted file mode 100644 index 0f323bf..0000000 Binary files a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_39.png and /dev/null differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_39.webp b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_39.webp new file mode 100644 index 0000000..3e9d948 Binary files /dev/null and b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_39.webp differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_40.png b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_40.png deleted file mode 100644 index 069d143..0000000 Binary files a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_40.png and /dev/null differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_40.webp b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_40.webp new file mode 100644 index 0000000..2a6cefb Binary files /dev/null and b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_40.webp differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_41.png b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_41.png deleted file mode 100644 index 591f8db..0000000 Binary files a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_41.png and /dev/null differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_41.webp b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_41.webp new file mode 100644 index 0000000..6be9541 Binary files /dev/null and b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_41.webp differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_42.png b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_42.png deleted file mode 100644 index cd988c2..0000000 Binary files a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_42.png and /dev/null differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_42.webp b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_42.webp new file mode 100644 index 0000000..bef12f9 Binary files /dev/null and b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_42.webp differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_43.png b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_43.png deleted file mode 100644 index 37834d7..0000000 Binary files a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_43.png and /dev/null differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_43.webp b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_43.webp new file mode 100644 index 0000000..f45a428 Binary files /dev/null and b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_43.webp differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_44.png b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_44.png deleted file mode 100644 index c016913..0000000 Binary files a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_44.png and /dev/null differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_44.webp b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_44.webp new file mode 100644 index 0000000..dfd1e03 Binary files /dev/null and b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_44.webp differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_45.png b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_45.png deleted file mode 100644 index 941c385..0000000 Binary files a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_45.png and /dev/null differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_45.webp b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_45.webp new file mode 100644 index 0000000..fd663a8 Binary files /dev/null and b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_45.webp differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_46.png b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_46.png deleted file mode 100644 index a9c6283..0000000 Binary files a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_46.png and /dev/null differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_46.webp b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_46.webp new file mode 100644 index 0000000..e3e3230 Binary files /dev/null and b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_46.webp differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_47.png b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_47.png deleted file mode 100644 index 37ab269..0000000 Binary files a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_47.png and /dev/null differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_47.webp b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_47.webp new file mode 100644 index 0000000..b45eb83 Binary files /dev/null and b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_47.webp differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_7.png b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_7.png deleted file mode 100644 index 3bc4818..0000000 Binary files a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_7.png and /dev/null differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_7.webp b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_7.webp new file mode 100644 index 0000000..d05269e Binary files /dev/null and b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_7.webp differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_8.png b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_8.png deleted file mode 100644 index 2ca64e9..0000000 Binary files a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_8.png and /dev/null differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_8.webp b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_8.webp new file mode 100644 index 0000000..3714db5 Binary files /dev/null and b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_8.webp differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_9.png b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_9.png deleted file mode 100644 index a7392c2..0000000 Binary files a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_9.png and /dev/null differ diff --git a/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_9.webp b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_9.webp new file mode 100644 index 0000000..095a2e5 Binary files /dev/null and b/images/jetons/extraits_de_officiels/jetons_illus_LdB_CdE/tokenCdE_9.webp differ diff --git a/images/jetons/extraits_de_officiels/jetons_johnny_kwan/cedric.png b/images/jetons/extraits_de_officiels/jetons_johnny_kwan/cedric.png deleted file mode 100644 index c67b3a5..0000000 Binary files a/images/jetons/extraits_de_officiels/jetons_johnny_kwan/cedric.png and /dev/null differ diff --git a/images/jetons/extraits_de_officiels/jetons_johnny_kwan/cedric.webp b/images/jetons/extraits_de_officiels/jetons_johnny_kwan/cedric.webp new file mode 100644 index 0000000..bd56eb3 Binary files /dev/null and b/images/jetons/extraits_de_officiels/jetons_johnny_kwan/cedric.webp differ diff --git a/images/jetons/extraits_de_officiels/jetons_johnny_kwan/johnny.png b/images/jetons/extraits_de_officiels/jetons_johnny_kwan/johnny.png deleted file mode 100644 index 6137cdf..0000000 Binary files a/images/jetons/extraits_de_officiels/jetons_johnny_kwan/johnny.png and /dev/null differ diff --git a/images/jetons/extraits_de_officiels/jetons_johnny_kwan/johnny.webp b/images/jetons/extraits_de_officiels/jetons_johnny_kwan/johnny.webp new file mode 100644 index 0000000..7a3e6a1 Binary files /dev/null and b/images/jetons/extraits_de_officiels/jetons_johnny_kwan/johnny.webp differ diff --git a/images/jetons/extraits_de_officiels/jetons_johnny_kwan/johnny_en_pied.png b/images/jetons/extraits_de_officiels/jetons_johnny_kwan/johnny_en_pied.png deleted file mode 100644 index 6e6c82a..0000000 Binary files a/images/jetons/extraits_de_officiels/jetons_johnny_kwan/johnny_en_pied.png and /dev/null differ diff --git a/images/jetons/extraits_de_officiels/jetons_johnny_kwan/johnny_en_pied.webp b/images/jetons/extraits_de_officiels/jetons_johnny_kwan/johnny_en_pied.webp new file mode 100644 index 0000000..d5af5c0 Binary files /dev/null and b/images/jetons/extraits_de_officiels/jetons_johnny_kwan/johnny_en_pied.webp differ diff --git a/images/jetons/extraits_de_officiels/jetons_johnny_kwan/romain.png b/images/jetons/extraits_de_officiels/jetons_johnny_kwan/romain.png deleted file mode 100644 index 389c21d..0000000 Binary files a/images/jetons/extraits_de_officiels/jetons_johnny_kwan/romain.png and /dev/null differ diff --git a/images/jetons/extraits_de_officiels/jetons_johnny_kwan/romain.webp b/images/jetons/extraits_de_officiels/jetons_johnny_kwan/romain.webp new file mode 100644 index 0000000..dddc009 Binary files /dev/null and b/images/jetons/extraits_de_officiels/jetons_johnny_kwan/romain.webp differ diff --git a/images/jetons/extraits_de_officiels/jetons_kit/d�mon.png b/images/jetons/extraits_de_officiels/jetons_kit/d�mon.png deleted file mode 100644 index 68690ee..0000000 Binary files a/images/jetons/extraits_de_officiels/jetons_kit/d�mon.png and /dev/null differ diff --git a/images/jetons/extraits_de_officiels/jetons_kit/d�mon.webp b/images/jetons/extraits_de_officiels/jetons_kit/d�mon.webp new file mode 100644 index 0000000..033027b Binary files /dev/null and b/images/jetons/extraits_de_officiels/jetons_kit/d�mon.webp differ diff --git a/images/jetons/extraits_de_officiels/jetons_kit/homme_au_casque.png b/images/jetons/extraits_de_officiels/jetons_kit/homme_au_casque.png deleted file mode 100644 index 0964f9c..0000000 Binary files a/images/jetons/extraits_de_officiels/jetons_kit/homme_au_casque.png and /dev/null differ diff --git a/images/jetons/extraits_de_officiels/jetons_kit/homme_au_casque.webp b/images/jetons/extraits_de_officiels/jetons_kit/homme_au_casque.webp new file mode 100644 index 0000000..5be35cd Binary files /dev/null and b/images/jetons/extraits_de_officiels/jetons_kit/homme_au_casque.webp differ diff --git a/images/jetons/extraits_de_officiels/jetons_kit/homme_�_la_batte.png b/images/jetons/extraits_de_officiels/jetons_kit/homme_�_la_batte.png deleted file mode 100644 index 9174740..0000000 Binary files a/images/jetons/extraits_de_officiels/jetons_kit/homme_�_la_batte.png and /dev/null differ diff --git a/images/jetons/extraits_de_officiels/jetons_kit/homme_�_la_batte.webp b/images/jetons/extraits_de_officiels/jetons_kit/homme_�_la_batte.webp new file mode 100644 index 0000000..844176d Binary files /dev/null and b/images/jetons/extraits_de_officiels/jetons_kit/homme_�_la_batte.webp differ diff --git a/images/jetons/extraits_de_officiels/jetons_kit/louzing.png b/images/jetons/extraits_de_officiels/jetons_kit/louzing.png deleted file mode 100644 index 3aeb235..0000000 Binary files a/images/jetons/extraits_de_officiels/jetons_kit/louzing.png and /dev/null differ diff --git a/images/jetons/extraits_de_officiels/jetons_kit/louzing.webp b/images/jetons/extraits_de_officiels/jetons_kit/louzing.webp new file mode 100644 index 0000000..433af63 Binary files /dev/null and b/images/jetons/extraits_de_officiels/jetons_kit/louzing.webp differ diff --git a/images/jetons/extraits_de_officiels/jetons_pj_fat_si_pre_tires/billy.png b/images/jetons/extraits_de_officiels/jetons_pj_fat_si_pre_tires/billy.png deleted file mode 100644 index efece1e..0000000 Binary files a/images/jetons/extraits_de_officiels/jetons_pj_fat_si_pre_tires/billy.png and /dev/null differ diff --git a/images/jetons/extraits_de_officiels/jetons_pj_fat_si_pre_tires/billy.webp b/images/jetons/extraits_de_officiels/jetons_pj_fat_si_pre_tires/billy.webp new file mode 100644 index 0000000..3a80aaa Binary files /dev/null and b/images/jetons/extraits_de_officiels/jetons_pj_fat_si_pre_tires/billy.webp differ diff --git a/images/jetons/extraits_de_officiels/jetons_pj_fat_si_pre_tires/brenda.png b/images/jetons/extraits_de_officiels/jetons_pj_fat_si_pre_tires/brenda.png deleted file mode 100644 index cdfb192..0000000 Binary files a/images/jetons/extraits_de_officiels/jetons_pj_fat_si_pre_tires/brenda.png and /dev/null differ diff --git a/images/jetons/extraits_de_officiels/jetons_pj_fat_si_pre_tires/brenda.webp b/images/jetons/extraits_de_officiels/jetons_pj_fat_si_pre_tires/brenda.webp new file mode 100644 index 0000000..7c10e5b Binary files /dev/null and b/images/jetons/extraits_de_officiels/jetons_pj_fat_si_pre_tires/brenda.webp differ diff --git a/images/jetons/extraits_de_officiels/jetons_pj_fat_si_pre_tires/danny.png b/images/jetons/extraits_de_officiels/jetons_pj_fat_si_pre_tires/danny.png deleted file mode 100644 index 6a2847b..0000000 Binary files a/images/jetons/extraits_de_officiels/jetons_pj_fat_si_pre_tires/danny.png and /dev/null differ diff --git a/images/jetons/extraits_de_officiels/jetons_pj_fat_si_pre_tires/danny.webp b/images/jetons/extraits_de_officiels/jetons_pj_fat_si_pre_tires/danny.webp new file mode 100644 index 0000000..8656683 Binary files /dev/null and b/images/jetons/extraits_de_officiels/jetons_pj_fat_si_pre_tires/danny.webp differ diff --git a/images/jetons/extraits_de_officiels/jetons_pj_fat_si_pre_tires/emerson.png b/images/jetons/extraits_de_officiels/jetons_pj_fat_si_pre_tires/emerson.png deleted file mode 100644 index 8a33da5..0000000 Binary files a/images/jetons/extraits_de_officiels/jetons_pj_fat_si_pre_tires/emerson.png and /dev/null differ diff --git a/images/jetons/extraits_de_officiels/jetons_pj_fat_si_pre_tires/emerson.webp b/images/jetons/extraits_de_officiels/jetons_pj_fat_si_pre_tires/emerson.webp new file mode 100644 index 0000000..bcd271a Binary files /dev/null and b/images/jetons/extraits_de_officiels/jetons_pj_fat_si_pre_tires/emerson.webp differ diff --git a/images/jetons/extraits_de_officiels/jetons_pj_fat_si_pre_tires/freddie.png b/images/jetons/extraits_de_officiels/jetons_pj_fat_si_pre_tires/freddie.png deleted file mode 100644 index 5110022..0000000 Binary files a/images/jetons/extraits_de_officiels/jetons_pj_fat_si_pre_tires/freddie.png and /dev/null differ diff --git a/images/jetons/extraits_de_officiels/jetons_pj_fat_si_pre_tires/freddie.webp b/images/jetons/extraits_de_officiels/jetons_pj_fat_si_pre_tires/freddie.webp new file mode 100644 index 0000000..c62e6cd Binary files /dev/null and b/images/jetons/extraits_de_officiels/jetons_pj_fat_si_pre_tires/freddie.webp differ diff --git a/images/jetons/extraits_de_officiels/jetons_pj_fat_si_pre_tires/lily.png b/images/jetons/extraits_de_officiels/jetons_pj_fat_si_pre_tires/lily.png deleted file mode 100644 index a02f11e..0000000 Binary files a/images/jetons/extraits_de_officiels/jetons_pj_fat_si_pre_tires/lily.png and /dev/null differ diff --git a/images/jetons/extraits_de_officiels/jetons_pj_fat_si_pre_tires/lily.webp b/images/jetons/extraits_de_officiels/jetons_pj_fat_si_pre_tires/lily.webp new file mode 100644 index 0000000..c3400f1 Binary files /dev/null and b/images/jetons/extraits_de_officiels/jetons_pj_fat_si_pre_tires/lily.webp differ diff --git a/images/jetons/extraits_de_officiels/jetons_pj_fat_si_pre_tires/maggie.png b/images/jetons/extraits_de_officiels/jetons_pj_fat_si_pre_tires/maggie.png deleted file mode 100644 index 0468f85..0000000 Binary files a/images/jetons/extraits_de_officiels/jetons_pj_fat_si_pre_tires/maggie.png and /dev/null differ diff --git a/images/jetons/extraits_de_officiels/jetons_pj_fat_si_pre_tires/maggie.webp b/images/jetons/extraits_de_officiels/jetons_pj_fat_si_pre_tires/maggie.webp new file mode 100644 index 0000000..9b33e8d Binary files /dev/null and b/images/jetons/extraits_de_officiels/jetons_pj_fat_si_pre_tires/maggie.webp differ diff --git a/images/jetons/extraits_de_officiels/jetons_pj_fat_si_pre_tires/mallory.png b/images/jetons/extraits_de_officiels/jetons_pj_fat_si_pre_tires/mallory.png deleted file mode 100644 index b919561..0000000 Binary files a/images/jetons/extraits_de_officiels/jetons_pj_fat_si_pre_tires/mallory.png and /dev/null differ diff --git a/images/jetons/extraits_de_officiels/jetons_pj_fat_si_pre_tires/mallory.webp b/images/jetons/extraits_de_officiels/jetons_pj_fat_si_pre_tires/mallory.webp new file mode 100644 index 0000000..38a2df1 Binary files /dev/null and b/images/jetons/extraits_de_officiels/jetons_pj_fat_si_pre_tires/mallory.webp differ diff --git a/images/jetons/extraits_de_officiels/jetons_pj_fat_si_pre_tires/penny.png b/images/jetons/extraits_de_officiels/jetons_pj_fat_si_pre_tires/penny.png deleted file mode 100644 index b629cd4..0000000 Binary files a/images/jetons/extraits_de_officiels/jetons_pj_fat_si_pre_tires/penny.png and /dev/null differ diff --git a/images/jetons/extraits_de_officiels/jetons_pj_fat_si_pre_tires/penny.webp b/images/jetons/extraits_de_officiels/jetons_pj_fat_si_pre_tires/penny.webp new file mode 100644 index 0000000..24e4909 Binary files /dev/null and b/images/jetons/extraits_de_officiels/jetons_pj_fat_si_pre_tires/penny.webp differ diff --git a/images/jetons/extraits_de_officiels/jetons_pj_fat_si_pre_tires/sam.png b/images/jetons/extraits_de_officiels/jetons_pj_fat_si_pre_tires/sam.png deleted file mode 100644 index 67d8589..0000000 Binary files a/images/jetons/extraits_de_officiels/jetons_pj_fat_si_pre_tires/sam.png and /dev/null differ diff --git a/images/jetons/extraits_de_officiels/jetons_pj_fat_si_pre_tires/sam.webp b/images/jetons/extraits_de_officiels/jetons_pj_fat_si_pre_tires/sam.webp new file mode 100644 index 0000000..f125491 Binary files /dev/null and b/images/jetons/extraits_de_officiels/jetons_pj_fat_si_pre_tires/sam.webp differ diff --git a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/DCI_paul_hung.png b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/DCI_paul_hung.png deleted file mode 100644 index d89236e..0000000 Binary files a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/DCI_paul_hung.png and /dev/null differ diff --git a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/DCI_paul_hung.webp b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/DCI_paul_hung.webp new file mode 100644 index 0000000..4ad0676 Binary files /dev/null and b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/DCI_paul_hung.webp differ diff --git a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/DI_michael_chan.png b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/DI_michael_chan.png deleted file mode 100644 index d6d0910..0000000 Binary files a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/DI_michael_chan.png and /dev/null differ diff --git a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/DI_michael_chan.webp b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/DI_michael_chan.webp new file mode 100644 index 0000000..f2e15b3 Binary files /dev/null and b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/DI_michael_chan.webp differ diff --git a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/benedict_mo.png b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/benedict_mo.png deleted file mode 100644 index 2696f4b..0000000 Binary files a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/benedict_mo.png and /dev/null differ diff --git a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/benedict_mo.webp b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/benedict_mo.webp new file mode 100644 index 0000000..45fd016 Binary files /dev/null and b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/benedict_mo.webp differ diff --git a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/brian_tso.png b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/brian_tso.png deleted file mode 100644 index 46fe1b6..0000000 Binary files a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/brian_tso.png and /dev/null differ diff --git a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/brian_tso.webp b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/brian_tso.webp new file mode 100644 index 0000000..600c985 Binary files /dev/null and b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/brian_tso.webp differ diff --git a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/capitaine_yacht.png b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/capitaine_yacht.png deleted file mode 100644 index adaa888..0000000 Binary files a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/capitaine_yacht.png and /dev/null differ diff --git a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/capitaine_yacht.webp b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/capitaine_yacht.webp new file mode 100644 index 0000000..f056886 Binary files /dev/null and b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/capitaine_yacht.webp differ diff --git a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/chao_ku.png b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/chao_ku.png deleted file mode 100644 index 68dc3ae..0000000 Binary files a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/chao_ku.png and /dev/null differ diff --git a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/chao_ku.webp b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/chao_ku.webp new file mode 100644 index 0000000..b7673fd Binary files /dev/null and b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/chao_ku.webp differ diff --git a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/dan_mok_pikachu.png b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/dan_mok_pikachu.png deleted file mode 100644 index 369ea3b..0000000 Binary files a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/dan_mok_pikachu.png and /dev/null differ diff --git a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/dan_mok_pikachu.webp b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/dan_mok_pikachu.webp new file mode 100644 index 0000000..82482d2 Binary files /dev/null and b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/dan_mok_pikachu.webp differ diff --git a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/daniel_pak_(d�c�d�).png b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/daniel_pak_(d�c�d�).png deleted file mode 100644 index 57fb6a9..0000000 Binary files a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/daniel_pak_(d�c�d�).png and /dev/null differ diff --git a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/daniel_pak_(d�c�d�).webp b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/daniel_pak_(d�c�d�).webp new file mode 100644 index 0000000..64ef8d5 Binary files /dev/null and b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/daniel_pak_(d�c�d�).webp differ diff --git a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/david_fan.png b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/david_fan.png deleted file mode 100644 index 8c8d387..0000000 Binary files a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/david_fan.png and /dev/null differ diff --git a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/david_fan.webp b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/david_fan.webp new file mode 100644 index 0000000..5dd22cc Binary files /dev/null and b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/david_fan.webp differ diff --git a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/ed_ngai.png b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/ed_ngai.png deleted file mode 100644 index 3fcba6d..0000000 Binary files a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/ed_ngai.png and /dev/null differ diff --git a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/ed_ngai.webp b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/ed_ngai.webp new file mode 100644 index 0000000..beddb3c Binary files /dev/null and b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/ed_ngai.webp differ diff --git a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/esprit_squille_jie.png b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/esprit_squille_jie.png deleted file mode 100644 index 15b5cf4..0000000 Binary files a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/esprit_squille_jie.png and /dev/null differ diff --git a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/esprit_squille_jie.webp b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/esprit_squille_jie.webp new file mode 100644 index 0000000..24d9d9a Binary files /dev/null and b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/esprit_squille_jie.webp differ diff --git a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/esprit_squille_kuai.png b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/esprit_squille_kuai.png deleted file mode 100644 index 15b5cf4..0000000 Binary files a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/esprit_squille_kuai.png and /dev/null differ diff --git a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/esprit_squille_kuai.webp b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/esprit_squille_kuai.webp new file mode 100644 index 0000000..24d9d9a Binary files /dev/null and b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/esprit_squille_kuai.webp differ diff --git a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/esprit_squille_zhang.png b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/esprit_squille_zhang.png deleted file mode 100644 index 15b5cf4..0000000 Binary files a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/esprit_squille_zhang.png and /dev/null differ diff --git a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/esprit_squille_zhang.webp b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/esprit_squille_zhang.webp new file mode 100644 index 0000000..24d9d9a Binary files /dev/null and b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/esprit_squille_zhang.webp differ diff --git a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/harry_fong.png b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/harry_fong.png deleted file mode 100644 index e5fe7a2..0000000 Binary files a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/harry_fong.png and /dev/null differ diff --git a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/harry_fong.webp b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/harry_fong.webp new file mode 100644 index 0000000..b793aa2 Binary files /dev/null and b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/harry_fong.webp differ diff --git a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/hommes_de_main_pikachu.png b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/hommes_de_main_pikachu.png deleted file mode 100644 index 7d57a51..0000000 Binary files a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/hommes_de_main_pikachu.png and /dev/null differ diff --git a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/hommes_de_main_pikachu.webp b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/hommes_de_main_pikachu.webp new file mode 100644 index 0000000..c48cbb4 Binary files /dev/null and b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/hommes_de_main_pikachu.webp differ diff --git a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/jason_tsong.png b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/jason_tsong.png deleted file mode 100644 index 37b8c55..0000000 Binary files a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/jason_tsong.png and /dev/null differ diff --git a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/jason_tsong.webp b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/jason_tsong.webp new file mode 100644 index 0000000..a834d39 Binary files /dev/null and b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/jason_tsong.webp differ diff --git a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/jimmy_tseng.png b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/jimmy_tseng.png deleted file mode 100644 index 1e4072e..0000000 Binary files a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/jimmy_tseng.png and /dev/null differ diff --git a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/jimmy_tseng.webp b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/jimmy_tseng.webp new file mode 100644 index 0000000..82cab26 Binary files /dev/null and b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/jimmy_tseng.webp differ diff --git a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/le_kasasagi.png b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/le_kasasagi.png deleted file mode 100644 index a4969b9..0000000 Binary files a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/le_kasasagi.png and /dev/null differ diff --git a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/le_kasasagi.webp b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/le_kasasagi.webp new file mode 100644 index 0000000..d50b178 Binary files /dev/null and b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/le_kasasagi.webp differ diff --git a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/le_tigre_de_nacre.png b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/le_tigre_de_nacre.png deleted file mode 100644 index b001bea..0000000 Binary files a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/le_tigre_de_nacre.png and /dev/null differ diff --git a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/le_tigre_de_nacre.webp b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/le_tigre_de_nacre.webp new file mode 100644 index 0000000..22c842c Binary files /dev/null and b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/le_tigre_de_nacre.webp differ diff --git a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/le_white_dolphin.png b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/le_white_dolphin.png deleted file mode 100644 index 91a5c86..0000000 Binary files a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/le_white_dolphin.png and /dev/null differ diff --git a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/le_white_dolphin.webp b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/le_white_dolphin.webp new file mode 100644 index 0000000..37181db Binary files /dev/null and b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/le_white_dolphin.webp differ diff --git a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/louis_pak.png b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/louis_pak.png deleted file mode 100644 index 38420fd..0000000 Binary files a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/louis_pak.png and /dev/null differ diff --git a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/louis_pak.webp b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/louis_pak.webp new file mode 100644 index 0000000..1a90626 Binary files /dev/null and b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/louis_pak.webp differ diff --git a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/lucy_bai.png b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/lucy_bai.png deleted file mode 100644 index cd85060..0000000 Binary files a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/lucy_bai.png and /dev/null differ diff --git a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/lucy_bai.webp b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/lucy_bai.webp new file mode 100644 index 0000000..6656970 Binary files /dev/null and b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/lucy_bai.webp differ diff --git a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/macaques_verts.png b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/macaques_verts.png deleted file mode 100644 index e70ec61..0000000 Binary files a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/macaques_verts.png and /dev/null differ diff --git a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/macaques_verts.webp b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/macaques_verts.webp new file mode 100644 index 0000000..f5cc87d Binary files /dev/null and b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/macaques_verts.webp differ diff --git a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/mangeur_de_perles.png b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/mangeur_de_perles.png deleted file mode 100644 index 1ff298d..0000000 Binary files a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/mangeur_de_perles.png and /dev/null differ diff --git a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/mangeur_de_perles.webp b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/mangeur_de_perles.webp new file mode 100644 index 0000000..90ef042 Binary files /dev/null and b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/mangeur_de_perles.webp differ diff --git a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/mark_wai.png b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/mark_wai.png deleted file mode 100644 index d41ae33..0000000 Binary files a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/mark_wai.png and /dev/null differ diff --git a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/mark_wai.webp b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/mark_wai.webp new file mode 100644 index 0000000..cafa46b Binary files /dev/null and b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/mark_wai.webp differ diff --git a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/meng_kun.png b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/meng_kun.png deleted file mode 100644 index 1e8f662..0000000 Binary files a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/meng_kun.png and /dev/null differ diff --git a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/meng_kun.webp b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/meng_kun.webp new file mode 100644 index 0000000..48c6146 Binary files /dev/null and b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/meng_kun.webp differ diff --git a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/philip_chu.png b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/philip_chu.png deleted file mode 100644 index 62c3820..0000000 Binary files a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/philip_chu.png and /dev/null differ diff --git a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/philip_chu.webp b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/philip_chu.webp new file mode 100644 index 0000000..717039e Binary files /dev/null and b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/philip_chu.webp differ diff --git a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/philip_hui.png b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/philip_hui.png deleted file mode 100644 index 0dd1146..0000000 Binary files a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/philip_hui.png and /dev/null differ diff --git a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/philip_hui.webp b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/philip_hui.webp new file mode 100644 index 0000000..c8a5a08 Binary files /dev/null and b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/philip_hui.webp differ diff --git a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/rosy_pak_(fant�me).png b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/rosy_pak_(fant�me).png deleted file mode 100644 index 0050f7b..0000000 Binary files a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/rosy_pak_(fant�me).png and /dev/null differ diff --git a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/rosy_pak_(fant�me).webp b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/rosy_pak_(fant�me).webp new file mode 100644 index 0000000..58613eb Binary files /dev/null and b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/rosy_pak_(fant�me).webp differ diff --git a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/rosy_woo.png b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/rosy_woo.png deleted file mode 100644 index 26fd8d4..0000000 Binary files a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/rosy_woo.png and /dev/null differ diff --git a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/rosy_woo.webp b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/rosy_woo.webp new file mode 100644 index 0000000..203bad4 Binary files /dev/null and b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/rosy_woo.webp differ diff --git a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/samuel_song.png b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/samuel_song.png deleted file mode 100644 index 42cca87..0000000 Binary files a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/samuel_song.png and /dev/null differ diff --git a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/samuel_song.webp b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/samuel_song.webp new file mode 100644 index 0000000..43aa0e6 Binary files /dev/null and b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/samuel_song.webp differ diff --git a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/sen_shikai.png b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/sen_shikai.png deleted file mode 100644 index 256c1fb..0000000 Binary files a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/sen_shikai.png and /dev/null differ diff --git a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/sen_shikai.webp b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/sen_shikai.webp new file mode 100644 index 0000000..cfd013a Binary files /dev/null and b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/sen_shikai.webp differ diff --git a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/shānhú_yíng_lái_huissier_de_corail.png b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/shānhú_yíng_lái_huissier_de_corail.png deleted file mode 100644 index 851e841..0000000 Binary files a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/shānhú_yíng_lái_huissier_de_corail.png and /dev/null differ diff --git a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/shānhú_yíng_lái_huissier_de_corail.webp b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/shānhú_yíng_lái_huissier_de_corail.webp new file mode 100644 index 0000000..f5c3d72 Binary files /dev/null and b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/shānhú_yíng_lái_huissier_de_corail.webp differ diff --git a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/soldats_qing.png b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/soldats_qing.png deleted file mode 100644 index 4172450..0000000 Binary files a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/soldats_qing.png and /dev/null differ diff --git a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/soldats_qing.webp b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/soldats_qing.webp new file mode 100644 index 0000000..b3bd900 Binary files /dev/null and b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/soldats_qing.webp differ diff --git a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/tigre_fant�me.png b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/tigre_fant�me.png deleted file mode 100644 index af8bf4e..0000000 Binary files a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/tigre_fant�me.png and /dev/null differ diff --git a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/tigre_fant�me.webp b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/tigre_fant�me.webp new file mode 100644 index 0000000..8f43f28 Binary files /dev/null and b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/tigre_fant�me.webp differ diff --git a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/tim_chau.png b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/tim_chau.png deleted file mode 100644 index 7def912..0000000 Binary files a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/tim_chau.png and /dev/null differ diff --git a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/tim_chau.webp b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/tim_chau.webp new file mode 100644 index 0000000..04c392f Binary files /dev/null and b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/tim_chau.webp differ diff --git a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/tong_shaoqi.png b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/tong_shaoqi.png deleted file mode 100644 index d67c86b..0000000 Binary files a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/tong_shaoqi.png and /dev/null differ diff --git a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/tong_shaoqi.webp b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/tong_shaoqi.webp new file mode 100644 index 0000000..2f8eae3 Binary files /dev/null and b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/tong_shaoqi.webp differ diff --git a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/tso_rongting.png b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/tso_rongting.png deleted file mode 100644 index b11976d..0000000 Binary files a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/tso_rongting.png and /dev/null differ diff --git a/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/tso_rongting.webp b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/tso_rongting.webp new file mode 100644 index 0000000..cec9f2c Binary files /dev/null and b/images/jetons/scenarios_amateurs/affaire_du_tigre_de_nacre/tso_rongting.webp differ diff --git a/images/jetons/scenarios_amateurs/ecailles_d_argent/ecailles_emma_wai.png b/images/jetons/scenarios_amateurs/ecailles_d_argent/ecailles_emma_wai.png deleted file mode 100644 index c14d03f..0000000 Binary files a/images/jetons/scenarios_amateurs/ecailles_d_argent/ecailles_emma_wai.png and /dev/null differ diff --git a/images/jetons/scenarios_amateurs/ecailles_d_argent/ecailles_emma_wai.webp b/images/jetons/scenarios_amateurs/ecailles_d_argent/ecailles_emma_wai.webp new file mode 100644 index 0000000..6272784 Binary files /dev/null and b/images/jetons/scenarios_amateurs/ecailles_d_argent/ecailles_emma_wai.webp differ diff --git a/images/jetons/scenarios_amateurs/ecailles_d_argent/ecailles_eva_wai.png b/images/jetons/scenarios_amateurs/ecailles_d_argent/ecailles_eva_wai.png deleted file mode 100644 index 7288a82..0000000 Binary files a/images/jetons/scenarios_amateurs/ecailles_d_argent/ecailles_eva_wai.png and /dev/null differ diff --git a/images/jetons/scenarios_amateurs/ecailles_d_argent/ecailles_eva_wai.webp b/images/jetons/scenarios_amateurs/ecailles_d_argent/ecailles_eva_wai.webp new file mode 100644 index 0000000..1bcbfc2 Binary files /dev/null and b/images/jetons/scenarios_amateurs/ecailles_d_argent/ecailles_eva_wai.webp differ diff --git a/images/jetons/scenarios_amateurs/ecailles_d_argent/ecailles_michael_syu.png b/images/jetons/scenarios_amateurs/ecailles_d_argent/ecailles_michael_syu.png deleted file mode 100644 index 4edeeef..0000000 Binary files a/images/jetons/scenarios_amateurs/ecailles_d_argent/ecailles_michael_syu.png and /dev/null differ diff --git a/images/jetons/scenarios_amateurs/ecailles_d_argent/ecailles_michael_syu.webp b/images/jetons/scenarios_amateurs/ecailles_d_argent/ecailles_michael_syu.webp new file mode 100644 index 0000000..8f843a4 Binary files /dev/null and b/images/jetons/scenarios_amateurs/ecailles_d_argent/ecailles_michael_syu.webp differ diff --git a/images/jetons/scenarios_amateurs/ecailles_d_argent/ecailles_san_kuen.png b/images/jetons/scenarios_amateurs/ecailles_d_argent/ecailles_san_kuen.png deleted file mode 100644 index 24c3342..0000000 Binary files a/images/jetons/scenarios_amateurs/ecailles_d_argent/ecailles_san_kuen.png and /dev/null differ diff --git a/images/jetons/scenarios_amateurs/ecailles_d_argent/ecailles_san_kuen.webp b/images/jetons/scenarios_amateurs/ecailles_d_argent/ecailles_san_kuen.webp new file mode 100644 index 0000000..6371fc6 Binary files /dev/null and b/images/jetons/scenarios_amateurs/ecailles_d_argent/ecailles_san_kuen.webp differ diff --git a/images/jetons/scenarios_amateurs/miroir_mon_beau_miroir/jeton_Dave_Wu.png b/images/jetons/scenarios_amateurs/miroir_mon_beau_miroir/jeton_Dave_Wu.png deleted file mode 100644 index ac122e4..0000000 Binary files a/images/jetons/scenarios_amateurs/miroir_mon_beau_miroir/jeton_Dave_Wu.png and /dev/null differ diff --git a/images/jetons/scenarios_amateurs/miroir_mon_beau_miroir/jeton_Dave_Wu.webp b/images/jetons/scenarios_amateurs/miroir_mon_beau_miroir/jeton_Dave_Wu.webp new file mode 100644 index 0000000..6c4adcc Binary files /dev/null and b/images/jetons/scenarios_amateurs/miroir_mon_beau_miroir/jeton_Dave_Wu.webp differ diff --git a/images/jetons/scenarios_amateurs/miroir_mon_beau_miroir/jeton_Huang_Shuzhen.png b/images/jetons/scenarios_amateurs/miroir_mon_beau_miroir/jeton_Huang_Shuzhen.png deleted file mode 100644 index 2f0e984..0000000 Binary files a/images/jetons/scenarios_amateurs/miroir_mon_beau_miroir/jeton_Huang_Shuzhen.png and /dev/null differ diff --git a/images/jetons/scenarios_amateurs/miroir_mon_beau_miroir/jeton_Huang_Shuzhen.webp b/images/jetons/scenarios_amateurs/miroir_mon_beau_miroir/jeton_Huang_Shuzhen.webp new file mode 100644 index 0000000..4ba6a0f Binary files /dev/null and b/images/jetons/scenarios_amateurs/miroir_mon_beau_miroir/jeton_Huang_Shuzhen.webp differ diff --git a/images/jetons/scenarios_amateurs/miroir_mon_beau_miroir/jeton_Huang_Zhiming.png b/images/jetons/scenarios_amateurs/miroir_mon_beau_miroir/jeton_Huang_Zhiming.png deleted file mode 100644 index a9771c2..0000000 Binary files a/images/jetons/scenarios_amateurs/miroir_mon_beau_miroir/jeton_Huang_Zhiming.png and /dev/null differ diff --git a/images/jetons/scenarios_amateurs/miroir_mon_beau_miroir/jeton_Huang_Zhiming.webp b/images/jetons/scenarios_amateurs/miroir_mon_beau_miroir/jeton_Huang_Zhiming.webp new file mode 100644 index 0000000..66b8cd4 Binary files /dev/null and b/images/jetons/scenarios_amateurs/miroir_mon_beau_miroir/jeton_Huang_Zhiming.webp differ diff --git a/images/jetons/scenarios_amateurs/miroir_mon_beau_miroir/jeton_Monsieu_Li.png b/images/jetons/scenarios_amateurs/miroir_mon_beau_miroir/jeton_Monsieu_Li.png deleted file mode 100644 index a023442..0000000 Binary files a/images/jetons/scenarios_amateurs/miroir_mon_beau_miroir/jeton_Monsieu_Li.png and /dev/null differ diff --git a/images/jetons/scenarios_amateurs/miroir_mon_beau_miroir/jeton_Monsieu_Li.webp b/images/jetons/scenarios_amateurs/miroir_mon_beau_miroir/jeton_Monsieu_Li.webp new file mode 100644 index 0000000..ac1fca2 Binary files /dev/null and b/images/jetons/scenarios_amateurs/miroir_mon_beau_miroir/jeton_Monsieu_Li.webp differ diff --git a/images/jetons/scenarios_amateurs/miroir_mon_beau_miroir/jeton_Ronnie_Wang.png b/images/jetons/scenarios_amateurs/miroir_mon_beau_miroir/jeton_Ronnie_Wang.png deleted file mode 100644 index f1c5b31..0000000 Binary files a/images/jetons/scenarios_amateurs/miroir_mon_beau_miroir/jeton_Ronnie_Wang.png and /dev/null differ diff --git a/images/jetons/scenarios_amateurs/miroir_mon_beau_miroir/jeton_Ronnie_Wang.webp b/images/jetons/scenarios_amateurs/miroir_mon_beau_miroir/jeton_Ronnie_Wang.webp new file mode 100644 index 0000000..03d7b92 Binary files /dev/null and b/images/jetons/scenarios_amateurs/miroir_mon_beau_miroir/jeton_Ronnie_Wang.webp differ diff --git a/images/jetons/scenarios_amateurs/miroir_mon_beau_miroir/jeton_Solomon_Wu.png b/images/jetons/scenarios_amateurs/miroir_mon_beau_miroir/jeton_Solomon_Wu.png deleted file mode 100644 index 30b6b6b..0000000 Binary files a/images/jetons/scenarios_amateurs/miroir_mon_beau_miroir/jeton_Solomon_Wu.png and /dev/null differ diff --git a/images/jetons/scenarios_amateurs/miroir_mon_beau_miroir/jeton_Solomon_Wu.webp b/images/jetons/scenarios_amateurs/miroir_mon_beau_miroir/jeton_Solomon_Wu.webp new file mode 100644 index 0000000..315680e Binary files /dev/null and b/images/jetons/scenarios_amateurs/miroir_mon_beau_miroir/jeton_Solomon_Wu.webp differ diff --git a/images/jetons/scenarios_amateurs/miroir_mon_beau_miroir/jeton_Wang_Ye.png b/images/jetons/scenarios_amateurs/miroir_mon_beau_miroir/jeton_Wang_Ye.png deleted file mode 100644 index c179d41..0000000 Binary files a/images/jetons/scenarios_amateurs/miroir_mon_beau_miroir/jeton_Wang_Ye.png and /dev/null differ diff --git a/images/jetons/scenarios_amateurs/miroir_mon_beau_miroir/jeton_Wang_Ye.webp b/images/jetons/scenarios_amateurs/miroir_mon_beau_miroir/jeton_Wang_Ye.webp new file mode 100644 index 0000000..602c3ef Binary files /dev/null and b/images/jetons/scenarios_amateurs/miroir_mon_beau_miroir/jeton_Wang_Ye.webp differ diff --git a/images/jetons/scenarios_amateurs/miroir_mon_beau_miroir/jeton_auctioneer.png b/images/jetons/scenarios_amateurs/miroir_mon_beau_miroir/jeton_auctioneer.png deleted file mode 100644 index 14f22ed..0000000 Binary files a/images/jetons/scenarios_amateurs/miroir_mon_beau_miroir/jeton_auctioneer.png and /dev/null differ diff --git a/images/jetons/scenarios_amateurs/miroir_mon_beau_miroir/jeton_auctioneer.webp b/images/jetons/scenarios_amateurs/miroir_mon_beau_miroir/jeton_auctioneer.webp new file mode 100644 index 0000000..98497ed Binary files /dev/null and b/images/jetons/scenarios_amateurs/miroir_mon_beau_miroir/jeton_auctioneer.webp differ diff --git a/images/jetons/scenarios_amateurs/miroir_mon_beau_miroir/jeton_gang_batte_cricket.png b/images/jetons/scenarios_amateurs/miroir_mon_beau_miroir/jeton_gang_batte_cricket.png deleted file mode 100644 index 37e8c96..0000000 Binary files a/images/jetons/scenarios_amateurs/miroir_mon_beau_miroir/jeton_gang_batte_cricket.png and /dev/null differ diff --git a/images/jetons/scenarios_amateurs/miroir_mon_beau_miroir/jeton_gang_batte_cricket.webp b/images/jetons/scenarios_amateurs/miroir_mon_beau_miroir/jeton_gang_batte_cricket.webp new file mode 100644 index 0000000..923f342 Binary files /dev/null and b/images/jetons/scenarios_amateurs/miroir_mon_beau_miroir/jeton_gang_batte_cricket.webp differ diff --git a/images/jetons/scenarios_amateurs/miroir_mon_beau_miroir/jeton_hk_pompier_1.png b/images/jetons/scenarios_amateurs/miroir_mon_beau_miroir/jeton_hk_pompier_1.png deleted file mode 100644 index ae30ada..0000000 Binary files a/images/jetons/scenarios_amateurs/miroir_mon_beau_miroir/jeton_hk_pompier_1.png and /dev/null differ diff --git a/images/jetons/scenarios_amateurs/miroir_mon_beau_miroir/jeton_hk_pompier_1.webp b/images/jetons/scenarios_amateurs/miroir_mon_beau_miroir/jeton_hk_pompier_1.webp new file mode 100644 index 0000000..8cda18f Binary files /dev/null and b/images/jetons/scenarios_amateurs/miroir_mon_beau_miroir/jeton_hk_pompier_1.webp differ diff --git a/images/jetons/scenarios_amateurs/miroir_mon_beau_miroir/jeton_hk_pompier_2.png b/images/jetons/scenarios_amateurs/miroir_mon_beau_miroir/jeton_hk_pompier_2.png deleted file mode 100644 index 1aaf161..0000000 Binary files a/images/jetons/scenarios_amateurs/miroir_mon_beau_miroir/jeton_hk_pompier_2.png and /dev/null differ diff --git a/images/jetons/scenarios_amateurs/miroir_mon_beau_miroir/jeton_hk_pompier_2.webp b/images/jetons/scenarios_amateurs/miroir_mon_beau_miroir/jeton_hk_pompier_2.webp new file mode 100644 index 0000000..5066523 Binary files /dev/null and b/images/jetons/scenarios_amateurs/miroir_mon_beau_miroir/jeton_hk_pompier_2.webp differ diff --git a/images/jetons/scenarios_amateurs/miroir_mon_beau_miroir/jeton_hk_pompier_3.png b/images/jetons/scenarios_amateurs/miroir_mon_beau_miroir/jeton_hk_pompier_3.png deleted file mode 100644 index a5b7f4c..0000000 Binary files a/images/jetons/scenarios_amateurs/miroir_mon_beau_miroir/jeton_hk_pompier_3.png and /dev/null differ diff --git a/images/jetons/scenarios_amateurs/miroir_mon_beau_miroir/jeton_hk_pompier_3.webp b/images/jetons/scenarios_amateurs/miroir_mon_beau_miroir/jeton_hk_pompier_3.webp new file mode 100644 index 0000000..6e57923 Binary files /dev/null and b/images/jetons/scenarios_amateurs/miroir_mon_beau_miroir/jeton_hk_pompier_3.webp differ diff --git a/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_chauffeur_limousine.png b/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_chauffeur_limousine.png deleted file mode 100644 index 7fd0918..0000000 Binary files a/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_chauffeur_limousine.png and /dev/null differ diff --git a/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_chauffeur_limousine.webp b/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_chauffeur_limousine.webp new file mode 100644 index 0000000..02402da Binary files /dev/null and b/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_chauffeur_limousine.webp differ diff --git a/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_eddy_wong.png b/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_eddy_wong.png deleted file mode 100644 index 97c01f0..0000000 Binary files a/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_eddy_wong.png and /dev/null differ diff --git a/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_eddy_wong.webp b/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_eddy_wong.webp new file mode 100644 index 0000000..6784fa9 Binary files /dev/null and b/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_eddy_wong.webp differ diff --git a/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_gros_bras_1.png b/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_gros_bras_1.png deleted file mode 100644 index 671922c..0000000 Binary files a/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_gros_bras_1.png and /dev/null differ diff --git a/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_gros_bras_1.webp b/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_gros_bras_1.webp new file mode 100644 index 0000000..7d5dd4f Binary files /dev/null and b/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_gros_bras_1.webp differ diff --git a/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_gros_bras_2.png b/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_gros_bras_2.png deleted file mode 100644 index 97473b0..0000000 Binary files a/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_gros_bras_2.png and /dev/null differ diff --git a/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_gros_bras_2.webp b/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_gros_bras_2.webp new file mode 100644 index 0000000..604a3eb Binary files /dev/null and b/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_gros_bras_2.webp differ diff --git a/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_kazin.png b/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_kazin.png deleted file mode 100644 index bf104f0..0000000 Binary files a/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_kazin.png and /dev/null differ diff --git a/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_kazin.webp b/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_kazin.webp new file mode 100644 index 0000000..f3b62d6 Binary files /dev/null and b/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_kazin.webp differ diff --git a/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_kazin_couleur.png b/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_kazin_couleur.png deleted file mode 100644 index 12ae351..0000000 Binary files a/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_kazin_couleur.png and /dev/null differ diff --git a/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_kazin_couleur.webp b/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_kazin_couleur.webp new file mode 100644 index 0000000..948ff1a Binary files /dev/null and b/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_kazin_couleur.webp differ diff --git a/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_kertau.png b/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_kertau.png deleted file mode 100644 index aae875e..0000000 Binary files a/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_kertau.png and /dev/null differ diff --git a/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_kertau.webp b/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_kertau.webp new file mode 100644 index 0000000..df132f7 Binary files /dev/null and b/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_kertau.webp differ diff --git a/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_kertau_couleur.png b/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_kertau_couleur.png deleted file mode 100644 index 2b96e9d..0000000 Binary files a/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_kertau_couleur.png and /dev/null differ diff --git a/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_kertau_couleur.webp b/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_kertau_couleur.webp new file mode 100644 index 0000000..0ae4ea0 Binary files /dev/null and b/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_kertau_couleur.webp differ diff --git a/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_limousine.png b/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_limousine.png deleted file mode 100644 index 831f6e3..0000000 Binary files a/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_limousine.png and /dev/null differ diff --git a/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_limousine.webp b/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_limousine.webp new file mode 100644 index 0000000..b6c07c2 Binary files /dev/null and b/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_limousine.webp differ diff --git a/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_mambabarang.png b/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_mambabarang.png deleted file mode 100644 index e6883a6..0000000 Binary files a/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_mambabarang.png and /dev/null differ diff --git a/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_mambabarang.webp b/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_mambabarang.webp new file mode 100644 index 0000000..4c7e826 Binary files /dev/null and b/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_mambabarang.webp differ diff --git a/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_mambabarang_couleur.png b/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_mambabarang_couleur.png deleted file mode 100644 index 7ed4546..0000000 Binary files a/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_mambabarang_couleur.png and /dev/null differ diff --git a/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_mambabarang_couleur.webp b/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_mambabarang_couleur.webp new file mode 100644 index 0000000..918ad1d Binary files /dev/null and b/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_mambabarang_couleur.webp differ diff --git a/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_rosy_woo.png b/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_rosy_woo.png deleted file mode 100644 index 26fd8d4..0000000 Binary files a/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_rosy_woo.png and /dev/null differ diff --git a/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_rosy_woo.webp b/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_rosy_woo.webp new file mode 100644 index 0000000..203bad4 Binary files /dev/null and b/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_rosy_woo.webp differ diff --git a/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_tommy_wong.png b/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_tommy_wong.png deleted file mode 100644 index 9d7cdde..0000000 Binary files a/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_tommy_wong.png and /dev/null differ diff --git a/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_tommy_wong.webp b/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_tommy_wong.webp new file mode 100644 index 0000000..477e424 Binary files /dev/null and b/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_tommy_wong.webp differ diff --git a/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_wak_wak.png b/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_wak_wak.png deleted file mode 100644 index cfdc9c2..0000000 Binary files a/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_wak_wak.png and /dev/null differ diff --git a/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_wak_wak.webp b/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_wak_wak.webp new file mode 100644 index 0000000..b4bbadf Binary files /dev/null and b/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_wak_wak.webp differ diff --git a/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_wak_wak_couleur.png b/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_wak_wak_couleur.png deleted file mode 100644 index eec91ca..0000000 Binary files a/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_wak_wak_couleur.png and /dev/null differ diff --git a/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_wak_wak_couleur.webp b/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_wak_wak_couleur.webp new file mode 100644 index 0000000..49ac045 Binary files /dev/null and b/images/jetons/scenarios_amateurs/vengeance_pour_un_dragon/vengeance_wak_wak_couleur.webp differ diff --git a/images/jetons/scenarios_officiels/droit_de_garde/Alan_Lo_ag�.png b/images/jetons/scenarios_officiels/droit_de_garde/Alan_Lo_ag�.png deleted file mode 100644 index 9239653..0000000 Binary files a/images/jetons/scenarios_officiels/droit_de_garde/Alan_Lo_ag�.png and /dev/null differ diff --git a/images/jetons/scenarios_officiels/droit_de_garde/Alan_Lo_ag�.webp b/images/jetons/scenarios_officiels/droit_de_garde/Alan_Lo_ag�.webp new file mode 100644 index 0000000..d72add4 Binary files /dev/null and b/images/jetons/scenarios_officiels/droit_de_garde/Alan_Lo_ag�.webp differ diff --git a/images/jetons/scenarios_officiels/droit_de_garde/Alan_Lo_jeune.png b/images/jetons/scenarios_officiels/droit_de_garde/Alan_Lo_jeune.png deleted file mode 100644 index 2202f05..0000000 Binary files a/images/jetons/scenarios_officiels/droit_de_garde/Alan_Lo_jeune.png and /dev/null differ diff --git a/images/jetons/scenarios_officiels/droit_de_garde/Alan_Lo_jeune.webp b/images/jetons/scenarios_officiels/droit_de_garde/Alan_Lo_jeune.webp new file mode 100644 index 0000000..604cd86 Binary files /dev/null and b/images/jetons/scenarios_officiels/droit_de_garde/Alan_Lo_jeune.webp differ diff --git a/images/jetons/scenarios_officiels/droit_de_garde/Amelia_Weng.png b/images/jetons/scenarios_officiels/droit_de_garde/Amelia_Weng.png deleted file mode 100644 index fa4d75f..0000000 Binary files a/images/jetons/scenarios_officiels/droit_de_garde/Amelia_Weng.png and /dev/null differ diff --git a/images/jetons/scenarios_officiels/droit_de_garde/Amelia_Weng.webp b/images/jetons/scenarios_officiels/droit_de_garde/Amelia_Weng.webp new file mode 100644 index 0000000..8ea4f80 Binary files /dev/null and b/images/jetons/scenarios_officiels/droit_de_garde/Amelia_Weng.webp differ diff --git a/images/jetons/scenarios_officiels/droit_de_garde/Din.png b/images/jetons/scenarios_officiels/droit_de_garde/Din.png deleted file mode 100644 index fd64bd4..0000000 Binary files a/images/jetons/scenarios_officiels/droit_de_garde/Din.png and /dev/null differ diff --git a/images/jetons/scenarios_officiels/droit_de_garde/Din.webp b/images/jetons/scenarios_officiels/droit_de_garde/Din.webp new file mode 100644 index 0000000..772006b Binary files /dev/null and b/images/jetons/scenarios_officiels/droit_de_garde/Din.webp differ diff --git a/images/jetons/scenarios_officiels/droit_de_garde/Gaaujan.png b/images/jetons/scenarios_officiels/droit_de_garde/Gaaujan.png deleted file mode 100644 index ed8a7fe..0000000 Binary files a/images/jetons/scenarios_officiels/droit_de_garde/Gaaujan.png and /dev/null differ diff --git a/images/jetons/scenarios_officiels/droit_de_garde/Gaaujan.webp b/images/jetons/scenarios_officiels/droit_de_garde/Gaaujan.webp new file mode 100644 index 0000000..c42938a Binary files /dev/null and b/images/jetons/scenarios_officiels/droit_de_garde/Gaaujan.webp differ diff --git a/images/jetons/scenarios_officiels/droit_de_garde/John_Chek.png b/images/jetons/scenarios_officiels/droit_de_garde/John_Chek.png deleted file mode 100644 index 0078756..0000000 Binary files a/images/jetons/scenarios_officiels/droit_de_garde/John_Chek.png and /dev/null differ diff --git a/images/jetons/scenarios_officiels/droit_de_garde/John_Chek.webp b/images/jetons/scenarios_officiels/droit_de_garde/John_Chek.webp new file mode 100644 index 0000000..722e3be Binary files /dev/null and b/images/jetons/scenarios_officiels/droit_de_garde/John_Chek.webp differ diff --git a/images/jetons/scenarios_officiels/droit_de_garde/Saam_Pui.png b/images/jetons/scenarios_officiels/droit_de_garde/Saam_Pui.png deleted file mode 100644 index c99aa6f..0000000 Binary files a/images/jetons/scenarios_officiels/droit_de_garde/Saam_Pui.png and /dev/null differ diff --git a/images/jetons/scenarios_officiels/droit_de_garde/Saam_Pui.webp b/images/jetons/scenarios_officiels/droit_de_garde/Saam_Pui.webp new file mode 100644 index 0000000..fba6102 Binary files /dev/null and b/images/jetons/scenarios_officiels/droit_de_garde/Saam_Pui.webp differ diff --git a/images/jetons/scenarios_officiels/fred_boot_comme_un_singe_sans_laisse/fred_boot_Danny.png b/images/jetons/scenarios_officiels/fred_boot_comme_un_singe_sans_laisse/fred_boot_Danny.png deleted file mode 100644 index 3c0fd25..0000000 Binary files a/images/jetons/scenarios_officiels/fred_boot_comme_un_singe_sans_laisse/fred_boot_Danny.png and /dev/null differ diff --git a/images/jetons/scenarios_officiels/fred_boot_comme_un_singe_sans_laisse/fred_boot_Danny.webp b/images/jetons/scenarios_officiels/fred_boot_comme_un_singe_sans_laisse/fred_boot_Danny.webp new file mode 100644 index 0000000..ee5ae73 Binary files /dev/null and b/images/jetons/scenarios_officiels/fred_boot_comme_un_singe_sans_laisse/fred_boot_Danny.webp differ diff --git a/images/jetons/scenarios_officiels/fred_boot_comme_un_singe_sans_laisse/fred_boot_Dou_Coeng.png b/images/jetons/scenarios_officiels/fred_boot_comme_un_singe_sans_laisse/fred_boot_Dou_Coeng.png deleted file mode 100644 index cc45481..0000000 Binary files a/images/jetons/scenarios_officiels/fred_boot_comme_un_singe_sans_laisse/fred_boot_Dou_Coeng.png and /dev/null differ diff --git a/images/jetons/scenarios_officiels/fred_boot_comme_un_singe_sans_laisse/fred_boot_Dou_Coeng.webp b/images/jetons/scenarios_officiels/fred_boot_comme_un_singe_sans_laisse/fred_boot_Dou_Coeng.webp new file mode 100644 index 0000000..45f986f Binary files /dev/null and b/images/jetons/scenarios_officiels/fred_boot_comme_un_singe_sans_laisse/fred_boot_Dou_Coeng.webp differ diff --git a/images/jetons/scenarios_officiels/fred_boot_comme_un_singe_sans_laisse/fred_boot_Freddie.png b/images/jetons/scenarios_officiels/fred_boot_comme_un_singe_sans_laisse/fred_boot_Freddie.png deleted file mode 100644 index a3a7756..0000000 Binary files a/images/jetons/scenarios_officiels/fred_boot_comme_un_singe_sans_laisse/fred_boot_Freddie.png and /dev/null differ diff --git a/images/jetons/scenarios_officiels/fred_boot_comme_un_singe_sans_laisse/fred_boot_Freddie.webp b/images/jetons/scenarios_officiels/fred_boot_comme_un_singe_sans_laisse/fred_boot_Freddie.webp new file mode 100644 index 0000000..aba915e Binary files /dev/null and b/images/jetons/scenarios_officiels/fred_boot_comme_un_singe_sans_laisse/fred_boot_Freddie.webp differ diff --git a/images/jetons/scenarios_officiels/fred_boot_comme_un_singe_sans_laisse/fred_boot_Sam.png b/images/jetons/scenarios_officiels/fred_boot_comme_un_singe_sans_laisse/fred_boot_Sam.png deleted file mode 100644 index d8855bb..0000000 Binary files a/images/jetons/scenarios_officiels/fred_boot_comme_un_singe_sans_laisse/fred_boot_Sam.png and /dev/null differ diff --git a/images/jetons/scenarios_officiels/fred_boot_comme_un_singe_sans_laisse/fred_boot_Sam.webp b/images/jetons/scenarios_officiels/fred_boot_comme_un_singe_sans_laisse/fred_boot_Sam.webp new file mode 100644 index 0000000..9f629a8 Binary files /dev/null and b/images/jetons/scenarios_officiels/fred_boot_comme_un_singe_sans_laisse/fred_boot_Sam.webp differ diff --git a/images/jetons/scenarios_officiels/fred_boot_comme_un_singe_sans_laisse/fred_boot_Wing_Long.png b/images/jetons/scenarios_officiels/fred_boot_comme_un_singe_sans_laisse/fred_boot_Wing_Long.png deleted file mode 100644 index d6eee0d..0000000 Binary files a/images/jetons/scenarios_officiels/fred_boot_comme_un_singe_sans_laisse/fred_boot_Wing_Long.png and /dev/null differ diff --git a/images/jetons/scenarios_officiels/fred_boot_comme_un_singe_sans_laisse/fred_boot_Wing_Long.webp b/images/jetons/scenarios_officiels/fred_boot_comme_un_singe_sans_laisse/fred_boot_Wing_Long.webp new file mode 100644 index 0000000..bb0cf09 Binary files /dev/null and b/images/jetons/scenarios_officiels/fred_boot_comme_un_singe_sans_laisse/fred_boot_Wing_Long.webp differ diff --git a/images/jetons/scenarios_officiels/le_gambit_du_demon/jeton_Beth_Jung.png b/images/jetons/scenarios_officiels/le_gambit_du_demon/jeton_Beth_Jung.png deleted file mode 100644 index 40b5ffc..0000000 Binary files a/images/jetons/scenarios_officiels/le_gambit_du_demon/jeton_Beth_Jung.png and /dev/null differ diff --git a/images/jetons/scenarios_officiels/le_gambit_du_demon/jeton_Beth_Jung.webp b/images/jetons/scenarios_officiels/le_gambit_du_demon/jeton_Beth_Jung.webp new file mode 100644 index 0000000..ab3de8b Binary files /dev/null and b/images/jetons/scenarios_officiels/le_gambit_du_demon/jeton_Beth_Jung.webp differ diff --git a/images/jetons/scenarios_officiels/le_gambit_du_demon/jeton_Charlie_Weng.png b/images/jetons/scenarios_officiels/le_gambit_du_demon/jeton_Charlie_Weng.png deleted file mode 100644 index 0174a45..0000000 Binary files a/images/jetons/scenarios_officiels/le_gambit_du_demon/jeton_Charlie_Weng.png and /dev/null differ diff --git a/images/jetons/scenarios_officiels/le_gambit_du_demon/jeton_Charlie_Weng.webp b/images/jetons/scenarios_officiels/le_gambit_du_demon/jeton_Charlie_Weng.webp new file mode 100644 index 0000000..31c8028 Binary files /dev/null and b/images/jetons/scenarios_officiels/le_gambit_du_demon/jeton_Charlie_Weng.webp differ diff --git a/images/jetons/scenarios_officiels/le_gambit_du_demon/jeton_Emma_Zheng.png b/images/jetons/scenarios_officiels/le_gambit_du_demon/jeton_Emma_Zheng.png deleted file mode 100644 index 82924dd..0000000 Binary files a/images/jetons/scenarios_officiels/le_gambit_du_demon/jeton_Emma_Zheng.png and /dev/null differ diff --git a/images/jetons/scenarios_officiels/le_gambit_du_demon/jeton_Emma_Zheng.webp b/images/jetons/scenarios_officiels/le_gambit_du_demon/jeton_Emma_Zheng.webp new file mode 100644 index 0000000..8e64d7c Binary files /dev/null and b/images/jetons/scenarios_officiels/le_gambit_du_demon/jeton_Emma_Zheng.webp differ diff --git a/images/jetons/scenarios_officiels/le_gambit_du_demon/jeton_Eric_Zheng.png b/images/jetons/scenarios_officiels/le_gambit_du_demon/jeton_Eric_Zheng.png deleted file mode 100644 index 3ea3ac8..0000000 Binary files a/images/jetons/scenarios_officiels/le_gambit_du_demon/jeton_Eric_Zheng.png and /dev/null differ diff --git a/images/jetons/scenarios_officiels/le_gambit_du_demon/jeton_Eric_Zheng.webp b/images/jetons/scenarios_officiels/le_gambit_du_demon/jeton_Eric_Zheng.webp new file mode 100644 index 0000000..b74284e Binary files /dev/null and b/images/jetons/scenarios_officiels/le_gambit_du_demon/jeton_Eric_Zheng.webp differ diff --git a/images/jetons/scenarios_officiels/le_gambit_du_demon/jeton_Jack_Pei.png b/images/jetons/scenarios_officiels/le_gambit_du_demon/jeton_Jack_Pei.png deleted file mode 100644 index 3b3dc0a..0000000 Binary files a/images/jetons/scenarios_officiels/le_gambit_du_demon/jeton_Jack_Pei.png and /dev/null differ diff --git a/images/jetons/scenarios_officiels/le_gambit_du_demon/jeton_Jack_Pei.webp b/images/jetons/scenarios_officiels/le_gambit_du_demon/jeton_Jack_Pei.webp new file mode 100644 index 0000000..a63da98 Binary files /dev/null and b/images/jetons/scenarios_officiels/le_gambit_du_demon/jeton_Jack_Pei.webp differ diff --git a/images/jetons/scenarios_officiels/le_gambit_du_demon/jeton_Mike_Liu.png b/images/jetons/scenarios_officiels/le_gambit_du_demon/jeton_Mike_Liu.png deleted file mode 100644 index 8b5f698..0000000 Binary files a/images/jetons/scenarios_officiels/le_gambit_du_demon/jeton_Mike_Liu.png and /dev/null differ diff --git a/images/jetons/scenarios_officiels/le_gambit_du_demon/jeton_Mike_Liu.webp b/images/jetons/scenarios_officiels/le_gambit_du_demon/jeton_Mike_Liu.webp new file mode 100644 index 0000000..8b00aee Binary files /dev/null and b/images/jetons/scenarios_officiels/le_gambit_du_demon/jeton_Mike_Liu.webp differ diff --git a/images/jetons/scenarios_officiels/le_gambit_du_demon/jeton_Paul_Kau.png b/images/jetons/scenarios_officiels/le_gambit_du_demon/jeton_Paul_Kau.png deleted file mode 100644 index 9a3034c..0000000 Binary files a/images/jetons/scenarios_officiels/le_gambit_du_demon/jeton_Paul_Kau.png and /dev/null differ diff --git a/images/jetons/scenarios_officiels/le_gambit_du_demon/jeton_Paul_Kau.webp b/images/jetons/scenarios_officiels/le_gambit_du_demon/jeton_Paul_Kau.webp new file mode 100644 index 0000000..a065060 Binary files /dev/null and b/images/jetons/scenarios_officiels/le_gambit_du_demon/jeton_Paul_Kau.webp differ diff --git a/images/jetons/scenarios_officiels/le_gambit_du_demon/jeton_Phil_Lam.png b/images/jetons/scenarios_officiels/le_gambit_du_demon/jeton_Phil_Lam.png deleted file mode 100644 index ab8ba3b..0000000 Binary files a/images/jetons/scenarios_officiels/le_gambit_du_demon/jeton_Phil_Lam.png and /dev/null differ diff --git a/images/jetons/scenarios_officiels/le_gambit_du_demon/jeton_Phil_Lam.webp b/images/jetons/scenarios_officiels/le_gambit_du_demon/jeton_Phil_Lam.webp new file mode 100644 index 0000000..4155691 Binary files /dev/null and b/images/jetons/scenarios_officiels/le_gambit_du_demon/jeton_Phil_Lam.webp differ diff --git a/images/jetons/scenarios_officiels/le_gambit_du_demon/jeton_Sarah_Jan.png b/images/jetons/scenarios_officiels/le_gambit_du_demon/jeton_Sarah_Jan.png deleted file mode 100644 index 20dc8ce..0000000 Binary files a/images/jetons/scenarios_officiels/le_gambit_du_demon/jeton_Sarah_Jan.png and /dev/null differ diff --git a/images/jetons/scenarios_officiels/le_gambit_du_demon/jeton_Sarah_Jan.webp b/images/jetons/scenarios_officiels/le_gambit_du_demon/jeton_Sarah_Jan.webp new file mode 100644 index 0000000..038e02f Binary files /dev/null and b/images/jetons/scenarios_officiels/le_gambit_du_demon/jeton_Sarah_Jan.webp differ diff --git a/images/jetons/scenarios_officiels/le_gambit_du_demon/jeton_ogre.png b/images/jetons/scenarios_officiels/le_gambit_du_demon/jeton_ogre.png deleted file mode 100644 index 0b25bea..0000000 Binary files a/images/jetons/scenarios_officiels/le_gambit_du_demon/jeton_ogre.png and /dev/null differ diff --git a/images/jetons/scenarios_officiels/le_gambit_du_demon/jeton_ogre.webp b/images/jetons/scenarios_officiels/le_gambit_du_demon/jeton_ogre.webp new file mode 100644 index 0000000..80085ae Binary files /dev/null and b/images/jetons/scenarios_officiels/le_gambit_du_demon/jeton_ogre.webp differ diff --git a/images/kung-fu/Baton.png b/images/kung-fu/Baton.png deleted file mode 100644 index 7ac6394..0000000 Binary files a/images/kung-fu/Baton.png and /dev/null differ diff --git a/images/kung-fu/Baton.webp b/images/kung-fu/Baton.webp new file mode 100644 index 0000000..722d3f0 Binary files /dev/null and b/images/kung-fu/Baton.webp differ diff --git a/images/kung-fu/Baton_whole.png b/images/kung-fu/Baton_whole.png deleted file mode 100644 index 73a0c5f..0000000 Binary files a/images/kung-fu/Baton_whole.png and /dev/null differ diff --git a/images/kung-fu/Baton_whole.webp b/images/kung-fu/Baton_whole.webp new file mode 100644 index 0000000..271c95a Binary files /dev/null and b/images/kung-fu/Baton_whole.webp differ diff --git a/images/kung-fu/arc.png b/images/kung-fu/arc.png deleted file mode 100644 index 5e6d999..0000000 Binary files a/images/kung-fu/arc.png and /dev/null differ diff --git a/images/kung-fu/arc.webp b/images/kung-fu/arc.webp new file mode 100644 index 0000000..ffecb68 Binary files /dev/null and b/images/kung-fu/arc.webp differ diff --git a/images/kung-fu/boxe.png b/images/kung-fu/boxe.png deleted file mode 100644 index 5f9191d..0000000 Binary files a/images/kung-fu/boxe.png and /dev/null differ diff --git a/images/kung-fu/boxe.webp b/images/kung-fu/boxe.webp new file mode 100644 index 0000000..a35e865 Binary files /dev/null and b/images/kung-fu/boxe.webp differ diff --git a/images/kung-fu/corde.png b/images/kung-fu/corde.png deleted file mode 100644 index add6f1c..0000000 Binary files a/images/kung-fu/corde.png and /dev/null differ diff --git a/images/kung-fu/corde.webp b/images/kung-fu/corde.webp new file mode 100644 index 0000000..bad75ad Binary files /dev/null and b/images/kung-fu/corde.webp differ diff --git a/images/kung-fu/couteaux-papillon.png b/images/kung-fu/couteaux-papillon.png deleted file mode 100644 index cb2cf8a..0000000 Binary files a/images/kung-fu/couteaux-papillon.png and /dev/null differ diff --git a/images/kung-fu/couteaux-papillon.webp b/images/kung-fu/couteaux-papillon.webp new file mode 100644 index 0000000..5361788 Binary files /dev/null and b/images/kung-fu/couteaux-papillon.webp differ diff --git a/images/kung-fu/epee.png b/images/kung-fu/epee.png deleted file mode 100644 index 9991241..0000000 Binary files a/images/kung-fu/epee.png and /dev/null differ diff --git a/images/kung-fu/epee.webp b/images/kung-fu/epee.webp new file mode 100644 index 0000000..d7b4746 Binary files /dev/null and b/images/kung-fu/epee.webp differ diff --git a/images/kung-fu/epees.png b/images/kung-fu/epees.png deleted file mode 100644 index f3f5440..0000000 Binary files a/images/kung-fu/epees.png and /dev/null differ diff --git a/images/kung-fu/epees.webp b/images/kung-fu/epees.webp new file mode 100644 index 0000000..99a8add Binary files /dev/null and b/images/kung-fu/epees.webp differ diff --git a/images/kung-fu/kung-fu-2-moins.png b/images/kung-fu/kung-fu-2-moins.png deleted file mode 100644 index 64c0d8e..0000000 Binary files a/images/kung-fu/kung-fu-2-moins.png and /dev/null differ diff --git a/images/kung-fu/kung-fu-2-moins.webp b/images/kung-fu/kung-fu-2-moins.webp new file mode 100644 index 0000000..db0e9cd Binary files /dev/null and b/images/kung-fu/kung-fu-2-moins.webp differ diff --git a/images/kung-fu/kung-fu-2-plus.png b/images/kung-fu/kung-fu-2-plus.png deleted file mode 100644 index 3e63399..0000000 Binary files a/images/kung-fu/kung-fu-2-plus.png and /dev/null differ diff --git a/images/kung-fu/kung-fu-2-plus.webp b/images/kung-fu/kung-fu-2-plus.webp new file mode 100644 index 0000000..03e3ff0 Binary files /dev/null and b/images/kung-fu/kung-fu-2-plus.webp differ diff --git a/images/kung-fu/kung-fu-2.png b/images/kung-fu/kung-fu-2.png deleted file mode 100644 index 39c357f..0000000 Binary files a/images/kung-fu/kung-fu-2.png and /dev/null differ diff --git a/images/kung-fu/kung-fu-2.webp b/images/kung-fu/kung-fu-2.webp new file mode 100644 index 0000000..dd48628 Binary files /dev/null and b/images/kung-fu/kung-fu-2.webp differ diff --git a/images/kung-fu/kung-fu.png b/images/kung-fu/kung-fu.png deleted file mode 100644 index 9e7e0a8..0000000 Binary files a/images/kung-fu/kung-fu.png and /dev/null differ diff --git a/images/kung-fu/kung-fu.webp b/images/kung-fu/kung-fu.webp new file mode 100644 index 0000000..672e59b Binary files /dev/null and b/images/kung-fu/kung-fu.webp differ diff --git a/images/kung-fu/lance-loyale.png b/images/kung-fu/lance-loyale.png deleted file mode 100644 index fb2b9a8..0000000 Binary files a/images/kung-fu/lance-loyale.png and /dev/null differ diff --git a/images/kung-fu/lance-loyale.webp b/images/kung-fu/lance-loyale.webp new file mode 100644 index 0000000..99fa7fa Binary files /dev/null and b/images/kung-fu/lance-loyale.webp differ diff --git a/images/kung-fu/nunchaku.png b/images/kung-fu/nunchaku.png deleted file mode 100644 index fae94d5..0000000 Binary files a/images/kung-fu/nunchaku.png and /dev/null differ diff --git a/images/kung-fu/nunchaku.webp b/images/kung-fu/nunchaku.webp new file mode 100644 index 0000000..e44e3bc Binary files /dev/null and b/images/kung-fu/nunchaku.webp differ diff --git a/images/kung-fu/pistolet.png b/images/kung-fu/pistolet.png deleted file mode 100644 index fc157b8..0000000 Binary files a/images/kung-fu/pistolet.png and /dev/null differ diff --git a/images/kung-fu/pistolet.webp b/images/kung-fu/pistolet.webp new file mode 100644 index 0000000..744f01c Binary files /dev/null and b/images/kung-fu/pistolet.webp differ diff --git a/images/kung-fu/poignard.png b/images/kung-fu/poignard.png deleted file mode 100644 index e831ce8..0000000 Binary files a/images/kung-fu/poignard.png and /dev/null differ diff --git a/images/kung-fu/poignard.webp b/images/kung-fu/poignard.webp new file mode 100644 index 0000000..2f68fd9 Binary files /dev/null and b/images/kung-fu/poignard.webp differ diff --git a/images/kung-fu/poignards-volants.png b/images/kung-fu/poignards-volants.png deleted file mode 100644 index bbc44d9..0000000 Binary files a/images/kung-fu/poignards-volants.png and /dev/null differ diff --git a/images/kung-fu/poignards-volants.webp b/images/kung-fu/poignards-volants.webp new file mode 100644 index 0000000..c9a9be3 Binary files /dev/null and b/images/kung-fu/poignards-volants.webp differ diff --git a/images/kung-fu/shurican.png b/images/kung-fu/shurican.png deleted file mode 100644 index b9787be..0000000 Binary files a/images/kung-fu/shurican.png and /dev/null differ diff --git a/images/kung-fu/shurican.webp b/images/kung-fu/shurican.webp new file mode 100644 index 0000000..2c99f2a Binary files /dev/null and b/images/kung-fu/shurican.webp differ diff --git a/images/kung-fu/trois-joyaux.png b/images/kung-fu/trois-joyaux.png deleted file mode 100644 index a103ed4..0000000 Binary files a/images/kung-fu/trois-joyaux.png and /dev/null differ diff --git a/images/kung-fu/trois-joyaux.webp b/images/kung-fu/trois-joyaux.webp new file mode 100644 index 0000000..98e9623 Binary files /dev/null and b/images/kung-fu/trois-joyaux.webp differ diff --git a/images/logo_dore.png b/images/logo_dore.png deleted file mode 100644 index 8097517..0000000 Binary files a/images/logo_dore.png and /dev/null differ diff --git a/images/logo_dore.webp b/images/logo_dore.webp new file mode 100644 index 0000000..0a6d77d Binary files /dev/null and b/images/logo_dore.webp differ diff --git a/images/logo_jeu.png b/images/logo_jeu.png deleted file mode 100644 index 3d024a6..0000000 Binary files a/images/logo_jeu.png and /dev/null differ diff --git a/images/logo_jeu.webp b/images/logo_jeu.webp new file mode 100644 index 0000000..e843ef7 Binary files /dev/null and b/images/logo_jeu.webp differ diff --git a/images/loksyu.png b/images/loksyu.png deleted file mode 100644 index 7d00ff7..0000000 Binary files a/images/loksyu.png and /dev/null differ diff --git a/images/loksyu.webp b/images/loksyu.webp new file mode 100644 index 0000000..f71d80c Binary files /dev/null and b/images/loksyu.webp differ diff --git a/images/loksyu_fd_trans.png b/images/loksyu_fd_trans.png deleted file mode 100644 index 4b0e5c3..0000000 Binary files a/images/loksyu_fd_trans.png and /dev/null differ diff --git a/images/loksyu_fd_trans.webp b/images/loksyu_fd_trans.webp new file mode 100644 index 0000000..fb0a560 Binary files /dev/null and b/images/loksyu_fd_trans.webp differ diff --git a/images/loksyu_long.png b/images/loksyu_long.png deleted file mode 100644 index e5f4b5d..0000000 Binary files a/images/loksyu_long.png and /dev/null differ diff --git a/images/loksyu_long.webp b/images/loksyu_long.webp new file mode 100644 index 0000000..9a9e649 Binary files /dev/null and b/images/loksyu_long.webp differ diff --git a/images/macro.png b/images/macro.png deleted file mode 100644 index e89ccf2..0000000 Binary files a/images/macro.png and /dev/null differ diff --git a/images/macro.webp b/images/macro.webp new file mode 100644 index 0000000..522314e Binary files /dev/null and b/images/macro.webp differ diff --git a/images/nghang.png b/images/nghang.png deleted file mode 100644 index cdf016a..0000000 Binary files a/images/nghang.png and /dev/null differ diff --git a/images/nghang.webp b/images/nghang.webp new file mode 100644 index 0000000..8867c2c Binary files /dev/null and b/images/nghang.webp differ diff --git a/images/nghang_long.png b/images/nghang_long.png deleted file mode 100644 index 03f0e78..0000000 Binary files a/images/nghang_long.png and /dev/null differ diff --git a/images/nghang_long.webp b/images/nghang_long.webp new file mode 100644 index 0000000..998adb7 Binary files /dev/null and b/images/nghang_long.webp differ diff --git a/images/reverse_initiative_order.png b/images/reverse_initiative_order.png deleted file mode 100644 index 9cf20d0..0000000 Binary files a/images/reverse_initiative_order.png and /dev/null differ diff --git a/images/reverse_initiative_order.webp b/images/reverse_initiative_order.webp new file mode 100644 index 0000000..d9e6af8 Binary files /dev/null and b/images/reverse_initiative_order.webp differ diff --git a/images/roue.png b/images/roue.png deleted file mode 100644 index f133ddd..0000000 Binary files a/images/roue.png and /dev/null differ diff --git a/images/roue.webp b/images/roue.webp new file mode 100644 index 0000000..c26942f Binary files /dev/null and b/images/roue.webp differ diff --git a/images/sanhei/bouclier_naazaa.png b/images/sanhei/bouclier_naazaa.png deleted file mode 100644 index 261a6ef..0000000 Binary files a/images/sanhei/bouclier_naazaa.png and /dev/null differ diff --git a/images/sanhei/bouclier_naazaa.webp b/images/sanhei/bouclier_naazaa.webp new file mode 100644 index 0000000..f90c732 Binary files /dev/null and b/images/sanhei/bouclier_naazaa.webp differ diff --git a/images/sanhei/chapelet_infini.png b/images/sanhei/chapelet_infini.png deleted file mode 100644 index 5675b71..0000000 Binary files a/images/sanhei/chapelet_infini.png and /dev/null differ diff --git a/images/sanhei/chapelet_infini.webp b/images/sanhei/chapelet_infini.webp new file mode 100644 index 0000000..de24e56 Binary files /dev/null and b/images/sanhei/chapelet_infini.webp differ diff --git a/images/sanhei/cinq_tempetes.png b/images/sanhei/cinq_tempetes.png deleted file mode 100644 index 4c6a48e..0000000 Binary files a/images/sanhei/cinq_tempetes.png and /dev/null differ diff --git a/images/sanhei/cinq_tempetes.webp b/images/sanhei/cinq_tempetes.webp new file mode 100644 index 0000000..6eaffc9 Binary files /dev/null and b/images/sanhei/cinq_tempetes.webp differ diff --git a/images/sanhei/derniere_epee_yiu.png b/images/sanhei/derniere_epee_yiu.png deleted file mode 100644 index 4c3bee8..0000000 Binary files a/images/sanhei/derniere_epee_yiu.png and /dev/null differ diff --git a/images/sanhei/derniere_epee_yiu.webp b/images/sanhei/derniere_epee_yiu.webp new file mode 100644 index 0000000..3d976ce Binary files /dev/null and b/images/sanhei/derniere_epee_yiu.webp differ diff --git a/images/sanhei/larmes_soeng_ngo.png b/images/sanhei/larmes_soeng_ngo.png deleted file mode 100644 index 8331721..0000000 Binary files a/images/sanhei/larmes_soeng_ngo.png and /dev/null differ diff --git a/images/sanhei/larmes_soeng_ngo.webp b/images/sanhei/larmes_soeng_ngo.webp new file mode 100644 index 0000000..0e13f5a Binary files /dev/null and b/images/sanhei/larmes_soeng_ngo.webp differ diff --git a/images/sanhei/montagne_immobile.png b/images/sanhei/montagne_immobile.png deleted file mode 100644 index e48c540..0000000 Binary files a/images/sanhei/montagne_immobile.png and /dev/null differ diff --git a/images/sanhei/montagne_immobile.webp b/images/sanhei/montagne_immobile.webp new file mode 100644 index 0000000..fa2509b Binary files /dev/null and b/images/sanhei/montagne_immobile.webp differ diff --git a/images/sanhei/morsure_soleil.png b/images/sanhei/morsure_soleil.png deleted file mode 100644 index 0a6f01a..0000000 Binary files a/images/sanhei/morsure_soleil.png and /dev/null differ diff --git a/images/sanhei/morsure_soleil.webp b/images/sanhei/morsure_soleil.webp new file mode 100644 index 0000000..d3142f5 Binary files /dev/null and b/images/sanhei/morsure_soleil.webp differ diff --git a/images/sanhei/regard_abyssal.png b/images/sanhei/regard_abyssal.png deleted file mode 100644 index ee7a481..0000000 Binary files a/images/sanhei/regard_abyssal.png and /dev/null differ diff --git a/images/sanhei/regard_abyssal.webp b/images/sanhei/regard_abyssal.webp new file mode 100644 index 0000000..67de8db Binary files /dev/null and b/images/sanhei/regard_abyssal.webp differ diff --git a/images/sanhei/serendipite.png b/images/sanhei/serendipite.png deleted file mode 100644 index 9bcf1d0..0000000 Binary files a/images/sanhei/serendipite.png and /dev/null differ diff --git a/images/sanhei/serendipite.webp b/images/sanhei/serendipite.webp new file mode 100644 index 0000000..719fac7 Binary files /dev/null and b/images/sanhei/serendipite.webp differ diff --git a/images/sanhei/vent_crepuscule.png b/images/sanhei/vent_crepuscule.png deleted file mode 100644 index 9148d1d..0000000 Binary files a/images/sanhei/vent_crepuscule.png and /dev/null differ diff --git a/images/sanhei/vent_crepuscule.webp b/images/sanhei/vent_crepuscule.webp new file mode 100644 index 0000000..0064256 Binary files /dev/null and b/images/sanhei/vent_crepuscule.webp differ diff --git a/images/wheel.png b/images/wheel.png deleted file mode 100644 index d46f53a..0000000 Binary files a/images/wheel.png and /dev/null differ diff --git a/images/wheel.webp b/images/wheel.webp index 4bec820..fae4c15 100644 Binary files a/images/wheel.webp and b/images/wheel.webp differ diff --git a/images/yin_yang.png b/images/yin_yang.png deleted file mode 100644 index 5752695..0000000 Binary files a/images/yin_yang.png and /dev/null differ diff --git a/images/yin_yang.webp b/images/yin_yang.webp new file mode 100644 index 0000000..32efc5d Binary files /dev/null and b/images/yin_yang.webp differ diff --git a/src/config/constants.js b/src/config/constants.js index f02ee03..dc86b96 100644 --- a/src/config/constants.js +++ b/src/config/constants.js @@ -32,11 +32,11 @@ export const MAGICS = { label: "CDE.InternalCinnabar", aspectlabel: "CDE.Metal", speciality: { - essence: { label: "CDE.Essence", classicon: "icon-yin", icon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yin.png", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_metal.png", labelicon: "Yin", labelelement: "CDE.Metal" }, - mind: { label: "CDE.Mind", classicon: "icon-yin", icon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yin.png", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_eau.png", labelicon: "Yin", labelelement: "CDE.Water" }, - purification: { label: "CDE.Purification", classicon: "icon-yinyang", icon: "/systems/fvtt-chroniques-de-l-etrange/images/yin_yang.png", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_terre.png", labelicon: "Yin/Yang", labelelement: "CDE.Earth" }, - manipulation: { label: "CDE.Manipulation", classicon: "icon-yang", icon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yang.png", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_feu.png", labelicon: "Yang", labelelement: "CDE.Fire" }, - aura: { label: "CDE.Aura", classicon: "icon-yang", icon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yang.png", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_bois.png", labelicon: "Yang", labelelement: "CDE.Wood" }, + essence: { label: "CDE.Essence", classicon: "icon-yin", icon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yin.webp", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_metal.webp", labelicon: "Yin", labelelement: "CDE.Metal" }, + mind: { label: "CDE.Mind", classicon: "icon-yin", icon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yin.webp", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_eau.webp", labelicon: "Yin", labelelement: "CDE.Water" }, + purification: { label: "CDE.Purification", classicon: "icon-yinyang", icon: "/systems/fvtt-chroniques-de-l-etrange/images/yin_yang.webp", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_terre.webp", labelicon: "Yin/Yang", labelelement: "CDE.Earth" }, + manipulation: { label: "CDE.Manipulation", classicon: "icon-yang", icon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yang.webp", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_feu.webp", labelicon: "Yang", labelelement: "CDE.Fire" }, + aura: { label: "CDE.Aura", classicon: "icon-yang", icon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yang.webp", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_bois.webp", labelicon: "Yang", labelelement: "CDE.Wood" }, }, }, alchemy: { @@ -45,11 +45,11 @@ export const MAGICS = { label: "CDE.Alchemy", aspectlabel: "CDE.Water", speciality: { - acupuncture: { label: "CDE.Acupuncture", classicon: "icon-yin", icon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yin.png", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_metal.png", labelicon: "Yin", labelelement: "CDE.Metal" }, - elixirs: { label: "CDE.Elixirs", classicon: "icon-yin", icon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yin.png", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_eau.png", labelicon: "Yin", labelelement: "CDE.Water" }, - poisons: { label: "CDE.Poisons", classicon: "icon-yinyang", icon: "/systems/fvtt-chroniques-de-l-etrange/images/yin_yang.png", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_terre.png", labelicon: "Yin/Yang", labelelement: "CDE.Earth" }, - arsenal: { label: "CDE.Arsenal", classicon: "icon-yang", icon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yang.png", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_feu.png", labelicon: "Yang", labelelement: "CDE.Fire" }, - potions: { label: "CDE.Potions", classicon: "icon-yang", icon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yang.png", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_bois.png", labelicon: "Yang", labelelement: "CDE.Wood" }, + acupuncture: { label: "CDE.Acupuncture", classicon: "icon-yin", icon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yin.webp", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_metal.webp", labelicon: "Yin", labelelement: "CDE.Metal" }, + elixirs: { label: "CDE.Elixirs", classicon: "icon-yin", icon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yin.webp", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_eau.webp", labelicon: "Yin", labelelement: "CDE.Water" }, + poisons: { label: "CDE.Poisons", classicon: "icon-yinyang", icon: "/systems/fvtt-chroniques-de-l-etrange/images/yin_yang.webp", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_terre.webp", labelicon: "Yin/Yang", labelelement: "CDE.Earth" }, + arsenal: { label: "CDE.Arsenal", classicon: "icon-yang", icon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yang.webp", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_feu.webp", labelicon: "Yang", labelelement: "CDE.Fire" }, + potions: { label: "CDE.Potions", classicon: "icon-yang", icon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yang.webp", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_bois.webp", labelicon: "Yang", labelelement: "CDE.Wood" }, }, }, masteryoftheway: { @@ -58,11 +58,11 @@ export const MAGICS = { label: "CDE.MasteryOfTheWay", aspectlabel: "CDE.Earth", speciality: { - curse: { label: "CDE.Curse", classicon: "icon-yin", icon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yin.png", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_metal.png", labelicon: "Yin", labelelement: "CDE.Metal" }, - transfiguration: { label: "CDE.Transfiguration", classicon: "icon-yin", icon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yin.png", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_eau.png", labelicon: "Yin", labelelement: "CDE.Water" }, - necromancy: { label: "CDE.Necromancy", classicon: "icon-yinyang", icon: "/systems/fvtt-chroniques-de-l-etrange/images/yin_yang.png", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_terre.png", labelicon: "Yin/Yang", labelelement: "CDE.Earth" }, - climatecontrol: { label: "CDE.ClimateControl", classicon: "icon-yang", icon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yang.png", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_feu.png", labelicon: "Yang", labelelement: "CDE.Fire" }, - goldenmagic: { label: "CDE.GoldenMagic", classicon: "icon-yang", icon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yang.png", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_bois.png", labelicon: "Yang", labelelement: "CDE.Wood" }, + curse: { label: "CDE.Curse", classicon: "icon-yin", icon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yin.webp", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_metal.webp", labelicon: "Yin", labelelement: "CDE.Metal" }, + transfiguration: { label: "CDE.Transfiguration", classicon: "icon-yin", icon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yin.webp", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_eau.webp", labelicon: "Yin", labelelement: "CDE.Water" }, + necromancy: { label: "CDE.Necromancy", classicon: "icon-yinyang", icon: "/systems/fvtt-chroniques-de-l-etrange/images/yin_yang.webp", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_terre.webp", labelicon: "Yin/Yang", labelelement: "CDE.Earth" }, + climatecontrol: { label: "CDE.ClimateControl", classicon: "icon-yang", icon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yang.webp", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_feu.webp", labelicon: "Yang", labelelement: "CDE.Fire" }, + goldenmagic: { label: "CDE.GoldenMagic", classicon: "icon-yang", icon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yang.webp", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_bois.webp", labelicon: "Yang", labelelement: "CDE.Wood" }, }, }, exorcism: { @@ -71,11 +71,11 @@ export const MAGICS = { label: "CDE.Exorcism", aspectlabel: "CDE.Fire", speciality: { - invocation: { label: "CDE.Invocation", classicon: "icon-yin", icon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yin.png", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_metal.png", labelicon: "Yin", labelelement: "CDE.Metal" }, - tracking: { label: "CDE.Tracking", classicon: "icon-yin", icon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yin.png", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_eau.png", labelicon: "Yin", labelelement: "CDE.Water" }, - protection: { label: "CDE.Protection", classicon: "icon-yinyang", icon: "/systems/fvtt-chroniques-de-l-etrange/images/yin_yang.png", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_terre.png", labelicon: "Yin/Yang", labelelement: "CDE.Earth" }, - punishment: { label: "CDE.Punishment", classicon: "icon-yang", icon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yang.png", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_feu.png", labelicon: "Yang", labelelement: "CDE.Fire" }, - domination: { label: "CDE.Domination", classicon: "icon-yang", icon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yang.png", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_bois.png", labelicon: "Yang", labelelement: "CDE.Wood" }, + invocation: { label: "CDE.Invocation", classicon: "icon-yin", icon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yin.webp", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_metal.webp", labelicon: "Yin", labelelement: "CDE.Metal" }, + tracking: { label: "CDE.Tracking", classicon: "icon-yin", icon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yin.webp", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_eau.webp", labelicon: "Yin", labelelement: "CDE.Water" }, + protection: { label: "CDE.Protection", classicon: "icon-yinyang", icon: "/systems/fvtt-chroniques-de-l-etrange/images/yin_yang.webp", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_terre.webp", labelicon: "Yin/Yang", labelelement: "CDE.Earth" }, + punishment: { label: "CDE.Punishment", classicon: "icon-yang", icon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yang.webp", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_feu.webp", labelicon: "Yang", labelelement: "CDE.Fire" }, + domination: { label: "CDE.Domination", classicon: "icon-yang", icon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yang.webp", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_bois.webp", labelicon: "Yang", labelelement: "CDE.Wood" }, }, }, geomancy: { @@ -84,11 +84,11 @@ export const MAGICS = { label: "CDE.Geomancy", aspectlabel: "CDE.Wood", speciality: { - neutralization: { label: "CDE.Neutralization", classicon: "icon-yin", icon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yin.png", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_metal.png", labelicon: "Yin", labelelement: "CDE.Metal" }, - divination: { label: "CDE.Divination", classicon: "icon-yin", icon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yin.png", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_eau.png", labelicon: "Yin", labelelement: "CDE.Water" }, - earthlyprayer: { label: "CDE.EarthlyPrayer", classicon: "icon-yinyang", icon: "/systems/fvtt-chroniques-de-l-etrange/images/yin_yang.png", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_terre.png", labelicon: "Yin/Yang", labelelement: "CDE.Earth" }, - heavenlyprayer: { label: "CDE.HeavenlyPrayer", classicon: "icon-yang", icon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yang.png", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_feu.png", labelicon: "Yang", labelelement: "CDE.Fire" }, - fungseoi: { label: "CDE.Fungseoi", classicon: "icon-yang", icon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yang.png", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_bois.png", labelicon: "Yang", labelelement: "CDE.Wood" }, + neutralization: { label: "CDE.Neutralization", classicon: "icon-yin", icon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yin.webp", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_metal.webp", labelicon: "Yin", labelelement: "CDE.Metal" }, + divination: { label: "CDE.Divination", classicon: "icon-yin", icon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yin.webp", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_eau.webp", labelicon: "Yin", labelelement: "CDE.Water" }, + earthlyprayer: { label: "CDE.EarthlyPrayer", classicon: "icon-yinyang", icon: "/systems/fvtt-chroniques-de-l-etrange/images/yin_yang.webp", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_terre.webp", labelicon: "Yin/Yang", labelelement: "CDE.Earth" }, + heavenlyprayer: { label: "CDE.HeavenlyPrayer", classicon: "icon-yang", icon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yang.webp", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_feu.webp", labelicon: "Yang", labelelement: "CDE.Fire" }, + fungseoi: { label: "CDE.Fungseoi", classicon: "icon-yang", icon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yang.webp", elementicon: "/systems/fvtt-chroniques-de-l-etrange/images/cde_bois.webp", labelicon: "Yang", labelelement: "CDE.Wood" }, }, }, } diff --git a/src/system.js b/src/system.js index 59e3cd0..31dbc62 100644 --- a/src/system.js +++ b/src/system.js @@ -133,7 +133,7 @@ function injectCompendiumLink(html) { section.classList.add("settings", "flexcol") section.innerHTML = ` - + Lien utile diff --git a/src/ui/helpers.js b/src/ui/helpers.js index 9bd8742..39c695e 100644 --- a/src/ui/helpers.js +++ b/src/ui/helpers.js @@ -49,31 +49,31 @@ export function registerHandlebarsHelpers() { Handlebars.registerHelper("getMagicAspectIcon", function (magic) { const icons = { - internalcinnabar: "/systems/fvtt-chroniques-de-l-etrange/images/cde_metal.png", - alchemy: "/systems/fvtt-chroniques-de-l-etrange/images/cde_eau.png", - masteryoftheway: "/systems/fvtt-chroniques-de-l-etrange/images/cde_terre.png", - exorcism: "/systems/fvtt-chroniques-de-l-etrange/images/cde_feu.png", - geomancy: "/systems/fvtt-chroniques-de-l-etrange/images/cde_bois.png", + internalcinnabar: "/systems/fvtt-chroniques-de-l-etrange/images/cde_metal.webp", + alchemy: "/systems/fvtt-chroniques-de-l-etrange/images/cde_eau.webp", + masteryoftheway: "/systems/fvtt-chroniques-de-l-etrange/images/cde_terre.webp", + exorcism: "/systems/fvtt-chroniques-de-l-etrange/images/cde_feu.webp", + geomancy: "/systems/fvtt-chroniques-de-l-etrange/images/cde_bois.webp", } return icons[magic] ?? "" }) Handlebars.registerHelper("getElementIcon", function (aspect) { const icons = { - metal: "/systems/fvtt-chroniques-de-l-etrange/images/cde_metal.png", - eau: "/systems/fvtt-chroniques-de-l-etrange/images/cde_eau.png", - terre: "/systems/fvtt-chroniques-de-l-etrange/images/cde_terre.png", - feu: "/systems/fvtt-chroniques-de-l-etrange/images/cde_feu.png", - bois: "/systems/fvtt-chroniques-de-l-etrange/images/cde_bois.png", + metal: "/systems/fvtt-chroniques-de-l-etrange/images/cde_metal.webp", + eau: "/systems/fvtt-chroniques-de-l-etrange/images/cde_eau.webp", + terre: "/systems/fvtt-chroniques-de-l-etrange/images/cde_terre.webp", + feu: "/systems/fvtt-chroniques-de-l-etrange/images/cde_feu.webp", + bois: "/systems/fvtt-chroniques-de-l-etrange/images/cde_bois.webp", } return icons[aspect] ?? "" }) Handlebars.registerHelper("getOrientationIcon", function (orientation) { const icons = { - yin: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yin.png", - yang: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yang.png", - yinyang: "/systems/fvtt-chroniques-de-l-etrange/images/yin_yang.png", + yin: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yin.webp", + yang: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yang.webp", + yinyang: "/systems/fvtt-chroniques-de-l-etrange/images/yin_yang.webp", } return icons[orientation] ?? "" }) diff --git a/src/ui/rolling.js b/src/ui/rolling.js index 71ed562..38c37da 100644 --- a/src/ui/rolling.js +++ b/src/ui/rolling.js @@ -42,11 +42,11 @@ const ASPECT_LABELS = { /** Map aspect name → image path */ const ASPECT_ICONS = { - metal: "systems/fvtt-chroniques-de-l-etrange/images/cde_metal.png", - water: "systems/fvtt-chroniques-de-l-etrange/images/cde_eau.png", - earth: "systems/fvtt-chroniques-de-l-etrange/images/cde_terre.png", - fire: "systems/fvtt-chroniques-de-l-etrange/images/cde_feu.png", - wood: "systems/fvtt-chroniques-de-l-etrange/images/cde_bois.png", + metal: "systems/fvtt-chroniques-de-l-etrange/images/cde_metal.webp", + water: "systems/fvtt-chroniques-de-l-etrange/images/cde_eau.webp", + earth: "systems/fvtt-chroniques-de-l-etrange/images/cde_terre.webp", + fire: "systems/fvtt-chroniques-de-l-etrange/images/cde_feu.webp", + wood: "systems/fvtt-chroniques-de-l-etrange/images/cde_bois.webp", } /** Map aspect index → die face pair [yin, yang] (face=10 stored as 0) */ diff --git a/system.json b/system.json index 0b56dcf..986e2af 100644 --- a/system.json +++ b/system.json @@ -257,7 +257,7 @@ } ] }, - "background": "/systems/fvtt-chroniques-de-l-etrange/images/background/accueil.jpg", + "background": "/systems/fvtt-chroniques-de-l-etrange/images/background/accueil.webp", "grid": { "distance": 5, "units": "m" diff --git a/templates/actor/cde-loksyu-sheet.html b/templates/actor/cde-loksyu-sheet.html index 878ad89..96c44fe 100644 --- a/templates/actor/cde-loksyu-sheet.html +++ b/templates/actor/cde-loksyu-sheet.html @@ -23,7 +23,7 @@ - + {{ localize "CDE.Wood" }} {{ localize "CDE.WoodQualities" }} @@ -43,7 +43,7 @@ - + {{ localize "CDE.Fire" }} {{ localize "CDE.FireQualities" }} @@ -63,7 +63,7 @@ - + {{ localize "CDE.Earth" }} {{ localize "CDE.EarthQualities" }} @@ -83,7 +83,7 @@ - + {{ localize "CDE.Metal" }} {{ localize "CDE.MetalQualities" }} @@ -103,7 +103,7 @@ - + {{ localize "CDE.Water" }} {{ localize "CDE.WaterQualities" }} @@ -124,7 +124,7 @@ - + diff --git a/templates/actor/parts/cde-character-magics.html b/templates/actor/parts/cde-character-magics.html index 5c0d834..58f623f 100644 --- a/templates/actor/parts/cde-character-magics.html +++ b/templates/actor/parts/cde-character-magics.html @@ -6,47 +6,47 @@ - + - + - + - + - + - + - + - + - + - + diff --git a/templates/actor/parts/cde-character-nghang.html b/templates/actor/parts/cde-character-nghang.html index 7ed04c8..4c17be9 100644 --- a/templates/actor/parts/cde-character-nghang.html +++ b/templates/actor/parts/cde-character-nghang.html @@ -1,16 +1,16 @@ - + - + {{ localize "CDE.Fire" }} - + @@ -19,12 +19,12 @@ - + {{ localize "CDE.Wood" }} - + @@ -33,12 +33,12 @@ - + {{ localize "CDE.Earth" }} - + @@ -47,12 +47,12 @@ - + {{ localize "CDE.Water" }} - + @@ -61,12 +61,12 @@ - + {{ localize "CDE.Metal" }} - + @@ -75,5 +75,5 @@ - + diff --git a/templates/actor/parts/cde-character-skills.html b/templates/actor/parts/cde-character-skills.html index f031793..a3e998d 100644 --- a/templates/actor/parts/cde-character-skills.html +++ b/templates/actor/parts/cde-character-skills.html @@ -3,7 +3,7 @@ {{#each systemData.skills as |skill key|}} - + {{ localize skill.label }} @@ -14,7 +14,7 @@ +1D - + {{/each}} @@ -25,7 +25,7 @@ {{#each systemData.resources as |resource key|}} - + {{ localize resource.label }} @@ -36,7 +36,7 @@ +1D - + diff --git a/templates/actor/parts/cde-character-treasures.html b/templates/actor/parts/cde-character-treasures.html index 303e288..18a6277 100644 --- a/templates/actor/parts/cde-character-treasures.html +++ b/templates/actor/parts/cde-character-treasures.html @@ -11,7 +11,7 @@ - + diff --git a/templates/form/cde-dice-result.html b/templates/form/cde-dice-result.html index f773606..7f1c493 100644 --- a/templates/form/cde-dice-result.html +++ b/templates/form/cde-dice-result.html @@ -90,43 +90,43 @@ {{d1}} - + {{d2}} - + {{d3}} - + {{d4}} - + {{d5}} - + {{d6}} - + {{d7}} - + {{d8}} - + {{d9}} - + {{d0}} - + diff --git a/templates/form/cde-prefs-prompt.html b/templates/form/cde-prefs-prompt.html index a31b266..8128417 100644 --- a/templates/form/cde-prefs-prompt.html +++ b/templates/form/cde-prefs-prompt.html @@ -6,7 +6,7 @@ {{!-- Sheet Body --}} - {{!-- Frame --}} diff --git a/templates/form/cde-turn-order-npc-prompt.html b/templates/form/cde-turn-order-npc-prompt.html index 79ca03a..fde44c4 100644 --- a/templates/form/cde-turn-order-npc-prompt.html +++ b/templates/form/cde-turn-order-npc-prompt.html @@ -6,7 +6,7 @@ {{!-- Sheet Body --}} - {{!-- Frame --}} diff --git a/templates/form/cde-turn-order-prompt.html b/templates/form/cde-turn-order-prompt.html index c7d24c7..0ddd7e2 100644 --- a/templates/form/cde-turn-order-prompt.html +++ b/templates/form/cde-turn-order-prompt.html @@ -6,7 +6,7 @@ {{!-- Sheet Body --}} - {{!-- Frame --}} diff --git a/templates/form/cde-type-throw-prompt.html b/templates/form/cde-type-throw-prompt.html index edf94b1..fa21e93 100644 --- a/templates/form/cde-type-throw-prompt.html +++ b/templates/form/cde-type-throw-prompt.html @@ -6,7 +6,7 @@ {{!-- Sheet Body --}} - {{!-- Frame --}}
Rendez-vous sur le site de l'\u00E9diteur, t\u00E9l\u00E9chargez les PDF contenant les liens vers les compendia, puis ajoutez leurs manifestes dans Foundry.