From 8f3aa75fa93e10aaec213bc7cb2da3ab6c275829 Mon Sep 17 00:00:00 2001 From: Phillip Tarrant Date: Tue, 14 Jul 2026 20:09:29 -0500 Subject: [PATCH] chore(warnings): silence the four pre-existing script warnings the creation screen surfaced MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Not errors and not regressions — Godot printed them on every script reload and they predate M4-b. Cleared so a real warning is not lost in the noise: - Redundant `const ContentDB`/`const NewGame` preloads that shadowed their own `class_name` globals (character_creation.gd, creation_draft.gd) — the class is already global, so the const bought nothing. - Two `log` locals shadowing the built-in `log()` — renamed to `out` (canon_log.from_dict) and `canon` (NewGame.construct); the "log" dict KEY is the public contract and is unchanged. - currency.format's copper->denomination division is integer BY DESIGN (the remainder is carried, not lost) — annotated `@warning_ignore` to say so. 319 client tests green; headless parse reports none of the four sites. Co-Authored-By: Claude Opus 4.8 (1M context) --- client/scripts/canon_log/canon_log.gd | 18 +++++++++--------- client/scripts/newgame/new_game.gd | 16 ++++++++-------- client/scripts/state/currency.gd | 4 +++- .../scripts/ui/creation/character_creation.gd | 2 -- client/scripts/ui/creation/creation_draft.gd | 2 -- 5 files changed, 20 insertions(+), 22 deletions(-) diff --git a/client/scripts/canon_log/canon_log.gd b/client/scripts/canon_log/canon_log.gd index 01ca212..661de7a 100644 --- a/client/scripts/canon_log/canon_log.gd +++ b/client/scripts/canon_log/canon_log.gd @@ -99,17 +99,17 @@ static func from_dict(d: Dictionary) -> CanonLog: if v != SCHEMA_VERSION: push_error("unsupported canon_log schema_version: %s" % v) return null - var log := CanonLog.new() - log.player = LogPlayer.from_dict(d.get("player", {})) - log.location = LogLocation.from_dict(d.get("location", {})) + var out := CanonLog.new() + out.player = LogPlayer.from_dict(d.get("player", {})) + out.location = LogLocation.from_dict(d.get("location", {})) for m in d.get("party", []): - log.party.append(PartyMember.from_dict(m)) + out.party.append(PartyMember.from_dict(m)) for e in d.get("recent_events", []): - log.push_event(e) + out.push_event(e) for f in d.get("established_facts", []): - log.add_fact(f) + out.add_fact(f) for q in d.get("active_quests", []): - log.active_quests.append(Quest.from_dict(q)) + out.active_quests.append(Quest.from_dict(q)) for h in d.get("humiliations", []): - log.humiliations.append(Humiliation.from_dict(h)) - return log + out.humiliations.append(Humiliation.from_dict(h)) + return out diff --git a/client/scripts/newgame/new_game.gd b/client/scripts/newgame/new_game.gd index 0deba42..a55a7bd 100644 --- a/client/scripts/newgame/new_game.gd +++ b/client/scripts/newgame/new_game.gd @@ -58,31 +58,31 @@ static func construct(origin: Dictionary, world: ContentDB, creation: Dictionary sheet.mp = sheet.max_mp() state.sheet = sheet - var log := CanonLog.new() - log.player = LogPlayer.new(str(creation.get("name", "")), sheet.race_id, + var canon := CanonLog.new() + canon.player = LogPlayer.new(str(creation.get("name", "")), sheet.race_id, sheet.calling_id, state.luck_descriptor()) var loc: Dictionary = world.location(origin["start_location_id"]) - log.set_location(loc.get("id", ""), loc.get("name", "")) + canon.set_location(loc.get("id", ""), loc.get("name", "")) var overrides: Dictionary = origin.get("disposition_overrides", {}) var companion_ids := {} for c in world.companions(): companion_ids[c["id"]] = true - log.party.append(PartyMember.new(c["id"], c.get("name", ""), int(overrides.get(c["id"], 0)))) + canon.party.append(PartyMember.new(c["id"], c.get("name", ""), int(overrides.get(c["id"], 0)))) for npc_id in overrides: if not companion_ids.has(npc_id): state.set_npc_disposition(npc_id, int(overrides[npc_id])) for line in origin.get("situation", []): - log.push_event(line) + canon.push_event(line) for fact in origin.get("opening_facts", []): - log.add_fact(fact) + canon.add_fact(fact) var quest_id: Variant = origin.get("start_quest_id", null) if quest_id != null: var qd: Dictionary = world.quest(quest_id) - log.active_quests.append(Quest.new(qd.get("id", ""), qd.get("name", ""), "active", + canon.active_quests.append(Quest.new(qd.get("id", ""), qd.get("name", ""), "active", qd.get("objective", ""))) # inventory grants -> game state (NOT the log). §2. grant() routes currency to the @@ -90,7 +90,7 @@ static func construct(origin: Dictionary, world: ContentDB, creation: Dictionary for g in origin.get("inventory_grants", []): state.grant(g.get("item_id", ""), int(g.get("qty", 0))) - return {"ok": true, "errors": [], "log": log, "state": state} + return {"ok": true, "errors": [], "log": canon, "state": state} static func roll_attributes(character_seed: int) -> Dictionary: diff --git a/client/scripts/state/currency.gd b/client/scripts/state/currency.gd index 4d19d0b..18834c4 100644 --- a/client/scripts/state/currency.gd +++ b/client/scripts/state/currency.gd @@ -31,10 +31,12 @@ static func format(copper: int) -> String: return "0c" var parts: Array[String] = [] var left := copper - var gold := left / GOLD # int division + @warning_ignore("integer_division") # denomination math — the remainder is carried, not lost + var gold := left / GOLD if gold > 0: parts.append("%dg" % gold) left -= gold * GOLD + @warning_ignore("integer_division") var silver := left / SILVER if silver > 0: parts.append("%ds" % silver) diff --git a/client/scripts/ui/creation/character_creation.gd b/client/scripts/ui/creation/character_creation.gd index 29c0b53..10bd2bd 100644 --- a/client/scripts/ui/creation/character_creation.gd +++ b/client/scripts/ui/creation/character_creation.gd @@ -14,8 +14,6 @@ extends Control signal creation_confirmed(creation: Dictionary) -const ContentDB = preload("res://scripts/content/content_db.gd") - ## Shown under the CTA when the draft is legal. When it is NOT legal, the first ## validation error takes this slot instead — the player is told what is wrong, in ## the same place, in the same dry voice. §13: even the nag is content. diff --git a/client/scripts/ui/creation/creation_draft.gd b/client/scripts/ui/creation/creation_draft.gd index 7bb55d5..b0c32c8 100644 --- a/client/scripts/ui/creation/creation_draft.gd +++ b/client/scripts/ui/creation/creation_draft.gd @@ -14,8 +14,6 @@ extends RefCounted ## §7: LCK is not here. Not a field, not an accessor, not a key. It is rolled ## inside construct off the same seed, immediately after MAG, and never surfaces. -const NewGame = preload("res://scripts/newgame/new_game.gd") - var name: String = "" var race_id: String = "" var calling_id: String = ""