Skip to content

Populated sm_nextmap causes looping on changelevel failures #1429

@nosoop

Description

@nosoop

Help us help you

  • I have checked that my issue doesn't exist yet.
  • I have tried my absolute best to reduce the problem-space and have provided the absolute smallest test-case possible.
  • I can always reproduce the issue with the provided description below.

Environment

  • Operating System version: Linux
  • Game/AppID (with version if applicable): Team Fortress 2
  • I have updated SourceMod to the latest snapshot (1.11.0.6655) and it still happens.

Description

Team Fortress 2 (and possibly other games, since this is in the base teamplay system) has an event server_changelevel_failed that the game uses during the gameover state to move to the next map in the cycle. SourceMod's sm_nextmap isn't cleared at this stage; if the game was in that state and the sm_nextmap was invalid couldn't be validated (e.g. workshop/1), SourceMod will intercept the game's attempts to change level and switch back to the invalid map, getting into a loop.

Problematic Code (or Steps to Reproduce)

  1. While in TF2, use sm_setnextmap workshop/1 in the game / server console to set the next map, or change sm_nextmap directly to workshop/1.
  2. Get to the post-game screen, then observe the server console as it changes maps.

Logs

In gameover, but failed to load the next map. Trying next map in cycle.
CHANGE LEVEL: cp_snakewater_final1
L 02/18/2021 - 06:46:07: [SM] Changed map to "workshop/1"
[TF Workshop] Preparing map ID 1
[TF Workshop] Error fetching updated information for map id 1
[TF Workshop] Info lookup failed for workshop file 1 ( EResult 1 )
[TF Workshop] Map failed to sync, load will not go well :(
CModelLoader::Map_IsValid:  No such map 'maps/workshop/1.bsp'
Unable to change level!
In gameover, but failed to load the next map. Trying next map in cycle.
CHANGE LEVEL: cp_sunshine
L 02/18/2021 - 06:46:07: [SM] Changed map to "workshop/1"
[TF Workshop] Preparing map ID 1
[TF Workshop] Error fetching updated information for map id 1
[TF Workshop] Info lookup failed for workshop file 1 ( EResult 1 )
[TF Workshop] Map failed to sync, load will not go well :(
CModelLoader::Map_IsValid:  No such map 'maps/workshop/1.bsp'
Unable to change level!
In gameover, but failed to load the next map. Trying next map in cycle.
CHANGE LEVEL: cp_metalworks
L 02/18/2021 - 06:46:07: [SM] Changed map to "workshop/1"
[TF Workshop] Preparing map ID 1
[TF Workshop] Error fetching updated information for map id 1
[TF Workshop] Info lookup failed for workshop file 1 ( EResult 1 )
[TF Workshop] Map failed to sync, load will not go well :(
CModelLoader::Map_IsValid:  No such map 'maps/workshop/1.bsp'
Unable to change level!
In gameover, but failed to load the next map. Trying next map in cycle.
[...]

Metadata

Metadata

Assignees

No one assigned

    Labels

    Buggeneral bugs; can be anything

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions