diff --git a/.obsidian/community-plugins.json b/.obsidian/community-plugins.json index df466e4..b81b9b2 100644 --- a/.obsidian/community-plugins.json +++ b/.obsidian/community-plugins.json @@ -8,5 +8,6 @@ "obsidian-outliner", "obsidian-projects", "fantasy-calendar", - "rpg-manager" + "rpg-manager", + "obsidian-banners" ] \ No newline at end of file diff --git a/.obsidian/plugins/rpg-manager/data.json b/.obsidian/plugins/rpg-manager/data.json index 58d783e..23d3ed9 100644 --- a/.obsidian/plugins/rpg-manager/data.json +++ b/.obsidian/plugins/rpg-manager/data.json @@ -108,7 +108,7 @@ "fields": [ { "field": 1, - "checked": false, + "checked": true, "required": false }, { diff --git a/.obsidian/plugins/rpg-manager/main.js b/.obsidian/plugins/rpg-manager/main.js index e39bf33..e338923 100644 --- a/.obsidian/plugins/rpg-manager/main.js +++ b/.obsidian/plugins/rpg-manager/main.js @@ -1390,8 +1390,55 @@ var Index = class { } }; +// node_modules/uuid/dist/esm-browser/rng.js +var getRandomValues; +var rnds8 = new Uint8Array(16); +function rng() { + if (!getRandomValues) { + getRandomValues = typeof crypto !== "undefined" && crypto.getRandomValues && crypto.getRandomValues.bind(crypto); + if (!getRandomValues) { + throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported"); + } + } + return getRandomValues(rnds8); +} + +// node_modules/uuid/dist/esm-browser/stringify.js +var byteToHex = []; +for (let i = 0; i < 256; ++i) { + byteToHex.push((i + 256).toString(16).slice(1)); +} +function unsafeStringify(arr, offset2 = 0) { + return (byteToHex[arr[offset2 + 0]] + byteToHex[arr[offset2 + 1]] + byteToHex[arr[offset2 + 2]] + byteToHex[arr[offset2 + 3]] + "-" + byteToHex[arr[offset2 + 4]] + byteToHex[arr[offset2 + 5]] + "-" + byteToHex[arr[offset2 + 6]] + byteToHex[arr[offset2 + 7]] + "-" + byteToHex[arr[offset2 + 8]] + byteToHex[arr[offset2 + 9]] + "-" + byteToHex[arr[offset2 + 10]] + byteToHex[arr[offset2 + 11]] + byteToHex[arr[offset2 + 12]] + byteToHex[arr[offset2 + 13]] + byteToHex[arr[offset2 + 14]] + byteToHex[arr[offset2 + 15]]).toLowerCase(); +} + +// node_modules/uuid/dist/esm-browser/native.js +var randomUUID = typeof crypto !== "undefined" && crypto.randomUUID && crypto.randomUUID.bind(crypto); +var native_default = { + randomUUID +}; + +// node_modules/uuid/dist/esm-browser/v4.js +function v4(options, buf, offset2) { + if (native_default.randomUUID && !buf && !options) { + return native_default.randomUUID(); + } + options = options || {}; + const rnds = options.random || (options.rng || rng)(); + rnds[6] = rnds[6] & 15 | 64; + rnds[8] = rnds[8] & 63 | 128; + if (buf) { + offset2 = offset2 || 0; + for (let i = 0; i < 16; ++i) { + buf[offset2 + i] = rnds[i]; + } + return buf; + } + return unsafeStringify(rnds); +} +var v4_default = v4; + // src/services/indexService/IndexService.ts -var import_crypto = require("crypto"); var IndexService = class extends AbstractService { create(type, id, campaignId, parentId, positionInParent, campaignSettings) { const response = new Index(this.api, type, id, campaignId, parentId); @@ -1406,7 +1453,7 @@ var IndexService = class extends AbstractService { return response; } createUUID() { - return (0, import_crypto.randomUUID)(); + return v4_default(); } }; @@ -1962,7 +2009,7 @@ var CodeblockImageWorker = class { return __async(this, null, function* () { if (domain.codeblock.data === void 0) domain.codeblock.data = {}; - if (domain.codeblock.data.images === void 0) + if (domain.codeblock.data.images == void 0) domain.codeblock.data.images = []; let found; for (let index = 0; index < domain.codeblock.data.images.length; index++) { @@ -5686,7 +5733,7 @@ var GalleryAddRemoteModalView = class extends AbstractConfirmationGalleryModalVi this._addButtonEl.addEventListener("click", () => { const imageEl = new Image(); for (let index = 0; index < this.model.images.length; index++) { - if (this._urlEl.value.toLowerCase() === this.model.images[index].src.toLowerCase()) { + if (this._urlEl.value === this.model.images[index].src) { this._errorEl.style.display = ""; this._errorEl.textContent = "The URL to the image is invalid."; return; @@ -5698,7 +5745,7 @@ var GalleryAddRemoteModalView = class extends AbstractConfirmationGalleryModalVi return; }; imageEl.onload = (evt) => { - this.api.service(CodeblockService).addOrUpdateImage(this._urlEl.value.toLowerCase(), "").then((image) => { + this.api.service(CodeblockService).addOrUpdateImage(this._urlEl.value, "").then((image) => { if (image !== void 0) { this.selectedImage = image; this.confirmationOverlayEl.style.display = "block"; @@ -12536,12 +12583,11 @@ var AbtStageElement = class extends AbstractElement { // src/managers/viewsManager/elements/ParentSwitcherSelectorElement.ts var import_obsidian31 = require("obsidian"); -var import_crypto2 = require("crypto"); var ParentSwitcherSelectorElement = class extends AbstractElement { constructor(api) { super(api); this.api = api; - this._id = (0, import_crypto2.randomUUID)(); + this._id = v4_default(); } render(data, containerEl) { let selectedModel = void 0; @@ -16582,7 +16628,6 @@ var FantasyCalendarDatePicker = class { }; // src/services/fantasyCalendarService/views/elements/FantasyCalendarElement.ts -var import_crypto3 = require("crypto"); var FantasyCalendarElement = class extends AbstractElement { render(data, containerEl) { var _a; @@ -16596,7 +16641,7 @@ var FantasyCalendarElement = class extends AbstractElement { let dateValue = ""; if (data.values !== void 0 && data.values.date !== void 0 && data.model.campaign.fantasyCalendar !== void 0) dateValue = this.api.service(FantasyCalendarService).getDay(data.values.date, data.model.campaign.fantasyCalendar).displayDate; - const id = (0, import_crypto3.randomUUID)(); + const id = v4_default(); this._inputEl = contentEl.createEl("input", { cls: "rpg-manager-fantasy-calendar-picker-launcher " + id }); this._inputEl.type = "text"; this._inputEl.value = dateValue; @@ -19499,7 +19544,6 @@ var V3_0_to_3_1_worker = class extends AbstractDatabaseWorker { // src/core/updater/workers/V3_1_to_3_4_worker.ts var import_obsidian39 = require("obsidian"); -var import_crypto4 = require("crypto"); var V3_1_to_3_4_worker = class extends AbstractDatabaseWorker { get from() { return "3.1"; @@ -19540,7 +19584,7 @@ var V3_1_to_3_4_worker = class extends AbstractDatabaseWorker { return __async(this, null, function* () { const campaigns = this._elements.filter((component) => component.type === 1 /* Campaign */); for (let index = 0; index < campaigns.length; index++) { - const id = (0, import_crypto4.randomUUID)(); + const id = v4_default(); const newComponentId = { type: campaigns[index].type, campaignSettings: campaigns[index].campaignSettings, @@ -19625,7 +19669,7 @@ var V3_1_to_3_4_worker = class extends AbstractDatabaseWorker { const newComponentId = { type: adventures[index].type, campaignSettings: adventures[index].campaignSettings, - id: (0, import_crypto4.randomUUID)(), + id: v4_default(), campaignId: campaign.newIndex.campaignId, parentId: campaign.newIndex.campaignId, positionInParent: index + 1 @@ -19654,7 +19698,7 @@ var V3_1_to_3_4_worker = class extends AbstractDatabaseWorker { const newComponentId = { type: acts[index].type, campaignSettings: acts[index].campaignSettings, - id: (0, import_crypto4.randomUUID)(), + id: v4_default(), campaignId: adventure.newIndex.campaignId, parentId: adventure.newIndex.id, positionInParent: index + 1 @@ -19691,7 +19735,7 @@ var V3_1_to_3_4_worker = class extends AbstractDatabaseWorker { const newComponentId = { type: scenes[index].type, campaignSettings: scenes[index].campaignSettings, - id: (0, import_crypto4.randomUUID)(), + id: v4_default(), campaignId: act.newIndex.campaignId, parentId: act.newIndex.id, positionInParent: index + 1 @@ -19719,7 +19763,7 @@ var V3_1_to_3_4_worker = class extends AbstractDatabaseWorker { const newComponentId = { type: sessions[index].type, campaignSettings: sessions[index].campaignSettings, - id: (0, import_crypto4.randomUUID)(), + id: v4_default(), campaignId: campaign.newIndex.campaignId, parentId: campaign.newIndex.campaignId, positionInParent: index + 1 @@ -19737,7 +19781,7 @@ var V3_1_to_3_4_worker = class extends AbstractDatabaseWorker { const newComponentId = { type: elements[index].type, campaignSettings: elements[index].campaignSettings, - id: (0, import_crypto4.randomUUID)(), + id: v4_default(), campaignId: campaign.newIndex.campaignId, parentId: campaign.newIndex.campaignId, positionInParent: 1 diff --git a/.obsidian/plugins/rpg-manager/manifest.json b/.obsidian/plugins/rpg-manager/manifest.json index 7d9bde4..fb7b02b 100644 --- a/.obsidian/plugins/rpg-manager/manifest.json +++ b/.obsidian/plugins/rpg-manager/manifest.json @@ -1,7 +1,7 @@ { "id": "rpg-manager", "name": "RPG Manager", - "version": "3.4.4", + "version": "3.4.5", "minAppVersion": "0.15.0", "description": "A plugin to manage your Tabletop Role Playing Game campaigns for Obsidian.", "author": "Carlo Nicora ", diff --git a/Absolue Nécessitée.md b/Absolue Nécessitée.md index f2876ff..4f520c3 100644 --- a/Absolue Nécessitée.md +++ b/Absolue Nécessitée.md @@ -2,6 +2,8 @@ --- alias: [] tags: [] +banner: "https://cdnb.artstation.com/p/assets/images/images/017/547/695/large/marc-simonetti-img-20190424-170658-527.jpg?1556439881" +banner_y: 0.572 --- ```RpgManagerData plot: @@ -26,9 +28,7 @@ data: currentAdventureId: "a33850ae-09d0-4e9d-ae95-384b4064fbaf" currentActId: "2d839255-b86f-493e-86cb-149dd5b2a537" currentSessionId: - images: - - path: "https://cdnb.artstation.com/p/assets/images/images/017/547/695/large/marc-simonetti-img-20190424-170658-527.jpg?1556439881" - caption: "" + images: [] ``` ```RpgManager models: @@ -57,7 +57,7 @@ models: npcs: relationship: "hierarchy" factions: - relationship: "hierarchy" + relationship: "hierarchy" ``` ```RpgManagerID ### DO NOT EDIT MANUALLY IF NOT INSTRUCTED TO DO SO ### diff --git a/Acts/1.1 - L'Assassinat raté.md b/Acts/1.1 - L'Assassinat raté.md index d1eaa65..1707106 100644 --- a/Acts/1.1 - L'Assassinat raté.md +++ b/Acts/1.1 - L'Assassinat raté.md @@ -2,6 +2,8 @@ alias: [] tags: [] chapter: 1 +banner: "https://i.pinimg.com/564x/8e/4b/e7/8e4be7ea21c920ea8f7b9fb75eaf389a.jpg" +banner_y: 0.388 --- ```RpgManagerData plot: @@ -61,14 +63,12 @@ parentId: "a33850ae-09d0-4e9d-ae95-384b4064fbaf" id: "2d839255-b86f-493e-86cb-149dd5b2a537" positionInParent: 1 ``` -[[Léproserie de Sheena|]] -[[Manoir d'Althéa|]] -[[Althéa Temperenza|]] +[[Boite d'Allumette de l'Hydre Cristalline|]] +[[La Lettre préventive|]] [[Lunarion Agnadelle|]] [[Verndrimund|]] [[Erulissen|]] +[[Althéa Temperenza|]] [[Gustavio|]] -[[La Lettre préventive|]] -[[Boite d'Allumette de l'Hydre Cristalline|]] [[Derlynn Boyau-Gravier|]] diff --git a/Adventures/Chapitre 1 - Révolution.md b/Adventures/Chapitre 1 - Révolution.md index 11a77dd..d869704 100644 --- a/Adventures/Chapitre 1 - Révolution.md +++ b/Adventures/Chapitre 1 - Révolution.md @@ -3,6 +3,8 @@ alias: [] tags: - ch1 +banner: "https://2.bp.blogspot.com/-1vrilRVfQLA/VvpxzuDnE0I/AAAAAAAAavI/966Kg7f8v9Mfm29TrdZxdfb_mUiEJ7Kdg/s1600/rebellion_1300px_by-andy-walsh.jpg" +banner_y: 0.384 --- ```RpgManagerData plot: @@ -21,8 +23,11 @@ plot: return: change: data: - synopsis: + synopsis: "Les joueurs sont engagés par [[Althéa Temperenza]], une députée populaire parmi le peuple, fraichement réélue à L'Assemblée de la Cité Franche. Sauvée d'une tentative d'assassinat, elle engagera les joueurs pour retrouver l'auteur de ce méfait. Apres avoir exposé au grand jour les méfait de [[Lunarion Agnadelle]], elle prendra sa place dans la Main" complete: false + images: + - path: "https://2.bp.blogspot.com/-1vrilRVfQLA/VvpxzuDnE0I/AAAAAAAAavI/966Kg7f8v9Mfm29TrdZxdfb_mUiEJ7Kdg/s1600/rebellion_1300px_by-andy-walsh.jpg" + caption: "" ``` ```RpgManager models: @@ -31,7 +36,14 @@ models: --- ### Adventure Notes - +Les joueurs sont engagés par [[Althéa Temperenza]], une députée populaire parmi le peuple, fraichement réélue à L'Assemblée de la Cité Franche. Elle soupçonne quelques bourgeois de fomenter un tentative d'assassinat et engage les joueurs pour la protéger. Les joueurs doivent trouver +Les joueurs auront donc plusieurs missions : + +- Enquêter sur le commanditaire de l'Assassinat +- Trouver et révéler les actions du/des commanditaires +- Faire élire Althéa au conseil de la Main +- Cette nouvelle pourrait briser l'équilibre précaire de L'Assemblée et Althéa en récolterait les lauriers. La nouvelle de la chute de l'empire Kadméïde en Cyrillane se répandra et les réfugiées afflueront dans la capitale de la République. Dans un contexte de crise institutionnelle, Althéa sera propulsée Absolue (dans un tonnerre d'applaudissement 😉 ). --- ```RpgManager models: diff --git a/Campagne.md b/Campagne.md index 4dca0f4..31065ce 100644 --- a/Campagne.md +++ b/Campagne.md @@ -27,7 +27,7 @@ Les joueurs sont engagés par [[Althéa|Althéa Temperanza]], une députée popu Les joueurs auront donc plusieurs missions : - Enquêter sur le commanditaire de l'Assassinat - Trouver et révéler les actions du/des commanditaires -- Faire élire [[Althéa]] au conseil de [[Conseil de la Ville|la Main]] +- Faire élire [[Althéa]] au conseil de [[La Main]] Cette nouvelle pourrait briser l'équilibre précaire de [[L'Assemblée]] et [[Althéa]] en récolterait les lauriers. La nouvelle de la chute de l'empire Kadméïde en [[Cyrillane]] se répandra et les réfugiées afflueront dans la capitale de la République. Dans un contexte de crise institutionnelle, [[Althéa]] sera propulsée *[[L'Assemblée#Les pleins pouvoirs|Absolue]]* (dans un tonnerre d'applaudissement 😉 ). ### [[Chapitre 2 - Mensonges]] diff --git a/Characters/Kuma.md b/Characters/Kuma.md index 99037ce..20d0c23 100644 --- a/Characters/Kuma.md +++ b/Characters/Kuma.md @@ -1,6 +1,8 @@ --- alias: [Tulius] tags: [] +banner: "https://www.worldanvil.com/media/cache/cover/uploads/images/9d04c7625f3f0515c8abcab226215353.png" +banner_y: 0.548 --- ```RpgManagerData data: diff --git a/Factions/Conseil des Stratèges.md b/Factions/Conseil des Stratèges.md new file mode 100644 index 0000000..6e5872e --- /dev/null +++ b/Factions/Conseil des Stratèges.md @@ -0,0 +1,32 @@ +--- +alias: [] +tags: [] +--- +```RpgManagerData +data: + synopsis: + complete: false +``` +```RpgManager +models: + header: true + lists: + pcs: + npcs: + locations: + subplots: +``` +--- +### Faction Details + - + +--- +```RpgManagerID +### DO NOT EDIT MANUALLY IF NOT INSTRUCTED TO DO SO ### +type: 1024 +campaignSettings: 0 +id: "2336e4e4-b8f6-4ccb-8465-a63b23444285" +campaignId: "160d7ffd-1d69-4848-b5e5-443eb5992dea" +parentId: "160d7ffd-1d69-4848-b5e5-443eb5992dea" +positionInParent: 0 +``` diff --git a/Factions/Conseils des Dragons.md b/Factions/Conseils des Dragons.md new file mode 100644 index 0000000..c1a331a --- /dev/null +++ b/Factions/Conseils des Dragons.md @@ -0,0 +1,32 @@ +--- +alias: [] +tags: [] +--- +```RpgManagerData +data: + synopsis: + complete: false +``` +```RpgManager +models: + header: true + lists: + pcs: + npcs: + locations: + subplots: +``` +--- +### Faction Details + - + +--- +```RpgManagerID +### DO NOT EDIT MANUALLY IF NOT INSTRUCTED TO DO SO ### +type: 1024 +campaignSettings: 0 +id: "71ec1286-b674-40aa-99f4-96dda2ffcfc3" +campaignId: "160d7ffd-1d69-4848-b5e5-443eb5992dea" +parentId: "160d7ffd-1d69-4848-b5e5-443eb5992dea" +positionInParent: 0 +``` diff --git a/Factions/La Main.md b/Factions/La Main.md new file mode 100644 index 0000000..6aff14f --- /dev/null +++ b/Factions/La Main.md @@ -0,0 +1,56 @@ +--- +alias: ["Conseil de la ville"] +tags: [] +--- +```RpgManagerData +data: + synopsis: "5 membres de [[L'Assemblée]], élus pour une période de 6 ans ; ils choisissent leur équipe d’assistants. \n" + complete: false +relationships: + - type: "bidirectional" + path: "NonPlayerCharacters/Lunarion Agnadelle.md" + description: "Membre depuis 8ans (deuxième mandat), il succède a son père." + - type: "child" + path: "Factions/L’Assemblée.md" + description: + - type: "bidirectional" + path: "Locations/Grand Palais.md" + description: +``` +```RpgManager +models: + header: true + lists: + pcs: + npcs: + locations: + subplots: +``` +--- +### Faction Details + +Installés en permanence dans les bâtiments officiels, les membres sont les premiers avertis en cas de problème. Ils gèrent les affaires courantes et préparent l’essentiel de l’ordre du jour de [[l’Assemblée]]. + +Le dernier vote pour le conseil a eu lieu l'année dernière + +### Membres actuels +- [[Lunarion Agnadelle]], depuis 8ans (deuxième mandat), il succède a son père. +- [[Malvina Ceréel]], la matriarche halfeline de la famille Ceréel, entame sa 13e année (3eme mandat) et ne compte pas partir. +- [[Artistophane Ipato]] l'héritier de la famille Ipato est dans son premier mandat, et c'est la première fois qu'une famille Cyrillane arrive au conseil de la main. +- [[Zerka Valtor]] une naine haut placée dans l'institution de la Steinbank. +- Le [[Baron de l'Éther]], un gnome qui possède la majorité des transports de la villes. Compagnie de barques, [[néfélytres]] et [[boursoufleuses]]. Il siège au conseil du [[Quartier de l'éolienne]] +--- +```RpgManagerID +### DO NOT EDIT MANUALLY IF NOT INSTRUCTED TO DO SO ### +type: 1024 +campaignSettings: 0 +id: "38edaba0-c820-47b0-b098-0585bc21fa7c" +campaignId: "160d7ffd-1d69-4848-b5e5-443eb5992dea" +parentId: "160d7ffd-1d69-4848-b5e5-443eb5992dea" +positionInParent: 0 +``` +[[Lunarion Agnadelle|]] +[[L’Assemblée|]] +[[Grand Palais|]] +[[République|]] + diff --git a/Factions/L’Assemblée.md b/Factions/L’Assemblée.md new file mode 100644 index 0000000..b787671 --- /dev/null +++ b/Factions/L’Assemblée.md @@ -0,0 +1,45 @@ +--- +alias: [] +tags: [] +banner: "![[L'assemblée.jpg]]" +banner_y: 0.524 +--- +```RpgManagerData +data: + synopsis: "L'Assemblée est le principal organe décisionnaire de la République. " + complete: false +``` +```RpgManager +models: + header: true + lists: + pcs: + npcs: + locations: + subplots: +``` +--- +111 Citoyens tirés au sort tous les six ans peuvent voter les loi, déclarer la guerre, voter la paix, saisir un conseil pour demander une intervention ou faire office de tribunal en derniers recours. + +Les débats sont souvent public, rarement à huis-clos. Ils peuvent nommer des délégués pour mener une enquête + +### Le pouvoir a tout prix +Bien que les membres de l’Assemblée soient théoriquement tirés au sort, une règle permet à un citoyen dont les activités sont trop prenantes de céder sa charge à une personne de son choix. Cette clause a dérivé avec le temps en un marché de la représentation comprenant un volet légal (simple vente au plus offrant) et un volet illégal (tel le chantage pour inciter un représentant à céder sa charge, ou d’autres pressions et menaces). Il arrive aussi qu’un citoyen désigné par le sort donne gratuitement son mandat à un citoyen qu’il estime plus compétent que lui.   + +À cause de ce système, le pouvoir est généralement continuellement entre les mains des mêmes groupes, des mêmes familles, aboutissant progressivement à donner une saveur d’oligarchie à la République. Le sans-gêne de certains puissants, sûrs de leur impunité, est source de tensions croissantes et alimente les discours extrémistes de prédicateurs qui rêvent de « libérer » les habitants des tyrans, de la même manière qu’en [[Cyrillanne]].  + +Conscients des déviances des institutions, des citoyens de toutes conditions réclament des réformes, mais l’Assemblée peut-elle se réformer elle-même alors que tant de ses membres auraient à y perdre ? + +### Les pleins pouvoirs   +En cas de crise et de péril imminent pour la République, l’Assemblée peut voter les pleins pouvoirs à un magistrat unique appelé *l’Absolu*. Il dirigera durant un an, avec une liberté complète et le contrôle de toutes les forces armées. Cette institution n’a pratiquement jamais servi au cours de la République. Son abolition a souvent été demandée, mais jamais votée. Ses défenseurs assurent que si la [[Cyrillanne]] avait pu mettre en place un Absolu, jamais elle ne se serait effondrée comme à présent + +--- +```RpgManagerID +### DO NOT EDIT MANUALLY IF NOT INSTRUCTED TO DO SO ### +type: 1024 +campaignSettings: 0 +id: "350f09c8-2387-4b1e-84cf-aec22a7677a2" +campaignId: "160d7ffd-1d69-4848-b5e5-443eb5992dea" +parentId: "160d7ffd-1d69-4848-b5e5-443eb5992dea" +positionInParent: 0 +``` diff --git a/Factions/République.md b/Factions/République.md new file mode 100644 index 0000000..729f50a --- /dev/null +++ b/Factions/République.md @@ -0,0 +1,69 @@ +--- +alias: [] +tags: [] +banner_icon: 🏛️ +banner: "![[L'assemblée.jpg]]" +banner_y: 0.128 +--- +```RpgManagerData +data: + synopsis: + complete: false +relationships: + - type: "child" + path: "Factions/Conseil des Stratèges.md" + description: + - type: "child" + path: "Factions/L’Assemblée.md" + description: + - type: "child" + path: "Factions/Conseils des Dragons.md" + description: + - type: "child" + path: "Factions/La Main.md" + description: +``` +```RpgManager +models: + header: true + lists: + pcs: + npcs: + locations: + subplots: + factions: +``` +--- +### Faction Details +Si la Cité Franche s’est imposée comme une puissance marchande incontournable, c’est le résultat d’une volonté sans faille, s’appuyant sur un mélange de persévérance et d’opportunisme. En 331 ans, la République s’est attachée à tisser des relations fortes avec de nombreuses civilisations, installant des comptoirs et nouant des accords protecteurs de ses intérêts. Une politique de neutralité affichée dans les conflits locaux a amené notre territoire à être un lieu de rencontre où les agents de peuples ennemis peuvent mener une diplomatie de l’ombre aboutissant parfois à des traités de paix providentiels. Néanmoins, toutes les ambassades et délégations voyagent avec des espions qui agissent par eux-mêmes ou bien font la richesse des guildes de voleurs chargées de faire leur sale boulot : vol, chantage, enlèvement, assassinat. Par le passé déjà, le destin de peuples lointains s’est joué entre les murs de notre ville, et tout indique que ce rôle d’arrière-cour des intrigues n’est pas près de cesser. + +### Histoire +L’empire de Tamerakh fut divisé en provinces, chacune contrôlée par un gouverneur nommé par le conquérant en personne. Au moment de l’ascension divine, les personnages les plus importants de tout l’empire avaient été conviés à sa capitale, dans l’est du vieux Kaan. D’après la légende, aucun n’en revint et ils moururent tous, comme sa population, et tous les prisonniers de guerre réduits à l’esclavage. Un tel carnage défit tout ce que nous pouvons imaginer. Il ne demeura dans les provinces impériales que les subalternes, et quelques gouverneurs assez prudents pour se faire porter pâle et envoyer leurs seconds à leur place. La Resgrande Riporte faisait partie de la province de Barruna qui couvre approximativement le territoire terrestre actuellement sous le contrôle de la Cité Franche, mais la décision avait été prise de placer la capitale à Malachaï, dans les [[Reliefs de Histe]]. + +#### Le royaume de Barruna + +Après la chute de l’empire de Tamerakh, le Barruna devint un royaume et le gouverneur se proclama roi. Il régna une vingtaine d’année, mais échoua à assurer la stabilité de sa dynastie dans le temps. Son successeur fut renversé par la cheffe de la résistance, Sheena la halfeline. Elle fondit un nouveau royaume, dont la capitale était la Resgrande Riporte. Ce nouveau royaume prit le nom de Ouestrie – une traduction transparente du terme kaani Barruna ! Il n’a pas su s’établir dans la durée, mais les grands principes qui ont présidé à sa création ont en revanche marqué l’histoire. Liberté, force d’âme, esprit d’initiative, égalité, mérité : nous avons là les germes de la République à venir. Cette royauté était d’ailleurs élective. Ses dirigeants hélas manquaient de sens stratégique. La Cyrillane su en tirer profit. + +#### Les Drae +Une habile politique matrimoniale et d’alliance, couplée à une politique de puissance à long terme leur permirent de prendre le contrôle du royaume de Ouestrie. Une dynastie de souverains vassaux mi-ouestriens, mi-cyrillans, les Drae, régna pendant l’essentiel de la période précédant l’instauration de la République. +Pratiquement tous les vestiges royaux que vous pourriez croiser datent de cette époque. De même, les familles qui affichent aujourd’hui encore un titre de noblesse, l’ont acquis sous les Drae.  + +La Resgrande Riporte a considérablement grandi sous leur règne, pour prendre peu à peu le visage que vous lui connaissez. Ils ont inauguré la cathédrale de Flore et Givreuse et le grand sanctuaire de Forgeron. L’abandon de la vieille nécropole au profit du Cimetière de la Plaine est également de leur fait ; l’installation de la Steinbank aussi. En dépit de forces indéniables, le royaume souffrait de défauts qui précipitèrent sa perte. Les familles guildiennes en particulier étaient insatisfaites de la politique fiscale imposée indirectement par le trône cyrillan. La révolution à venir se nourrissait à la fois du ressentiment d’être un pays vassal, de la pression économique, du souvenir des idéaux ayant mené à renverser le royaume de Barruna, et de la relative faiblesse de la Cyrillane alors prise dans une tentative malheureuse de conquérir le royaume de Ghardat.  +L’ultime facteur déclenchant fut un concours de circonstances, une suite d’accidents et de décès tragiques qui menèrent sur le trône Alexis III, un jeune souverain généreux, mais qui mesurait mal la succession d’événements qu’il allait déclencher. Soucieux du bien-être de son peuple, il décida de plaider sa cause auprès de l’empereur, en se rendant en personne à Kratéïra avec une délégation guildienne.  +Il existe plusieurs versions, contradictoires, des événements. Toujours est-il qu’Alexis III Drae mourut au cours du voyage – de maladie ou d’un empoisonnement –, et que certains guildiens furent arrêtés et exécutés pour sédition. Pour l’anecdote, la guilde d’especiel, qui contrôle le commerce des épices, et la guilde des alchimistes sont encore soupçonnées par certains d’avoir assassiné alors le souverain pour provoquer une révolte contre la Cyrillane et obtenir l’indépendance. La population assemblée dans l’ancien palais vota solennellement pour l’établissement de la République. Une époque venait de s’achever. + + +--- +```RpgManagerID +### DO NOT EDIT MANUALLY IF NOT INSTRUCTED TO DO SO ### +type: 1024 +campaignSettings: 0 +id: "24d99f46-7010-41c4-9362-8c55ece4cdce" +campaignId: "160d7ffd-1d69-4848-b5e5-443eb5992dea" +parentId: "160d7ffd-1d69-4848-b5e5-443eb5992dea" +positionInParent: 0 +``` +[[Conseil des Stratèges|]] +[[L’Assemblée|]] +[[Conseils des Dragons|]] +[[La Main|]] diff --git a/Locations/Cité Franche.md b/Locations/Cité Franche.md index 1f6a72d..1e73f3e 100644 --- a/Locations/Cité Franche.md +++ b/Locations/Cité Franche.md @@ -1,5 +1,5 @@ --- -alias: [] +alias: ["Resgrande Riporte"] tags: [] type: Cité status: Done @@ -13,6 +13,16 @@ data: images: - path: "Illustrations/Logo/Embleme de la Cité Franche.png" caption: "" +relationships: + - type: "child" + path: "Locations/Terrasse du Palais.md" + description: + - type: "child" + path: "Locations/Quartier du Vieux Port.md" + description: + - type: "child" + path: "Locations/Quartier de la Forge.md" + description: ``` ```RpgManager models: @@ -50,3 +60,6 @@ campaignId: "160d7ffd-1d69-4848-b5e5-443eb5992dea" parentId: "160d7ffd-1d69-4848-b5e5-443eb5992dea" positionInParent: 0 ``` +[[Terrasse du Palais|]] +[[Quartier du Vieux Port|]] +[[Quartier de la Forge|]] diff --git a/Locations/Cyfandir.md b/Locations/Cyfandir.md index 9c9f3a6..01bfa42 100644 --- a/Locations/Cyfandir.md +++ b/Locations/Cyfandir.md @@ -8,6 +8,10 @@ data: synopsis: complete: false address: +relationships: + - type: "child" + path: "Locations/Ouestrie.md" + description: ``` ```RpgManager models: @@ -39,3 +43,4 @@ campaignId: "160d7ffd-1d69-4848-b5e5-443eb5992dea" parentId: "160d7ffd-1d69-4848-b5e5-443eb5992dea" positionInParent: 0 ``` +[[Ouestrie|]] diff --git a/Locations/Cyrillanne.md b/Locations/Cyrillanne.md new file mode 100644 index 0000000..f9532ce --- /dev/null +++ b/Locations/Cyrillanne.md @@ -0,0 +1,40 @@ +--- +alias: [] +tags: [] +--- +```RpgManagerData +data: + synopsis: + complete: false + address: +``` +```RpgManager +models: + header: true + lists: + pcs: + npcs: + events: + clues: + locations: + - relationship: "parent" + title: "Inside" + - relationship: "child" + title: "Contains" + - relationship: + title: "Related Locations" +``` +--- +### Location Details + - + +--- +```RpgManagerID +### DO NOT EDIT MANUALLY IF NOT INSTRUCTED TO DO SO ### +type: 128 +campaignSettings: 0 +id: "c71042c0-2cc2-4e43-a8c9-f6d584c7877b" +campaignId: "160d7ffd-1d69-4848-b5e5-443eb5992dea" +parentId: "160d7ffd-1d69-4848-b5e5-443eb5992dea" +positionInParent: 0 +``` diff --git a/Locations/Grand Palais.md b/Locations/Grand Palais.md new file mode 100644 index 0000000..8f4afbd --- /dev/null +++ b/Locations/Grand Palais.md @@ -0,0 +1,40 @@ +--- +alias: ["Ancien Palais","Palais"] +tags: [] +--- +```RpgManagerData +data: + synopsis: + complete: false + address: +``` +```RpgManager +models: + header: true + lists: + pcs: + npcs: + events: + clues: + locations: + - relationship: "parent" + title: "Inside" + - relationship: "child" + title: "Contains" + - relationship: + title: "Related Locations" +``` +--- +### Location Details + - + +--- +```RpgManagerID +### DO NOT EDIT MANUALLY IF NOT INSTRUCTED TO DO SO ### +type: 128 +campaignSettings: 0 +id: "24c70dc1-9df1-41b4-b4dc-01f008c5770c" +campaignId: "160d7ffd-1d69-4848-b5e5-443eb5992dea" +parentId: "160d7ffd-1d69-4848-b5e5-443eb5992dea" +positionInParent: 0 +``` diff --git a/Locations/Kratéïra.md b/Locations/Kratéïra.md new file mode 100644 index 0000000..4d78d76 --- /dev/null +++ b/Locations/Kratéïra.md @@ -0,0 +1,40 @@ +--- +alias: [] +tags: [] +--- +```RpgManagerData +data: + synopsis: + complete: false + address: +``` +```RpgManager +models: + header: true + lists: + pcs: + npcs: + events: + clues: + locations: + - relationship: "parent" + title: "Inside" + - relationship: "child" + title: "Contains" + - relationship: + title: "Related Locations" +``` +--- +### Location Details + - + +--- +```RpgManagerID +### DO NOT EDIT MANUALLY IF NOT INSTRUCTED TO DO SO ### +type: 128 +campaignSettings: 0 +id: "f70a7d1c-7b2c-4f47-8396-d7b4f3c871d0" +campaignId: "160d7ffd-1d69-4848-b5e5-443eb5992dea" +parentId: "160d7ffd-1d69-4848-b5e5-443eb5992dea" +positionInParent: 0 +``` diff --git a/Locations/Ouestrie.md b/Locations/Ouestrie.md index 22f5b1d..780ab1d 100644 --- a/Locations/Ouestrie.md +++ b/Locations/Ouestrie.md @@ -1,5 +1,5 @@ --- -alias: [] +alias: ["Territoires de la République"] tags: [] type: Pays status: Done @@ -10,6 +10,13 @@ data: synopsis: "Territoires appartenant à la République de la [[Cité Franche]]" complete: false address: +relationships: + - type: "child" + path: "Locations/Reliefs de Histe.md" + description: + - type: "child" + path: "Locations/Cité Franche.md" + description: ``` ```RpgManager models: @@ -41,3 +48,5 @@ campaignId: "160d7ffd-1d69-4848-b5e5-443eb5992dea" parentId: "160d7ffd-1d69-4848-b5e5-443eb5992dea" positionInParent: 0 ``` +[[Reliefs de Histe|]] +[[Cité Franche|]] diff --git a/Locations/Reliefs de Histe.md b/Locations/Reliefs de Histe.md new file mode 100644 index 0000000..75f7af2 --- /dev/null +++ b/Locations/Reliefs de Histe.md @@ -0,0 +1,41 @@ +--- +alias: [] +tags: [] +found-in: [[Ouestrie]] +--- +```RpgManagerData +data: + synopsis: + complete: false + address: +``` +```RpgManager +models: + header: true + lists: + pcs: + npcs: + events: + clues: + locations: + - relationship: "parent" + title: "Inside" + - relationship: "child" + title: "Contains" + - relationship: + title: "Related Locations" +``` +--- +### Location Details + - + +--- +```RpgManagerID +### DO NOT EDIT MANUALLY IF NOT INSTRUCTED TO DO SO ### +type: 128 +campaignSettings: 0 +id: "f0ac0e8b-3b8e-4a70-957e-9bb826ab1357" +campaignId: "160d7ffd-1d69-4848-b5e5-443eb5992dea" +parentId: "160d7ffd-1d69-4848-b5e5-443eb5992dea" +positionInParent: 0 +``` diff --git a/Locations/Terrasse du Palais.md b/Locations/Terrasse du Palais.md index 16ca87e..c749a20 100644 --- a/Locations/Terrasse du Palais.md +++ b/Locations/Terrasse du Palais.md @@ -9,6 +9,13 @@ data: synopsis: complete: false address: +relationships: + - type: "child" + path: "Locations/Grand Palais.md" + description: + - type: "child" + path: "Locations/Manoir d'Althéa.md" + description: ``` ```RpgManager models: @@ -40,3 +47,5 @@ campaignId: "160d7ffd-1d69-4848-b5e5-443eb5992dea" parentId: "160d7ffd-1d69-4848-b5e5-443eb5992dea" positionInParent: 0 ``` +[[Grand Palais|]] +[[Manoir d'Althéa|]] diff --git a/NonPlayerCharacters/Althéa Temperenza.md b/NonPlayerCharacters/Althéa Temperenza.md index 5b0c1da..f1ad00b 100644 --- a/NonPlayerCharacters/Althéa Temperenza.md +++ b/NonPlayerCharacters/Althéa Temperenza.md @@ -10,7 +10,7 @@ data: synopsis: "Une politicienne qui a le soutien populaire, et la principale commanditaire des personnages" death: dob: - goals: "- Se faire élire en tant qu'Absolue\n- Installer des nids chancreux dans le Taudis d'Asoif" + goals: "- Acceder au [[La Main|Conseil de la ville]]\n- Se faire élire en tant qu'Absolue\n- Installer des nids chancreux dans le Taudis d'Asoif" pronoun: complete: false images: @@ -56,7 +56,7 @@ campaignId: "160d7ffd-1d69-4848-b5e5-443eb5992dea" parentId: "160d7ffd-1d69-4848-b5e5-443eb5992dea" positionInParent: 0 ``` -[[Manoir d'Althéa|]] + diff --git a/NonPlayerCharacters/Lunarion Agnadelle.md b/NonPlayerCharacters/Lunarion Agnadelle.md index 5f0f8eb..bee2e73 100644 --- a/NonPlayerCharacters/Lunarion Agnadelle.md +++ b/NonPlayerCharacters/Lunarion Agnadelle.md @@ -7,7 +7,7 @@ class: Politique --- ```RpgManagerData data: - synopsis: "Lunarion est l'héritier de l'ancienne famille Agnadelle, des nobles d'avant la République\n \nLunarion est membre de [[Conseil de la Ville|la Main]] depuis 8 ans et un membre éminent du conseil des guildes. " + synopsis: "Lunarion est l'héritier de l'ancienne famille Agnadelle, des nobles d'avant la République\n \nLunarion est membre de [[La Main]] depuis 8 ans et un membre éminent du conseil des guildes. " death: dob: goals: "- Tuer [[Althéa Temperenza|Althéa]]\n- Choisir lequel de ses trois fils héritera. \n- Absorber la compagnie Temperenza" diff --git a/NonPlayerCharacters/Malvina Ceréel.md b/NonPlayerCharacters/Malvina Ceréel.md new file mode 100644 index 0000000..a7acba6 --- /dev/null +++ b/NonPlayerCharacters/Malvina Ceréel.md @@ -0,0 +1,45 @@ +--- +alias: [] +tags: [] +race: halfelin +--- +```RpgManagerData +data: + synopsis: + death: + dob: + goals: + pronoun: + complete: false +``` +```RpgManager +models: + header: true + lists: + subplots: + pcs: + relationship: "unidirectional" + npcs: + relationship: "unidirectional" + factions: + locations: + events: + clues: +``` +--- +### Non Player Character Notes + - + +### Non Player Character Story + - + +--- +```RpgManagerID +### DO NOT EDIT MANUALLY IF NOT INSTRUCTED TO DO SO ### +type: 64 +campaignSettings: 0 +id: "c7e8c576-4cd5-4579-b06f-3e4e48e5b253" +campaignId: "160d7ffd-1d69-4848-b5e5-443eb5992dea" +parentId: "160d7ffd-1d69-4848-b5e5-443eb5992dea" +positionInParent: 0 +```