From bf6f89e76d9e119673b6093da3101fa30947bd69 Mon Sep 17 00:00:00 2001 From: Ulty Date: Thu, 26 Jan 2023 15:43:28 +0100 Subject: [PATCH] Chroniques Oubliees Fantasy: version 5.02 --- ChroniquesOubliees/ReadMe.md | 6 +- ChroniquesOubliees/co.html | 460 +++++++++++++++++++++++++--------- ChroniquesOubliees/sheet.json | 2 +- 3 files changed, 343 insertions(+), 125 deletions(-) diff --git a/ChroniquesOubliees/ReadMe.md b/ChroniquesOubliees/ReadMe.md index fe20d1977d..93080e05ab 100644 --- a/ChroniquesOubliees/ReadMe.md +++ b/ChroniquesOubliees/ReadMe.md @@ -11,9 +11,13 @@ Il est aussi possible d'utiliser cette fiche pour jouer avec l'ensemble de règl Le jeu complet, des suppléments et des téléchargements gratuits sont disponibles sur le site de l'éditeur [Black Book Editions](http://www.black-book-editions.fr/catalogue.php?id=13). # Version courante -4.04 [Screenshot](co_v3.jpg) +5.02 [Screenshot](co_v3.jpg) # Notes de version +## v5.02 (2023-01-26) +* Ajout des munitions +* Champs prédicat pour les armes portées + ## v5.00 (2021-07-09) * Ajout d'une partie dédiée pour l'interaction avec le script * Ajout d'un type de dégâts drain diff --git a/ChroniquesOubliees/co.html b/ChroniquesOubliees/co.html index cec57d8b16..2ccf07c588 100644 --- a/ChroniquesOubliees/co.html +++ b/ChroniquesOubliees/co.html @@ -1,5 +1,5 @@
- + @@ -12,6 +12,7 @@ + @@ -691,24 +692,38 @@ - -
- - - - - - - - -
- Disponibles : - - Possédés : - - Taux de pertes : % -
-
+
+ +
+ + + + + + + + +
+ Disponibles : + + Possédés : + + Taux de pertes : % +
+
+
+ +
+ + + + + + +
+ +
+
@@ -856,7 +871,7 @@ + value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v2r1titre} }} {{desc=**@{voie2nom}, rang [[1]]** }} {{text=@{voie2-1} }}">w
@@ -869,7 +884,7 @@ + value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v3r1titre} }} {{desc=**@{voie3nom}, rang [[1]]** }} {{text=@{voie3-1} }}">w
@@ -885,7 +900,7 @@ + value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v1r2titre} }} {{desc=**@{voie1nom}, rang [[2]]** }} {{text=@{voie1-2} }}">w
@@ -898,7 +913,7 @@ + value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v2r2titre} }} {{desc=**@{voie2nom}, rang [[2]]** }} {{text=@{voie2-2} }}">w
@@ -911,7 +926,7 @@ + value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v3r2titre} }} {{desc=**@{voie3nom}, rang [[2]]** }} {{text=@{voie3-2} }}">w
@@ -927,7 +942,7 @@ + value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v1r3titre} }} {{desc=**@{voie1nom}, rang [[3]]** }} {{text=@{voie1-3} }}">w
@@ -940,7 +955,7 @@ + value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v2r3titre} }} {{desc=**@{voie2nom}, rang [[3]]** }} {{text=@{voie2-3} }}">w
@@ -953,7 +968,7 @@ + value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v3r3titre} }} {{desc=**@{voie3nom}, rang [[3]]** }} {{text=@{voie3-3} }}">w
@@ -969,7 +984,7 @@ + value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v1r4titre} }} {{desc=**@{voie1nom}, rang [[4]]** }} {{text=@{voie1-4} }}">w
@@ -982,7 +997,7 @@ + value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v2r4titre} }} {{desc=**@{voie2nom}, rang [[4]]** }} {{text=@{voie2-4} }}">w
@@ -995,7 +1010,7 @@ + value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v3r4titre} }} {{desc=**@{voie3nom}, rang [[4]]** }} {{text=@{voie3-4} }}">w
@@ -1011,7 +1026,7 @@ + value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v1r5titre} }} {{desc=**@{voie1nom}, rang [[5]]** }} {{text=@{voie1-5} }}">w
@@ -1024,7 +1039,7 @@ + value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v2r5titre} }} {{desc=**@{voie2nom}, rang [[5]]** }} {{text=@{voie2-5} }}">w
@@ -1037,7 +1052,7 @@ + value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v3r5titre} }} {{desc=**@{voie3nom}, rang [[5]]** }} {{text=@{voie3-5} }}">w
@@ -1101,7 +1116,7 @@ + value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v5r1titre} }} {{desc=**@{voie5nom}, rang [[1]]** }} {{text=@{voie5-1} }}">w
@@ -1114,7 +1129,7 @@ + value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v6r1titre} }} {{desc=**@{voie6nom}, rang [[1]]** }} {{text=@{voie6-1} }}">w
@@ -1130,7 +1145,7 @@ + value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v4r2titre} }} {{desc=**@{voie4nom}, rang [[2]]** }} {{text=@{voie4-2} }}">w
@@ -1143,7 +1158,7 @@ + value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v5r2titre} }} {{desc=**@{voie5nom}, rang [[2]]** }} {{text=@{voie5-2} }}">w
@@ -1156,7 +1171,7 @@ + value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v6r2titre} }} {{desc=**@{voie6nom}, rang [[2]]** }} {{text=@{voie6-2} }}">w
@@ -1172,7 +1187,7 @@ + value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v4r3titre} }} {{desc=**@{voie4nom}, rang [[3]]** }} {{text=@{voie4-3} }}">w
@@ -1185,7 +1200,7 @@ + value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v5r3titre} }} {{desc=**@{voie5nom}, rang [[3]]** }} {{text=@{voie5-3} }}">w
@@ -1198,7 +1213,7 @@ + value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v6r3titre} }} {{desc=**@{voie6nom}, rang [[3]]** }} {{text=@{voie6-3} }}">w
@@ -1214,7 +1229,7 @@ + value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v4r4titre} }} {{desc=**@{voie4nom}, rang [[4]]** }} {{text=@{voie4-4} }}">w
@@ -1227,7 +1242,7 @@ + value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v5r4titre} }} {{desc=**@{voie5nom}, rang [[4]]** }} {{text=@{voie5-4} }}">w
@@ -1240,7 +1255,7 @@ + value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v6r4titre} }} {{desc=**@{voie6nom}, rang [[4]]** }} {{text=@{voie6-4} }}">w
@@ -1256,7 +1271,7 @@ + value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v4r5titre} }} {{desc=**@{voie4nom}, rang [[5]]** }} {{text=@{voie4-5} }}">w
@@ -1269,7 +1284,7 @@ + value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v5r5titre} }} {{desc=**@{voie5nom}, rang [[5]]** }} {{text=@{voie5-5} }}">w
@@ -1282,7 +1297,7 @@ + value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v6r5titre} }} {{desc=**@{voie6nom}, rang [[5]]** }} {{text=@{voie6-5} }}">w
@@ -1350,7 +1365,7 @@ + value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v8r1titre} }} {{desc=**@{voie8nom}, rang [[1]]** }} {{text=@{voie8-1} }}">w
@@ -1363,7 +1378,7 @@ + value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v9r1titre} }} {{desc=**@{voie9nom}, rang [[1]]** }} {{text=@{voie9-1} }}">w
@@ -1379,7 +1394,7 @@ + value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v7r2titre} }} {{desc=**@{voie7nom}, rang [[2]]** }} {{text=@{voie7-2} }}">w
@@ -1392,7 +1407,7 @@ + value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v8r2titre} }} {{desc=**@{voie8nom}, rang [[2]]** }} {{text=@{voie8-2} }}">w
@@ -1405,7 +1420,7 @@ + value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v9r2titre} }} {{desc=**@{voie9nom}, rang [[2]]** }} {{text=@{voie9-2} }}">w
@@ -1421,7 +1436,7 @@ + value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v7r3titre} }} {{desc=**@{voie7nom}, rang [[3]]** }} {{text=@{voie7-3} }}">w
@@ -1434,7 +1449,7 @@ + value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v8r3titre} }} {{desc=**@{voie8nom}, rang [[3]]** }} {{text=@{voie8-3} }}">w
@@ -1447,7 +1462,7 @@ + value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v9r3titre} }} {{desc=**@{voie9nom}, rang [[3]]** }} {{text=@{voie9-3} }}">w
@@ -1463,7 +1478,7 @@ + value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v7r4titre} }} {{desc=**@{voie7nom}, rang [[4]]** }} {{text=@{voie7-4} }}">w
@@ -1476,7 +1491,7 @@ + value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v8r4titre} }} {{desc=**@{voie8nom}, rang [[4]]** }} {{text=@{voie8-4} }}">w
@@ -1489,7 +1504,7 @@ + value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v9r4titre} }} {{desc=**@{voie9nom}, rang [[4]]** }} {{text=@{voie9-4} }}">w
@@ -1505,7 +1520,7 @@ + value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v7r5titre} }} {{desc=**@{voie7nom}, rang [[5]]** }} {{text=@{voie7-5} }}">w
@@ -1518,7 +1533,7 @@ + value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v8r5titre} }} {{desc=**@{voie8nom}, rang [[5]]** }} {{text=@{voie8-5} }}">w
@@ -1531,7 +1546,7 @@ + value="&{template:co1} {{perso=@{displayname} }} {{subtags=Capacité }} {{name=@{v9r5titre} }} {{desc=**@{voie9nom}, rang [[5]]** }} {{text=@{voie9-5} }}">w
@@ -2222,10 +2237,62 @@
- +
Notes
+ + + + + + + + + +
MunitionsTypeNombreTaux pertesEffet
+
+
+ y +
+ + + + + + + + +
+ + + + + + / + + + % + + +
+
+
+ + + + +
+ +
+
+
+
@@ -2412,7 +2479,7 @@
- +
Prédicats
@@ -2640,24 +2707,38 @@ - -
- - - - - - - - -
- Disponibles : - - Possédés : - - Taux de pertes : % -
-
+
+ +
+ + + + + + + + +
+ Disponibles : + + Possédés : + + Taux de pertes : % +
+
+
+ +
+ + + + + + +
+ +
+
@@ -2756,10 +2837,62 @@
- +
Notes
+ + + + + + + + + +
MunitionsTypeNombreTaux pertesEffet
+
+
+ y +
+ + + + + + + + +
+ + + + + + / + + + % + + +
+
+
+ + + + +
+ +
+
+
+
@@ -2914,7 +3047,7 @@
- +
Prédicats
@@ -3390,8 +3523,12 @@ } }); } + if (verfdp < 5.02) { + updateAttaques501502('armes'); + updateAttaques501502('pnjatk'); + } setAttrs({ - version: 5.01 + version: 5.02 }); if (v.option_setting == 'arran') { //Quelques valeurs de départ selon la famille de profil par défaut @@ -3449,6 +3586,22 @@ }); } + function updateAttaques501502(section) { + getSectionIDs('repeating_' + section, function(idArray) { + idArray.forEach(function(id) { + const prefix = 'repeating_' + section + '_' + id + '_'; + getAttrs([prefix + 'armetypeattaque'], function(values) { + let toSet = {}; + let at = values[prefix + 'armetypeattaque']; + if (at.startsWith('Arme') && at != 'Arme de jet') { + toSet[prefix + 'armeportable'] = 'on'; + setAttrs(toSet); + } + }); + }); + }); + } + function extraireTitreCapacite(capacite) { var res = { titre: capacite, @@ -3550,11 +3703,11 @@ function ajouteLabels(attr) { getSectionIDs(attr, function(idArray) { getAttrs(['max_attack_label'], function(v) { - var maxLabel = parseInt(v.max_attack_label); + let maxLabel = parseInt(v.max_attack_label); if (isNaN(maxLabel)) maxLabel = 0; - var initialMaxLabel = maxLabel; - var count = idArray.length; - var finalize = function() { + let initialMaxLabel = maxLabel; + let count = idArray.length; + const finalize = function() { count--; if (count === 0) { if (maxLabel > initialMaxLabel) @@ -3566,13 +3719,13 @@ } }; idArray.forEach(function(id) { - var prefix = attr + '_' + id + '_'; + const prefix = attr + '_' + id + '_'; getAttrs([prefix + 'armelabel', prefix + 'armenom'], function(values) { - var label = parseInt(values[prefix + 'armelabel']); + let label = parseInt(values[prefix + 'armelabel']); if (label > 0) return; - var toSet = {}; - var nom = values[prefix + 'armenom']; - var postLabel = nom.indexOf(' '); + let toSet = {}; + let nom = values[prefix + 'armenom']; + let postLabel = nom.indexOf(' '); if (postLabel > 0 && postLabel < nom.length - 1) { label = parseInt(nom.substring(0, postLabel)); if (!isNaN(label)) { @@ -3602,9 +3755,9 @@ //asynchrone, appelle callback avec un map label -> prefix attribut function getLabels(attr, callback) { - var res = {}; + let res = {}; getSectionIDs(attr, function(idArray) { - var labelArray = idArray.map(function(id) { + let labelArray = idArray.map(function(id) { return attr + '_' + id + '_armelabel'; }); getAttrs(labelArray, function(values) { @@ -4208,15 +4361,24 @@ // - scriptVersion_max // - montrerarmeenmain function guessAttackType(nomAttaque, prefix, newAttrs, values) { - var typeAttaque = 'Naturel'; - var na = nomAttaque.toLowerCase(); + let typeAttaque = 'Naturel'; + let na = nomAttaque.toLowerCase(); na.split(' ').forEach(function(mot) { mot = mot.trim(); if (mot === '') return; - var s = mapArmes[mot]; + let s = mapArmes[mot]; if (s && s.typeattaque) { newAttrs[prefix + 'typeattaque'] = s.typeattaque; - if (s.typeattaque == 'Arme de jet') newAttrs[prefix + 'armejet'] = 'on'; + switch (s.typeattaque) { + case 'Arme de jet': + newAttrs[prefix + 'armejet'] = 'on'; + break; + case 'Arme 1 main': + case 'Arme 2 mains': + case 'Arme gauche': + newAttrs[prefix + 'armeportable'] = 'on'; + break; + } typeAttaque = s.typeattaque; newAttrs[prefix + 'modificateurs'] = s.modificateurs; newAttrs[prefix + 'typedegats'] = s.typedegats; @@ -4529,12 +4691,12 @@ //Numérotation des attaques, ne cascade pas on('change:repeating_armes:armenom', function(eventinfo) { getAttrs(['max_attack_label', 'repeating_armes_armelabel', 'repeating_armes_armenom', 'scriptVersion', 'scriptVersion_max', 'montrerarmeenmain'], function(values) { - var currentLabel = parseInt(values.repeating_armes_armelabel); + let currentLabel = parseInt(values.repeating_armes_armelabel); if (isNaN(currentLabel) || currentLabel === 0) { currentLabel = parseInt(values.max_attack_label); if (isNaN(currentLabel)) currentLabel = 0; currentLabel++; - var sa = { + let sa = { max_attack_label: currentLabel, repeating_armes_armelabel: currentLabel }; @@ -4598,33 +4760,57 @@ //Montrer ou cacher les options d'arme de jet. Ne cascade pas. on('change:repeating_armes:armetypeattaque', function(eventinfo) { - getAttrs(['repeating_armes_armetypeattaque', 'repeating_armes_armejet'], function(values) { - if (values.repeating_armes_armetypeattaque == 'Arme de jet') { - if (values.repeating_armes_armejet != 'on') - setAttrs({ - repeating_armes_armejet: 'on' - }); - } else { - if (values.repeating_armes_armejet != 'off') - setAttrs({ - repeating_armes_armejet: 'off' - }); + getAttrs(['repeating_armes_armetypeattaque', 'repeating_armes_armejet', 'repeating_armes_armeportable'], function(values) { + let se = {}; + switch (values.repeating_armes_armetypeattaque) { + case 'Arme de jet': + if (values.repeating_armes_armejet != 'on') + se.repeating_armes_armejet = 'on'; + if (values.repeating_armes_armeportable != 'off') + se.repeating_armes_armeportable = 'off'; + break; + case 'Arme 1 main': + case 'Arme 2 mains': + case 'Arme gauche': + if (values.repeating_armes_armejet != 'off') + se.repeating_armes_armejet = 'off'; + if (values.repeating_armes_armeportable != 'on') + se.repeating_armes_armeportable = 'on'; + break; + default: + if (values.repeating_armes_armejet != 'off') + se.repeating_armes_armejet = 'off'; + if (values.repeating_armes_armeportable != 'off') + se.repeating_armes_armeportable = 'off'; } + if (se != {}) setAttrs(se); }); }); on('change:repeating_pnjatk:armetypeattaque', function(eventinfo) { - getAttrs(['repeating_pnjatk_armetypeattaque', 'repeating_pnjatk_armejet'], function(values) { - if (values.repeating_pnjatk_armetypeattaque == 'Arme de jet') { - if (values.repeating_pnjatk_armejet != 'on') - setAttrs({ - repeating_pnkatk_armejet: 'on' - }); - } else { - if (values.repeating_pnjatk_armejet != 'off') - setAttrs({ - repeating_pnjatk_armejet: 'off' - }); + getAttrs(['repeating_pnjatk_armetypeattaque', 'repeating_pnjatk_armejet', 'repeating_pnjatk_armeportable'], function(values) { + let se = {}; + switch (values.repeating_pnjatk_armetypeattaque) { + case 'Arme de jet': + if (values.repeating_pnjatk_armejet != 'on') + se.repeating_pnjatk_armejet = 'on'; + if (values.repeating_pnjatk_armeportable != 'off') + se.repeating_pnjatk_armeportable = 'off'; + break; + case 'Arme 1 main': + case 'Arme 2 mains': + case 'Arme gauche': + if (values.repeating_pnjatk_armejet != 'off') + se.repeating_pnjatk_armejet = 'off'; + if (values.repeating_pnjatk_armeportable != 'on') + se.repeating_pnjatk_armeportable = 'on'; + break; + default: + if (values.repeating_pnjatk_armejet != 'off') + se.repeating_pnjatk_armejet = 'off'; + if (values.repeating_pnjatk_armeportable != 'off') + se.repeating_pnjatk_armeportable = 'off'; } + if (se != {}) setAttrs(se); }); }); @@ -5216,6 +5402,15 @@ keys: ['pouvoir'], effet: "#Attaque Gland de pouvoir --toucher [[@{selected|ATKTIR}]] --portee 10 --pasDeDmg --magique --effet statueDeBois [[2d6+@{selected|SAG}]] --valeur 10 10", }], + }, { + keys: ['fortifiant'], + effet: "!cof-fortifiant 2" + }, { + keys: ['huile', "d'huile"], + variantes: [{ + keys: ['instable'], + effet: "!cof-huile-instable @{target|token_id}", + }], }, { keys: ['invisibilité', 'invisibilite', "d'invisibilité", "d'invisibilite"], effet: "!cof-set-state invisible true --message devient invisible" @@ -5442,6 +5637,25 @@ }); }); + //Numérotation des munitions, ne cascade pas + on('change:repeating_munitions:nommunition', function(eventinfo) { + getAttrs(['max_munition_label', 'repeating_munitions_labelmunition', 'repeating_munitions_nommunition'], function(values) { + let currentLabel = parseInt(values.repeating_munitions_labelmunition); + if (isNaN(currentLabel) || currentLabel === 0) { + currentLabel = parseInt(values.max_munition_label); + if (isNaN(currentLabel)) currentLabel = 0; + currentLabel++; + let sa = { + max_munition_label: currentLabel, + repeating_munitions_labelmunition: currentLabel + }; + setAttrs(sa, { + silent: true + }); + } + }); + }); + function keyOfName(nom) { nom = nom + ''; nom = nom.trim().toLowerCase(); diff --git a/ChroniquesOubliees/sheet.json b/ChroniquesOubliees/sheet.json index 2239a2cea7..b558960e16 100644 --- a/ChroniquesOubliees/sheet.json +++ b/ChroniquesOubliees/sheet.json @@ -4,7 +4,7 @@ "authors": "Natha, Ulti", "roll20userid": "75857, 1794854", "preview": "co_v3.jpg", - "instructions": "Feuille de Personnage (avec jets) pour [Chroniques Oubliées Fantasy](http://www.black-book-editions.fr/catalogue.php?id=13). Chroniques Oubliées Fantasy est un jeu de rôle médiéval-fantastique complet basé sur le système d20/OGL 3.5. Feuille version 5.00 (09/07/2021). [Lisez-moi](https://github.com/Roll20/roll20-character-sheets/blob/master/ChroniquesOubliees/ReadMe.md). Maintenant compatible avec le setting des terres d'Arran (voir les options de fiche)", + "instructions": "Feuille de Personnage (avec jets) pour [Chroniques Oubliées Fantasy](http://www.black-book-editions.fr/catalogue.php?id=13). Chroniques Oubliées Fantasy est un jeu de rôle médiéval-fantastique complet basé sur le système d20. Feuille version 5.00 (09/07/2021). [Lisez-moi](https://github.com/Roll20/roll20-character-sheets/blob/master/ChroniquesOubliees/ReadMe.md). Maintenant compatible avec le setting des terres d'Arran (voir les options de fiche)", "useroptions": [ { "attribute": "option_pc",