Game version XYZW (1st of Month, Year)

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Viverra suspendisse potenti nullam ac. Gravida dictum fusce ut placerat orci nulla. Amet mauris commodo quis imperdiet massa tincidunt nunc pulvinar. Eget nullam non nisi est sit amet. Ipsum dolor sit amet consectetur adipiscing elit pellentesque habitant. Netus et malesuada fames ac turpis egestas maecenas. Enim tortor at auctor urna nunc id cursus. Turpis egestas sed tempus urna et. Pellentesque id nibh tortor id aliquet lectus proin nibh. Amet mattis vulputate enim nulla. Eu turpis egestas pretium aenean pharetra. Facilisi cras fermentum odio eu feugiat pretium nibh ipsum consequat. Facilisi nullam vehicula ipsum a arcu cursus vitae congue.

With kind regards,

ABC

Balance

  • (#6410) Buff the cost of the Mercy to suit its new role of killing large numbers of low HP targets such as armies, T1 pgens, and engineers. The buildtime is reduced an extra amount compared to other costs since it is a kamikaze unit.

    • Mass Cost: 300 -> 230
    • Energy Cost: 6000 -> 4600
    • Build Time: 2000 -> 1200
  • (#6375) Reduce blaze speed from 4.3 to 4.0 to make it easier to catch and reduce its powerful raiding capabilities.

  • (#6417) Reduce T2 Amphibious Tank vision by 2 to give them a weapon range disadvantage of 2 when behind enemy lines and lacking intel, similar to T2 land tanks. Riptide is an exception, as it already has a short 18 vision/weapon range.
    • Blaze: Vision radius 24 -> 22
    • Yenzyne: Vision radius 20 -> 18
    • Wagner: Vision radius 22 -> 20
  • (#6423) The Pulsar receives various tweaks in anticipation of its future introduction into the game. Additionally, the Pulsar’s files have been updated to remove the last remnants of its former name. Initially, the unit was called Othismash.

    • Pulsar: T3 Mobile EMP Missile Launcher (SRL0310):
      • Categories added:
        • PRODUCTDL
        • SNIPEMODE
      • Pulsar EMP Missile Barrage:
        • DamageRadius: 0 –> 1 (same as its EMP weapon)
        • TurretPitchRange: 15 –> 40 (required against nearby units and units on top of mountains)
        • TurretPitchSpeed: 20 –> 50 (improves the responsiveness of the turret)
        • Introduce a taller firing arc to allow the Pulsar to shoot over obstacles more easily
  • (#6440) The Infinity Class Cruiser is equipped with two copies of Zealot AA Missile launchers. These two weapons function identically except for the MuzzleVelocity stat, where one weapon has a higher value than the other. This is misleading because the models look the same, and the unit databases imply that both AA batteries have a MuzzleVelocity of 40. This PR equalizes the stats of both launchers to resolve this issue. In terms of gameplay, there is virtually no difference.

    • Infinity Class: T2 Cruiser (UAS0202):
      • Zealot AA Missile (right battery):
        • MuzzleVelocity: 40 –> 35
      • Zealot AA Missile (left battery):
        • MuzzleVelocity: 30 –> 35
  • (#6466) Fix Ythotha being able to walk backwards.
    • MaxSpeedReverse: 2.5 -> 0
  • (#6469) Unlike other Tech 2 units, the Fire Beetle only takes up one clamp on transports. This makes it possible to load the same quantities of Fire Beetles and Tech 1 units into transports. To ensure that the Fire Beetle does not slow transports down excessively, its TransportSpeedReduction stat is reduced to match that of Tech 1 units.

    • Fire Beetle: T2 Mobile Bomb (XRL0302):
      • TransportSpeedReduction: 0.3 –> 0.15

Features

  • (#6341) Improve the formatting of the additional unit details displayed when Show Armament Detail in Build Menu is enabled in the settings.

    • For example, the Harbinger is now correctly displayed as having a speed of 2.95 instead of 3.0.

    • Additionally, trailing zeroes are removed where possible.

  • (#6341) Include more information about unit abilities in the additional unit details displayed when Show Armament Detail in Build Menu is enabled in the settings.

    • Display the ‘Scry’ ability of the Eye of Rhianne and the ‘Vision’ ability of the Soothsayer.

      • The radius, activation cost and upkeep of the Eye of Rhianne’s ‘Scry’ ability are now shown.
      • The maximum vision radius of the Soothsayer’s ‘Vision’ ability is now shown.
    • Display the ShieldRechargeTime of personal shields and shield domes. This stat defines the time it takes for shields to recharge after being fully depleted.

    • Display whether a unit can prioritize ACUs via the ‘Snipemode’ feature.

  • (#6424) Calculate DPS totals in the additional unit details displayed when Show Armament Detail in Build Menu is enabled in the settings. This is useful for summarizing or comparing the stats of units with multiple instances of the same weapon, or multiple weapons of a similar type. If the unit only possesses one valid weapon, the total is not calculated.

    • For example, the Ythotha (Seraphim Experimental Assault Bot), which has multiple weapons, is now displayed as possessing a combined total of 3794 direct fire DPS. This is displayed in an additional field in the UI, the stats of the individual weapons of the unit remain accessible in the same locations as before.
  • (#6424) Do not display the Mole’s Target Tracker in the additional unit details displayed when Show Armament Detail in Build Menu is enabled.

  • (#6428) Implement a Dual Yaw turret controller so that Loyalist can fully aim its secondary.

    Previously, the Loyalist was unable to aim its secondary weapon in all directions because the secondary weapon could not rotate the torso independently. With this change, a weapon can have a secondary yaw bone to aim with by defining TurretBoneDualYaw in its blueprint. The secondary yaw’s angle, range, and speed can be set with TurretDualYaw, TurretDualYawRange, and TurretDualYawSpeed, but they also default to the primary yaw’s angle, range, and speed if not specified.

  • (#6465) Improve the visual representation of multiple projectiles by increasing their StrategicIconSize.
    • Usha-Ah: Seraphim T3 Sniper Bot: Increase the StrategicIconSize of its secondary firing mode’s projectile from 1 to 4.
    • Othuum: T3 Siege Tank and Yenzyne: T2 Hover Tank: Increase the StrategicIconSize of their Thau Cannon’s projectile from 1 to 2.
    • Percival: T3 Armored Assault Bot: Increase the StrategicIconSize of its cannon’s projectile from 2 to 3.
  • (#6499) Allow Footprint locking for (modded) units

With thanks to an assembly patch the footprint changes that were previously unique to the Cybran Tech 2 Destroyer can now be applied to any unit. For more details, see the pull request on GitHub.

Interested in how assembly patches work? Reach out to the game team. You can find us easiest via the official Discord server.

Bug fixes

  • (#6281) Fix two errors during blueprint loading when a unit has no Categories table in its blueprint.
    • ExtractCloakMeshBlueprint-related error.
    • Automatic category assignment for the “Weak” weapon categories.
  • (#6343) Remove the INSIGNIFICANTUNIT category from the HARMS, to enable them to be transferred to other players again. This also fixes the bug which caused HARMS to get destroyed when their original owner died in a full share game. Additionally, removing the category also allows HARMS to benefit from veterancy again. They will now gain increased hit points and regen from veterancy, just like other units.

  • (#6369) AI player teammates should now be able to complete campaign objectives such as the opening Supcom mission’s objective to build 3 mexes.

  • (#6389) Improve tech 2 static artillery’s ability to shoot up cliffs.

  • (#6416) Fix Salvation’s reload time not increasing from 2.5 to 2.6 when missing T1 power generator adjacency and only having T3 power generators.

  • (#6418) Fix ACU explosions being able to kill TMD structures.

  • (#6419) Fix engineer stations without a GuardScanRadius defaulting to 300 radius for their build range overlay. They now display their full build range in the radius for better compatibility with the reclaim tower mods, even though GuardScanRadius defaults to 25.

  • (#6429) Fix the aim of the GC’s claws being disrupted by the walking animation.

  • (#6430) Fix an OnImpact error caused by CZAR’s depth charges.

  • (#6432) Fix units failing to transfer after defeat if the player that is being transferred to is defeated during the transfer process.

  • (#6433) Fix Aeon destroyer’s depth charge’s indirect fire range ring not appearing.

  • (#6436, #6480) Prevent the logging of an unecessary warning when certain units make landfall.

  • (#6438) Fix TerrainUtils.GetTerrainSlopeAngles returning roll on the -Z axis instead of the +Z axis. Previously, this required the roll to be negated when used to orient objects such as units with the terrain. Now roll no longer needs to be negated.

  • (#6439) Fix table.empty and table.getsize not using their asm implementation due to reimports.

  • (#6446) Fix the “assist to upgrade” and “assist to unpause” game options conflicting and causing upgrading units to unpause during lag spikes.

  • (#6447) Fix repr causing an “attempt to call upval ‘match’ (a nil value)” error when used in the blueprint loading scripts.

  • (#6457) Fix weapon projectiles dealing damage over time over a shorter duration than given by the DoTTime stat.
    • DoTTime for FAF units is adjusted to the old actual DoT duration, so balance is not changed.
    • Unit databases will now show the actual damage over time duration.
  • (#6467) Fix a crash during blueprint loading if a unit blueprint has an enhancements table but not an intel table.

  • (#6471) Fix Seraphim walls not orientating towards the terrain

  • (#6494) Fix a crash when the EnableDiskWatch command line argument is enabled.

  • (#6499) Fix hard crash when exiting the game when a Salem is on land

The Cybran Tech 2 Destroyer (Salem) has the special ability to move from water onto land. There was a bug in a special, alternative implementation introduced by FAForever. Together with an assembly patch this bug is now fixed.

Interested in how assembly patches work? Reach out to the game team. You can find us easiest via the official Discord server.

Other changes

  • (#6237) Convert a markdown-based changelog file into a Lua-based changelog file

  • (#6237) Create a Github Workflow to convert markdown changelog files into Lua changelog files

  • (#6308) Falling satellite wrecks do not trigger nuke explosions anymore. This prevents a rarely used, but possible exploit.

  • (#6406) Automatically eject people from a lobby when there is a missmatch in the game version

Players often mention how it is annoying that games desync as a game release happens. This happens even more frequently on the FAF Develop and FAF Beta Balance game types. With this change we introduce a guard to prevent players from joining a lobby when their game version does not match the game version of the host. If there is a missmatch, the host is informed in the chat and is encouraged to re-create the lobby.

  • (#6431) Make CZAR depth charges give underwater vision on impact alongside the normal vision they give.

  • (#5061, #6438) Add metamethods and utility functions for Vectors and Quaternions to simplify and clean up the code involving operations with them.
    • This removes the file /lua/shared/quaternions.lua, which was added in #4768 (Mar 4, 2023), so mods that use that file will have to be updated.
    • The metamethods (defined globally in /lua/system/utils.lua) include:
      • Vector/Vector2 addition/subtraction/negation
      • Vector/Vector2 * Scalar multiplication
      • Quaternion/Vector * Vector/Quaternion multiplication
      • Vector * Vector multiplication (cross product)
    • Since these are metamethods, they work on all instances of Vector/Vector2/Quaternion, without having to import anything.
    • The utility functions (have to be imported from /lua/utilities.lua) include:
      • Faster Lua versions of VDist2, VDist2Sq, VDot
      • QuatFromRotation: Creates a quaternion from an orientation axis and rotation angle.
      • QuatFromXZDirection: Returns the orientation quaternion given an XZ direction
      • TranslateInXZDirection: Translates the XZ coordinates of a position by a length in a given quaternion orientation.
      • RotateVectorByQuat: Rotates a vector representing a 3D point by a quaternion rotation.
  • (#6450) Improve beam blueprint annotations with thorough descriptions of beam parameters.

  • (#6451) Annotate emitter blueprint parameters with extensive descriptions.

  • (#6463) Remove the ‘Kill all your units’ hotkey and related functionality

The existence of the hotkey makes it appear legitimate while it is typically against the rules.

  • (#6474) Implement command line launch of the auto lobby for LAN games. This allows rapidly testing multiplayer in a local environment. Further details on the command line switches used and an example script for launching multiple instances are in the linked pull request.

  • (#6495) Refactor the map utilities module

Chunks up some larger functions into smaller functions to allow them to be re-used in other modules.

  • (#6498, #6502) Refactor the Enhancements section in the ACU/SACU scripts to replace the long if/else chain with a more modular design that is easier to maintain and hook. Each enhancement has its own dedicated function, named with the format ProcessEnhancement[EnhancementName]. The CreateEnhancement function now calls the appropriate enhancement function automatically by that name format.

Contributors

With thanks to the following people who contributed through coding:

With thanks to the following people who contributed through binary patches:

With thanks to the following individuals who contributed through model, texture, and effect changes:

And, last but certainly not least - with thanks to those that took part in constructive discussions: