mirror of
https://github.com/Azgaar/Fantasy-Map-Generator.git
synced 2025-12-17 01:41:22 +01:00
Add new marker lore descriptions (#681)
* Add new marker lore descriptions * Fix errors, expand lore generation
This commit is contained in:
parent
5a183af735
commit
827d488904
1 changed files with 54 additions and 15 deletions
|
|
@ -181,7 +181,16 @@ window.Markers = (function () {
|
||||||
const river = pack.rivers.find(r => r.i === pack.cells.r[cell]);
|
const river = pack.rivers.find(r => r.i === pack.cells.r[cell]);
|
||||||
const riverName = river ? `${river.name} ${river.type}` : "river";
|
const riverName = river ? `${river.name} ${river.type}` : "river";
|
||||||
const name = river && P(0.2) ? river.name : burg.name;
|
const name = river && P(0.2) ? river.name : burg.name;
|
||||||
notes.push({id, name: `${name} Bridge`, legend: `A stone bridge over the ${riverName} near ${burg.name}`});
|
const weightedAdjectives = {
|
||||||
|
"stone":10,
|
||||||
|
"wooden":1,
|
||||||
|
"lengthy":2,
|
||||||
|
"formidable":2,
|
||||||
|
"rickety":1,
|
||||||
|
"beaten":1,
|
||||||
|
"weathered":1,
|
||||||
|
};
|
||||||
|
notes.push({id, name: `${name} Bridge`, legend: `A ${rw(weightedAdjectives)} bridge spans over the ${riverName} near ${burg.name}`});
|
||||||
quantity--;
|
quantity--;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -448,7 +457,7 @@ window.Markers = (function () {
|
||||||
const [cell] = extractAnyElement(lighthouses);
|
const [cell] = extractAnyElement(lighthouses);
|
||||||
const id = addMarker({cell, icon, type, px: 14});
|
const id = addMarker({cell, icon, type, px: 14});
|
||||||
const proper = cells.burg[cell] ? pack.burgs[cells.burg[cell]].name : Names.getCulture(cells.culture[cell]);
|
const proper = cells.burg[cell] ? pack.burgs[cells.burg[cell]].name : Names.getCulture(cells.culture[cell]);
|
||||||
notes.push({id, name: getAdjective(proper) + " Lighthouse" + name, legend: `A lighthouse to keep the navigation safe`});
|
notes.push({id, name: getAdjective(proper) + " Lighthouse" + name, legend: `A lighthouse to serve as a beacon for ships in the open sea`});
|
||||||
quantity--;
|
quantity--;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -459,12 +468,20 @@ window.Markers = (function () {
|
||||||
const waterfalls = Array.from(cells.i.filter(i => cells.r[i] && !occupied[i] && cells.h[i] >= 50 && cells.c[i].some(c => cells.h[c] < 40 && cells.r[c])));
|
const waterfalls = Array.from(cells.i.filter(i => cells.r[i] && !occupied[i] && cells.h[i] >= 50 && cells.c[i].some(c => cells.h[c] < 40 && cells.r[c])));
|
||||||
const quantity = getQuantity(waterfalls, 1, 5, multiplier);
|
const quantity = getQuantity(waterfalls, 1, 5, multiplier);
|
||||||
if (!quantity) return;
|
if (!quantity) return;
|
||||||
|
|
||||||
|
const descriptions = [
|
||||||
|
"A gorgeous waterfall flows here",
|
||||||
|
"The rapids of an exceptionally beautiful waterfall",
|
||||||
|
"An impressive waterfall has cut through the land",
|
||||||
|
"The cascades of a stunning waterfall",
|
||||||
|
"A river drops down from a great height forming a wonderous waterfall",
|
||||||
|
"A breathtaking waterfall cuts through the landscape",
|
||||||
|
];
|
||||||
for (let i = 0; i < waterfalls.length && i < quantity; i++) {
|
for (let i = 0; i < waterfalls.length && i < quantity; i++) {
|
||||||
const cell = waterfalls[i];
|
const cell = waterfalls[i];
|
||||||
const id = addMarker({cell, icon, type, dy: 54, px: 16});
|
const id = addMarker({cell, icon, type, dy: 54, px: 16});
|
||||||
const proper = cells.burg[cell] ? pack.burgs[cells.burg[cell]].name : Names.getCulture(cells.culture[cell]);
|
const proper = cells.burg[cell] ? pack.burgs[cells.burg[cell]].name : Names.getCulture(cells.culture[cell]);
|
||||||
notes.push({id, name: getAdjective(proper) + " Waterfall" + name, legend: `An extremely beautiful waterfall`});
|
notes.push({id, name: getAdjective(proper) + " Waterfall" + name, legend: `${ra(descriptions)}`});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -521,7 +538,7 @@ window.Markers = (function () {
|
||||||
const id = addMarker({cell, icon, type, dy: 48});
|
const id = addMarker({cell, icon, type, dy: 48});
|
||||||
const name = `${lake.name} Monster`;
|
const name = `${lake.name} Monster`;
|
||||||
const length = gauss(10, 5, 5, 100);
|
const length = gauss(10, 5, 5, 100);
|
||||||
const legend = `Rumors said a relic monster of ${length} ${heightUnit.value} long inhabits ${lake.name} Lake. Truth or lie, but folks are afraid to fish in the lake`;
|
const legend = `Rumors say a relic monster of ${length} ${heightUnit.value} long inhabits ${lake.name} Lake. Truth or lie, folks are afraid to fish in the lake`;
|
||||||
notes.push({id, name, legend});
|
notes.push({id, name, legend});
|
||||||
quantity--;
|
quantity--;
|
||||||
}
|
}
|
||||||
|
|
@ -552,15 +569,37 @@ window.Markers = (function () {
|
||||||
let quantity = getQuantity(hills, 30, 600, multiplier);
|
let quantity = getQuantity(hills, 30, 600, multiplier);
|
||||||
if (!quantity) return;
|
if (!quantity) return;
|
||||||
|
|
||||||
const subjects = ["Locals", "Old folks", "Old books", "Tipplers"];
|
const adjectives = [
|
||||||
const species = ["Ogre", "Troll", "Cyclops", "Giant", "Monster", "Beast", "Dragon", "Undead", "Ghoul", "Vampire"];
|
"great",
|
||||||
|
"big",
|
||||||
|
"huge",
|
||||||
|
"prime",
|
||||||
|
"golden",
|
||||||
|
"proud",
|
||||||
|
"lucky",
|
||||||
|
"fat",
|
||||||
|
"giant",
|
||||||
|
"hungry",
|
||||||
|
"magical",
|
||||||
|
"superior",
|
||||||
|
"terrifying",
|
||||||
|
"horrifying",
|
||||||
|
"feared"
|
||||||
|
];
|
||||||
|
const subjects = ["Locals", "Elders", "Inscriptions", "Tipplers", "Legends", "Whispers", "Rumors", "Journeying folk", "Tales"];
|
||||||
|
const species = ["Ogre", "Troll", "Cyclops", "Giant", "Monster", "Beast", "Dragon", "Undead", "Ghoul", "Vampire", "Hag", "Banshee", "Bearded Devil", "Roc", "Hydra", "Warg"];
|
||||||
const modusOperandi = [
|
const modusOperandi = [
|
||||||
"steals their cattle",
|
"steals cattle at night",
|
||||||
"doesn't mind eating children",
|
"prefers eating children",
|
||||||
"doesn't mind of human flesh",
|
"doesn't mind of human flesh",
|
||||||
"keeps the region at bay",
|
"keeps the region at bay",
|
||||||
"eats their kids",
|
"eats kids whole",
|
||||||
"abducts young women"
|
"abducts young women",
|
||||||
|
"terrorizes the region",
|
||||||
|
"harasses travelers in the area",
|
||||||
|
"snatches people from homes",
|
||||||
|
"attacks anyone who dares to approach its lair",
|
||||||
|
"attacks unsuspecting victims"
|
||||||
];
|
];
|
||||||
|
|
||||||
while (quantity) {
|
while (quantity) {
|
||||||
|
|
@ -569,7 +608,7 @@ window.Markers = (function () {
|
||||||
const monster = ra(species);
|
const monster = ra(species);
|
||||||
const toponym = Names.getCulture(cells.culture[cell]);
|
const toponym = Names.getCulture(cells.culture[cell]);
|
||||||
const name = `${toponym} ${monster}`;
|
const name = `${toponym} ${monster}`;
|
||||||
const legend = `${ra(subjects)} tell tales of an old ${monster} who inhabits ${toponym} hills and ${ra(modusOperandi)}`;
|
const legend = `${ra(subjects)} speak of a ${ra(adjectives)} ${monster} who inhabits ${toponym} hills and ${ra(modusOperandi)}`;
|
||||||
notes.push({id, name, legend});
|
notes.push({id, name, legend});
|
||||||
quantity--;
|
quantity--;
|
||||||
}
|
}
|
||||||
|
|
@ -739,7 +778,7 @@ window.Markers = (function () {
|
||||||
let quantity = getQuantity(statues, 80, 1200, multiplier);
|
let quantity = getQuantity(statues, 80, 1200, multiplier);
|
||||||
if (!quantity) return;
|
if (!quantity) return;
|
||||||
|
|
||||||
const variants = ["Statue", "Obelisk", "Monument", "Column", "Monolith", "Pillar", "Megalith", "Stele", "Runestone"];
|
const variants = ["Statue", "Obelisk", "Monument", "Column", "Monolith", "Pillar", "Megalith", "Stele", "Runestone", "Sculpture", "Effigy", "Idol"];
|
||||||
const scripts = {
|
const scripts = {
|
||||||
cypriot: "𐠁𐠂𐠃𐠄𐠅𐠈𐠊𐠋𐠌𐠍𐠎𐠏𐠐𐠑𐠒𐠓𐠔𐠕𐠖𐠗𐠘𐠙𐠚𐠛𐠜𐠝𐠞𐠟𐠠𐠡𐠢𐠣𐠤𐠥𐠦𐠧𐠨𐠩𐠪𐠫𐠬𐠭𐠮𐠯𐠰𐠱𐠲𐠳𐠴𐠵𐠷𐠸𐠼𐠿 ",
|
cypriot: "𐠁𐠂𐠃𐠄𐠅𐠈𐠊𐠋𐠌𐠍𐠎𐠏𐠐𐠑𐠒𐠓𐠔𐠕𐠖𐠗𐠘𐠙𐠚𐠛𐠜𐠝𐠞𐠟𐠠𐠡𐠢𐠣𐠤𐠥𐠦𐠧𐠨𐠩𐠪𐠫𐠬𐠭𐠮𐠯𐠰𐠱𐠲𐠳𐠴𐠵𐠷𐠸𐠼𐠿 ",
|
||||||
geez: "ሀለሐመሠረሰቀበተኀነአከወዐዘየደገጠጰጸፀፈፐ ",
|
geez: "ሀለሐመሠረሰቀበተኀነአከወዐዘየደገጠጰጸፀፈፐ ",
|
||||||
|
|
@ -773,7 +812,7 @@ window.Markers = (function () {
|
||||||
let quantity = getQuantity(ruins, 80, 1200, multiplier);
|
let quantity = getQuantity(ruins, 80, 1200, multiplier);
|
||||||
if (!quantity) return;
|
if (!quantity) return;
|
||||||
|
|
||||||
const types = ["City", "Town", "Pyramid", "Fort"];
|
const types = ["City", "Town", "Settlement", "Pyramid", "Fort", "Stronghold", "Temple", "Sacred site", "Mausoleum", "Outpost", "Fortification", "Fortress", "Castle"];
|
||||||
|
|
||||||
while (quantity) {
|
while (quantity) {
|
||||||
const [cell] = extractAnyElement(ruins);
|
const [cell] = extractAnyElement(ruins);
|
||||||
|
|
@ -781,7 +820,7 @@ window.Markers = (function () {
|
||||||
|
|
||||||
const ruinType = ra(types);
|
const ruinType = ra(types);
|
||||||
const name = `Ruined ${ruinType}`;
|
const name = `Ruined ${ruinType}`;
|
||||||
const legend = `Ruins of an ancient ${ruinType.toLowerCase()}. A good place for a treasures hunt`;
|
const legend = `Ruins of an ancient ${ruinType.toLowerCase()}. Untold riches may lie within.`;
|
||||||
notes.push({id, name, legend});
|
notes.push({id, name, legend});
|
||||||
quantity--;
|
quantity--;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue