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:
Bastian Wagner
2026-08-21 20:00:04 +02:00
parent 74fc89dfe5
commit b8ee56ca1a
5 changed files with 101 additions and 101 deletions

View File

@@ -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',
}, },
]; ];

View File

@@ -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 Gefahrund kommt selten so zurück, wie er gegangen ist."', '"Beyond the gate, Graufurt\'s protection ends. Whoever heads south does so at their own riskand 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,

View File

@@ -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,
}, },

View File

@@ -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 () => {

View File

@@ -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,