diff --git a/package-lock.json b/package-lock.json
index 53616e24..25a3c267 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1353,7 +1353,6 @@
"integrity": "sha512-zWW5KPngR/yvakJgGOmZ5vTBemDoSqF3AcV/LrO5u5wTWyEAVVh+IT39G4gtyAkh3CtTZs8aX/yRM82OfzHJRg==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"undici-types": "~7.16.0"
}
@@ -1394,7 +1393,6 @@
"integrity": "sha512-gfajTHVCiwpxRj1qh0Sh/5bbGLG4F/ZH/V9xvFVoFddpITfMta9YGow0W6ZpTTORv2vdJuz9TnrNSmjKvpOf4g==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"@vitest/browser": "4.0.18",
"@vitest/mocker": "4.0.18",
@@ -1876,7 +1874,6 @@
"resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz",
"integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==",
"license": "ISC",
- "peer": true,
"engines": {
"node": ">=12"
}
@@ -2163,7 +2160,6 @@
"integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
"dev": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=12"
},
@@ -2475,7 +2471,6 @@
"integrity": "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"esbuild": "^0.27.0",
"fdir": "^6.5.0",
@@ -2551,7 +2546,6 @@
"integrity": "sha512-hOQuK7h0FGKgBAas7v0mSAsnvrIgAvWmRFjmzpJ7SwFHH3g1k2u37JtYwOwmEKhK6ZO3v9ggDBBm0La1LCK4uQ==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"@vitest/expect": "4.0.18",
"@vitest/mocker": "4.0.18",
diff --git a/public/modules/coa-generator.js b/public/modules/coa-generator.js
deleted file mode 100644
index 188707c3..00000000
--- a/public/modules/coa-generator.js
+++ /dev/null
@@ -1,2211 +0,0 @@
-"use strict";
-
-window.COA = (function () {
- const tinctures = {
- field: {metals: 3, colours: 4, stains: +P(0.03), patterns: 1},
- division: {metals: 5, colours: 8, stains: +P(0.03), patterns: 1},
- charge: {metals: 2, colours: 3, stains: +P(0.05), patterns: 0},
- metals: {argent: 3, or: 2},
- colours: {gules: 5, azure: 4, sable: 3, purpure: 3, vert: 2},
- stains: {murrey: 1, sanguine: 1, tenné: 1},
- patterns: {
- semy: 8,
- ermine: 6,
- vair: 4,
- counterVair: 1,
- vairInPale: 1,
- vairEnPointe: 2,
- vairAncien: 2,
- potent: 2,
- counterPotent: 1,
- potentInPale: 1,
- potentEnPointe: 1,
- chequy: 8,
- lozengy: 5,
- fusily: 2,
- pally: 8,
- barry: 10,
- gemelles: 1,
- bendy: 8,
- bendySinister: 4,
- palyBendy: 2,
- barryBendy: 1,
- pappellony: 2,
- pappellony2: 3,
- scaly: 1,
- plumetty: 1,
- masoned: 6,
- fretty: 3,
- grillage: 1,
- chainy: 1,
- maily: 2,
- honeycombed: 1
- }
- };
-
- const chargeData = {
- agnusDei: {
- colors: 2,
- sinister: true
- },
- angel: {
- colors: 2,
- positions: {e: 1}
- },
- anvil: {
- sinister: true
- },
- apple: {
- colors: 2
- },
- arbalest: {
- colors: 3,
- reversed: true
- },
- archer: {
- colors: 3,
- sinister: true
- },
- armEmbowedHoldingSabre: {
- colors: 3,
- sinister: true
- },
- armEmbowedVambraced: {
- sinister: true
- },
- armEmbowedVambracedHoldingSword: {
- colors: 3,
- sinister: true
- },
- armillarySphere: {
- positions: {e: 1}
- },
- arrow: {
- colors: 3,
- reversed: true
- },
- arrowsSheaf: {
- colors: 3,
- reversed: true
- },
- axe: {
- colors: 2,
- sinister: true
- },
- badgerStatant: {
- colors: 2,
- sinister: true
- },
- banner: {
- colors: 2
- },
- basilisk: {
- colors: 3,
- sinister: true
- },
- bearPassant: {
- colors: 3,
- sinister: true
- },
- bearRampant: {
- colors: 3,
- sinister: true
- },
- bee: {
- colors: 3,
- reversed: true
- },
- bell: {
- colors: 2
- },
- boarHeadErased: {
- colors: 3,
- sinister: true
- },
- boarRampant: {
- colors: 3,
- sinister: true,
- positions: {e: 12, beh: 1, kn: 1, jln: 2}
- },
- boat: {
- colors: 2
- },
- bookClosed: {
- colors: 3,
- sinister: true
- },
- bookClosed2: {
- sinister: true
- },
- bookOpen: {
- colors: 3
- },
- bow: {
- sinister: true
- },
- bowWithArrow: {
- colors: 3,
- reversed: true
- },
- bowWithThreeArrows: {
- colors: 3
- },
- bucket: {
- colors: 2
- },
- bugleHorn: {
- colors: 2
- },
- bugleHorn2: {
- colors: 2
- },
- bullHeadCaboshed: {
- colors: 2
- },
- bullPassant: {
- colors: 3,
- sinister: true
- },
- butterfly: {
- colors: 3,
- reversed: true
- },
- camel: {
- colors: 2,
- sinister: true
- },
- cancer: {
- reversed: true
- },
- cannon: {
- colors: 2,
- sinister: true
- },
- caravel: {
- colors: 3,
- sinister: true
- },
- castle: {
- colors: 2
- },
- castle2: {
- colors: 3
- },
- catPassantGuardant: {
- colors: 2,
- sinister: true
- },
- cavalier: {
- colors: 3,
- sinister: true,
- positions: {e: 1}
- },
- centaur: {
- colors: 3,
- sinister: true
- },
- chalice: {
- colors: 2
- },
- cinquefoil: {
- reversed: true
- },
- cock: {
- colors: 3,
- sinister: true
- },
- comet: {
- reversed: true
- },
- cowStatant: {
- colors: 3,
- sinister: true
- },
- cossack: {
- colors: 3,
- sinister: true
- },
- crescent: {
- reversed: true
- },
- crocodile: {
- colors: 2,
- sinister: true
- },
- crosier: {
- sinister: true
- },
- crossbow: {
- colors: 3,
- sinister: true
- },
- crossGamma: {
- sinister: true
- },
- crossLatin: {
- reversed: true
- },
- crossTau: {
- reversed: true
- },
- crossTriquetra: {
- reversed: true
- },
- crown: {
- colors: 2,
- positions: {
- e: 10,
- abcdefgzi: 1,
- beh: 3,
- behdf: 2,
- acegi: 1,
- kn: 1,
- pq: 2,
- abc: 1,
- jln: 4,
- jleh: 1,
- def: 2,
- abcpqh: 3
- }
- },
- crown2: {
- colors: 3,
- positions: {
- e: 10,
- abcdefgzi: 1,
- beh: 3,
- behdf: 2,
- acegi: 1,
- kn: 1,
- pq: 2,
- abc: 1,
- jln: 4,
- jleh: 1,
- def: 2,
- abcpqh: 3
- }
- },
- deerHeadCaboshed: {
- colors: 2
- },
- dolphin: {
- colors: 2,
- sinister: true
- },
- donkeyHeadCaboshed: {
- colors: 2
- },
- dove: {
- colors: 2,
- natural: "argent",
- sinister: true
- },
- doveDisplayed: {
- colors: 2,
- natural: "argent",
- sinister: true
- },
- dragonfly: {
- colors: 2,
- reversed: true
- },
- dragonPassant: {
- colors: 3,
- sinister: true
- },
- dragonRampant: {
- colors: 3,
- sinister: true
- },
- drakkar: {
- colors: 3,
- sinister: true
- },
- drawingCompass: {
- sinister: true
- },
- drum: {
- colors: 3
- },
- duck: {
- colors: 3,
- sinister: true
- },
- eagle: {
- colors: 3,
- sinister: true,
- positions: {e: 15, beh: 1, kn: 1, abc: 1, jlh: 2, def: 2, pq: 1}
- },
- eagleTwoHeads: {
- colors: 3
- },
- elephant: {
- colors: 2,
- sinister: true
- },
- elephantHeadErased: {
- colors: 2,
- sinister: true
- },
- falchion: {
- colors: 2,
- reversed: true
- },
- falcon: {
- colors: 3,
- sinister: true
- },
- fan: {
- colors: 2,
- reversed: true
- },
- fasces: {
- colors: 3,
- sinister: true
- },
- feather: {
- sinister: true
- },
- flamberge: {
- colors: 2,
- reversed: true
- },
- flangedMace: {
- reversed: true
- },
- fly: {
- colors: 3,
- reversed: true
- },
- foot: {
- sinister: true
- },
- fountain: {
- natural: "azure"
- },
- frog: {
- reversed: true
- },
- garb: {
- colors: 2,
- natural: "or",
- positions: {e: 1, def: 3, abc: 2, beh: 1, kn: 1, jln: 3, jleh: 1, abcpqh: 1, joe: 1, lme: 1}
- },
- gauntlet: {
- sinister: true,
- reversed: true
- },
- goat: {
- colors: 3,
- sinister: true
- },
- goutte: {
- reversed: true
- },
- grapeBunch: {
- colors: 3,
- sinister: true
- },
- grapeBunch2: {
- colors: 3,
- sinister: true
- },
- grenade: {
- colors: 2
- },
- greyhoundCourant: {
- colors: 3,
- sinister: true,
- positions: {e: 10, def: 1, abc: 1, bdefh: 1, jlh: 1, abcpqh: 1}
- },
- greyhoundRampant: {
- colors: 2,
- sinister: true,
- positions: {e: 10, def: 1, abc: 1, bdefh: 1, jlh: 1, abcpqh: 1}
- },
- greyhoundSejant: {
- colors: 3,
- sinister: true
- },
- griffinPassant: {
- colors: 3,
- sinister: true,
- positions: {e: 10, def: 2, abc: 2, bdefh: 1, kn: 1, jlh: 2, abcpqh: 1}
- },
- griffinRampant: {
- colors: 3,
- sinister: true,
- positions: {e: 10, def: 1, abc: 1, bdefh: 1, jlh: 1, abcpqh: 1}
- },
- hand: {
- sinister: true,
- reversed: true,
- positions: {e: 10, jln: 2, kn: 1, jeo: 1, abc: 2, pqe: 1}
- },
- harp: {
- colors: 2,
- sinister: true
- },
- hatchet: {
- colors: 2,
- sinister: true
- },
- head: {
- colors: 2,
- sinister: true,
- positions: {e: 1}
- },
- headWreathed: {
- colors: 3,
- sinister: true,
- positions: {e: 1}
- },
- hedgehog: {
- colors: 3,
- sinister: true
- },
- helmet: {
- sinister: true
- },
- helmetCorinthian: {
- colors: 3,
- sinister: true
- },
- helmetGreat: {
- sinister: true
- },
- helmetZischagge: {
- sinister: true
- },
- heron: {
- colors: 2,
- sinister: true
- },
- hindStatant: {
- colors: 2,
- sinister: true
- },
- hook: {
- sinister: true
- },
- horseHeadCouped: {
- sinister: true
- },
- horsePassant: {
- colors: 2,
- sinister: true
- },
- horseRampant: {
- colors: 3,
- sinister: true
- },
- horseSalient: {
- colors: 2,
- sinister: true
- },
- horseshoe: {
- reversed: true
- },
- hourglass: {
- colors: 3
- },
- ladybird: {
- colors: 3,
- reversed: true
- },
- lamb: {
- colors: 2,
- sinister: true
- },
- lambPassantReguardant: {
- colors: 2,
- sinister: true
- },
- lanceWithBanner: {
- colors: 3,
- sinister: true
- },
- laurelWreath: {
- colors: 2
- },
- lighthouse: {
- colors: 3
- },
- lionHeadCaboshed: {
- colors: 2
- },
- lionHeadErased: {
- colors: 2,
- sinister: true
- },
- lionPassant: {
- colors: 3,
- sinister: true,
- positions: {e: 10, def: 1, abc: 1, bdefh: 1, jlh: 1, abcpqh: 1}
- },
- lionPassantGuardant: {
- colors: 3,
- sinister: true
- },
- lionRampant: {
- colors: 3,
- sinister: true,
- positions: {e: 10, def: 2, abc: 2, bdefh: 1, kn: 1, jlh: 2, abcpqh: 1}
- },
- lionSejant: {
- colors: 3,
- sinister: true
- },
- lizard: {
- reversed: true
- },
- lochaberAxe: {
- colors: 2,
- sinister: true
- },
- log: {
- sinister: true
- },
- lute: {
- colors: 2,
- sinister: true
- },
- lymphad: {
- colors: 3,
- sinister: true,
- positions: {e: 1}
- },
- mace: {
- colors: 2
- },
- maces: {
- colors: 2
- },
- mallet: {
- colors: 2
- },
- mantle: {
- colors: 3
- },
- martenCourant: {
- colors: 3,
- sinister: true
- },
- mascle: {
- positions: {
- e: 15,
- abcdefgzi: 3,
- beh: 3,
- bdefh: 4,
- acegi: 1,
- kn: 3,
- joe: 2,
- abc: 3,
- jlh: 8,
- jleh: 1,
- df: 3,
- abcpqh: 4,
- pqe: 3,
- eknpq: 3
- }
- },
- mastiffStatant: {
- colors: 3,
- sinister: true
- },
- mitre: {
- colors: 3
- },
- monk: {
- sinister: true
- },
- moonInCrescent: {
- sinister: true
- },
- mullet: {
- reversed: true
- },
- mullet7: {
- reversed: true
- },
- oak: {
- colors: 3
- },
- orb: {
- colors: 3
- },
- ouroboros: {
- sinister: true
- },
- owl: {
- colors: 2,
- sinister: true
- },
- owlDisplayed: {
- colors: 2
- },
- palmTree: {
- colors: 3
- },
- parrot: {
- colors: 2,
- sinister: true
- },
- peacock: {
- colors: 3,
- sinister: true
- },
- peacockInPride: {
- colors: 3,
- sinister: true
- },
- pear: {
- colors: 2
- },
- pegasus: {
- colors: 3,
- sinister: true
- },
- pike: {
- colors: 2,
- sinister: true
- },
- pineTree: {
- colors: 2
- },
- plaice: {
- colors: 2,
- sinister: true
- },
- plough: {
- colors: 2,
- sinister: true
- },
- ploughshare: {
- sinister: true
- },
- porcupine: {
- colors: 2,
- sinister: true
- },
- portcullis: {
- colors: 2
- },
- rabbitSejant: {
- colors: 2,
- sinister: true
- },
- rake: {
- reversed: true
- },
- rapier: {
- colors: 2,
- sinister: true,
- reversed: true
- },
- ramHeadErased: {
- colors: 3,
- sinister: true
- },
- ramPassant: {
- colors: 3,
- sinister: true
- },
- ratRampant: {
- colors: 2,
- sinister: true
- },
- raven: {
- colors: 2,
- natural: "sable",
- sinister: true,
- positions: {e: 15, beh: 1, kn: 1, jeo: 1, abc: 3, jln: 3, def: 1}
- },
- rhinoceros: {
- colors: 2,
- sinister: true
- },
- rose: {
- colors: 3
- },
- sabre: {
- colors: 2,
- sinister: true
- },
- sabre2: {
- colors: 2,
- sinister: true,
- reversed: true
- },
- sabresCrossed: {
- colors: 2,
- reversed: true
- },
- sagittarius: {
- colors: 3,
- sinister: true
- },
- salmon: {
- colors: 2,
- sinister: true
- },
- saw: {
- colors: 2
- },
- scale: {
- colors: 2
- },
- scaleImbalanced: {
- colors: 2,
- sinister: true
- },
- scissors: {
- reversed: true
- },
- scorpion: {
- reversed: true
- },
- scrollClosed: {
- colors: 2,
- sinister: true
- },
- scythe: {
- colors: 2,
- sinister: true,
- reversed: true
- },
- scythe2: {
- sinister: true
- },
- serpent: {
- colors: 2,
- sinister: true
- },
- shield: {
- colors: 2,
- sinister: true
- },
- sickle: {
- colors: 2,
- sinister: true,
- reversed: true
- },
- snail: {
- colors: 2,
- sinister: true
- },
- snake: {
- colors: 2,
- sinister: true
- },
- spear: {
- colors: 2,
- reversed: true
- },
- spiral: {
- sinister: true,
- reversed: true
- },
- squirrel: {
- sinister: true
- },
- stagLodgedRegardant: {
- colors: 3,
- sinister: true
- },
- stagPassant: {
- colors: 2,
- sinister: true
- },
- stirrup: {
- colors: 2
- },
- swallow: {
- colors: 2,
- sinister: true
- },
- swan: {
- colors: 3,
- sinister: true
- },
- swanErased: {
- colors: 3,
- sinister: true
- },
- sword: {
- colors: 2,
- reversed: true
- },
- talbotPassant: {
- colors: 3,
- sinister: true
- },
- talbotSejant: {
- colors: 3,
- sinister: true
- },
- tower: {
- colors: 2
- },
- tree: {
- positions: {e: 1}
- },
- trefoil: {
- reversed: true
- },
- trowel: {
- colors: 2,
- sinister: true,
- reversed: true
- },
- unicornRampant: {
- colors: 3,
- sinister: true
- },
- wasp: {
- colors: 3,
- reversed: true
- },
- wheatStalk: {
- colors: 2
- },
- windmill: {
- colors: 3,
- sinister: true
- },
- wing: {
- sinister: true
- },
- wingSword: {
- colors: 3,
- sinister: true
- },
- wolfHeadErased: {
- colors: 2,
- sinister: true
- },
- wolfPassant: {
- colors: 3,
- sinister: true,
- positions: {e: 10, def: 1, abc: 1, bdefh: 1, jlh: 1, abcpqh: 1}
- },
- wolfRampant: {
- colors: 3,
- sinister: true
- },
- wolfStatant: {
- colors: 3,
- sinister: true
- },
- wyvern: {
- colors: 3,
- sinister: true,
- positions: {e: 10, jln: 1}
- },
- wyvernWithWingsDisplayed: {
- colors: 3,
- sinister: true
- }
- };
-
- const charges = {
- types: {
- conventional: 33, // 40 charges
- crosses: 13, // 30 charges
- beasts: 7, // 41 charges
- beastHeads: 3, // 10 charges
- birds: 3, // 16 charges
- reptiles: 2, // 5 charges
- bugs: 2, // 8 charges
- fishes: 1, // 3 charges
- molluscs: 1, // 2 charges
- plants: 3, // 18 charges
- fantastic: 5, // 14 charges
- agriculture: 2, // 8 charges
- arms: 5, // 32 charges
- bodyparts: 2, // 12 charges
- people: 2, // 4 charges
- architecture: 3, // 11 charges
- seafaring: 3, // 9 charges
- tools: 3, // 15 charges
- miscellaneous: 5, // 30 charges
- inescutcheon: 3, // 43 charges
- ornaments: 0, // 9 charges
- uploaded: 0
- },
- single: {
- conventional: 10,
- crosses: 8,
- beasts: 7,
- beastHeads: 3,
- birds: 3,
- reptiles: 2,
- bugs: 2,
- fishes: 1,
- molluscs: 1,
- plants: 3,
- fantastic: 5,
- agriculture: 2,
- arms: 5,
- bodyparts: 2,
- people: 2,
- architecture: 3,
- seafaring: 3,
- tools: 3,
- miscellaneous: 5,
- inescutcheon: 1
- },
- semy: {
- conventional: 4,
- crosses: 1
- },
- conventional: {
- annulet: 4,
- billet: 5,
- carreau: 1,
- comet: 1,
- compassRose: 1,
- crescent: 5,
- delf: 0,
- estoile: 1,
- fleurDeLis: 6,
- fountain: 1,
- fusil: 4,
- gear: 1,
- goutte: 4,
- heart: 4,
- lozenge: 2,
- lozengeFaceted: 3,
- lozengePloye: 1,
- mascle: 4,
- moonInCrescent: 1,
- mullet: 5,
- mullet10: 1,
- mullet4: 3,
- mullet6: 4,
- mullet6Faceted: 1,
- mullet6Pierced: 1,
- mullet7: 1,
- mullet8: 1,
- mulletFaceted: 1,
- mulletPierced: 1,
- pique: 2,
- roundel: 4,
- roundel2: 3,
- rustre: 2,
- spiral: 1,
- sun: 3,
- sunInSplendour: 1,
- sunInSplendour2: 1,
- trefle: 2,
- triangle: 3,
- trianglePierced: 1
- },
- crosses: {
- crossHummetty: 15,
- crossVoided: 1,
- crossPattee: 2,
- crossPatteeAlisee: 1,
- crossFormee: 1,
- crossFormee2: 2,
- crossPotent: 2,
- crossJerusalem: 1,
- crosslet: 1,
- crossClechy: 3,
- crossBottony: 1,
- crossFleury: 3,
- crossPatonce: 1,
- crossPommy: 1,
- crossGamma: 1,
- crossArrowed: 1,
- crossFitchy: 1,
- crossCercelee: 1,
- crossMoline: 2,
- crossFourchy: 1,
- crossAvellane: 1,
- crossErminee: 1,
- crossBiparted: 1,
- crossMaltese: 3,
- crossTemplar: 2,
- crossCeltic: 1,
- crossCeltic2: 1,
- crossTriquetra: 1,
- crossCarolingian: 1,
- crossOccitan: 1,
- crossSaltire: 3,
- crossBurgundy: 1,
- crossLatin: 3,
- crossPatriarchal: 1,
- crossOrthodox: 1,
- crossCalvary: 1,
- crossDouble: 1,
- crossTau: 1,
- crossSantiago: 1,
- crossAnkh: 1
- },
- beasts: {
- agnusDei: 1,
- badgerStatant: 1,
- bearPassant: 1,
- bearRampant: 3,
- boarRampant: 1,
- bullPassant: 1,
- camel: 1,
- catPassantGuardant: 1,
- cowStatant: 1,
- dolphin: 1,
- elephant: 1,
- goat: 1,
- greyhoundCourant: 1,
- greyhoundRampant: 1,
- greyhoundSejant: 1,
- hedgehog: 1,
- hindStatant: 1,
- horsePassant: 1,
- horseRampant: 2,
- horseSalient: 1,
- lamb: 1,
- lambPassantReguardant: 1,
- lionPassant: 3,
- lionPassantGuardant: 2,
- lionRampant: 7,
- lionSejant: 2,
- martenCourant: 1,
- mastiffStatant: 1,
- porcupine: 1,
- rabbitSejant: 1,
- ramPassant: 1,
- ratRampant: 1,
- rhinoceros: 1,
- squirrel: 1,
- stagLodgedRegardant: 1,
- stagPassant: 1,
- talbotPassant: 1,
- talbotSejant: 1,
- wolfPassant: 1,
- wolfRampant: 1,
- wolfStatant: 1
- },
- beastHeads: {
- boarHeadErased: 1,
- bullHeadCaboshed: 1,
- deerHeadCaboshed: 1,
- donkeyHeadCaboshed: 1,
- elephantHeadErased: 1,
- horseHeadCouped: 1,
- lionHeadCaboshed: 2,
- lionHeadErased: 2,
- ramHeadErased: 1,
- wolfHeadErased: 2
- },
- birds: {
- cock: 3,
- dove: 2,
- doveDisplayed: 1,
- duck: 1,
- eagle: 9,
- falcon: 2,
- heron: 1,
- owl: 1,
- owlDisplayed: 1,
- parrot: 1,
- peacock: 1,
- peacockInPride: 1,
- raven: 2,
- swallow: 1,
- swan: 2,
- swanErased: 1
- },
- reptiles: {
- crocodile: 1,
- frog: 1,
- lizard: 1,
- ouroboros: 1,
- snake: 1
- },
- bugs: {
- bee: 1,
- butterfly: 1,
- cancer: 1,
- dragonfly: 1,
- fly: 1,
- ladybird: 1,
- scorpion: 1,
- wasp: 1
- },
- fishes: {
- pike: 1,
- plaice: 1,
- salmon: 1
- },
- molluscs: {
- escallop: 4,
- snail: 1
- },
- plants: {
- apple: 1,
- cinquefoil: 1,
- earOfWheat: 1,
- grapeBunch: 1,
- grapeBunch2: 1,
- mapleLeaf: 1,
- oak: 1,
- palmTree: 1,
- pear: 1,
- pineCone: 1,
- pineTree: 1,
- quatrefoil: 1,
- rose: 1,
- sextifoil: 1,
- thistle: 1,
- tree: 1,
- trefoil: 1,
- wheatStalk: 1
- },
- fantastic: {
- angel: 3,
- basilisk: 1,
- centaur: 1,
- dragonPassant: 3,
- dragonRampant: 2,
- eagleTwoHeads: 2,
- griffinPassant: 1,
- griffinRampant: 2,
- pegasus: 1,
- sagittarius: 1,
- serpent: 1,
- unicornRampant: 1,
- wyvern: 1,
- wyvernWithWingsDisplayed: 1
- },
- agriculture: {
- garb: 2,
- millstone: 1,
- plough: 1,
- ploughshare: 1,
- rake: 1,
- scythe: 1,
- scythe2: 1,
- sickle: 1
- },
- arms: {
- arbalest: 1,
- arbalest2: 1,
- arrow: 1,
- arrowsSheaf: 1,
- axe: 3,
- bow: 1,
- bowWithArrow: 2,
- bowWithThreeArrows: 1,
- cannon: 1,
- falchion: 1,
- flamberge: 1,
- flangedMace: 1,
- gauntlet: 1,
- grenade: 1,
- hatchet: 3,
- helmet: 2,
- helmetCorinthian: 1,
- helmetGreat: 2,
- helmetZischagge: 1,
- lanceHead: 1,
- lanceWithBanner: 1,
- lochaberAxe: 1,
- mace: 1,
- maces: 1,
- mallet: 1,
- rapier: 1,
- sabre: 1,
- sabre2: 1,
- sabresCrossed: 1,
- shield: 1,
- spear: 1,
- sword: 4
- },
- bodyparts: {
- armEmbowedHoldingSabre: 1,
- armEmbowedVambraced: 1,
- armEmbowedVambracedHoldingSword: 1,
- bone: 1,
- crossedBones: 2,
- foot: 1,
- hand: 4,
- head: 1,
- headWreathed: 1,
- skeleton: 2,
- skull: 2,
- skull2: 1
- },
- people: {
- archer: 1,
- cavalier: 3,
- cossack: 1,
- monk: 1
- },
- architecture: {
- bridge: 1,
- bridge2: 1,
- castle: 2,
- castle2: 1,
- column: 1,
- lighthouse: 1,
- palace: 1,
- pillar: 1,
- portcullis: 1,
- tower: 2,
- windmill: 1
- },
- seafaring: {
- anchor: 6,
- armillarySphere: 1,
- boat: 2,
- boat2: 1,
- caravel: 1,
- drakkar: 1,
- lymphad: 2,
- raft: 1,
- shipWheel: 1
- },
- tools: {
- anvil: 2,
- drawingCompass: 2,
- fan: 1,
- hook: 1,
- ladder: 1,
- ladder2: 1,
- pincers: 1,
- saw: 1,
- scale: 1,
- scaleImbalanced: 1,
- scalesHanging: 1,
- scissors: 1,
- scissors2: 1,
- shears: 1,
- trowel: 1
- },
- miscellaneous: {
- attire: 2,
- banner: 2,
- bell: 3,
- bookClosed: 1,
- bookClosed2: 1,
- bookOpen: 1,
- bucket: 1,
- buckle: 1,
- bugleHorn: 2,
- bugleHorn2: 1,
- chain: 2,
- chalice: 2,
- cowHorns: 3,
- crosier: 1,
- crown: 3,
- crown2: 2,
- drum: 1,
- fasces: 1,
- feather: 3,
- harp: 2,
- horseshoe: 3,
- hourglass: 2,
- key: 3,
- laurelWreath: 2,
- laurelWreath2: 1,
- log: 1,
- lute: 2,
- lyre: 1,
- mitre: 1,
- orb: 1,
- pot: 2,
- ramsHorn: 1,
- sceptre: 1,
- scrollClosed: 1,
- snowflake: 1,
- stagsAttires: 1,
- stirrup: 2,
- wheel: 3,
- wing: 2,
- wingSword: 1
- },
- inescutcheon: {
- inescutcheonHeater: 1,
- inescutcheonSpanish: 1,
- inescutcheonFrench: 1,
- inescutcheonHorsehead: 1,
- inescutcheonHorsehead2: 1,
- inescutcheonPolish: 1,
- inescutcheonHessen: 1,
- inescutcheonSwiss: 1,
- inescutcheonBoeotian: 1,
- inescutcheonRoman: 1,
- inescutcheonKite: 1,
- inescutcheonOldFrench: 1,
- inescutcheonRenaissance: 1,
- inescutcheonBaroque: 1,
- inescutcheonTarge: 1,
- inescutcheonTarge2: 1,
- inescutcheonPavise: 1,
- inescutcheonWedged: 1,
- inescutcheonFlag: 1,
- inescutcheonPennon: 1,
- inescutcheonGuidon: 1,
- inescutcheonBanner: 1,
- inescutcheonDovetail: 1,
- inescutcheonGonfalon: 1,
- inescutcheonPennant: 1,
- inescutcheonRound: 1,
- inescutcheonOval: 1,
- inescutcheonVesicaPiscis: 1,
- inescutcheonSquare: 1,
- inescutcheonDiamond: 1,
- inescutcheonNo: 1,
- inescutcheonFantasy1: 1,
- inescutcheonFantasy2: 1,
- inescutcheonFantasy3: 1,
- inescutcheonFantasy4: 1,
- inescutcheonFantasy5: 1,
- inescutcheonNoldor: 1,
- inescutcheonGondor: 1,
- inescutcheonEasterling: 1,
- inescutcheonErebor: 1,
- inescutcheonIronHills: 1,
- inescutcheonUrukHai: 1,
- inescutcheonMoriaOrc: 1
- },
- ornaments: {
- mantle: 0,
- ribbon1: 3,
- ribbon2: 2,
- ribbon3: 1,
- ribbon4: 1,
- ribbon5: 1,
- ribbon6: 1,
- ribbon7: 1,
- ribbon8: 1
- },
- data: chargeData
- };
-
- // charges specific to culture or burg type (FMG-only config, not coming from Armoria)
- const typeMapping = {
- Naval: {
- anchor: 3,
- drakkar: 1,
- lymphad: 2,
- caravel: 1,
- shipWheel: 1,
- armillarySphere: 1,
- escallop: 1,
- dolphin: 1,
- plaice: 1
- },
- Highland: {tower: 1, raven: 1, wolfHeadErased: 1, wolfPassant: 1, goat: 1, axe: 1},
- River: {
- garb: 1,
- rake: 1,
- raft: 1,
- boat: 2,
- drakkar: 2,
- hook: 2,
- pike: 2,
- bullHeadCaboshed: 1,
- apple: 1,
- pear: 1,
- plough: 1,
- earOfWheat: 1,
- salmon: 1,
- cancer: 1,
- bridge: 1,
- bridge2: 2,
- sickle: 1,
- scythe: 1,
- grapeBunch: 1,
- wheatStalk: 1,
- windmill: 1,
- crocodile: 1
- },
- Lake: {
- hook: 3,
- cancer: 2,
- escallop: 1,
- pike: 2,
- heron: 1,
- boat: 1,
- boat2: 2,
- salmon: 1,
- cancer: 1,
- sickle: 1,
- windmill: 1,
- swanErased: 1,
- swan: 1,
- frog: 1,
- wasp: 1
- },
- Nomadic: {
- pot: 1,
- buckle: 1,
- wheel: 2,
- sabre: 2,
- sabresCrossed: 1,
- bow: 2,
- arrow: 1,
- horseRampant: 1,
- horseSalient: 1,
- crescent: 1,
- camel: 3,
- scorpion: 1,
- falcon: 1
- },
- Hunting: {
- bugleHorn: 2,
- bugleHorn2: 1,
- stagsAttires: 2,
- attire: 2,
- hatchet: 1,
- bowWithArrow: 2,
- arrowsSheaf: 1,
- lanceHead: 1,
- saw: 1,
- deerHeadCaboshed: 1,
- wolfStatant: 1,
- oak: 1,
- pineCone: 1,
- pineTree: 1,
- oak: 1,
- owl: 1,
- falcon: 1,
- peacock: 1,
- boarHeadErased: 2,
- horseHeadCouped: 1,
- rabbitSejant: 1,
- wolfRampant: 1,
- wolfPassant: 1,
- wolfStatant: 1,
- greyhoundCourant: 1,
- greyhoundRampant: 1,
- greyhoundSejant: 1,
- mastiffStatant: 1,
- talbotPassant: 1,
- talbotSejant: 1,
- stagPassant: 21
- },
- // selection based on type
- City: {
- key: 4,
- bell: 3,
- lute: 1,
- tower: 1,
- pillar: 1,
- castle: 1,
- castle2: 1,
- portcullis: 1,
- mallet: 1,
- cannon: 1,
- anvil: 1,
- buckle: 1,
- horseshoe: 1,
- stirrup: 1,
- lanceWithBanner: 1,
- bookClosed: 1,
- scissors: 1,
- scissors2: 1,
- shears: 1,
- pincers: 1,
- bridge: 2,
- archer: 1,
- cannon: 1,
- shield: 1,
- arbalest: 1,
- arbalest2: 1,
- bowWithThreeArrows: 1,
- spear: 1,
- lochaberAxe: 1,
- armEmbowedHoldingSabre: 1,
- grenade: 1,
- maces: 1,
- grapeBunch: 1,
- cock: 1,
- ramHeadErased: 1,
- ratRampant: 1,
- hourglass: 1,
- scale: 1,
- scrollClosed: 1
- },
- Capital: {
- crown: 2,
- crown2: 2,
- laurelWreath: 1,
- orb: 1,
- lute: 1,
- lyre: 1,
- banner: 1,
- castle: 1,
- castle2: 1,
- palace: 1,
- crown2: 2,
- column: 1,
- lionRampant: 1,
- stagLodgedRegardant: 1,
- drawingCompass: 1,
- rapier: 1,
- scaleImbalanced: 1,
- scalesHanging: 1
- },
- Сathedra: {
- crossHummetty: 3,
- mitre: 3,
- chalice: 1,
- orb: 1,
- crosier: 2,
- lamb: 1,
- monk: 2,
- angel: 3,
- crossLatin: 2,
- crossPatriarchal: 1,
- crossOrthodox: 1,
- crossCalvary: 1,
- agnusDei: 3,
- bookOpen: 1,
- sceptre: 1,
- bone: 1,
- skull: 1
- }
- };
-
- const positions = {
- conventional: {
- e: 20,
- abcdefgzi: 3,
- beh: 3,
- behdf: 2,
- acegi: 1,
- kn: 3,
- bhdf: 1,
- jeo: 1,
- abc: 3,
- jln: 6,
- jlh: 3,
- kmo: 2,
- jleh: 1,
- def: 3,
- abcpqh: 4,
- ABCDEFGHIJKL: 1
- },
- complex: {e: 40, beh: 1, kn: 1, jeo: 1, abc: 2, jln: 7, jlh: 2, def: 1, abcpqh: 1},
- divisions: {
- perPale: {e: 15, pq: 5, jo: 2, jl: 2, ABCDEFGHIJKL: 1},
- perFess: {e: 12, kn: 4, jkl: 2, gizgiz: 1, jlh: 3, kmo: 1, ABCDEFGHIJKL: 1},
- perBend: {e: 5, lm: 5, bcfdgh: 1},
- perBendSinister: {e: 1, jo: 1},
- perCross: {e: 4, jlmo: 1, j: 1, jo: 2, jl: 1},
- perChevron: {e: 1, jlh: 1, dfk: 1, dfbh: 2, bdefh: 1},
- perChevronReversed: {e: 1, mok: 2, dfh: 2, dfbh: 1, bdefh: 1},
- perSaltire: {bhdf: 8, e: 3, abcdefgzi: 1, bh: 1, df: 1, ABCDEFGHIJKL: 1},
- perPile: {ee: 3, be: 2, abceh: 1, abcabc: 1, jleh: 1}
- },
- inescutcheon: {e: 4, jln: 1}
- };
-
- const lines = {
- straight: 50,
- wavy: 8,
- engrailed: 4,
- invecked: 3,
- rayonne: 3,
- embattled: 1,
- raguly: 1,
- urdy: 1,
- dancetty: 1,
- indented: 2,
- dentilly: 1,
- bevilled: 1,
- angled: 1,
- flechy: 1,
- barby: 1,
- enclavy: 1,
- escartely: 1,
- arched: 2,
- archedReversed: 1,
- nowy: 1,
- nowyReversed: 1,
- embattledGhibellin: 1,
- embattledNotched: 1,
- embattledGrady: 1,
- dovetailedIndented: 1,
- dovetailed: 1,
- potenty: 1,
- potentyDexter: 1,
- potentySinister: 1,
- nebuly: 2,
- seaWaves: 1,
- dragonTeeth: 1,
- firTrees: 1
- };
-
- const divisions = {
- variants: {
- perPale: 5,
- perFess: 5,
- perBend: 2,
- perBendSinister: 1,
- perChevron: 1,
- perChevronReversed: 1,
- perCross: 5,
- perPile: 1,
- perSaltire: 1,
- gyronny: 1,
- chevronny: 1
- },
- perPale: lines,
- perFess: lines,
- perBend: lines,
- perBendSinister: lines,
- perChevron: lines,
- perChevronReversed: lines,
- perCross: {
- straight: 20,
- wavy: 5,
- engrailed: 4,
- invecked: 3,
- rayonne: 1,
- embattled: 1,
- raguly: 1,
- urdy: 1,
- indented: 2,
- dentilly: 1,
- bevilled: 1,
- angled: 1,
- embattledGhibellin: 1,
- embattledGrady: 1,
- dovetailedIndented: 1,
- dovetailed: 1,
- potenty: 1,
- potentyDexter: 1,
- potentySinister: 1,
- nebuly: 1
- },
- perPile: lines
- };
-
- const ordinaries = {
- lined: {
- pale: 7,
- fess: 5,
- bend: 3,
- bendSinister: 2,
- chief: 5,
- bar: 2,
- gemelle: 1,
- fessCotissed: 1,
- fessDoubleCotissed: 1,
- bendlet: 2,
- bendletSinister: 1,
- terrace: 3,
- cross: 6,
- crossParted: 1,
- saltire: 2,
- saltireParted: 1
- },
- straight: {
- bordure: 8,
- orle: 4,
- mount: 1,
- point: 2,
- flaunches: 1,
- gore: 1,
- gyron: 1,
- quarter: 1,
- canton: 2,
- pall: 3,
- pallReversed: 2,
- chevron: 4,
- chevronReversed: 3,
- pile: 2,
- pileInBend: 2,
- pileInBendSinister: 1,
- piles: 1,
- pilesInPoint: 2,
- label: 1
- },
- data: {
- bar: {
- positionsOn: {defdefdef: 1},
- positionsOff: {abc: 2, abcgzi: 1, jlh: 5, bgi: 2, ach: 1}
- },
- bend: {
- positionsOn: {ee: 2, jo: 1, joe: 1},
- positionsOff: {ccg: 2, ccc: 1}
- },
- bendSinister: {
- positionsOn: {ee: 1, lm: 1, lem: 4},
- positionsOff: {aai: 2, aaa: 1}
- },
- bendlet: {
- positionsOn: {joejoejoe: 1},
- positionsOff: {ccg: 2, ccc: 1}
- },
- bendletSinister: {
- positionsOn: {lemlemlem: 1},
- positionsOff: {aai: 2, aaa: 1}
- },
- bordure: {
- positionsOn: {ABCDEFGHIJKL: 1},
- positionsOff: {e: 4, jleh: 2, kenken: 1, peqpeq: 1}
- },
- canton: {
- positionsOn: {yyyy: 1},
- positionsOff: {e: 5, beh: 1, def: 1, bdefh: 1, kn: 1}
- },
- chevron: {
- positionsOn: {ach: 3, hhh: 1}
- },
- chevronReversed: {
- positionsOff: {bbb: 1}
- },
- chief: {
- positionsOn: {abc: 5, bbb: 1},
- positionsOff: {emo: 2, emoz: 1, ez: 2}
- },
- cross: {
- positionsOn: {eeee: 1, behdfbehdf: 3, behbehbeh: 2},
- positionsOff: {acgi: 1}
- },
- crossParted: {
- positionsOn: {e: 5, ee: 1}
- },
- fess: {
- positionsOn: {ee: 1, def: 3},
- positionsOff: {abc: 3, abcz: 1}
- },
- fessCotissed: {
- positionsOn: {ee: 1, def: 3}
- },
- fessDoubleCotissed: {
- positionsOn: {ee: 1, defdef: 3}
- },
- flaunches: {
- positionsOff: {e: 3, kn: 1, beh: 3}
- },
- gemelle: {
- positionsOff: {abc: 1}
- },
- gyron: {
- positionsOff: {bh: 1}
- },
- label: {
- positionsOff: {defgzi: 2, eh: 3, defdefhmo: 1, egiegi: 1, pqn: 5}
- },
- mount: {
- positionsOff: {e: 5, def: 1, bdf: 3}
- },
- orle: {
- positionsOff: {e: 4, jleh: 1, kenken: 1, peqpeq: 1}
- },
- pale: {
- positionsOn: {ee: 12, beh: 10, kn: 3, bb: 1},
- positionsOff: {yyy: 1}
- },
- pall: {
- positionsOn: {ee: 1, jleh: 5, jlhh: 3},
- positionsOff: {BCKFEILGJbdmfo: 1}
- },
- pallReversed: {
- positionsOn: {ee: 1, bemo: 5},
- positionsOff: {aczac: 1}
- },
- pile: {
- positionsOn: {bbb: 1},
- positionsOff: {acdfgi: 1, acac: 1}
- },
- pileInBend: {
- positionsOn: {eeee: 1, eeoo: 1},
- positionsOff: {cg: 1}
- },
- pileInBendSinister: {
- positionsOn: {eeee: 1, eemm: 1},
- positionsOff: {ai: 1}
- },
- point: {
- positionsOff: {e: 2, def: 1, bdf: 3, acbdef: 1}
- },
- quarter: {
- positionsOn: {jjj: 1},
- positionsOff: {e: 1}
- },
- saltire: {
- positionsOn: {ee: 5, jlemo: 1}
- },
- saltireParted: {
- positionsOn: {e: 5, ee: 1}
- },
- terrace: {
- positionsOff: {e: 5, def: 1, bdf: 3}
- }
- }
- };
-
- const shields = {
- types: {basic: 10, regional: 2, historical: 1, specific: 1, banner: 1, simple: 2, fantasy: 1, middleEarth: 0},
- basic: {heater: 12, spanish: 6, french: 1},
- regional: {horsehead: 1, horsehead2: 1, polish: 1, hessen: 1, swiss: 1},
- historical: {boeotian: 1, roman: 2, kite: 1, oldFrench: 5, renaissance: 2, baroque: 2},
- specific: {targe: 1, targe2: 0, pavise: 5, wedged: 10},
- banner: {flag: 1, pennon: 0, guidon: 0, banner: 0, dovetail: 1, gonfalon: 5, pennant: 0},
- simple: {round: 12, oval: 6, vesicaPiscis: 1, square: 1, diamond: 2, no: 0},
- fantasy: {fantasy1: 2, fantasy2: 2, fantasy3: 1, fantasy4: 1, fantasy5: 3},
- middleEarth: {noldor: 1, gondor: 1, easterling: 1, erebor: 1, ironHills: 1, urukHai: 1, moriaOrc: 1}
- };
-
- const generate = function (parent, kinship, dominion, type) {
- if (!parent || parent.custom) {
- parent = null;
- kinship = 0;
- dominion = 0;
- }
-
- let usedPattern = null;
- let usedTinctures = [];
-
- const t1 = P(kinship) ? parent.t1 : getTincture("field");
- if (t1.includes("-")) usedPattern = t1;
- const coa = {t1};
-
- const addCharge = P(usedPattern ? 0.5 : 0.93); // 80% for charge
- const linedOrdinary =
- (addCharge && P(0.3)) || P(0.5)
- ? parent?.ordinaries && P(kinship)
- ? parent.ordinaries[0].ordinary
- : rw(ordinaries.lined)
- : null;
-
- const ordinary =
- (!addCharge && P(0.65)) || P(0.3) ? (linedOrdinary ? linedOrdinary : rw(ordinaries.straight)) : null; // 36% for ordinary
-
- const rareDivided = ["chief", "terrace", "chevron", "quarter", "flaunches"].includes(ordinary);
-
- const divisioned = (() => {
- if (rareDivided) return P(0.03);
- if (addCharge && ordinary) return P(0.03);
- if (addCharge) return P(0.3);
- if (ordinary) return P(0.7);
- return P(0.995);
- })();
-
- const division = (() => {
- if (divisioned) {
- if (parent?.division && P(kinship - 0.1)) return parent.division.division;
- return rw(divisions.variants);
- }
- return null;
- })();
-
- if (division) {
- const t = getTincture("division", usedTinctures, P(0.98) ? coa.t1 : null);
- coa.division = {division, t};
- if (divisions[division])
- coa.division.line = usedPattern || (ordinary && P(0.7)) ? "straight" : rw(divisions[division]);
- }
-
- if (ordinary) {
- coa.ordinaries = [{ordinary, t: getTincture("charge", usedTinctures, coa.t1)}];
- if (linedOrdinary) coa.ordinaries[0].line = usedPattern || (division && P(0.7)) ? "straight" : rw(lines);
- if (division && !addCharge && !usedPattern && P(0.5) && ordinary !== "bordure" && ordinary !== "orle") {
- if (P(0.8)) coa.ordinaries[0].divided = "counter";
- // 40%
- else if (P(0.6)) coa.ordinaries[0].divided = "field";
- // 6%
- else coa.ordinaries[0].divided = "division"; // 4%
- }
- }
-
- if (addCharge) {
- const charge = (() => {
- if (parent?.charges && P(kinship - 0.1)) return parent.charges[0].charge;
- if (type && type !== "Generic" && P(0.3)) return rw(typeMapping[type]);
- return selectCharge(ordinary || divisioned ? charges.types : charges.single);
- })();
- const chargeData = charges.data[charge] || {};
-
- let p = "e";
- let t = "gules";
-
- const ordinaryData = ordinaries.data[ordinary];
- const tOrdinary = coa.ordinaries ? coa.ordinaries[0].t : null;
-
- if (ordinaryData?.positionsOn && P(0.8)) {
- // place charge over ordinary (use tincture of field type)
- p = rw(ordinaryData.positionsOn);
- t = !usedPattern && P(0.3) ? coa.t1 : getTincture("charge", [], tOrdinary);
- } else if (ordinaryData?.positionsOff && P(0.95)) {
- // place charge out of ordinary (use tincture of ordinary type)
- p = rw(ordinaryData.positionsOff);
- t = !usedPattern && P(0.3) ? tOrdinary : getTincture("charge", usedTinctures, coa.t1);
- } else if (positions.divisions[division]) {
- // place charge in fields made by division
- p = rw(positions.divisions[division]);
- t = getTincture("charge", tOrdinary ? usedTinctures.concat(tOrdinary) : usedTinctures, coa.t1);
- } else if (chargeData.positions) {
- // place charge-suitable position
- p = rw(chargeData.positions);
- t = getTincture("charge", usedTinctures, coa.t1);
- } else {
- // place in standard position (use new tincture)
- p = usedPattern ? "e" : charges.conventional[charge] ? rw(positions.conventional) : rw(positions.complex);
- t = getTincture("charge", usedTinctures.concat(tOrdinary), coa.t1);
- }
-
- if (chargeData.natural && chargeData.natural !== t && chargeData.natural !== tOrdinary) t = chargeData.natural;
-
- const item = {charge: charge, t, p};
- const colors = chargeData.colors || 1;
- if (colors > 1) item.t2 = P(0.25) ? getTincture("charge", usedTinctures, coa.t1) : t;
- if (colors > 2 && item.t2) item.t3 = P(0.5) ? getTincture("charge", usedTinctures, coa.t1) : t;
- coa.charges = [item];
-
- if (p === "ABCDEFGHIKL" && P(0.95)) {
- // add central charge if charge is in bordure
- coa.charges[0].charge = rw(charges.conventional);
- const charge = selectCharge(charges.single);
- const t = getTincture("charge", usedTinctures, coa.t1);
- coa.charges.push({charge, t, p: "e"});
- } else if (P(0.8) && charge === "inescutcheon") {
- // add charge to inescutcheon
- const charge = selectCharge(charges.types);
- const t2 = getTincture("charge", [], t);
- coa.charges.push({charge, t: t2, p, size: 0.5});
- } else if (division && !ordinary) {
- const allowCounter = !usedPattern && (!coa.line || coa.line === "straight");
-
- // dimidiation: second charge at division basic positons
- if (P(0.3) && ["perPale", "perFess"].includes(division) && coa.line === "straight") {
- coa.charges[0].divided = "field";
- if (P(0.95)) {
- const p2 = p === "e" || P(0.5) ? "e" : rw(positions.divisions[division]);
- const charge = selectCharge(charges.single);
- const t = getTincture("charge", usedTinctures, coa.division.t);
- coa.charges.push({charge, t, p: p2, divided: "division"});
- }
- } else if (allowCounter && P(0.4)) coa.charges[0].divided = "counter";
- // counterchanged, 40%
- else if (["perPale", "perFess", "perBend", "perBendSinister"].includes(division) && P(0.8)) {
- // place 2 charges in division standard positions
- const [p1, p2] =
- division === "perPale"
- ? ["p", "q"]
- : division === "perFess"
- ? ["k", "n"]
- : division === "perBend"
- ? ["l", "m"]
- : ["j", "o"]; // perBendSinister
- coa.charges[0].p = p1;
-
- const charge = selectCharge(charges.single);
- const t = getTincture("charge", usedTinctures, coa.division.t);
- coa.charges.push({charge, t, p: p2});
- } else if (["perCross", "perSaltire"].includes(division) && P(0.5)) {
- // place 4 charges in division standard positions
- const [p1, p2, p3, p4] = division === "perCross" ? ["j", "l", "m", "o"] : ["b", "d", "f", "h"];
- coa.charges[0].p = p1;
-
- const c2 = selectCharge(charges.single);
- const t2 = getTincture("charge", [], coa.division.t);
-
- const c3 = selectCharge(charges.single);
- const t3 = getTincture("charge", [], coa.division.t);
-
- const c4 = selectCharge(charges.single);
- const t4 = getTincture("charge", [], coa.t1);
- coa.charges.push({charge: c2, t: t2, p: p2}, {charge: c3, t: t3, p: p3}, {charge: c4, t: t4, p: p4});
- } else if (allowCounter && p.length > 1) coa.charges[0].divided = "counter"; // counterchanged, 40%
- }
-
- coa.charges.forEach(c => defineChargeAttributes(ordinary, division, c));
- }
-
- // dominions have canton with parent coa
- if (P(dominion) && parent.charges) {
- const invert = isSameType(parent.t1, coa.t1);
- const t = invert ? getTincture("division", usedTinctures, coa.t1) : parent.t1;
- const canton = {ordinary: "canton", t};
-
- coa.charges?.forEach((charge, i) => {
- if (charge.size === 1.5) charge.size = 1.4;
- charge.p = charge.p.replaceAll(/[ajy]/g, "");
- if (!charge.p) coa.charges.splice(i, 1);
- });
-
- let charge = parent.charges[0].charge;
- if (charge === "inescutcheon" && parent.charges[1]) charge = parent.charges[1].charge;
-
- let t2 = invert ? parent.t1 : parent.charges[0].t;
- if (isSameType(t, t2)) t2 = getTincture("charge", usedTinctures, t);
-
- if (!coa.charges) coa.charges = [];
- coa.charges.push({charge, t: t2, p: "y", size: 0.5});
-
- coa.ordinaries ? coa.ordinaries.push(canton) : (coa.ordinaries = [canton]);
- }
-
- function selectCharge(set) {
- const type = set ? rw(set) : ordinary || divisioned ? rw(charges.types) : rw(charges.single);
- return type === "inescutcheon" ? "inescutcheon" : rw(charges[type]);
- }
-
- // select tincture: element type (field, division, charge), used field tinctures, field type to follow RoT
- function getTincture(element, fields = [], RoT) {
- const base = RoT ? (RoT.includes("-") ? RoT.split("-")[1] : RoT) : null;
-
- let type = rw(tinctures[element]); // metals, colours, stains, patterns
- if (RoT && type !== "patterns") type = getType(base) === "metals" ? "colours" : "metals"; // follow RoT
- if (type === "metals" && fields.includes("or") && fields.includes("argent")) type = "colours"; // exclude metals overuse
- let tincture = rw(tinctures[type]);
-
- while (tincture === base || fields.includes(tincture)) {
- tincture = rw(tinctures[type]);
- } // follow RoT
-
- if (type !== "patterns" && element !== "charge") usedTinctures.push(tincture); // add field tincture
-
- if (type === "patterns") {
- usedPattern = tincture;
- tincture = definePattern(tincture, element);
- }
-
- return tincture;
- }
-
- function defineChargeAttributes(ordinary, division, c) {
- // define size
- c.size = (c.size || 1) * getSize(c.p, ordinary, division);
-
- // clean-up position
- c.p = [...new Set(c.p)].join("");
-
- // define orientation
- if (P(0.02) && charges.data[c.charge]?.sinister) c.sinister = 1;
- if (P(0.02) && charges.data[c.charge]?.reversed) c.reversed = 1;
- }
-
- function getType(t) {
- const tincture = t.includes("-") ? t.split("-")[1] : t;
- if (Object.keys(tinctures.metals).includes(tincture)) return "metals";
- if (Object.keys(tinctures.colours).includes(tincture)) return "colours";
- if (Object.keys(tinctures.stains).includes(tincture)) return "stains";
- }
-
- function isSameType(t1, t2) {
- return type(t1) === type(t2);
-
- function type(tincture) {
- if (Object.keys(tinctures.metals).includes(tincture)) return "metals";
- if (Object.keys(tinctures.colours).includes(tincture)) return "colours";
- if (Object.keys(tinctures.stains).includes(tincture)) return "stains";
- else return "pattern";
- }
- }
-
- function definePattern(pattern, element, size = "") {
- let t1 = null,
- t2 = null;
- if (P(0.1)) size = "-small";
- else if (P(0.1)) size = "-smaller";
- else if (P(0.01)) size = "-big";
- else if (P(0.005)) size = "-smallest";
-
- // apply standard tinctures
- if (P(0.5) && ["vair", "vairInPale", "vairEnPointe"].includes(pattern)) {
- t1 = "azure";
- t2 = "argent";
- } else if (P(0.8) && pattern === "ermine") {
- t1 = "argent";
- t2 = "sable";
- } else if (pattern === "pappellony") {
- if (P(0.2)) {
- t1 = "gules";
- t2 = "or";
- } else if (P(0.2)) {
- t1 = "argent";
- t2 = "sable";
- } else if (P(0.2)) {
- t1 = "azure";
- t2 = "argent";
- }
- } else if (pattern === "masoned") {
- if (P(0.3)) {
- t1 = "gules";
- t2 = "argent";
- } else if (P(0.3)) {
- t1 = "argent";
- t2 = "sable";
- } else if (P(0.1)) {
- t1 = "or";
- t2 = "sable";
- }
- } else if (pattern === "fretty") {
- if (t2 === "sable" || P(0.35)) {
- t1 = "argent";
- t2 = "gules";
- } else if (P(0.25)) {
- t1 = "sable";
- t2 = "or";
- } else if (P(0.15)) {
- t1 = "gules";
- t2 = "argent";
- }
- } else if (pattern === "semy") pattern += "_of_" + selectCharge(charges.semy);
-
- if (!t1 || !t2) {
- const startWithMetal = P(0.7);
- t1 = startWithMetal ? rw(tinctures.metals) : rw(tinctures.colours);
- t2 = startWithMetal ? rw(tinctures.colours) : rw(tinctures.metals);
- }
-
- // division should not be the same tincture as base field
- if (element === "division") {
- if (usedTinctures.includes(t1)) t1 = replaceTincture(t1);
- if (usedTinctures.includes(t2)) t2 = replaceTincture(t2);
- }
-
- usedTinctures.push(t1, t2);
- return `${pattern}-${t1}-${t2}${size}`;
- }
-
- function replaceTincture(t, n) {
- const type = getType(t);
- while (!n || n === t) {
- n = rw(tinctures[type]);
- }
- return n;
- }
-
- function getSize(p, o = null, d = null) {
- if (p === "e" && (o === "bordure" || o === "orle")) return 1.1;
- if (p === "e") return 1.5;
- if (p === "jln" || p === "jlh") return 0.7;
- if (p === "abcpqh" || p === "ez" || p === "be") return 0.5;
- if (["a", "b", "c", "d", "f", "g", "h", "i", "bh", "df"].includes(p)) return 0.5;
- if (["j", "l", "m", "o", "jlmo"].includes(p) && d === "perCross") return 0.6;
- if (p.length > 10) return 0.18; // >10 (bordure)
- if (p.length > 7) return 0.3; // 8, 9, 10
- if (p.length > 4) return 0.4; // 5, 6, 7
- if (p.length > 2) return 0.5; // 3, 4
- return 0.7; // 1, 2
- }
-
- return coa;
- };
-
- const getShield = function (culture, state) {
- const emblemShape = document.getElementById("emblemShape");
- const shapeGroup = emblemShape.selectedOptions[0]?.parentNode.label || "Diversiform";
- if (shapeGroup !== "Diversiform") return emblemShape.value;
-
- if (emblemShape.value === "state" && state && pack.states[state].coa) return pack.states[state].coa.shield;
- if (pack.cultures[culture].shield) return pack.cultures[culture].shield;
- ERROR && console.error("Shield shape is not defined on culture level", pack.cultures[culture]);
- return "heater";
- };
-
- const toString = coa => JSON.stringify(coa).replaceAll("#", "%23");
- const copy = coa => JSON.parse(JSON.stringify(coa));
-
- return {generate, toString, copy, getShield, shields};
-})();
diff --git a/public/modules/coa-renderer.js b/public/modules/coa-renderer.js
deleted file mode 100644
index 8ab0fef5..00000000
--- a/public/modules/coa-renderer.js
+++ /dev/null
@@ -1,2044 +0,0 @@
-"use strict";
-
-window.COArenderer = (function () {
- const colors = {
- argent: "#fafafa",
- or: "#ffe066",
- gules: "#d7374a",
- sable: "#333333",
- azure: "#377cd7",
- vert: "#26c061",
- purpure: "#522d5b",
- murrey: "#85185b",
- sanguine: "#b63a3a",
- tenné: "#cc7f19"
- };
-
- const shieldPositions = {
- // shield-specific position: [x, y] (relative to center)
- heater: {
- a: [-43.75, -50],
- b: [0, -50],
- c: [43.75, -50],
- d: [-43.75, 0],
- e: [0, 0],
- f: [43.75, 0],
- g: [-32.25, 37.5],
- h: [0, 50],
- i: [32.25, 37.5],
- y: [-50, -50],
- z: [0, 62.5],
- j: [-37.5, -37.5],
- k: [0, -37.5],
- l: [37.5, -37.5],
- m: [-30, 30],
- n: [0, 42.5],
- o: [30, 30],
- p: [-37.5, 0],
- q: [37.5, 0],
- A: [-66.2, -66.6],
- B: [-22, -66.6],
- C: [22, -66.6],
- D: [66.2, -66.6],
- K: [-66.2, -20],
- E: [66.2, -20],
- J: [-55.5, 26],
- F: [55.5, 26],
- I: [-33, 62],
- G: [33, 62],
- H: [0, 89.5]
- },
- spanish: {
- a: [-43.75, -50],
- b: [0, -50],
- c: [43.75, -50],
- d: [-43.75, 0],
- e: [0, 0],
- f: [43.75, 0],
- g: [-43.75, 50],
- h: [0, 50],
- i: [43.75, 50],
- y: [-50, -50],
- z: [0, 50],
- j: [-37.5, -37.5],
- k: [0, -37.5],
- l: [37.5, -37.5],
- m: [-37.5, 37.5],
- n: [0, 37.5],
- o: [37.5, 37.5],
- p: [-37.5, 0],
- q: [37.5, 0],
- A: [-66.2, -66.6],
- B: [-22, -66.6],
- C: [22, -66.6],
- D: [66.2, -66.6],
- K: [-66.4, -20],
- E: [66.4, -20],
- J: [-66.4, 26],
- F: [66.4, 26],
- I: [-49, 70],
- G: [49, 70],
- H: [0, 92]
- },
- french: {
- a: [-43.75, -50],
- b: [0, -50],
- c: [43.75, -50],
- d: [-43.75, 0],
- e: [0, 0],
- f: [43.75, 0],
- g: [-43.75, 50],
- h: [0, 50],
- i: [43.75, 50],
- y: [-50, -50],
- z: [0, 65],
- j: [-37.5, -37.5],
- k: [0, -37.5],
- l: [37.5, -37.5],
- m: [-37.5, 37.5],
- n: [0, 37.5],
- o: [37.5, 37.5],
- p: [-37.5, 0],
- q: [37.5, 0],
- A: [-66.2, -66.6],
- B: [-22, -66.6],
- C: [22, -66.6],
- D: [66.2, -66.6],
- K: [-66.4, -20],
- E: [66.4, -20],
- J: [-66.4, 26],
- F: [66.4, 26],
- I: [-65.4, 70],
- G: [65.4, 70],
- H: [0, 89]
- },
- horsehead: {
- a: [-43.75, -47.5],
- b: [0, -50],
- c: [43.75, -47.5],
- d: [-35, 0],
- e: [0, 0],
- f: [35, 0],
- h: [0, 50],
- y: [-50, -50],
- z: [0, 55],
- j: [-35, -35],
- k: [0, -40],
- l: [35, -35],
- m: [-30, 30],
- n: [0, 40],
- o: [30, 30],
- p: [-27.5, 0],
- q: [27.5, 0],
- A: [-71, -52],
- B: [-24, -73],
- C: [24, -73],
- D: [71, -52],
- K: [-62, -16],
- E: [62, -16],
- J: [-39, 20],
- F: [39, 20],
- I: [-33.5, 60],
- G: [33.5, 60],
- H: [0, 91.5]
- },
- horsehead2: {
- a: [-37.5, -47.5],
- b: [0, -50],
- c: [37.5, -47.5],
- d: [-35, 0],
- e: [0, 0],
- f: [35, 0],
- g: [-35, 47.5],
- h: [0, 50],
- i: [35, 47.5],
- y: [-50, -50],
- z: [0, 55],
- j: [-30, -30],
- k: [0, -40],
- l: [30, -30],
- m: [-30, 30],
- n: [0, 40],
- o: [30, 30],
- p: [-27.5, 0],
- q: [27.5, 0],
- A: [-49, -39],
- B: [-22, -70],
- C: [22, -70],
- D: [49, -39],
- K: [-51, -2],
- E: [51, -2],
- J: [-38.5, 31],
- F: [38.5, 31],
- I: [-35, 67],
- G: [35, 67],
- H: [0, 85]
- },
- polish: {
- a: [-35, -50],
- b: [0, -50],
- c: [35, -50],
- d: [-40, 0],
- e: [0, 0],
- f: [40, 0],
- g: [-37.5, 50],
- h: [0, 50],
- i: [37.5, 50],
- y: [-50, -50],
- z: [0, 65],
- j: [-27.5, -27.5],
- k: [0, -45],
- l: [27.5, -27.5],
- m: [-27.5, 27.5],
- n: [0, 45],
- o: [27.5, 27.5],
- p: [-32.5, 0],
- q: [32.5, 0],
- A: [-48, -52],
- B: [-23, -80],
- C: [23, -80],
- D: [48, -52],
- K: [-47, -10],
- E: [47, -10],
- J: [-62, 32],
- F: [62, 32],
- I: [-37, 68],
- G: [37, 68],
- H: [0, 86]
- },
- hessen: {
- a: [-43.75, -50],
- b: [0, -50],
- c: [43.75, -50],
- d: [-43.75, 0],
- e: [0, 0],
- f: [43.75, 0],
- g: [-43.75, 50],
- h: [0, 50],
- i: [43.75, 50],
- y: [-50, -50],
- z: [0, 52.5],
- j: [-40, -40],
- k: [0, -40],
- l: [40, -40],
- m: [-40, 40],
- n: [0, 40],
- o: [40, 40],
- p: [-40, 0],
- q: [40, 0],
- A: [-69, -64],
- B: [-22, -76],
- C: [22, -76],
- D: [69, -64],
- K: [-66.4, -20],
- E: [66.4, -20],
- J: [-62, 26],
- F: [62, 26],
- I: [-46, 70],
- G: [46, 70],
- H: [0, 91.5]
- },
- swiss: {
- a: [-43.75, -50],
- b: [0, -50],
- c: [43.75, -50],
- d: [-43.75, 0],
- e: [0, 0],
- f: [43.75, 0],
- g: [-32, 37.5],
- h: [0, 50],
- i: [32, 37.5],
- y: [-50, -50],
- z: [0, 62.5],
- j: [-37.5, -37.5],
- k: [0, -37.5],
- l: [37.5, -37.5],
- m: [-32, 32.5],
- n: [0, 42.5],
- o: [32, 32.5],
- p: [-37.5, 0],
- q: [37.5, 0],
- A: [-66.2, -66.6],
- B: [-22, -66],
- C: [22, -66],
- D: [66.2, -66.6],
- K: [-63, -20],
- E: [63, -20],
- J: [-50, 26],
- F: [50, 26],
- I: [-29, 62],
- G: [29, 62],
- H: [0, 89.5]
- },
- boeotian: {
- a: [-37.5, -47.5],
- b: [0, -47.5],
- c: [37.5, -47.5],
- d: [-25, 0],
- e: [0, 0],
- f: [25, 0],
- g: [-37.5, 47.5],
- h: [0, 47.5],
- i: [37.5, 47.5],
- y: [-48, -48],
- z: [0, 60],
- j: [-32.5, -37.5],
- k: [0, -45],
- l: [32.5, -37.5],
- m: [-32.5, 37.5],
- n: [0, 45],
- o: [32.5, 37.5],
- p: [-20, 0],
- q: [20, 0],
- A: [-45, -55],
- B: [-20, -77],
- C: [20, -77],
- D: [45, -55],
- K: [-59, -25],
- E: [59, -25],
- J: [-58, 27],
- F: [58, 27],
- I: [-39, 63],
- G: [39, 63],
- H: [0, 81]
- },
- roman: {
- a: [-40, -52.5],
- b: [0, -52.5],
- c: [40, -52.5],
- d: [-40, 0],
- e: [0, 0],
- f: [40, 0],
- g: [-40, 52.5],
- h: [0, 52.5],
- i: [40, 52.5],
- y: [-42.5, -52.5],
- z: [0, 65],
- j: [-30, -37.5],
- k: [0, -37.5],
- l: [30, -37.5],
- m: [-30, 37.5],
- n: [0, 37.5],
- o: [30, 37.5],
- p: [-30, 0],
- q: [30, 0],
- A: [-51.5, -65],
- B: [-17, -75],
- C: [17, -75],
- D: [51.5, -65],
- K: [-51.5, -21],
- E: [51.5, -21],
- J: [-51.5, 21],
- F: [51.5, 21],
- I: [-51.5, 65],
- G: [51.5, 65],
- H: [-17, 75],
- L: [17, 75]
- },
- kite: {
- b: [0, -65],
- e: [0, -15],
- h: [0, 35],
- z: [0, 35],
- k: [0, -50],
- n: [0, 20],
- p: [-20, -15],
- q: [20, -15],
- A: [-38, -52],
- B: [-29, -78],
- C: [29, -78],
- D: [38, -52],
- K: [-33, -20],
- E: [33, -20],
- J: [-25, 11],
- F: [25, 11],
- I: [-15, 42],
- G: [15, 42],
- H: [0, 73],
- L: [0, -91]
- },
- oldFrench: {
- a: [-43.75, -50],
- b: [0, -50],
- c: [43.75, -50],
- d: [-43.75, 0],
- e: [0, 0],
- f: [43.75, 0],
- g: [-37.5, 50],
- h: [0, 50],
- i: [37.5, 50],
- y: [-50, -50],
- z: [0, 62.5],
- j: [-37.5, -37.5],
- k: [0, -37.5],
- l: [37.5, -37.5],
- m: [-37.5, 37.5],
- n: [0, 45],
- o: [37.5, 37.5],
- p: [-37.5, 0],
- q: [37.5, 0],
- A: [-66.2, -66.6],
- B: [-22, -66.6],
- C: [22, -66.6],
- D: [66.2, -66.6],
- K: [-66.2, -20],
- E: [66.2, -20],
- J: [-64, 26],
- F: [64, 26],
- I: [-45, 62],
- G: [45, 62],
- H: [0, 91]
- },
- renaissance: {
- a: [-43.75, -50],
- b: [0, -50],
- c: [43.75, -50],
- d: [-41.5, 0],
- e: [0, 0],
- f: [41.5, 0],
- g: [-43.75, 50],
- h: [0, 50],
- i: [43.75, 50],
- y: [-50, -50],
- z: [0, 62.5],
- j: [-37.5, -37.5],
- k: [0, -37.5],
- l: [37.5, -37.5],
- m: [-37.5, 37.5],
- n: [0, 37.5],
- o: [37.5, 37.5],
- p: [-37.5, 0],
- q: [37.5, 0],
- A: [-61, -55],
- B: [-23, -67],
- C: [23, -67],
- D: [61, -55],
- K: [-55, -11],
- E: [55, -11],
- J: [-65, 31],
- F: [65, 31],
- I: [-45, 76],
- G: [45, 76],
- H: [0, 87]
- },
- baroque: {
- a: [-43.75, -45],
- b: [0, -45],
- c: [43.75, -45],
- d: [-43.75, 0],
- e: [0, 0],
- f: [43.75, 0],
- g: [-43.75, 50],
- h: [0, 50],
- i: [43.75, 50],
- y: [-50, -50],
- z: [0, 60],
- j: [-37.5, -37.5],
- k: [0, -37.5],
- l: [37.5, -37.5],
- m: [-37.5, 37.5],
- n: [0, 37.5],
- o: [37.5, 37.5],
- p: [-37.5, 0],
- q: [37.5, 0],
- A: [-65, -54.5],
- B: [-22, -65],
- C: [22, -65],
- D: [65, -54.5],
- K: [-58.5, -15],
- E: [58.5, -15],
- J: [-65, 31],
- F: [66, 31],
- I: [-35, 73],
- G: [35, 73],
- H: [0, 89]
- },
- targe: {
- a: [-43.75, -50],
- b: [0, -50],
- c: [43.75, -50],
- d: [-43.75, 0],
- e: [0, 0],
- f: [43.75, 0],
- g: [-43.75, 50],
- h: [0, 50],
- i: [43.75, 50],
- y: [-50, -50],
- z: [0, 50],
- j: [-40, -40],
- k: [0, -40],
- l: [40, -40],
- m: [-40, 40],
- n: [0, 40],
- o: [40, 40],
- p: [-32.5, 0],
- q: [32.5, 0],
- A: [-66.2, -60],
- B: [-22, -77],
- C: [22, -86],
- D: [60, -66.6],
- K: [-28, -20],
- E: [57, -20],
- J: [-61, 26],
- F: [61, 26],
- I: [-49, 63],
- G: [49, 59],
- H: [0, 80]
- },
- targe2: {
- a: [-43.75, -50],
- b: [0, -50],
- c: [43.75, -50],
- d: [-40, 0],
- e: [0, 0],
- f: [40, 0],
- g: [-43.75, 50],
- h: [0, 50],
- i: [43.75, 50],
- y: [-50, -50],
- z: [0, 60],
- j: [-37.5, -37.5],
- k: [0, -37.5],
- l: [37.5, -37.5],
- m: [-37.5, 37.5],
- n: [0, 37.5],
- o: [37.5, 37.5],
- p: [-32.5, 0],
- q: [32.5, 0],
- A: [-55, -59],
- B: [-15, -59],
- C: [24, -79],
- D: [51, -58],
- K: [-40, -14],
- E: [51, -14],
- J: [-64, 26],
- F: [62, 26],
- I: [-46, 66],
- G: [48, 67],
- H: [0, 83]
- },
- pavise: {
- a: [-40, -52.5],
- b: [0, -52.5],
- c: [40, -52.5],
- d: [-40, 0],
- e: [0, 0],
- f: [40, 0],
- g: [-40, 52.5],
- h: [0, 52.5],
- i: [40, 52.5],
- y: [-42.5, -52.5],
- z: [0, 60],
- j: [-30, -35],
- k: [0, -37.5],
- l: [30, -35],
- m: [-30, 35],
- n: [0, 37.5],
- o: [30, 35],
- p: [-30, 0],
- q: [30, 0],
- A: [-57, -55],
- B: [-22, -74],
- C: [22, -74],
- D: [57, -55],
- K: [-54, -11],
- E: [54, -11],
- J: [-50, 36],
- F: [50, 36],
- I: [-46, 81],
- G: [46, 81],
- H: [0, 81]
- },
- wedged: {
- a: [-43.75, -50],
- b: [0, -50],
- c: [43.75, -50],
- d: [-43.75, 0],
- e: [0, 0],
- f: [43.75, 0],
- g: [-32.25, 37.5],
- h: [0, 50],
- i: [32.25, 37.5],
- y: [-50, -50],
- z: [0, 62.5],
- j: [-37.5, -37.5],
- k: [0, -37.5],
- l: [37.5, -37.5],
- m: [-32.5, 32.5],
- n: [0, 42.5],
- o: [32.5, 32.5],
- p: [-37.5, 0],
- q: [37.5, 0],
- A: [-66, -53],
- B: [-22, -72.5],
- C: [22, -72.5],
- D: [66, -53],
- K: [-62.6, -13],
- E: [62.6, -13],
- J: [-50, 26],
- F: [50, 26],
- I: [-27, 62],
- G: [27, 62],
- H: [0, 87]
- },
- flag: {
- a: [-60, -40],
- b: [0, -40],
- c: [60, -40],
- d: [-60, 0],
- e: [0, 0],
- f: [60, 0],
- g: [-60, 40],
- h: [0, 40],
- i: [60, 40],
- y: [-60, -42.5],
- z: [0, 40],
- j: [-45, -30],
- k: [0, -30],
- l: [45, -30],
- m: [-45, 30],
- n: [0, 30],
- o: [45, 30],
- p: [-45, 0],
- q: [45, 0],
- A: [-81, -51],
- B: [-27, -51],
- C: [27, -51],
- D: [81, -51],
- K: [-81, -17],
- E: [81, -17],
- J: [-81, 17],
- F: [81, 17],
- I: [-81, 51],
- G: [81, 51],
- H: [-27, 51],
- L: [27, 51]
- },
- pennon: {
- a: [-75, -40],
- d: [-75, 0],
- e: [-25, 0],
- f: [25, 0],
- g: [-75, 40],
- y: [-70, -42.5],
- j: [-60, -30],
- m: [-60, 30],
- p: [-60, 0],
- q: [5, 0],
- A: [-81, -48],
- B: [-43, -36],
- C: [-4.5, -24],
- D: [33, -12],
- E: [72, 0],
- F: [33, 12],
- G: [-4.5, 24],
- H: [-43, 36],
- I: [-81, 48],
- J: [-81, 17],
- K: [-81, -17]
- },
- guidon: {
- a: [-60, -40],
- b: [0, -40],
- c: [60, -40],
- d: [-60, 0],
- e: [0, 0],
- g: [-60, 40],
- h: [0, 40],
- i: [60, 40],
- y: [-60, -42.5],
- z: [0, 40],
- j: [-45, -30],
- k: [0, -30],
- l: [45, -30],
- m: [-45, 30],
- n: [0, 30],
- o: [45, 30],
- p: [-45, 0],
- A: [-81, -51],
- B: [-27, -51],
- C: [27, -51],
- D: [78, -51],
- K: [-81, -17],
- E: [40.5, -17],
- J: [-81, 17],
- F: [40.5, 17],
- I: [-81, 51],
- G: [78, 51],
- H: [-27, 51],
- L: [27, 51]
- },
- banner: {
- a: [-50, -50],
- b: [0, -50],
- c: [50, -50],
- d: [-50, 0],
- e: [0, 0],
- f: [50, 0],
- g: [-50, 40],
- h: [0, 40],
- i: [50, 40],
- y: [-50, -50],
- z: [0, 40],
- j: [-37.5, -37.5],
- k: [0, -37.5],
- l: [37.5, -37.5],
- m: [-37.5, 27.5],
- n: [0, 27.5],
- o: [37.5, 27.5],
- p: [-37.5, 0],
- q: [37.5, 0],
- A: [-66.5, -66.5],
- B: [-22, -66.5],
- C: [22, -66.5],
- D: [66.5, -66.5],
- K: [-66.5, -20],
- E: [66.5, -20],
- J: [-66.5, 26],
- F: [66.5, 26],
- I: [-66.5, 66.5],
- G: [66.5, 66.5],
- H: [-25, 75],
- L: [25, 75]
- },
- dovetail: {
- a: [-49.75, -50],
- b: [0, -50],
- c: [49.75, -50],
- d: [-49.75, 0],
- e: [0, 0],
- f: [49.75, 0],
- g: [-49.75, 50],
- i: [49.75, 50],
- y: [-50, -50],
- z: [0, 40],
- j: [-37.5, -37.5],
- k: [0, -37.5],
- l: [37.5, -37.5],
- m: [-37.5, 37.5],
- n: [0, 32.5],
- o: [37.5, 37.5],
- p: [-37.5, 0],
- q: [37.5, 0],
- A: [-66.5, -66.5],
- B: [-22, -66.5],
- C: [22, -66.5],
- D: [66.5, -66.5],
- K: [-66.5, -16.5],
- E: [66.5, -16.5],
- J: [-66.5, 34.5],
- F: [66.5, 34.5],
- I: [-66.5, 84.5],
- G: [66.5, 84.5],
- H: [-25, 64],
- L: [25, 64]
- },
- gonfalon: {
- a: [-49.75, -50],
- b: [0, -50],
- c: [49.75, -50],
- d: [-49.75, 0],
- e: [0, 0],
- f: [49.75, 0],
- g: [-49.75, 50],
- h: [0, 50],
- i: [49.75, 50],
- y: [-50, -50],
- z: [0, 50],
- j: [-37.5, -37.5],
- k: [0, -37.5],
- l: [37.5, -37.5],
- m: [-37.5, 37.5],
- n: [0, 37.5],
- o: [37.5, 37.5],
- p: [-37.5, 0],
- q: [37.5, 0],
- A: [-66.5, -66.5],
- B: [-22, -66.5],
- C: [22, -66.5],
- D: [66.5, -66.5],
- K: [-66.5, -20],
- E: [66.5, -20],
- J: [-66.5, 26],
- F: [66.5, 26],
- I: [-40, 63],
- G: [40, 63],
- H: [0, 88]
- },
- pennant: {
- a: [-45, -50],
- b: [0, -50],
- c: [45, -50],
- e: [0, 0],
- h: [0, 50],
- y: [-50, -50],
- z: [0, 50],
- j: [-32.5, -37.5],
- k: [0, -37.5],
- l: [32.5, -37.5],
- n: [0, 37.5],
- A: [-60, -76],
- B: [-22, -76],
- C: [22, -76],
- D: [60, -76],
- K: [-46, -38],
- E: [46, -38],
- J: [-31, 0],
- F: [31, 0],
- I: [-16, 38],
- G: [16, 38],
- H: [0, 76]
- },
- round: {
- a: [-40, -40],
- b: [0, -40],
- c: [40, -40],
- d: [-40, 0],
- e: [0, 0],
- f: [40, 0],
- g: [-40, 40],
- h: [0, 40],
- i: [40, 40],
- y: [-48, -48],
- z: [0, 57.5],
- j: [-35.5, -35.5],
- k: [0, -37.5],
- l: [35.5, -35.5],
- m: [-35.5, 35.5],
- n: [0, 37.5],
- o: [35.5, 35.5],
- p: [-36.5, 0],
- q: [36.5, 0],
- A: [-59, -48],
- B: [-23, -73],
- C: [23, -73],
- D: [59, -48],
- K: [-76, -10],
- E: [76, -10],
- J: [-70, 31],
- F: [70, 31],
- I: [-42, 64],
- G: [42, 64],
- H: [0, 77]
- },
- oval: {
- a: [-37.5, -50],
- b: [0, -50],
- c: [37.5, -50],
- d: [-43, 0],
- e: [0, 0],
- f: [43, 0],
- g: [-37.5, 50],
- h: [0, 50],
- i: [37.5, 50],
- y: [-48, -48],
- z: [0, 60],
- j: [-35.5, -37.5],
- k: [0, -37.5],
- l: [35.5, -37.5],
- m: [-35.5, 37.5],
- n: [0, 50],
- o: [35.5, 37.5],
- p: [-36.5, 0],
- q: [36.5, 0],
- A: [-48, -48],
- B: [-23, -78],
- C: [23, -78],
- D: [48, -48],
- K: [-59, -10],
- E: [59, -10],
- J: [-55, 31],
- F: [55, 31],
- I: [-36, 68],
- G: [36, 68],
- H: [0, 85]
- },
- vesicaPiscis: {
- a: [-32, -37],
- b: [0, -50],
- c: [32, -37],
- d: [-32, 0],
- e: [0, 0],
- f: [32, 0],
- g: [-32, 37],
- h: [0, 50],
- i: [32, 37],
- y: [-50, -50],
- z: [0, 62],
- j: [-27.5, -27.5],
- k: [0, -37],
- l: [27.5, -27.5],
- m: [-27.5, 27.5],
- n: [0, 42],
- o: [27.5, 27.5],
- p: [-27.5, 0],
- q: [27.5, 0],
- A: [-45, -32],
- B: [-29, -63],
- C: [29, -63],
- D: [45, -32],
- K: [-50, 0],
- E: [50, 0],
- J: [-45, 32],
- F: [45, 32],
- I: [-29, 63],
- G: [29, 63],
- H: [0, 89],
- L: [0, -89]
- },
- square: {
- a: [-49.75, -50],
- b: [0, -50],
- c: [49.75, -50],
- d: [-49.75, 0],
- e: [0, 0],
- f: [49.75, 0],
- g: [-49.75, 50],
- h: [0, 50],
- i: [49.75, 50],
- y: [-50, -50],
- z: [0, 50],
- j: [-37.5, -37.5],
- k: [0, -37.5],
- l: [37.5, -37.5],
- m: [-37.5, 37.5],
- n: [0, 37.5],
- o: [37.5, 37.5],
- p: [-37.5, 0],
- q: [37.5, 0],
- A: [-66.5, -66.5],
- B: [-22, -66.5],
- C: [22, -66.5],
- D: [66.5, -66.5],
- K: [-66.5, -20],
- E: [66.5, -20],
- J: [-66.5, 26],
- F: [66.5, 26],
- I: [-66.5, 66.5],
- G: [66.5, 66.5],
- H: [-22, 66.5],
- L: [22, 66.5]
- },
- diamond: {
- a: [-32, -37],
- b: [0, -50],
- c: [32, -37],
- d: [-43, 0],
- e: [0, 0],
- f: [43, 0],
- g: [-32, 37],
- h: [0, 50],
- i: [32, 37],
- y: [-50, -50],
- z: [0, 62],
- j: [-27.5, -27.5],
- k: [0, -37],
- l: [27.5, -27.5],
- m: [-27.5, 27.5],
- n: [0, 42],
- o: [27.5, 27.5],
- p: [-37, 0],
- q: [37, 0],
- A: [-43, -28],
- B: [-22, -56],
- C: [22, -56],
- D: [43, -28],
- K: [-63, 0],
- E: [63, 0],
- J: [-42, 28],
- F: [42, 28],
- I: [-22, 56],
- G: [22, 56],
- H: [0, 83],
- L: [0, -82]
- },
- no: {
- a: [-66.5, -66.5],
- b: [0, -66.5],
- c: [66.5, -66.5],
- d: [-66.5, 0],
- e: [0, 0],
- f: [66.5, 0],
- g: [-66.5, 66.5],
- h: [0, 66.5],
- i: [66.5, 66.5],
- y: [-50, -50],
- z: [0, 75],
- j: [-50, -50],
- k: [0, -50],
- l: [50, -50],
- m: [-50, 50],
- n: [0, 50],
- o: [50, 50],
- p: [-50, 0],
- q: [50, 0],
- A: [-91.5, -91.5],
- B: [-30.5, -91.5],
- C: [30.5, -91.5],
- D: [91.5, -91.5],
- K: [-91.5, -30.5],
- E: [91.5, -30.5],
- J: [-91.5, 30.5],
- F: [91.5, 30.5],
- I: [-91.5, 91.5],
- G: [91.5, 91.5],
- H: [-30.5, 91.5],
- L: [30.5, 91.5]
- },
- fantasy1: {
- a: [-45, -45],
- b: [0, -50],
- c: [45, -45],
- d: [-40, 0],
- e: [0, 0],
- f: [40, 0],
- g: [-36, 42.5],
- h: [0, 50],
- i: [36, 42.5],
- y: [-50, -50],
- z: [0, 60],
- j: [-37, -37],
- k: [0, -40],
- l: [37, -37],
- m: [-32, 32],
- n: [0, 40],
- o: [32, 32],
- p: [-28.5, 0],
- q: [28.5, 0],
- A: [-66, -55],
- B: [-22, -67],
- C: [22, -67],
- D: [66, -55],
- K: [-53, -20],
- E: [53, -20],
- J: [-46, 26],
- F: [46, 26],
- I: [-29, 62],
- G: [29, 62],
- H: [0, 84]
- },
- fantasy2: {
- a: [-45, -45],
- b: [0, -45],
- c: [45, -45],
- d: [-35, 0],
- e: [0, 0],
- f: [35, 0],
- g: [-36, 42.5],
- h: [0, 45],
- i: [36, 42.5],
- y: [-50, -50],
- z: [0, 55],
- j: [-32.5, -32.5],
- k: [0, -40],
- l: [32.5, -32.5],
- m: [-30, 30],
- n: [0, 40],
- o: [30, 30],
- p: [-27.5, 0],
- q: [27.5, 0],
- A: [-58, -35],
- B: [-44, -67],
- C: [44, -67],
- D: [58, -35],
- K: [-39, -5],
- E: [39, -5],
- J: [-57, 26],
- F: [57, 26],
- I: [-32, 58],
- G: [32, 58],
- H: [0, 83],
- L: [0, -72]
- },
- fantasy3: {
- a: [-40, -45],
- b: [0, -50],
- c: [40, -45],
- d: [-35, 0],
- e: [0, 0],
- f: [35, 0],
- g: [-36, 42.5],
- h: [0, 50],
- i: [36, 42.5],
- y: [-50, -50],
- z: [0, 55],
- j: [-32.5, -32.5],
- k: [0, -40],
- l: [32.5, -32.5],
- m: [-30, 30],
- n: [0, 40],
- o: [30, 30],
- p: [-27.5, 0],
- q: [27.5, 0],
- A: [-56, -42],
- B: [-22, -72],
- C: [22, -72],
- D: [56, -42],
- K: [-37, -11],
- E: [37, -11],
- J: [-60, 20],
- F: [60, 20],
- I: [-34, 56],
- G: [34, 56],
- H: [0, 83]
- },
- fantasy4: {
- a: [-50, -45],
- b: [0, -50],
- c: [50, -45],
- d: [-45, 0],
- e: [0, 0],
- f: [45, 0],
- g: [-40, 45],
- h: [0, 50],
- i: [40, 45],
- y: [-50, -50],
- z: [0, 62.5],
- j: [-37.5, -37.5],
- k: [0, -45],
- l: [37.5, -37.5],
- m: [-37.5, 37.5],
- n: [0, 45],
- o: [37.5, 37.5],
- p: [-35, 0],
- q: [35, 0],
- A: [-75, -56],
- B: [-36, -61],
- C: [36, -61],
- D: [75, -56],
- K: [-67, -12],
- E: [67, -12],
- J: [-63, 32],
- F: [63, 32],
- I: [-42, 75],
- G: [42, 75],
- H: [0, 91.5],
- L: [0, -79]
- },
- fantasy5: {
- a: [-45, -50],
- b: [0, -50],
- c: [45, -50],
- d: [-40, 0],
- e: [0, 0],
- f: [40, 0],
- g: [-30, 45],
- h: [0, 50],
- i: [30, 45],
- y: [-50, -50],
- z: [0, 60],
- j: [-37, -37],
- k: [0, -40],
- l: [37, -37],
- m: [-32, 32],
- n: [0, 40],
- o: [32, 32],
- p: [-28.5, 0],
- q: [28.5, 0],
- A: [-61, -67],
- B: [-22, -76],
- C: [22, -76],
- D: [61, -67],
- K: [-58, -25],
- E: [58, -25],
- J: [-48, 20],
- F: [48, 20],
- I: [-28.5, 60],
- G: [28.5, 60],
- H: [0, 89]
- },
- noldor: {
- b: [0, -65],
- e: [0, -15],
- h: [0, 35],
- z: [0, 35],
- k: [0, -50],
- n: [0, 30],
- p: [-20, -15],
- q: [20, -15],
- A: [-34, -47],
- B: [-20, -68],
- C: [20, -68],
- D: [34, -47],
- K: [-18, -20],
- E: [18, -20],
- J: [-26, 11],
- F: [26, 11],
- I: [-14, 43],
- G: [14, 43],
- H: [0, 74],
- L: [0, -85]
- },
- gondor: {
- a: [-32.5, -50],
- b: [0, -50],
- c: [32.5, -50],
- d: [-32.5, 0],
- e: [0, 0],
- f: [32.5, 0],
- g: [-32.5, 50],
- h: [0, 50],
- i: [32.5, 50],
- y: [-42.5, -52.5],
- z: [0, 65],
- j: [-25, -37.5],
- k: [0, -37.5],
- l: [25, -37.5],
- m: [-25, 30],
- n: [0, 37.5],
- o: [25, 30],
- p: [-25, 0],
- q: [25, 0],
- A: [-42, -52],
- B: [-17, -75],
- C: [17, -75],
- D: [42, -52],
- K: [-42, -15],
- E: [42, -15],
- J: [-42, 22],
- F: [42, 22],
- I: [-26, 60],
- G: [26, 60],
- H: [0, 87]
- },
- easterling: {
- a: [-40, -47.5],
- b: [0, -47.5],
- c: [40, -47.5],
- d: [-40, 0],
- e: [0, 0],
- f: [40, 0],
- g: [-40, 47.5],
- h: [0, 47.5],
- i: [40, 47.5],
- y: [-42.5, -52.5],
- z: [0, 65],
- j: [-30, -37.5],
- k: [0, -37.5],
- l: [30, -37.5],
- m: [-30, 37.5],
- n: [0, 37.5],
- o: [30, 37.5],
- p: [-30, 0],
- q: [30, 0],
- A: [-52, -72],
- B: [0, -65],
- D: [52, -72],
- K: [-52, -24],
- E: [52, -24],
- J: [-52, 24],
- F: [52, 24],
- I: [-52, 72],
- G: [52, 72],
- H: [0, 65]
- },
- erebor: {
- a: [-40, -40],
- b: [0, -55],
- c: [40, -40],
- d: [-40, 0],
- e: [0, 0],
- f: [40, 0],
- g: [-40, 40],
- h: [0, 55],
- i: [40, 40],
- y: [-50, -50],
- z: [0, 50],
- j: [-35, -35],
- k: [0, -45],
- l: [35, -35],
- m: [-35, 35],
- n: [0, 45],
- o: [35, 35],
- p: [-37.5, 0],
- q: [37.5, 0],
- A: [-47, -46],
- B: [-22, -81],
- C: [22, -81],
- D: [47, -46],
- K: [-66.5, 0],
- E: [66.5, 0],
- J: [-47, 46],
- F: [47, 46],
- I: [-22, 81],
- G: [22, 81]
- },
- ironHills: {
- a: [-43.75, -50],
- b: [0, -50],
- c: [43.75, -50],
- d: [-43.25, 0],
- e: [0, 0],
- f: [43.25, 0],
- g: [-42.5, 42.5],
- h: [0, 50],
- i: [42.5, 42.5],
- y: [-50, -50],
- z: [0, 62.5],
- j: [-32.5, -32.5],
- k: [0, -40],
- l: [32.5, -32.5],
- m: [-32.5, 32.5],
- n: [0, 40],
- o: [32.5, 32.5],
- p: [-37.5, 0],
- q: [37.5, 0],
- A: [-61, -67],
- B: [-22, -74],
- C: [22, -74],
- D: [61, -67],
- K: [-59, -20],
- E: [59, -20],
- J: [-57, 26],
- F: [57, 26],
- I: [-33, 64],
- G: [33, 64],
- H: [0, 88]
- },
- urukHai: {
- a: [-40, -45],
- b: [0, -45],
- c: [40, -45],
- d: [-36, 0],
- e: [0, 0],
- f: [36, 0],
- g: [-32.25, 40],
- h: [0, 40],
- i: [32.25, 40],
- y: [-50, -50],
- z: [0, 40],
- j: [-32.5, -32.5],
- k: [0, -37.5],
- l: [32.5, -32.5],
- m: [-27.5, 27.5],
- n: [0, 32.5],
- o: [27.5, 27.5],
- p: [-37.5, 0],
- q: [37.5, 0],
- A: [-31, -79],
- B: [-1, -90],
- C: [31, -74],
- D: [61, -57],
- K: [-55, -19],
- E: [53, -19],
- J: [-45, 19],
- F: [45, 19],
- I: [-33, 57],
- G: [35, 57],
- H: [0, 57],
- L: [-39, -50]
- },
- moriaOrc: {
- a: [-37.5, -37.5],
- b: [0, -37.5],
- c: [37.5, -37.5],
- d: [-37.5, 0],
- e: [0, 0],
- f: [37.5, 0],
- g: [-37.5, 37.5],
- h: [0, 37.5],
- i: [37.5, 37.5],
- y: [-50, -50],
- z: [0, 40],
- j: [-30, -30],
- k: [0, -30],
- l: [30, -30],
- m: [-30, 30],
- n: [0, 30],
- o: [30, 30],
- p: [-30, 0],
- q: [30, 0],
- A: [-48, -48],
- B: [-16, -50],
- C: [16, -46],
- D: [39, -61],
- K: [-52, -19],
- E: [52, -26],
- J: [-42, 9],
- F: [52, 9],
- I: [-31, 40],
- G: [40, 43],
- H: [4, 47]
- }
- };
-
- const shieldSize = {
- horsehead: 0.9,
- horsehead2: 0.9,
- polish: 0.85,
- swiss: 0.95,
- boeotian: 0.75,
- roman: 0.95,
- kite: 0.65,
- targe2: 0.9,
- pavise: 0.9,
- wedged: 0.95,
- flag: 0.7,
- pennon: 0.5,
- guidon: 0.65,
- banner: 0.8,
- dovetail: 0.8,
- pennant: 0.6,
- oval: 0.95,
- vesicaPiscis: 0.8,
- diamond: 0.8,
- no: 1.2,
- fantasy1: 0.8,
- fantasy2: 0.7,
- fantasy3: 0.7,
- fantasy5: 0.9,
- noldor: 0.5,
- gondor: 0.75,
- easterling: 0.8,
- erebor: 0.9,
- urukHai: 0.8,
- moriaOrc: 0.7
- };
-
- const shieldBox = {
- heater: "0 10 200 200",
- spanish: "0 10 200 200",
- french: "0 10 200 200",
-
- horsehead: "0 10 200 200",
- horsehead2: "0 10 200 200",
- polish: "0 0 200 200",
- hessen: "0 5 200 200",
- swiss: "0 10 200 200",
-
- boeotian: "0 0 200 200",
- roman: "0 0 200 200",
- kite: "0 0 200 200",
- oldFrench: "0 10 200 200",
- renaissance: "0 5 200 200",
- baroque: "0 10 200 200",
-
- targe: "0 0 200 200",
- targe2: "0 0 200 200",
- pavise: "0 0 200 200",
- wedged: "0 10 200 200",
-
- flag: "0 0 200 200",
- pennon: "2.5 0 200 200",
- guidon: "2.5 0 200 200",
- banner: "0 10 200 200",
- dovetail: "0 10 200 200",
- gonfalon: "0 10 200 200",
- pennant: "0 0 200 200",
-
- round: "0 0 200 200",
- oval: "0 0 200 200",
- vesicaPiscis: "0 0 200 200",
- square: "0 0 200 200",
- diamond: "0 0 200 200",
- no: "0 0 200 200",
-
- fantasy1: "0 0 200 200",
- fantasy2: "0 5 200 200",
- fantasy3: "0 5 200 200",
- fantasy4: "0 5 200 200",
- fantasy5: "0 0 200 200",
-
- noldor: "0 0 200 200",
- gondor: "0 5 200 200",
- easterling: "0 0 200 200",
- erebor: "0 0 200 200",
- ironHills: "0 5 200 200",
- urukHai: "0 0 200 200",
- moriaOrc: "0 0 200 200"
- };
-
- const shieldPaths = {
- heater: "m25,25 h150 v50 a150,150,0,0,1,-75,125 a150,150,0,0,1,-75,-125 z",
- spanish: "m25,25 h150 v100 a75,75,0,0,1,-150,0 z",
- french: "m 25,25 h 150 v 139.15 c 0,41.745 -66,18.15 -75,36.3 -9,-18.15 -75,5.445 -75,-36.3 v 0 z",
- horsehead:
- "m 20,40 c 0,60 40,80 40,100 0,10 -4,15 -0.35,30 C 65,185.7 81,200 100,200 c 19.1,0 35.3,-14.6 40.5,-30.4 C 144.2,155 140,150 140,140 140,120 180,100 180,40 142.72,40 150,15 100,15 55,15 55,40 20,40 Z",
- horsehead2:
- "M60 20c-5 20-10 35-35 55 25 35 35 65 30 100 20 0 35 10 45 26 10-16 30-26 45-26-5-35 5-65 30-100a87 87 0 01-35-55c-25 3-55 3-80 0z",
- polish:
- "m 90.3,6.3 c -12.7,0 -20.7,10.9 -40.5,14 0,11.8 -4.9,23.5 -11.4,31.1 0,0 12.7,6 12.7,19.3 C 51.1,90.8 30,90.8 30,90.8 c 0,0 -3.6,7.4 -3.6,22.4 0,34.3 23.1,60.2 40.7,68.2 17.6,8 27.7,11.4 32.9,18.6 5.2,-7.3 15.3,-10.7 32.8,-18.6 17.6,-8 40.7,-33.9 40.7,-68.2 0,-15 -3.6,-22.4 -3.6,-22.4 0,0 -21.1,0 -21.1,-20.1 0,-13.3 12.7,-19.3 12.7,-19.3 C 155.1,43.7 150.2,32.1 150.2,20.3 130.4,17.2 122.5,6.3 109.7,6.3 102.5,6.3 100,10 100,10 c 0,0 -2.5,-3.7 -9.7,-3.7 z",
- hessen:
- "M170 20c4 5 8 13 15 20 0 0-10 0-10 15 0 100-15 140-75 145-65-5-75-45-75-145 0-15-10-15-10-15l15-20c0 15 10-5 70-5s70 20 70 5z",
- swiss:
- "m 25,20 c -0.1,0 25.2,8.5 37.6,8.5 C 75.1,28.5 99.1,20 100,20 c 0.6,0 24.9,8.5 37.3,8.5 C 149.8,28.5 174.4,20 175,20 l -0.3,22.6 C 173.2,160.3 100,200 100,200 100,200 26.5,160.9 25.2,42.6 Z",
- boeotian:
- "M150 115c-5 0-10-5-10-15s5-15 10-15c10 0 7 10 15 10 10 0 0-30 0-30-10-25-30-55-65-55S45 40 35 65c0 0-10 30 0 30 8 0 5-10 15-10 5 0 10 5 10 15s-5 15-10 15c-10 0-7-10-15-10-10 0 0 30 0 30 10 25 30 55 65 55s55-30 65-55c0 0 10-30 0-30-8 0-5 10-15 10z",
- roman: "m 160,170 c -40,20 -80,20 -120,0 V 30 C 80,10 120,10 160,30 Z",
- kite: "m 53.3,46.4 c 0,4.1 1,12.3 1,12.3 7.1,55.7 45.7,141.3 45.7,141.3 0,0 38.6,-85.6 45.7,-141.2 0,0 1,-8.1 1,-12.3 C 146.7,20.9 125.8,0.1 100,0.1 74.2,0.1 53.3,20.9 53.3,46.4 Z",
- oldFrench: "m25,25 h150 v75 a100,100,0,0,1,-75,100 a100,100,0,0,1,-75,-100 z",
- renaissance:
- "M 25,33.9 C 33.4,50.3 36.2,72.9 36.2,81.7 36.2,109.9 25,122.6 25,141 c 0,29.4 24.9,44.1 40.2,47.7 15.3,3.7 29.3,0 34.8,11.3 5.5,-11.3 19.6,-7.6 34.8,-11.3 C 150.1,185 175,170.3 175,141 c 0,-18.4 -11.2,-31.1 -11.2,-59.3 0,-8.8 2.8,-31.3 11.2,-47.7 L 155.7,14.4 C 138.2,21.8 119.3,25.7 100,25.7 c -19.3,0 -38.2,-3.9 -55.7,-11.3 z",
- baroque:
- "m 100,25 c 18,0 50,2 75,14 v 37 l -2.7,3.2 c -4.9,5.4 -6.6,9.6 -6.7,16.2 0,6.5 2,11.6 6.9,17.2 l 2.8,3.1 v 10.2 c 0,17.7 -2.2,27.7 -7.8,35.9 -5,7.3 -11.7,11.3 -32.3,19.4 -12.6,5 -20.2,8.8 -28.6,14.5 C 103.3,198 100,200 100,200 c 0,0 -2.8,-2.3 -6.4,-4.7 C 85.6,189.8 78,186 65,180.9 32.4,168.1 26.9,160.9 25.8,129.3 L 25,116 l 3.3,-3.3 c 4.8,-5.2 7,-10.7 7,-17.3 0,-6.8 -1.8,-11.1 -6.5,-16.1 L 25,76 V 39 C 50,27 82,25 100,25 Z",
- targe:
- "m 20,35 c 15,0 115,-60 155,-10 -5,10 -15,15 -10,50 5,45 10,70 -10,90 C 125,195 75,195 50,175 25,150 30,130 35,85 50,95 65,85 65,70 65,50 50,45 40,50 30,55 27,65 30,70 23,73 20,70 14,70 11,60 20,45 20,35 Z",
- targe2:
- "m 84,32.2 c 6.2,-1 19.5,-31.4 94.1,-20.2 -30.57,33.64 -21.66,67.37 -11.2,95 20.2,69.5 -41.17549,84.7 -66.88,84.7 C 74.32,191.7071 8.38,168.95 32,105.9 36.88,92.88 31,89 31,82.6 35.15,82.262199 56.79,86.17 56.5,69.8 56.20,52.74 42.2,47.9 25.9,55.2 25.9,51.4 39.8,6.7 84,32.2 Z",
- pavise:
- "M95 7L39.9 37.3a10 10 0 00-5.1 9.5L46 180c.4 5.2 3.7 10 9 10h90c5.3 0 9.6-4.8 10-10l10.6-133.2a10 10 0 00-5-9.5L105 7c-4.2-2.3-6.2-2.3-10 0z",
- wedged:
- "m 51.2,19 h 96.4 c 3.1,12.7 10.7,20.9 26.5,20.8 C 175.7,94.5 165.3,144.3 100,200 43.5,154.2 22.8,102.8 25.1,39.7 37,38.9 47.1,34.7 51.2,19 Z",
- round: "m 185,100 a 85,85 0 0 1 -85,85 85,85 0 0 1 -85,-85 85,85 0 0 1 85,-85 85,85 0 0 1 85,85",
- oval: "m 32.3,99.5 a 67.7,93.7 0 1 1 0,1.3 z",
- vesicaPiscis:
- "M 100,0 C 63.9,20.4 41,58.5 41,100 c 0,41.5 22.9,79.6 59,100 36.1,-20.4 59,-58.5 59,-100 C 159,58.5 136.1,20.4 100,0 Z",
- square: "M 25,25 H 175 V 175 H 25 Z",
- diamond: "M 25,100 100,200 175,100 100,0 Z",
- no: "m0,0 h200 v200 h-200 z",
- flag: "M 10,40 h180 v120 h-180 Z",
- pennon: "M 10,40 l190,60 -190,60 Z",
- guidon: "M 10,40 h190 l-65,60 65,60 h-190 Z",
- banner: "m 25,25 v 170 l 25,-40 25,40 25,-40 25,40 25,-40 25,40 V 25 Z",
- dovetail: "m 25,25 v 175 l 75,-40 75,40 V 25 Z",
- gonfalon: "m 25,25 v 125 l 75,50 75,-50 V 25 Z",
- pennant: "M 25,15 100,200 175,15 Z",
- fantasy1:
- "M 100,5 C 85,30 40,35 15,40 c 40,35 20,90 40,115 15,25 40,30 45,45 5,-15 30,-20 45,-45 20,-25 0,-80 40,-115 C 160,35 115,30 100,5 Z",
- fantasy2:
- "m 152,21 c 0,0 -27,14 -52,-4 C 75,35 48,21 48,21 50,45 30,55 30,75 60,75 60,115 32,120 c 3,40 53,50 68,80 15,-30 65,-40 68,-80 -28,-5 -28,-45 2,-45 C 170,55 150,45 152,21 Z",
- fantasy3:
- "M 167,67 C 165,0 35,0 33,67 c 32,-7 27,53 -3,43 -5,45 60,65 70,90 10,-25 75,-47.51058 70,-90 -30,10 -35,-50 -3,-43 z",
- fantasy4:
- "M100 9C55 48 27 27 13 39c23 50 3 119 49 150 14 9 28 11 38 11s27-4 38-11c55-39 24-108 49-150-14-12-45 7-87-30z",
- fantasy5: "M 100,0 C 75,25 30,25 30,25 c 0,69 20,145 70,175 50,-30 71,-106 70,-175 0,0 -45,0 -70,-25 z",
- noldor:
- "m 55,75 h 2 c 3,-25 38,-10 3,20 15,50 30,75 40,105 10,-30 25,-55 40,-105 -35,-30 0,-45 3,-20 h 2 C 150,30 110,20 100,0 90,20 50,30 55,75 Z",
- gondor: "m 100,200 c 15,-15 38,-35 45,-60 h 5 V 30 h -5 C 133,10 67,10 55,30 h -5 v 110 h 5 c 7,25 30,45 45,60 z",
- easterling: "M 160,185 C 120,170 80,170 40,185 V 15 c 40,15 80,15 120,0 z",
- erebor: "M25 135 V60 l22-13 16-37 h75 l15 37 22 13 v75l-22 18-16 37 H63l-16-37z",
- ironHills: "m 30,25 60,-10 10,10 10,-10 60,10 -5,125 -65,50 -65,-50 z",
- urukHai: "M 30,60 C 40,60 60,50 60,20 l -5,-3 45,-17 75,40 -5,5 -35,155 -5,-35 H 70 v 35 z",
- moriaOrc:
- "M45 35c5 3 7 10 13 9h19c4-2 7-4 9-9 6 1 9 9 16 11 7-2 14 0 21 0 6-3 6-10 10-15 2-5 1-10-2-15-2-4-5-14-4-16 3 6 7 11 12 14 7 3 3 12 7 16 3 6 4 12 9 18 2 4 6 8 5 14 0 6-1 12 3 18-3 6-2 13-1 20 1 6-2 12-1 18 0 6-3 13 0 18 8 4 0 8-5 7-4 3-9 3-13 9-5 5-5 13-8 19 0 6 0 15-7 16-1 6-7 6-10 12-1-6 0-6-2-9l2-19c2-4 5-12-3-12-4-5-11-5-15 1l-13-18c-3-4-2 9-3 12 2 2-4-6-7-5-8-2-8 7-11 11-2 4-5 10-8 9 3-10 3-16 1-23-1-4 2-9-4-11 0-6 1-13-2-19-4-2-9-6-13-7V91c4-7-5-13 0-19-3-7 2-11 2-18-1-6 1-12 3-17v-1z"
- };
-
- const lines = {
- straight: "m 0,100 v15 h 200 v -15 z",
- engrailed:
- "m 0,95 a 6.25,6.25 0 0 0 12.5,0 6.25,6.25 0 0 0 12.5,0 6.25,6.25 0 0 0 12.5,0 6.25,6.25 0 0 0 12.5,0 6.25,6.25 0 0 0 12.5,0 6.25,6.25 0 0 0 12.5,0 6.25,6.25 0 0 0 12.5,0 6.25,6.25 0 0 0 12.5,0 6.25,6.25 0 0 0 12.5,0 6.25,6.25 0 0 0 12.5,0 6.25,6.25 0 0 0 12.5,0 6.25,6.25 0 0 0 12.5,0 6.25,6.25 0 0 0 12.5,0 6.25,6.25 0 0 0 12.5,0 6.25,6.25 0 0 0 12.5,0 6.25,6.25 0 0 0 12.5,0 v 20 H 0 Z",
- invecked:
- "M0,102.5 a6.25,6.25,0,0,1,12.5,0 a6.25,6.25,0,0,1,12.5,0 a6.25,6.25,0,0,1,12.5,0 a6.25,6.25,0,0,1,12.5,0 a6.25,6.25,0,0,1,12.5,0 a6.25,6.25,0,0,1,12.5,0 a6.25,6.25,0,0,1,12.5,0 a6.25,6.25,0,0,1,12.5,0 a6.25,6.25,0,0,1,12.5,0 a6.25,6.25,0,0,1,12.5,0 a6.25,6.25,0,0,1,12.5,0 a6.25,6.25,0,0,1,12.5,0 a6.25,6.25,0,0,1,12.5,0 a6.25,6.25,0,0,1,12.5,0 a6.25,6.25,0,0,1,12.5,0 a6.25,6.25,0,0,1,12.5,0 v12.5 H0 z",
- embattled:
- "M 0,105 H 2.5 V 95 h 15 v 10 h 15 V 95 h 15 v 10 h 15 V 95 h 15 v 10 h 15 V 95 h 15 v 10 h 15 V 95 h 15 v 10 h 15 V 95 h 15 v 10 h 15 V 95 h 15 v 10 h 2.5 v 10 H 0 Z",
- wavy: "m 200,115 v -15 c -8.9,3.5 -16,3.1 -25,0 -8.9,-3.5 -16,-3.1 -25,0 -8.9,3.5 -16,3.2 -25,0 -8.9,-3.5 -16,-3.2 -25,0 -8.9,3.5 -16,3.1 -25,0 -8.9,-3.5 -16,-3.1 -25,0 -8.9,3.5 -16,3.2 -25,0 -8.9,-3.5 -16,-3.2 -25,0 v 15 z",
- raguly:
- "m 200,95 h -3 l -5,10 h -10 l 5,-10 h -10 l -5,10 h -10 l 5,-10 h -10 l -5,10 h -10 l 5,-10 h -10 l -5,10 h -10 l 5,-10 h -10 l -5,10 h -10 l 5,-10 H 97 l -5,10 H 82 L 87,95 H 77 l -5,10 H 62 L 67,95 H 57 l -5,10 H 42 L 47,95 H 37 l -5,10 H 22 L 27,95 H 17 l -5,10 H 2 L 7,95 H 0 v 20 h 200 z",
- dancetty:
- "m 0,105 10,-15 15,20 15,-20 15,20 15,-20 15,20 15,-20 15,20 15,-20 15,20 15,-20 15,20 15,-20 10,15 v 10 H 0 Z",
- dentilly:
- "M 180,105 170,95 v 10 L 160,95 v 10 L 150,95 v 10 L 140,95 v 10 L 130,95 v 10 L 120,95 v 10 L 110,95 v 10 L 100,95 v 10 L 90,95 v 10 L 80,95 v 10 L 70,95 v 10 L 60,95 v 10 L 50,95 v 10 L 40,95 v 10 L 30,95 v 10 L 20,95 v 10 L 10,95 v 10 L 0,95 v 20 H 200 V 105 L 190,95 v 10 L 180,95 Z",
- angled: "m 0,95 h 100 v 10 h 100 v 10 H 0 Z",
- urdy: "m 200,90 -5,5 v 10 l -5,5 -5,-5 V 95 l -5,-5 -5,5 v 10 l -5,5 -5,-5 V 95 l -5,-5 -5,5 v 10 l -5,5 -5,-5 V 95 l -5,-5 -5,5 v 10 l -5,6 -5,-6 V 95 l -5,-5 -5,5 v 10 l -5,5 -5,-5 V 95 l -5,-5 -5,5 v 10 l -5,5 -5,-5 V 95 l -5,-5 -5,5 v 10 l -5,6 -5,-6 V 95 l -5,-5 -5,5 v 10 l -5,5 -5,-5 V 95 l -5,-5 -5,5 v 10 l -5,5 -5,-5 V 95 l -5,-5 -5,5 v 10 l -5,5 -5,-5 V 95 L 0,90 v 25 h 200",
- indented:
- "m 100,95 5,10 5,-10 5,10 5,-10 5,10 5,-10 5,10 5,-10 5,10 5,-10 5,10 5,-10 5,10 5,-10 5,10 5,-10 5,10 5,-10 5,10 5,-10 v 20 H 0 V 95 l 5,10 5,-10 5,10 5,-10 5,10 5,-10 5,10 5,-10 5,10 5,-10 5,10 5,-10 5,10 5,-10 5,10 5,-10 5,10 5,-10 5,10 z",
- bevilled: "m 0,92.5 h 110 l -20,15 H 200 V 115 H 0 Z",
- nowy: "m 0,95 h 80 c 0,0 0.1,20.1 20,20 19.9,-0.1 20,-20 20,-20 h 80 v 20 H 0 Z",
- nowyReversed: "m 200,105 h -80 c 0,0 -0.1,-20.1 -20,-20 -19.9,0.1 -20,20 -20,20 H 0 v 10 h 200 z",
- potenty:
- "m 3,95 v 5 h 5 v 5 H 0 v 10 h 200 l 0.5,-10 H 193 v -5 h 5 v -5 h -15 v 5 h 5 v 5 h -15 v -5 h 5 v -5 h -15 v 5 h 5 v 5 h -15 v -5 h 5 v -5 h -15 v 5 h 5 v 5 h -15 v -5 h 5 v -5 h -15 v 5 h 5 v 5 h -15 v -5 h 5 v -5 h -15 v 5 h 5 v 5 H 100.5 93 v -5 h 5 V 95 H 83 v 5 h 5 v 5 H 73 v -5 h 5 V 95 H 63 v 5 h 5 v 5 H 53 v -5 h 5 V 95 H 43 v 5 h 5 v 5 H 33 v -5 h 5 V 95 H 23 v 5 h 5 v 5 H 13 v -5 h 5 v -5 z",
- potentyDexter:
- "m 200,105 h -2 v -10 0 0 h -10 v 5 h 5 v 5 H 183 V 95 h -10 v 5 h 5 v 5 H 168 V 95 h -10 v 5 h 5 v 5 H 153 V 95 h -10 v 5 h 5 v 5 H 138 V 95 h -10 v 5 h 5 v 5 H 123 V 95 h -10 v 5 h 5 v 5 h -10 v 0 0 -10 H 98 v 5 h 5 v 5 H 93 V 95 H 83 v 5 h 5 v 5 H 78 V 95 H 68 v 5 h 5 v 5 H 63 V 95 H 53 v 5 h 5 v 5 H 48 V 95 H 38 v 5 h 5 v 5 H 33 V 95 H 23 v 5 h 5 v 5 H 18 V 95 H 8 v 5 h 5 v 5 H 3 V 95 H 0 v 20 h 200 z",
- potentySinister:
- "m 2.5,95 v 10 H 0 v 10 h 202.5 v -15 h 5 v -5 h -10 v 10 h -10 v -5 h 5 v -5 h -10 v 10 h -10 v -5 h 5 v -5 h -10 v 10 h -10 v -5 h 5 v -5 h -10 v 10 h -10 v -5 h 5 v -5 h -10 v 10 h -10 v -5 h 5 v -5 h -10 v 10 h -10 v -5 h 5 v -5 h -10 v 10 h -10 v -5 h 5 v -5 h -10 v 10 h -10 v -5 h 5 v -5 h -10 v 10 h -10 v -5 h 5 v -5 h -10 v 10 h -10 v -5 h 5 v -5 h -10 v 10 h -10 v -5 h 5 v -5 h -10 v 10 h -10 v -5 h 5 v -5 h -10 v 10 h -10 v -5 h 5 v -5 z",
- embattledGhibellin:
- "M 200,200 V 100 l -5,-5 v 10 l -5,-5 -5,5 V 95 l -5,5 -5,-5 v 10 l -5,-5 -5,5 V 95 l -5,5 -5,-5 v 10 l -5,-5 -5,5 V 95 l -5,5 -5,-5 v 10 l -5,-5 -5,5 V 95 l -5,5 -5,-5 v 10 l -5,-5 -5,5 V 95 l -5,5 -5,-5 v 10 l -5,-5 -5,5 V 95 l -5,5 -5,-5 v 10 l -5,-5 -5,5 V 95 l -5,5 -5,-5 v 10 l -5,-5 -5,5 V 95 l -5,5 -5,-5 v 10 l -5,-5 -5,5 V 95 l -5,5 -5,-5 v 10 l -5,-5 -5,5 V 95 l -5,5 v 15 h 200",
- embattledNotched:
- "m 200,105 h -5 V 95 l -5,5 -5,-5 v 10 h -5 V 95 l -5,5 -5,-5 v 10 h -5 V 95 l -5,5 -5,-5 v 10 h -5 V 95 l -5,5 -5,-5 v 10 h -5 V 95 l -5,5 -5,-5 v 10 h -5 V 95 l -5,5 -5,-5 v 10 h -5 V 95 l -5,5 -5,-5 v 10 H 90 V 95 l -5,5 -5,-5 v 10 H 75 V 95 l -5,5 -5,-5 v 10 H 60 V 95 l -5,5 -5,-5 v 10 H 45 V 95 l -5,5 -5,-5 v 10 H 30 V 95 l -5,5 -5,-5 v 10 H 15 V 95 l -5,5 -5,-5 v 10 H 0 v 10 h 200",
- embattledGrady:
- "m 0,95 v 20 H 200 V 95 h -2.5 v 5 h -5 v 5 h -5 v -5 h -5 v -5 h -5 v 5 h -5 v 5 h -5 v -5 h -5 v -5 h -5 v 5 h -5 v 5 h -5 v -5 h -5 v -5 h -5 v 5 h -5 v 5 h -5 v -5 h -5 v -5 h -5 v 5 h -5 v 5 h -5 v -5 h -5 v -5 h -5 v 5 h -5 v 5 h -5 v -5 h -5 v -5 h -5 v 5 h -5 v 5 h -5 v -5 h -5 v -5 h -5 v 5 h -5 v 5 h -5 v -5 h -5 v -5 h -5 v 5 h -5 v 5 h -5 v -5 h -5 v -5 h -5 v 5 h -5 v 5 h -5 v -5 h -5 v -5 z",
- dovetailed:
- "m 200,95 h -7 l 4,10 h -14 l 4,-10 h -14 l 4,10 h -14 l 4,-10 h -14 l 4,10 h -14 l 4,-10 h -14 l 4,10 h -14 l 4,-10 h -14 l 4,10 h -14 l 4,-10 H 93 l 4,10 H 83 L 87,95 H 73 l 4,10 H 63 L 67,95 H 53 l 4,10 H 43 L 47,95 H 33 l 4,10 H 23 L 27,95 H 13 l 4,10 H 3 L 7,95 H 0 v 20 h 200",
- dovetailedIndented:
- "m 200,100 -7,-5 4,10 -7,-5 -7,5 4,-10 -7,5 -7,-5 4,10 -7,-5 -7,5 4,-10 -7,5 -7,-5 4,10 -7,-5 -7,5 4,-10 -7,5 -7,-5 4,10 -7,-5 -7,5 4,-10 -7,5 -7,-5 4,10 -7,-5 -7,5 4,-10 -7,5 -7,-5 4,10 -7,-5 -7,5 4,-10 -7,5 -7,-5 4,10 -7,-5 -7,5 4,-10 -7,5 -7,-5 4,10 -7,-5 -7,5 4,-10 -7,5 -7,-5 4,10 -7,-5 -7,5 4,-10 -7,5 -7,-5 4,10 -7,-5 -7,5 4,-10 -7,5 v 15 h 200",
- nebuly:
- "m 13.1,89.8 c -4.1,0 -7.3,2 -7.3,4.5 0,1.2 0.7,2.3 1.8,3.1 1.2,0.7 1.9,1.8 1.9,3 0,2.5 -3.2,4.5 -7.3,4.5 -0.5,0 -2.2,-0.2 -2.2,-0.2 V 115 h 200 v -10.1 c -3.7,-0.2 -6.7,-2.2 -6.7,-4.5 0,-1.2 0.7,-2.3 1.9,-3 1.2,-0.8 1.8,-1.9 1.8,-3.1 0,-2.5 -3.2,-4.5 -7.2,-4.5 -4.1,0 -7.3,2 -7.3,4.5 0,1.2 0.7,2.3 1.8,3.1 1.2,0.7 1.9,1.8 1.9,3 0,2.5 -3.3,4.5 -7.3,4.5 -4,0 -7.3,-2 -7.3,-4.5 0,-1.2 0.7,-2.3 1.9,-3 1.2,-0.8 1.8,-1.9 1.8,-3.1 0,-2.5 -3.2,-4.5 -7.2,-4.5 -4.1,0 -7.3,2 -7.3,4.5 0,1.2 0.7,2.3 1.8,3.1 1.2,0.7 1.9,1.8 1.9,3 -1.5,4.1 -4.2,4.4 -8.8,4.5 -4.7,-0.1 -8.7,-1.5 -8.9,-4.5 0,-1.2 0.7,-2.3 1.9,-3 1.2,-0.8 1.9,-1.9 1.9,-3.1 0,-2.5 -3.3,-4.5 -7.3,-4.5 -4.1,0 -7.3,2 -7.3,4.5 0,1.2 0.7,2.3 1.8,3.1 1.2,0.7 1.9,1.8 1.9,3 0,2.5 -3.3,4.5 -7.3,4.5 -4,0 -7.3,-2 -7.3,-4.5 0,-1.2 0.7,-2.3 1.9,-3 1.2,-0.8 1.9,-1.9 1.9,-3.1 0,-2.5 -3.3,-4.5 -7.3,-4.5 -4.1,0 -7.3,2 -7.3,4.5 0,1.2 0.7,2.3 1.8,3.1 1.2,0.7 1.9,1.8 1.9,3 0,2.5 -3.3,4.5 -7.3,4.5 -4,0 -7.3,-2 -7.3,-4.5 0,-1.2 0.7,-2.3 1.9,-3 1.2,-0.8 1.9,-1.9 1.9,-3.1 0,-2.5 -3.3,-4.5 -7.3,-4.5 -4.1,0 -7.3,2 -7.3,4.5 0,1.2 0.7,2.3 1.8,3.1 1.2,0.7 1.9,1.8 1.9,3 0,2.5 -3.3,4.5 -7.3,4.5 -4,0 -7.3,-2 -7.3,-4.5 0,-1.2 0.7,-2.3 1.9,-3 1.2,-0.8 1.9,-1.9 1.9,-3.1 0,-2.5 -3.3,-4.5 -7.3,-4.5 -4.1,0 -7.3,2 -7.3,4.5 0,1.2 0.7,2.3 1.8,3.1 1.2,0.7 1.9,1.8 1.9,3 0,2.5 -3.3,4.5 -7.3,4.5 -4,0 -7.3,-2 -7.3,-4.5 0,-1.2 0.7,-2.3 1.9,-3 1.2,-0.8 1.9,-1.9 1.9,-3.1 0,-2.5 -3.3,-4.5 -7.3,-4.5 -4.1,0 -7.3,2 -7.3,4.5 0,1.2 0.7,2.3 1.8,3.1 1.2,0.7 1.9,1.8 1.9,3 0,2.5 -3.3,4.5 -7.3,4.5 -4,0 -7.3,-2 -7.3,-4.5 0,-1.2 0.7,-2.3 1.9,-3 1.2,-0.8 1.9,-1.9 1.9,-3.1 0,-2.5 -3.3,-4.5 -7.3,-4.5 -4.1,0 -7.3,2 -7.3,4.5 0,1.2 0.7,2.3 1.8,3.1 1.2,0.7 1.9,1.8 1.9,3 0,2.5 -3.3,4.5 -7.3,4.5 -4,0 -7.3,-2 -7.3,-4.5 0,-1.2 0.7,-2.3 1.9,-3 1.2,-0.8 1.9,-1.9 1.9,-3.1 0,-2.5 -3.3,-4.5 -7.3,-4.5 z",
- rayonne:
- "M0 115l-.1-6 .2.8c1.3-1 2.3-2.5 2.9-4.4.5-2 .4-3.9-.3-5.4-.7-1.5-.8-3.4-.3-5.4A9 9 0 015.5 90c-.7 1.5-.8 3.4-.3 5.4.5 2 1.7 3.6 3.1 4.6a9 9 0 013.1 4.6c.5 2 .4 3.9-.3 5.4a9 9 0 003.1-4.6c.5-2 .4-3.9-.3-5.4-.7-1.5-.8-3.4-.3-5.4.5-2 1.7-3.6 3.1-4.6-.7 1.5-.8 3.4-.3 5.4.5 2 1.7 3.6 3.1 4.6a9 9 0 013.1 4.6c.5 2 .4 3.9-.3 5.4a9 9 0 003.1-4.6c.5-2 .4-3.9-.3-5.4-.7-1.5-.8-3.4-.3-5.4.5-2 1.7-3.6 3.1-4.6-.7 1.5-.8 3.4-.3 5.4.5 2 1.7 3.6 3.1 4.6a9 9 0 013.1 4.6c.5 2 .4 3.9-.3 5.4a9 9 0 003.1-4.6c.5-2 .4-3.9-.3-5.4-.7-1.5-.8-3.4-.3-5.4.5-2 1.7-3.6 3.1-4.6-.7 1.5-.8 3.4-.3 5.4.5 2 1.7 3.6 3.1 4.6a9 9 0 013.1 4.6c.5 2 .4 3.9-.3 5.4a9 9 0 003.1-4.6c.5-2 .4-3.9-.3-5.4-.7-1.5-.8-3.4-.3-5.4.5-2 1.7-3.6 3.1-4.6-.7 1.5-.8 3.4-.3 5.4.5 2 1.7 3.6 3.1 4.6a9 9 0 013.1 4.6c.5 2 .4 3.9-.3 5.4a9 9 0 003.1-4.6c.5-2 .4-3.9-.3-5.4-.7-1.5-.8-3.4-.3-5.4.5-2 1.7-3.6 3.1-4.6-.7 1.5-.8 3.4-.3 5.4.5 2 1.7 3.6 3.1 4.6a9 9 0 013.1 4.6c.5 2 .4 3.9-.3 5.4a9 9 0 003.1-4.6c.5-2 .4-3.9-.3-5.4-.7-1.5-.8-3.4-.3-5.4.5-2 1.7-3.6 3.1-4.6-.7 1.5-.8 3.4-.3 5.4.5 2 1.7 3.6 3.1 4.6a9 9 0 013.1 4.6c.5 2 .4 3.9-.3 5.4a9 9 0 003.1-4.6c.5-2 .4-3.9-.3-5.4-.7-1.5-.8-3.4-.3-5.4.5-2 1.7-3.6 3.1-4.6-.7 1.5-.8 3.4-.3 5.4.5 2 1.7 3.6 3.1 4.6a9 9 0 013.1 4.6c.5 2 .4 3.9-.3 5.4a9 9 0 003.1-4.6c.5-2 .4-3.9-.3-5.4-.7-1.5-.8-3.4-.3-5.4.5-2 1.7-3.6 3.1-4.6-.7 1.5-.8 3.4-.3 5.4.5 2 2.1 3.1 3.1 4.6 1 1.6 2.4 3.1 2.7 4.8.3 1.7.3 3.3 0 5.2 1.3-1 2.6-2.7 3.2-4.6.5-2 .4-3.9-.3-5.4-.7-1.5-.8-3.4-.3-5.4.5-2 1.7-3.6 3.1-4.6-.7 1.5-.8 3.4-.3 5.4.5 2 1.7 3.6 3.1 4.6a9 9 0 013.1 4.6c.5 2 .4 3.9-.3 5.4a9 9 0 003.1-4.6c.5-2 .4-3.9-.3-5.4-.7-1.5-.8-3.4-.3-5.4.5-2 1.7-3.6 3.1-4.6-.7 1.5-.8 3.4-.3 5.4.5 2 1.7 3.6 3.1 4.6a9 9 0 013.1 4.6c.5 2 .4 3.9-.3 5.4a9 9 0 003.1-4.6c.5-2 .4-3.9-.3-5.4-.7-1.5-.8-3.4-.3-5.4.5-2 1.7-3.6 3.1-4.6-.7 1.5-.8 3.4-.3 5.4.5 2 1.7 3.6 3.1 4.6a9 9 0 013.1 4.6c.5 2 .4 3.9-.3 5.4a9 9 0 003.1-4.6c.5-2 .4-3.9-.3-5.4-.7-1.5-.8-3.4-.3-5.4.5-2 1.7-3.6 3.1-4.6-.7 1.5-.8 3.4-.3 5.4.5 2 1.7 3.6 3.1 4.6a9 9 0 013.1 4.6c.5 2 .4 3.9-.3 5.4a9 9 0 003.1-4.6c.5-2 .4-3.9-.3-5.4-.7-1.5-.8-3.4-.3-5.4.5-2 1.7-3.6 3.1-4.6-.7 1.5-.8 3.4-.3 5.4.5 2 1.7 3.6 3.1 4.6a9 9 0 013.1 4.6c.5 2 .4 3.9-.3 5.4a9 9 0 003.1-4.6c.5-2 .4-3.9-.3-5.4-.7-1.5-.8-3.4-.3-5.4.5-2 1.7-3.6 3.1-4.6-.7 1.5-.8 3.4-.3 5.4.5 2 1.7 3.6 3.1 4.6a9 9 0 013.1 4.6c.5 2 .4 3.9-.3 5.4a9 9 0 003.1-4.6c.5-2 .4-3.9-.3-5.4-.7-1.5-.8-3.4-.3-5.4.5-2 1.7-3.6 3.1-4.6-.7 1.5-.8 3.4-.3 5.4.5 2 1.7 3.6 3.1 4.6a9 9 0 013.1 4.6c.5 2 .4 3.9-.3 5.4a9 9 0 003.1-4.6c.5-2 .4-3.9-.3-5.4-.7-1.5-.8-3.4-.3-5.4.5-2 1.7-3.6 3.1-4.6-.7 1.5-.8 3.4-.3 5.4.5 2 1.7 3.6 3.1 4.6a9 9 0 013.1 4.6c.5 2 .4 3.9-.3 5.4a9 9 0 003.1-4.6c.5-2 .4-3.9-.3-5.4-.7-1.5-.8-3.4-.3-5.4.5-2 1.7-3.6 3.1-4.6-.7 1.5-.8 3.4-.3 5.4.75 2.79 2.72 4.08 4.45 5.82L200 115z",
- seaWaves:
- "m 28.83,94.9 c -4.25,0 -7.16,3.17 -8.75,5.18 -1.59,2.01 -4.5,5.18 -8.75,5.18 -2.16,0 -3.91,-1.63 -3.91,-3.64 0,-2.01 1.44,-3.6 3.6,-3.6 0.7,0 1.36,0.17 1.93,0.48 -0.33,-2.03 -2.19,-3.56 -4.45,-3.56 -4.24,0 -6.91,3.13 -8.5,5.13 V 115 h 200 v -14.89 c -1.59,2.01 -4.5,5.18 -8.75,5.18 -2.16,0 -3.91,-1.63 -3.91,-3.64 0,-2.01 1.75,-3.64 3.91,-3.64 0.7,0 1.36,0.17 1.93,0.48 -0.34,-2.01 -2.2,-3.55 -4.46,-3.55 -4.25,0 -7.16,3.17 -8.75,5.18 -1.59,2.01 -4.5,5.18 -8.75,5.18 -2.16,0 -3.91,-1.63 -3.91,-3.64 0,-2.01 1.75,-3.64 3.91,-3.64 0.7,0 1.36,0.17 1.93,0.48 -0.34,-2.01 -2.21,-3.55 -4.46,-3.55 -4.25,0 -7.16,3.17 -8.75,5.18 -1.59,2.01 -4.5,5.18 -8.75,5.18 -2.16,0 -3.91,-1.63 -3.91,-3.64 0,-2.01 1.75,-3.64 3.91,-3.64 0.7,0 1.36,0.17 1.93,0.48 -0.34,-2.01 -2.21,-3.55 -4.46,-3.55 -4.25,0 -7.16,3.17 -8.75,5.18 -1.59,2.01 -4.5,5.18 -8.75,5.18 -2.16,0 -3.91,-1.63 -3.91,-3.64 0,-2.01 1.75,-3.64 3.91,-3.64 0.7,0 1.36,0.17 1.93,0.48 -0.34,-2.01 -2.2,-3.55 -4.46,-3.55 -4.25,0 -7.16,3.17 -8.75,5.18 -1.59,2.01 -4.5,5.18 -8.75,5.18 -2.16,0 -3.91,-1.63 -3.91,-3.64 0,-2.01 1.44,-3.6 3.6,-3.6 0.7,0 1.36,0.17 1.93,0.48 -0.34,-2.01 -2.21,-3.55 -4.46,-3.55 -4.25,0 -6.6,3.09 -8.19,5.09 -1.59,2.01 -4.5,5.18 -8.75,5.18 -2.16,0 -3.91,-1.63 -3.91,-3.64 0,-2.01 1.75,-3.64 3.91,-3.64 0.7,0 1.36,0.17 1.93,0.48 -0.34,-2.01 -2.21,-3.55 -4.46,-3.55 -4.25,0 -7.16,3.17 -8.75,5.18 -1.59,2.01 -4.5,5.18 -8.75,5.18 -2.16,0 -3.91,-1.63 -3.91,-3.64 0,-2.01 1.75,-3.64 3.91,-3.64 0.7,0 1.36,0.17 1.93,0.48 -0.34,-2.01 -2.2,-3.55 -4.46,-3.55 -4.25,0 -7.16,3.17 -8.75,5.18 -1.59,2.01 -4.5,5.18 -8.75,5.18 -2.16,0 -3.91,-1.63 -3.91,-3.64 0,-2.01 1.75,-3.64 3.91,-3.64 0.7,0 1.36,0.17 1.93,0.48 -0.34,-2.01 -2.2,-3.55 -4.46,-3.55 -4.25,0 -7.16,3.17 -8.75,5.18 -1.59,2.01 -4.5,5.18 -8.75,5.18 -2.16,0 -3.91,-1.63 -3.91,-3.64 0,-2.01 1.75,-3.64 3.91,-3.64 0.7,0 1.36,0.17 1.93,0.48 -0.34,-2.01 -2.21,-3.55 -4.46,-3.55 z",
- dragonTeeth:
- "M 9.4,85 C 6.5,88.1 4.1,92.9 3,98.8 1.9,104.6 2.3,110.4 3.8,115 2.4,113.5 0,106.6 0,109.3 v 5.7 h 200 v -5.7 c -1.1,-2.4 -2,-5.1 -2.6,-8 -1.1,-5.9 -0.7,-11.6 0.8,-16.2 -2.9,3.1 -5.3,7.9 -6.4,13.8 -1.1,5.9 -0.7,11.6 0.8,16.2 -2.9,-3.1 -5.3,-7.9 -6.4,-13.8 -1.1,-5.9 -0.7,-11.6 0.8,-16.2 -2.9,3.1 -5.3,7.9 -6.4,13.8 -1.1,5.9 -0.7,11.6 0.8,16.2 -2.9,-3.1 -5.3,-7.9 -6.4,-13.8 -1.1,-5.9 -0.7,-11.6 0.8,-16.2 -2.9,3.1 -5.3,7.9 -6.4,13.8 -1.1,5.9 -0.7,11.6 0.8,16.2 -2.9,-3.1 -5.3,-7.9 -6.4,-13.8 -1.1,-5.9 -0.7,-11.6 0.8,-16.2 -2.9,3.1 -5.3,7.9 -6.4,13.8 -1.1,5.9 -0.7,11.6 0.8,16.2 -2.9,-3.1 -5.3,-7.9 -6.4,-13.8 -1.1,-5.9 -0.7,-11.6 0.8,-16.2 -2.9,3.1 -5.3,7.9 -6.4,13.8 -1.1,5.9 -0.7,11.6 0.8,16.2 -2.9,-3.1 -5.3,-7.9 -6.4,-13.8 -1.1,-5.9 -0.7,-11.6 0.8,-16.2 -2.9,3.1 -5.3,7.9 -6.4,13.8 -1.1,5.9 -0.7,11.6 0.8,16.2 -2.9,-3.1 -5.3,-7.9 -6.4,-13.8 -1.1,-5.9 -0.7,-11.6 0.8,-16.2 -2.9,3.1 -5.3,7.9 -6.4,13.8 -1.1,5.9 -0.7,11.6 0.8,16.2 -2.9,-3.1 -5.3,-7.9 -6.4,-13.8 -1.1,-5.9 -0.7,-11.6 0.8,-16.2 -2.9,3.1 -5.3,7.9 -6.4,13.8 -1.1,5.9 -0.7,11.6 0.8,16.2 -2.9,-3.1 -5.3,-7.9 -6.4,-13.8 -1.1,-5.9 -0.7,-11.6 0.8,-16.2 -2.9,3.1 -5.3,7.9 -6.4,13.8 -1.1,5.9 -0.7,11.6 0.8,16.2 -1.4,-1.5 -2.8,-3.9 -3.8,-6.1 -1.1,-2.4 -2.3,-6.1 -2.6,-7.7 -0.2,-5.9 0.2,-11.7 1.7,-16.3 -3,3.1 -5.3,7.9 -6.4,13.8 -1.1,5.8 -0.7,11.6 0.8,16.2 -2.9,-3.1 -5.3,-7.9 -6.4,-13.8 -1,-5.8 -0.7,-11.6 0.9,-16.2 -3,3.1 -5.3,7.9 -6.4,13.8 -1.1,5.8 -0.7,11.6 0.8,16.2 -2.9,-3.1 -5.3,-7.9 -6.4,-13.8 -1.1,-5.8 -0.7,-11.6 0.9,-16.2 -3,3.1 -5.3,7.9 -6.4,13.8 -1.1,5.8 -0.7,11.6 0.8,16.2 -2.9,-3.1 -5.3,-7.9 -6.4,-13.8 C 63,95.4 63.4,89.6 64.9,85 c -2.9,3.1 -5.3,7.9 -6.3,13.8 -1.1,5.8 -0.7,11.6 0.8,16.2 -3,-3.1 -5.3,-7.9 -6.4,-13.8 -1.1,-5.8 -0.7,-11.6 0.8,-16.2 -2.9,3.1 -5.3,7.9 -6.4,13.8 -1,5.8 -0.6,11.6 0.9,16.2 -3,-3.1 -5.3,-7.9 -6.4,-13.8 -1.1,-5.8 -0.7,-11.6 0.8,-16.2 -2.9,3.1 -5.3,7.9 -6.4,13.8 -1,5.8 -0.7,11.6 0.9,16.2 -3,-3.1 -5.3,-7.9 -6.4,-13.8 -1.1,-5.8 -0.7,-11.6 0.8,-16.2 -2.9,3.1 -5.3,7.9 -6.4,13.8 -1.1,5.8 -0.7,11.6 0.9,16.2 -3,-3.1 -5.3,-7.9 -6.4,-13.8 C 18.6,95.4 19,89.6 20.5,85 17.6,88.1 15.2,92.9 14.1,98.8 13,104.6 13.4,110.4 14.9,115 12,111.9 9.6,107.1 8.6,101.2 7.5,95.4 7.9,89.6 9.4,85 Z",
- firTrees:
- "m 3.9,90 -4,7 2,-0.5 L 0,100 v 15 h 200 v -15 l -1.9,-3.5 2,0.5 -4,-7 -4,7 2,-0.5 -4,7 2,-0.5 -4,7 -4,-7 2,0.5 -4,-7 2,0.5 -4,-7 -4,7 2,-0.5 -4,7 2,-0.5 -4,7 -4,-7 2,0.5 -4,-7 2,0.5 -4,-7 -4,7 2,-0.5 -4,7 2,-0.5 -4,7 -4,-7 2,0.5 -4,-7 2,0.5 -4.1,-7 -4,7 2,-0.5 -4,7 2,-0.5 -4,7 -4,-7 2,0.5 -4,-7 2,0.5 -4,-7 -4,7 2,-0.5 -4,7 2,-0.5 -4,7 -4,-7 2,0.5 -4,-7 2,0.5 -4,-7 -4,7 2,-0.5 -4,7 2,-0.5 -4,7 -4,-7 2,0.5 -4,-7 2,0.5 -4,-7 -4,7 2,-0.5 -4,7 2,-0.5 -4,7 -4,-7 2,0.5 -4,-7 2,0.5 -4,-7 -4,7 2,-0.5 -4,7 2,-0.5 -4,7 -4,-7 2,0.5 -4,-7 2,0.5 -4,-7 -4,7 2,-0.5 -4,7 2,-0.5 -4,7 -4,-7 2,0.5 -4,-7 2,0.5 -4.1,-7 -4,7 2,-0.5 -4,7 2,-0.5 -4,7 -4,-7 2,0.5 -4,-7 2,0.5 -4,-7 -4,7 2,-0.5 -4,7 2,-0.5 -4,7 -4,-7 2,0.5 -4,-7 2,0.5 -4,-7 -4,7 2,-0.5 -4,7 2,-0.5 -4,7 -4,-7 2,0.5 -4,-7 2,0.5 z",
- flechy: "m 0,100 h 85 l 15,-15 15,15 h 85 v 15 H 0 Z",
- barby: "m 0,100 h 85 l 15,15 15,-15 h 85 v 15 H 0 Z",
- enclavy: "M 0,100 H 85 V 85 h 30 v 15 h 85 v 15 H 0 Z",
- escartely: "m 0,100 h 85 v 15 h 30 v -15 h 85 v 15 H 0 Z",
- arched: "m 100,95 c 40,-0.2 100,20 100,20 H 0 c 0,0 60,-19.8 100,-20 z",
- archedReversed: "m 0,85 c 0,0 60,20.2 100,20 40,-0.2 100,-20 100,-20 v 30 H 0 Z"
- };
-
- const templates = {
- // straight divisions
- perFess: `
Join our Discord server and Reddit community to ask questions, share maps, discuss the Generator and Worlbuilding, report bugs and propose new features.
diff --git a/src/index.html b/src/index.html index 9ebb271b..e5d2c5f6 100644 --- a/src/index.html +++ b/src/index.html @@ -6152,6 +6152,7 @@ +GeoJSON format is used in GIS tools such as QGIS. Check out @@ -8494,16 +8495,12 @@ - - - - + - @@ -8515,7 +8512,7 @@ - + @@ -8552,12 +8549,11 @@ - - +