The NPC cast, decoded — who they are, where they stand, what they pay
The site has a new page: NPCs of XP Hero — every named character with their portrait, bio, zone and quest chain. This post is the reasoning behind it, because the NPC table turned out to say more than "here are the shopkeepers".
Six columns, one cast
NpcData is one of the smallest tables in the build — 27 rows
at v27.0.0 — and it stores almost nothing: an icon name, a name key, a
story key, a ThemeId, a QuestGroupId and the row id.
Everything you read on a card is one of those six fields resolved against
another table:
- The face is
IconName, a sprite in the NPC art set. - The name and the bio are
NameandStory, locale keys — and the bios are proper prose, not stubs. Kain's is a paragraph about fleeing the Last Sanctuary after seven days of invasion; Lina's explains why the last survivor of the royal bloodlines knows purification magic. - The zone is
ThemeId, which turns out to be a campaign stage id (more on that below). - The work is
QuestGroupId, a pointer intoQuestData— the chain that character hands out.
The cast, as the table has it
27 rows are not 27 people. Taid has a row per zone he appears in, the Chairman six, and Ryan is six town-merchant rows plus his raid-guide row. Grouped by name they resolve to 8:
| Character | Zone | Quest chain | Dialogue |
|---|---|---|---|
| Kain | Greenhaven | 1 (group 0) | 32 lines (9 scenes) |
| Taid | Sandevil Desert, Ebonhollow … Verdant Ruins (4 zones) | 72 (group 2, 3, 4, 5) | 4 lines (4 scenes) |
| Dnew | Hellfire Chasm | none | none |
| Lina | Fortress of Hope | none | 32 lines (9 scenes) |
| Hana | Blackbarrow, Downtown | 2 (group 902) | 35 lines (11 scenes) |
| Menivh | Blackbarrow, Twilight Forest … Frosthold (5 zones) | 93 (group 8, 9, 10, 11, 12) | 5 lines (5 scenes) |
| Hero ChairMan | Ruined Downtown, Hanok Village … Dimensional Rift (6 zones) | 93 (group 13, 14, 15, 16, 17) | 6 lines (6 scenes) |
| Ryan | Home town, Hellfire Chasm | 8 (group 901) | 13 lines (7 scenes) |
Where they stand — the one inference on the page
ThemeId is not labelled anywhere, but it shares a number space
with StageData: every theme in the NPC table except 0 has
a matching stage row, and the campaign's 20 zones run 1–20
in order — Greenhaven, Sandevil Desert, Ebonhollow, and on through the
Dimensional Rift. The story arcs agree with it: Kain waits in the first zone,
Taid is spread across 2–5, Lina appears where chapter 2 begins
(Fallen Kingdoms), the Chairman closes out 15–20.
Theme 0 is the odd one: no stage row at all, and it's where Ryan's six merchant rows sit. Treat that as the town. Because the mapping is inferred rather than stated, the page prints the zone but never claims the game calls it a home address.
What they want from you
The quest groups are the most useful thing in the table, because a few of them are not fetch quests — they're introductions. Ryan's chain opens with:
Hana's opens with "Meet Hana in front of the cabin". Those are the game telling you where the character is, written as a quest step, which is as close to a meet-the-NPC milestone as the data ever gets. Across all 8 characters the chains total 269 quests, each with a locale objective and a reward from the quest table — mostly gold and EXP, with orbs, keys and rune souls where the chain is worth more.
Two things stop the chain from being a gate. First, it's what the character asks of you; the table has no field saying "this NPC unlocks at level N". Second, Kain's single row points at quest group 0, which holds exactly one row (id 9999) — a placeholder the game reuses as a stub. The page says so rather than dressing it up as a one-quest chain.
What they say
The dialogue is where the table earns its keep. 139 lines across
57 scenes in DialogueData, each scene gated in
DialogueGroupData by a quest the player has (or hasn't) cleared.
127 of those lines belong to a named NPC — the other 12 are the
player's own opening lines, a Slime King's "Gloop Gloop", and invasion-scene
emotes with no character row behind them.
Kain carries chapter one almost single-handedly: 9 scenes, 32 lines, unlocking after quests 2, 28, 67, 103, 133, 168, 219. Lina's arc starts at quest 219 — which is exactly where chapter one ends, and matches the quest ranges in the gate table. This is the only place the files state an unlock outright, which is why the page prints it as Dialogue unlocks after clearing quest N.
One caution if you rebuild this: SeqOrder repeats inside a scene
(three consecutive Kain lines all carry 1), so sorting by it scrambles the
script. Row id is the reliable order, and that's what the page uses.
The one character the game won't introduce
Row 99 is a character called Dnew, sitting in Hellfire Chasm with the
icon Face_Npc_Dnew — which isn't in the APK. His story key resolves
to the game's own placeholder:
No quest group, no dialogue scenes, no portrait. Either an unreleased character or a retired one whose row outlived the art. We list him rather than hide him, because "the files have a slot for someone you can't meet" is a fact about the build.
Three names for the same person
Building the page meant reconciling drifts that a text search would miss:
- Kain. The world scene places
NPC_Cain, the locale calls him Kain, and every line of his dialogue is filed underDL_Kein_Rand_*. Three spellings, one character. - Hana. The Downtown row is named
NPC_NAME_RUMI, which the locale resolves to "Hana", with Hana's portrait — and its dialogue is filed underDL_Ruby_*. Version 27 then added a second Hana row (id 11001, Blackbarrow) with two new scenes. Same person, four labels. - The Chairman. His locale name really is "Hero ChairMan", capital M included. We print it as the game does.
Rather than silently picking one, each card prints the table key and flags when the dialogue prefix disagrees with the name.
What isn't in the data
The obvious question — "what unlocks each NPC?" — has no table behind it. We
checked ContentUnlockData: 61 rows, one per feature
(world map, boss raid, codex, invasion), and not one of them mentions a character.
NPCs are gated by story progression and nothing else. The world scene also only
carries positions for two of them: NPC_Cain and
NPC_Taid_Stage2–5, all visible on the
world map. The rest of the cast exists in
tables and portraits, not coordinates.
Sources: NpcData (27 rows),
StageData (20 zones), ChapterData,
QuestData, DialogueData (139 lines),
DialogueGroupData and StackableItemData, all from the
27.0.0 extraction; names, bios and objectives from the game's locale
table. The rendered version is the NPCs page.
XP Hero is developed by Supercent — XPHero Fans is unofficial and not affiliated
with or endorsed by them.