From 942ac5319195d147f2374ab3cfd71fe1f2659fbd Mon Sep 17 00:00:00 2001 From: LeRatierBretonnien Date: Fri, 20 Jan 2023 10:05:36 +0100 Subject: [PATCH] Ajout up-in-arms --- addon-register.js | 55 +++++++++++++++++++++---- fr.json | 22 +++++++++- module.json | 4 +- tools/detect_missing_strings.lua | 6 ++- trade/gazetteer_dotr.json | 71 ++++++++++++++++++++++++++++++++ 5 files changed, 146 insertions(+), 12 deletions(-) create mode 100644 trade/gazetteer_dotr.json diff --git a/addon-register.js b/addon-register.js index 6e0bee3..02b0918 100644 --- a/addon-register.js +++ b/addon-register.js @@ -45,6 +45,42 @@ const _patch_eis = () => { } } +/************************************************************************************/ +const _patch_up_in_arms = () => { + + game.wfrp4e.config.hitLocationTables["quadruped"] = "Quadrupède"; + let batter = game.wfrp4e.config.groupAdvantageActions.find(ga => ga.name == "Batter") + if (batter) { + batter.name = "Battre" + batter.description = "En face d'un adversaire plus expérimenté, quelque fois la force brute peut réussiè là où d'autres approches échouent.", + batter.effect = "Action Spéciale: Pour Batter votre adversaire, vous devez réussir un Test Opposé de Force contre votre adversaire. Celui qui obtient le DR le plus élevé gagne. Si vous gagnez ce Test, votre adversaire reçoit l'état @Condition[A Terre] et vous recevez +1 Avantage. Si vous perdez le Test Opposé, votre opposant gagne +1 Avantage and votre action est terminée. Vous ne gagnez pas d'Avantage due à la victoire d'un test Opposé lorsque vous gagnez ce test (ie 1 seul avantage octroyé au total si le Test Opposé de Force est remporté)." + } + let trick = game.wfrp4e.config.groupAdvantageActions.find(ga => ga.name == "Trick") + if (trick) { + trick.name = "Duper" + trick.description = "Vous prenez un instant pour lancer de la poussière dans les yeux de votre adversaire ou bien vous lui lancez de l'huile enflammée. Cette manoeuvre est risquée, This manoeuvre is risky, et peu d'ennemis se font avoir deux fois de la même manière", + trick.effect = "Action Spéciale: Pour Duper votre adversaire, vous devez réussir un Test Opposé d'Agilité contre lui. Celui qui obtient le plus haut DR gagne le Test. Si vous gagnez le Test, vous recevez +1 Avantage. En fonction des circonstances, le MJ peut vous autoriser à attribuer à votre adversaire l'un des états suivants : @Condition[En Flammes], @Condition[Aveuglé], or @Condition[Empêtré]. Si vous perdez le Test Opposé, votre adversaire gagne +1 Avantage and votre action est terminée. Le MJ peut interdire certains de ces états si vous n'avez d'objet applicables dans votre main, ou bien si vous avez déja infligé un état identique precedemment à cet adversaire. Vous ne gagnez pas d'Avantage due à la victoire d'un test Opposé lorsque vous gagnez ce test (ie 1 seul avantage octroyé au total si le Test Opposé de Force est remporté)." + } + let addeffort = game.wfrp4e.config.groupAdvantageActions.find(ga => ga.name == "Additional Effort") + if (addeffort) { + addeffort.name = "Effort upplémentaire" + addeffort.description = "Dans des circonstances désespérées, vous pouvez utiliser l'élan que vous avez acquis pour augmenter vos chances de succès.", + addeffort.effect = "Action Gratuite: Vous gagnez un bonus de +10% pour n'importe quel test. Vous pouvez dépenser des avantages supplémentaires pour ajouter +10% par Avantage dépensé en plus. Par exemple, vous pouvez dépenser 3 Avantages pour un bonus de +10%, 4 avantages pour un +30%, etc. Le Test qui en découle de procure jamais d'Avantage pour le personnage qui le réalise." + } + let flee = game.wfrp4e.config.groupAdvantageActions.find(ga => ga.name == "Flee from Harm") + if (flee) { + flee.name = "Fuir le Mal" + flee.description = "Vous profitez d'un moment de distraction de votre adervsaire pour fuir le combat.", + flee.effect = "Mouvement: Vous pouvez vous éloignez de votre adversaire sans aucune pénalité. Cela remplace la règle de @UUID[Compendium.wfrp4e-core.journal-entries.NS3YGlJQxwTggjRX.JournalEntryPage.bdfiyhEYtKs7irqc#disengaging]{désengagement}." + } + let addaction = game.wfrp4e.config.groupAdvantageActions.find(ga => ga.name == "Additional Action") + if (addaction) { + addaction.name = "Action Supplémentaire" + addaction.description = "Vous profitez d'une opportunité pour accomplir une action remarquable.", + addaction.effect = "Action Gratuite: Vous réalisez une action supplémentaire. Cette action ne génère jamais d'Avantage pour vous. Vous pouvez réaliser cette dépense d'avantage seulement une seule fois par Tour." + } +} + /************************************************************************************/ /* Manages /auberge command */ const _manage_inn_roll = async (content, msg) => { @@ -174,7 +210,7 @@ const patch_core_tables = (tableList) => { /************************************************************************************/ const patch_trade_gazeteer = () => { if (game.wfrp4e.config.trade?.gazetteer) { - fetch("modules/WH4-fr-translation/tables/gazetteer.json").then(r => r.json()).then(records => { + fetch("modules/wh4-fr-translation/trade/gazetteer_dotr.json").then(r => r.json()).then(records => { game.wfrp4e.config.trade.gazetteer = records; }); } @@ -187,25 +223,30 @@ const __check_fix_wrong_modules = (chatFlag, patchFinished) => { game.modules.forEach((module, name) => { - if (name == "wfrp4e-core" && module.active) { + //console.log("TESTING MODULE", module) + if (module.id == "wfrp4e-core" && module.active) { patch_core_tables(__wfrp4e_tables); } - if (name == "wfrp4e-eis" && module.active) { + if (module.id == "wfrp4e-eis" && module.active) { patch_core_tables(__eis_tables); _patch_eis(); } - if (name == "wfrp4e-dotr" && module.active) { + if (module.id == "wfrp4e-dotr" && module.active) { patch_core_tables(__dotr_tables); patch_trade_gazeteer() } - if (name == 'ogre-kingdom-wfrp4e' && module.active) { + if (module.id == "wfrp4e-up-in-arms" && module.active) { + _patch_up_in_arms(); + } + + if (module.id == 'ogre-kingdom-wfrp4e' && module.active) { WH4FRPatchConfig.perform_ogrekingdom_patch(); if (game.user.isGM && chatFlag) ChatMessage.create({ content: "
Le module Ogre-Kingdom a été detecté et automatiquement patché.
", whisper: ChatMessage.getWhisperRecipients("GM") }); } - if (name == "wfrp4e-ew" && module.active && game.user.isGM && chatFlag) { + if (module.id == "wfrp4e-ew" && module.active && game.user.isGM && chatFlag) { ChatMessage.create({ content: "
Vous avez le module EW (wfrp4e-ew ?) installé. Malheureusement, ce module n'est pas compatible avec" + " les traductions et vient casser le fonctionnement de la traduction. Veuillez recopier les compendiums dans votre monde, désactiver le module et re-démarrer le monde
", @@ -215,7 +256,7 @@ const __check_fix_wrong_modules = (chatFlag, patchFinished) => { }); if (game.user.isGM && patchFinished) { ChatMessage.create({ - content: "
Les modules WFRP4E ont été patchés avec succés. Vous pouvez y aller et que Shallya vous garde !
Nouveautés 6.3.1: ", + content: "
Les modules WFRP4E ont été patchés avec succés. Vous pouvez y aller et que Shallya vous garde !
Nouveautés 6.3.X: ", user: game.user.id, whisper: ChatMessage.getWhisperRecipients("GM") }); diff --git a/fr.json b/fr.json index 7f343c2..3ed0067 100644 --- a/fr.json +++ b/fr.json @@ -1277,6 +1277,7 @@ "WFRP4E.Conditions.Unconscious" : "Vous êtes KO, inconscient, ou frappé d'incapacité. Vous ne pouvez absolument rien faire de votre tour et n'avez aucune conscience de ce qui vous entoure. Un attaquant qui vous cible touche automatiquement, avec un DR maximal et vous inflige 1 Blessure Critique ; ou, si le MJ préfère, une attaque en combat rapproché vou tue automatiquement. Toute attaque à distance est également un succès et occassionne les mêmes Dégâts que si le tireur éait à bout portant.

L'Etat Inconscient ne se cumule pas.

Récupérer d'un Etat Inconscient va bien souvent dépendre des circonstances qui ont causé cette inconscience. Reportez-vous aux Traumatismes (page 192) pour en savoir plus sur le sujet. Si vous dépensez un Point de Détermination pour vous débarasser d'un Etat Inconscient, mais que vous êtes toujours sujet aux causes de cette inconscience, vous gagnez un nouvel Etat Inconscient à la fin du round.

Lorsque vous vous débarassez de l'Etat Inconscient, vous gagnez les Etats A Terre et Extenué.", "WFRP4E.Conditions.Grappling" : "Si vous commencez votre tour Empoigné, vous pouvez briser l'Empoignade si vous disposez d'un Avantage supérieur à celui de votre adversaire, et vous n'êtes pas considéré comme Engagé pour votre Mouvement ; autrement, vous devez effectuer un Test opposé de Force pour votre Action. Sur un succès, vous pouvez choisir une des deux options suivantes :
", "WFRP4E.Conditions.Fear" : "Lorsque vous êtes sous le coup de la Peur, vous subissez -1DR à tous les Tests en rapport avec la source de votre peur. Vous êtes incapable de vous rapprocher de ce qui provoque cette Peur à moins de réussir un Test de Calme Intermédiaire (+0). Si la source de votre Peur se rapproche de vous, vous devez réussir un Test de Calme Intermédiaire (+0) ou subir un Etat Brisé.", + "WFRP4E.Conditions.Engaged":"Dès que vous attaquez un adversaire, ou que vous êtes attaqué, dans un combat au corps à corps, vous êtes Engagé. Cela signifie que vous vous battez l'un contre l'autre, et les autres règles (dues aux Talents, Sorts, etc.) indiquant 'Engagé' s'appliquent. Si aucun des protagonistes ne portent d'attaque pendant 1 round complet, vous n'êtes plus considéré comme Engagé.", "WFRP4E.ConditionName.Ablaze" : "En Flammes", "WFRP4E.ConditionName.Bleeding" : "Hémorragique", @@ -2198,5 +2199,22 @@ "SETTINGS.UIAShieldsHint":"Change la qualité Bouclier, selon la règle de Up in Armes page 90", "SHEET.Collapse":"Réduire", "SHEET.Expand":"Déplier", - "SHEET.GroupAdvantage":"Avantage de Groupe" - } + "SHEET.GroupAdvantage":"Avantage de Groupe", + + "MODULE.STRING_KEY":"Traduction", + + "PROPERTY.Crewed":"Avec equipage", + "PROPERTY.Salvo":"Salve", + "PROPERTY.Slash":"Sabrer", + "PROPERTY.Spread":"A Propagation", + "PROPERTY.Trip":"Trip", + "SPEC.Catapult":"Catapulte", + "TRADE.Citrusfruit":"Agrumes", + "TRADE.Olives":"Olives", + "TRADE.Saltfish":"Poisson salé", + "TRADE.Stone":"Pierre", + "WFRP4E.Properties.Slash":"Sabrer", + "WFRP4E.Properties.Spread":"A Propagation", + "WFRP4E.Properties.Trip":"Trip", + "WFRP4E.Properties.Unbalanced":"Déséquilibrée" +} diff --git a/module.json b/module.json index 2ac42a0..c2f49b2 100644 --- a/module.json +++ b/module.json @@ -8,7 +8,7 @@ } ], "url": "https://www.uberwald.me/gitea/public/foundryvtt-wh4-lang-fr-fr", - "version": "6.3.1", + "version": "6.3.2", "esmodules": [ "babele-register.js", "addon-register.js", @@ -136,7 +136,7 @@ } ], "manifest": "https://www.uberwald.me/gitea/public/foundryvtt-wh4-lang-fr-fr/raw/v10/module.json", - "download": "https://www.uberwald.me/gitea/public/foundryvtt-wh4-lang-fr-fr/archive/foundryvtt-wh4-lang-fr-6.3.1.zip", + "download": "https://www.uberwald.me/gitea/public/foundryvtt-wh4-lang-fr-fr/archive/foundryvtt-wh4-lang-fr-6.3.2.zip", "id": "wh4-fr-translation", "compatibility": { "minimum": "10", diff --git a/tools/detect_missing_strings.lua b/tools/detect_missing_strings.lua index 06676a4..9451702 100644 --- a/tools/detect_missing_strings.lua +++ b/tools/detect_missing_strings.lua @@ -2,7 +2,11 @@ package.path = package.path .. ";luajson/?.lua" local JSON = require"json" --local enjsonf = "/home/morr/foundry/foundrydata-dev/Data/modules/wfrp4e-dotr/lang/en.json" -local enjsonf = "/home/morr/foundry/foundrydata-dev/Data/modules/wfrp4e-core/lang/en.json" +--local enjsonf = "/home/morr/foundry/foundrydata-dev/Data/modules/wfrp4e-core/lang/en.json" +--local enjsonf = "/home/morr/foundry/foundrydata-dev/Data/modules/wfrp4e-middenheim/lang/en.json" +--local enjsonf = "/home/morr/foundry/foundrydata-dev/Data/modules/wfrp4e-eis/lang/en.json" +--local enjsonf = "/home/morr/foundry/foundrydata-dev/Data/modules/wfrp4e-rnhd/lang/en.json" +--local enjsonf = "/home/morr/foundry/foundrydata-dev/Data/modules/wfrp4e-up-in-arms/lang/en.json" local enjsonf = "../../WFRP4e-FoundryVTT/static/lang/en.json" local frjsonf = "../fr.json" diff --git a/trade/gazetteer_dotr.json b/trade/gazetteer_dotr.json new file mode 100644 index 0000000..15a02ce --- /dev/null +++ b/trade/gazetteer_dotr.json @@ -0,0 +1,71 @@ +[ + { "score": 8, "name": "Altdorf", "size": 4, "ruler": "Empereur", "pop": 1000000, "w": 5, "isTrade" : true, "produces": [], "luxuries" : [], "garrison": "1800a/26000b", "notes": "Capitale Impériale, Grand Temple de Sigmar" }, + { "score": 9, "name": "Autler", "size" : 2, "ruler": "Empereur", "pop": 124, "w": 2, "isTrade" : false, "produces": ["timber","grain"], "luxuries" : [], "garrison": "-/10c", "notes": "Ferry" }, + { "score": 10, "name": "Blutroch", "size": 0, "ruler": "Empereur", "pop": 0, "w": 0, "isTrade" : false, "produces": [], "luxuries" : [], "garrison": "-", "notes": "Wiped out by Red Pox in 2511" }, + { "score": 11, "name": "Braunwurt", "size": 1, "ruler": "Empereur", "pop": 75, "w": 1, "isTrade" : false, "produces": ["luxuries"], "luxuries" : ["Textiles"], "garrison": "-", "notes": "" }, + { "score": 12, "name": "Bundesmarkt", "size": 2, "ruler": "Empereur", "pop": 105, "w": 1, "isTrade" : false, "produces": ["grain"], "luxuries" : [], "garrison": "-/5c", "notes": "" }, + { "score": 13, "name": "Dorchen", "size": 2, "ruler": "Emperor", "pop": 105, "w": 2, "isTrade" : false, "produces": ["grain"], "luxuries" : [], "garrison": "-", "notes": "" }, + { "score": 14, "name": "Frederheim", "size": 2, "ruler": "Emperor", "pop": 116, "w": 1, "isTrade" : false, "produces": ["grain","wool"], "luxuries" : [], "garrison": "-", "notes": "Great Hospice of Shallya nearby" }, + { "score": 14, "name": "Furtild", "size": 1, "ruler": "Emperor", "pop": 90, "w": 1, "isTrade" : false, "produces": [], "luxuries" : [], "garrison": "-", "notes": "Great Hospice of Shallya nearby" }, + { "score": 15, "name": "Geldrecht", "size": 1, "ruler": "Emperor", "pop": 56, "w": 1, "isTrade" : false, "produces": ["timber","grain"], "luxuries" : [], "garrison": "-", "notes": "" }, + { "score": 16, "name": "Gluckshalt", "size": 1, "ruler": "Emperor", "pop": 87, "w": 2, "isTrade" : false, "produces": ["grain"], "luxuries" : [], "garrison": "-", "notes": "Ferry on River Reik" }, + { "score": 18, "name": "Grossbad", "size": 1, "ruler": "Emperor", "pop": 83, "w": 2, "isTrade" : false, "produces": ["grain"], "luxuries" : [], "garrison": "-/10c", "notes": "" }, + { "score": 19, "name": "Hartsklein", "size": 1, "ruler": "Emperor", "pop": 78, "w": 1, "isTrade" : false, "produces": ["luxuries"], "luxuries" : ["Pottery"], "garrison": "-", "notes": "" }, + { "score": 20, "name": "Heiligen", "size": 1, "ruler": "Emperor", "pop": 70, "w": 2, "isTrade" : false, "produces": ["grain"], "luxuries" : [], "garrison": "-", "notes": "" }, + { "score": 21, "name": "Hochloff", "size": 1, "ruler": "Emperor", "pop": 98, "w": 2, "isTrade" : false, "produces": ["grain"], "luxuries" : [], "garrison": "-", "notes": "" }, + { "score": 22, "name": "Kaldach", "size": 1, "ruler": "Emperor", "pop": 63, "w": 1, "isTrade" : false, "produces": [], "luxuries" : [], "garrison": "-/10b", "notes": "Ferry" }, + { "score": 23, "name": "Rechtlich", "size": 1, "ruler": "Emperor", "pop": 51, "w": 1, "isTrade" : false, "produces": [], "luxuries" : [], "garrison": "-", "notes": "" }, + { "score": 24, "name": "Rottefach", "size": 1, "ruler": "Emperor", "pop": 105, "w": 2, "isTrade" : false, "produces": ["grain","wine"], "luxuries" : [], "garrison": "-", "notes": "Ferry" }, + { "score": 25, "name": "Schlafebild", "size": 1, "ruler": "Emperor", "pop": 46, "w": 1, "isTrade" : false, "produces": ["grain","wine"], "luxuries" : [], "garrison": "-", "notes": "" }, + { "score": 26, "name": "Teufelfeuer", "size": 1, "ruler": "Emperor", "pop": 55, "w": 1, "isTrade" : false, "produces": [], "luxuries" : [], "garrison": "-/5c", "notes": "Once burnt to the ground by the Witch Hunter Fabergus Heinzdork." }, + { "score": 27, "name": "Walfen", "size": 2, "ruler": "Emperor", "pop": 181, "w": 2, "isTrade" : false, "produces": ["bricks","grain"], "luxuries" : [], "garrison": "-", "notes": "Ferry" }, + { "score": 29, "name": "Castle Reiksguard", "size": 3, "ruler": "Emperor", "pop": 300, "w": 4, "isTrade" : false, "produces": [], "luxuries" : [], "garrison": "200c/-", "notes": "Seat of the Grand Prince, fortress" }, + { "score": 34, "name": "Dunkelburg", "size": 3, "ruler": "Emperor", "pop": 8900, "w": 2, "isTrade" : false, "produces": ["grain", "wool"], "luxuries" : [], "garrison": "20b/150c", "notes": "" }, + { "score": 35, "name": "Barfsheim", "size": 1, "ruler": "Emperor", "pop": 77, "w": 1, "isTrade" : false, "produces": [], "luxuries" : [], "garrison": "-", "notes": "Ferry" }, + { "score": 36, "name": "Gemusenbad", "size": 1, "ruler": "Emperor", "pop": 56, "w": 1, "isTrade" : false, "produces": [], "luxuries" : [], "garrison": "-", "notes": "Ferry" }, + { "score": 37, "name": "Harke", "size": 1, "ruler": "Emperor", "pop": 37, "w": 1, "isTrade" : false, "produces": [], "luxuries" : [], "garrison": "-", "notes": "Ferry" }, + { "score": 38, "name": "Ruhfurt", "size": 1, "ruler": "Emperor", "pop": 90, "w": 2, "isTrade" : false, "produces": ["grain"], "luxuries" : [], "garrison": "-/10c", "notes": "" }, + { "score": 39, "name": "Schattental", "size": 1, "ruler": "Emperor", "pop": 86, "w": 2, "isTrade" : false, "produces": ["grain"], "luxuries" : [], "garrison": "-/15b", "notes": "" }, + { "score": 40, "name": "Steindorf", "size": 1, "ruler": "Emperor", "pop": 70, "w": 1, "isTrade" : false, "produces": [], "luxuries" : [], "garrison": "-/10c", "notes": "Ferry" }, + { "score": 41, "name": "Diesdorf", "size": 2, "ruler": "Emperor", "pop": 210, "w": 2, "isTrade" : false, "produces": ["grain"], "luxuries" : [], "garrison": "-/25c", "notes": "" }, + { "score": 45, "name": "Eilhart", "size": 3, "ruler": "Graf Johann von Hardenburg", "pop": 3200, "w": 3, "isTrade" : false, "produces": ["grain","wine"], "luxuries" : [], "garrison": "25b/125c", "notes": "" }, + { "score": 49, "name": "Grünburg", "size": 3, "ruler": "Emperor", "pop": 2900, "w": 2, "isTrade" : true, "produces": ["boatbuilding"], "luxuries" : [], "garrison": "25b/100c", "notes": "Ferry" }, + { "score": 50, "name": "Aussen", "size": 1, "ruler": "Emperor", "pop": 95, "w": 1, "isTrade" : false, "produces": [], "luxuries" : [], "garrison": "-", "notes": "Ferry" }, + { "score": 51, "name": "Hornlach", "size": 2, "ruler": "Emperor", "pop": 120, "w": 2, "isTrade" : false, "produces": ["timber","grain"], "luxuries" : [], "garrison": "-/5b", "notes": "Ferry" }, + { "score": 52, "name": "Kleindorf", "size": 1, "ruler": "Emperor", "pop": 40, "w": 1, "isTrade" : false, "produces": ["grain"], "luxuries" : [], "garrison": "-", "notes": "Ferry" }, + { "score": 53, "name": "Silberwurt", "size": 2, "ruler": "Emperor", "pop": 110, "w": 2, "isTrade" : false, "produces": ["grain","wool"], "luxuries" : [], "garrison": "-/10c", "notes": "" }, + { "score": 54, "name": "Wörlitz", "size": 2, "ruler": "Emperor", "pop": 105, "w": 2, "isTrade" : false, "produces": ["grain"], "luxuries" : [], "garrison": "-/10c", "notes": "" }, + { "score": 58, "name": "Kemperbad", "size": 3, "ruler": "Town Council", "pop": 9600, "w": 4, "isTrade" : true, "produces": ["armaments","wine","brandy"], "luxuries" : [], "garrison": "20b/500b", "notes": "Ferr. Finest Brandy in Empire from this area, Freistadt status" }, + { "score": 59, "name": "Berghof", "size": 1, "ruler": "Kemperbad Town Council", "pop": 85, "w": 2, "isTrade" : false, "produces": ["grain"], "luxuries" : [], "garrison": "-/20c", "notes": "" }, + { "score": 60, "name": "Brandenburg", "size": 1, "ruler": "Kemperbad Town Council", "pop": 95, "w": 3, "isTrade" : false, "produces": ["wine","brandy","grain"], "luxuries" : [], "garrison": "-/20b", "notes": "'Echte Brandenburger,' Emperor's favorite brandy; Ferry" }, + { "score": 61, "name": "Jungbach", "size": 2, "ruler": "Kemperbad Town Council", "pop": 105, "w": 3, "isTrade" : false, "produces": ["brandy","wine"], "luxuries" : [], "garrison": "-/15b", "notes": "Ferry" }, + { "score": 62, "name": "Ostwald", "size": 1, "ruler": "Kemperbad Town Council", "pop": 88, "w": 3, "isTrade" : false, "produces": ["brandy","wine"], "luxuries" : [], "garrison": "-/15b", "notes": "" }, + { "score": 63, "name": "Stockhausen", "size": 2, "ruler": "Kemperbad Town Council", "pop": 117, "w": 3, "isTrade" : false, "produces": ["brandy","wine","wool"], "luxuries" : [], "garrison": "-/30b", "notes": "" }, + { "score": 64, "name": "Merretheim", "size": 1, "ruler": "Graf von Falkenhayn", "pop": 67, "w": 1, "isTrade" : false, "produces": [], "luxuries" : [], "garrison": "-/10c", "notes": "" }, + { "score": 65, "name": "Misthausen", "size": 1, "ruler": "Graf von Falkenhayn", "pop": 43, "w": 1, "isTrade" : false, "produces": [], "luxuries" : [], "garrison": "-", "notes": "Ferry" }, + { "score": 66, "name": "Naffdorf", "size": 1, "ruler": "Graf von Falkenhayn", "pop": 75, "w": 1, "isTrade" : false, "produces": [], "luxuries" : [], "garrison": "-/10c", "notes": "Ferry" }, + { "score": 67, "name": "Pfeiffer", "size": 1, "ruler": "Graf von Falkenhayn", "pop": 60, "w": 1, "isTrade" : false, "produces": [], "luxuries" : [], "garrison": "-/5c", "notes": "" }, + { "score": 74, "name": "Ubersreik", "size": 3, "ruler": "Emperor", "pop": 7500, "w": 4, "isTrade" : true, "produces": ["armaments","metal","metalworking"], "luxuries" : [], "garrison": "40b/500c", "notes": "Ferry" }, + { "score": 75, "name": "Buchedorf", "size": 2, "ruler": "Emperor", "pop": 158, "w": 2, "isTrade" : false, "produces": ["grain","wool"], "luxuries" : [], "garrison": "-/10c", "notes": "Ferry" }, + { "score": 76, "name": "Flussberg", "size": 1, "ruler": "Emperor", "pop": 95, "w": 2, "isTrade" : false, "produces": ["grain"], "luxuries" : [], "garrison": "-/15c", "notes": "Ferry" }, + { "score": 77, "name": "Geissbach", "size": 1, "ruler": "Emperor", "pop": 66, "w": 2, "isTrade" : false, "produces": ["grain"], "luxuries" : [], "garrison": "-/10c", "notes": "" }, + { "score": 78, "name": "Halheim", "size": 1, "ruler": "Emperor", "pop": 49, "w": 1, "isTrade" : false, "produces": [], "luxuries" : [], "garrison": "-", "notes": "" }, + { "score": 79, "name": "Hugeldal", "size": 2, "ruler": "Emperor", "pop": 316, "w": 3, "isTrade" : false, "produces": ["metal"], "luxuries" : [], "garrison": "50b/75c", "notes": "" }, + { "score": 80, "name": "Messingen", "size": 2, "ruler": "Emperor", "pop": 111, "w": 3, "isTrade" : false, "produces": ["grain","armaments"], "luxuries" : [], "garrison": "-/20b", "notes": "By Hugeldal Mine" }, + { "score": 81, "name": "Wurfel", "size": 1, "ruler": "Emperor", "pop": 75, "w": 2, "isTrade" : false, "produces": ["grain"], "luxuries" : [], "garrison": "-/15c", "notes": "" }, + { "score": 82, "name": "Weissbruck", "size": 2, "ruler": "Emperor (ruled and owned by Gruber family)", "pop": 359, "w": 2, "isTrade" : true, "produces": ["luxuries"], "luxuries" : [], "garrison": "-", "notes": "Ferry, Lock House on Altdorf Canal" }, + { "score": 83, "name": "Wittgendorf", "size": 2, "ruler": "Baroness Magritta", "pop": 150, "w": 1, "isTrade" : false, "produces": [], "luxuries" : [], "garrison": "25b/-", "notes": "" }, + { "score": 86, "name": "Bögenhafen", "size": 3, "ruler": "Graf Wilhelm von Saponatheim", "pop": 10500, "w": 3, "isTrade" : true, "produces": ["wine","timber"], "luxuries" : [], "garrison": "-/500c", "notes": "Local market centre" }, + { "score": 87, "name": "Ardlich", "size": 2, "ruler": "Graf von Saponatheim", "pop": 155, "w": 2, "isTrade" : false, "produces": ["grain","wool"], "luxuries" : [], "garrison": "-/5c", "notes": "" }, + { "score": 88, "name": "Finsterbad", "size": 2, "ruler": "Graf von Saponatheim", "pop": 140, "w": 3, "isTrade" : false, "produces": ["grain","wine","wool"], "luxuries" : [], "garrison": "-/10c", "notes": "Ferry" }, + { "score": 89, "name": "Grubevon", "size": 1, "ruler": "Graf von Saponatheim", "pop": 90, "w": 2, "isTrade" : false, "produces": ["grain"], "luxuries" : [], "garrison": "-/5c", "notes": "" }, + { "score": 90, "name": "Herzhald", "size": 2, "ruler": "Graf von Saponatheim", "pop": 140, "w": 2, "isTrade" : false, "produces": ["timber"], "luxuries" : [], "garrison": "-", "notes": "" }, + { "score": 91, "name": "Castle Grauenburg", "size": 2, "ruler": "Graf von Saponatheim", "pop": 350, "w": 4, "isTrade" : false, "produces": [], "luxuries" : [], "garrison": "50a,100b/-", "notes": "Seat of the von Saponatheim lands, fortress" }, + { "score": 94, "name": "Auerswald", "size": 3, "ruler": "Graf Ferdinand von Wallenstein", "pop": 5000, "w": 3, "isTrade" : true, "produces": ["metal"], "luxuries" : [], "garrison": "50b/400c", "notes": "Ferry" }, + { "score": 95, "name": "Dresschler", "size": 1, "ruler": "Graf von Wallenstein", "pop": 76, "w": 2, "isTrade" : false, "produces": ["grain","wool"], "luxuries" : [], "garrison": "-/10b", "notes": "Ferry" }, + { "score": 96, "name": "Gladisch", "size": 1, "ruler": "Graf von Wallenstein", "pop": 50, "w": 1, "isTrade" : false, "produces": ["wool"], "luxuries" : [], "garrison": "-", "notes": "Ferry" }, + { "score": 97, "name": "Hahnbrandt", "size": 2, "ruler": "Graf von Wallenstein", "pop": 250, "w": 3, "isTrade" : false, "produces": ["armaments","metal"], "luxuries" : [], "garrison": "50b/75c", "notes": "" }, + { "score": 98, "name": "Koch", "size": 2, "ruler": "Graf von Wallenstein", "pop": 115, "w": 2, "isTrade" : false, "produces": ["armaments","grain","metal"], "luxuries" : [], "garrison": "-/20b", "notes": "Near Hahnbrandt Mine in the Hagercrybs" }, + { "score": 99, "name": "Sprinthof", "size": 1, "ruler": "Graf von Wallenstein", "pop": 87, "w": 2, "isTrade" : false, "produces": ["grain","luxuries"], "luxuries" : ["Cheese"], "garrison": "-/10c", "notes": "Coaching inn, best smoked cheese in Reikland" }, + { "score":100, "name": "Steche", "size": 1, "ruler": "Graf von Wallenstein", "pop": 75, "w": 2, "isTrade" : false, "produces": ["grain","wool"], "luxuries" : [], "garrison": "-/15c", "notes": "Ferry" } +] \ No newline at end of file