diff --git a/LuaMenu/configs/gameConfig/byar/sidedata.lua b/LuaMenu/configs/gameConfig/byar/sidedata.lua index cc64521ec..e2d63af75 100644 --- a/LuaMenu/configs/gameConfig/byar/sidedata.lua +++ b/LuaMenu/configs/gameConfig/byar/sidedata.lua @@ -9,4 +9,13 @@ return { name = "Cortex", logo = SIDEPICS_DIR .. "cortex.png", }, + { + name = "Legion", + logo = SIDEPICS_DIR .. "legion.png", + requiresModoption = "experimentallegionfaction", + }, + { + name = "Random", + logo = SIDEPICS_DIR .. "random.png", + }, } diff --git a/LuaMenu/configs/gameConfig/byar/sidepics/legion.png b/LuaMenu/configs/gameConfig/byar/sidepics/legion.png new file mode 100644 index 000000000..3337d9954 Binary files /dev/null and b/LuaMenu/configs/gameConfig/byar/sidepics/legion.png differ diff --git a/LuaMenu/widgets/gui_side_change_window.lua b/LuaMenu/widgets/gui_side_change_window.lua index a76c43b2f..c07b42604 100644 --- a/LuaMenu/widgets/gui_side_change_window.lua +++ b/LuaMenu/widgets/gui_side_change_window.lua @@ -20,11 +20,22 @@ local function CreateSideChangeWindow(opts) local Configuration = WG.Chobby.Configuration local sidedata = Configuration:GetSideData() + local battleLobby = WG.LibLobby.localLobby + local battle = battleLobby:GetBattle(battleLobby:GetMyBattleID()) + if not battle then + battleLobby = WG.LibLobby.lobby + end + local factionMap = {} local factionNames = {} + + local modoptions = battleLobby.modoptions + for index, data in ipairs(sidedata) do - factionMap[data.name] = index - 1 - table.insert(factionNames, data.name) + if not data.requiresModoption or (modoptions and modoptions[data.requiresModoption] == "1") then + factionMap[data.name] = index - 1 + table.insert(factionNames, data.name) + end end local sideChangeWindow = Window:New { @@ -89,6 +100,7 @@ local function CreateSideChangeWindow(opts) y = 150, width = sideChangeWindow.width * 0.5, height = 40, + caption = Configuration:GetSideById(selectedFaction).name or "", items = factionNames, parent = sideChangeWindow, objectOverrideFont = WG.Chobby.Configuration:GetFont(2), diff --git a/libs/liblobby/lobby/interface_skirmish.lua b/libs/liblobby/lobby/interface_skirmish.lua index 94a385235..fd37fb66e 100644 --- a/libs/liblobby/lobby/interface_skirmish.lua +++ b/libs/liblobby/lobby/interface_skirmish.lua @@ -88,6 +88,11 @@ function InterfaceSkirmish:_StartScript(gameName, mapName, playerName, friendLis for userName, data in pairs(self.userBattleStatus) do if data.allyNumber and not data.aiLib then --every player must have an allynumber! + local sideData = WG.Chobby.Configuration:GetSideById(data.side) + if sideData and sideData.requiresModoption and + (not self.modoptions or self.modoptions[sideData.requiresModoption] ~= "1") then + data.side = 0 + end players[playerCount] = { Name = userName, Team = teamCount, @@ -153,6 +158,11 @@ function InterfaceSkirmish:_StartScript(gameName, mapName, playerName, friendLis local chickenAdded = false for userName, data in pairs(self.userBattleStatus) do if data.allyNumber and data.aiLib then + local sideData = WG.Chobby.Configuration:GetSideById(data.side) + if sideData and sideData.requiresModoption and + (not self.modoptions or self.modoptions[sideData.requiresModoption] ~= "1") then + data.side = 3 --Random faction + end if friendAllyTeam == data.allyNumber and aiReplaceCount > 0 and not string.find(data.aiLib, "Raptor") then aiReplaceCount = aiReplaceCount - 1 else diff --git a/libs/liblobby/lobby/lobby.lua b/libs/liblobby/lobby/lobby.lua index abcd7cf4c..98c8adad3 100644 --- a/libs/liblobby/lobby/lobby.lua +++ b/libs/liblobby/lobby/lobby.lua @@ -1236,6 +1236,15 @@ function Lobby:_OnJoinedBattle(battleID, userName, scriptPassword) Spring.Log(LOG_SECTION, LOG.WARNING, "_OnJoinedBattle nonexistent battle.") return end + if userName == self:GetMyUserName() then + local lastFaction = WG.Chobby.Configuration.lastFactionChoice + if lastFaction then + local sideData = WG.Chobby.Configuration:GetSideById(lastFaction) + if sideData and sideData.requiresModoption and (not self.modoptions or self.modoptions[sideData.requiresModoption] ~= "1") then + WG.Chobby.Configuration.lastFactionChoice = 0 + end + end + end local found = false local users = battle.users for i = 1, #users do