Repository navigation
Messages PlayerPath
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 b790f35 by Tools/NexusTomorrow.ProtocolReference. Don't edit it by hand: change the declaration's documentation and regenerate.
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.
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.
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.
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. |
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. |
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.
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.
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.
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.
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.
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.
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.
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. |
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.
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.
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. |
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.
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. |
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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 |
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.
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. |
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. |
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.
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.
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 |
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.
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.
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.
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.
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. |
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. |
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 |
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. |
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 |
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.
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.
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).
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.
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).
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).
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.
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.
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.
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.
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.
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.
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).
| Piece | Path |
|---|---|
| Message declarations | Source/NexusTomorrow.Network.World/Message/Model/PlayerPath/ |
| This page's generator | Tools/NexusTomorrow.ProtocolReference/ |
Start here
How the server works
The protocol
Working on it