Nav beacon
A Nav beacon is a deployable map-marker object. It does not provide radar coverage like a Satellite — its job is purely map labelling. Player deploys nav beacons to mark interesting positions; NPC factions deploy them as part of patrol-route definitions and territory boundary markers.
Inheritance: component → destructible → object → navbeacon. The datatype is empty — navbeacon adds zero properties; everything is inherited from object.
Related but separate: class.jumpbeacon is a distinct class (Pirate DLC) — player-deployable beacon that lets ships jump to it. They look similar in the UI but are different abstractions. See Gate for jumpbeacon coverage.
Properties
Section titled “Properties”There are no nav-beacon-specific properties. All accessors are inherited from object:
| Property | Source | Description |
|---|---|---|
.sector / .zone / .position | object | Location |
.owner / .trueowner | object | Deploying faction |
.macro | component | Deployment macro |
.knownname | component | Display name (player can rename via UI) |
.hull / .hullpercentage | destructible | Damage state |
.isclass.{class.navbeacon} | component | Type check (NOT .isclass.{class.gate}!) |
Actions
Section titled “Actions”Deploy a nav beacon (player gift / scripted)
Section titled “Deploy a nav beacon (player gift / scripted)”<add_ammo object="player.ship" macro="ware.eq_arg_navbeacon_01.objectmacro" amount="1"/>Same deployable pattern as Satellite: add_ammo macro= puts it in the player’s ammostorage; the player deploys it from the UI.
Direct-spawn via create_object
Section titled “Direct-spawn via create_object”<create_object name="$Beacon" macro="macro.eq_arg_navbeacon_01_macro" owner="$Faction" sector="$Sector"> <position x="0" y="0" z="0"/></create_object>For NPCs and scripted placement.
Find all nav beacons in a sector
Section titled “Find all nav beacons in a sector”<find_object name="$Beacons" space="$Sector" class="class.navbeacon" multiple="true"/>Events
Section titled “Events”Unlike Satellite (no dedicated event), nav beacon has a launch event:
| Event | When | Notes |
|---|---|---|
event_navbeacon_launched | Nav beacon deployed in a space | Filter by space= (sector/cluster/galaxy) or group=. event.param2.{1} is the new beacon. Vanilla rml_deploy_in_sectors.xml:107, rml_deployinplace.xml:210, x4ep1_mentor_subscription.xml:8533 |
event_object_destroyed | Nav beacon destroyed | Standard object event |
The event_navbeacon_launched is the main hook modders use to react to player nav beacon placement (e.g., the Mentor Subscription quest in x4ep1_mentor_subscription.xml:8624 checks event.param2.{1}.isclass.navbeacon and .isplayerowned).
Common gotchas
Section titled “Common gotchas”- ⚠ Nav beacon ≠ jumpbeacon.
class.navbeaconis a map marker.class.jumpbeaconis a Pirate DLC deployable that allows jumping. Don’t conflate them —isclass.navbeaconis FALSE for a jumpbeacon and vice versa. - ⚠ Nav beacon ≠ gate. Nav beacons are not connectivity nodes;
find_gatedoes not return them. - ⚠ Nav beacon datatype is empty. No properties beyond inherited object accessors. Don’t expect
.range,.poweretc. like satellites have. - ⚠ Same
add_ammo macro=pattern as Satellite. Don’t tryadd_inventory ware=— it puts the ware in NPC inventory, not in the deployable bag. See Satellite gotchas. - ⚠ NPC patrol nav beacons are not always visible to the player. Faction-owned nav beacons may be hidden until uncovered. Filter
find_objectresults by.knowntoplayerif your mod wants only player-visible markers. - ⚠
event_navbeacon_launchedfires for ALL factions in scope. Checkevent.param2.{1}.isplayerownedbefore assuming the beacon is the player’s. - ⚠ A nav beacon’s
.knownnameis the player’s free-text label. Empty before the player renames. Don’t depend on it for unique identification — use the object ref.
Examples
Section titled “Examples”Example 1: Give the player a nav beacon
Section titled “Example 1: Give the player a nav beacon”<add_ammo object="player.ship" macro="ware.eq_arg_navbeacon_01.objectmacro" amount="1"/>
<write_to_logbook text="'Nav beacon added to ' + player.ship.knownname"/>Example 2: React when the player deploys a nav beacon
Section titled “Example 2: React when the player deploys a nav beacon”<cue name="WatchPlayerBeacon" instantiate="true"> <conditions> <event_navbeacon_launched space="player.galaxy"/> <check_value value="event.param2.{1}.isclass.navbeacon and event.param2.{1}.isplayerowned"/> </conditions> <actions> <write_to_logbook text="'Player placed nav beacon at ' + event.param2.{1}.sector.knownname"/> </actions></cue>Pattern from vanilla x4ep1_mentor_subscription.xml:8624.
Example 3: List all player nav beacons galaxy-wide
Section titled “Example 3: List all player nav beacons galaxy-wide”<find_object name="$AllBeacons" space="player.galaxy" class="class.navbeacon" multiple="true"/>
<create_list name="$Mine"/>
<do_for_each name="$beacon" in="$AllBeacons"> <do_if value="$beacon.isplayerowned"> <append_to_list name="$Mine" exact="$beacon"/> </do_if></do_for_each>
<write_to_logbook text="'Player has ' + $Mine.count + ' nav beacons'"/>Architectural context
Section titled “Architectural context”- How NPC patrol routes use nav beacons: Architectural overview Patrol coordination — patrol order definitions reference nav beacon group ids; planted beacons define waypoints.
- Subscription tie-in: The Mentor Subscription quest (
x4ep1_mentor_subscription.xml) usesevent_navbeacon_launchedto gate progression on player exploration.
Related
Section titled “Related”- Satellite — sibling deployable, provides radar coverage (different role).
- Gate —
class.jumpbeaconlives here, the connectivity-deployable. - Resourceprobe — sibling deployable, scans for resources.
- Mine — sibling deployable, lays explosives.
- Sector — where nav beacons exist.
- Ware —
ware.eq_arg_navbeacon_*is the inventory item.