coh-content-db-homecoming 2.0.0-rc.9 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (204) hide show
  1. package/.github/workflows/build.yml +1 -1
  2. package/CHANGELOG.md +14 -1
  3. package/README.md +32 -15
  4. package/dist/bundle.head.json +1 -1
  5. package/dist/bundle.json +1 -1
  6. package/dist/coh-content-db-homecoming.js +1421 -187
  7. package/dist/coh-content-db-homecoming.js.map +1 -1
  8. package/dist/coh-content-db-homecoming.mjs +1422 -188
  9. package/dist/coh-content-db-homecoming.mjs.map +1 -1
  10. package/jest.config.mjs +4 -0
  11. package/package.json +18 -18
  12. package/src/main/resources/images/badges/accolade/mazebreaker.png +0 -0
  13. package/src/main/resources/images/badges/accomplishment/brass-tax.png +0 -0
  14. package/src/main/resources/images/badges/accomplishment/business-savvy.png +0 -0
  15. package/src/main/resources/images/badges/accomplishment/chromatic-combatant.png +0 -0
  16. package/src/main/resources/images/badges/accomplishment/front-person.png +0 -0
  17. package/src/main/resources/images/badges/accomplishment/generational-trauma.png +0 -0
  18. package/src/main/resources/images/badges/accomplishment/heart-of-gold.png +0 -0
  19. package/src/main/resources/images/badges/accomplishment/justified-ends.png +0 -0
  20. package/src/main/resources/images/badges/accomplishment/psychopomp.png +0 -0
  21. package/src/main/resources/images/badges/accomplishment/staring-into-the-abyss.png +0 -0
  22. package/src/main/resources/images/badges/accomplishment/tested-by-combat.png +0 -0
  23. package/src/main/resources/images/badges/accomplishment/thicker-than-water.png +0 -0
  24. package/src/main/resources/images/badges/accomplishment/truth-seeker.png +0 -0
  25. package/src/main/resources/images/badges/accomplishment/uncomfortable-truths.png +0 -0
  26. package/src/main/resources/images/badges/achievement/master-of-zoes-task-force.png +0 -0
  27. package/src/main/resources/images/badges/achievement/tf-zoe.png +0 -0
  28. package/src/main/resources/images/badges/achievement/variety-act-h.png +0 -0
  29. package/src/main/resources/images/badges/achievement/variety-act-v.png +0 -0
  30. package/src/main/resources/images/badges/defeat/mutated-marauder.png +0 -0
  31. package/src/main/resources/images/badges/defeat/peacekeeper.png +0 -0
  32. package/src/main/resources/images/badges/defeat/two-birds-one-stone.png +0 -0
  33. package/src/main/resources/images/badges/event/home-for-the-holidays.png +0 -0
  34. package/src/main/resources/images/badges/event/hypothermia.png +0 -0
  35. package/src/main/resources/images/badges/event/license-to-chill.png +0 -0
  36. package/src/main/ts/badge/accolade/_accolade-badges.ts +4 -0
  37. package/src/main/ts/badge/accolade/atlas-tour-guide.ts +2 -2
  38. package/src/main/ts/badge/accolade/between-realities.ts +1 -1
  39. package/src/main/ts/badge/accolade/mazebreaker.ts +23 -0
  40. package/src/main/ts/badge/accolade/protector-of-paragon-city.ts +2 -2
  41. package/src/main/ts/badge/accolade/the-prettiest-one.ts +33 -0
  42. package/src/main/ts/badge/accolade/walked-down-memory-lane.ts +2 -2
  43. package/src/main/ts/badge/accomplishment/_accomplishment-badges.ts +26 -0
  44. package/src/main/ts/badge/accomplishment/brass-tax.ts +20 -0
  45. package/src/main/ts/badge/accomplishment/business-savvy.ts +19 -0
  46. package/src/main/ts/badge/accomplishment/chromatic-combatant.ts +17 -0
  47. package/src/main/ts/badge/accomplishment/front-person.ts +19 -0
  48. package/src/main/ts/badge/accomplishment/generational-trauma.ts +21 -0
  49. package/src/main/ts/badge/accomplishment/heart-of-gold.ts +19 -0
  50. package/src/main/ts/badge/accomplishment/justified-ends.ts +19 -0
  51. package/src/main/ts/badge/accomplishment/psychopomp.ts +20 -0
  52. package/src/main/ts/badge/accomplishment/staring-into-the-abyss.ts +20 -0
  53. package/src/main/ts/badge/accomplishment/tested-by-combat.ts +17 -0
  54. package/src/main/ts/badge/accomplishment/thicker-than-water.ts +19 -0
  55. package/src/main/ts/badge/accomplishment/truth-seeker.ts +20 -0
  56. package/src/main/ts/badge/accomplishment/uncomfortable-truths.ts +20 -0
  57. package/src/main/ts/badge/achievement/_achievement-badges.ts +12 -0
  58. package/src/main/ts/badge/achievement/cataclysmic.ts +1 -1
  59. package/src/main/ts/badge/achievement/decimator.ts +1 -1
  60. package/src/main/ts/badge/achievement/eliminator.ts +1 -1
  61. package/src/main/ts/badge/achievement/eradicator.ts +1 -1
  62. package/src/main/ts/badge/achievement/executioner.ts +1 -1
  63. package/src/main/ts/badge/achievement/jailbreaker.ts +17 -0
  64. package/src/main/ts/badge/achievement/knockback-king.ts +20 -0
  65. package/src/main/ts/badge/achievement/master-of-zoes-task-force.ts +26 -0
  66. package/src/main/ts/badge/achievement/relentless.ts +1 -1
  67. package/src/main/ts/badge/achievement/snow-warning.ts +17 -0
  68. package/src/main/ts/badge/achievement/subterranean-striker.ts +17 -0
  69. package/src/main/ts/badge/achievement/until-the-end-of-the-world.ts +1 -1
  70. package/src/main/ts/badge/defeat/_defeat-badges.ts +6 -0
  71. package/src/main/ts/badge/defeat/mutated-marauder.ts +17 -0
  72. package/src/main/ts/badge/defeat/peacekeeper.ts +21 -0
  73. package/src/main/ts/badge/defeat/two-birds-one-stone.ts +17 -0
  74. package/src/main/ts/badge/event/_event-badges.ts +46 -46
  75. package/src/main/ts/badge/event/home-for-the-holidays.ts +1 -1
  76. package/src/main/ts/badge/event/hypothermia.ts +1 -1
  77. package/src/main/ts/badge/event/license-to-chill.ts +1 -1
  78. package/src/main/ts/badge/event/snowbound.ts +1 -1
  79. package/src/main/ts/badge/exploration/_exploration-badges.ts +10 -2
  80. package/src/main/ts/badge/exploration/fueled-by-greed.ts +21 -0
  81. package/src/main/ts/badge/exploration/in-their-prime.ts +22 -0
  82. package/src/main/ts/badge/exploration/lucid-dreamer.ts +20 -0
  83. package/src/main/ts/badge/exploration/marked-out.ts +19 -0
  84. package/src/main/ts/badge/exploration/on-the-shoulders-of-giants.ts +1 -1
  85. package/src/main/ts/badge/exploration/protest-too-much.ts +20 -0
  86. package/src/main/ts/badge/exploration/quay-to-the-city.ts +22 -0
  87. package/src/main/ts/badge/exploration/raving-mad.ts +19 -0
  88. package/src/main/ts/badge/exploration/tourist-trapped.ts +20 -0
  89. package/src/main/ts/badge/exploration/tried-and-true.ts +2 -2
  90. package/src/main/ts/badge/gladiator/mob-specialist.ts +1 -1
  91. package/src/main/ts/badge/history/_history-badges.ts +6 -0
  92. package/src/main/ts/badge/history/bicentennial.ts +1 -1
  93. package/src/main/ts/badge/history/christie-consolidation.ts +92 -0
  94. package/src/main/ts/badge/history/flagtown-memorialist.ts +68 -0
  95. package/src/main/ts/badge/history/patron-of-the-arts.ts +49 -0
  96. package/src/main/ts/contact/_contacts.ts +14 -0
  97. package/src/main/ts/contact/adelard-ziegler.ts +12 -0
  98. package/src/main/ts/contact/alexander-the-great.ts +12 -0
  99. package/src/main/ts/contact/dap-dap-tha-deal-maka.ts +12 -0
  100. package/src/main/ts/contact/erin-west.ts +12 -0
  101. package/src/main/ts/contact/robert-kogan.ts +12 -0
  102. package/src/main/ts/contact/wyllie-galloway.ts +12 -0
  103. package/src/main/ts/contact/zoe-langston.ts +12 -0
  104. package/src/main/ts/homecoming.ts +1 -1
  105. package/src/main/ts/mission/_missions.ts +14 -0
  106. package/src/main/ts/mission/cutting-back-old-growth.ts +18 -0
  107. package/src/main/ts/mission/death-resurrected.ts +19 -0
  108. package/src/main/ts/mission/hunting-the-hunters.ts +18 -0
  109. package/src/main/ts/mission/know-thy-enemy.ts +18 -0
  110. package/src/main/ts/mission/mergers-and-acquisitions.ts +18 -0
  111. package/src/main/ts/mission/the-sunlight-and-the-spotlight.ts +18 -0
  112. package/src/main/ts/mission/zoe-task-force.ts +14 -0
  113. package/src/main/ts/zone/_zones.ts +0 -2
  114. package/src/main/ts/zone/abandoned-sewer-network.ts +3 -0
  115. package/src/main/ts/zone/abandoned-sewers-trial.ts +3 -0
  116. package/src/main/ts/zone/architect-entertainment-buildings.ts +1 -0
  117. package/src/main/ts/zone/arena-cage-match.ts +2 -0
  118. package/src/main/ts/zone/atlas-park.ts +3 -0
  119. package/src/main/ts/zone/black-shroud-dimension.ts +5 -1
  120. package/src/main/ts/zone/bloody-bay.ts +3 -0
  121. package/src/main/ts/zone/boomtown.ts +3 -0
  122. package/src/main/ts/zone/breakout.ts +3 -0
  123. package/src/main/ts/zone/brickstown.ts +3 -0
  124. package/src/main/ts/zone/cap-au-diable.ts +3 -0
  125. package/src/main/ts/zone/cascade-archipelago.ts +3 -0
  126. package/src/main/ts/zone/cimerora.ts +3 -0
  127. package/src/main/ts/zone/creys-folly.ts +3 -0
  128. package/src/main/ts/zone/croatoa.ts +3 -0
  129. package/src/main/ts/zone/dark-astoria.ts +3 -0
  130. package/src/main/ts/zone/echo-atlas-park.ts +7 -1
  131. package/src/main/ts/zone/echo-dark-astoria.ts +3 -0
  132. package/src/main/ts/zone/echo-faultline.ts +7 -1
  133. package/src/main/ts/zone/echo-galaxy-city.ts +3 -0
  134. package/src/main/ts/zone/echo-rikti-crash-site.ts +4 -1
  135. package/src/main/ts/zone/eden.ts +3 -0
  136. package/src/main/ts/zone/faultline.ts +3 -0
  137. package/src/main/ts/zone/firebase-zulu.ts +3 -0
  138. package/src/main/ts/zone/first-ward.ts +3 -0
  139. package/src/main/ts/zone/founders-falls.ts +3 -0
  140. package/src/main/ts/zone/grandville.ts +3 -0
  141. package/src/main/ts/zone/hydra-missions.ts +7 -1
  142. package/src/main/ts/zone/imperial-city.ts +3 -0
  143. package/src/main/ts/zone/independence-port.ts +3 -0
  144. package/src/main/ts/zone/kallisti-wharf.ts +4 -0
  145. package/src/main/ts/zone/kings-row.ts +3 -0
  146. package/src/main/ts/zone/mayhem-atlas-park.ts +3 -0
  147. package/src/main/ts/zone/mayhem-brickstown.ts +3 -0
  148. package/src/main/ts/zone/mayhem-founders-falls.ts +3 -0
  149. package/src/main/ts/zone/mayhem-independence-port.ts +3 -0
  150. package/src/main/ts/zone/mayhem-kings-row.ts +3 -0
  151. package/src/main/ts/zone/mayhem-peregrine-island.ts +3 -0
  152. package/src/main/ts/zone/mayhem-skyway-city.ts +3 -0
  153. package/src/main/ts/zone/mayhem-steel-canyon.ts +3 -0
  154. package/src/main/ts/zone/mayhem-talos-island.ts +3 -0
  155. package/src/main/ts/zone/mercy-island.ts +3 -0
  156. package/src/main/ts/zone/midnighter-club.ts +3 -0
  157. package/src/main/ts/zone/monster-island.ts +3 -0
  158. package/src/main/ts/zone/nerva-archipelago.ts +3 -0
  159. package/src/main/ts/zone/neutropolis.ts +3 -0
  160. package/src/main/ts/zone/night-ward.ts +3 -0
  161. package/src/main/ts/zone/nova-praetoria.ts +3 -0
  162. package/src/main/ts/zone/ouroboros.ts +3 -0
  163. package/src/main/ts/zone/paragon-dance-party.ts +3 -0
  164. package/src/main/ts/zone/peregrine-island.ts +3 -0
  165. package/src/main/ts/zone/perez-park.ts +3 -0
  166. package/src/main/ts/zone/phone.ts +2 -0
  167. package/src/main/ts/zone/pocket-d.ts +3 -0
  168. package/src/main/ts/zone/port-oakes.ts +3 -0
  169. package/src/main/ts/zone/recluses-victory.ts +3 -0
  170. package/src/main/ts/zone/rikti-war-zone.ts +3 -0
  171. package/src/main/ts/zone/safeguard-atlas-park.ts +3 -0
  172. package/src/main/ts/zone/safeguard-brickstown.ts +3 -0
  173. package/src/main/ts/zone/safeguard-founders-falls.ts +3 -0
  174. package/src/main/ts/zone/safeguard-independence-port.ts +3 -0
  175. package/src/main/ts/zone/safeguard-kings-row.ts +3 -0
  176. package/src/main/ts/zone/safeguard-peregrine-island.ts +3 -0
  177. package/src/main/ts/zone/safeguard-skyway-city.ts +3 -0
  178. package/src/main/ts/zone/safeguard-steel-canyon.ts +3 -0
  179. package/src/main/ts/zone/safeguard-talos-island.ts +3 -0
  180. package/src/main/ts/zone/sewer-network.ts +3 -0
  181. package/src/main/ts/zone/sharkhead-isle.ts +3 -0
  182. package/src/main/ts/zone/sirens-call.ts +3 -0
  183. package/src/main/ts/zone/skyway-city.ts +3 -0
  184. package/src/main/ts/zone/st-martial.ts +3 -0
  185. package/src/main/ts/zone/steel-canyon.ts +3 -0
  186. package/src/main/ts/zone/striga-isle.ts +3 -0
  187. package/src/main/ts/zone/studio-55.ts +6 -1
  188. package/src/main/ts/zone/talos-island.ts +3 -0
  189. package/src/main/ts/zone/terra-volta.ts +3 -0
  190. package/src/main/ts/zone/the-abyss.ts +3 -0
  191. package/src/main/ts/zone/the-chantry.ts +3 -0
  192. package/src/main/ts/zone/the-hive.ts +3 -0
  193. package/src/main/ts/zone/the-hollows.ts +3 -0
  194. package/src/main/ts/zone/the-labyrinth-of-fog.ts +3 -0
  195. package/src/main/ts/zone/the-storm-palace.ts +3 -0
  196. package/src/main/ts/zone/underground-imperial.ts +3 -0
  197. package/src/main/ts/zone/underground-neutropolis.ts +3 -0
  198. package/src/main/ts/zone/underground-nova.ts +3 -0
  199. package/src/main/ts/zone/warburg.ts +3 -0
  200. package/src/test/ts/link-tests.test.ts +1 -1
  201. package/src/test/ts/mission.test.ts +20 -0
  202. package/src/main/ts/zone/praetoria.ts +0 -7
  203. /package/src/main/resources/images/badges/event/{winter-login.png → snowbound.png} +0 -0
  204. /package/src/main/{lint/utils/rollup-replace.ts → ts/utils/bundle-metadata.ts} +0 -0
package/jest.config.mjs CHANGED
@@ -4,4 +4,8 @@ export default {
4
4
  transform: {
5
5
  '^.+.tsx?$': ['ts-jest', {}],
6
6
  },
7
+ coverageReporters: ['clover', 'json', 'lcov', 'text', 'text-summary'],
8
+ coveragePathIgnorePatterns: [
9
+ '/bundle-metadata.ts$', // Uses rollup-replace for injected values, hard to test.
10
+ ],
7
11
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "coh-content-db-homecoming",
3
- "version": "2.0.0-rc.9",
3
+ "version": "2.0.1",
4
4
  "description": "City of Heroes Homecoming Content Database",
5
5
  "homepage": "https://github.com/n15g/coh-content-db-homecoming#readme",
6
6
  "bugs": {
@@ -26,30 +26,30 @@
26
26
  },
27
27
  "devDependencies": {
28
28
  "@rollup/plugin-json": "^6.1.0",
29
- "@rollup/plugin-replace": "^6.0.2",
30
- "@stylistic/eslint-plugin": "^3.1.0",
31
- "@stylistic/eslint-plugin-ts": "^3.1.0",
32
- "@types/jest": "^29.5.14",
29
+ "@rollup/plugin-replace": "^6.0.3",
30
+ "@stylistic/eslint-plugin": "^5.6.1",
31
+ "@stylistic/eslint-plugin-ts": "^4.4.1",
32
+ "@types/jest": "^30.0.0",
33
33
  "@types/valid-url": "^1.0.7",
34
- "@typescript-eslint/rule-tester": "^8.29.0",
35
- "@typescript-eslint/utils": "^8.29.0",
34
+ "@typescript-eslint/rule-tester": "^8.48.0",
35
+ "@typescript-eslint/utils": "^8.48.0",
36
36
  "efate": "^1.5.1",
37
- "eslint": "^9.20.0",
38
- "eslint-plugin-unicorn": "^56.0.1",
39
- "globals": "^15.14.0",
40
- "jest": "^29.7.0",
41
- "rollup": "^4.34.6",
42
- "rollup-plugin-dts": "^6.1.1",
43
- "rollup-plugin-esbuild": "^6.2.0",
44
- "ts-jest": "^29.2.5",
37
+ "eslint": "^9.39.1",
38
+ "eslint-plugin-unicorn": "^62.0.0",
39
+ "globals": "^16.5.0",
40
+ "jest": "^30.2.0",
41
+ "rollup": "^4.53.3",
42
+ "rollup-plugin-dts": "^6.2.3",
43
+ "rollup-plugin-esbuild": "^6.2.1",
44
+ "ts-jest": "^29.4.5",
45
45
  "ts-mockito": "^2.6.1",
46
46
  "ts-node": "^10.9.2",
47
- "typescript": "^5.7.3",
48
- "typescript-eslint": "^8.24.0",
47
+ "typescript": "^5.9.3",
48
+ "typescript-eslint": "^8.48.0",
49
49
  "valid-url": "^1.0.9"
50
50
  },
51
51
  "dependencies": {
52
- "coh-content-db": "^2.0.0-rc.13"
52
+ "coh-content-db": "^2.0.0"
53
53
  },
54
54
  "engines": {
55
55
  "node": ">=22"
@@ -142,6 +142,8 @@ import { BetweenRealities } from './between-realities'
142
142
  import { ProtectorOfParagonCity } from './protector-of-paragon-city'
143
143
  import { DeepStrikeAgent } from './deep-strike-agent'
144
144
  import { ConquerorOfTheLabyrinth } from './conqueror-of-the-labyrinth'
145
+ import { ThePrettiestOne } from './the-prettiest-one'
146
+ import { Mazebreaker } from './mazebreaker'
145
147
 
146
148
  export const ACCOLADE_BADGES: BadgeData[] = [
147
149
  BugHunter,
@@ -205,6 +207,7 @@ export const ACCOLADE_BADGES: BadgeData[] = [
205
207
  IPAddress,
206
208
  LostAndFound,
207
209
  ZigWarden,
210
+ ThePrettiestOne,
208
211
  PortalCorpAnalyst,
209
212
  HistoryInTheMaking,
210
213
  MercyMariner,
@@ -286,5 +289,6 @@ export const ACCOLADE_BADGES: BadgeData[] = [
286
289
  Chronomaster,
287
290
  Hologram,
288
291
  ConquerorOfTheLabyrinth,
292
+ Mazebreaker,
289
293
  BetweenRealities,
290
294
  ]
@@ -1,6 +1,6 @@
1
1
  import { BadgeData } from 'coh-content-db'
2
2
  import { Undefeated } from '../exploration/undefeated'
3
- import { SilentSentinel } from '../exploration/silent-sentinel'
3
+ import { Rookie } from '../exploration/rookie'
4
4
  import { HeroCorpsInsider } from '../exploration/hero-corps-insider'
5
5
  import { Patriot } from '../exploration/patriot'
6
6
  import { TopDog } from '../exploration/top-dog'
@@ -22,7 +22,7 @@ export const AtlasTourGuide: BadgeData = {
22
22
  icon: 'https://n15g.github.io/coh-content-db-homecoming/images/badges/accolade/explore-acc-h.png',
23
23
  requirements: [
24
24
  { key: Undefeated.key, type: 'badge', badgeKey: Undefeated.key },
25
- { key: SilentSentinel.key, type: 'badge', badgeKey: SilentSentinel.key },
25
+ { key: Rookie.key, type: 'badge', badgeKey: Rookie.key },
26
26
  { key: HeroCorpsInsider.key, type: 'badge', badgeKey: HeroCorpsInsider.key },
27
27
  { key: Patriot.key, type: 'badge', badgeKey: Patriot.key },
28
28
  { key: TopDog.key, type: 'badge', badgeKey: TopDog.key },
@@ -18,7 +18,7 @@ export const BetweenRealities: BadgeData = {
18
18
  morality: 'all',
19
19
  badgeText: `You've spent a significant amount of time shifting between the spatial overlaps of the First Ward and Night Ward.
20
20
  With experience, you've learned of a method to manipulate the magics used by the Light & Shadowed Paths to define and utilize spatial jump points of your own.`,
21
- effect: `Awards the Mark & Recall power.`,
21
+ effect: `Awards the Mark and Recall power.`,
22
22
  links: [
23
23
  { title: 'Between Realities Badge', href: 'https://homecoming.wiki/wiki/Between_Realities_Badge' },
24
24
  ],
@@ -0,0 +1,23 @@
1
+ import { BadgeData } from 'coh-content-db'
2
+ import { TestedByCombat } from '../accomplishment/tested-by-combat'
3
+ import { ChromaticCombatant } from '../accomplishment/chromatic-combatant'
4
+
5
+ export const Mazebreaker: BadgeData = {
6
+ type: 'accolade',
7
+ key: 'mazebreaker',
8
+ setTitleId: [2582],
9
+ name: 'Mazebreaker',
10
+ releaseDate: '2025-11-25',
11
+ morality: 'all',
12
+ badgeText: `You've become much more adept at fighting in the Labyrinth of Fog after undergoing the full spectrum of Tests of Combat offered by the Four Generals of Achlys. No matter what comes next for the dream-like maze, you'll be ready.`,
13
+ effect: `Awards the Mazebreaker power.`,
14
+ links: [
15
+ { title: 'Mazebreaker Badge', href: 'https://homecoming.wiki/wiki/Mazebreaker_Badge' },
16
+ ],
17
+ icon: 'https://n15g.github.io/coh-content-db-homecoming/images/badges/accolade/mazebreaker.png',
18
+ requirements: [
19
+ { key: TestedByCombat.key, type: 'badge', badgeKey: TestedByCombat.key },
20
+ { key: ChromaticCombatant.key, type: 'badge', badgeKey: ChromaticCombatant.key },
21
+ ],
22
+
23
+ }
@@ -2,7 +2,7 @@ import { BadgeData } from 'coh-content-db'
2
2
  import { ForceOfJustice } from './force-of-justice'
3
3
  import { Gallant } from '../achievement/gallant'
4
4
  import { GuardianOfForever } from '../achievement/guardian-of-forever'
5
- import { BeyondReasonableDoubt } from '../achievement/beyond-reasonable-doubt'
5
+ import { HelpingHand } from '../accomplishment/helping-hand'
6
6
  import { TheGreaterGood } from '../accomplishment/the-greater-good'
7
7
  import { Bicentennial } from '../history/bicentennial'
8
8
 
@@ -30,7 +30,7 @@ export const ProtectorOfParagonCity: BadgeData = {
30
30
  { key: ForceOfJustice.key, type: 'badge', badgeKey: ForceOfJustice.key },
31
31
  { key: Gallant.key, type: 'badge', badgeKey: Gallant.key },
32
32
  { key: GuardianOfForever.key, type: 'badge', badgeKey: GuardianOfForever.key },
33
- { key: BeyondReasonableDoubt.key, type: 'badge', badgeKey: BeyondReasonableDoubt.key },
33
+ { key: HelpingHand.key, type: 'badge', badgeKey: HelpingHand.key },
34
34
  { key: TheGreaterGood.key, type: 'badge', badgeKey: TheGreaterGood.key },
35
35
  { key: Bicentennial.key, type: 'badge', badgeKey: Bicentennial.key },
36
36
  ],
@@ -0,0 +1,33 @@
1
+ import { BadgeData } from 'coh-content-db'
2
+ import { OnTheShouldersOfGiants } from '../exploration/on-the-shoulders-of-giants'
3
+ import { InTheirPrime } from '../exploration/in-their-prime'
4
+ import { ProtestTooMuch } from '../exploration/protest-too-much'
5
+ import { FueledByGreed } from '../exploration/fueled-by-greed'
6
+ import { RavingMad } from '../exploration/raving-mad'
7
+ import { MarkedOut } from '../exploration/marked-out'
8
+ import { QuayToTheCity } from '../exploration/quay-to-the-city'
9
+ import { TouristTrapped } from '../exploration/tourist-trapped'
10
+
11
+ export const ThePrettiestOne: BadgeData = {
12
+ type: 'accolade',
13
+ key: 'the-prettiest-one',
14
+ setTitleId: [2448],
15
+ name: 'The Prettiest One',
16
+ releaseDate: '2025-06-17',
17
+ morality: 'heroic',
18
+ badgeText: `You've obtained this Accolade by earning every Exploration badge within Kallisti Wharf.`,
19
+ links: [
20
+ { title: 'The Prettiest One Badge', href: 'https://homecoming.wiki/wiki/The_Prettiest_One_Badge' },
21
+ ],
22
+ icon: 'https://n15g.github.io/coh-content-db-homecoming/images/badges/accolade/explore-acc-h.png',
23
+ requirements: [
24
+ { key: OnTheShouldersOfGiants.key, type: 'badge', badgeKey: OnTheShouldersOfGiants.key },
25
+ { key: InTheirPrime.key, type: 'badge', badgeKey: InTheirPrime.key },
26
+ { key: ProtestTooMuch.key, type: 'badge', badgeKey: ProtestTooMuch.key },
27
+ { key: FueledByGreed.key, type: 'badge', badgeKey: FueledByGreed.key },
28
+ { key: RavingMad.key, type: 'badge', badgeKey: RavingMad.key },
29
+ { key: MarkedOut.key, type: 'badge', badgeKey: MarkedOut.key },
30
+ { key: QuayToTheCity.key, type: 'badge', badgeKey: QuayToTheCity.key },
31
+ { key: TouristTrapped.key, type: 'badge', badgeKey: TouristTrapped.key },
32
+ ],
33
+ }
@@ -2,7 +2,7 @@ import { BadgeData } from 'coh-content-db'
2
2
  import { Trustworthy } from '../exploration/trustworthy'
3
3
  import { Knowledgeable } from '../exploration/knowledgeable'
4
4
  import { Virtuous } from '../exploration/virtuous'
5
- import { Rookie } from '../exploration/rookie'
5
+ import { SilentSentinel } from '../exploration/silent-sentinel'
6
6
  import { Condemned } from '../exploration/condemned'
7
7
  import { Resilient } from '../exploration/resilient'
8
8
  import { OutOfHarmsWay } from '../exploration/out-of-harms-way'
@@ -24,7 +24,7 @@ export const WalkedDownMemoryLane: BadgeData = {
24
24
  { key: Trustworthy.key, type: 'badge', badgeKey: Trustworthy.key },
25
25
  { key: Knowledgeable.key, type: 'badge', badgeKey: Knowledgeable.key },
26
26
  { key: Virtuous.key, type: 'badge', badgeKey: Virtuous.key },
27
- { key: Rookie.key, type: 'badge', badgeKey: Rookie.key },
27
+ { key: SilentSentinel.key, type: 'badge', badgeKey: SilentSentinel.key },
28
28
  { key: Condemned.key, type: 'badge', badgeKey: Condemned.key },
29
29
  { key: Resilient.key, type: 'badge', badgeKey: Resilient.key },
30
30
  { key: OutOfHarmsWay.key, type: 'badge', badgeKey: OutOfHarmsWay.key },
@@ -200,6 +200,19 @@ import { DoesntLookAtExplosions } from './doesnt-look-at-explosions'
200
200
  import { FaceTurn } from './face-turn'
201
201
  import { BoundByNDA } from './bound-by-nda'
202
202
  import { NutrientRich } from './nutrient-rich'
203
+ import { StaringIntoTheAbyss } from './staring-into-the-abyss'
204
+ import { BusinessSavvy } from './business-savvy'
205
+ import { FrontPerson } from './front-person'
206
+ import { JustifiedEnds } from './justified-ends'
207
+ import { ThickerThanWater } from './thicker-than-water'
208
+ import { GenerationalTrauma } from './generational-trauma'
209
+ import { UncomfortableTruths } from './uncomfortable-truths'
210
+ import { TruthSeeker } from './truth-seeker'
211
+ import { BrassTax } from './brass-tax'
212
+ import { ChromaticCombatant } from './chromatic-combatant'
213
+ import { HeartOfGold } from './heart-of-gold'
214
+ import { Psychopomp } from './psychopomp'
215
+ import { TestedByCombat } from './tested-by-combat'
203
216
 
204
217
  export const ACCOMPLISHMENT_BADGES: BadgeData[] = [
205
218
 
@@ -233,6 +246,7 @@ export const ACCOMPLISHMENT_BADGES: BadgeData[] = [
233
246
  Peerless,
234
247
  MemberOfVanguard,
235
248
  Apocalyptic,
249
+ HeartOfGold,
236
250
  SpeedDemon,
237
251
  Accelerated,
238
252
  Qualified,
@@ -404,4 +418,16 @@ export const ACCOMPLISHMENT_BADGES: BadgeData[] = [
404
418
  LoopHero,
405
419
  DoesntLookAtExplosions,
406
420
  FaceTurn,
421
+ StaringIntoTheAbyss,
422
+ BusinessSavvy,
423
+ FrontPerson,
424
+ JustifiedEnds,
425
+ ThickerThanWater,
426
+ GenerationalTrauma,
427
+ UncomfortableTruths,
428
+ TruthSeeker,
429
+ BrassTax,
430
+ Psychopomp,
431
+ TestedByCombat,
432
+ ChromaticCombatant,
407
433
  ]
@@ -0,0 +1,20 @@
1
+ import { BadgeData, missionLink } from 'coh-content-db'
2
+ import { MergersAndAcquisitions } from '../../mission/mergers-and-acquisitions'
3
+
4
+ export const BrassTax: BadgeData = {
5
+ type: 'accomplishment',
6
+ key: 'brass-tax',
7
+ setTitleId: [2567],
8
+ name: 'Brass Tax',
9
+ releaseDate: '2025-06-17',
10
+ morality: 'villainous',
11
+ badgeText: `You negotiated with Nemesis, to the joyful sounds of shattering brass, on his own home turf in the Shadow Shard.`,
12
+ acquisition: `Complete the bonus objectives in the story arc ${missionLink(MergersAndAcquisitions)}.`,
13
+ links: [
14
+ { title: 'Brass Tax Badge', href: 'https://homecoming.wiki/wiki/Brass_Tax_Badge' },
15
+ ],
16
+ icon: 'https://n15g.github.io/coh-content-db-homecoming/images/badges/accomplishment/brass-tax.png',
17
+ requirements: [
18
+ { key: MergersAndAcquisitions.key, type: 'mission', missionKey: MergersAndAcquisitions.key },
19
+ ],
20
+ }
@@ -0,0 +1,19 @@
1
+ import { BadgeData } from 'coh-content-db'
2
+ import { MergersAndAcquisitions } from '../../mission/mergers-and-acquisitions'
3
+
4
+ export const BusinessSavvy: BadgeData = {
5
+ type: 'accomplishment',
6
+ key: 'business-savvy',
7
+ setTitleId: [2560],
8
+ name: 'Business Savvy',
9
+ releaseDate: '2025-06-17',
10
+ morality: 'villainous',
11
+ badgeText: `You bumbled, hustled and crashed through a number of people and places to help Dap-Dap establish the Freaklok as an organization worthy of being taken seriously, especially by the Freakshow.`,
12
+ links: [
13
+ { title: 'Business Savvy Badge', href: 'https://homecoming.wiki/wiki/Business_Savvy_Badge' },
14
+ ],
15
+ icon: 'https://n15g.github.io/coh-content-db-homecoming/images/badges/accomplishment/business-savvy.png',
16
+ requirements: [
17
+ { key: MergersAndAcquisitions.key, type: 'mission', missionKey: MergersAndAcquisitions.key },
18
+ ],
19
+ }
@@ -0,0 +1,17 @@
1
+ import { BadgeData } from 'coh-content-db'
2
+
3
+ export const ChromaticCombatant: BadgeData = {
4
+ type: 'accomplishment',
5
+ key: 'chromatic-combatant',
6
+ setTitleId: [2576],
7
+ name: 'Chromatic Combatant',
8
+ releaseDate: '2025-11-25',
9
+ morality: 'all',
10
+ badgeText: `You've shown yourself amongst greatest of your otherworldeer peers by mastering the Tests of Combat. The phantoms knows your true worth after defeating all Four Generals of Achlys at the same time.`,
11
+ acquisition: `Complete the Test of Apathy offered by The Watcher, Teleute in the Core of the Labyrinth of Fog.`,
12
+ links: [
13
+ { title: 'Chromatic Combatant Badge', href: 'https://homecoming.wiki/wiki/Chromatic_Combatant_Badge' },
14
+ ],
15
+ icon: 'https://n15g.github.io/coh-content-db-homecoming/images/badges/accomplishment/chromatic-combatant.png',
16
+
17
+ }
@@ -0,0 +1,19 @@
1
+ import { BadgeData } from 'coh-content-db'
2
+ import { CuttingBackOldGrowth } from '../../mission/cutting-back-old-growth'
3
+
4
+ export const FrontPerson: BadgeData = {
5
+ type: 'accomplishment',
6
+ key: 'front-person',
7
+ setTitleId: [2561],
8
+ name: 'Front Person',
9
+ releaseDate: '2025-06-17',
10
+ morality: 'villainous',
11
+ badgeText: `When Crey needed someone to give them a good face to recover their image, they called you.`,
12
+ links: [
13
+ { title: 'Front Person Badge', href: 'https://homecoming.wiki/wiki/Front_Person_Badge' },
14
+ ],
15
+ icon: 'https://n15g.github.io/coh-content-db-homecoming/images/badges/accomplishment/front-person.png',
16
+ requirements: [
17
+ { key: CuttingBackOldGrowth.key, type: 'mission', missionKey: CuttingBackOldGrowth.key },
18
+ ],
19
+ }
@@ -0,0 +1,21 @@
1
+ import { BadgeData, missionLink } from 'coh-content-db'
2
+ import { HuntingTheHunters } from '../../mission/hunting-the-hunters'
3
+
4
+ export const GenerationalTrauma: BadgeData = {
5
+ type: 'accomplishment',
6
+ key: 'generational-trauma',
7
+ setTitleId: [2564],
8
+ name: 'Generational Trauma',
9
+ releaseDate: '2025-06-17',
10
+ morality: 'heroic',
11
+ badgeText: `You have discovered the consequences of helping Sister Valeria in the past - your encounter with Livia was actually the first time you met the host Nictus inside Arakhn, which now harbors milennia of hatred for you as a result.
12
+ The fact that Ourboros did not mend this is telling.`,
13
+ acquisition: `Complete the bonus objectives in the ${missionLink(HuntingTheHunters)} story arc.`,
14
+ links: [
15
+ { title: 'Generational Trauma Badge', href: 'https://homecoming.wiki/wiki/Generational_Trauma_Badge' },
16
+ ],
17
+ icon: 'https://n15g.github.io/coh-content-db-homecoming/images/badges/accomplishment/generational-trauma.png',
18
+ requirements: [
19
+ { key: HuntingTheHunters.key, type: 'mission', missionKey: HuntingTheHunters.key },
20
+ ],
21
+ }
@@ -0,0 +1,19 @@
1
+ import { BadgeData } from 'coh-content-db'
2
+ import { ZoeTaskForce } from '../../mission/zoe-task-force'
3
+
4
+ export const HeartOfGold: BadgeData = {
5
+ type: 'accomplishment',
6
+ key: 'heart-of-gold',
7
+ setTitleId: [2574],
8
+ name: 'Heart of Gold',
9
+ releaseDate: '2025-11-25',
10
+ morality: 'all',
11
+ badgeText: `You teamed up with Marigold 'Zoe' Langston and her Gold Brickers to confront a plot by Nemesis to steal Langston Corp's latest portal science technology. Seizing the opportunity to deal a major blow to the Prussian Prince of Automatons, you put his Kallisti Wharf base of operations out of commission once and for all.`,
12
+ links: [
13
+ { title: 'Heart of Gold Badge', href: 'https://homecoming.wiki/wiki/Heart_of_Gold_Badge' },
14
+ ],
15
+ icon: 'https://n15g.github.io/coh-content-db-homecoming/images/badges/accomplishment/heart-of-gold.png',
16
+ requirements: [
17
+ { key: ZoeTaskForce.key, type: 'mission', missionKey: ZoeTaskForce.key },
18
+ ],
19
+ }
@@ -0,0 +1,19 @@
1
+ import { BadgeData } from 'coh-content-db'
2
+ import { TheSunlightAndTheSpotlight } from '../../mission/the-sunlight-and-the-spotlight'
3
+
4
+ export const JustifiedEnds: BadgeData = {
5
+ type: 'accomplishment',
6
+ key: 'justified-ends',
7
+ setTitleId: [2562],
8
+ name: 'Justified Ends',
9
+ releaseDate: '2025-06-17',
10
+ morality: 'heroic',
11
+ badgeText: `Some evils can't be beaten while keeping your hands clean. You've done what was needed when others wouldn't.`,
12
+ links: [
13
+ { title: 'Justified Ends Badge', href: 'https://homecoming.wiki/wiki/Justified_Ends_Badge' },
14
+ ],
15
+ icon: 'https://n15g.github.io/coh-content-db-homecoming/images/badges/accomplishment/justified-ends.png',
16
+ requirements: [
17
+ { key: TheSunlightAndTheSpotlight.key, type: 'mission', missionKey: TheSunlightAndTheSpotlight.key },
18
+ ],
19
+ }
@@ -0,0 +1,20 @@
1
+ import { BadgeData } from 'coh-content-db'
2
+ import { DeathResurrected } from '../../mission/death-resurrected'
3
+
4
+ export const Psychopomp: BadgeData = {
5
+ type: 'accomplishment',
6
+ key: 'psychopomp',
7
+ setTitleId: [2584],
8
+ name: 'Psychopomp',
9
+ releaseDate: '2025-11-25',
10
+ morality: 'heroic',
11
+ badgeText: `You discovered the source of the Skulls' new powers: mystifying pacts formed between themselves and the entities that ferry souls of the dead to the afterlife.`,
12
+ acquisition: `Complete Wyllie Galloway's story arc.`,
13
+ links: [
14
+ { title: 'Psychopomp Badge', href: 'https://homecoming.wiki/wiki/Psychopomp_Badge' },
15
+ ],
16
+ icon: 'https://n15g.github.io/coh-content-db-homecoming/images/badges/accomplishment/psychopomp.png',
17
+ requirements: [
18
+ { key: DeathResurrected.key, type: 'mission', missionKey: DeathResurrected.key },
19
+ ],
20
+ }
@@ -0,0 +1,20 @@
1
+ import { BadgeData } from 'coh-content-db'
2
+ import { HuntingTheHunters } from '../../mission/hunting-the-hunters'
3
+
4
+ export const StaringIntoTheAbyss: BadgeData = {
5
+ type: 'accomplishment',
6
+ key: 'staring-into-the-abyss',
7
+ setTitleId: [2559],
8
+ name: 'Staring Into The Abyss',
9
+ releaseDate: '2025-06-17',
10
+ morality: 'heroic',
11
+ badgeText: `You assisted Adelard Ziegler with his investigation into the disappearance of the majority of the Council's Void Hunter division.
12
+ What you found out was disturbing, with an ominous warning about a possible invasion coming soon.`,
13
+ links: [
14
+ { title: 'Staring Into The Abyss Badge', href: 'https://homecoming.wiki/wiki/Staring_Into_The_Abyss_Badge' },
15
+ ],
16
+ icon: 'https://n15g.github.io/coh-content-db-homecoming/images/badges/accomplishment/staring-into-the-abyss.png',
17
+ requirements: [
18
+ { key: HuntingTheHunters.key, type: 'mission', missionKey: HuntingTheHunters.key },
19
+ ],
20
+ }
@@ -0,0 +1,17 @@
1
+ import { BadgeData } from 'coh-content-db'
2
+
3
+ export const TestedByCombat: BadgeData = {
4
+ type: 'accomplishment',
5
+ key: 'tested-by-combat',
6
+ setTitleId: [2575],
7
+ name: 'Tested By Combat',
8
+ releaseDate: '2025-11-25',
9
+ morality: 'all',
10
+ badgeText: `You've proven yourself adapative and a worthy challenger by overcoming the many different Tests of Combat offered by the Four Generals of Achlys in the Labyrinth of Fog.`,
11
+ acquisition: `Complete all six standard Tests of Combat offered by The Watcher, Teleute in the Core of the Labyrinth of Fog.`,
12
+ links: [
13
+ { title: 'Tested By Combat Badge', href: 'https://homecoming.wiki/wiki/Tested_By_Combat_Badge' },
14
+ ],
15
+ icon: 'https://n15g.github.io/coh-content-db-homecoming/images/badges/accomplishment/tested-by-combat.png',
16
+
17
+ }
@@ -0,0 +1,19 @@
1
+ import { BadgeData } from 'coh-content-db'
2
+ import { KnowThyEnemy } from '../../mission/know-thy-enemy'
3
+
4
+ export const ThickerThanWater: BadgeData = {
5
+ type: 'accomplishment',
6
+ key: 'thicker-than-water',
7
+ setTitleId: [2563],
8
+ name: 'Thicker Than Water',
9
+ releaseDate: '2025-06-17',
10
+ morality: 'heroic',
11
+ badgeText: `Alexander 'the Great' Pavlidis used the full quote: 'The blood of the battlefield is thicker than the water of the womb.' His former brothers in arms among the Warriors have fallen victim to demonic trickery but he remains honorbound to try to save their souls.`,
12
+ links: [
13
+ { title: 'Thicker Than Water Badge', href: 'https://homecoming.wiki/wiki/Thicker_Than_Water_Badge' },
14
+ ],
15
+ icon: 'https://n15g.github.io/coh-content-db-homecoming/images/badges/accomplishment/thicker-than-water.png',
16
+ requirements: [
17
+ { key: KnowThyEnemy.key, type: 'mission', missionKey: KnowThyEnemy.key },
18
+ ],
19
+ }
@@ -0,0 +1,20 @@
1
+ import { BadgeData, missionLink } from 'coh-content-db'
2
+ import { CuttingBackOldGrowth } from '../../mission/cutting-back-old-growth'
3
+
4
+ export const TruthSeeker: BadgeData = {
5
+ type: 'accomplishment',
6
+ key: 'truth-seeker',
7
+ setTitleId: [2566],
8
+ name: 'Truth Seeker',
9
+ releaseDate: '2025-06-17',
10
+ morality: 'villainous',
11
+ badgeText: `No mystery is too small to intrigue you. You gave Erin West closure by uncovering the truth about her mentor's death.`,
12
+ acquisition: `Complete bonus objectives in the ${missionLink(CuttingBackOldGrowth)} story arc.`,
13
+ links: [
14
+ { title: 'Truth Seeker Badge', href: 'https://homecoming.wiki/wiki/Truth_Seeker_Badge' },
15
+ ],
16
+ icon: 'https://n15g.github.io/coh-content-db-homecoming/images/badges/accomplishment/truth-seeker.png',
17
+ requirements: [
18
+ { key: CuttingBackOldGrowth.key, type: 'mission', missionKey: CuttingBackOldGrowth.key },
19
+ ],
20
+ }
@@ -0,0 +1,20 @@
1
+ import { BadgeData, missionLink } from 'coh-content-db'
2
+ import { CuttingBackOldGrowth } from '../../mission/cutting-back-old-growth'
3
+
4
+ export const UncomfortableTruths: BadgeData = {
5
+ type: 'accomplishment',
6
+ key: 'uncomfortable-truths',
7
+ setTitleId: [2565],
8
+ name: 'Uncomfortable Truths',
9
+ releaseDate: '2025-06-17',
10
+ morality: 'villainous',
11
+ badgeText: `Sometimes the only thing it takes to completely rock a person's world is to learn a few uncomfortable truths.`,
12
+ acquisition: `Complete bonus objectives in the ${missionLink(CuttingBackOldGrowth)} story arc.`,
13
+ links: [
14
+ { title: 'Uncomfortable Truths Badge', href: 'https://homecoming.wiki/wiki/Uncomfortable_Truths_Badge' },
15
+ ],
16
+ icon: 'https://n15g.github.io/coh-content-db-homecoming/images/badges/accomplishment/uncomfortable-truths.png',
17
+ requirements: [
18
+ { key: CuttingBackOldGrowth.key, type: 'mission', missionKey: CuttingBackOldGrowth.key },
19
+ ],
20
+ }
@@ -194,6 +194,11 @@ import { MirrorImage } from './mirror-image'
194
194
  import { Uncommitted } from './uncommitted'
195
195
  import { Adept } from './adept'
196
196
  import { Multifaceted } from './multifaceted'
197
+ import { Jailbreaker } from './jailbreaker'
198
+ import { SubterraneanStriker } from './subterranean-striker'
199
+ import { MasterOfZoesTaskForce } from './master-of-zoes-task-force'
200
+ import { SnowWarning } from './snow-warning'
201
+ import { KnockbackKing } from './knockback-king'
197
202
 
198
203
  export const ACHIEVEMENT_BADGES: BadgeData[] = [
199
204
  // Levels
@@ -395,6 +400,12 @@ export const ACHIEVEMENT_BADGES: BadgeData[] = [
395
400
  PowerOverwhelming,
396
401
  CantTouchThis,
397
402
 
403
+ // ZoeTF
404
+ SnowWarning,
405
+ Jailbreaker,
406
+ SubterraneanStriker,
407
+ KnockbackKing,
408
+
398
409
  // Mothership Raid
399
410
  Demolitionist,
400
411
 
@@ -408,6 +419,7 @@ export const ACHIEVEMENT_BADGES: BadgeData[] = [
408
419
  MasterOfDrAeonsStrikeForce,
409
420
  MasterOfApexsTaskForce,
410
421
  MasterOfTinMagesTaskForce,
422
+ MasterOfZoesTaskForce,
411
423
  MasterOfThePrisonersOfEden,
412
424
  MasterOfTheDescentToTheHydra,
413
425
  MasterOfTheMarketCrash,