From 9b7d1e9d46f4364d49c8f5f9437827355bd68fc8 Mon Sep 17 00:00:00 2001 From: lL1l1 <82986251+lL1l1@users.noreply.github.com> Date: Tue, 24 Dec 2024 22:17:27 -0800 Subject: [PATCH 1/6] Fix `/division` arg not being valid and division image filename format (#6581) --- changelog/snippets/fix.6581.md | 3 +++ .../lobby/autolobby/AutolobbyController.lua | 24 ++++++++++++++++-- .../components/AutolobbyArguments.lua | 2 +- scripts/LaunchFAInstances.ps1 | 22 +++++++++++++--- .../divisions/{bronzeI.png => bronze I.png} | Bin .../divisions/{bronzeII.png => bronze II.png} | Bin .../{bronzeIII.png => bronze III.png} | Bin ...zeIII_medium.png => bronze III_medium.png} | Bin ...onzeII_medium.png => bronze II_medium.png} | Bin .../divisions/{bronzeIV.png => bronze IV.png} | Bin ...onzeIV_medium.png => bronze IV_medium.png} | Bin ...bronzeI_medium.png => bronze I_medium.png} | Bin .../divisions/{bronzeV.png => bronze V.png} | Bin ...bronzeV_medium.png => bronze V_medium.png} | Bin .../divisions/{diamondI.png => diamond I.png} | Bin .../{diamondII.png => diamond II.png} | Bin .../{diamondIII.png => diamond III.png} | Bin ...dIII_medium.png => diamond III_medium.png} | Bin ...ondII_medium.png => diamond II_medium.png} | Bin .../{diamondIV.png => diamond IV.png} | Bin ...ondIV_medium.png => diamond IV_medium.png} | Bin ...amondI_medium.png => diamond I_medium.png} | Bin .../divisions/{diamondV.png => diamond V.png} | Bin ...amondV_medium.png => diamond V_medium.png} | Bin textures/divisions/{goldI.png => gold I.png} | Bin .../divisions/{goldII.png => gold II.png} | Bin .../divisions/{goldIII.png => gold III.png} | Bin ...goldIII_medium.png => gold III_medium.png} | Bin .../{goldII_medium.png => gold II_medium.png} | Bin .../divisions/{goldIV.png => gold IV.png} | Bin .../{goldIV_medium.png => gold IV_medium.png} | Bin .../{goldI_medium.png => gold I_medium.png} | Bin textures/divisions/{goldV.png => gold V.png} | Bin .../{goldV_medium.png => gold V_medium.png} | Bin .../divisions/{masterI.png => master I.png} | Bin .../divisions/{masterII.png => master II.png} | Bin .../{masterIII.png => master III.png} | Bin ...erIII_medium.png => master III_medium.png} | Bin ...sterII_medium.png => master II_medium.png} | Bin .../divisions/{masterIV.png => master IV.png} | Bin ...sterIV_medium.png => master IV_medium.png} | Bin ...masterI_medium.png => master I_medium.png} | Bin .../divisions/{masterV.png => master V.png} | Bin ...masterV_medium.png => master V_medium.png} | Bin .../divisions/{silverI.png => silver I.png} | Bin .../divisions/{silverII.png => silver II.png} | Bin .../{silverIII.png => silver III.png} | Bin ...erIII_medium.png => silver III_medium.png} | Bin ...lverII_medium.png => silver II_medium.png} | Bin .../divisions/{silverIV.png => silver IV.png} | Bin ...lverIV_medium.png => silver IV_medium.png} | Bin ...silverI_medium.png => silver I_medium.png} | Bin .../divisions/{silverV.png => silver V.png} | Bin ...silverV_medium.png => silver V_medium.png} | Bin 54 files changed, 44 insertions(+), 7 deletions(-) create mode 100644 changelog/snippets/fix.6581.md rename textures/divisions/{bronzeI.png => bronze I.png} (100%) rename textures/divisions/{bronzeII.png => bronze II.png} (100%) rename textures/divisions/{bronzeIII.png => bronze III.png} (100%) rename textures/divisions/{bronzeIII_medium.png => bronze III_medium.png} (100%) rename textures/divisions/{bronzeII_medium.png => bronze II_medium.png} (100%) rename textures/divisions/{bronzeIV.png => bronze IV.png} (100%) rename textures/divisions/{bronzeIV_medium.png => bronze IV_medium.png} (100%) rename textures/divisions/{bronzeI_medium.png => bronze I_medium.png} (100%) rename textures/divisions/{bronzeV.png => bronze V.png} (100%) rename textures/divisions/{bronzeV_medium.png => bronze V_medium.png} (100%) rename textures/divisions/{diamondI.png => diamond I.png} (100%) rename textures/divisions/{diamondII.png => diamond II.png} (100%) rename textures/divisions/{diamondIII.png => diamond III.png} (100%) rename textures/divisions/{diamondIII_medium.png => diamond III_medium.png} (100%) rename textures/divisions/{diamondII_medium.png => diamond II_medium.png} (100%) rename textures/divisions/{diamondIV.png => diamond IV.png} (100%) rename textures/divisions/{diamondIV_medium.png => diamond IV_medium.png} (100%) rename textures/divisions/{diamondI_medium.png => diamond I_medium.png} (100%) rename textures/divisions/{diamondV.png => diamond V.png} (100%) rename textures/divisions/{diamondV_medium.png => diamond V_medium.png} (100%) rename textures/divisions/{goldI.png => gold I.png} (100%) rename textures/divisions/{goldII.png => gold II.png} (100%) rename textures/divisions/{goldIII.png => gold III.png} (100%) rename textures/divisions/{goldIII_medium.png => gold III_medium.png} (100%) rename textures/divisions/{goldII_medium.png => gold II_medium.png} (100%) rename textures/divisions/{goldIV.png => gold IV.png} (100%) rename textures/divisions/{goldIV_medium.png => gold IV_medium.png} (100%) rename textures/divisions/{goldI_medium.png => gold I_medium.png} (100%) rename textures/divisions/{goldV.png => gold V.png} (100%) rename textures/divisions/{goldV_medium.png => gold V_medium.png} (100%) rename textures/divisions/{masterI.png => master I.png} (100%) rename textures/divisions/{masterII.png => master II.png} (100%) rename textures/divisions/{masterIII.png => master III.png} (100%) rename textures/divisions/{masterIII_medium.png => master III_medium.png} (100%) rename textures/divisions/{masterII_medium.png => master II_medium.png} (100%) rename textures/divisions/{masterIV.png => master IV.png} (100%) rename textures/divisions/{masterIV_medium.png => master IV_medium.png} (100%) rename textures/divisions/{masterI_medium.png => master I_medium.png} (100%) rename textures/divisions/{masterV.png => master V.png} (100%) rename textures/divisions/{masterV_medium.png => master V_medium.png} (100%) rename textures/divisions/{silverI.png => silver I.png} (100%) rename textures/divisions/{silverII.png => silver II.png} (100%) rename textures/divisions/{silverIII.png => silver III.png} (100%) rename textures/divisions/{silverIII_medium.png => silver III_medium.png} (100%) rename textures/divisions/{silverII_medium.png => silver II_medium.png} (100%) rename textures/divisions/{silverIV.png => silver IV.png} (100%) rename textures/divisions/{silverIV_medium.png => silver IV_medium.png} (100%) rename textures/divisions/{silverI_medium.png => silver I_medium.png} (100%) rename textures/divisions/{silverV.png => silver V.png} (100%) rename textures/divisions/{silverV_medium.png => silver V_medium.png} (100%) diff --git a/changelog/snippets/fix.6581.md b/changelog/snippets/fix.6581.md new file mode 100644 index 0000000000..35a2e38ed2 --- /dev/null +++ b/changelog/snippets/fix.6581.md @@ -0,0 +1,3 @@ +- (#6581) Fix divisions not being parsed by the matchmaker lobby. + +- (#6581) Fix division image filenames not matching the division data in the scenario info. diff --git a/lua/ui/lobby/autolobby/AutolobbyController.lua b/lua/ui/lobby/autolobby/AutolobbyController.lua index 180d2b652f..a992e5d727 100644 --- a/lua/ui/lobby/autolobby/AutolobbyController.lua +++ b/lua/ui/lobby/autolobby/AutolobbyController.lua @@ -56,13 +56,33 @@ local AutolobbyEngineStrings = { ['LaunchRejected'] = "Some players are using an incompatible client version.", } +-- associated textures are in `/textures/divisions/ .png` +-- Make note of the space, which isn't there for "grandmaster" and "unlisted" divisions + +---@alias Division +---| "bronze" +---| "silver" +---| "gold" +---| "diamond" +---| "master" +---| "grandmaster" +---| "unlisted" + +---@alias Subdivision +---| "I" +---| "II" +---| "III" +---| "IV" +---| "V" +---| "" # when Division is grandmaster or unlisted + ---@class UIAutolobbyPlayer: UILobbyLaunchPlayerConfiguration ---@field StartSpot number ---@field DEV number # Related to rating/divisions ---@field MEAN number # Related to rating/divisions ---@field NG number # Related to rating/divisions ----@field DIV string # Related to rating/divisions ----@field SUBDIV string # Related to rating/divisions +---@field DIV Division # Related to rating/divisions +---@field SUBDIV Subdivision # Related to rating/divisions ---@field PL number # Related to rating/divisions ---@field PlayerClan string diff --git a/lua/ui/lobby/autolobby/components/AutolobbyArguments.lua b/lua/ui/lobby/autolobby/components/AutolobbyArguments.lua index c17f4fa4bd..19aff423ca 100644 --- a/lua/ui/lobby/autolobby/components/AutolobbyArguments.lua +++ b/lua/ui/lobby/autolobby/components/AutolobbyArguments.lua @@ -48,7 +48,7 @@ AutolobbyArgumentsComponent = ClassSimple { ["/mean"] = true, -- related to divisions - ["division"] = true, + ["/division"] = true, ["/subdivision"] = true, -- related to game settings diff --git a/scripts/LaunchFAInstances.ps1 b/scripts/LaunchFAInstances.ps1 index 123faab0e1..3fabbda68e 100644 --- a/scripts/LaunchFAInstances.ps1 +++ b/scripts/LaunchFAInstances.ps1 @@ -25,16 +25,18 @@ if (Test-Path $debuggerExecutable) { } # Command-line arguments common for all instances -$baseArguments = '/init "init_dev.lua" /EnableDiskWatch /nomovie /RunWithTheWind /gameoptions CheatsEnabled:true GameSpeed:adjustable ' +$baseArguments = '/init "init_dev.lua" /EnableDiskWatch /nomovie /RunWithTheWind /gameoptions CheatsEnabled:true GameSpeed:adjustable' # Game-specific settings $hostProtocol = "udp" $hostPlayerName = "HostPlayer_1" $gameName = "MyGame" -# Array of factions to choose from +# Array of player data to choose from $factions = @("UEF", "Seraphim", "Cybran", "Aeon") $clans = @("Yps", "Nom", "Cly", "Mad", "Gol", "Kur", "Row", "Jip", "Bal", "She") +$divisions = @("bronze", "silver", "gold", "diamond", "master", "grandmaster", "unlisted") +$subdivisions = @("I", "II", "III", "IV", "V") # Get the screen resolution (for placing and resizing the windows) Add-Type -AssemblyName System.Windows.Forms @@ -84,6 +86,15 @@ function Get-TeamArgument { return "/team $((($instanceNumber % $teams) + 1 + 1))" } +function Get-DivisionArgText { + $division = $($divisions | Get-Random) + $argText = "/division $division" + if ($division -ne "unlisted" -and $division -ne "grandmaster") { + $argText += " /subdivision $($subdivisions | Get-Random)" + } + return $argText +} + # Prepare arguments and launch instances if ($players -eq 1) { $logFile = "dev.log" @@ -92,7 +103,9 @@ if ($players -eq 1) { $hostLogFile = "host_dev_1.log" $hostFaction = $factions | Get-Random $hostTeamArgument = Get-TeamArgument -instanceNumber 0 - $hostArguments = "/log $hostLogFile /showlog /hostgame $hostProtocol $port $hostPlayerName $gameName $map /startspot 1 /players $players /$hostFaction $hostTeamArgument $baseArguments /division HostDivision /subdivision 1 /clan $($clans | Get-Random)" + + $divisionArgText = Get-DivisionArgText + $hostArguments = "/log $hostLogFile /showlog /hostgame $hostProtocol $port $hostPlayerName $gameName $map /startspot 1 /players $players /$hostFaction $hostTeamArgument $baseArguments $divisionArgText /clan $($clans | Get-Random)" # Launch host game instance Launch-GameInstance -instanceNumber 1 -xPos 0 -yPos 0 -arguments $hostArguments @@ -108,7 +121,8 @@ if ($players -eq 1) { $clientPlayerName = "ClientPlayer_$($i + 1)" $clientFaction = $factions | Get-Random $clientTeamArgument = Get-TeamArgument -instanceNumber $i - $clientArguments = "/log $clientLogFile /joingame $hostProtocol localhost:$port $clientPlayerName /startspot $($i + 1) /players $players /$clientFaction $clientTeamArgument $baseArguments /division Diamond /subdivision $($i + 1) /clan $($clans | Get-Random)" + $divisionArgText = Get-DivisionArgText + $clientArguments = "/log $clientLogFile /joingame $hostProtocol localhost:$port $clientPlayerName /startspot $($i + 1) /players $players /$clientFaction $clientTeamArgument $baseArguments $divisionArgText /clan $($clans | Get-Random)" Launch-GameInstance -instanceNumber ($i + 1) -xPos $xPos -yPos $yPos -arguments $clientArguments } diff --git a/textures/divisions/bronzeI.png b/textures/divisions/bronze I.png similarity index 100% rename from textures/divisions/bronzeI.png rename to textures/divisions/bronze I.png diff --git a/textures/divisions/bronzeII.png b/textures/divisions/bronze II.png similarity index 100% rename from textures/divisions/bronzeII.png rename to textures/divisions/bronze II.png diff --git a/textures/divisions/bronzeIII.png b/textures/divisions/bronze III.png similarity index 100% rename from textures/divisions/bronzeIII.png rename to textures/divisions/bronze III.png diff --git a/textures/divisions/bronzeIII_medium.png b/textures/divisions/bronze III_medium.png similarity index 100% rename from textures/divisions/bronzeIII_medium.png rename to textures/divisions/bronze III_medium.png diff --git a/textures/divisions/bronzeII_medium.png b/textures/divisions/bronze II_medium.png similarity index 100% rename from textures/divisions/bronzeII_medium.png rename to textures/divisions/bronze II_medium.png diff --git a/textures/divisions/bronzeIV.png b/textures/divisions/bronze IV.png similarity index 100% rename from textures/divisions/bronzeIV.png rename to textures/divisions/bronze IV.png diff --git a/textures/divisions/bronzeIV_medium.png b/textures/divisions/bronze IV_medium.png similarity index 100% rename from textures/divisions/bronzeIV_medium.png rename to textures/divisions/bronze IV_medium.png diff --git a/textures/divisions/bronzeI_medium.png b/textures/divisions/bronze I_medium.png similarity index 100% rename from textures/divisions/bronzeI_medium.png rename to textures/divisions/bronze I_medium.png diff --git a/textures/divisions/bronzeV.png b/textures/divisions/bronze V.png similarity index 100% rename from textures/divisions/bronzeV.png rename to textures/divisions/bronze V.png diff --git a/textures/divisions/bronzeV_medium.png b/textures/divisions/bronze V_medium.png similarity index 100% rename from textures/divisions/bronzeV_medium.png rename to textures/divisions/bronze V_medium.png diff --git a/textures/divisions/diamondI.png b/textures/divisions/diamond I.png similarity index 100% rename from textures/divisions/diamondI.png rename to textures/divisions/diamond I.png diff --git a/textures/divisions/diamondII.png b/textures/divisions/diamond II.png similarity index 100% rename from textures/divisions/diamondII.png rename to textures/divisions/diamond II.png diff --git a/textures/divisions/diamondIII.png b/textures/divisions/diamond III.png similarity index 100% rename from textures/divisions/diamondIII.png rename to textures/divisions/diamond III.png diff --git a/textures/divisions/diamondIII_medium.png b/textures/divisions/diamond III_medium.png similarity index 100% rename from textures/divisions/diamondIII_medium.png rename to textures/divisions/diamond III_medium.png diff --git a/textures/divisions/diamondII_medium.png b/textures/divisions/diamond II_medium.png similarity index 100% rename from textures/divisions/diamondII_medium.png rename to textures/divisions/diamond II_medium.png diff --git a/textures/divisions/diamondIV.png b/textures/divisions/diamond IV.png similarity index 100% rename from textures/divisions/diamondIV.png rename to textures/divisions/diamond IV.png diff --git a/textures/divisions/diamondIV_medium.png b/textures/divisions/diamond IV_medium.png similarity index 100% rename from textures/divisions/diamondIV_medium.png rename to textures/divisions/diamond IV_medium.png diff --git a/textures/divisions/diamondI_medium.png b/textures/divisions/diamond I_medium.png similarity index 100% rename from textures/divisions/diamondI_medium.png rename to textures/divisions/diamond I_medium.png diff --git a/textures/divisions/diamondV.png b/textures/divisions/diamond V.png similarity index 100% rename from textures/divisions/diamondV.png rename to textures/divisions/diamond V.png diff --git a/textures/divisions/diamondV_medium.png b/textures/divisions/diamond V_medium.png similarity index 100% rename from textures/divisions/diamondV_medium.png rename to textures/divisions/diamond V_medium.png diff --git a/textures/divisions/goldI.png b/textures/divisions/gold I.png similarity index 100% rename from textures/divisions/goldI.png rename to textures/divisions/gold I.png diff --git a/textures/divisions/goldII.png b/textures/divisions/gold II.png similarity index 100% rename from textures/divisions/goldII.png rename to textures/divisions/gold II.png diff --git a/textures/divisions/goldIII.png b/textures/divisions/gold III.png similarity index 100% rename from textures/divisions/goldIII.png rename to textures/divisions/gold III.png diff --git a/textures/divisions/goldIII_medium.png b/textures/divisions/gold III_medium.png similarity index 100% rename from textures/divisions/goldIII_medium.png rename to textures/divisions/gold III_medium.png diff --git a/textures/divisions/goldII_medium.png b/textures/divisions/gold II_medium.png similarity index 100% rename from textures/divisions/goldII_medium.png rename to textures/divisions/gold II_medium.png diff --git a/textures/divisions/goldIV.png b/textures/divisions/gold IV.png similarity index 100% rename from textures/divisions/goldIV.png rename to textures/divisions/gold IV.png diff --git a/textures/divisions/goldIV_medium.png b/textures/divisions/gold IV_medium.png similarity index 100% rename from textures/divisions/goldIV_medium.png rename to textures/divisions/gold IV_medium.png diff --git a/textures/divisions/goldI_medium.png b/textures/divisions/gold I_medium.png similarity index 100% rename from textures/divisions/goldI_medium.png rename to textures/divisions/gold I_medium.png diff --git a/textures/divisions/goldV.png b/textures/divisions/gold V.png similarity index 100% rename from textures/divisions/goldV.png rename to textures/divisions/gold V.png diff --git a/textures/divisions/goldV_medium.png b/textures/divisions/gold V_medium.png similarity index 100% rename from textures/divisions/goldV_medium.png rename to textures/divisions/gold V_medium.png diff --git a/textures/divisions/masterI.png b/textures/divisions/master I.png similarity index 100% rename from textures/divisions/masterI.png rename to textures/divisions/master I.png diff --git a/textures/divisions/masterII.png b/textures/divisions/master II.png similarity index 100% rename from textures/divisions/masterII.png rename to textures/divisions/master II.png diff --git a/textures/divisions/masterIII.png b/textures/divisions/master III.png similarity index 100% rename from textures/divisions/masterIII.png rename to textures/divisions/master III.png diff --git a/textures/divisions/masterIII_medium.png b/textures/divisions/master III_medium.png similarity index 100% rename from textures/divisions/masterIII_medium.png rename to textures/divisions/master III_medium.png diff --git a/textures/divisions/masterII_medium.png b/textures/divisions/master II_medium.png similarity index 100% rename from textures/divisions/masterII_medium.png rename to textures/divisions/master II_medium.png diff --git a/textures/divisions/masterIV.png b/textures/divisions/master IV.png similarity index 100% rename from textures/divisions/masterIV.png rename to textures/divisions/master IV.png diff --git a/textures/divisions/masterIV_medium.png b/textures/divisions/master IV_medium.png similarity index 100% rename from textures/divisions/masterIV_medium.png rename to textures/divisions/master IV_medium.png diff --git a/textures/divisions/masterI_medium.png b/textures/divisions/master I_medium.png similarity index 100% rename from textures/divisions/masterI_medium.png rename to textures/divisions/master I_medium.png diff --git a/textures/divisions/masterV.png b/textures/divisions/master V.png similarity index 100% rename from textures/divisions/masterV.png rename to textures/divisions/master V.png diff --git a/textures/divisions/masterV_medium.png b/textures/divisions/master V_medium.png similarity index 100% rename from textures/divisions/masterV_medium.png rename to textures/divisions/master V_medium.png diff --git a/textures/divisions/silverI.png b/textures/divisions/silver I.png similarity index 100% rename from textures/divisions/silverI.png rename to textures/divisions/silver I.png diff --git a/textures/divisions/silverII.png b/textures/divisions/silver II.png similarity index 100% rename from textures/divisions/silverII.png rename to textures/divisions/silver II.png diff --git a/textures/divisions/silverIII.png b/textures/divisions/silver III.png similarity index 100% rename from textures/divisions/silverIII.png rename to textures/divisions/silver III.png diff --git a/textures/divisions/silverIII_medium.png b/textures/divisions/silver III_medium.png similarity index 100% rename from textures/divisions/silverIII_medium.png rename to textures/divisions/silver III_medium.png diff --git a/textures/divisions/silverII_medium.png b/textures/divisions/silver II_medium.png similarity index 100% rename from textures/divisions/silverII_medium.png rename to textures/divisions/silver II_medium.png diff --git a/textures/divisions/silverIV.png b/textures/divisions/silver IV.png similarity index 100% rename from textures/divisions/silverIV.png rename to textures/divisions/silver IV.png diff --git a/textures/divisions/silverIV_medium.png b/textures/divisions/silver IV_medium.png similarity index 100% rename from textures/divisions/silverIV_medium.png rename to textures/divisions/silver IV_medium.png diff --git a/textures/divisions/silverI_medium.png b/textures/divisions/silver I_medium.png similarity index 100% rename from textures/divisions/silverI_medium.png rename to textures/divisions/silver I_medium.png diff --git a/textures/divisions/silverV.png b/textures/divisions/silver V.png similarity index 100% rename from textures/divisions/silverV.png rename to textures/divisions/silver V.png diff --git a/textures/divisions/silverV_medium.png b/textures/divisions/silver V_medium.png similarity index 100% rename from textures/divisions/silverV_medium.png rename to textures/divisions/silver V_medium.png From 9142736060a5fbeef2e38b4e7bb84946d73bb9a3 Mon Sep 17 00:00:00 2001 From: "(Jip) Willem Wijnia" Date: Wed, 25 Dec 2024 07:58:54 +0100 Subject: [PATCH 2/6] Changelog for game version 3817 (#6599) --- changelog/snippets/fix.6581.md | 3 --- changelog/snippets/other.6577.md | 1 - docs/_posts/2024-12-25-3817.md | 33 +++++++++++++++++++++++++ lua/ui/lobby/changelogData.lua | 41 ++++++++++++++++++++++++++++++++ lua/version.lua | 6 ++--- mod_info.lua | 2 +- 6 files changed, 78 insertions(+), 8 deletions(-) delete mode 100644 changelog/snippets/fix.6581.md delete mode 100644 changelog/snippets/other.6577.md create mode 100644 docs/_posts/2024-12-25-3817.md diff --git a/changelog/snippets/fix.6581.md b/changelog/snippets/fix.6581.md deleted file mode 100644 index 35a2e38ed2..0000000000 --- a/changelog/snippets/fix.6581.md +++ /dev/null @@ -1,3 +0,0 @@ -- (#6581) Fix divisions not being parsed by the matchmaker lobby. - -- (#6581) Fix division image filenames not matching the division data in the scenario info. diff --git a/changelog/snippets/other.6577.md b/changelog/snippets/other.6577.md deleted file mode 100644 index 1a53a6e6b3..0000000000 --- a/changelog/snippets/other.6577.md +++ /dev/null @@ -1 +0,0 @@ -- (#6577) Annotate `AddBlinkyBox`. This UI-side global engine function makes a unit's selection box blink for some time. diff --git a/docs/_posts/2024-12-25-3817.md b/docs/_posts/2024-12-25-3817.md new file mode 100644 index 0000000000..9e79f9a022 --- /dev/null +++ b/docs/_posts/2024-12-25-3817.md @@ -0,0 +1,33 @@ +--- +layout: post +title: Game version 3817 +permalink: changelog/3817 +--- + +# Game version 3817 (25th of December, 2024) + +A small hotfix for the autolobby. This will be the final patch for the game in 2024. + +I’d like to take this opportunity to express my sincere gratitude to everyone who has contributed to FAForever this past year, as well as those who have contributed in the past. The FAForever project is possible because of your time and effort! + +If you're interested in contributing then I encourage you to visit the forums and review the first pinned post in the contribution section. It provides an extensive overview of the currently documented roles in the community. Whether you're an (aspiring) artist, developer, or simply interested in writing well-structured texts — you are welcome! + +I wish you all the best in the new year. + +With kind regards, +Jip + +## Bug fixes + +- (#6581) Fix divisions not being parsed by the matchmaker lobby. + +- (#6581) Fix division image filenames not matching the division data in the scenario info. + +## Other changes + +- (#6577) Annotate `AddBlinkyBox`. This UI-side global engine function makes a unit's selection box blink for some time. + +## Contributors + +- Nomander +- Jip diff --git a/lua/ui/lobby/changelogData.lua b/lua/ui/lobby/changelogData.lua index 179a569f3e..b33e656fbc 100644 --- a/lua/ui/lobby/changelogData.lua +++ b/lua/ui/lobby/changelogData.lua @@ -3,6 +3,47 @@ last_version = 3816 ---@type PatchNotes[] gamePatches = { + { + version = 3817, + name = "Hotfix", + hasPrettyGithubRelease = true, + hasPrettyPatchnotes = false, + description = { + "# Game version 3817 (25th of December, 2024)", + "", + "A small hotfix for the autolobby. This will be the final patch for the game in 2024.", + "", + "I’d like to take this opportunity to express my sincere gratitude to everyone who has contributed to FAForever this ", + "past year, as well as those who have contributed in the past. The FAForever project is possible ", + "because of your time and effort!", + "", + "If you're interested in contributing then I encourage you to visit the forums and review the first pinned post in ", + "the contribution section. It provides an extensive overview of the currently documented roles in the ", + "community. Whether you're an (aspiring) artist, developer, or simply interested in writing well-structured ", + "texts — you are welcome!", + "", + "I wish you all the best in the new year.", + "", + "With kind regards,", + "Jip", + "", + "## Bug fixes", + "", + "- (#6581) Fix divisions not being parsed by the matchmaker lobby.", + "", + "- (#6581) Fix division image filenames not matching the division data in the scenario info.", + "", + "## Other changes", + "", + "- (#6577) Annotate `AddBlinkyBox`. This UI-side global engine function makes a unit's selection box blink for some time.", + "", + "## Contributors", + "", + "- Nomander", + "- Jip", + "", + }, + }, { version = 3816, name = "Hotfix", diff --git a/lua/version.lua b/lua/version.lua index d55e91f97e..0312080b20 100644 --- a/lua/version.lua +++ b/lua/version.lua @@ -34,9 +34,9 @@ local Commit = 'unknown' -- The use of `'` instead of `"` is **intentional** --#endregion -local Version = "3816" ----@alias PATCH "3816" ----@alias VERSION "1.5.3816" +local Version = "3817" +---@alias PATCH "3817" +---@alias VERSION "1.5.3817" ---@return PATCH # Game release function GetVersion() LOG(string.format('Supreme Commander: Forged Alliance Lua version %s at %s (%s)', Version, GameType, Commit)) diff --git a/mod_info.lua b/mod_info.lua index 33c29502c3..2294bfa70d 100644 --- a/mod_info.lua +++ b/mod_info.lua @@ -27,7 +27,7 @@ -- - https://github.com/FAForever/fa/blob/deploy/fafdevelop/lua/MODS.LUA name = "Forged Alliance Forever" -version = 3816 -- needs to be an integer as it is parsed as a short (16 bit integer) +version = 3817 -- needs to be an integer as it is parsed as a short (16 bit integer) _faf_modname='faf' copyright = "Forged Alliance Forever Community" description = "Forged Alliance Forever extends Forged Alliance, bringing new patches, game modes, units, ladder, and much more!" From cce7a7dafc184434e9dd80bd13203c98ccbba986 Mon Sep 17 00:00:00 2001 From: "(Jip) Willem Wijnia" Date: Wed, 25 Dec 2024 08:42:25 +0100 Subject: [PATCH 3/6] Preserve the world camera when switching to/from split view (#6576) --- .vscode/settings.json | 3 +++ changelog/snippets/features.6576.md | 3 +++ lua/ui/game/worldview.lua | 23 +++++++++++++++++++++-- 3 files changed, 27 insertions(+), 2 deletions(-) create mode 100644 changelog/snippets/features.6576.md diff --git a/.vscode/settings.json b/.vscode/settings.json index 8bdda3b316..230bddec7f 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -24,6 +24,9 @@ "Lua.runtime.exportEnvDefault": true, "Lua.completion.autoRequire": false, "Lua.diagnostics.globals": ["ScenarioInfo"], + "Lua.format.defaultConfig": { + "max_line_length": "unset", + }, // used for grammar checks of changelog "grammarly.files.include": [ diff --git a/changelog/snippets/features.6576.md b/changelog/snippets/features.6576.md new file mode 100644 index 0000000000..7d5e86629b --- /dev/null +++ b/changelog/snippets/features.6576.md @@ -0,0 +1,3 @@ +- (#6576) Preserve the world camera when switching to/from split view + + When you switch to/from split view the primary camera (the left camera) is now preserved. This makes it less disorientating for a player (or caster) to switch to/from split view. \ No newline at end of file diff --git a/lua/ui/game/worldview.lua b/lua/ui/game/worldview.lua index 9a3fdd49d8..ac7d4abe5a 100644 --- a/lua/ui/game/worldview.lua +++ b/lua/ui/game/worldview.lua @@ -47,7 +47,7 @@ local function CreatePositionMarker(army, worldView) marker.frame.Depth:Set(marker:Depth() - 1) marker.name = UIUtil.CreateText(marker, data.name, 12, UIUtil.bodyFont) - marker.name:DisableHitTest() + marker.name:DisableHitTest() marker.name:SetColor('white') if Factions[data.faction] then @@ -120,7 +120,7 @@ function MarkStartPositions(startPositions) local faction = armyData.faction + 1 local color = armyData.color - positionMarkers[armyId] = {army = armyId, pos = pos, name = name, faction = faction, color = color, views = 0} + positionMarkers[armyId] = { army = armyId, pos = pos, name = name, faction = faction, color = color, views = 0 } for viewName, view in MapControls do if viewName ~= 'MiniMap' then @@ -132,6 +132,16 @@ function MarkStartPositions(startPositions) end function CreateMainWorldView(parent, mapGroup, mapGroupRight) + -- feature: preserve the world camera when changing views + ---@type UserCamera + local worldCamera = GetCamera('WorldCamera') + + ---@type UserCameraSettings | nil + local worldCameraSettings = nil + if worldCamera then + worldCameraSettings = worldCamera:SaveSettings() + end + if viewLeft then viewLeft:Destroy() viewLeft = false @@ -176,6 +186,15 @@ function CreateMainWorldView(parent, mapGroup, mapGroupRight) view:DisableHitTest() LayoutHelpers.FillParent(view, viewLeft) end + + -- feature: preserve the world camera when changing views + if worldCameraSettings then + local newWorldCamera = GetCamera('WorldCamera') + if newWorldCamera then + newWorldCamera:RestoreSettings(worldCameraSettings) + end + end + import("/lua/ui/game/multifunction.lua").RefreshMapDialog() end From 8946edc25f36bfa5501a75b4a4c81aeb7cb5fe62 Mon Sep 17 00:00:00 2001 From: lL1l1 <82986251+lL1l1@users.noreply.github.com> Date: Tue, 24 Dec 2024 23:49:27 -0800 Subject: [PATCH 4/6] Add `TransportSpeedReduction` to unit blueprint documentation (#6598) --- changelog/snippets/other.6598.md | 1 + engine/Core/Blueprints/UnitBlueprint.lua | 3 +++ lua/sim/units/AirTransportUnit.lua | 2 -- 3 files changed, 4 insertions(+), 2 deletions(-) create mode 100644 changelog/snippets/other.6598.md diff --git a/changelog/snippets/other.6598.md b/changelog/snippets/other.6598.md new file mode 100644 index 0000000000..37f3e0d364 --- /dev/null +++ b/changelog/snippets/other.6598.md @@ -0,0 +1 @@ +- (#6598) Add documentation for the recently added `TransportSpeedReduction` unit blueprint value. diff --git a/engine/Core/Blueprints/UnitBlueprint.lua b/engine/Core/Blueprints/UnitBlueprint.lua index 8a60a413ca..b043f2286d 100644 --- a/engine/Core/Blueprints/UnitBlueprint.lua +++ b/engine/Core/Blueprints/UnitBlueprint.lua @@ -1169,6 +1169,9 @@ ---@field StandUpright boolean --- used by XSB3202 when the vertical layer changes from top to sub ---@field SubSpeedMultiplier? number +--- How much this unit slows down transports it is loaded in. +--- Defaults to 0.15 (Tech 1), 0.3 (Tech 2), 0.6 (Tech 3), and 1 (ACU/SACU/Experimentals). +---@field TransportSpeedReduction number --- turn facing damping for the unit, usually used for hover units only ---@field TurnFacingRate number --- turn radius for the unit, in world units. Used when the nav waypoint is further than `TurnRadius` distance, diff --git a/lua/sim/units/AirTransportUnit.lua b/lua/sim/units/AirTransportUnit.lua index 03d3e2b360..7b3eb879c3 100644 --- a/lua/sim/units/AirTransportUnit.lua +++ b/lua/sim/units/AirTransportUnit.lua @@ -76,8 +76,6 @@ AirTransport = ClassUnit(AirUnit, BaseTransport) { end, ---@param self AirTransport - ---@param totalweight CargoWeight - ---@param unit Unit ReduceTransportSpeed = function(self) local transportspeed = self.Blueprint.Air.MaxAirspeed local totalweight = 0 From 2b1d27605ee96dccb1da64bd83848f75def6c81c Mon Sep 17 00:00:00 2001 From: lL1l1 <82986251+lL1l1@users.noreply.github.com> Date: Wed, 25 Dec 2024 16:55:20 -0800 Subject: [PATCH 5/6] Fix unit transfer enabling enhancement-locked weapons (#6544) For example Seraphim SACU TML was being enabled when transferred. --- changelog/snippets/fix.6544.md | 1 + lua/SimUtils.lua | 8 ++++++-- 2 files changed, 7 insertions(+), 2 deletions(-) create mode 100644 changelog/snippets/fix.6544.md diff --git a/changelog/snippets/fix.6544.md b/changelog/snippets/fix.6544.md new file mode 100644 index 0000000000..0ce92396f7 --- /dev/null +++ b/changelog/snippets/fix.6544.md @@ -0,0 +1 @@ +- (#6544) Fix unit transfer enabling weapons locked by enhancements, such as the TML of the Seraphim SACU. diff --git a/lua/SimUtils.lua b/lua/SimUtils.lua index 66d92f082b..f006a8ca13 100644 --- a/lua/SimUtils.lua +++ b/lua/SimUtils.lua @@ -302,8 +302,12 @@ function TransferUnitsOwnership(units, toArmy, captured) -- disable all weapons, enable with a delay for k = 1, unit.WeaponCount do local weapon = unit:GetWeapon(k) - weapon:SetEnabled(false) - weapon:ForkThread(TransferUnitsOwnershipDelayedWeapons) + -- Weapons disabled by enhancement shouldn't be re-enabled unless the enhancement is built + local enablingEnhancement = weapon.Blueprint.EnabledByEnhancement + if not enablingEnhancement or (activeEnhancements and activeEnhancements[enablingEnhancement]) then + weapon:SetEnabled(false) + weapon:ForkThread(TransferUnitsOwnershipDelayedWeapons) + end end end From 12c3305bf0f6023581fdaaf319fba50e9e0a135d Mon Sep 17 00:00:00 2001 From: lL1l1 <82986251+lL1l1@users.noreply.github.com> Date: Tue, 31 Dec 2024 01:32:48 -0800 Subject: [PATCH 6/6] Fix personal shields reflecting above the water surface (#6583) This change does not affect gameplay. --- changelog/snippets/fix.6583.md | 1 + effects/mesh.fx | 8 ++++++++ 2 files changed, 9 insertions(+) create mode 100644 changelog/snippets/fix.6583.md diff --git a/changelog/snippets/fix.6583.md b/changelog/snippets/fix.6583.md new file mode 100644 index 0000000000..81f2881fad --- /dev/null +++ b/changelog/snippets/fix.6583.md @@ -0,0 +1 @@ +- (#6583) Fix personal shields reflecting above the water surface. diff --git a/effects/mesh.fx b/effects/mesh.fx index c3c70c00a9..0d34c5bb18 100644 --- a/effects/mesh.fx +++ b/effects/mesh.fx @@ -4085,6 +4085,8 @@ float4 CybranShieldImpactPS( SHIELDIMPACT_VERTEX vertex, uniform float fadeTime, float4 PhaseShieldPS( VERTEXNORMAL_VERTEX vertex ) : COLOR { + if (1 == mirrored) clip(vertex.depth.x); + float2 tc1 = vertex.texcoord0.xy * 0.5; tc1.x += 0.005 * vertex.material.x; tc1.y += 0.02 * vertex.material.x; @@ -4108,6 +4110,8 @@ float4 PhaseShieldPS( VERTEXNORMAL_VERTEX vertex ) : COLOR float4 AeonPhaseShieldPS( VERTEXNORMAL_VERTEX vertex ) : COLOR { + if (1 == mirrored) clip(vertex.depth.x); + float2 tc1 = vertex.texcoord0.xy * 2; tc1.x += 0.005 * vertex.material.x; tc1.y += 0.02 * vertex.material.x; @@ -4131,6 +4135,8 @@ float4 AeonPhaseShieldPS( VERTEXNORMAL_VERTEX vertex ) : COLOR float4 CybranPhaseShieldPS( VERTEXNORMAL_VERTEX vertex ) : COLOR { + if (1 == mirrored) clip(vertex.depth.x); + float2 tc1 = vertex.texcoord0.xy * 2; tc1.x += 0.1 * vertex.material.x; tc1.y += 0.5 * vertex.material.x; @@ -4156,6 +4162,8 @@ float4 CybranPhaseShieldPS( VERTEXNORMAL_VERTEX vertex ) : COLOR float4 SeraphimPhaseShieldPS( VERTEXNORMAL_VERTEX vertex ) : COLOR { + if (1 == mirrored) clip(vertex.depth.x); + float2 tc1 = vertex.texcoord0.xy * 0.5; tc1.x += 0.005 * vertex.material.x; tc1.y += 0.02 * vertex.material.x;