diff --git a/CHANGELOG.md b/CHANGELOG.md index 658bb3d..11880f1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ ## 5.X.Y * Fix: ignore stale player list entries (By @cetteup #744) * Feat: Plutonium - Added support (#745) +* Fix: Soulmask set version from rules if available (By @podrivo #772) ## 5.3.2 * Fix: detect BFBC2 Vietnam DLC as BFBC2 (By @cetteup #713) diff --git a/GAMES_LIST.md b/GAMES_LIST.md index d6d2d95..1bacb56 100644 --- a/GAMES_LIST.md +++ b/GAMES_LIST.md @@ -279,7 +279,7 @@ | sof2 | Soldier of Fortune 2 | | | soldat | Soldat | [Notes](#soldat) | | sotf | Sons Of The Forest | [Valve Protocol](#valve) | -| soulmask | Soulmask | [Valve Protocol](#valve) | +| soulmask | Soulmask | [Notes](#soulmask), [Valve Protocol](#valve) | | spaceengineers | Space Engineers | [Valve Protocol](#valve) | | squad | Squad | [EOS Protocol](#epic) | | ssl | SCP: Secret Labratory | [Notes](#ssl) | @@ -518,6 +518,9 @@ For queries to work, A2S needs to be setup in the server config, more info [here Does not provide players data. +### Soulmask +Soulmask reports a hardcoded version (`1.0.0.0`) in the A2S_INFO response. To get the real game version, pass `requestRules: true` — the actual version is read from the `NO_s` rules key. + Protocols with Additional Notes --- diff --git a/lib/games.js b/lib/games.js index 77a1456..c8bcda8 100644 --- a/lib/games.js +++ b/lib/games.js @@ -2794,6 +2794,9 @@ export const games = { port: 8777, port_query: 27015, protocol: 'valve' + }, + extra: { + doc_notes: 'soulmask' } }, ssl: { diff --git a/protocols/valve.js b/protocols/valve.js index 402cbea..61b07cc 100644 --- a/protocols/valve.js +++ b/protocols/valve.js @@ -11,7 +11,8 @@ const AppId = { CS_Source: 240, EternalSilence: 17550, Insurgency_MIC: 17700, - Source_SDK_Base_2006: 215 + Source_SDK_Base_2006: 215, + Soulmask: 2646460 } export default class valve extends Core { @@ -275,6 +276,13 @@ export default class valve extends Core { state.password = true } } + + // Soulmask reports a hardcoded version in A2S_INFO; real version is in rules + if (appId === AppId.Soulmask) { + if ('NO_s' in rules) { + state.version = rules.NO_s + } + } } async cleanup (/** Results */ state) {