Files
OpenFUT/fifa17-recon/data/tables/fitnesscoachcards.json
T
funman300 9a0a76c9f4 fifa17-recon: real positions, clubs and the six card attributes for all 17,563 players
The pool now comes from the game's OWN resident database, not from a rating index
plus guesses. tools/db_dump.py walked the client's self-describing table catalog
read-only and wrote data/tables/ (149 tables, 55MB); tools/build_player_facts.py
turned it into data/player_facts.json; data/pool.json is the compact form fut_cards
loads.

MEASURED, per player: position (players.preferredposition1), nationality, teamid,
leagueid (via leagueteamlinks), and the six card attributes.

The six attributes are NOT columns -- they are a weighted sum of the 29 base
attributes, and the weights are read out of the game's own playerattributesmapping
table rather than from published formulas. Checked against real FIFA 17 cards:
Messi 89/90/86/96/26/61 and Ibrahimovic 72/90/81/85/31/86 are EXACT, Suarez is one
off on physical, Ronaldo within two on pace and shooting. Keepers come out directly
from the gk* columns.

What this fixes on screen: Kaka was a CDM, Bale a CM, Suarez a GK, and every
attribute was derived from the rating. Now Bale is RW, Boateng is a CB with 90
defending, De Gea is a GK, and a bronze pack deals real bronze players in real
positions.

REVERSAL, deliberate: nation/team/league were being sent as ZERO so the client would
fill its own values (the merge fills those three only when they arrive zero). Now
that we hold the game's own numbers there is nothing to gain from zeros, and they
actively hurt -- club-stats drill-downs bucket by the item's own nation and leagueId,
so a club full of zeros would have quietly emptied the per-nation and per-league
panels fixed the day before. Send the real values.

The old rating-index path is kept as a fallback so the pool still builds without
data/pool.json, and it now says out loud which of the two it used, because one is a
measurement and the other is a guess.

439 + 61 checks green.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VUT92pz6RWKih9dSr8ZpxW
2026-08-05 09:08:29 -07:00

1 line
15 KiB
JSON

{"table":"fitnesscoachcards","source":"FIFA17.exe resident database (tools/db_dump.py)","rowcount":115,"rowsize_bytes":20,"rows_emitted":115,"rowblock":"0x4280fe08","rowblock_bytes":2321,"descriptor":"0x4280fcd8","schema":[{"name":"firstname","bit":0,"width":32,"kind":"string","min":0,"max":0,"storage":"offset-unresolved"},{"name":"lastname","bit":32,"width":32,"kind":"string","min":0,"max":0,"storage":"offset-unresolved"},{"name":"carddbid","bit":64,"width":24,"kind":"int","min":0,"max":9999999,"storage":"int"},{"name":"assetid","bit":88,"width":24,"kind":"int","min":0,"max":16777215,"storage":"int"},{"name":"value","bit":112,"width":7,"kind":"int","min":0,"max":100,"storage":"int"},{"name":"amount","bit":119,"width":7,"kind":"int","min":0,"max":100,"storage":"int"},{"name":"posbonus","bit":126,"width":7,"kind":"int","min":0,"max":100,"storage":"int"},{"name":"fieldpos","bit":133,"width":2,"kind":"int","min":0,"max":3,"storage":"int"},{"name":"rare","bit":135,"width":1,"kind":"int","min":0,"max":1,"storage":"int"}],"rows":[{"firstname":196,"lastname":198,"carddbid":3000019,"assetid":3000019,"value":55,"amount":1,"posbonus":3,"fieldpos":1,"rare":0},{"firstname":204,"lastname":206,"carddbid":3000023,"assetid":3000023,"value":55,"amount":1,"posbonus":5,"fieldpos":1,"rare":0},{"firstname":212,"lastname":214,"carddbid":3000035,"assetid":3000035,"value":55,"amount":1,"posbonus":5,"fieldpos":0,"rare":0},{"firstname":219,"lastname":222,"carddbid":3000043,"assetid":3000043,"value":64,"amount":2,"posbonus":6,"fieldpos":2,"rare":1},{"firstname":228,"lastname":230,"carddbid":3000047,"assetid":3000047,"value":64,"amount":2,"posbonus":2,"fieldpos":1,"rare":1},{"firstname":237,"lastname":239,"carddbid":3000059,"assetid":3000059,"value":64,"amount":2,"posbonus":1,"fieldpos":0,"rare":1},{"firstname":244,"lastname":246,"carddbid":3000063,"assetid":3000063,"value":64,"amount":2,"posbonus":7,"fieldpos":0,"rare":1},{"firstname":251,"lastname":253,"carddbid":3000067,"assetid":3000067,"value":64,"amount":2,"posbonus":5,"fieldpos":1,"rare":1},{"firstname":258,"lastname":260,"carddbid":3000071,"assetid":3000071,"value":64,"amount":2,"posbonus":2,"fieldpos":3,"rare":1},{"firstname":266,"lastname":268,"carddbid":3000075,"assetid":3000075,"value":64,"amount":2,"posbonus":5,"fieldpos":2,"rare":1},{"firstname":273,"lastname":275,"carddbid":3000079,"assetid":3000079,"value":64,"amount":2,"posbonus":3,"fieldpos":0,"rare":1},{"firstname":280,"lastname":282,"carddbid":3000083,"assetid":3000083,"value":66,"amount":2,"posbonus":5,"fieldpos":0,"rare":0},{"firstname":286,"lastname":288,"carddbid":3000087,"assetid":3000087,"value":66,"amount":2,"posbonus":2,"fieldpos":2,"rare":0},{"firstname":293,"lastname":295,"carddbid":3000091,"assetid":3000091,"value":80,"amount":5,"posbonus":5,"fieldpos":2,"rare":1},{"firstname":301,"lastname":303,"carddbid":3000095,"assetid":3000095,"value":66,"amount":2,"posbonus":4,"fieldpos":0,"rare":0},{"firstname":309,"lastname":311,"carddbid":3000099,"assetid":3000099,"value":66,"amount":2,"posbonus":5,"fieldpos":3,"rare":0},{"firstname":316,"lastname":318,"carddbid":3000103,"assetid":3000103,"value":66,"amount":2,"posbonus":5,"fieldpos":2,"rare":0},{"firstname":323,"lastname":325,"carddbid":3000107,"assetid":3000107,"value":66,"amount":2,"posbonus":4,"fieldpos":1,"rare":0},{"firstname":330,"lastname":332,"carddbid":3000111,"assetid":3000111,"value":66,"amount":2,"posbonus":3,"fieldpos":1,"rare":0},{"firstname":339,"lastname":341,"carddbid":3000115,"assetid":3000115,"value":66,"amount":2,"posbonus":1,"fieldpos":0,"rare":0},{"firstname":347,"lastname":349,"carddbid":3000119,"assetid":3000119,"value":66,"amount":2,"posbonus":1,"fieldpos":2,"rare":0},{"firstname":355,"lastname":357,"carddbid":3000127,"assetid":3000127,"value":70,"amount":3,"posbonus":5,"fieldpos":1,"rare":1},{"firstname":362,"lastname":364,"carddbid":3000135,"assetid":3000135,"value":70,"amount":3,"posbonus":2,"fieldpos":3,"rare":1},{"firstname":368,"lastname":370,"carddbid":3000139,"assetid":3000139,"value":70,"amount":3,"posbonus":7,"fieldpos":2,"rare":1},{"firstname":380,"lastname":382,"carddbid":3000147,"assetid":3000147,"value":70,"amount":3,"posbonus":1,"fieldpos":1,"rare":1},{"firstname":386,"lastname":388,"carddbid":3000151,"assetid":3000151,"value":70,"amount":3,"posbonus":7,"fieldpos":0,"rare":1},{"firstname":393,"lastname":395,"carddbid":3000155,"assetid":3000155,"value":70,"amount":3,"posbonus":5,"fieldpos":2,"rare":1},{"firstname":401,"lastname":403,"carddbid":3000159,"assetid":3000159,"value":70,"amount":3,"posbonus":2,"fieldpos":3,"rare":1},{"firstname":406,"lastname":408,"carddbid":3000171,"assetid":3000171,"value":77,"amount":3,"posbonus":5,"fieldpos":3,"rare":0},{"firstname":412,"lastname":414,"carddbid":3000179,"assetid":3000179,"value":77,"amount":3,"posbonus":5,"fieldpos":1,"rare":0},{"firstname":418,"lastname":420,"carddbid":3000183,"assetid":3000183,"value":77,"amount":3,"posbonus":4,"fieldpos":1,"rare":0},{"firstname":425,"lastname":428,"carddbid":3000187,"assetid":3000187,"value":77,"amount":3,"posbonus":5,"fieldpos":0,"rare":0},{"firstname":433,"lastname":435,"carddbid":3000191,"assetid":3000191,"value":77,"amount":3,"posbonus":5,"fieldpos":2,"rare":0},{"firstname":440,"lastname":442,"carddbid":3000195,"assetid":3000195,"value":77,"amount":3,"posbonus":4,"fieldpos":3,"rare":0},{"firstname":448,"lastname":450,"carddbid":3000199,"assetid":3000199,"value":77,"amount":3,"posbonus":3,"fieldpos":1,"rare":0},{"firstname":454,"lastname":456,"carddbid":3000203,"assetid":3000203,"value":77,"amount":3,"posbonus":1,"fieldpos":3,"rare":0},{"firstname":460,"lastname":462,"carddbid":3000207,"assetid":3000207,"value":80,"amount":5,"posbonus":1,"fieldpos":3,"rare":1},{"firstname":469,"lastname":471,"carddbid":3000211,"assetid":3000211,"value":77,"amount":3,"posbonus":5,"fieldpos":2,"rare":0},{"firstname":477,"lastname":479,"carddbid":3000215,"assetid":3000215,"value":77,"amount":3,"posbonus":5,"fieldpos":1,"rare":0},{"firstname":484,"lastname":486,"carddbid":3000219,"assetid":3000219,"value":80,"amount":5,"posbonus":5,"fieldpos":1,"rare":1},{"firstname":492,"lastname":494,"carddbid":3000223,"assetid":3000223,"value":80,"amount":5,"posbonus":2,"fieldpos":0,"rare":1},{"firstname":500,"lastname":502,"carddbid":3000227,"assetid":3000227,"value":80,"amount":5,"posbonus":7,"fieldpos":2,"rare":1},{"firstname":505,"lastname":507,"carddbid":3000231,"assetid":3000231,"value":80,"amount":5,"posbonus":1,"fieldpos":3,"rare":1},{"firstname":512,"lastname":514,"carddbid":3000235,"assetid":3000235,"value":80,"amount":5,"posbonus":1,"fieldpos":1,"rare":1},{"firstname":517,"lastname":519,"carddbid":3000239,"assetid":3000239,"value":80,"amount":5,"posbonus":7,"fieldpos":3,"rare":1},{"firstname":524,"lastname":526,"carddbid":3000243,"assetid":3000243,"value":80,"amount":5,"posbonus":5,"fieldpos":0,"rare":1},{"firstname":532,"lastname":534,"carddbid":3000247,"assetid":3000247,"value":80,"amount":5,"posbonus":2,"fieldpos":2,"rare":1},{"firstname":542,"lastname":544,"carddbid":3000251,"assetid":3000251,"value":80,"amount":5,"posbonus":5,"fieldpos":1,"rare":1},{"firstname":549,"lastname":551,"carddbid":3000260,"assetid":3000260,"value":55,"amount":1,"posbonus":5,"fieldpos":1,"rare":0},{"firstname":558,"lastname":560,"carddbid":3000261,"assetid":3000261,"value":55,"amount":1,"posbonus":4,"fieldpos":2,"rare":0},{"firstname":567,"lastname":569,"carddbid":3000262,"assetid":3000262,"value":55,"amount":1,"posbonus":3,"fieldpos":1,"rare":0},{"firstname":575,"lastname":577,"carddbid":3000263,"assetid":3000263,"value":55,"amount":1,"posbonus":5,"fieldpos":1,"rare":0},{"firstname":583,"lastname":585,"carddbid":3000264,"assetid":3000264,"value":55,"amount":1,"posbonus":3,"fieldpos":2,"rare":0},{"firstname":588,"lastname":590,"carddbid":3000265,"assetid":3000265,"value":55,"amount":1,"posbonus":5,"fieldpos":0,"rare":0},{"firstname":595,"lastname":597,"carddbid":3000266,"assetid":3000266,"value":64,"amount":2,"posbonus":6,"fieldpos":2,"rare":1},{"firstname":602,"lastname":604,"carddbid":3000267,"assetid":3000267,"value":64,"amount":2,"posbonus":2,"fieldpos":1,"rare":1},{"firstname":610,"lastname":612,"carddbid":3000268,"assetid":3000268,"value":64,"amount":2,"posbonus":1,"fieldpos":0,"rare":1},{"firstname":617,"lastname":619,"carddbid":3000269,"assetid":3000269,"value":64,"amount":2,"posbonus":7,"fieldpos":0,"rare":1},{"firstname":624,"lastname":626,"carddbid":3000270,"assetid":3000270,"value":64,"amount":2,"posbonus":5,"fieldpos":1,"rare":1},{"firstname":632,"lastname":635,"carddbid":3000271,"assetid":3000271,"value":64,"amount":2,"posbonus":2,"fieldpos":3,"rare":1},{"firstname":638,"lastname":640,"carddbid":3000273,"assetid":3000273,"value":64,"amount":2,"posbonus":3,"fieldpos":0,"rare":1},{"firstname":645,"lastname":647,"carddbid":3000274,"assetid":3000274,"value":66,"amount":2,"posbonus":5,"fieldpos":0,"rare":0},{"firstname":654,"lastname":656,"carddbid":3000275,"assetid":3000275,"value":66,"amount":2,"posbonus":2,"fieldpos":2,"rare":0},{"firstname":661,"lastname":663,"carddbid":3000276,"assetid":3000276,"value":66,"amount":2,"posbonus":4,"fieldpos":0,"rare":0},{"firstname":669,"lastname":671,"carddbid":3000277,"assetid":3000277,"value":66,"amount":2,"posbonus":5,"fieldpos":3,"rare":0},{"firstname":675,"lastname":677,"carddbid":3000278,"assetid":3000278,"value":66,"amount":2,"posbonus":5,"fieldpos":2,"rare":0},{"firstname":685,"lastname":687,"carddbid":3000279,"assetid":3000279,"value":66,"amount":2,"posbonus":4,"fieldpos":1,"rare":0},{"firstname":693,"lastname":695,"carddbid":3000280,"assetid":3000280,"value":66,"amount":2,"posbonus":3,"fieldpos":1,"rare":0},{"firstname":700,"lastname":702,"carddbid":3000281,"assetid":3000281,"value":66,"amount":2,"posbonus":1,"fieldpos":0,"rare":0},{"firstname":706,"lastname":709,"carddbid":3000282,"assetid":3000282,"value":66,"amount":2,"posbonus":1,"fieldpos":2,"rare":0},{"firstname":713,"lastname":715,"carddbid":3000283,"assetid":3000283,"value":70,"amount":3,"posbonus":5,"fieldpos":3,"rare":1},{"firstname":721,"lastname":723,"carddbid":3000284,"assetid":3000284,"value":70,"amount":3,"posbonus":5,"fieldpos":1,"rare":1},{"firstname":732,"lastname":734,"carddbid":3000285,"assetid":3000285,"value":70,"amount":3,"posbonus":5,"fieldpos":3,"rare":1},{"firstname":740,"lastname":742,"carddbid":3000286,"assetid":3000286,"value":70,"amount":3,"posbonus":2,"fieldpos":3,"rare":1},{"firstname":748,"lastname":750,"carddbid":3000287,"assetid":3000287,"value":70,"amount":3,"posbonus":7,"fieldpos":2,"rare":1},{"firstname":754,"lastname":756,"carddbid":3000288,"assetid":3000288,"value":70,"amount":3,"posbonus":1,"fieldpos":1,"rare":1},{"firstname":762,"lastname":764,"carddbid":3000289,"assetid":3000289,"value":70,"amount":3,"posbonus":1,"fieldpos":1,"rare":1},{"firstname":770,"lastname":772,"carddbid":3000290,"assetid":3000290,"value":77,"amount":3,"posbonus":5,"fieldpos":3,"rare":0},{"firstname":778,"lastname":780,"carddbid":3000291,"assetid":3000291,"value":77,"amount":3,"posbonus":5,"fieldpos":1,"rare":0},{"firstname":785,"lastname":787,"carddbid":3000292,"assetid":3000292,"value":77,"amount":3,"posbonus":4,"fieldpos":1,"rare":0},{"firstname":793,"lastname":795,"carddbid":3000293,"assetid":3000293,"value":77,"amount":3,"posbonus":5,"fieldpos":0,"rare":0},{"firstname":801,"lastname":803,"carddbid":3000294,"assetid":3000294,"value":77,"amount":3,"posbonus":5,"fieldpos":2,"rare":0},{"firstname":807,"lastname":809,"carddbid":3000295,"assetid":3000295,"value":77,"amount":3,"posbonus":4,"fieldpos":3,"rare":0},{"firstname":816,"lastname":818,"carddbid":3000296,"assetid":3000296,"value":77,"amount":3,"posbonus":3,"fieldpos":1,"rare":0},{"firstname":821,"lastname":823,"carddbid":3000297,"assetid":3000297,"value":77,"amount":3,"posbonus":1,"fieldpos":3,"rare":0},{"firstname":828,"lastname":830,"carddbid":3000298,"assetid":3000298,"value":77,"amount":3,"posbonus":5,"fieldpos":2,"rare":0},{"firstname":836,"lastname":838,"carddbid":3000299,"assetid":3000299,"value":77,"amount":3,"posbonus":5,"fieldpos":1,"rare":0},{"firstname":843,"lastname":845,"carddbid":3000300,"assetid":3000300,"value":80,"amount":5,"posbonus":5,"fieldpos":2,"rare":1},{"firstname":851,"lastname":853,"carddbid":3000301,"assetid":3000301,"value":80,"amount":5,"posbonus":1,"fieldpos":3,"rare":1},{"firstname":857,"lastname":859,"carddbid":3000302,"assetid":3000302,"value":80,"amount":5,"posbonus":5,"fieldpos":1,"rare":1},{"firstname":865,"lastname":867,"carddbid":3000303,"assetid":3000303,"value":80,"amount":5,"posbonus":2,"fieldpos":0,"rare":1},{"firstname":872,"lastname":874,"carddbid":3000304,"assetid":3000304,"value":80,"amount":5,"posbonus":7,"fieldpos":2,"rare":1},{"firstname":881,"lastname":883,"carddbid":3000305,"assetid":3000305,"value":80,"amount":5,"posbonus":1,"fieldpos":3,"rare":1},{"firstname":888,"lastname":890,"carddbid":3000306,"assetid":3000306,"value":80,"amount":5,"posbonus":1,"fieldpos":1,"rare":1},{"firstname":894,"lastname":896,"carddbid":3000308,"assetid":3000308,"value":70,"amount":3,"posbonus":1,"fieldpos":1,"rare":1},{"firstname":901,"lastname":903,"carddbid":3000309,"assetid":3000309,"value":70,"amount":3,"posbonus":1,"fieldpos":1,"rare":1},{"firstname":907,"lastname":909,"carddbid":3000310,"assetid":3000310,"value":70,"amount":3,"posbonus":7,"fieldpos":0,"rare":1},{"firstname":917,"lastname":919,"carddbid":3000311,"assetid":3000311,"value":70,"amount":3,"posbonus":5,"fieldpos":2,"rare":1},{"firstname":925,"lastname":927,"carddbid":3000312,"assetid":3000312,"value":70,"amount":3,"posbonus":2,"fieldpos":3,"rare":1},{"firstname":932,"lastname":934,"carddbid":3000313,"assetid":3000313,"value":70,"amount":3,"posbonus":5,"fieldpos":1,"rare":1},{"firstname":937,"lastname":939,"carddbid":3000314,"assetid":3000314,"value":70,"amount":3,"posbonus":3,"fieldpos":3,"rare":1},{"firstname":944,"lastname":948,"carddbid":3000315,"assetid":3000315,"value":77,"amount":3,"posbonus":5,"fieldpos":3,"rare":0},{"firstname":952,"lastname":954,"carddbid":3000316,"assetid":3000316,"value":77,"amount":3,"posbonus":5,"fieldpos":1,"rare":0},{"firstname":959,"lastname":961,"carddbid":3000317,"assetid":3000317,"value":77,"amount":3,"posbonus":4,"fieldpos":1,"rare":0},{"firstname":969,"lastname":971,"carddbid":3000318,"assetid":3000318,"value":77,"amount":3,"posbonus":5,"fieldpos":0,"rare":0},{"firstname":975,"lastname":977,"carddbid":3000319,"assetid":3000319,"value":77,"amount":3,"posbonus":5,"fieldpos":2,"rare":0},{"firstname":982,"lastname":984,"carddbid":3000320,"assetid":3000320,"value":77,"amount":3,"posbonus":4,"fieldpos":3,"rare":0},{"firstname":987,"lastname":990,"carddbid":3000321,"assetid":3000321,"value":55,"amount":1,"posbonus":3,"fieldpos":1,"rare":0},{"firstname":994,"lastname":996,"carddbid":3000322,"assetid":3000322,"value":55,"amount":1,"posbonus":5,"fieldpos":1,"rare":0},{"firstname":1002,"lastname":1004,"carddbid":3000323,"assetid":3000323,"value":55,"amount":1,"posbonus":4,"fieldpos":2,"rare":0},{"firstname":1008,"lastname":1010,"carddbid":3000324,"assetid":3000324,"value":55,"amount":1,"posbonus":3,"fieldpos":1,"rare":0},{"firstname":1014,"lastname":1016,"carddbid":3000325,"assetid":3000325,"value":55,"amount":1,"posbonus":5,"fieldpos":1,"rare":0},{"firstname":1020,"lastname":1022,"carddbid":3000326,"assetid":3000326,"value":55,"amount":1,"posbonus":3,"fieldpos":2,"rare":0},{"firstname":1028,"lastname":1030,"carddbid":3000327,"assetid":3000327,"value":55,"amount":1,"posbonus":5,"fieldpos":0,"rare":0},{"firstname":1035,"lastname":1037,"carddbid":3000328,"assetid":3000328,"value":64,"amount":2,"posbonus":6,"fieldpos":2,"rare":1}]}