From 89dc9baa61ce84e6e1bd684f50fcd4f1b7759354 Mon Sep 17 00:00:00 2001 From: funman300 Date: Sun, 2 Aug 2026 09:56:18 -0700 Subject: [PATCH] fifa17-recon: fix active squad resetting on reload FIFA's updateActiveSquad PUT stores each slot as itemData={id:} (a reference), not the full player. We saved the bare references, so the squad reloaded empty ("active squad resets"). Add Store.reconstruct_squad() to re-embed the full club item by id on GET /squad/0, so the saved squad reloads with its real players. Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_01PN5bmpDVQR1aXgefyWAt7o --- fifa17-recon/tools/fut_store.py | 16 ++++++++++++++++ fifa17-recon/tools/utas_server.py | 2 +- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/fifa17-recon/tools/fut_store.py b/fifa17-recon/tools/fut_store.py index 71f3e1c..3946a07 100644 --- a/fifa17-recon/tools/fut_store.py +++ b/fifa17-recon/tools/fut_store.py @@ -149,6 +149,22 @@ class Store: sq = self.load()["squads"] return sq[0] if sq else None + def reconstruct_squad(self, squad): + """FIFA's updateActiveSquad PUT stores each slot as itemData={id:} + (a reference). Re-embed the FULL club item by id so the squad reloads with + real players instead of empty slots ('active squad resets').""" + by_id = {it["id"]: it for it in self.items()} + out = dict(squad) + players = [] + for pl in squad.get("players", []): + iid = (pl.get("itemData") or {}).get("id", 0) + if iid and iid in by_id: + players.append({**pl, "itemData": by_id[iid]}) + else: + players.append(pl) + out["players"] = players + return out + def new_item_id(self): with _LOCK: p = self.load(); i = p["nextItemId"]; p["nextItemId"] += 1; self._save() diff --git a/fifa17-recon/tools/utas_server.py b/fifa17-recon/tools/utas_server.py index e7d0f28..9e8b2e2 100755 --- a/fifa17-recon/tools/utas_server.py +++ b/fifa17-recon/tools/utas_server.py @@ -204,7 +204,7 @@ def squad_route(h): STORE.save_squad(sq) return 200, sq saved = STORE.active_squad() - return 200, (saved if saved else SQUAD) + return 200, (STORE.reconstruct_squad(saved) if saved else SQUAD) # ---- STORE / PACKS (first-cut; iterate against the log) ---------------------