Skip to content

Farm Sim Manager integration: first-run crop rules and whole-map regeneration API #20

Description

@SimGamerJen

Goal

Provide a small, stable CCO integration surface for the planned Windows Farm Sim Manager / save-game generator.

The desktop application should only define the initial crop rules for a new career. CCO remains authoritative for crop control throughout the save lifecycle.

Intended flow

  1. Farm Sim Manager creates/configures a new FS25 save.
  2. It writes the initial CCO crop policy/configuration for that save.
  3. On the first map load, a lightweight bootstrap request tells CCO to regenerate NPC fields using the configured CCO rules.
  4. The request is marked complete and is not repeated on subsequent loads.
  5. From that point onward, the player manages crop rules normally through CCO.

Scope

  • Expose a stable API entry point for a first-run whole-map/NPC-field regeneration using CCO's current rules.
  • Reuse the existing reset/reseed engine rather than duplicating crop-generation logic in the launcher or bootstrap mod.
  • Support the existing seasonal reseed behaviour.
  • Return a clear success/failure result so the bootstrap can mark initialisation complete safely.
  • Keep field ownership independent from crop-policy regeneration; the launcher does not need to infer the player's starting fields.
  • Add a versioned API contract so future CCO releases can evolve without silently breaking Farm Sim Manager.

Non-goals

  • Reproduce the full CCO UI in the desktop application.
  • Per-field hand-authoring of the initial map state.
  • Move ongoing crop-control responsibility into the desktop launcher.

Candidate API shape

Conceptually only; final naming/arguments should follow CCO conventions:

CropControlOverrideAPI = CropControlOverrideAPI or {}
CropControlOverrideAPI.apiVersion = 1

function CropControlOverrideAPI.regenerateInitialMap(options)
    -- Uses the currently loaded per-save CCO rules.
    -- Returns success, summaryOrError.
end

The implementation should wrap/refactor the existing NPC reset/reseed functionality so there is one crop-regeneration engine shared by the GUI/console/API paths.

Acceptance criteria

  • A newly generated save can request regeneration once after map systems are ready.
  • Enabled/NPC-allowed crop rules are respected.
  • Seasonal reseed rules are respected when requested.
  • Invalid/missing configuration fails safely without partially marking initialisation complete.
  • API reports completion plus useful counts/errors.
  • Existing CCO in-game behaviour remains unchanged for normal saves.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions