feat(content): translate seeded items, locations, and reputation faction to English
Converts all German player-facing content in the API's seed files to English per the English Game Content Foundation glossary: item name/description, monster name, location name/description, all local-location POI/action content, and the border-guard reputation faction. Technical keys are unchanged.
This commit is contained in:
@@ -63,8 +63,8 @@ function item(
|
|||||||
export const ITEM_DEFINITIONS: SeedItemDefinition[] = [
|
export const ITEM_DEFINITIONS: SeedItemDefinition[] = [
|
||||||
item(
|
item(
|
||||||
'worn-short-sword',
|
'worn-short-sword',
|
||||||
'Abgenutztes Kurzschwert',
|
'Worn Shortsword',
|
||||||
'Die Klinge eines Rekruten, öfter geschliffen als geführt.',
|
"A recruit's blade, sharpened more often than it's been swung.",
|
||||||
ItemType.EQUIPMENT,
|
ItemType.EQUIPMENT,
|
||||||
EquipmentSlot.WEAPON,
|
EquipmentSlot.WEAPON,
|
||||||
ItemRarity.COMMON,
|
ItemRarity.COMMON,
|
||||||
@@ -72,8 +72,8 @@ export const ITEM_DEFINITIONS: SeedItemDefinition[] = [
|
|||||||
),
|
),
|
||||||
item(
|
item(
|
||||||
'bandit-blade',
|
'bandit-blade',
|
||||||
'Räuberklinge',
|
'Bandit Blade',
|
||||||
'Eine grob gezahnte Klinge, geschmiedet für schnelle Überfälle.',
|
'A roughly serrated blade, forged for quick raids.',
|
||||||
ItemType.EQUIPMENT,
|
ItemType.EQUIPMENT,
|
||||||
EquipmentSlot.WEAPON,
|
EquipmentSlot.WEAPON,
|
||||||
ItemRarity.COMMON,
|
ItemRarity.COMMON,
|
||||||
@@ -81,8 +81,8 @@ export const ITEM_DEFINITIONS: SeedItemDefinition[] = [
|
|||||||
),
|
),
|
||||||
item(
|
item(
|
||||||
'ash-blade',
|
'ash-blade',
|
||||||
'Aschenklinge',
|
'Ashen Blade',
|
||||||
'In der Glut der Aschenfelder gehärtet; die Schneide glimmt noch.',
|
'Tempered in the embers of the Ashen Fields; the edge still glows faintly.',
|
||||||
ItemType.EQUIPMENT,
|
ItemType.EQUIPMENT,
|
||||||
EquipmentSlot.WEAPON,
|
EquipmentSlot.WEAPON,
|
||||||
ItemRarity.RARE,
|
ItemRarity.RARE,
|
||||||
@@ -90,8 +90,8 @@ export const ITEM_DEFINITIONS: SeedItemDefinition[] = [
|
|||||||
),
|
),
|
||||||
item(
|
item(
|
||||||
'bandit-hood',
|
'bandit-hood',
|
||||||
'Räuberhaube',
|
'Bandit Hood',
|
||||||
'Vernarbtes Leder, das Gesicht und Absicht des Trägers verbirgt.',
|
"Scarred leather that hides both the wearer's face and their intent.",
|
||||||
ItemType.EQUIPMENT,
|
ItemType.EQUIPMENT,
|
||||||
EquipmentSlot.HEAD,
|
EquipmentSlot.HEAD,
|
||||||
ItemRarity.COMMON,
|
ItemRarity.COMMON,
|
||||||
@@ -99,8 +99,8 @@ export const ITEM_DEFINITIONS: SeedItemDefinition[] = [
|
|||||||
),
|
),
|
||||||
item(
|
item(
|
||||||
'reinforced-leather-jacket',
|
'reinforced-leather-jacket',
|
||||||
'Verstärkte Lederjacke',
|
'Reinforced Leather Jacket',
|
||||||
'Mit Eisenplatten benähtes Leder, schwer und verlässlich.',
|
'Leather sewn with iron plates, heavy and dependable.',
|
||||||
ItemType.EQUIPMENT,
|
ItemType.EQUIPMENT,
|
||||||
EquipmentSlot.CHEST,
|
EquipmentSlot.CHEST,
|
||||||
ItemRarity.RARE,
|
ItemRarity.RARE,
|
||||||
@@ -108,8 +108,8 @@ export const ITEM_DEFINITIONS: SeedItemDefinition[] = [
|
|||||||
),
|
),
|
||||||
item(
|
item(
|
||||||
'raider-gloves',
|
'raider-gloves',
|
||||||
'Plündererhandschuhe',
|
'Plunderer Gloves',
|
||||||
'Beschlagene Handschuhe, abgegriffen von fremdem Gut.',
|
"Studded gloves, worn smooth from handling other people's belongings.",
|
||||||
ItemType.EQUIPMENT,
|
ItemType.EQUIPMENT,
|
||||||
EquipmentSlot.HANDS,
|
EquipmentSlot.HANDS,
|
||||||
ItemRarity.COMMON,
|
ItemRarity.COMMON,
|
||||||
@@ -117,8 +117,8 @@ export const ITEM_DEFINITIONS: SeedItemDefinition[] = [
|
|||||||
),
|
),
|
||||||
item(
|
item(
|
||||||
'guardsman-legs',
|
'guardsman-legs',
|
||||||
'Wachmannsbeinkleid',
|
"Watchman's Leggings",
|
||||||
'Beinzeug der Grenzwacht, an den Knien geflickt.',
|
'Leg armor of the Border Watch, patched at the knees.',
|
||||||
ItemType.EQUIPMENT,
|
ItemType.EQUIPMENT,
|
||||||
EquipmentSlot.LEGS,
|
EquipmentSlot.LEGS,
|
||||||
ItemRarity.RARE,
|
ItemRarity.RARE,
|
||||||
@@ -126,8 +126,8 @@ export const ITEM_DEFINITIONS: SeedItemDefinition[] = [
|
|||||||
),
|
),
|
||||||
item(
|
item(
|
||||||
'ash-boots',
|
'ash-boots',
|
||||||
'Aschenstiefel',
|
'Ashen Boots',
|
||||||
'Stiefel, die durch glimmende Felder getragen wurden und blieben.',
|
'Boots that walked through smoldering fields and never quite left them behind.',
|
||||||
ItemType.EQUIPMENT,
|
ItemType.EQUIPMENT,
|
||||||
EquipmentSlot.FEET,
|
EquipmentSlot.FEET,
|
||||||
ItemRarity.RARE,
|
ItemRarity.RARE,
|
||||||
@@ -135,8 +135,8 @@ export const ITEM_DEFINITIONS: SeedItemDefinition[] = [
|
|||||||
),
|
),
|
||||||
item(
|
item(
|
||||||
'borderwatch-sigil',
|
'borderwatch-sigil',
|
||||||
'Zeichen der Grenzwacht',
|
'Mark of the Border Watch',
|
||||||
'Das Wappen eines Turms, den es nicht mehr gibt.',
|
'The crest of a watchtower that no longer stands.',
|
||||||
ItemType.EQUIPMENT,
|
ItemType.EQUIPMENT,
|
||||||
EquipmentSlot.AMULET,
|
EquipmentSlot.AMULET,
|
||||||
ItemRarity.RARE,
|
ItemRarity.RARE,
|
||||||
@@ -144,37 +144,37 @@ export const ITEM_DEFINITIONS: SeedItemDefinition[] = [
|
|||||||
),
|
),
|
||||||
item(
|
item(
|
||||||
'burned-captain-pendant',
|
'burned-captain-pendant',
|
||||||
'Anhänger des verbrannten Hauptmanns',
|
"Charred Captain's Pendant",
|
||||||
'Ein Schädel aus Schlacke, in dem die Glut nie erlosch.',
|
'A skull cast in slag, its embers never quite gone out.',
|
||||||
ItemType.EQUIPMENT,
|
ItemType.EQUIPMENT,
|
||||||
EquipmentSlot.AMULET,
|
EquipmentSlot.AMULET,
|
||||||
ItemRarity.EPIC,
|
ItemRarity.EPIC,
|
||||||
{ bonusAttack: 3, bonusHp: 15, bonusArmor: 2 },
|
{ bonusAttack: 3, bonusHp: 15, bonusArmor: 2 },
|
||||||
),
|
),
|
||||||
// Seeded as content only. Slice 0.4 implements no consumable use, and the
|
// Seeded as content only. Slice 0.4 implements no consumable use, and the
|
||||||
// Straßenräuber loot entry for it is deliberately deferred (spec §16).
|
// Road Bandit loot entry for it is deliberately deferred (spec §16).
|
||||||
item(
|
item(
|
||||||
'small-healing-potion',
|
'small-healing-potion',
|
||||||
'Kleiner Heiltrank',
|
'Small Healing Potion',
|
||||||
'Ein bitterer Sud, der Wunden für einen Atemzug vergessen lässt.',
|
'A bitter draught that makes wounds forgettable, if only for a breath.',
|
||||||
ItemType.CONSUMABLE,
|
ItemType.CONSUMABLE,
|
||||||
null,
|
null,
|
||||||
ItemRarity.COMMON,
|
ItemRarity.COMMON,
|
||||||
),
|
),
|
||||||
// A Trade Good (spec §17): turned in to the Grenzwacht for Silver and
|
// A Trade Good (spec §17): turned in to the Border Watch for Silver and
|
||||||
// reputation rather than crafted with.
|
// reputation rather than crafted with.
|
||||||
item(
|
item(
|
||||||
'ash-pelt',
|
'ash-pelt',
|
||||||
'Aschenfell',
|
'Ash Pelt',
|
||||||
'Versengtes Fell, zäh wie Leder und grau von Ascheflug.',
|
'Singed pelt, tough as leather and grey with drifting ash.',
|
||||||
ItemType.TRADE_GOOD,
|
ItemType.TRADE_GOOD,
|
||||||
null,
|
null,
|
||||||
ItemRarity.COMMON,
|
ItemRarity.COMMON,
|
||||||
),
|
),
|
||||||
item(
|
item(
|
||||||
'bandit-insignia',
|
'bandit-insignia',
|
||||||
'Räuberabzeichen',
|
'Bandit Insignia',
|
||||||
'Ein grob geprägtes Zeichen, das einen Straßenräuber als Mitglied seiner Bande auswies.',
|
'A roughly stamped token marking a road bandit as one of their band.',
|
||||||
ItemType.TROPHY,
|
ItemType.TROPHY,
|
||||||
null,
|
null,
|
||||||
ItemRarity.COMMON,
|
ItemRarity.COMMON,
|
||||||
@@ -182,11 +182,11 @@ export const ITEM_DEFINITIONS: SeedItemDefinition[] = [
|
|||||||
];
|
];
|
||||||
|
|
||||||
export const LOOT_TABLES = [
|
export const LOOT_TABLES = [
|
||||||
{ id: ASH_RAT_LOOT_TABLE_ID, key: 'ash-rat-loot', name: 'Aschenratte Beute' },
|
{ id: ASH_RAT_LOOT_TABLE_ID, key: 'ash-rat-loot', name: 'Ash Rat Loot' },
|
||||||
{
|
{
|
||||||
id: ROAD_BANDIT_LOOT_TABLE_ID,
|
id: ROAD_BANDIT_LOOT_TABLE_ID,
|
||||||
key: 'road-bandit-loot',
|
key: 'road-bandit-loot',
|
||||||
name: 'Straßenräuber Beute',
|
name: 'Road Bandit Loot',
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|||||||
@@ -25,11 +25,11 @@ export interface LocalLocationContent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export const BURNED_ROAD_LOCAL_CONTENT: LocalLocationContent = {
|
export const BURNED_ROAD_LOCAL_CONTENT: LocalLocationContent = {
|
||||||
regionName: 'Aschenfelder',
|
regionName: 'Ashen Fields',
|
||||||
regionTierLabel: 'Gebiet 1',
|
regionTierLabel: 'Tier 1',
|
||||||
locationType: 'HUNTING_GROUND',
|
locationType: 'HUNTING_GROUND',
|
||||||
localDescription:
|
localDescription:
|
||||||
'Ein alter Handelsweg, der durch Feuer und Krieg in Asche gelegt wurde. Verbrannte Karren, zerbrochene Waffen und verstummte Schreie säumen den Pfad in die Aschenfelder.',
|
'An old trade road, burned to ash by fire and war. Charred carts, broken weapons, and silenced cries line the path into the Ashen Fields.',
|
||||||
localArtworkPath: '/images/backgrounds/Aschestrasse.png',
|
localArtworkPath: '/images/backgrounds/Aschestrasse.png',
|
||||||
// Anchored to painted detail in `Aschestrasse.png`: the burning horizon down
|
// Anchored to painted detail in `Aschestrasse.png`: the burning horizon down
|
||||||
// the road, the standing gravestone on the left verge, the cracked stones in
|
// the road, the standing gravestone on the left verge, the cracked stones in
|
||||||
@@ -37,8 +37,8 @@ export const BURNED_ROAD_LOCAL_CONTENT: LocalLocationContent = {
|
|||||||
localPointsOfInterest: [
|
localPointsOfInterest: [
|
||||||
{
|
{
|
||||||
key: 'hunt-area',
|
key: 'hunt-area',
|
||||||
title: 'Jagdgebiet',
|
title: 'Hunting Ground',
|
||||||
actionLabel: 'Jagd beginnen',
|
actionLabel: 'Begin Hunt',
|
||||||
type: 'HUNT',
|
type: 'HUNT',
|
||||||
iconKey: 'hunt',
|
iconKey: 'hunt',
|
||||||
xPercent: 57,
|
xPercent: 57,
|
||||||
@@ -47,57 +47,57 @@ export const BURNED_ROAD_LOCAL_CONTENT: LocalLocationContent = {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: 'inspect-tracks',
|
key: 'inspect-tracks',
|
||||||
title: 'Verdächtige Spuren',
|
title: 'Suspicious Tracks',
|
||||||
actionLabel: 'Untersuchen',
|
actionLabel: 'Investigate',
|
||||||
type: 'INVESTIGATE',
|
type: 'INVESTIGATE',
|
||||||
iconKey: 'investigate',
|
iconKey: 'investigate',
|
||||||
xPercent: 40,
|
xPercent: 40,
|
||||||
yPercent: 82,
|
yPercent: 82,
|
||||||
enabled: true,
|
enabled: true,
|
||||||
resultTitle: 'Verdächtige Spuren',
|
resultTitle: 'Suspicious Tracks',
|
||||||
resultText:
|
resultText:
|
||||||
'Zwischen Asche und zerbrochenen Steinen erkennst du mehrere frische Stiefelabdrücke. Sie führen nach Osten, in Richtung des verlassenen Wachtpostens.',
|
'Among the ash and broken stones you make out several fresh bootprints. They lead east, toward the abandoned watchpost.',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: 'search-abandoned-wagon',
|
key: 'search-abandoned-wagon',
|
||||||
title: 'Verlassener Wagen',
|
title: 'Abandoned Wagon',
|
||||||
actionLabel: 'Durchsuchen',
|
actionLabel: 'Search',
|
||||||
type: 'SEARCH',
|
type: 'SEARCH',
|
||||||
iconKey: 'search',
|
iconKey: 'search',
|
||||||
xPercent: 86,
|
xPercent: 86,
|
||||||
yPercent: 70,
|
yPercent: 70,
|
||||||
enabled: true,
|
enabled: true,
|
||||||
resultTitle: 'Verlassener Wagen',
|
resultTitle: 'Abandoned Wagon',
|
||||||
resultText:
|
resultText:
|
||||||
'Der Wagen wurde gründlich geplündert. Zwischen verbrannten Brettern findest du nur leere Kisten und Spuren eines hastigen Aufbruchs.',
|
'The wagon has been thoroughly looted. Among the charred planks you find only empty crates and signs of a hasty departure.',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: 'wounded-scout',
|
key: 'wounded-scout',
|
||||||
title: 'Verwundeter Kundschafter',
|
title: 'Wounded Scout',
|
||||||
actionLabel: 'Sprechen',
|
actionLabel: 'Talk',
|
||||||
type: 'NPC',
|
type: 'NPC',
|
||||||
iconKey: 'speak',
|
iconKey: 'speak',
|
||||||
xPercent: 17,
|
xPercent: 17,
|
||||||
yPercent: 62,
|
yPercent: 62,
|
||||||
enabled: true,
|
enabled: true,
|
||||||
resultTitle: 'Verwundeter Kundschafter',
|
resultTitle: 'Wounded Scout',
|
||||||
resultText:
|
resultText:
|
||||||
'„Die Straße ist nicht mehr sicher. Die Plünderer kommen aus Richtung des alten Wachtpostens. Wenn du weitergehst, halte die Augen offen."',
|
'"The road isn\'t safe anymore. The raiders are coming from the direction of the old watchpost. If you keep going, keep your eyes open."',
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
localPrimaryActions: [
|
localPrimaryActions: [
|
||||||
{
|
{
|
||||||
key: 'start-hunt',
|
key: 'start-hunt',
|
||||||
label: 'Jagd beginnen',
|
label: 'Begin Hunt',
|
||||||
description: 'Im Gebiet jagen',
|
description: 'Hunt in this area',
|
||||||
type: 'HUNT',
|
type: 'HUNT',
|
||||||
iconKey: 'hunt',
|
iconKey: 'hunt',
|
||||||
enabled: true,
|
enabled: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: 'investigate-tracks',
|
key: 'investigate-tracks',
|
||||||
label: 'Spuren untersuchen',
|
label: 'Investigate tracks',
|
||||||
description: 'Hinweise finden',
|
description: 'Find clues',
|
||||||
type: 'INVESTIGATE',
|
type: 'INVESTIGATE',
|
||||||
iconKey: 'investigate',
|
iconKey: 'investigate',
|
||||||
enabled: true,
|
enabled: true,
|
||||||
@@ -105,8 +105,8 @@ export const BURNED_ROAD_LOCAL_CONTENT: LocalLocationContent = {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: 'search-surroundings',
|
key: 'search-surroundings',
|
||||||
label: 'Umgebung durchsuchen',
|
label: 'Search surroundings',
|
||||||
description: 'Beute finden',
|
description: 'Find loot',
|
||||||
type: 'SEARCH',
|
type: 'SEARCH',
|
||||||
iconKey: 'search',
|
iconKey: 'search',
|
||||||
enabled: true,
|
enabled: true,
|
||||||
@@ -114,8 +114,8 @@ export const BURNED_ROAD_LOCAL_CONTENT: LocalLocationContent = {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: 'open-map',
|
key: 'open-map',
|
||||||
label: 'Zur Karte',
|
label: 'To Map',
|
||||||
description: 'Gebiet wechseln',
|
description: 'Change area',
|
||||||
type: 'MAP',
|
type: 'MAP',
|
||||||
iconKey: 'map',
|
iconKey: 'map',
|
||||||
enabled: true,
|
enabled: true,
|
||||||
@@ -132,49 +132,49 @@ export const BURNED_ROAD_LOCAL_CONTENT: LocalLocationContent = {
|
|||||||
// so a kill here yields neither. Silver reaches the player through turn-ins
|
// so a kill here yields neither. Silver reaches the player through turn-ins
|
||||||
// instead. Leaving either entry in place would break this list's own rule.
|
// instead. Leaving either entry in place would break this list's own rule.
|
||||||
localRewardPreview: [
|
localRewardPreview: [
|
||||||
{ key: 'equipment', label: 'Ausrüstung', iconKey: 'equipment' },
|
{ key: 'equipment', label: 'Equipment', iconKey: 'equipment' },
|
||||||
{ key: 'material', label: 'Material', iconKey: 'material' },
|
{ key: 'material', label: 'Material', iconKey: 'material' },
|
||||||
],
|
],
|
||||||
};
|
};
|
||||||
|
|
||||||
export const SOUTH_GATE_LOCAL_CONTENT: LocalLocationContent = {
|
export const SOUTH_GATE_LOCAL_CONTENT: LocalLocationContent = {
|
||||||
regionName: 'Aschenfelder',
|
regionName: 'Ashen Fields',
|
||||||
regionTierLabel: 'Gebiet 1',
|
regionTierLabel: 'Tier 1',
|
||||||
locationType: 'TRANSITION',
|
locationType: 'TRANSITION',
|
||||||
localDescription:
|
localDescription:
|
||||||
'Am schwarzen Südtor endet der Schutz Graufurts. Hinter den Wachtfeuern beginnt die stille Weite der Aschenfelder.',
|
"At the black South Gate, Graufurt's protection ends. Beyond the watch-fires begins the silent expanse of the Ashen Fields.",
|
||||||
localArtworkPath: '/images/backgrounds/Suedtor.png',
|
localArtworkPath: '/images/backgrounds/Suedtor.png',
|
||||||
localPointsOfInterest: [
|
localPointsOfInterest: [
|
||||||
{
|
{
|
||||||
key: 'gate-notice',
|
key: 'gate-notice',
|
||||||
title: 'Aushangtafel',
|
title: 'Notice Board',
|
||||||
actionLabel: 'Lesen',
|
actionLabel: 'Read',
|
||||||
type: 'INVESTIGATE',
|
type: 'INVESTIGATE',
|
||||||
iconKey: 'investigate',
|
iconKey: 'investigate',
|
||||||
xPercent: 22,
|
xPercent: 22,
|
||||||
yPercent: 42,
|
yPercent: 42,
|
||||||
enabled: true,
|
enabled: true,
|
||||||
resultTitle: 'Aushangtafel',
|
resultTitle: 'Notice Board',
|
||||||
resultText:
|
resultText:
|
||||||
'Verwitterte Anschläge flattern im Wind. Ein frischer Zettel warnt vor Plünderern auf der Verbrannten Straße und verspricht Silber für jeden erlegten Räuber.',
|
'Weathered notices flutter in the wind. A fresh one warns of raiders on the Burned Road and promises silver for every bandit killed.',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: 'gate-watch',
|
key: 'gate-watch',
|
||||||
title: 'Torwache',
|
title: 'Gate Watch',
|
||||||
actionLabel: 'Sprechen',
|
actionLabel: 'Talk',
|
||||||
type: 'NPC',
|
type: 'NPC',
|
||||||
iconKey: 'speak',
|
iconKey: 'speak',
|
||||||
xPercent: 45,
|
xPercent: 45,
|
||||||
yPercent: 52,
|
yPercent: 52,
|
||||||
enabled: true,
|
enabled: true,
|
||||||
resultTitle: 'Torwache',
|
resultTitle: 'Gate Watch',
|
||||||
resultText:
|
resultText:
|
||||||
'„Hinter dem Tor endet Graufurts Schutz. Wer nach Süden geht, geht auf eigene Gefahr — und kommt selten so zurück, wie er gegangen ist."',
|
'"Beyond the gate, Graufurt\'s protection ends. Whoever heads south does so at their own risk — and rarely comes back the way they left."',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: 'south-road',
|
key: 'south-road',
|
||||||
title: 'Straße nach Süden',
|
title: 'Road South',
|
||||||
actionLabel: 'Zur Karte',
|
actionLabel: 'To Map',
|
||||||
type: 'MAP',
|
type: 'MAP',
|
||||||
iconKey: 'map',
|
iconKey: 'map',
|
||||||
xPercent: 66,
|
xPercent: 66,
|
||||||
@@ -185,8 +185,8 @@ export const SOUTH_GATE_LOCAL_CONTENT: LocalLocationContent = {
|
|||||||
localPrimaryActions: [
|
localPrimaryActions: [
|
||||||
{
|
{
|
||||||
key: 'talk-to-watch',
|
key: 'talk-to-watch',
|
||||||
label: 'Wache ansprechen',
|
label: 'Talk to the watch',
|
||||||
description: 'Lage erfragen',
|
description: 'Ask about the situation',
|
||||||
type: 'NPC',
|
type: 'NPC',
|
||||||
iconKey: 'speak',
|
iconKey: 'speak',
|
||||||
enabled: true,
|
enabled: true,
|
||||||
@@ -194,8 +194,8 @@ export const SOUTH_GATE_LOCAL_CONTENT: LocalLocationContent = {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: 'read-notice',
|
key: 'read-notice',
|
||||||
label: 'Aushang lesen',
|
label: 'Read the notice',
|
||||||
description: 'Hinweise finden',
|
description: 'Find clues',
|
||||||
type: 'INVESTIGATE',
|
type: 'INVESTIGATE',
|
||||||
iconKey: 'investigate',
|
iconKey: 'investigate',
|
||||||
enabled: true,
|
enabled: true,
|
||||||
@@ -203,8 +203,8 @@ export const SOUTH_GATE_LOCAL_CONTENT: LocalLocationContent = {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: 'open-map',
|
key: 'open-map',
|
||||||
label: 'Zur Karte',
|
label: 'To Map',
|
||||||
description: 'Gebiet wechseln',
|
description: 'Change area',
|
||||||
type: 'MAP',
|
type: 'MAP',
|
||||||
iconKey: 'map',
|
iconKey: 'map',
|
||||||
enabled: true,
|
enabled: true,
|
||||||
|
|||||||
@@ -16,9 +16,9 @@ export const REPUTATION_FACTIONS: SeedReputationFaction[] = [
|
|||||||
{
|
{
|
||||||
id: BORDER_GUARD_FACTION_ID,
|
id: BORDER_GUARD_FACTION_ID,
|
||||||
key: 'border-guard',
|
key: 'border-guard',
|
||||||
name: 'Grenzwacht',
|
name: 'Border Watch',
|
||||||
description:
|
description:
|
||||||
'Die letzten organisierten Wächter der Aschenfelder, die verbliebene Handelsrouten und Außenposten schützen.',
|
'The last organized watch of the Ashen Fields, guarding what remains of the trade routes and outposts.',
|
||||||
regionKey: 'ashen-fields',
|
regionKey: 'ashen-fields',
|
||||||
enabled: true,
|
enabled: true,
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -181,7 +181,7 @@ describe('seedVisibleVerticalSlice', () => {
|
|||||||
expect.arrayContaining([
|
expect.arrayContaining([
|
||||||
expect.objectContaining({
|
expect.objectContaining({
|
||||||
key: 'ash-rat',
|
key: 'ash-rat',
|
||||||
name: 'Aschenratte',
|
name: 'Ash Rat',
|
||||||
level: 1,
|
level: 1,
|
||||||
maxHp: 45,
|
maxHp: 45,
|
||||||
attack: 5,
|
attack: 5,
|
||||||
@@ -192,7 +192,7 @@ describe('seedVisibleVerticalSlice', () => {
|
|||||||
}),
|
}),
|
||||||
expect.objectContaining({
|
expect.objectContaining({
|
||||||
key: 'road-bandit',
|
key: 'road-bandit',
|
||||||
name: 'Straßenräuber',
|
name: 'Road Bandit',
|
||||||
level: 2,
|
level: 2,
|
||||||
maxHp: 75,
|
maxHp: 75,
|
||||||
attack: 9,
|
attack: 9,
|
||||||
@@ -203,7 +203,7 @@ describe('seedVisibleVerticalSlice', () => {
|
|||||||
}),
|
}),
|
||||||
expect.objectContaining({
|
expect.objectContaining({
|
||||||
key: 'wild-road-dog',
|
key: 'wild-road-dog',
|
||||||
name: 'Verwilderter Straßenhund',
|
name: 'Feral Road Hound',
|
||||||
level: 1,
|
level: 1,
|
||||||
silverMin: 0,
|
silverMin: 0,
|
||||||
silverMax: 0,
|
silverMax: 0,
|
||||||
@@ -212,7 +212,7 @@ describe('seedVisibleVerticalSlice', () => {
|
|||||||
}),
|
}),
|
||||||
expect.objectContaining({
|
expect.objectContaining({
|
||||||
key: 'charred-looter',
|
key: 'charred-looter',
|
||||||
name: 'Verkohlter Plünderer',
|
name: 'Charred Raider',
|
||||||
level: 2,
|
level: 2,
|
||||||
silverMin: 0,
|
silverMin: 0,
|
||||||
silverMax: 0,
|
silverMax: 0,
|
||||||
@@ -268,14 +268,14 @@ describe('seedVisibleVerticalSlice', () => {
|
|||||||
|
|
||||||
expect(burnedRoad).toEqual(
|
expect(burnedRoad).toEqual(
|
||||||
expect.objectContaining({
|
expect.objectContaining({
|
||||||
regionName: 'Aschenfelder',
|
regionName: 'Ashen Fields',
|
||||||
regionTierLabel: 'Gebiet 1',
|
regionTierLabel: 'Tier 1',
|
||||||
locationType: 'HUNTING_GROUND',
|
locationType: 'HUNTING_GROUND',
|
||||||
localArtworkPath: '/images/backgrounds/Aschestrasse.png',
|
localArtworkPath: '/images/backgrounds/Aschestrasse.png',
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
expect(burnedRoad.localDescription).toContain(
|
expect(burnedRoad.localDescription).toContain(
|
||||||
'Ein alter Handelsweg, der durch Feuer und Krieg in Asche gelegt wurde.',
|
'An old trade road, burned to ash by fire and war.',
|
||||||
);
|
);
|
||||||
|
|
||||||
const pointsOfInterest = burnedRoad.localPointsOfInterest as {
|
const pointsOfInterest = burnedRoad.localPointsOfInterest as {
|
||||||
@@ -299,10 +299,10 @@ describe('seedVisibleVerticalSlice', () => {
|
|||||||
label: string;
|
label: string;
|
||||||
}[];
|
}[];
|
||||||
expect(primaryActions.map((action) => action.label)).toEqual([
|
expect(primaryActions.map((action) => action.label)).toEqual([
|
||||||
'Jagd beginnen',
|
'Begin Hunt',
|
||||||
'Spuren untersuchen',
|
'Investigate tracks',
|
||||||
'Umgebung durchsuchen',
|
'Search surroundings',
|
||||||
'Zur Karte',
|
'To Map',
|
||||||
]);
|
]);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -364,7 +364,7 @@ describe('seedVisibleVerticalSlice', () => {
|
|||||||
expect.objectContaining({
|
expect.objectContaining({
|
||||||
id: persistedSouthGateId,
|
id: persistedSouthGateId,
|
||||||
key: 'south-gate',
|
key: 'south-gate',
|
||||||
name: 'Südtor von Graufurt',
|
name: 'Graufurt South Gate',
|
||||||
}),
|
}),
|
||||||
expect.objectContaining({
|
expect.objectContaining({
|
||||||
id: BURNED_ROAD_ID,
|
id: BURNED_ROAD_ID,
|
||||||
@@ -420,7 +420,7 @@ describe('seedVisibleVerticalSlice', () => {
|
|||||||
expect.arrayContaining([
|
expect.arrayContaining([
|
||||||
expect.objectContaining({
|
expect.objectContaining({
|
||||||
key: 'bandit-blade',
|
key: 'bandit-blade',
|
||||||
name: 'Räuberklinge',
|
name: 'Bandit Blade',
|
||||||
type: 'EQUIPMENT',
|
type: 'EQUIPMENT',
|
||||||
equipmentSlot: 'WEAPON',
|
equipmentSlot: 'WEAPON',
|
||||||
rarity: 'COMMON',
|
rarity: 'COMMON',
|
||||||
@@ -431,13 +431,13 @@ describe('seedVisibleVerticalSlice', () => {
|
|||||||
}),
|
}),
|
||||||
expect.objectContaining({
|
expect.objectContaining({
|
||||||
key: 'ash-pelt',
|
key: 'ash-pelt',
|
||||||
name: 'Aschenfell',
|
name: 'Ash Pelt',
|
||||||
type: 'TRADE_GOOD',
|
type: 'TRADE_GOOD',
|
||||||
equipmentSlot: null,
|
equipmentSlot: null,
|
||||||
}),
|
}),
|
||||||
expect.objectContaining({
|
expect.objectContaining({
|
||||||
key: 'bandit-insignia',
|
key: 'bandit-insignia',
|
||||||
name: 'Räuberabzeichen',
|
name: 'Bandit Insignia',
|
||||||
type: 'TROPHY',
|
type: 'TROPHY',
|
||||||
equipmentSlot: null,
|
equipmentSlot: null,
|
||||||
}),
|
}),
|
||||||
@@ -628,7 +628,7 @@ describe('seedVisibleVerticalSlice', () => {
|
|||||||
.getRepository(ReputationFaction)
|
.getRepository(ReputationFaction)
|
||||||
.findOneBy({ key: 'border-guard' });
|
.findOneBy({ key: 'border-guard' });
|
||||||
|
|
||||||
expect(faction).toMatchObject({ name: 'Grenzwacht', enabled: true });
|
expect(faction).toMatchObject({ name: 'Border Watch', enabled: true });
|
||||||
});
|
});
|
||||||
|
|
||||||
it('seeds both turn-in definitions', async () => {
|
it('seeds both turn-in definitions', async () => {
|
||||||
|
|||||||
@@ -62,9 +62,9 @@ export async function seedVisibleVerticalSlice(
|
|||||||
{
|
{
|
||||||
id: SOUTH_GATE_ID,
|
id: SOUTH_GATE_ID,
|
||||||
key: 'south-gate',
|
key: 'south-gate',
|
||||||
name: 'Südtor von Graufurt',
|
name: 'Graufurt South Gate',
|
||||||
description:
|
description:
|
||||||
'Am schwarzen Südtor endet der Schutz Graufurts. Hinter den Wachtfeuern beginnt die stille Weite der Aschenfelder.',
|
"At the black South Gate, Graufurt's protection ends. Beyond the watch-fires begins the silent expanse of the Ashen Fields.",
|
||||||
regionKey: 'ashen-fields',
|
regionKey: 'ashen-fields',
|
||||||
minRecommendedLevel: 1,
|
minRecommendedLevel: 1,
|
||||||
maxRecommendedLevel: 1,
|
maxRecommendedLevel: 1,
|
||||||
@@ -77,9 +77,9 @@ export async function seedVisibleVerticalSlice(
|
|||||||
{
|
{
|
||||||
id: BURNED_ROAD_ID,
|
id: BURNED_ROAD_ID,
|
||||||
key: 'burned-road',
|
key: 'burned-road',
|
||||||
name: 'Verbrannte Straße',
|
name: 'Burned Road',
|
||||||
description:
|
description:
|
||||||
'Die alte Handelsstraße führt durch verkohlte Felder. Zwischen Asche und zerbrochenen Wagen warten die ersten Gefahren.',
|
'The old trade road cuts through charred fields. Among the ash and broken wagons, the first dangers wait.',
|
||||||
regionKey: 'ashen-fields',
|
regionKey: 'ashen-fields',
|
||||||
minRecommendedLevel: 1,
|
minRecommendedLevel: 1,
|
||||||
maxRecommendedLevel: 2,
|
maxRecommendedLevel: 2,
|
||||||
@@ -143,7 +143,7 @@ export async function seedVisibleVerticalSlice(
|
|||||||
{
|
{
|
||||||
id: ASH_RAT_MONSTER_ID,
|
id: ASH_RAT_MONSTER_ID,
|
||||||
key: 'ash-rat',
|
key: 'ash-rat',
|
||||||
name: 'Aschenratte',
|
name: 'Ash Rat',
|
||||||
level: 1,
|
level: 1,
|
||||||
maxHp: 45,
|
maxHp: 45,
|
||||||
attack: 5,
|
attack: 5,
|
||||||
@@ -157,7 +157,7 @@ export async function seedVisibleVerticalSlice(
|
|||||||
{
|
{
|
||||||
id: WILD_ROAD_DOG_MONSTER_ID,
|
id: WILD_ROAD_DOG_MONSTER_ID,
|
||||||
key: 'wild-road-dog',
|
key: 'wild-road-dog',
|
||||||
name: 'Verwilderter Straßenhund',
|
name: 'Feral Road Hound',
|
||||||
level: 1,
|
level: 1,
|
||||||
maxHp: 55,
|
maxHp: 55,
|
||||||
attack: 7,
|
attack: 7,
|
||||||
@@ -173,7 +173,7 @@ export async function seedVisibleVerticalSlice(
|
|||||||
{
|
{
|
||||||
id: ROAD_BANDIT_MONSTER_ID,
|
id: ROAD_BANDIT_MONSTER_ID,
|
||||||
key: 'road-bandit',
|
key: 'road-bandit',
|
||||||
name: 'Straßenräuber',
|
name: 'Road Bandit',
|
||||||
level: 2,
|
level: 2,
|
||||||
maxHp: 75,
|
maxHp: 75,
|
||||||
attack: 9,
|
attack: 9,
|
||||||
@@ -187,7 +187,7 @@ export async function seedVisibleVerticalSlice(
|
|||||||
{
|
{
|
||||||
id: CHARRED_LOOTER_MONSTER_ID,
|
id: CHARRED_LOOTER_MONSTER_ID,
|
||||||
key: 'charred-looter',
|
key: 'charred-looter',
|
||||||
name: 'Verkohlter Plünderer',
|
name: 'Charred Raider',
|
||||||
level: 2,
|
level: 2,
|
||||||
maxHp: 85,
|
maxHp: 85,
|
||||||
attack: 11,
|
attack: 11,
|
||||||
|
|||||||
Reference in New Issue
Block a user