XPHero Fans logo XPHero Fans
Blog · Data

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".

8characters
27NPC spawn rows
269quests in their chains
127dialogue lines
19campaign zones covered

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 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:

CharacterZoneQuest chainDialogue
KainGreenhaven1 (group 0)32 lines (9 scenes)
TaidSandevil Desert, Ebonhollow … Verdant Ruins (4 zones)72 (group 2, 3, 4, 5)4 lines (4 scenes)
DnewHellfire Chasmnonenone
LinaFortress of Hopenone32 lines (9 scenes)
HanaBlackbarrow, Downtown2 (group 902)35 lines (11 scenes)
MenivhBlackbarrow, Twilight Forest … Frosthold (5 zones)93 (group 8, 9, 10, 11, 12)5 lines (5 scenes)
Hero ChairManRuined Downtown, Hanok Village … Dimensional Rift (6 zones)93 (group 13, 14, 15, 16, 17)6 lines (6 scenes)
RyanHome town, Hellfire Chasm8 (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:

Find Ryan the Hunter — [Chapter 1] Speak with Hunter Ryan

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.

Two indexes at the foot of the page. Every zone name on a card now links down to a zone index — 20 rows, who stands in each, and a hop to that stage on the world map — and every after quest N dialogue label jumps to a gate index: the 24 campaign quests that actually hold dialogue shut, each with its place in the story chain, title, objective and who starts talking once it is cleared. The gate index had to exist rather than link into the card above it, because all 25 gated scenes across the cast point into the main campaign (quest group 1) — never into the speaker's own chain.
The gate index also reaches the other page. 12 of those 24 gate quests are also the kill quest for a chapter boss, so their rows carry a fifth column — Boss gate — printing the chapter and the boss and linking to the progress tracker. Each of those links opens the tracker on the gate's own chapter with its card marked. The tracker's boss cards make the return trip: each names its quest and the character that quest unblocks, and both links land back here. The remaining 12 rows show a dash, because a campaign quest with no stage blocker behind it has no card to point at.

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:

You don't know his story yet.

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:

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.