export const STORMWIND_STOCKADE_DUNGEON_ID = "stormwind-stockade"; export const BITE_SIZED_STOCKADES_DUNGEON_ID = "bite-sized-stormwind-stockade"; export const RANDOMIZED_BITE_SIZED_STOCKADES_DUNGEON_ID = "randomized-bite-sized-stormwind-stockade"; export const RANDOMIZED_BITE_SIZED_CONTENT_PACK_ID = "activity:randomized-bite-sized"; const DUNGEON_CONTENT_SOURCE_IDS: Readonly> = Object.freeze({ [BITE_SIZED_STOCKADES_DUNGEON_ID]: STORMWIND_STOCKADE_DUNGEON_ID, [RANDOMIZED_BITE_SIZED_STOCKADES_DUNGEON_ID]: STORMWIND_STOCKADE_DUNGEON_ID, }); export function isDerivedStockadesDungeonId(dungeonId: string): boolean { return dungeonId === BITE_SIZED_STOCKADES_DUNGEON_ID || dungeonId === RANDOMIZED_BITE_SIZED_STOCKADES_DUNGEON_ID; } /** Derived dungeon variants share the installed assets of their source dungeon. */ export function dungeonContentSourceId(dungeonId: string): string { return DUNGEON_CONTENT_SOURCE_IDS[dungeonId] ?? dungeonId; } export function dungeonContentPackId(dungeonId: string): string { if (dungeonId === RANDOMIZED_BITE_SIZED_STOCKADES_DUNGEON_ID) { return RANDOMIZED_BITE_SIZED_CONTENT_PACK_ID; } return `dungeon:${dungeonContentSourceId(dungeonId)}`; }