This is the changelog for the **next stable release**. The [[changelog for the development branch|Changelog (bleed)]] can be found separately. Additionally, changes from earlier releases can be found on the [historical changelogs](https://github.com/OpenRA/OpenRA/wiki/Historical-Changelogs) page. **Release 20231010** ------------------------- **General improvements** * Added a guaranteed amount of actors on sell. [[#20491](https://github.com/OpenRA/OpenRA/pull/20491 "Add an option to guarantee actors on sell"), [#20912](https://github.com/OpenRA/OpenRA/pull/20912 "Fix linter crashing when collections with ActorReference attributes are null")] * Added support for optional asset installation. [[#20688](https://github.com/OpenRA/OpenRA/pull/20688 "Optional install packages"), [#20740](https://github.com/OpenRA/OpenRA/pull/20740 "Fix modcontent's chrome-3x.png")] * Added support for assets installation from GoG and Steam. [[#20439](https://github.com/OpenRA/OpenRA/pull/20439 "Modular installer part3"), [#20602](https://github.com/OpenRA/OpenRA/pull/20602 "Implemented WestwoodCompression for AUD files."), [#20629](https://github.com/OpenRA/OpenRA/pull/20629 "Add support for Flatpak Steam installs.")] * Added a kick button for defeated players. [[#20521](https://github.com/OpenRA/OpenRA/pull/20521 "Allow kicking dead players")] * Added a player vote-kick system ingame. [[#21003](https://github.com/OpenRA/OpenRA/pull/21003 "Add vote kick")] * Added quick save keyboard shortcut to map editor. [[#20204](https://github.com/OpenRA/OpenRA/pull/20204 "Added a quick save button to the map editor")] * Added a quit button to connection lost panel. [[#20748](https://github.com/OpenRA/OpenRA/pull/20748 "Add a quit button to connection lost panel")] * Added support for rebinding hotkeys to mouse 4 and mouse 5. [[#20811](https://github.com/OpenRA/OpenRA/pull/20811 "Ability to use Mouse 4 and Mouse 5 as hotkeys")] * Added options in map chooser to order by map title and map size. [[#20962](https://github.com/OpenRA/OpenRA/pull/20962 "Add options in map chooser to order by map title and map size")] * Added Linux desktop environment, distribution, display manager and macOS build ID to the system survey. [[#20909](https://github.com/OpenRA/OpenRA/pull/20909 "Update sysinfo data"), [#20917](https://github.com/OpenRA/OpenRA/pull/20917 "Include Linux DE in OS sysinfo string.")] * Fixed the attack move and guard cursors not being kept when queuing orders. [[#20522](https://github.com/OpenRA/OpenRA/pull/20522 "Don't cancel attack move cursor when holding shift"), [#20560](https://github.com/OpenRA/OpenRA/pull/20560 "Don't cancel guard cursor when holding shift")] * Fixed cursor changing when mouse is over in-game chat and notifications. [[#20801](https://github.com/OpenRA/OpenRA/pull/20801 "Don't change cursor when mousing over label widgets")] * Fixed text notifications using ingame time to calculate their display duration. [[#20502](https://github.com/OpenRA/OpenRA/pull/20502 "Define and measure duration for text notifications in milliseconds")] * Fixed `CycleBasesHotkeyLogic` not prioritising primary buildings. [[#20561](https://github.com/OpenRA/OpenRA/pull/20561 "Prioritise primary buildings in CycleBasesHotkeyLogic.")] * Fixed aircraft jittering when flying between two animation stages. [[#20841](https://github.com/OpenRA/OpenRA/pull/20841 "Fix aircraft jittering")] * Fixed a bug where MCV could overlap with adjacent MCVs. [[#20527](https://github.com/OpenRA/OpenRA/pull/20527 "Add a CanDeploy check to Transform at FrameEndTask")] * Fixed return fire logic ignoring `AutoAttack` priorities. [[#20736](https://github.com/OpenRA/OpenRA/pull/20736 "Fix return fire logic ignoring AutoAttack priorities"), [#21034](https://github.com/OpenRA/OpenRA/pull/21034 "Fix Target.Invalid comparion bug in AutoTarget")] * Fixed stance icon not updating after loading a save. [[#20759](https://github.com/OpenRA/OpenRA/pull/20759 "fix stance icon not updating when selecting units")] * Fixed a few rare crashes when overriding keyboard shortcuts. [[#20775](https://github.com/OpenRA/OpenRA/pull/20775 "fix two crashes in hotkey menu, trying to select not visible widgets")] * Fixed reversed path searches from inaccessible locations. [[#20767](https://github.com/OpenRA/OpenRA/pull/20767 "Fix reversed path searches from inaccessible locations.")] * Fixed several input issues on macOS. [[#20798](https://github.com/OpenRA/OpenRA/pull/20798 "Downgrade SDL to 2.0.22.")] * Fixed a crash in Lua scripted reinforcements. [[#20803](https://github.com/OpenRA/OpenRA/pull/20803 "Fix actors being added to world while world actors are being iterated")] * Fixed paused armaments being incorrectly used for attack range calculations. [[#20902](https://github.com/OpenRA/OpenRA/pull/20902 "Only consider non-paused armaments (if any exist) when determining max range for attack")] * Fixed full-screen mode on Linux with GNOME 44. [[#20927](https://github.com/OpenRA/OpenRA/pull/20927 "Work around Gnome 44 titlebar bug.")] * Fixed a crash when loading a save game that was just created. [[#20966](https://github.com/OpenRA/OpenRA/pull/20966 "Ensure save file is closed after saving")] * Fixed attack moving with melee units. [[#20257](https://github.com/OpenRA/OpenRA/pull/20257 "Consider AutoTarget ScanRadius when attack moving")] * Fixed AI's units in missions sometimes getting stuck on trees. [[#20974](https://github.com/OpenRA/OpenRA/pull/20974 "Fix hunt incorrectly pathing to uncrushable targets"), [#20979](https://github.com/OpenRA/OpenRA/pull/20979 "Revert Hunt to move within 2 cells of the target")] * Fixed AI units in rare cases endlessly attacking actors frozen under fog. [[#20978](https://github.com/OpenRA/OpenRA/pull/20978 "Fix AutoTarget ignoring frozen actor bot targeting hack")] * Fixed Save Game dialog not exiting with ESC and not triggering sound response. [[#20976](https://github.com/OpenRA/OpenRA/pull/20976 "Allow exiting from game save menu with escape")] * Updated the server launch scripts. [[#20783](https://github.com/OpenRA/OpenRA/pull/20783 "Server launch scripts")] * Polished the game save dialogue. [[#20664](https://github.com/OpenRA/OpenRA/pull/20664 "Polish the save dialogue")] * Changed how player color remapping works. [[#20708](https://github.com/OpenRA/OpenRA/pull/20708 "Fix colors in gamma space being treated as if they were in linear space"), [#20721](https://github.com/OpenRA/OpenRA/pull/20721 "Add support for dark player colors")] * Reworked the color picker to resemble its older iteration. [[#20742](https://github.com/OpenRA/OpenRA/pull/20742 "Resurrect old color picker"), [#20799](https://github.com/OpenRA/OpenRA/pull/20799 "Fix bleed"), [#20944](https://github.com/OpenRA/OpenRA/pull/20944 "Revert color validator")] * Added more varied pre-selected colors to player colors palette. [[#20893](https://github.com/OpenRA/OpenRA/pull/20893)] * Removed the `:` suffix when TAB completing a nickname in chat. [[#20747](https://github.com/OpenRA/OpenRA/pull/20747)] **Red Alert** * Added missions: * Allies10b [[#19363](https://github.com/OpenRA/OpenRA/pull/19487 "Add Allies10b")] * Soviet13a [[#19487](https://github.com/OpenRA/OpenRA/pull/19363 "Add Soviet13a"), [#21070](https://github.com/OpenRA/OpenRA/pull/21070 "Disable flak truck in Soviet-13, others")] * Soviet13b [[#19364](https://github.com/OpenRA/OpenRA/pull/19364 "Add Soviet13b"), [#21070](https://github.com/OpenRA/OpenRA/pull/21070 "Disable flak truck in Soviet-13, others")] * Counter-Strike: Mousetrap [[#20809](https://github.com/OpenRA/OpenRA/pull/20809)] * Added player names next to the super weapon timers. [[#20722](https://github.com/OpenRA/OpenRA/pull/20722 "Add player names to support weapon timers")] * Removed sniper. Files and definitions moved to Fort Lonestar minigame. [[#20509](https://github.com/OpenRA/OpenRA/pull/20509 "Remove sniper")] * Removed player experience gains for infiltrating fakes. [[#20106](https://github.com/OpenRA/OpenRA/pull/20106 "Move PlayerExperience from Infiltrates to InfiltrateFor")] * Sped up the ending of mission Sarin Gas 3. [[#20999](https://github.com/OpenRA/OpenRA/pull/20999 "Add text fix, minor polish to Controlled Burn")] * Fixed a crash in allies05b and in allies05c. [[#20815](https://github.com/OpenRA/OpenRA/pull/20815 "Fix OnAllKilled crash for allies05b and allies05c")] * Fixed crate unit duplicate action never triggering. [[#20848](https://github.com/OpenRA/OpenRA/pull/20848 "Adjust the ValidTargets of DuplicateUnitCrateAction in RA")] * Fixed crate bonus not always being applied to the nearest units. [[#20836](https://github.com/OpenRA/OpenRA/pull/20836 "Grant condition to units closest to the crate")] * Fixed phase transport not uncloaking when passengers enter. [[#20961](https://github.com/OpenRA/OpenRA/pull/20961 "Make phase transport uncloak on loading cargo")] * Changed anti-aircraft weapons to use flat damage numbers instead of percentages vs armor type. [[#20887](https://github.com/OpenRA/OpenRA/pull/20887 "Normalise anti-air weapon values")] * Polished submarine facings. [[#20762](https://github.com/OpenRA/OpenRA/pull/20762 "Polish submarines")] * Balance changes: [[#20833](https://github.com/OpenRA/OpenRA/pull/20833), [#20884](https://github.com/OpenRA/OpenRA/pull/20884 "RA naval balance May 2023"), [#20928](https://github.com/OpenRA/OpenRA/pull/20928 "RA Naval balance June 2023")] * MiG health decreased to 8000 from 10000. * Ranger speed increased to 164 from 160. * Gun Boat weapon spread increased to 256 from 128 and projectile speed increased to 682 from 426. * Gun Boat vision increased to 8 cells from 7. * Missile Submarine anti-ground projectile speed increased to 215 from 162, damage versus none increased to 80% from 40% and damage versus light increased to 48% from 30%. * Destroyer damage versus light armor decreased to 66% from 88%. * Destroyer vision reduced to 5 cells from 6. * Submarine cloak detection range increased to 5 cells from 4. * Submarine burst delay reduced to 15 from 20. * Submarine turn speed increased to 20 from 16. **Tiberian Dawn** * Added Covert Operations mission Eviction Notice. [[#20660](https://github.com/OpenRA/OpenRA/pull/20660 "Added Nod Covert Operations mission: scb30ea - Eviction Notice")] * Added Covert Operations mission Twist of Fate. [[#20818](https://github.com/OpenRA/OpenRA/pull/20818 "Add GDI Covert Operations - Twist of Fate - scg41ea")] * Changed anti-aircraft weapons to use flat damage numbers instead of percentages vs armor type. [[#20887](https://github.com/OpenRA/OpenRA/pull/20887 "Normalise anti-air weapon values")] * Removed non-existing sound notification definitions. [[#20866](https://github.com/OpenRA/OpenRA/pull/20866 "Remove wrong definitions from TD's notifications.yaml")] * Fixed observer vision stats alignment. [[#20986](https://github.com/OpenRA/OpenRA/pull/20986 "Fix misaligned TD combat observer tab")] **Dune 2000** * Changed bot-owned Deviators to prioritise targeting vehicles. [[#20345](https://github.com/OpenRA/OpenRA/pull/20345 "Fixed Deviator auto targetting not prioritizing vehicles")] * Added smoke effects to damaged vehicles. [[19491](https://github.com/OpenRA/OpenRA/pull/19491 "Added particle smoke effects")] * Fixed Harkonnen 04-09 enemy reinforcements not attacking. [[#20646](https://github.com/OpenRA/OpenRA/pull/20646)] * Fixed a bug where `AutoCarryalls` could kidnap a harvester and never let go. [[#21007](https://github.com/OpenRA/OpenRA/pull/21007 "Autocarryall put down unit when destination is cancelled")] **Engine and Modding** * Added a new modular installer that can be extended in mod code. [[#20440](https://github.com/OpenRA/OpenRA/pull/20440 "Modular installer part1"), [#20445](https://github.com/OpenRA/OpenRA/pull/20445 "Modular installer part2"), [#20439](https://github.com/OpenRA/OpenRA/pull/20439 "Modular installer part3"), [#20602](https://github.com/OpenRA/OpenRA/pull/20602 "Implemented WestwoodCompression for AUD files."), [#20629](https://github.com/OpenRA/OpenRA/pull/20629 "Add support for Flatpak Steam installs."), [#20776](https://github.com/OpenRA/OpenRA/pull/20776), [#20785](https://github.com/OpenRA/OpenRA/pull/20785 "Support dos paths in registry."), [#20791](https://github.com/OpenRA/OpenRA/pull/20791 "IDFiles should be optional"), [#20984](https://github.com/OpenRA/OpenRA/pull/20984 "Fix RA assets installation from the Steam C&C:R version")] * Added API to stop looping sounds. [[#20611](https://github.com/OpenRA/OpenRA/pull/20611 "Looped sounds can now be unlooped to avoid cut-offs."), [#20674](https://github.com/OpenRA/OpenRA/pull/20674)] * Added a Fluent-based translation system (Part 2). [[#20265](https://github.com/OpenRA/OpenRA/pull/20265 "Extracted the Tiberian Dawn mission objective strings"), [#20400](https://github.com/OpenRA/OpenRA/pull/20400 "Exposed lobby options to localisation"), [#20207](https://github.com/OpenRA/OpenRA/pull/20207 "Reorganize translation references names"), [#20387](https://github.com/OpenRA/OpenRA/pull/20387 "Extracted the Red Alert mission strings"), [#20390](https://github.com/OpenRA/OpenRA/pull/20390 "Extracted the Dune 2000 mission strings"), [#20677](https://github.com/OpenRA/OpenRA/pull/20677 "Fix empty mission objectives getting translated"), [#20804](https://github.com/OpenRA/OpenRA/pull/20804 "New localisation architecture"), [#20585](https://github.com/OpenRA/OpenRA/pull/20585 "Added localisation support to difficulty dropdown"), [#20840](https://github.com/OpenRA/OpenRA/pull/20840 "Fixed a null reference exception upon empty Fluent strings"), [#20820](https://github.com/OpenRA/OpenRA/pull/20820 "Chrome string translation preparations"), [#20281](https://github.com/OpenRA/OpenRA/pull/20281 "Added back checks for difficulty on a per map basis"), [#20876](https://github.com/OpenRA/OpenRA/pull/20876 "Exposed editor brush texts to localisation"), [#20830](https://github.com/OpenRA/OpenRA/pull/20830 "Linting revamp"), [#20894](https://github.com/OpenRA/OpenRA/pull/20894 "Fix dedicated servers crashing on startup due to missing translations"), [#20885](https://github.com/OpenRA/OpenRA/pull/20885 "Fixed Fluent plural forms always choosing the default entry"), [#20921](https://github.com/OpenRA/OpenRA/pull/20921 "Bump Linguini.Bundle to 0.5.0."), [#20999](https://github.com/OpenRA/OpenRA/pull/20999 "Add text fix, minor polish to Controlled Burn")] * Added an option for units to target themselves. [[#20369](https://github.com/OpenRA/OpenRA/pull/20369 "Weapon shouldn't check warheads in IsValidAgainst"), [#21029](https://github.com/OpenRA/OpenRA/pull/21029 "Fixed empty ScriptLobbyDropdown description crashing the game despite being optional")] * Added additional information to sync reports. [[#20474](https://github.com/OpenRA/OpenRA/pull/20474 "Syncreport outputs some more infomation")] * Added a `WorldViewportSizes: DefaultScale` setting to mod.yaml. [[#20573](https://github.com/OpenRA/OpenRA/pull/20573 "Allow mods to customise the default rendering scale.")] * Added additional logging for issues with downloaded asset installation. [[#20652](https://github.com/OpenRA/OpenRA/pull/20652 "Improve logging in DownloadPackageLogic")] * Added more code style rules. [[#20680](https://github.com/OpenRA/OpenRA/pull/20680 "Turn some code style rule severity from suggestion to warning"), [#20694](https://github.com/OpenRA/OpenRA/pull/20694 "Enable more code style rules"), [#20695](https://github.com/OpenRA/OpenRA/pull/20695 "Enable more code style rules"), [#20697](https://github.com/OpenRA/OpenRA/pull/20697 "Enforce code rule IDE0039"), [#20711](https://github.com/OpenRA/OpenRA/pull/20711 "Enforce code rule IDE0048"), [#20727](https://github.com/OpenRA/OpenRA/pull/20727 "Enforce code style rule IDE0053"), [#20696](https://github.com/OpenRA/OpenRA/pull/20696 "Enforce code rule IDE0032"), [#20746](https://github.com/OpenRA/OpenRA/pull/20746 "Fix bleed"), [#20726](https://github.com/OpenRA/OpenRA/pull/20726 "Enforce additional style rules."), [#20752](https://github.com/OpenRA/OpenRA/pull/20752 "Enforce StyleCop rules"), [#20753](https://github.com/OpenRA/OpenRA/pull/20753 "Enable Code Quality Rules"), [#20792](https://github.com/OpenRA/OpenRA/pull/20792 "Enforce style rules for C# 8/9"), [#20802](https://github.com/OpenRA/OpenRA/pull/20802 "Enable more Code Quality Rules"), [#20814](https://github.com/OpenRA/OpenRA/pull/20814 "Enable 2 more Code Quality Rules"), [#20812](https://github.com/OpenRA/OpenRA/pull/20812 "Enable more Code Quality Rules")] * Added HPF overlay controls for observers. [[#20436](https://github.com/OpenRA/OpenRA/pull/20436 "Add HPF overlay controls to observer chrome")] * Added configurable `TextColor` to `ProductionPaletteWidget` and `TabColor` `TabColorDone` to `ProductionTabsWidget`. [[#20735](https://github.com/OpenRA/OpenRA/pull/20735 "Allow mods to override production widgets text colors.")] * Added configurable `QueuedOffset` and `QueuedTextAlign` to `ProductionPaletteWidget`. [[#20657](https://github.com/OpenRA/OpenRA/pull/20657)] * Added support for playing and displaying notifications when a repair process is aborted. [[#20757](https://github.com/OpenRA/OpenRA/pull/20757 "RepairableBuilding: play/display notification when repair process is aborted")] * Added map sequence checks to dedicated server linting. [[#20751](https://github.com/OpenRA/OpenRA/pull/20751 "Add sequences linting to ingame lobby")] * Added the option to enable or disable the low power notification via Lua. [[#20869](https://github.com/OpenRA/OpenRA/pull/20869 "Support enabling and disabling the low power notification via Lua"), [#20989](https://github.com/OpenRA/OpenRA/pull/20989 "Fix low power notification never triggering")] * Added `PreLayDelay` and `AfterLayingDelay` to the `Minelayer` trait. [[#20959](https://github.com/OpenRA/OpenRA/pull/20959 "Minelaying improvements"), [#20968](https://github.com/OpenRA/OpenRA/pull/20968 "LayMines: fixed occasional incorrect mine position when using BeginMinefield order")] * Added a description to `AttackBomber` [[#20915](https://github.com/OpenRA/OpenRA/pull/20915 "Add a description for AttackBomber")] * Added documentation to `AppearsOnRadar`. [[#20819](https://github.com/OpenRA/OpenRA/pull/20819 "Documented AppearsOnRadar")] * Fixed attack move lines not showing up for units using `GrantConditionOnDeploy`. [[#20523](https://github.com/OpenRA/OpenRA/pull/20523 "Fix attack move lines not showing up for undeploy on force move units")] * Fixed MiniYAML merging not allowing removal of trait fields. [[#20671](https://github.com/OpenRA/OpenRA/pull/20671 "Fix MiniYAML merging not allowing removal of trait fields")] * Fixed a rare crash when actor in `IBotRespondToAttack` is dead. [[#20872](https://github.com/OpenRA/OpenRA/pull/20872 "Fix a rare crash when actor in IBotRespondToAttack is dead")] * Fixed exceptions about invalid cursors not mentioning the cursor name. [[#20537](https://github.com/OpenRA/OpenRA/pull/20537 "Fixed exception about invalid cursors not mentioning the cursor name")] * Fixed desyncing causing crashes in replays. [[#20532](https://github.com/OpenRA/OpenRA/pull/20532 "Fix syncreport crash caused by getting LocalClient index from ReplayConnection")] * Fixed `ProductionTabsWidget` scroll decorations being uncustomizeable. [[#20635](https://github.com/OpenRA/OpenRA/pull/20635 "ProductionTabsWidget: customize scroll decorations")] * Fixed `BuildableTerrainOverlay` ignoring sprite scales. [[#20758](https://github.com/OpenRA/OpenRA/pull/20758 "Fixed BuildableTerrainOverlay ignoring scale")] * Fixed enabling the MP3 format disabling all other formats. [[#20778](https://github.com/OpenRA/OpenRA/pull/20778 "Fixed MP3 detection")] * Fixed video size being square and frame rate tied to the audio track. [[#20858](https://github.com/OpenRA/OpenRA/pull/20858)] * Fixed backwards movement not working correctly when turning in an arc. [[#20441](https://github.com/OpenRA/OpenRA/pull/20441 "Fix backwards movement not working correctly when turning in an arc")] * Fixed `RallyPoint` sprites not being truely optional. [[#20845](https://github.com/OpenRA/OpenRA/pull/20845 "Fixed RallyPoint sprites not being truely optional")] * Fixed `DischargeableSupportPowerInstance` crashing when last instance is removed. [[#20823](https://github.com/OpenRA/OpenRA/pull/20823 "Fix DischargeableSupportPowerInstance crashing without instances")] * Fixed duplicate asset selection in asset browser. [[#20859](https://github.com/OpenRA/OpenRA/pull/20859 "Fixed duplicate asset selection in asset browser.")] * Fixed restart button being disabled after script errors. [[#18602](https://github.com/OpenRA/OpenRA/pull/18602 "Enable the restart button for missions with script errors")] * Fixed benchmark CSV export using inconsistent formatting. [[#20889](https://github.com/OpenRA/OpenRA/pull/20857 "Fixed benchmark CSV export using inconsistent formatting")] * Fixed a pathfinding crash when actors are spawned in cliffs. [[#20843](https://github.com/OpenRA/OpenRA/pull/20843 "Fix HierarchicalPathFinder pathing from inaccessible source locations.")] * Fixed a crash in `WithDecoration` when not using player palettes. [[#20896](https://github.com/OpenRA/OpenRA/pull/20896 "WithDecoration: fixed crash when Palette is null")] * Fixed a crash when a rally point is created via Lua script. [[#20937](https://github.com/OpenRA/OpenRA/pull/20937 "Fix a crash when RallyPoint creates RallyPointIndicator")] * Fixed `Aircraft` with `IdleBehavior: ReturnToBase` hanging midair when there's no base to return to. [[#20406](https://github.com/OpenRA/OpenRA/pull/20406 "Issue20373 aicraft hangs midair")] * Fixed `Aircraft` with circle-flying freezing in air when paused while not being at Cruise Altitude. [[#20949](https://github.com/OpenRA/OpenRA/pull/20949 "fix: aircraft pause in sky when cruise at undulating ground")] * Fixed `Mobile` units still being able to turn via attacking while the trait is paused or disabled. [[#20838](https://github.com/OpenRA/OpenRA/pull/20838 "Fix EMP'ed units turning")] * Fixed sprite sequences using `Combine:` not reading in nested data. [[#20935](https://github.com/OpenRA/OpenRA/pull/20935 "Fix combined sequences using frames being broken")] * Reworked sprite sequences as part of the `C&C: Remastered` effort. Removed negative sequence lengths. [[#20580](https://github.com/OpenRA/OpenRA/pull/20580 "Overhaul sequence filename definitions"), [#20597](https://github.com/OpenRA/OpenRA/pull/20597 "Overhaul sequence parsing and sprite loading"), [#20668](https://github.com/OpenRA/OpenRA/pull/20668 "Fix sequence inheritance defined in yaml"), [#20857](https://github.com/OpenRA/OpenRA/pull/20857 "Fix the ExplicitSequenceFilenames rule breaking when updating single maps"), [#21026](https://github.com/OpenRA/OpenRA/pull/21026 "Add backup ExplicitSequenceFilenames to update rules"), [#20861](https://github.com/OpenRA/OpenRA/pull/20861 "Add RemoveNegativeSequenceLength update rule")] * Changed dedicated servers to not load map preview images, reducing memory usage. [[#20704](https://github.com/OpenRA/OpenRA/pull/20704 "When running a server, don't load minimap previews into memory.")] * Preparations towards a generic actor docking system. [[#20171](https://github.com/OpenRA/OpenRA/pull/20171 "Unify docking interfaces"), [#20172](https://github.com/OpenRA/OpenRA/pull/20172 "Move RearmTick to Rearmable"), [#20174](https://github.com/OpenRA/OpenRA/pull/20174 "Clean up DockSequence"), [#20627](https://github.com/OpenRA/OpenRA/pull/20627 "Fix not all ammo pools getting rearmed during RearmTick"), [#19163](https://github.com/OpenRA/OpenRA/pull/20621 "Add IMove.MoveOntoTarget interface"), [#20874](https://github.com/OpenRA/OpenRA/pull/20874 "Fix PortableChrono not teleporting on force move")] * Performance improvements. [[#20655](https://github.com/OpenRA/OpenRA/pull/20655 "Make Wanders and AttackWander queue activities instead of resolving orders"), [#20760](https://github.com/OpenRA/OpenRA/pull/20760 "Rework PriorityQueue for performance."), [#20774](https://github.com/OpenRA/OpenRA/pull/20774 "Improve performance of ActorInfo.TraitsInConstructOrder."), [#20773](https://github.com/OpenRA/OpenRA/pull/20773 "Cache reflection calls when running utility lints and commands."), [#20846](https://github.com/OpenRA/OpenRA/pull/20846 "TechTree.GatherOwnedPrerequisites performance improvements."), [#20852](https://github.com/OpenRA/OpenRA/pull/20852 "Cache the notifyAttacks in AttackGarrisoned"), [#20855](https://github.com/OpenRA/OpenRA/pull/20855 "Track keys during MiniYaml Merge."), [#20865](https://github.com/OpenRA/OpenRA/pull/20865 "Small cleanup inside DefaultSpriteSequence.cs"), [#20423](https://github.com/OpenRA/OpenRA/pull/20423 "Dispose DependencyContextJsonReader after using"), [#20864](https://github.com/OpenRA/OpenRA/pull/20864 "Deserialize mod rules only once when loading all maps."), [#20890](https://github.com/OpenRA/OpenRA/pull/20890), [#20891](https://github.com/OpenRA/OpenRA/pull/20891), [#20877](https://github.com/OpenRA/OpenRA/pull/20877 "Use IntegerExpressions for Chrome Layout (again)"), [#20908](https://github.com/OpenRA/OpenRA/pull/20908), [#20913](https://github.com/OpenRA/OpenRA/pull/20913 "Loading memory tweaks"), [#20939](https://github.com/OpenRA/OpenRA/pull/20939 "Fix slow saving of map previews."), [#20159](https://github.com/OpenRA/OpenRA/pull/20159 "PerfTickLogger, reduce overhead of logging long ticks."), [#20940](https://github.com/OpenRA/OpenRA/pull/20940 "Improve loading performance for loader/compression classes."), [#20955](https://github.com/OpenRA/OpenRA/pull/20955 "Allocation reductions during loading"), [#20956](https://github.com/OpenRA/OpenRA/pull/20956 "MiniYaml performance"), [#20990](https://github.com/OpenRA/OpenRA/pull/20990 "Fixed a crash after changing the display scale")] * Removed hardcoded Aircraft-ignoring in the AI squad manager. [[#20575](https://github.com/OpenRA/OpenRA/pull/20575 "Removed hardcoded Aircraft ignoring in AI squad manager")] * Reworked Lua script sandboxing. [[#18802](https://github.com/OpenRA/OpenRA/pull/18802 "Removed the need to wrap and sandbox scripts using Lua"), [20881](https://github.com/OpenRA/OpenRA/pull/20881 "Fix ScriptContext crashing without a Tick function"), [#20878](https://github.com/OpenRA/OpenRA/pull/20878 "Remove reference to deleted lua directory"), [#20880](https://github.com/OpenRA/OpenRA/pull/20880 "Remove references to the deleted Lua directory from Windows packaging"), [#20871](https://github.com/OpenRA/OpenRA/pull/20871 "Fix \r\n-style line endings not being properly handled for script errors")] * Added `Utils.Concat(table, table)` to the Lua API. [[#20646](https://github.com/OpenRA/OpenRA/pull/20646)] * Add causes for TargetInvocationException in TriggerGlobal [[#20868](https://github.com/OpenRA/OpenRA/pull/20868 "Add causes for TargetInvocationException in TriggerGlobal")] * Improved second generation CnC map importer. [[#20784](https://github.com/OpenRA/OpenRA/pull/20784, "Improve gen2 map importer"), [#20991](https://github.com/OpenRA/OpenRA/pull/20991 "Fix 1st generation map importer crashing on invalid tiles")] * Trait changes: * Added `AbortOnResupply` to `AttackFollow` (was on `AttackAircraft`). [[#20135](https://github.com/OpenRA/OpenRA/pull/20135 "Move AbortOnResupply from AttackAircraft to AttackFollow")] * Added `FloatingSpriteEmitter`. [[#19491](https://github.com/OpenRA/OpenRA/pull/19491 "Added particle smoke effects")] * Added start/end width parameters to `Contrail` and `Bullet`/`Missile` trails. [[#20350](https://github.com/OpenRA/OpenRA/pull/20350 "Add contrail EndWidth")] * Added `EndWidth` for triangular shaped contrails. [[#20350](https://github.com/OpenRA/OpenRA/pull/20350 "Add contrail EndWidth")] * Added `AutoCrusher` which will automatically move to a target to crush. [[#20386](https://github.com/OpenRA/OpenRA/pull/20386)] * Added `GrantConditionOnMinelaying` trait. [[#20963](https://github.com/OpenRA/OpenRA/pull/20963 "More minelaying improvements")] * Added `TurnsWhileMoving` to `Mobile`. [[#20794](https://github.com/OpenRA/OpenRA/pull/20794 "Add TurnsWhileMoving to Mobile")] * Added `MaxBackwardCells` to `Mobile`. [[#20793](https://github.com/OpenRA/OpenRA/pull/20793 "Mobile's Backward setting: Add MaxBackwardCells")] * Added an option for `Cloak` to deactivate uppon upon using a support power. [[#20786](https://github.com/OpenRA/OpenRA/pull/20786 "TS: using support power can uncloak actor")] * Exposed `Palette` in `DrawLineToTarget` [[#20916](https://github.com/OpenRA/OpenRA/pull/20916 "DrawLineToTarget: make palette for rendering sprites customizable (and thus optional too)")] * Moved `JumpjetLocomotor`, `JumpjetActorLayer` and `GrantConditionOnJumpjetLayer` to the `OpenRA.Mods.Cnc` project/binary. [[#20729](https://github.com/OpenRA/OpenRA/pull/20729 "Moved JumpJet traits to the C&C library")] * Moved `Minelayer` code to the `OpenRA.Mods.Common` project/binary [[#20933](https://github.com/OpenRA/OpenRA/pull/20933 "Minelaying: added extensibility points + move to Common")] * Renamed `EngineerRepair(able)` to `InstantlyRepair(able)`. [[#20202](https://github.com/OpenRA/OpenRA/pull/20202 "Rename EngineerRepair(able) to InstantlyRepair(able) and fix Dune 2000 engineers")] * Renamed `GiveMcvCrateAction` to `GiveBaseBuilderCrateAction`. [[#20728](https://github.com/OpenRA/OpenRA/pull/20728 "Renamed GiveMcvCrateAction to GiveBaseBuilderCrateAction")] * Removed `TiberianSunRefinery`. [[#20628](https://github.com/OpenRA/OpenRA/pull/20628 "Remove TiberianSunRefinery")] * Made `RenderJammerCircle` and `RenderShroudCircle` conditional. [[#20497](https://github.com/OpenRA/OpenRA/pull/20497 "Added conditional support to RenderShroud/JammerCircle")] * Made `Voiced` conditional. [[#20960](https://github.com/OpenRA/OpenRA/pull/20960 "Make Voiced trait conditional")] * Removed `PlayerExperience` from `Infiltrates`. [[#20106](https://github.com/OpenRA/OpenRA/pull/20106 "Move PlayerExperience from Infiltrates to InfiltrateFor")] * Added `PlayerExperience` to `InfiltrateForCash`, `InfiltrateForDecoration`, `InfiltrateForExploration`, `InfiltrateForPowerOutage`, `InfiltrateForSupportPower`, `InfiltrateForSupportPowerReset` and `InfiltrateForTransform`. [[#20106](https://github.com/OpenRA/OpenRA/pull/20106 "Move PlayerExperience from Infiltrates to InfiltrateFor")] * Added `PlayerExperiencePercentage` to `InfiltrateForCash`. [[#20106](https://github.com/OpenRA/OpenRA/pull/20106 "Move PlayerExperience from Infiltrates to InfiltrateFor")] **Utility** * Added Launch parameters to settings documentation export. [[#19985](https://github.com/OpenRA/OpenRA/pull/19985 "Added Launch parameters to Settings documentation")] * Added a lint test for invalid `Interactable` traits. [[#20734](https://github.com/OpenRA/OpenRA/pull/20734 "Add Interactable lint test")] * Added a lint test for missing lua files. [[#20898](https://github.com/OpenRA/OpenRA/pull/20898 "Added sanity checks to the Lua script trait"), [#20985](https://github.com/OpenRA/OpenRA/pull/20985 "Dedicated servers can't run any maps with lua")] * Added an environmental variable to treat lint warnings as errors. [[#20830](https://github.com/OpenRA/OpenRA/pull/20830 "Linting revamp")] * Fixed utility touching maps with no changes in their contents. [[#20630](https://github.com/OpenRA/OpenRA/pull/20630 "Only update changed files when saving maps.")] * Fixed diagnostic errors in EmmyLua generation. [[#19763](https://github.com/OpenRA/OpenRA/pull/19763 "Updated ExtractEmmyLuaAPI command to fix issues")] * Fixed update rules crashing on some preventable yaml errors. [[#20860](https://github.com/OpenRA/OpenRA/pull/20860 "Make yaml node resolving optional")] **Packaging** * Added an option to prefer the dedicated GPUs on Linux laptops when starting via the `.desktop` menu entry. [[#20706](https://github.com/OpenRA/OpenRA/pull/20706 "Add PrefersNonDefaultGPU flag to Desktop Entry")] * Added missing assembly information to Windows binaries. [[#20805](https://github.com/OpenRA/OpenRA/pull/20805 "Add missing assembly information to Windows binaries")] * Changed target Mono version to 6.12, updating C# to version 9. [[#20765](https://github.com/OpenRA/OpenRA/pull/20765 "Update LangVersion to C# 9.")] * Raised minimum glibc version from 2.17 to 2.28 for AppImage bundled dependencies. [[#20904](https://github.com/OpenRA/OpenRA/pull/20904)] * Fixed a crash when starting the game on 32-bit Windows. [[#21063](https://github.com/OpenRA/OpenRA/pull/21063 "Bumped Eluant NuGet version")] * Fixed `bash package-all.sh` failing when submitting the script via parameter. [[#20385](https://github.com/OpenRA/OpenRA/pull/20385 "package-all.sh: Don't use parameter expansion for paths")] * Fixed AppImages crashing with `SDL_VIDEODRIVER=wayland`. [[#20914](https://github.com/OpenRA/OpenRA/pull/20914 "Added support for Wayland")]