maniator / maniator/verticopolis

[Enhancement]: [P3] Optionally recognize TDT-imported original towers as Founding towers

Open
#635 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement
Dominant language
TypeScript
Stars
5
Forks
1
PR merge metrics
No merged PRs in 30d

Description

Narrowed from the original founder-recognition scope after the no-appVersion save case shipped (PR #633).

Shipped: markFounderFromLoadedFile (src/engine/sim/founderStatus.ts) now promotes any tower loaded from a real save FILE or localStorage slot with no appVersion stamp to Founder (wired into SaveGame.loadResult/loadSlot/import). This recovers genuine pre-v1.23.0 towers (which predate the appVersion stamp) — including the owner's flagship towerone saves. It lives at the load boundary, not in deserialize, so an in-session undo/redo snapshot (also stamp-free) can't flip a brand-new 2.0 tower to Founder. Verified against 14 real owner saves plus the leakage cases (new game stays non-founder; a post-2.0 import is not stamped founder unless it carries the earned flag).

Remaining (this issue): a TDT-imported original SimTower tower (src/game/saveLoad.ts binary import) synthesizes a save with no appVersion, and is deliberately NOT auto-founded, because importing a 1994 tower into 2.0 is arguably founding a new tower rather than loading a pre-2.0 Verticopolis save. Decision needed: should the "most founding" towers of all carry the badge? If yes, call markFounderFromLoadedFile on the TDT import path too. Low priority / product judgment.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with src/game/saveLoad.ts and trace the TDT binary import path, then compare it with markFounderFromLoadedFile in src/engine/sim/founderStatus.ts and the existing SaveGame load wiring. The remaining work depends on deciding whether an imported original SimTower tower counts as a founding tower; done means that product decision is reflected consistently in the import behavior.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
game-dev
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.