This page compares what Bezgelor holds with the facts harvested from archived retail sources (Jabbithole pages, Dulfy's guides and patch notes, all kept by the Internet Archive, and the retail spawn captures of the NexusForever world database; see ground-truth.md for the sources and how far each can be trusted). Thank you to everyone who recorded this data while the game was live. Each comparison is confirmed (we agree with the source), contradicted (both values exist and differ), filled (we had nothing, the source has a value) or no source (the source says nothing). The fact store is apps/bezgelor_data/priv/data/ground_truth/; the machine-readable result is ground-truth-reconciliation.json. Updated automatically from the data; see how.
Coverage
| What | Count |
|---|---|
| creatures in scope | 5,654 |
| creatures with a fact | 2,903 |
| creatures in scope with no name in our texts (cannot be matched) | 15 |
| built-instance bosses and minibosses | 537 |
| of those, with a fact | 375 |
| built-instance creatures in scope | 2,140 |
| built-instance creatures with a fact | 1,170 |
| vendors in scope, or merchants standing in the world we spawn (vendor_inventories.json) | 355 |
| vendors with retail stock | 241 |
| vendors whose stock is exactly the retail list | 228 |
| vendors in vendor_inventories.json: reference / guess | 228 / 653 |
| all vendors in vendor_inventories.json | 881 |
| items our data touches in scope | 2,523 |
| of those, items with a retail fact | 1,327 |
| items with a retail fact (any) | 14,845 |
| quests in scope | 799 |
| quests with a fact | 654 |
| creatures with a retail capture (Health and Level) | 2,257 |
Scope of this pass: every creature spawned in Northern Wilds, Algoroc, Celestion, Everstar Grove, Crimson Isle, Levian Bay and Whitevale, every creature of a built instance, the vendors among them, and the quests of those zones. "Items our data touches" are the items in the stock of those vendors, the junk, material and meat pools of those creatures, and the reward items of those quests. Pages not yet fetched count as no source; the harvest is resumable (tools/ground_truth/harvest.py).
The ids in the facts are the client's: ability rows: 8,566; ability spell ids that exist in Spell4: 8,564; ability names equal to the Spell4Base name: 8,521; distinct item ids in drops, stock and rewards: 14,845; of those, ids that exist in Item2: 14,845.
Summary by area
| Area | confirmed | contradicted | filled | no source |
|---|---|---|---|---|
| creature level | 2611 | 107 | 59 | 2877 |
| creature health | 2032 | 727 | 0 | 2895 |
| creature abilities | 75 | 50 | 1826 | 3703 |
| creature health vs retail capture | 2242 | 15 | 0 | 3397 |
| guide numbers (Dulfy, patch notes) | 12 | 12 | 52 | 0 |
| instance creature level | 1071 | 16 | 3 | 1050 |
| instance creature health | 638 | 448 | 0 | 1054 |
| instance creature abilities | 75 | 50 | 943 | 1072 |
| vendor stock | 228 | 0 | 13 | 114 |
| drop pools | 24 | 822 | 496 | 4312 |
| quest level | 652 | 2 | 0 | 145 |
| quest minimum level | 652 | 2 | 0 | 145 |
| quest giver | 537 | 2 | 50 | 210 |
| quest reward items | 92 | 64 | 9 | 634 |
| quest experience | 653 | 1 | 0 | 145 |
| quest credits | 535 | 1 | 0 | 263 |
How to read the creature rows
- Level: our level is the Level stat of the retail spawn capture (NexusForever world database) where there is one, otherwise the built instance's level. A Jabbithole creature page pools every level variant of a (name, zone) pair, so the source gives a range and "confirmed" means our level lies inside it.
-
Health: the server computes max health as BaseHealth' + 14 x Stamina', where each is the creature's Creature2OverrideProperties value or CreatureLevel x archetype x difficulty x tier (
BezgelorWorld.CreatureProperties; semantic registry, "Creature max health"). We evaluate that formula at the source's own levels and compare with the source's health (tolerance 1.5%). For a page with a level range the two ends are compared. - Abilities: compared by name with the ability lists of our encounter data (only built instances have one). For every other creature the source fills a list we do not have.
- Versions (eras): Bezgelor targets the final live game (after Reloaded and free-to-play), the build of our client. A Jabbithole page records the last game version it was seen in (open beta, launch, Drop 3, 4 or 5, "live"); for the pages used here the newest is Drop 5, which is before WildStar: Reloaded (Drop 6, 2015-09-29), which re-levelled dungeons and changed some creature health (for example Kel Voreth, now level 25, normal-mode trash health lowered by 10-15%). Dulfy's guides are from July 2014 (launch era). The NexusForever retail captures are from the final era: their zones hold free-to-play NPCs (the Protostar Store Consultant in every starting zone, the zone envoys) and Thayd an Arcterra Emissary. Where an older source agrees with the final era, our value is checked by both; where it disagrees, Bezgelor keeps the final build's value and the row is a version difference; where a dated patch note settles it the row says so.
- Drops: the source's percentages are shares of recorded drops, never per-kill rates. We compare membership (is each retail item one our pool for that creature can produce: family junk, body materials, family meat; gear is a level-based pool?) and, per loot tier, the relative weights of the item classes.
Health: the formula against the retail captures (final era)
The NexusForever world database holds, for each captured spawn, the Health and Level the retail server sent; the captures are from the final live era (see Versions above). For the 2,257 scope creatures that have both, the server's formula gives the captured health (within 1.5%) for 2,242; median ratio ours/retail 1.000. Before the correction of 2026-10-12 (the table default alone: no Stamina term, no Creature2OverrideProperties) it was 25, median 0.797. Where Jabbithole also has a page for the same creature, the captured health equals the archive's health at the same level in 1715 of 1992 comparisons, so the two sources corroborate each other.
| Level band | creatures | median ours/retail | within 1.5% | before: median | before: within |
|---|---|---|---|---|---|
| 1-10 | 1140 | 1.0 | 1128 | 0.728 | 24 |
| 11-20 | 349 | 1.0 | 348 | 0.801 | 1 |
| 21-30 | 586 | 1.0 | 584 | 0.847 | 0 |
| 31-40 | 18 | 1.0 | 18 | 0.885 | 0 |
| 41-50 | 117 | 1.0 | 117 | 0.888 | 0 |
| 51-60 | 45 | 1.0 | 45 | 0.888 | 0 |
| 61-70 | 2 | 1.0 | 2 | 0.888 | 0 |
The server gives a creature CreatureProperties.max_health(creature, level) and does not read the captured Health: the formula reproduces it, and the captures it does not reproduce are mostly creatures captured hurt (several healths for one creature and level, the largest equal to the formula) or scripted below full health. How the formula was found: semantic registry, "Creature max health"; #229.
Health: the formula against the archive (Jabbithole)
3403 comparisons at the source's own levels; median ratio ours/retail 1.000; 2595 within 1.5%.
| Level band | comparisons | median ours/retail |
|---|---|---|
| 1-10 | 1041 | 1.0 |
| 11-20 | 451 | 1.0 |
| 21-30 | 941 | 1.0 |
| 31-40 | 231 | 1.0 |
| 41-50 | 691 | 1.0 |
| 51-60 | 45 | 1.0 |
| 61-70 | 2 | 1.0 |
| 71-80 | 1 | 0.501 |
By the game version each page records (its era):
| Where | Jabbithole version | confirmed | contradicted |
|---|---|---|---|
| built instance | Drop 3 | 11 | 3 |
| built instance | Drop 4 | 55 | 39 |
| built instance | Drop 5 | 521 | 388 |
| built instance | launch | 11 | 9 |
| built instance | live | 39 | 7 |
| built instance | open beta | 1 | 1 |
| built instance | winter beta | 0 | 1 |
| open world | Drop 3 | 68 | 14 |
| open world | Drop 4 | 98 | 28 |
| open world | Drop 5 | 1173 | 234 |
| open world | launch | 48 | 2 |
| open world | live | 7 | 1 |
Open-world pages (Drop 5) agree with the formula, as the final-era captures do. Most built-instance pages that differ are level-50 veteran creatures whose Drop 5 health is 10-20% below the final build's: the final client's Creature2OverrideProperties rows were raised after Drop 5 (Blade-Wind's veteran page says 1,000,014, the Drop 5 override of 1,000,000 plus 14 x a Stamina override of 1; the final build has 1,150,000), and level-50 trash comes out 1.2 times the Drop 5 figure. Those are an older era, and Bezgelor keeps the final build's value. Others pool several Creature2 rows of one name (a page cannot say which row its figure belongs to).
Built-instance bosses and creatures
Tracked in #230 (health) and #231 (encounter numbers and ability lists).
Health contradicted
448 contradicted.
| Creature | Instance | Level (retail) | Ours at that level | Retail health | Era (Jabbithole version) |
|---|---|---|---|---|---|
| Ob'mar (19665) | malgrave-trail | 45-45 | 1,073,220 | 1,137,139 | Drop 5 |
| Blisterbone Dreglord (19818) | malgrave-trail | 45-45 | 492,477 | 521,809 | Drop 5 |
| Thirsty Pricklevine (20413) | malgrave-trail | 45-45 | 182,520 | 213,617 | Drop 5 |
| Elemental Horror (20584) | malgrave-trail | 45-45 | 455,269 | 464,517 | Drop 5 |
| Murk (20814) | malgrave-trail | 45-45 | 1,073,220 | 1,137,139 | Drop 5 |
| Gurk (20828) | malgrave-trail | 45-45 | 1,073,220 | 1,137,139 | Drop 5 |
| Exile Rocket Trooper (21499) | siege-of-tempest-refuge | 50-50 | 62,320 | 85,980 | Drop 5 |
| Dominion Enforcer (22161) | siege-of-tempest-refuge | 30-30 | 11,015 | 63,220 | Drop 5 |
| Esper Moko (22166) | siege-of-tempest-refuge | 30-30 | 332,237 | 371,600 | Drop 5 |
| Elementalist Vermilius (22167) | siege-of-tempest-refuge | 30-30 | 332,237 | 397,610 | Drop 5 |
| Corporal Vizrek (22168) | siege-of-tempest-refuge | 30-30 | 445,293 | 422,570 | Drop 5 |
| Agent Razios (22169) | siege-of-tempest-refuge | 30-30 | 416,117 | 388,780 | Drop 5 |
| Chief Engineer Vortec (22170) | siege-of-tempest-refuge | 30-30 | 328,590 | 400,460 | Drop 5 |
| Marksman Decimus (22171) | siege-of-tempest-refuge | 30-30 | 328,590 | 423,800 | Drop 5 |
| Physician Astius (22172) | siege-of-tempest-refuge | 30-30 | 102,391 | 155,910 | Drop 5 |
| Bruiser Shuni (22173) | siege-of-tempest-refuge | 30-30 | 138,756 | 167,940 | Drop 5 |
| Bloodshaman Vakaza (22174) | siege-of-tempest-refuge | 30-30 | 103,527 | 159,840 | Drop 5 |
| Saboteur Arminex (22175) | siege-of-tempest-refuge | 30-30 | 129,665 | 159,840 | Drop 5 |
| Siren Aria (22176) | siege-of-tempest-refuge | 30-30 | 332,237 | 244,400 | Drop 5 |
| Dominion Assault Tank (22197) | siege-of-tempest-refuge | 30-30 | 180,236 | 140,860 | Drop 5 |
| Dominion Hellfire Tank (22198) | siege-of-tempest-refuge | 30-30 | 180,236 | 140,860 | Drop 5 |
| Legion Assault Tank (22199) | siege-of-tempest-refuge | 30-30 | 445,293 | 271,050 | Drop 5 |
| Dominion Rifleman (22202) | siege-of-tempest-refuge | 30-30 | 10,113 | 29,072 | Drop 5 |
| Dominion Sniper (22203) | siege-of-tempest-refuge | 30-30 | 10,113 | 32,456 | Drop 5 |
| Dominion Shocktrooper (22204) | siege-of-tempest-refuge | 30-30 | 16,347 | 48,940 | Drop 5 |
| Dominion Rocket Trooper (22205) | siege-of-tempest-refuge | 30-30 | 15,008 | 62,320 | Drop 5 |
| Dominion Specialist (22206) | siege-of-tempest-refuge | 30-30 | 129,665 | 69,780 | Drop 5 |
| Advanced Warbot (22244) | siege-of-tempest-refuge | 30-30 | 408,823 | 422,570 | Drop 5 |
| Dominion Bomb Guardian (22247) | siege-of-tempest-refuge | 30-30 | 11,015 | 29,072 | Drop 5 |
| Dominion Bunker Buster (22253) | siege-of-tempest-refuge | 30-30 | 298,680 | 388,230 | Drop 5 |
| Lumbering Parasite (22669) | infestation | 20-50 | 9,426 / 36,047 | 9,426 / 43,440 | Drop 5 |
| Captain Onghr (23832) | crimelords-of-whitevale | 50-50 | 339,080 | 507,260 | launch |
| Stew-Shaman Tugga (24493) | skullcano | 35-35 | 376,569 | 349,569 | Drop 5 |
| Grim-Grim Doomcaller (24494) | skullcano | 35-35 | 134,995 | 164,998 | Drop 5 |
| Grim-Grim Hexweaver (24495) | skullcano | 35-35 | 129,560 | 152,432 | Drop 5 |
| Grim-Grim Curseblade (24498) | skullcano | 35-35 | 131,560 | 155,152 | Drop 5 |
| Grim-Grim Blightmask (24499) | skullcano | 35-35 | 130,560 | 155,152 | Drop 5 |
| Redmoon Prisoner (24507) | skullcano | 35-35 | 125,734 | 115,734 | Drop 5 |
| Redmoon Prisoner (24508) | skullcano | 35-35 | 125,734 | 115,734 | Drop 5 |
| Redmoon Prisoner (24509) | skullcano | 35-35 | 125,734 | 115,734 | Drop 5 |
| Redmoon Jailor (24510) | skullcano | 35-35 | 107,870 | 152,432 | Drop 5 |
| Redmoon Gold Guardian (24512) | skullcano | 35-35 | 130,150 | 155,152 | Drop 5 |
| Redmoon Gold Hoarder (24514) | skullcano | 35-35 | 127,430 | 152,432 | Drop 5 |
| Redmoon Cannoneer (24578) | skullcano | 35-35 | 127,430 | 152,432 | Drop 5 |
| Redmoon Sniper (24579) | skullcano | 35-35 | 127,430 | 152,432 | Drop 5 |
| Redmoon Furyspitter (24580) | skullcano | 35-35 | 127,430 | 152,432 | Drop 5 |
| Redmoon Necromancer (24581) | skullcano | 35-35 | 132,885 | 170,888 | Drop 5 |
| Redmoon Crusher (24618) | skullcano | 35-35 | 133,030 | 166,035 | Drop 5 |
| Thunderfoot (24893) | skullcano | 50-50 | 1,776,409 | 1,562,659 | Drop 5 |
| Bosun Octog (24894) | skullcano | 50-50 | 1,234,259 | 1,064,444 | Drop 5 |
| Mordechai Redmoon (24895) | skullcano | 50-50 | 1,218,409 | 1,077,659 | Drop 5 |
| Quartermaster Gruh'ar (24896) | skullcano | 50-50 | 593,754 | 525,879 | Drop 5 |
| Stew-Shaman Tugga (24898) | skullcano | 50-50 | 1,109,099 | 883,349 | Drop 5 |
| Grim-Grim Doomcaller (24899) | skullcano | 50-50 | 525,932 | 438,219 | Drop 5 |
| Grim-Grim Hexweaver (24900) | skullcano | 50-50 | 485,875 | 404,843 | Drop 5 |
| Grim-Grim Curseblade (24901) | skullcano | 50-50 | 494,579 | 412,095 | Drop 5 |
| Grim-Grim Blightmask (24902) | skullcano | 50-50 | 494,579 | 412,095 | Drop 5 |
| Redmoon Prisoner (24905) | skullcano | 50-50 | 185,666 | 180,778 | Drop 5 |
| Redmoon Prisoner (24906) | skullcano | 50-50 | 185,666 | 180,778 | Drop 5 |
| Redmoon Prisoner (24907) | skullcano | 50-50 | 185,666 | 180,778 | Drop 5 |
... 388 more in the JSON.
Level contradicted
16 contradicted.
| Creature | Instance | Ours | Retail |
|---|---|---|---|
| Merchant Andus (24192) | crimelords-of-whitevale | [40, 50] | 27-27 |
| Quartermaster Hillary (24194) | crimelords-of-whitevale | [40, 50] | 27-27 |
| Rootbrute Deathcap (25961) | war-of-the-wilds | [25, 50] | 4-5 |
| Foreman Krause (29468) | outpost-m-13 | [14] | 13-13 |
| Ragebot Swarmer (32302) | rage-logic | [28, 50] | 29-29 |
| Rage Defender (32322) | rage-logic | [28, 50] | 29-29 |
| Infected Freebot (32323) | rage-logic | [28, 50] | 29-29 |
| Ragebot Exterminator (32324) | rage-logic | [28, 50] | 29-29 |
| Overseerbot (44232) | rage-logic | [28, 50] | 29-29 |
| Riptide the Stone Serpent (48704) | deep-space-exploration | [34, 50] | 35-35 |
| Infected Freebot (69094) | rage-logic | [28, 50] | 29-29 |
| Rage Defender (69095) | rage-logic | [28, 50] | 29-29 |
| Ragebot Swarmer (69096) | rage-logic | [28, 50] | 29-29 |
| Ragebot Exterminator (69097) | rage-logic | [28, 50] | 29-29 |
| Overseerbot (69107) | rage-logic | [28, 50] | 29-29 |
| Riptide the Stone Serpent (69299) | deep-space-exploration | [34, 50] | 35-35 |
Abilities in the source that our encounter data lacks
50 contradicted.
| Creature | Instance | Retail abilities not in ours |
|---|---|---|
| Quartermaster Gruh'ar (24490) | skullcano | Dead Eye |
| Quartermaster Gruh'ar (24896) | skullcano | Dead Eye, Debilitating Fusillade |
| Kraggar the Earth-Render (26732) | world-bosses | Crush, Earth Shocks, Granite Club, Kraggar Bonus Damage, Landslide, Maelstrom, Smash, Strain Bomb |
| Maelstrom Authority (30497) | datascape | Maelstrom Bolt |
| Megalith (30499) | datascape | Pound, Rock Pillar Explosion |
| Hydroflux (30500) | datascape | Crashing Wave, Pound |
| Visceralus (30501) | datascape | Pound |
| Avatus (30505) | datascape | Holo-Swipe, Spell Name Missing, Swipe |
| Frost-Boulder Avalanche (31677) | datascape | Swipe |
| Bio-Enhanced Broodmother (31885) | datascape | Pincer Slash |
| Overseer Drift-Catcher (33361) | stormtalons-lair | Gust Convergence, Static Paroxysm |
| Overseer Drift-Catcher (33362) | stormtalons-lair | Gust Convergence, Static Paroxysm |
| Datascape (46320) | datascape | Spell Name Missing |
| Keeper of Sands (48041) | datascape | Arcane Bolt |
| Hyper-Accelerated Skeledroid (48065) | datascape | Crush |
| Logic Guided Rockslide (48171) | datascape | Crush |
| Avatus (48213) | datascape | Annihilation, Binding Strike, Burning Exhaust, Disruption Beam, Holo-Crush, Holo-Swipe, Invalidate, Nullifying Rays, Obliteration Beam, Phase Punch, Spell Name Missing, Swipe |
| Warmonger Agratha (48295) | datascape | Cleave |
| Augmented Servitor of Avatus (48375) | datascape | Logic Dart |
| Datascape (48719) | datascape | Spell Name Missing |
| Datascape (48720) | datascape | Spell Name Missing |
| Datascape (48724) | datascape | Spell Name Missing |
| Datascape (48725) | datascape | Spell Name Missing |
| Datascape (48907) | datascape | Spell Name Missing |
| Experiment X-89 (49198) | genetic-archives | Deadly Bite, Forceful Smash |
| Abstract Augmentation Algorithm (49985) | datascape | Data Deconstruction |
| Fleshmonger Vratorg (52964) | genetic-archives | Bite |
| Terax Blightweaver (52968) | genetic-archives | Vile Bolt |
| Kuralak the Defiler (52969) | genetic-archives | Corruption Shock |
| Golgox the Lifecrusher (52970) | genetic-archives | Smash |
| Noxmind the Insidious (52971) | genetic-archives | Slash, Slice |
| Noxmind the Insidious (54027) | genetic-archives | Slash, Slice |
| Phagetech Augmentor (54029) | genetic-archives | Gouge, Slice |
| Phagetech Fabricator (54030) | genetic-archives | Gouge, Slice |
| Phagetech Commander (54032) | genetic-archives | Smack, Swipe |
| Kuralak the Defiler (54629) | genetic-archives | Corruption Shock |
| Phagetech Guardian C-148 (54785) | genetic-archives | Swipe |
| Genetic Monstrosity (54968) | genetic-archives | Crush, Smash |
| Corrupted Beast (56125) | genetic-archives | Gnash, Tear |
| Nanite Infused Defender (56169) | genetic-archives | Swing, Swipe |
| Nanite Distribution Construct (56170) | genetic-archives | Gouge, Slice |
| Malfunctioning Battery (56174) | genetic-archives | Crossed Wires |
| Hideously Malformed Mutant (56178) | genetic-archives | Eviscerate, Lacerate |
| Gravitron Operator (56184) | genetic-archives | Gravity Bolt |
| Frost-Boulder Avalanche (56200) | datascape | Swipe |
| Fetid Miscreation (56377) | genetic-archives | Swipe, Tear |
| Gargantua (56829) | world-bosses | Corporal Punishment, Noxious Breath, Pound, Putrid Pugilance, Swipe, Tainted Soul, Waves of Corruption |
| Kuralak the Defiler (58345) | genetic-archives | Corruption Shock |
| Elemental Master (63319) | ultimate-protogames | Burning, Lingering Venom |
| Laveka the Dark-Hearted (65997) | redmoon-terror | Dark Fireball |
Boss numbers from Dulfy's veteran guides and the July 2014 patch notes
Dulfy's numbers are for level-50 veteran mode, rounded as the guide rounds them (health within 8% counts as agreeing). "filled" means we hold no comparable value (trash interrupt armor, add health, loot rules, world-boss figures). The guides are of July 2014 (launch era): a veteran health they give below ours is the older era, since the final build's Creature2OverrideProperties rows are higher (see the archive section above); Bezgelor keeps the final build's value.
| Subject | Fact | Dulfy / patch note | Ours | Result |
|---|---|---|---|---|
| Blade-Wind the Invoker | health | 1000000 | 1150014 | contradicted |
| Thundercall Channeler | health | 378000 | 510742 | contradicted |
| Blade-Wind the Invoker | interrupt_armor | 2 | 2 | confirmed |
| Blade-Wind the Invoker | cast_ms:Thunder Cross | 1500 | [1500, 2000] | confirmed |
| Blade-Wind the Invoker | phase_boundary_pct | 55 | [50, 55, 60, 100] | confirmed |
| Aethros | health | 1000000 | 1246409 | contradicted |
| Gust of Aethros | health | 160000 | 176783 | contradicted |
| Aethros | interrupt_armor | 3 | infinite except during Tempest (3) | confirmed |
| Aethros | cast_ms:Tempest | 15000 | [30000] | contradicted |
| Stormtalon | health | 1100000 | 1246409 | contradicted |
| Stormtalon | interrupt_armor | 4 | Spell4 40016 sets 5 for 16 s | contradicted |
| Overseer Drift-Catcher | interrupt_armor | 2 | 2 | confirmed |
| Grond the Corpsemaker | health | 1000000 | 1149409 | contradicted |
| Grond the Corpsemaker | interrupt_armor | 4 | 4 | confirmed |
| Darkwitch Gurka | health | 626000 | 925904 | contradicted |
| Darkwitch Gurka | interrupt_armor | 4 | 4 | confirmed |
| Slavemaster Drokk | health | 1200000 | 1396409 | contradicted |
| Slavemaster Drokk | interrupt_armor | 2 | 2 | confirmed |
| Slavemaster Drokk | phase_boundaries_pct | [83, 63, 43, 25] | [0, 40, 80, 100] | contradicted |
| Forgemaster Trogun | health | 1200000 | 1346409 | contradicted |
| Forgemaster Trogun | interrupt_armor | 4 | 4 on Volcanic Strike | confirmed |
| Forgemaster Trogun | phase_boundary_pct | 50 | [50, 60, 100] | confirmed |
| The Ruins of Kel Voreth | dungeon_level | 25 | 25 | confirmed |
| Sanctuary of the Swordmaiden | dungeon_level | 40 | 40 | confirmed |
52 further facts have no counterpart in our data (listed in the JSON): Aethros, Blood Pit Gladiator, Blood Pit Necromancer, Doomthorn, Enslaved Augmentor, Enslaved Protector, Hellrose Bowl, Initialization Core Y-83, Laveka the Dark-Hearted, Metal Maw, Metal Maw Prime, Mordechai Redmoon....
Open-world creatures
Level contradicted
91 contradicted.
| Creature | Zone | Ours (sniffed) | Retail |
|---|---|---|---|
| Coldscale Ravener (12808) | Algoroc | [6, 7] | 7-7 |
| Crash Survivor (13579) | Northern Wilds | [4] | 3-3 |
| Gallow Citizen (15267) | Algoroc | [1] | 6-6 |
| Gallow Citizen (15268) | Algoroc | [1] | 6-6 |
| Throg Breaker (17444) | Algoroc | [11] | 9-10 |
| Galehorn Roamer (17520) | Whitevale | [14, 15] | 14-14 |
| Gallow Citizen (17653) | Algoroc | [1] | 6-6 |
| Slateface Slammer (17692) | Algoroc | [9, 10] | 10-10 |
| Gallow Citizen (17740) | Algoroc | [1] | 6-6 |
| Eldan Augmentor (19492) | Algoroc | [11, 12] | 14-14 |
| Eldan Augmentor (19590) | Algoroc | [11] | 14-14 |
| Snowshadow Inquisitor (19901) | Whitevale | [22, 23, 24] | 23-24 |
| Eldan Augmentor (21656) | Algoroc | [12, 13] | 14-14 |
| Scanbot (21757) | Algoroc | [1] | 6-22 |
| Black Hoods Assassin (22015) | Whitevale | [26, 28, 29] | 27-27 |
| Scanbot (22201) | Algoroc | [1] | 6-22 |
| Hungry Thermock Citizen (23347) | Whitevale | [20, 22, 24] | 20-23 |
| Hungry Thermock Citizen (23349) | Whitevale | [20, 22, 23, 24] | 20-23 |
| XAS Medic (23574) | Algoroc | [11] | 12-12 |
| Wounded Soldier (23587) | Whitevale | [23] | 30-30 |
... 71 more in the JSON.
Health contradicted
279 contradicted.
| Creature | Zone | Level (retail) | Ours at that level | Retail health |
|---|---|---|---|---|
| Shoveljaw Boulderback (2409) | Algoroc | 7-7 | 2,041 | 1,636 |
| Settler's Reach Protector (11388) | Northern Wilds | 1-4 | 130 / 553 | 1 / 15,232 |
| Settler's Reach Protector (11436) | Northern Wilds | 1-4 | 15,054 / 15,232 | 1 / 15,232 |
| Granok Mercenary (11467) | Northern Wilds | 3-5 | 5,112 / 5,202 | 362 / 5,112 |
| Granok Mercenary (11706) | Northern Wilds | 3-5 | 442 / 890 | 362 / 5,112 |
| Skeech Shaman (11912) | Northern Wilds | 4-5 | 654 / 844 | 535 / 844 |
| Yeti Frostclaw (11948) | Northern Wilds | 3-5 | 353 / 709 | 353 / 844 |
| Granok Mercenary (12842) | Northern Wilds | 3-5 | 362 / 739 | 362 / 5,112 |
| Yeti Frostclaw (12844) | Northern Wilds | 3-5 | 420 / 844 | 353 / 844 |
| Yeti Frostclaw (13116) | Northern Wilds | 3-5 | 420 / 844 | 353 / 844 |
| Crash Survivor (13579) | Northern Wilds | 3-3 | 767 | 538 |
| Granok Mercenary (13683) | Northern Wilds | 3-5 | 362 / 739 | 362 / 5,112 |
| Granok Mercenary (13684) | Northern Wilds | 3-5 | 362 / 739 | 362 / 5,112 |
| Morek Throg (13981) | Algoroc | 11-11 | 3,353 | 4,206 |
| Gallow Citizen (15267) | Algoroc | 6-6 | 916 | 1,360 |
| Gallow Citizen (15268) | Algoroc | 6-6 | 916 | 1,360 |
| Throg Breaker (17444) | Algoroc | 9-10 | 2,035 / 2,426 | 1,574 / 1,868 |
| Throg Pounder (17447) | Algoroc | 9-11 | 2,035 / 2,832 | 1,250 / 2,135 |
| Gallow Citizen (17653) | Algoroc | 6-6 | 916 | 1,360 |
| Gallow Citizen (17740) | Algoroc | 6-6 | 916 | 1,360 |
... 259 more in the JSON.
Vendors
241 vendors (the scope, and every merchant that stands in the world we spawn) have a retail stock list; 0 of them differ from ours, 228 of them are exactly the retail list.
A vendor with an archived page gets exactly that list (vendor_inventories.json, provenance reference, built by tools/vendor_inventory_generator.py from jabbithole_vendors.json). Every other vendor keeps the list generated from its type, provenance guess, filtered of the client rows retail never sold and the rows it cannot price; the server offers that filtered list (#213). "confirmed" here measures the generator's output against the page it was built from, so a vendor with a page is expected to read confirmed; the open question is the vendors with no page and the era of the pages (2014-2017).
Drops
1342 creatures have a retail drop list (79,409 items in all). For those, the share of recorded drops our pools can produce: 27% (junk, materials, meat), a further 2% are gear a level-based pool covers, 71% are items no pool of ours produces (quest items, path items, schematics, and so on).
Relative weights: what the recorded drops were made of
Per loot tier (Creature2Difficulty rank and group size, as BezgelorWorld.Loot.Profile maps them), the share of recorded drops that were junk, survivalist material or meat, runecrafting signs, gear, or something else (quest, path and tradeskill items, consumables, schematics). "Ours" is the share the tier's configured rates imply (expected items per kill by class, normalised; the rates are designed values). Both columns are shares of items, so they say nothing about how many items a kill yields.
| Tier | creatures | recorded drops | junk (retail / ours) | material | sign | gear | other (retail) |
|---|---|---|---|---|---|---|---|
| minor | 226 | 454095 | 38% / 70% | 10% / 26% | 4% / 2% | 0% / 2% | 48% |
| standard | 390 | 1098098 | 30% / 67% | 14% / 26% | 4% / 2% | 1% / 5% | 51% |
| elite | 202 | 271281 | 22% / 56% | 18% / 33% | 6% / 3% | 1% / 8% | 53% |
| prime | 31 | 25938 | 16% / 38% | 32% / 29% | 9% / 4% | 2% / 29% | 40% |
| group_trash | 253 | 1168354 | 34% / 60% | 2% / 26% | 21% / 4% | 3% / 10% | 40% |
| group_elite | 75 | 102613 | 8% / 53% | 0% / 29% | 14% / 4% | 3% / 14% | 76% |
| group_boss | 61 | 569775 | 3% / 23% | 0% / 31% | 6% / 8% | 0% / 38% | 91% |
| raid_trash | 50 | 123564 | 41% / 58% | 11% / 29% | 10% / 7% | 7% / 6% | 30% |
| raid_boss | 40 | 273919 | 2% / 19% | 0% / 31% | 2% / 12% | 1% / 38% | 95% |
Quests
654 quests have a retail page. Level, minimum level, giver, experience and credits are compared with the formulas of BezgelorWorld.Quest.Info; reward items are compared as sets. The archived reward lists predate Reloaded, whose patch notes say quest rewards were adjusted so that their item levels more closely represent the challenge level of their quests: items we add on top of an archived list are not counted as a disagreement, and an archived reward we lack is often that version difference.
Level contradicted: 2
| Quest | Quest2 | Ours (conLevel) | Retail |
|---|---|---|---|
| Loftite Crystal Skull | 9136 | 13 | 6 |
| Eldan Prismatic Lens | 9137 | 13 | 6 |
Minimum level contradicted: 2
| Quest | Quest2 | Ours (preq_level) | Retail |
|---|---|---|---|
| Loftite Crystal Skull | 9136 | 10 | 3 |
| Eldan Prismatic Lens | 9137 | 10 | 3 |
Giver contradicted: 2
| Quest | Quest2 | Ours | Retail |
|---|---|---|---|
| Moodoo Voodoo | 6667 | apprentice-laveka | fenosh-nightfern |
| Dance, Moodie, Dance | 6669 | apprentice-laveka | fenosh-nightfern |
Reward items contradicted: 64
| Quest | Quest2 | Our reward items | Retail | In both |
|---|---|---|---|---|
| Empowered Tower | 3486 | 3 | 4 | 1 |
| Indigenous Intelligence | 3668 | 3 | 4 | 0 |
| Scattered Supplies | 3741 | 2 | 3 | 1 |
| Finish Him! | 3770 | 7 | 4 | 3 |
| By Leaps and Bounds | 3777 | 7 | 4 | 3 |
| Technical Difficulties | 3786 | 3 | 2 | 1 |
| Fiery Distraction | 3886 | 3 | 4 | 3 |
| WANTED: Demonclaw [GROUP 2+] | 3889 | 7 | 6 | 4 |
| WANTED: Blackpaw [GROUP 2+] | 3913 | 7 | 3 | 2 |
| The Final Showdown | 3930 | 3 | 3 | 1 |
| Repairing the Core | 4525 | 7 | 4 | 3 |
| Medical Mishap | 4713 | 1 | 2 | 0 |
| Thieving Skeech | 4723 | 3 | 3 | 1 |
| An Explosive Disruption | 4786 | 7 | 4 | 3 |
| Closing the Circuit | 4825 | 7 | 3 | 2 |
Experience contradicted: 1
| Quest | Quest2 | Ours (formula) | Retail |
|---|---|---|---|
| Travel to Thayd | 5272 | 258 | 225 |
Credits contradicted: 1
| Quest | Quest2 | Ours (formula) | Retail |
|---|---|---|---|
| The Final Showdown | 3930 | 1534 | 2500 |
Proposed follow-ups (not done in this pass)
- Health (#229, #230): done for the formula (BaseHealth' + 14 x Stamina', with Creature2OverrideProperties; the server and these tools use it). Left: the built-instance rows above that differ are older-era pages or pages that pool several rows; the other override properties (interrupt armor, move speed) are #240.
- Vendor stock (#213): done for every vendor with an archived page (see Vendors above). Left: the vendors no page matched (a name the archive lacks, or two pages for one name that cannot be told apart).
-
Abilities: give open-world creatures the ability lists of
jabbithole_creatures.json(Spell4 ids, checked against our Spell4 table in the coverage section; #232). -
Loot pools: add the retail items (quest, path, tradeskill and dungeon gear) to the pools of the creatures that drop them, keeping our rates, which stay designed values. The shares in
jabbithole_drops.jsongive the relative frequency of items within one creature only (#233). - Quests (#239): the level, minimum level, giver, experience and credit checks above are a regression test for the quest formulas; look at the reward lists that differ, and extend the harvest to the quests no page matched by title.
-
Re-run:
harvest.py fetchis resumable; after more pages arrive,build_facts.py,apply_facts.pyandreconcile.pyrefresh everything.