Skip to content

Messages PlayerPath

rebaserHEAD edited this page Oct 24, 2026 · 62 revisions

reference, committed verified 2026-10-24 dev 8cd2e51

Every message in the PlayerPath area: its opcode, direction, how far it is verified, and its fields.

Note

Generated from the message declarations at dev 8cd2e51 by Tools/NexusTomorrow.ProtocolReference. Don't edit it by hand: change the declaration's documentation and regenerate.

Server to client

0x00F4 ExplorerPowerMapAdvanced

Advances an explorer power map mission by one step.

Opcode Direction Verified to Mark
0x00F4 to client fields
Field Bits Encoding Meaning
PowerMapId 14 unsigned The power map, a PathExplorerPowerMap table id: the client finds the explorer mission whose object it is.

The client adds one to the mission's step count and raises PlayerPathMissionAdvanced.

0x00F5 ExplorerPowerMapStarted

Starts an explorer power map mission, with the unit to follow.

Opcode Direction Verified to Mark
0x00F5 to client fields
Field Bits Encoding Meaning
PowerMapId 14 unsigned The power map, a PathExplorerPowerMap table id: the client finds the explorer mission whose object it is.
TargetUnitId 32 unsigned The unit to follow, by unit id.

The client keeps the unit on the mission and raises PlayerPathExplorerPowerMapStarted with the mission and the unit.

0x00F6 ExplorerPowerMapEntered

Sets an explorer power map mission's inside mark, which PathMission:IsExplorerPowerMapReady reads.

Opcode Direction Verified to Mark
0x00F6 to client fields
Field Bits Encoding Meaning
PowerMapId 14 unsigned The power map, a PathExplorerPowerMap table id: the client finds the explorer mission whose object it is.

While the mark is set the client sends ExplorerPowerMapProgress; ExplorerPowerMapExited clears it.

0x00F7 ExplorerPowerMapExited

Clears an explorer power map mission's inside mark, which PathMission:IsExplorerPowerMapReady reads.

Opcode Direction Verified to Mark
0x00F7 to client fields
Field Bits Encoding Meaning
PowerMapId 14 unsigned The power map, a PathExplorerPowerMap table id: the client finds the explorer mission whose object it is.

0x00F8 ExplorerPowerMapFailed

Clears an explorer power map mission's unit to follow and its wait, and resets its step count (ExplorerPowerMapAdvanced).

Opcode Direction Verified to Mark
0x00F8 to client fields
Field Bits Encoding Meaning
PowerMapId 14 unsigned The power map, a PathExplorerPowerMap table id: the client finds the explorer mission whose object it is.

0x00FA ExplorerPowerMapWaiting

Puts an explorer power map mission into its wait.

Opcode Direction Verified to Mark
0x00FA to client fields
Field Bits Encoding Meaning
PowerMapId 14 unsigned The power map, a PathExplorerPowerMap table id: the client finds the explorer mission whose object it is.

The client raises PlayerPathExplorerPowerMapWaiting with a delay it takes from the tables (the PathExplorerPowerMap row's victoryPauseMS, or a GameFormula value), not from the message.

0x01AA PathXpChanged

Sets the XP of the player's active path (ActivePath).

Opcode Direction Verified to Mark
0x01AA to client fields
Field Bits Encoding Meaning
Xp 32 unsigned The active path's XP, which PlayerPathLib.GetPathXP returns for that path.

The client raises UpdatePathXp with the gain over the XP it held, and PathLevelUp when the level the new XP gives is higher.

0x0667 ScientistExperimentationStarted

Starts a scientist experimentation at a unit, with the pattern to match.

Opcode Direction Verified to Mark
0x0667 to client fields
Field Bits Encoding Meaning
UnitId 32 unsigned The unit experimented on, by unit id.
Pattern[0] 32 unsigned The pattern to match, four values in order.
Pattern[1] 32 unsigned
Pattern[2] 32 unsigned
Pattern[3] 32 unsigned

The client takes it only while the player is interacting as ScientistActivate. It finds the experimentation mission (a PathMission row of type 22) for the unit's creature, keeps the pattern, fills its set of choices to four and shuffles it, and raises InvokeScientistExperimentation. ScientistExperimentationAttempt carries an attempt that matches the pattern.

0x0669 ScanbotState

Reports the scientist's scanbot out or back, with its cooldown.

Opcode Direction Verified to Mark
0x0669 to client purpose
Field Bits Encoding
ScanbotUnitId 32 unsigned
CooldownMs 32 unsigned

The client takes it only on the Scientist path. A ScanbotUnitId other than 0 raises PlayerPathScientistScanBotDeployed; 0 raises the scanbot's despawn and cooldown events. While ScanbotUnitId is not 0 the client sends ScanbotDismiss or ScanbotDismissFromAction where it would send ScanbotSummon.

0x066C SettlerBuildResult

Reports the result of a settler build.

Opcode Direction Verified to Mark
0x066C to client purpose
Field Bits Encoding
Unknown0 32 unsigned
Unknown1 15 unsigned
ImprovementId 14 unsigned

The client takes it only while the player is interacting as SettlerImprovement. It raises SettlerBuildResult with Unknown0 and, when Unknown1 is not 0, the name of the improvement ImprovementId finds.

0x066D SettlerBuildInvoke

Invokes the settler build at a hub's unit, with its improvements.

Opcode Direction Verified to Mark
0x066D to client fields
Field Bits Encoding Meaning
HubUnitId 32 unsigned The hub's unit, by unit id.
ImprovementIds count 32 unsigned
ImprovementIds array, counted by ImprovementIds count The improvements, by id, which the client passes to InvokeSettlerBuild.
ImprovementIds[] 32 unsigned

The client takes it only while the player is interacting as SettlerImprovement. It raises InvokeSettlerBuild with the unit and the improvements its ids find.

0x066E SettlerBuildStatusList

Updates the status of a settler hub's improvements.

Opcode Direction Verified to Mark
0x066E to client purpose
Field Bits Encoding
HubId 14 unsigned
Improvements count 32 unsigned
Improvements array, counted by Improvements count
Improvements[].ImprovementId 14 unsigned
Improvements[].CurrentTier 32 unsigned
Improvements[].RemainingTime 32 unsigned
Improvements[].Unknown3 32 unsigned

The client finds each improvement in the hub under its id, and raises SettlerBuildStatusUpdate for the hub the player is using.

0x066F SettlerHubReward

Shows a settler hub's reward: the client raises SettlerHubReward with the hub's reward text.

Opcode Direction Verified to Mark
0x066F to client fields
Field Bits Encoding Meaning
HubId 14 unsigned The hub, by id.

0x0671 SettlerBuildStatus

Updates the status of one of a settler hub's improvements.

Opcode Direction Verified to Mark
0x0671 to client purpose
Field Bits Encoding
HubId 14 unsigned
Improvement the fields below
Improvement.ImprovementId 14 unsigned
Improvement.CurrentTier 32 unsigned
Improvement.RemainingTime 32 unsigned
Improvement.Unknown3 32 unsigned

The client finds the improvement in the hub under its id, as it does for each of SettlerBuildStatusList, and raises SettlerBuildStatusUpdate for the hub the player is using.

0x0672 SettlerNotifyUse

Tells the player of a use of a settler improvement.

Opcode Direction Verified to Mark
0x0672 to client purpose
Field Bits Encoding
ImprovementId 14 unsigned
Unknown1 varies wide string

The client formats a line of its own text with the improvement's name and raises SettlerNotifyUse.

0x0673 SettlerInfrastructureComplete

Reports a settler infrastructure complete: the client raises SettlerInfrastructureComplete, with no argument.

Opcode Direction Verified to Mark
0x0673 to client fields
Field Bits Encoding Meaning
Unknown0 32 unsigned The client gives this value no meaning.

0x0674 SettlerInfrastructureUpdated

Updates a settler infrastructure's status.

Opcode Direction Verified to Mark
0x0674 to client fields
Field Bits Encoding Meaning
InfrastructureId 32 unsigned The infrastructure, a PathSettlerInfrastructure table id.
State 2 unsigned The infrastructure's state, which PlayerPathLib.GetCurrentSettlerInfrastructure and GetInfrastructureStatusForMission return as eState.
Percent 32 float The infrastructure's progress, which PlayerPathLib.GetInfrastructureStatusForMission returns as nPercent.

The client finds the infrastructure's status, the one PlayerPathLib.GetInfrastructureStatusForMission reaches through a mission's object id, changes its state to State when they differ, keeps Percent, and raises SettlerInfrastructureUpdated.

0x0675 SettlerInfrastructureStarted

Reports a settler infrastructure started: the client raises SettlerInfrastructureStarted, with no argument.

Opcode Direction Verified to Mark
0x0675 to client fields
Field Bits Encoding Meaning
Unknown0 32 unsigned The client gives this value no meaning.

0x0676 SoldierBuildInvoke

Invokes the soldier build for an event at a unit, with the improvements already built.

Opcode Direction Verified to Mark
0x0676 to client fields
Field Bits Encoding Meaning
UnitId 32 unsigned The unit the build is invoked at, by unit id.
SoldierEventId 14 unsigned The soldier event, a PathSoldierEvent table id.
BuiltImprovementIds count 32 unsigned
BuiltImprovementIds array, counted by BuiltImprovementIds count The improvements built, PathSoldierTowerDefense table ids: the ids ImprovementId carries in 14 bits, here in 32.
BuiltImprovementIds[] 32 unsigned

The client takes it only while the player is interacting as SoldierBuild and the event is in Setup. It adds the ids to the event's built improvements, which SoldierImprovement:IsBuilt reads, and raises InvokeSoldierBuild with the unit and the event.

0x0677 SoldierOrdersText

Has a unit show a soldier mission's orders.

Opcode Direction Verified to Mark
0x0677 to client fields
Field Bits Encoding Meaning
MissionId 15 unsigned The mission, a PathMission table id.
UnitId 32 unsigned The unit that speaks, by unit id.

The client acts only for a unit tied to that mission. It shows the mission's orders text (its localizedTextIdSoldierOrders, or a line of its own when the row has none), with the unit and the player as the target, in the unit's speech bubble.

0x0678 SoldierEventUnitUpdate

Adds a unit to a soldier event under its type, with that type's maximum health.

Opcode Direction Verified to Mark
0x0678 to client fields
Field Bits Encoding Meaning
SoldierEventId 14 unsigned The soldier event, a PathSoldierEvent table id.
UnitId 32 unsigned The unit, by unit id.
UnitType 32 unsigned The unit's type in the event.
MaxHealth 32 float The maximum health of the event's units of this type: SoldierEvent:GetMaxDefendHealth returns it for defend units and GetMaxAuxiliaryHealth for auxiliary ones. The client keeps none for escaping units.

The client adds the unit and type to the event's units, which SoldierEvent:GetDefendUnits, GetAuxiliaryUnits and GetEscapingUnits list by type, and raises UpdateSoldierBuild. SoldierEventUnitRemove takes the pair out.

0x0679 SoldierHoldoutNextWave

Starts a soldier event's next wave.

Opcode Direction Verified to Mark
0x0679 to client fields
Field Bits Encoding Meaning
SoldierEventId 14 unsigned The soldier event, a PathSoldierEvent table id.
WaveIndex 32 unsigned The wave, by its PathSoldierEventWave row's waveIndex; SoldierEvent:GetWavesReleased counts the event's waves up to it.
IsBoss 1 unsigned Whether the wave is a boss wave, which SoldierEvent:IsBoss returns.

The client keeps the wave and the boss flag and restarts the event's phase clock, except for the four timed event types (PathSoldierEvent types 2, 3, 6 and 8), whose phase keeps running. It sets the sound zone kit the wave's PathSoldierEventWave row names and raises SoldierHoldoutNextWave.

0x067A SoldierEventUnitRemove

Takes a unit of a type out of a soldier event.

Opcode Direction Verified to Mark
0x067A to client fields
Field Bits Encoding Meaning
SoldierEventId 14 unsigned The soldier event, a PathSoldierEvent table id.
UnitId 32 unsigned The unit, by unit id.
UnitType 32 unsigned The unit's type in the event.

The client erases the unit and type pair SoldierEventUnitUpdate adds, and raises UpdateSoldierBuild.

0x067B SoldierHoldoutStatus

Sets a soldier event's state: its units, speaker, wave, boss flag, mode, maximum healths and clocks.

Opcode Direction Verified to Mark
0x067B to client fields
Field Bits Encoding Meaning
SoldierEventId 14 unsigned The soldier event, a PathSoldierEvent table id.
Units count 32 unsigned
Units array, counted by Units count The event's units, each with its type.
Units[].UnitId 32 unsigned The unit, by unit id.
Units[].UnitType 32 unsigned The unit's type in the event.
SpeakerUnitId 32 unsigned The unit that speaks for the event, by unit id.
IsBoss 1 unsigned Whether the current wave is a boss wave, which SoldierEvent:IsBoss returns.
Mode 32 unsigned The event's mode, which SoldierEvent:GetState returns. SoldierEvent:GetMaxTime gives the tower defense build time in Setup and the initial spawn time in InitialDelay.
PhaseElapsedMs 32 unsigned The time spent in the current phase in milliseconds, which SoldierEvent:GetElapsedTime returns on arrival.
WaveIndex 32 unsigned The current wave, by its PathSoldierEventWave row's waveIndex.
MaxDefendHealth 32 float The maximum health of the event's defend units, which SoldierEvent:GetMaxDefendHealth returns.
MaxAuxiliaryHealth 32 float The maximum health of the event's auxiliary units, which SoldierEvent:GetMaxAuxiliaryHealth returns.
EventElapsedMs 32 unsigned The time since the event started in milliseconds; the client takes it only when it holds no start for the event.

The client replaces the event's units with Units and clears its built improvements and build credits. When it holds no start for the event it takes the start as EventElapsedMs before now, and it sets the phase clock so that SoldierEvent:GetElapsedTime reads PhaseElapsedMs on arrival. In Active, and in Setup for a tower defense event (PathSoldierEvent type 4), the speaker says a line picked by the event's type. It then sets the sound zone kit the wave's PathSoldierEventWave row names and raises SoldierHoldoutStatus.

0x067C SoldierHoldoutEnd

Ends a soldier event with its result.

Opcode Direction Verified to Mark
0x067C to client fields
Field Bits Encoding Meaning
SoldierEventId 14 unsigned The soldier event, a PathSoldierEvent table id.
Result 32 unsigned How the event ended.

The client drops the event from the player's active events, clears the sound zone kit its wave set, and raises SoldierHoldoutEnd with the event and the result.

0x067E SoldierWhackAMoleBurrows

Shows a soldier whack-a-mole event's new burrows.

Opcode Direction Verified to Mark
0x067E to client fields
Field Bits Encoding Meaning
DelayMs 32 unsigned The time until the burrows' units pop up, in milliseconds.
UnitIds count 32 unsigned
UnitIds array, counted by UnitIds count The burrows' units, by unit id.
UnitIds[] 32 unsigned

The client raises PlayerPathSoldierNewWhackAMoleBurrows with the delay in seconds and the units its ids find.

0x067F SoldierHoldoutDeath

Raises SoldierHoldoutDeath for a soldier event.

Opcode Direction Verified to Mark
0x067F to client fields
Field Bits Encoding Meaning
SoldierEventId 14 unsigned The soldier event, a PathSoldierEvent table id.

The client also clears the sound zone kit the event's wave set.

0x0680 SoldierBuildCredits

Sets a soldier event's build credits.

Opcode Direction Verified to Mark
0x0680 to client fields
Field Bits Encoding Meaning
SoldierEventId 14 unsigned The soldier event, a PathSoldierEvent table id.
Credits 32 unsigned The build credits, which SoldierEvent:GetBuildCredits returns.

The client takes it only while the event is in Setup, and raises UpdateSoldierBuild.

0x0681 SoldierImprovementBuilt

Marks a tower defense improvement built in a soldier event.

Opcode Direction Verified to Mark
0x0681 to client fields
Field Bits Encoding Meaning
SoldierEventId 14 unsigned The soldier event, a PathSoldierEvent table id.
ImprovementId 14 unsigned The improvement, a PathSoldierTowerDefense table id: one of the ids BuiltImprovementIds carries in 32 bits.

The client takes it only while the event is in Setup. It adds the id to the event's built improvements, which SoldierImprovement:IsBuilt reads, and raises UpdateSoldierBuild.

0x06B3 PathChangeResult

Answers the player's request to change paths (PathChangeRequest).

Opcode Direction Verified to Mark
0x06B3 to client fields
Field Bits Encoding Meaning
Result 8 unsigned The result, a GameLib.CodeEnumGenericError code.

The client raises PathChangeResult with the result, which its add-ons compare with GameLib.CodeEnumGenericError.Ok. On a failure it forgets the change it asked for.

0x06B4 PathRefresh

Asks the client to refresh what it shows of the player's path: it raises PlayerPathRefresh when the player exists.

Opcode Direction Verified to Mark
0x06B4 to client fields
Field Bits Encoding Meaning
(none) 0

0x06B5 PathEpisodeProgress

Files an episode with its missions' progress.

Opcode Direction Verified to Mark
0x06B5 to client fields
Field Bits Encoding Meaning
EpisodeId 14 unsigned The episode, by the id a PathMission row names in its pathEpisodeId.
Missions count 16 unsigned
Missions array, counted by Missions count The episode's missions, each under its PathMission id.
Missions[].MissionId 15 unsigned The mission, a PathMission table id.
Missions[].IsComplete 1 unsigned Whether the mission is complete, which PathMission:IsComplete reads; when it rises the client raises the mission's completion events.
Missions[].Progress 32 unsigned The mission's progress, which PathMission:GetNumCompleted returns: as it is for some mission types, and for most one bit per completed part.
Missions[].Flags 32 unsigned State bits whose meaning depends on the mission's type, behind PathMission:GetMissionState and PathMission:IsStarted.

The client keeps the episode under its id, where PathCurrentEpisodeSet and PathMissionUpdate find it.

0x06B6 ExplorerClueUnitRemoved

Takes a unit off a scavenger hunt clue: the client erases the clue and unit pair ExplorerClueUnitsAdded adds.

Opcode Direction Verified to Mark
0x06B6 to client fields
Field Bits Encoding Meaning
ClueId 14 unsigned The clue, a PathExplorerScavengerClue table id.
UnitId 32 unsigned The unit, by unit id.

0x06B7 ExplorerClueRemoved

Clears a scavenger hunt clue: the client drops every unit (ExplorerClueUnitsAdded) and the location (ExplorerClueLocationSet) it holds for the clue.

Opcode Direction Verified to Mark
0x06B7 to client fields
Field Bits Encoding Meaning
ClueId 14 unsigned The clue, a PathExplorerScavengerClue table id.

0x06B8 ExplorerClueLocationSet

Sets a scavenger hunt clue's location.

Opcode Direction Verified to Mark
0x06B8 to client fields
Field Bits Encoding Meaning
WorldLocationId 17 unsigned The location, a WorldLocation2 table id.
ClueId 14 unsigned The clue, a PathExplorerScavengerClue table id.

PathMission:GetExplorerClueRatio uses the location for a clue of type 0 or 2, and the clue's units (ExplorerClueUnitsAdded) for type 1.

0x06B9 ExplorerClueUnitsAdded

Adds units to a scavenger hunt clue.

Opcode Direction Verified to Mark
0x06B9 to client fields
Field Bits Encoding Meaning
ClueId 14 unsigned The clue, a PathExplorerScavengerClue table id.
UnitIds count 32 unsigned
UnitIds array, counted by UnitIds count The units, by unit id.
UnitIds[] 32 unsigned

For a clue of type 1, PathMission:GetExplorerClueRatio averages the positions of the clue's units.

0x06BA PathMissionsActivated

Activates path missions.

Opcode Direction Verified to Mark
0x06BA to client purpose
Field Bits Encoding
Missions count 32 unsigned
Missions array, counted by Missions count
Missions[].Unknown0 15 unsigned
Missions[].IsComplete 1 unsigned
Missions[].Progress 32 unsigned
Missions[].Flags 32 unsigned
Missions[].Unknown4 3 unsigned
Missions[].Unknown5 32 unsigned

0x06BB PathMissionUpdate

Updates one mission's progress.

Opcode Direction Verified to Mark
0x06BB to client fields
Field Bits Encoding Meaning
Mission the fields below The mission, by its PathMission id, and its progress.
Mission.MissionId 15 unsigned The mission, a PathMission table id.
Mission.IsComplete 1 unsigned Whether the mission is complete, which PathMission:IsComplete reads; when it rises the client raises the mission's completion events.
Mission.Progress 32 unsigned The mission's progress, which PathMission:GetNumCompleted returns: as it is for some mission types, and for most one bit per completed part.
Mission.Flags 32 unsigned State bits whose meaning depends on the mission's type, behind PathMission:GetMissionState and PathMission:IsStarted.

The client finds the mission's episode under the PathMission row's pathEpisodeId (EpisodeId), and the mission in it.

0x06BC PathState

The player's path state: the active path, each path's XP, which paths are unlocked, and the time the path-change cooldown is measured against.

Opcode Direction Verified to Mark
0x06BC to client fields
Field Bits Encoding Meaning
ActivePath 3 unsigned The player's active path: Soldier 0, Settler 1, Scientist 2, Explorer 3. The client's path lookups use it when they name no path.
PathXp[0] 32 unsigned The XP of each path, indexed by the path's number (ActivePath).
PathXp[1] 32 unsigned
PathXp[2] 32 unsigned
PathXp[3] 32 unsigned
UnlockedPaths 4 unsigned Which paths are unlocked: bit n for path number n (ActivePath).
CooldownTime 32 float A number of days the client adds to its clock; it measures its path-change cooldown against the result.

Dropped until PlayerUnit has named the player. It replaces the client's path state; until the first one arrives the client drops its other path messages.

0x06BE PathUnlockResult

Reports a path unlock, with the paths unlocked.

Opcode Direction Verified to Mark
0x06BE to client purpose
Field Bits Encoding
Unknown0 8 unsigned
UnlockedPaths 4 unsigned

When Unknown0 is 0 the client takes UnlockedPaths as the player's unlocked paths. It raises PathUnlockResult.

0x06BF PathCurrentEpisodeSet

Makes an episode the player's current one.

Opcode Direction Verified to Mark
0x06BF to client fields
Field Bits Encoding Meaning
Unknown0 15 unsigned The client gives this value no meaning.
EpisodeId 14 unsigned The episode, by the id a PathMission row names in its pathEpisodeId; the client files episodes under it (EpisodeId).

For any id but 0 the client makes that episode current, creating it when it holds none under the id, and raises PlayerPathRefresh. It handles 0 another way.

0x08B2 ScientistCreatureInfoAdded

Files a scientist creature info entry under a unit's creature.

Opcode Direction Verified to Mark
0x08B2 to client fields
Field Bits Encoding Meaning
UnitId 32 unsigned The unit, by unit id; the client files the entry under the unit's creature.
CreatureInfoId 14 unsigned The entry, a PathScientistCreatureInfo table id.

0x08B3 UnitScanRewardsChanged

Sets whether a unit can be scanned and which of its scan rewards the player already has.

Opcode Direction Verified to Mark
0x08B3 to client fields
Field Bits Encoding Meaning
UnitId 32 unsigned The unit, by unit id.
CompletedScanRewards 32 unsigned The unit's scan rewards the player already has, as a mask: bit 0 the scan mission of type 2 or 14, bit 1 the creature's own scan, bit 2 the progress reward, bit 3 the type-23 mission, bit 4 one further reward kind. A set bit withholds that kind from the unit's rewards, which Unit:GetRewardInfo reports.
CanBeScanned 1 unsigned Whether the unit can be scanned at all, which every scan reward requires.

0x08B4 ScientistSpecimenSurveyAdded

Files a scientist specimen survey under a unit's creature.

Opcode Direction Verified to Mark
0x08B4 to client purpose
Field Bits Encoding
UnitId 32 unsigned
SpecimenSurveyId 14 unsigned
Unknown2 32 unsigned

0x08B5 ScientistFieldStudyAdded

Files a scientist field study under a unit's creature.

Opcode Direction Verified to Mark
0x08B5 to client fields
Field Bits Encoding Meaning
UnitId 32 unsigned The unit, by unit id; the client files the study under the unit's creature.
FieldStudyId 14 unsigned The study, a PathScientistFieldStudy table id.

0x08B6 UnitSettlerImprovement

Sets which settler improvement a unit is.

Opcode Direction Verified to Mark
0x08B6 to client purpose
Field Bits Encoding
UnitId 32 unsigned
ImprovementId 14 unsigned
Unknown2 32 unsigned
Unknown3 count 32 unsigned
Unknown3 array, counted by Unknown3 count
Unknown3[] varies wide string
Unknown4 count 32 unsigned
Unknown4 array, counted by Unknown4 count
Unknown4[].Unknown0 varies wide string
Unknown4[].Unknown1 32 unsigned

0x08B7 SettlerHubUpdated

Updates a settler hub's value on each of its three avenues.

Opcode Direction Verified to Mark
0x08B7 to client purpose
Field Bits Encoding
HubId 14 unsigned
Economy 32 unsigned
Security 32 unsigned
QualityOfLife 32 unsigned

The client keeps the three values on the hub and raises SettlerHubUpdated. PlayerPathLib.GetSettlerHubValues returns each, capped by the hub row's maximum for that avenue.

Client to server

0x0099 ExplorerSearchCast

Casts one of the explorer's search spells.

Opcode Direction Verified to Mark
0x0099 to server purpose
Field Bits Encoding
ClientCastId 32 unsigned
Unknown1 2 unsigned
Unknown2 14 unsigned

PlayerPathLib.PathAction sends it, casting one of the three spells a GameFormula row names.

0x00F0 ScanbotDismiss

Dismisses the scientist's scanbot.

Opcode Direction Verified to Mark
0x00F0 to server fields
Field Bits Encoding Meaning
(none) 0

The scanbot toggle (PlayerPathLib.ScientistToggleScanBot among its callers) sends it in place of ScanbotSummon while the scanbot is out (ScanbotState).

0x00F3 ExplorerProgressReport

Reports a mission of type 3, 15 or 27 whose world location the player stands in.

Opcode Direction Verified to Mark
0x00F3 to server purpose
Field Bits Encoding
MissionId 15 unsigned
Unknown1 32 unsigned

The client sends it for a PathMission row of one of those types while the player stands in the mission's world location.

0x00F9 ExplorerPowerMapProgress

Reports the explorer power map the player is inside.

Opcode Direction Verified to Mark
0x00F9 to server fields
Field Bits Encoding Meaning
PowerMapId 14 unsigned The power map, a PathExplorerPowerMap table id: the object of the explorer mission.

The client sends it while the mission's inside mark is set (ExplorerPowerMapEntered).

0x015F ScanbotDismissFromAction

Dismisses the scientist's scanbot from the path action.

Opcode Direction Verified to Mark
0x015F to server fields
Field Bits Encoding Meaning
(none) 0

PlayerPathLib.PathAction sends it in place of ScanbotSummon while the scanbot is out (ScanbotState).

0x0180 ScanbotSummon

Summons the scientist's scanbot with the profile chosen.

Opcode Direction Verified to Mark
0x0180 to server purpose
Field Bits Encoding
Profile 32 unsigned
Unknown1 1 unsigned

The client sends it while the scanbot is not out (ScanbotState); while it is, it sends ScanbotDismiss or ScanbotDismissFromAction.

0x066A ScientistExperimentationAttempt

Makes a matching attempt at a scientist experimentation.

Opcode Direction Verified to Mark
0x066A to server fields
Field Bits Encoding Meaning
Attempt[0] 32 unsigned The four values tried, in the pattern's order.
Attempt[1] 32 unsigned
Attempt[2] 32 unsigned
Attempt[3] 32 unsigned

PathMission:AttemptScientistExperimentation sends it only when all four values match Pattern in place. On a mismatch the client scores the attempt itself, place by place (2 for a value in its place, 1 for a value elsewhere in the pattern, 0 for none), and sends nothing.

0x0670 SettlerImprovementBuildTier

Builds a settler improvement at a tier.

Opcode Direction Verified to Mark
0x0670 to server fields
Field Bits Encoding Meaning
ImprovementId 14 unsigned The improvement, by its own id: one of ImprovementIds.
Tier 32 unsigned The tier, counted from 0: one less than the tier SettlerImprovement:BuildTier is given.

SettlerImprovement:BuildTier sends it, never past the improvement's tier count.

0x067D SoldierImprovementBuild

Builds a tower defense improvement in a soldier event.

Opcode Direction Verified to Mark
0x067D to server fields
Field Bits Encoding Meaning
ImprovementId 14 unsigned The improvement, a PathSoldierTowerDefense table id: the id SoldierImprovement:IsBuilt looks for.

SoldierImprovement:Build sends it, only for an event of PathSoldierEvent type 4 in Setup.

0x068C ScanbotRename

Names the scientist's scanbot.

Opcode Direction Verified to Mark
0x068C to server purpose
Field Bits Encoding
Unknown0 2 unsigned
Profile 32 unsigned
Name varies wide string

PlayerPathLib.SetScannerName sends it.

0x06B2 PathChangeRequest

Asks to change the player's active path.

Opcode Direction Verified to Mark
0x06B2 to server purpose
Field Bits Encoding
Path 3 unsigned
Unknown1 1 unsigned

ActionConfirmButton.ChangePath sends it, never for the active path or a path not unlocked (UnlockedPaths). The server answers with PathChangeResult.

0x06BD PathUnlockRequest

Asks to unlock a path.

Opcode Direction Verified to Mark
0x06BD to server fields
Field Bits Encoding Meaning
Path 3 unsigned The path to unlock.

ActionConfirmButton.UnlockPath sends it, never for a path above 4 or one already unlocked (UnlockedPaths).

Where the code lives

Piece Path
Message declarations Source/NexusTomorrow.Network.World/Message/Model/PlayerPath/
This page's generator Tools/NexusTomorrow.ProtocolReference/

Clone this wiki locally