9a0a76c9f4
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
1 line
14 KiB
JSON
1 line
14 KiB
JSON
{"table":"fcc_trainingcards","source":"FIFA17.exe resident database (tools/db_dump.py)","rowcount":143,"rowsize_bytes":12,"rows_emitted":143,"rowblock":"0x42810b48","rowblock_bytes":1745,"descriptor":"0x7b202d8","schema":[{"name":"carddbid","bit":0,"width":31,"kind":"int","min":0,"max":2001001001,"storage":"int"},{"name":"cardsubtype","bit":31,"width":14,"kind":"int","min":0,"max":10000,"storage":"int"},{"name":"weightrare","bit":45,"width":14,"kind":"int","min":0,"max":10000,"storage":"int"},{"name":"cardassetid","bit":59,"width":14,"kind":"int","min":0,"max":10000,"storage":"int"},{"name":"amount","bit":73,"width":12,"kind":"int","min":0,"max":3000,"storage":"int"},{"name":"rating","bit":85,"width":7,"kind":"int","min":0,"max":100,"storage":"int"}],"rows":[{"carddbid":5003001,"cardsubtype":51,"weightrare":0,"cardassetid":3,"amount":5,"rating":55},{"carddbid":5003002,"cardsubtype":51,"weightrare":0,"cardassetid":3,"amount":10,"rating":65},{"carddbid":5003003,"cardsubtype":51,"weightrare":0,"cardassetid":3,"amount":15,"rating":85},{"carddbid":5003004,"cardsubtype":52,"weightrare":0,"cardassetid":3,"amount":5,"rating":55},{"carddbid":5003005,"cardsubtype":52,"weightrare":0,"cardassetid":3,"amount":10,"rating":65},{"carddbid":5003006,"cardsubtype":52,"weightrare":0,"cardassetid":3,"amount":15,"rating":85},{"carddbid":5003007,"cardsubtype":53,"weightrare":0,"cardassetid":3,"amount":5,"rating":55},{"carddbid":5003008,"cardsubtype":53,"weightrare":0,"cardassetid":3,"amount":10,"rating":65},{"carddbid":5003009,"cardsubtype":53,"weightrare":0,"cardassetid":3,"amount":15,"rating":85},{"carddbid":5003010,"cardsubtype":54,"weightrare":0,"cardassetid":3,"amount":5,"rating":55},{"carddbid":5003011,"cardsubtype":54,"weightrare":0,"cardassetid":3,"amount":10,"rating":65},{"carddbid":5003012,"cardsubtype":54,"weightrare":0,"cardassetid":3,"amount":15,"rating":85},{"carddbid":5003013,"cardsubtype":55,"weightrare":0,"cardassetid":3,"amount":5,"rating":55},{"carddbid":5003014,"cardsubtype":55,"weightrare":0,"cardassetid":3,"amount":10,"rating":65},{"carddbid":5003015,"cardsubtype":55,"weightrare":0,"cardassetid":3,"amount":15,"rating":85},{"carddbid":5003016,"cardsubtype":56,"weightrare":0,"cardassetid":3,"amount":5,"rating":55},{"carddbid":5003017,"cardsubtype":56,"weightrare":0,"cardassetid":3,"amount":10,"rating":65},{"carddbid":5003018,"cardsubtype":56,"weightrare":0,"cardassetid":3,"amount":15,"rating":85},{"carddbid":5003019,"cardsubtype":57,"weightrare":2,"cardassetid":3,"amount":3,"rating":64},{"carddbid":5003020,"cardsubtype":57,"weightrare":2,"cardassetid":3,"amount":6,"rating":74},{"carddbid":5003021,"cardsubtype":57,"weightrare":2,"cardassetid":3,"amount":10,"rating":95},{"carddbid":5003022,"cardsubtype":61,"weightrare":0,"cardassetid":1,"amount":5,"rating":55},{"carddbid":5003023,"cardsubtype":61,"weightrare":0,"cardassetid":1,"amount":10,"rating":65},{"carddbid":5003024,"cardsubtype":61,"weightrare":0,"cardassetid":1,"amount":15,"rating":85},{"carddbid":5003025,"cardsubtype":62,"weightrare":0,"cardassetid":1,"amount":5,"rating":55},{"carddbid":5003026,"cardsubtype":62,"weightrare":0,"cardassetid":1,"amount":10,"rating":65},{"carddbid":5003027,"cardsubtype":62,"weightrare":0,"cardassetid":1,"amount":15,"rating":85},{"carddbid":5003028,"cardsubtype":63,"weightrare":0,"cardassetid":1,"amount":5,"rating":55},{"carddbid":5003029,"cardsubtype":63,"weightrare":0,"cardassetid":1,"amount":10,"rating":65},{"carddbid":5003030,"cardsubtype":63,"weightrare":0,"cardassetid":1,"amount":15,"rating":85},{"carddbid":5003031,"cardsubtype":64,"weightrare":0,"cardassetid":1,"amount":5,"rating":55},{"carddbid":5003032,"cardsubtype":64,"weightrare":0,"cardassetid":1,"amount":10,"rating":65},{"carddbid":5003033,"cardsubtype":64,"weightrare":0,"cardassetid":1,"amount":15,"rating":85},{"carddbid":5003034,"cardsubtype":65,"weightrare":0,"cardassetid":1,"amount":5,"rating":55},{"carddbid":5003035,"cardsubtype":65,"weightrare":0,"cardassetid":1,"amount":10,"rating":65},{"carddbid":5003036,"cardsubtype":65,"weightrare":0,"cardassetid":1,"amount":15,"rating":85},{"carddbid":5003037,"cardsubtype":66,"weightrare":0,"cardassetid":1,"amount":5,"rating":55},{"carddbid":5003038,"cardsubtype":66,"weightrare":0,"cardassetid":1,"amount":10,"rating":65},{"carddbid":5003039,"cardsubtype":66,"weightrare":0,"cardassetid":1,"amount":15,"rating":85},{"carddbid":5003040,"cardsubtype":67,"weightrare":2,"cardassetid":1,"amount":3,"rating":64},{"carddbid":5003041,"cardsubtype":67,"weightrare":2,"cardassetid":1,"amount":6,"rating":74},{"carddbid":5003042,"cardsubtype":67,"weightrare":2,"cardassetid":1,"amount":10,"rating":95},{"carddbid":5003059,"cardsubtype":91,"weightrare":10,"cardassetid":34,"amount":0,"rating":95},{"carddbid":5003060,"cardsubtype":92,"weightrare":20,"cardassetid":34,"amount":0,"rating":90},{"carddbid":5003061,"cardsubtype":93,"weightrare":10,"cardassetid":34,"amount":0,"rating":95},{"carddbid":5003062,"cardsubtype":94,"weightrare":20,"cardassetid":34,"amount":0,"rating":90},{"carddbid":5003063,"cardsubtype":95,"weightrare":20,"cardassetid":34,"amount":0,"rating":95},{"carddbid":5003064,"cardsubtype":96,"weightrare":20,"cardassetid":34,"amount":0,"rating":95},{"carddbid":5003065,"cardsubtype":97,"weightrare":20,"cardassetid":34,"amount":0,"rating":95},{"carddbid":5003066,"cardsubtype":98,"weightrare":20,"cardassetid":34,"amount":0,"rating":95},{"carddbid":5003067,"cardsubtype":99,"weightrare":10,"cardassetid":34,"amount":0,"rating":90},{"carddbid":5003068,"cardsubtype":100,"weightrare":10,"cardassetid":34,"amount":0,"rating":95},{"carddbid":5003069,"cardsubtype":101,"weightrare":10,"cardassetid":34,"amount":0,"rating":90},{"carddbid":5003070,"cardsubtype":102,"weightrare":10,"cardassetid":34,"amount":0,"rating":95},{"carddbid":5003071,"cardsubtype":103,"weightrare":20,"cardassetid":34,"amount":0,"rating":90},{"carddbid":5003072,"cardsubtype":104,"weightrare":20,"cardassetid":34,"amount":0,"rating":95},{"carddbid":5003073,"cardsubtype":105,"weightrare":20,"cardassetid":34,"amount":0,"rating":95},{"carddbid":5003074,"cardsubtype":106,"weightrare":20,"cardassetid":34,"amount":0,"rating":90},{"carddbid":5003075,"cardsubtype":107,"weightrare":10,"cardassetid":34,"amount":0,"rating":95},{"carddbid":5003076,"cardsubtype":108,"weightrare":10,"cardassetid":34,"amount":0,"rating":95},{"carddbid":5003077,"cardsubtype":109,"weightrare":20,"cardassetid":34,"amount":0,"rating":95},{"carddbid":5003078,"cardsubtype":110,"weightrare":20,"cardassetid":34,"amount":0,"rating":95},{"carddbid":5003079,"cardsubtype":121,"weightrare":0,"cardassetid":35,"amount":0,"rating":95},{"carddbid":5003080,"cardsubtype":122,"weightrare":0,"cardassetid":35,"amount":0,"rating":95},{"carddbid":5003081,"cardsubtype":123,"weightrare":0,"cardassetid":35,"amount":0,"rating":95},{"carddbid":5003082,"cardsubtype":124,"weightrare":0,"cardassetid":35,"amount":0,"rating":95},{"carddbid":5003083,"cardsubtype":125,"weightrare":0,"cardassetid":35,"amount":0,"rating":99},{"carddbid":5003084,"cardsubtype":126,"weightrare":0,"cardassetid":35,"amount":0,"rating":95},{"carddbid":5003085,"cardsubtype":127,"weightrare":0,"cardassetid":35,"amount":0,"rating":99},{"carddbid":5003086,"cardsubtype":128,"weightrare":0,"cardassetid":35,"amount":0,"rating":95},{"carddbid":5003087,"cardsubtype":129,"weightrare":0,"cardassetid":35,"amount":0,"rating":95},{"carddbid":5003088,"cardsubtype":130,"weightrare":0,"cardassetid":35,"amount":0,"rating":99},{"carddbid":5003089,"cardsubtype":131,"weightrare":0,"cardassetid":35,"amount":0,"rating":99},{"carddbid":5003090,"cardsubtype":132,"weightrare":0,"cardassetid":35,"amount":0,"rating":99},{"carddbid":5003091,"cardsubtype":133,"weightrare":0,"cardassetid":35,"amount":0,"rating":95},{"carddbid":5003092,"cardsubtype":134,"weightrare":0,"cardassetid":35,"amount":0,"rating":95},{"carddbid":5003093,"cardsubtype":135,"weightrare":0,"cardassetid":35,"amount":0,"rating":95},{"carddbid":5003094,"cardsubtype":136,"weightrare":0,"cardassetid":35,"amount":0,"rating":95},{"carddbid":5003095,"cardsubtype":250,"weightrare":0,"cardassetid":50,"amount":0,"rating":75},{"carddbid":5003096,"cardsubtype":251,"weightrare":0,"cardassetid":50,"amount":1,"rating":95},{"carddbid":5003097,"cardsubtype":252,"weightrare":0,"cardassetid":50,"amount":1,"rating":95},{"carddbid":5003098,"cardsubtype":253,"weightrare":0,"cardassetid":50,"amount":1,"rating":95},{"carddbid":5003099,"cardsubtype":254,"weightrare":0,"cardassetid":50,"amount":1,"rating":95},{"carddbid":5003100,"cardsubtype":255,"weightrare":0,"cardassetid":50,"amount":1,"rating":95},{"carddbid":5003101,"cardsubtype":256,"weightrare":0,"cardassetid":50,"amount":2,"rating":95},{"carddbid":5003102,"cardsubtype":257,"weightrare":0,"cardassetid":50,"amount":2,"rating":95},{"carddbid":5003103,"cardsubtype":258,"weightrare":0,"cardassetid":50,"amount":2,"rating":95},{"carddbid":5003104,"cardsubtype":259,"weightrare":0,"cardassetid":50,"amount":2,"rating":95},{"carddbid":5003105,"cardsubtype":260,"weightrare":0,"cardassetid":50,"amount":2,"rating":95},{"carddbid":5003106,"cardsubtype":261,"weightrare":0,"cardassetid":50,"amount":3,"rating":95},{"carddbid":5003107,"cardsubtype":262,"weightrare":0,"cardassetid":50,"amount":3,"rating":95},{"carddbid":5003108,"cardsubtype":263,"weightrare":0,"cardassetid":50,"amount":3,"rating":95},{"carddbid":5003109,"cardsubtype":264,"weightrare":0,"cardassetid":50,"amount":3,"rating":95},{"carddbid":5003110,"cardsubtype":265,"weightrare":0,"cardassetid":50,"amount":3,"rating":95},{"carddbid":5003111,"cardsubtype":266,"weightrare":0,"cardassetid":50,"amount":4,"rating":95},{"carddbid":5003112,"cardsubtype":267,"weightrare":0,"cardassetid":50,"amount":4,"rating":95},{"carddbid":5003113,"cardsubtype":268,"weightrare":0,"cardassetid":50,"amount":4,"rating":95},{"carddbid":5003114,"cardsubtype":269,"weightrare":0,"cardassetid":51,"amount":5,"rating":95},{"carddbid":5003115,"cardsubtype":270,"weightrare":0,"cardassetid":51,"amount":5,"rating":95},{"carddbid":5003116,"cardsubtype":271,"weightrare":0,"cardassetid":51,"amount":5,"rating":95},{"carddbid":5003117,"cardsubtype":272,"weightrare":0,"cardassetid":51,"amount":5,"rating":95},{"carddbid":5003118,"cardsubtype":273,"weightrare":0,"cardassetid":51,"amount":5,"rating":75},{"carddbid":5003119,"cardsubtype":300,"weightrare":0,"cardassetid":32,"amount":1,"rating":95},{"carddbid":5003120,"cardsubtype":301,"weightrare":0,"cardassetid":32,"amount":4,"rating":95},{"carddbid":5003121,"cardsubtype":302,"weightrare":0,"cardassetid":32,"amount":7,"rating":95},{"carddbid":5003122,"cardsubtype":303,"weightrare":0,"cardassetid":32,"amount":10,"rating":95},{"carddbid":5003123,"cardsubtype":304,"weightrare":15,"cardassetid":32,"amount":13,"rating":95},{"carddbid":5003124,"cardsubtype":305,"weightrare":0,"cardassetid":32,"amount":14,"rating":95},{"carddbid":5003125,"cardsubtype":306,"weightrare":15,"cardassetid":32,"amount":16,"rating":95},{"carddbid":5003126,"cardsubtype":307,"weightrare":0,"cardassetid":32,"amount":17,"rating":95},{"carddbid":5003127,"cardsubtype":308,"weightrare":15,"cardassetid":32,"amount":19,"rating":95},{"carddbid":5003128,"cardsubtype":309,"weightrare":0,"cardassetid":32,"amount":20,"rating":95},{"carddbid":5003129,"cardsubtype":310,"weightrare":15,"cardassetid":32,"amount":31,"rating":95},{"carddbid":5003130,"cardsubtype":311,"weightrare":0,"cardassetid":32,"amount":32,"rating":95},{"carddbid":5003131,"cardsubtype":312,"weightrare":15,"cardassetid":32,"amount":39,"rating":95},{"carddbid":5003132,"cardsubtype":313,"weightrare":0,"cardassetid":32,"amount":41,"rating":95},{"carddbid":5003133,"cardsubtype":314,"weightrare":0,"cardassetid":32,"amount":50,"rating":95},{"carddbid":5003134,"cardsubtype":315,"weightrare":15,"cardassetid":32,"amount":53,"rating":95},{"carddbid":5003135,"cardsubtype":316,"weightrare":0,"cardassetid":32,"amount":54,"rating":95},{"carddbid":5003136,"cardsubtype":317,"weightrare":0,"cardassetid":32,"amount":56,"rating":95},{"carddbid":5003137,"cardsubtype":318,"weightrare":0,"cardassetid":32,"amount":60,"rating":95},{"carddbid":5003138,"cardsubtype":319,"weightrare":0,"cardassetid":32,"amount":61,"rating":95},{"carddbid":5003139,"cardsubtype":320,"weightrare":0,"cardassetid":32,"amount":63,"rating":95},{"carddbid":5003140,"cardsubtype":321,"weightrare":0,"cardassetid":32,"amount":65,"rating":95},{"carddbid":5003141,"cardsubtype":322,"weightrare":0,"cardassetid":32,"amount":66,"rating":95},{"carddbid":5003142,"cardsubtype":323,"weightrare":0,"cardassetid":32,"amount":67,"rating":95},{"carddbid":5003143,"cardsubtype":324,"weightrare":0,"cardassetid":32,"amount":68,"rating":95},{"carddbid":5003144,"cardsubtype":325,"weightrare":0,"cardassetid":32,"amount":80,"rating":95},{"carddbid":5003145,"cardsubtype":326,"weightrare":0,"cardassetid":32,"amount":83,"rating":95},{"carddbid":5003146,"cardsubtype":327,"weightrare":0,"cardassetid":32,"amount":189,"rating":95},{"carddbid":5003147,"cardsubtype":328,"weightrare":0,"cardassetid":32,"amount":308,"rating":95},{"carddbid":5003148,"cardsubtype":329,"weightrare":0,"cardassetid":32,"amount":332,"rating":95},{"carddbid":5003149,"cardsubtype":330,"weightrare":0,"cardassetid":32,"amount":335,"rating":95},{"carddbid":5003150,"cardsubtype":331,"weightrare":0,"cardassetid":32,"amount":336,"rating":95},{"carddbid":5003151,"cardsubtype":332,"weightrare":0,"cardassetid":32,"amount":341,"rating":95},{"carddbid":5003152,"cardsubtype":333,"weightrare":0,"cardassetid":32,"amount":347,"rating":95},{"carddbid":5003153,"cardsubtype":334,"weightrare":0,"cardassetid":32,"amount":350,"rating":95},{"carddbid":5003154,"cardsubtype":335,"weightrare":0,"cardassetid":32,"amount":351,"rating":95},{"carddbid":5003155,"cardsubtype":336,"weightrare":0,"cardassetid":32,"amount":353,"rating":95},{"carddbid":5003156,"cardsubtype":337,"weightrare":1,"cardassetid":32,"amount":2118,"rating":95},{"carddbid":5003157,"cardsubtype":338,"weightrare":0,"cardassetid":32,"amount":322,"rating":95},{"carddbid":5003158,"cardsubtype":339,"weightrare":0,"cardassetid":32,"amount":349,"rating":95},{"carddbid":5003159,"cardsubtype":340,"weightrare":0,"cardassetid":32,"amount":2025,"rating":95}]} |