Skip to content

Sonar Module

Finds and surveys world sites through self.sonar. A scan checks the area around the vehicle; driving alone does not scan. Use get_component("nocturna").points_of_interest() to find unscanned ”?” markers, travel near one, then call scan() and survey(site). Research unlocks thermal vents, wells, and exotic deposits. Results are saved in the Journal. Local Harvester sectors, biological sites, and radiation fields use different scanners.

Access: self.sonar (on a vehicle with the module mounted) · This page also covers the SonarModule API type.

VariantRangeHardness limitSurvey tier
Basic50 m1"basic"
Wide180 m3"wide"
Deep280 m4"deep" (required for oil-well discovery)

All methods raise ReferenceError on a stale captured module reference (module no longer mounted); read self.sonar again after mounting a sonar.

Sweep for compatible Sites within range of the vehicle’s current position. Contact types include MiningSite, ThermalVent, WaterWell, OilWell, ExoticDeposit, and GeologicalAnomaly. A completed sweep updates the Journal with newly classified contacts.

Returns: SonarScanResult (payload .sites)

StatusKindMeaning
"ok"successSweep completed; result.sites has every compatible contact (empty list = none in range)
"too_hard"partialSweep detected a nearby unresolved contact above the mounted sonar’s hardness limit
"tier_too_low"partialDetected a contact this sonar tier cannot classify
"research_required"partialDetected a contact whose classification research is locked
"wrong_scanner"partialDetected a contact that vehicle sonar cannot classify
"busy"transientAnother field action occupies the vehicle
"no_power"rejectionNot enough battery for a sweep

Reveal the details available for a productive Site. Pass a site id string, a Site from scan().sites, or a dictionary/class instance with a string id field. A repeat survey is free and instant unless a better sonar tier can reveal more. Inert GeologicalAnomaly contacts are already resolved by scanning.

Returns: SurveyResult (payload .site) · Outcomes: "ok" / "busy" (transient) / "not_discovered" / "research_required" / "tier_too_low" / "out_of_range" / "too_hard" / "no_power" · Raises: ValueError for an empty site argument

Current sonar range in meters: 50 basic, 180 Wide, 280 Deep.

Returns: Number (meters)

Maximum mineral hardness this sonar can identify: 1 basic, 3 Wide, 4 Deep.

Returns: Number

Survey-depth tier granted by this sonar: "basic" / "wide" / "deep". Controls how much of a thermal vent or exotic deposit survey() reveals; "deep" is also required for oil-well discovery.

Returns: String