Move the warp list into exp_scenario - #462
Open
bbassie wants to merge 1 commit into
Open
Conversation
The warp system was split across a legacy control module and a legacy gui, both built on expcore.datastore. They are now one exp_scenario gui, exp_scenario/module/gui/warp_list.lua, in the shape of the task list: per force warps and per player cooldown and proximity state live on the container's element data, rows are element defines which carry their warp in element data, and refreshes compute the player's status once and apply it to every row. Warps are referenced as objects rather than string ids, the last editor is a LuaPlayer, and the cooldown counts ticks. The locale moves to [exp-gui_warp-list] in en, zh-CN and zh-TW with keys named by region and use, and the legacy [warp-list] sections are removed along with the two legacy modules and the file loader entry. The config stays in exp_legacy/config/gui/warps.lua for now like the other gui configs.
bbassie
force-pushed
the
feature/scenario-warp-list
branch
from
September 6, 2026 16:44
833d9dc to
70b94d0
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The warp system was a legacy control module plus a legacy gui, both on
expcore.datastore. They are now one scenario gui,exp_scenario/module/gui/warp_list.lua, in the shape of the task list: per force warps and per player cooldown and proximity state live on the container's element data behind_get_force_data/_get_player_dataand typed getters, each row cell is aGui.definewhich carries its warp in element data, and refreshes compute a player's status once (get_status) and apply it to every row rather than recomputing per element. Warps are objects instead of string ids, the last editor is aLuaPlayer, ids are per force, and the cooldown counts ticks.Behaviour is the same as before: spawn warp created for a force on its first player, warps sorted spawn first then by name, add button blocked near water, entities, or another warp, edit mode with icon picker and textfield where discarding a never confirmed warp removes it, teleport with vehicle handling, cooldown bar, proximity auto show/hide unless the player toggled the list themselves, same network check through the area's pole, and map tags restored when a player edits or removes them.
The locale moves to
[exp-gui_warp-list]in en, zh-CN and zh-TW with keys named by region and use (tooltip-goto-*,tooltip-sub-*,add-warning-*), and the legacy[warp-list]sections are removed. The legacy modules and the file loader entry are deleted. The config stays inexp_legacy/config/gui/warps.luafor now, like the other gui configs.Lua lint is clean. On my dev instance the scenario loads with 0 errors, and I drove the non gui paths over rcon: add,
set_spawn_warp, sort order, tag creation,_make_area(tiles, pole reference, old tile),remove_warp(tiles restored, entities gone, tag destroyed), and clearing the spawn. I could not test the gui itself headless, so the row refresh, edit flow, cooldown bar and proximity show/hide need a real player before merging. The previous legacy version has been kept in behaviour but the code paths are new, so a smoke test with two players on one force (one editing while the other watches) would be the most useful check.