From c4c2f36650c7ecfd1f9da9dde5d1de5a3519fea8 Mon Sep 17 00:00:00 2001 From: lL1l1 <82986251+lL1l1@users.noreply.github.com> Date: Mon, 23 Sep 2024 01:49:24 -0700 Subject: [PATCH 01/13] Add structure armor resistances to TMD armor (#6418) Adds the `Overcharge` and `Deathnuke` resistances to TMD armor, as they are also structures. --- changelog/snippets/fix.6418.md | 1 + lua/armordefinition.lua | 2 ++ 2 files changed, 3 insertions(+) create mode 100644 changelog/snippets/fix.6418.md diff --git a/changelog/snippets/fix.6418.md b/changelog/snippets/fix.6418.md new file mode 100644 index 0000000000..9d41879558 --- /dev/null +++ b/changelog/snippets/fix.6418.md @@ -0,0 +1 @@ +- (#6418) Fix ACU explosions being able to kill TMD structures. diff --git a/lua/armordefinition.lua b/lua/armordefinition.lua index d5659355ae..756cd2c210 100644 --- a/lua/armordefinition.lua +++ b/lua/armordefinition.lua @@ -113,6 +113,8 @@ armordefinition = { -- Armor Definition 'Normal 1.0', + 'Overcharge 0.25', + 'Deathnuke 0.032', 'TacticalMissile 0.55', }, } From 728dd322cc249a0cb15330df4802a5900cdc8eff Mon Sep 17 00:00:00 2001 From: lL1l1 <82986251+lL1l1@users.noreply.github.com> Date: Mon, 23 Sep 2024 04:45:22 -0700 Subject: [PATCH 02/13] Add nil check for GuardScanRadius in build range overlay (#6419) --- changelog/snippets/fix.6419.md | 1 + lua/system/blueprints-units.lua | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) create mode 100644 changelog/snippets/fix.6419.md diff --git a/changelog/snippets/fix.6419.md b/changelog/snippets/fix.6419.md new file mode 100644 index 0000000000..b020d3097e --- /dev/null +++ b/changelog/snippets/fix.6419.md @@ -0,0 +1 @@ +- (#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. diff --git a/lua/system/blueprints-units.lua b/lua/system/blueprints-units.lua index 68b5ccf2e2..6af989b396 100644 --- a/lua/system/blueprints-units.lua +++ b/lua/system/blueprints-units.lua @@ -235,10 +235,10 @@ local function PostProcessUnit(unit) -- Engine allows building +2 range outside the max distance (or even more for large buildings) local overlayRadius = (unit.Economy.MaxBuildDistance or 5) + 2 - -- Display auto-assist range for engineer stations instead of max build distance if it is smaller + -- Display auto-assist range for engineer stations instead of max build distance if it is smaller and exists if unit.CategoriesHash['ENGINEERSTATION'] then local guardScanRadius = unit.AI.GuardScanRadius - if guardScanRadius < overlayRadius then + if guardScanRadius and guardScanRadius < overlayRadius then overlayRadius = guardScanRadius end end From d305e71f0e67f041f6eb681799aa4e943abc4f19 Mon Sep 17 00:00:00 2001 From: lL1l1 <82986251+lL1l1@users.noreply.github.com> Date: Mon, 23 Sep 2024 06:14:49 -0700 Subject: [PATCH 03/13] Fix Salvation fire rate not being reduced when missing T1 pgens (#6416) 2.5 sec reload with T1+T3 pgens, 2.6 sec reload with T3 pgens --- changelog/snippets/fix.6416.md | 1 + lua/sim/AdjacencyBuffs.lua | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 changelog/snippets/fix.6416.md diff --git a/changelog/snippets/fix.6416.md b/changelog/snippets/fix.6416.md new file mode 100644 index 0000000000..57b3bf50bc --- /dev/null +++ b/changelog/snippets/fix.6416.md @@ -0,0 +1 @@ +- (#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. diff --git a/lua/sim/AdjacencyBuffs.lua b/lua/sim/AdjacencyBuffs.lua index 1bdc89739d..748ae688ba 100644 --- a/lua/sim/AdjacencyBuffs.lua +++ b/lua/sim/AdjacencyBuffs.lua @@ -218,7 +218,7 @@ local adj = { -- SIZE4 SIZE8 SIZE12 SIZE16 SIZE20 EnergyActive= {-0.1875, -0.1875, -0.1875, -0.1562, -0.05}, EnergyMaintenance= {-0.1875, -0.1875, -0.1875, -0.1875, -0.1875}, EnergyWeapon= {-0.075, -0.075, -0.075, -0.075, -0.075}, - RateOfFire= {-0.1, -0.1, -0.1, -0.1, -0.045}, + RateOfFire= {-0.1, -0.1, -0.1, -0.1, -0.040}, }, T1MassExtractor={ MassActive= {-0.1, -0.05, -0.0333, -0.075, -0.075}, From 328e6eb0fb16fe33fcb30f0e7197ea28c1019c28 Mon Sep 17 00:00:00 2001 From: lL1l1 <82986251+lL1l1@users.noreply.github.com> Date: Mon, 23 Sep 2024 06:16:17 -0700 Subject: [PATCH 04/13] Fix GC claw aim being disrupted by walking (#6429) --- changelog/snippets/fix.6429.md | 1 + units/UAL0401/UAL0401_Script.lua | 12 ++++++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) create mode 100644 changelog/snippets/fix.6429.md diff --git a/changelog/snippets/fix.6429.md b/changelog/snippets/fix.6429.md new file mode 100644 index 0000000000..3e55af1e23 --- /dev/null +++ b/changelog/snippets/fix.6429.md @@ -0,0 +1 @@ +- (#6429) Fix the aim of the GC's claws being disrupted by the walking animation. diff --git a/units/UAL0401/UAL0401_Script.lua b/units/UAL0401/UAL0401_Script.lua index 0de798132b..3264d8f86f 100644 --- a/units/UAL0401/UAL0401_Script.lua +++ b/units/UAL0401/UAL0401_Script.lua @@ -41,8 +41,16 @@ UAL0401 = ClassUnit(AWalkingLandUnit) { return projectile end, }, - RightArmTractor = ClassWeapon(ADFTractorClaw) {}, - LeftArmTractor = ClassWeapon(ADFTractorClaw) {}, + RightArmTractor = ClassWeapon(ADFTractorClaw) { + DisabledFiringBones = { + 'Right_Arm_B02', + }, + }, + LeftArmTractor = ClassWeapon(ADFTractorClaw) { + DisabledFiringBones = { + 'Left_Arm_B02', + }, + }, }, OnCreate = function(self, spec) From 738e0e8b06aba1eeba0729234447e7ed46567419 Mon Sep 17 00:00:00 2001 From: lL1l1 <82986251+lL1l1@users.noreply.github.com> Date: Mon, 23 Sep 2024 06:33:01 -0700 Subject: [PATCH 05/13] Annotate emitter blueprints (#6451) --- changelog/snippets/other.6451.md | 1 + engine/Core/Blueprints/EffectBlueprint.lua | 11 ++- engine/Core/Blueprints/EmitterBlueprint.lua | 90 +++++++++++---------- 3 files changed, 57 insertions(+), 45 deletions(-) create mode 100644 changelog/snippets/other.6451.md diff --git a/changelog/snippets/other.6451.md b/changelog/snippets/other.6451.md new file mode 100644 index 0000000000..c0a0272958 --- /dev/null +++ b/changelog/snippets/other.6451.md @@ -0,0 +1 @@ +- (#6451) Annotate emitter blueprint parameters with extensive descriptions. diff --git a/engine/Core/Blueprints/EffectBlueprint.lua b/engine/Core/Blueprints/EffectBlueprint.lua index 7a7e4be2e7..bbc0677886 100644 --- a/engine/Core/Blueprints/EffectBlueprint.lua +++ b/engine/Core/Blueprints/EffectBlueprint.lua @@ -5,15 +5,18 @@ ---@field MedFidelity boolean Allowed in medium fidelity ---@field LowFidelity boolean Allowed in low fidelity +--- A curve made of linear segments defined by a set of points. +--- It defines the values for an effect at a specific time in an emitter's cycle. ---@class EffectCurve ----@field XRange number +---@field XRange number Defines what value of `x` corresponds to the end of the emitter's cycle. The emitter editor will default this to the cycle's tick count. ---@field Keys NamedPosition[] ---@class NamedPosition ----@field x number ----@field y number ----@field z number +---@field x number Time at the point on the curve, relative to `XRange`. Represents ticks in the emitter editor. +---@field y number Value at the point. +---@field z number Range within which the value is randomized. +--- Used by beam blueprints to interpolate the color/alpha of the beam between the start point and end point ---@class NamedQuaternion ---@field x number # Red ---@field y number # Green diff --git a/engine/Core/Blueprints/EmitterBlueprint.lua b/engine/Core/Blueprints/EmitterBlueprint.lua index a29e521034..d1e6713450 100644 --- a/engine/Core/Blueprints/EmitterBlueprint.lua +++ b/engine/Core/Blueprints/EmitterBlueprint.lua @@ -1,44 +1,52 @@ ---@meta +---@alias EmitterBlendMode +---| 0 # Alpha Blend +---| 1 # Modulate Inverse +---| 2 # Modulate2x Inverse +---| 3 # Add +---| 4 # Premodulated Alpha +---| 5 # Refract + ---@class EmitterBlueprint : EffectBlueprint ----@field SizeCurve EffectCurve Size of emitter over time ----@field XDirectionCurve EffectCurve X direction ----@field YDirectionCurve EffectCurve Y direction ----@field ZDirectionCurve EffectCurve Z direction ----@field EmitRateCurve EffectCurve ----@field LifetimeCurve EffectCurve ----@field VelocityCurve EffectCurve ----@field XAccelCurve EffectCurve ----@field YAccelCurve EffectCurve ----@field ZAccelCurve EffectCurve ----@field ResistanceCurve EffectCurve drag coefficient (actually, the drag coefficient divied by the mass) ----@field StartSizeCurve EffectCurve ----@field EndSizeCurve EffectCurve ----@field InitialRotationCurve EffectCurve ----@field RotationRateCurve EffectCurve ----@field FrameRateCurve EffectCurve ----@field TextureSelectionCurve EffectCurve ----@field XPosCurve EffectCurve X Offset Curve ----@field YPosCurve EffectCurve Y Offset Curve ----@field ZPosCurve EffectCurve Z Offset Curve ----@field RampSelectionCurve EffectCurve ----@field LocalVelocity boolean Is velocity attached to bone ----@field LocalAcceleration boolean Is acceleration attached to bone ----@field Gravity boolean Gravity enabled? ----@field AlignRotation boolean Align the rotation of the particle with direction? ----@field AlignToBone boolean Align the intitial rotation of the particle to the bone ----@field ParticleResistance boolean true to enable the use of drag on a particle ----@field CreateIfVisible boolean when this emitter is initially created only create and emit if visible ----@field Flat boolean Make the particles flat in world space. ----@field InterpolateEmission boolean Interpolate emission over tick ----@field SnapToWaterline boolean Snap underwater emission to the waterline ----@field OnlyEmitOnWater boolean Only emit if over water ----@field TextureStripcount number Number of strips in the animated texture ----@field SortOrder number Sort order of particles emitted ----@field Lifetime number Lifetime of emitter in ticks ----@field Distance number emission cuts out. ----@field Repeattime number Repeattime of emitter in ticks ----@field TextureFramecount number number of frames in texture we are using. ----@field Blendmode number Blendmode for this emitter. ----@field TextureName string Texture Name of texture we are using for this particle ----@field RampTexture string Name of ramp texture we are using for this particle \ No newline at end of file +---@field SizeCurve EffectCurve # Radius around emitter in the XZ plane where particles randomly spawn +---@field XDirectionCurve EffectCurve # X multiplier of "Velocity" (actually speed) +---@field YDirectionCurve EffectCurve # Y multiplier of "Velocity" (actually speed) +---@field ZDirectionCurve EffectCurve # Z multiplier of "Velocity" (actually speed) +---@field EmitRateCurve EffectCurve # How many particles per second are emitted +---@field LifetimeCurve EffectCurve # Lifetime of particle +---@field VelocityCurve EffectCurve # Speed of particle in ogrids/tick +---@field XAccelCurve EffectCurve # X Acceleration of particle in ogrids/tick/tick +---@field YAccelCurve EffectCurve # Y Acceleration of particle in ogrids/tick/tick +---@field ZAccelCurve EffectCurve # Z Acceleration of particle in ogrids/tick/tick +---@field ResistanceCurve EffectCurve # drag coefficient (actually, the drag coefficient divided by the mass) +---@field StartSizeCurve EffectCurve # Particle scale at start of its lifetime +---@field EndSizeCurve EffectCurve # Particle scale at end of its lifetime +---@field InitialRotationCurve EffectCurve # Initial rotation of particle in degrees +---@field RotationRateCurve EffectCurve # Degrees/second +---@field FrameRateCurve EffectCurve # Frames/second +---@field TextureSelectionCurve EffectCurve # Which texture strip is selected for the particle. +---@field XPosCurve EffectCurve # X position of emitter +---@field YPosCurve EffectCurve # Y position of emitter +---@field ZPosCurve EffectCurve # Z position of emitter +---@field RampSelectionCurve EffectCurve # 1px horizontal line (row) of the ramp that is used (interpolates between rows). Value is [0,1] relative to the full height of the ramp texture. +---@field LocalVelocity boolean # Is velocity attached to bone. Doesn't work? +---@field LocalAcceleration boolean # Is acceleration attached to bone. Doesn't work? +---@field Gravity boolean # Gravity enabled? -4.9 ogrids/s/s +---@field AlignRotation boolean # Align the rotation of the particle with direction? +---@field AlignToBone boolean # Align the intitial rotation of the particle to the bone +---@field ParticleResistance boolean # true to enable the use of drag on a particle. Changes take effect only on restart? +---@field CreateIfVisible boolean # when this emitter is initially created only create and emit if visible +---@field Flat boolean # Make the particles flat in world space. +---@field InterpolateEmission boolean # Interpolate emission over tick +---@field SnapToWaterline boolean # Snap underwater emission to the waterline +---@field OnlyEmitOnWater boolean # Only emit if over water +---@field TextureStripcount number # How many rows (strips) to divide the texture into for selection by `TextureSelectionCurve`. +---@field SortOrder number # Sort order of particles emitted +---@field Lifetime number # Lifetime of emitter in ticks. -1 is infinite. +---@field LODCutoff number # Distance at which emission cuts out. +---@field Repeattime number # Repeat/cycle time of the emitter in ticks +---@field TextureFramecount number # How many columns (frames) to divide the texture into for particle animation. +---@field Blendmode EmitterBlendMode # Blendmode for this emitter. +---@field TextureName FileName # Texture Name of texture we are using for this particle +---@field RampTexture FileName # Name of ramp we are using for this particle. The particle's texture changes color over its lifetime by traversing the selected ramp row from left to right (with interpolation). From 37654d4bdf19993bfc6ab5604e77c30c883724a3 Mon Sep 17 00:00:00 2001 From: BlackYps <52536103+BlackYps@users.noreply.github.com> Date: Wed, 25 Sep 2024 17:54:10 +0200 Subject: [PATCH 06/13] Add a workflow to automatically convert pull requests to draft (#6460) --- .github/workflows/auto-draft-pr.yaml | 34 ++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 .github/workflows/auto-draft-pr.yaml diff --git a/.github/workflows/auto-draft-pr.yaml b/.github/workflows/auto-draft-pr.yaml new file mode 100644 index 0000000000..722956b4df --- /dev/null +++ b/.github/workflows/auto-draft-pr.yaml @@ -0,0 +1,34 @@ +# Copyright (c) 2024 FAForever +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +name: Convert PRs to Draft on Opening + +on: + pull_request: + types: [opened] + +jobs: + convert_to_draft: + runs-on: ubuntu-latest + steps: + - run: gh pr ready --undo ${{ github.event.pull_request.number }} + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GH_REPO: ${{ github.repository }} \ No newline at end of file From c3fc75df99384898155603403f9eca80285657fb Mon Sep 17 00:00:00 2001 From: BlackYps <52536103+BlackYps@users.noreply.github.com> Date: Wed, 25 Sep 2024 17:57:52 +0200 Subject: [PATCH 07/13] Update CONTRIBUTING.md (#6453) --- CONTRIBUTING.md | 111 +++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 95 insertions(+), 16 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index eb3096f14f..3d77d03cc2 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,23 +1,102 @@ -Contributing ------------- -To contribute, please fork this repository and make pull requests to the -`deploy/fafdevelop` branch. +## When making a PR: -Use the normal git conventions for commit messages, with the following rules: - - Subject line shorter than 80 characters - - No trailing period - - For non-trivial commits, always include a commit message body, describing the change in detail - - If there are related issues, reference them in the commit message footer +If you plan a bigger change, make an issue first to discuss the feature. This way you can avoid spending time on something that would ultimately be denied integration. -We use [git flow](http://nvie.com/posts/a-successful-git-branching-model/) for our branch conventions. +- Target the `develop` branch. +- Start your PR as draft. +- Don't forget to add appropriate tags. -When making _backwards incompatible API changes_, do so with a stub function and put in a logging statement including traceback. This gives time for mod authors to change their code, as well as for us to catch any incompatibilities introduced by the change. +Each PR needs a [snippet](https://faforever.github.io/fa/development/changelog) for the changelog file of the release. +When you have made all the changes you intended to do and have added the snippet, you can mark the PR as ready for review by removing the draft status from the PR. +Now the PR should be milestoned to the next release. +You can request reviews from people that a knowledgable in the domains of the code you changed (See below). -Code convention ---------------- -Please follow the [Lua Style Guide](http://lua-users.org/wiki/LuaStyleGuide) as -much as possible. +## How to do a review: -For file encoding, use UTF-8 and unix-style file endings (Set core.autocrlf). +1. Do we want this feature? + If it's just a bugfix this can generally be answered as yes. + If it's a new feature or changes gameplay in a more meaningful way there is ideally a linked issue where the discussion already happened and it was concluded that we want this feature. + Sanity check: Should this rather be a sim/ui mod? + +2. Functionality + Start the game with these changes and see if the described changes work as intended. + Test if related functionality still works and didn't inadvertantly break. + There is no hard rule how much testing is needed, especially as we can't automate this. You don't have to go overboard with testing as we still have the duration between the merge and the next release to notice bugs during actual gameplay. + +3. Technical code review + Is the code style correct? Please follow the [Lua Style Guide](http://lua-users.org/wiki/LuaStyleGuide). + Is the code readable and doing things the way things should be done? + This step should be done by people that have knowledge of the affected domains of the code base (See below). + +4. Balance implications (only for PRs labeled as balance) + Changes touching balance need a green light from the balance team. + +It's totally possible to review not all steps if you don't have the knowledge or motivation to do them all. Someone else can pick up the other steps. +If you don't review all steps, don't formally approve the PR, but state your approval of the steps you did in a review comment. Only PRs that passed all review steps should be formally approved. + + +## When to merge: + +After all the necessary reviews have passed and the PR has been approved it can be merged. We suggest to wait 24 hours after approval, so the owner of the PR can interject if there was some sort of miscommunication and the owner still intends to do some changes. The PR owner can also merge the PR if they want. + +Merge by using the squash option. +Use the normal git conventions for the commit message, with the following rules: + +- Subject line shorter than 80 characters +- Pull request number at the end +- No trailing period +- For non-trivial commits, always include a commit message body, describing the change in detail + +If the branch was in the FAForever repository, delete it after the merge, so it doesn't clutter the repo. + +## Reviewers + +These are people knowledgeable of the indicated areas, that are good candidates to request a review from. + +**lua (ui)** +@4z0t +@Basilisk3 +@lL1l1 +@Garanas +@Hdt80bro +@clyfordv +@speed2CZ + +**lua (sim)** +@lL1l1 +@4z0t +@Basilisk3 +@Garanas +@Hdt80bro +@clyfordv +@speed2CZ +@The-Balthazar + +**AI** +@relent0r +@Garanas + +**blueprints** +@Basilisk3 +@Garanas +@Hdt80bro +@lL1l1 +@The-Balthazar + +**mapping** +@speed2CZ + +**modeling** +@MadMaxFAF +@The-Balthazar +@lL1l1 + +**graphics** +@BlackYps +@Garanas + +**binary patches** +@4z0t +@Hdt80bro \ No newline at end of file From 0d4e59ca5244de7c5a10f1302b1a51f766926e3a Mon Sep 17 00:00:00 2001 From: Basilisk3 <126026384+Basilisk3@users.noreply.github.com> Date: Fri, 27 Sep 2024 17:51:10 +0200 Subject: [PATCH 08/13] Various improvements for the Pulsar (#6423) ## Description of the proposed changes **Pulsar: T3 Mobile EMP Missile Launcher (SRL0310):** - Categories added: - `PRODUCTDL` - `SNIPEMODE` - Othismash 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 ## Explanation of the changes - The `PRODUCTDL` category is added as the Pulsar is content added outside of the main game and the expansion. - The `SNIPEMODE` category is added as it is instrumental for using the Pulsar against ACU's equipped with personal shields. The Absolver also has this category. - Its weapon gains the ability to deal damage in an AoE, differentiating it more from the Absolver. The effects of the missiles appear like they deal AoE damage and the weapon's EMP effect also has a radius of 1. - The `TurretPitchRange` is increased so it can hit units close to its model. Right now, this is not the case; its missiles will overshoot closer units. The model does provide enough leeway to make this change. - `UseFiringSolutionInsteadOfAimBone = true`; required to fix overshooting. - The ballistic arc was very shallow due to `TrackTarget` being set to `true` in the projectile's blueprint. ## Checklist - [x] Changes are documented in the changelog for the next game version --------- Co-authored-by: FAForever --- changelog/snippets/balance.6423.md | 11 +++++++++++ .../CIFPulsarEMPMissile01_Script.lua} | 0 .../CIFPulsarEMPMissile01_lod0.scm} | Bin .../CIFPulsarEMPMissile01_proj.bp} | 11 +++++------ units/SRL0310/SRL0310_unit.bp | 17 ++++++++++------- 5 files changed, 26 insertions(+), 13 deletions(-) create mode 100644 changelog/snippets/balance.6423.md rename projectiles/{CIFOthismashEMPMissile01/CIFOthismashEMPMissile01_Script.lua => CIFPulsarEMPMissile01/CIFPulsarEMPMissile01_Script.lua} (100%) rename projectiles/{CIFOthismashEMPMissile01/CIFOthismashEMPMissile01_lod0.scm => CIFPulsarEMPMissile01/CIFPulsarEMPMissile01_lod0.scm} (100%) rename projectiles/{CIFOthismashEMPMissile01/CIFOthismashEMPMissile01_proj.bp => CIFPulsarEMPMissile01/CIFPulsarEMPMissile01_proj.bp} (85%) diff --git a/changelog/snippets/balance.6423.md b/changelog/snippets/balance.6423.md new file mode 100644 index 0000000000..e3b7bfd476 --- /dev/null +++ b/changelog/snippets/balance.6423.md @@ -0,0 +1,11 @@ +- (#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 diff --git a/projectiles/CIFOthismashEMPMissile01/CIFOthismashEMPMissile01_Script.lua b/projectiles/CIFPulsarEMPMissile01/CIFPulsarEMPMissile01_Script.lua similarity index 100% rename from projectiles/CIFOthismashEMPMissile01/CIFOthismashEMPMissile01_Script.lua rename to projectiles/CIFPulsarEMPMissile01/CIFPulsarEMPMissile01_Script.lua diff --git a/projectiles/CIFOthismashEMPMissile01/CIFOthismashEMPMissile01_lod0.scm b/projectiles/CIFPulsarEMPMissile01/CIFPulsarEMPMissile01_lod0.scm similarity index 100% rename from projectiles/CIFOthismashEMPMissile01/CIFOthismashEMPMissile01_lod0.scm rename to projectiles/CIFPulsarEMPMissile01/CIFPulsarEMPMissile01_lod0.scm diff --git a/projectiles/CIFOthismashEMPMissile01/CIFOthismashEMPMissile01_proj.bp b/projectiles/CIFPulsarEMPMissile01/CIFPulsarEMPMissile01_proj.bp similarity index 85% rename from projectiles/CIFOthismashEMPMissile01/CIFOthismashEMPMissile01_proj.bp rename to projectiles/CIFPulsarEMPMissile01/CIFPulsarEMPMissile01_proj.bp index 222d1e3ba9..21d3a6b7d8 100644 --- a/projectiles/CIFOthismashEMPMissile01/CIFOthismashEMPMissile01_proj.bp +++ b/projectiles/CIFPulsarEMPMissile01/CIFPulsarEMPMissile01_proj.bp @@ -40,17 +40,16 @@ ProjectileBlueprint{ "MISSILE", }, Faction = "Cybran", - Weapon = "Othismash EMP Missile", + Weapon = "Pulsar EMP Missile", }, - Interface = { HelpText = "Othismash EMP Missile" }, + Interface = { HelpText = "Pulsar EMP Missile" }, Physics = { - Acceleration = 20, DestroyOnWater = true, - InitialSpeed = 0, + InitialSpeed = 21, LeadTarget = true, - MaxSpeed = 80, + MaxSpeed = 21, MaxZigZag = 5, - TrackTarget = true, + TrackTarget = false, TurnRate = 20, VelocityAlign = true, ZigZagFrequency = 0.2, diff --git a/units/SRL0310/SRL0310_unit.bp b/units/SRL0310/SRL0310_unit.bp index 49ab0b2235..0a0bfec3f2 100644 --- a/units/SRL0310/SRL0310_unit.bp +++ b/units/SRL0310/SRL0310_unit.bp @@ -25,9 +25,11 @@ UnitBlueprint{ "INDIRECTFIRE", "LAND", "MOBILE", + "PRODUCTDL", "RECLAIMABLE", "SELECTABLE", "SILO", + "SNIPEMODE", "TECH3", "VISIBLETORECON", }, @@ -215,7 +217,7 @@ UnitBlueprint{ Audio = { Fire = Sound { Bank = 'URAWeapon', Cue = 'URA0401_Rock_Pack', LodCutoff = 'Weapon_LodCutoff' }, }, - BallisticArc = "RULEUBA_HighArc", + BallisticArc = "RULEUBA_LowArc", Buffs = { { Add = { OnImpact = true }, @@ -230,10 +232,10 @@ UnitBlueprint{ CollideFriendly = false, Damage = 2, DamageFriendly = false, - DamageRadius = 0, + DamageRadius = 1, DamageToShields = 323, DamageType = "Normal", - DisplayName = "Othismash EMP Missile Barrage", + DisplayName = "Pulsar EMP Missile Barrage", EffectiveRadius = 60, FireTargetLayerCapsTable = { Land = "Land|Water|Seabed", @@ -250,8 +252,8 @@ UnitBlueprint{ MuzzleVelocity = 21, MuzzleVelocityRandom = 0.4, MuzzleVelocityReduceDistance = 60, - ProjectileId = "/projectiles/CIFOthismashEMPMissile01/CIFOthismashEMPMissile01_proj.bp", - ProjectileLifetimeUsesMultiplier = 3, + ProjectileId = "/projectiles/CIFPulsarEMPMissile01/CIFPulsarEMPMissile01_proj.bp", + ProjectileLifetimeUsesMultiplier = 1.2, RackBones = { { HideMuzzle = true, @@ -286,12 +288,13 @@ UnitBlueprint{ TurretBoneYaw = "Turret_Yaw", TurretDualManipulators = false, TurretPitch = 15, - TurretPitchRange = 15, - TurretPitchSpeed = 20, + TurretPitchRange = 40, + TurretPitchSpeed = 50, TurretYaw = 0, TurretYawRange = 180, TurretYawSpeed = 120, Turreted = true, + UseFiringSolutionInsteadOfAimBone = true, WeaponCategory = "Missile", YawOnlyOnTarget = true, }, From 2ee938c448d5aacc1dea2bea85acfc194cfaaeb9 Mon Sep 17 00:00:00 2001 From: Basilisk3 <126026384+Basilisk3@users.noreply.github.com> Date: Sat, 28 Sep 2024 00:05:56 +0200 Subject: [PATCH 09/13] Fix movement effects being recreated before footfall (#6436) This caused an unnecessary warning to appear when units with footfall effects would move from land to water/seabed layers. The warning is also no longer given based on the unit's footfalls existing on the unit itself, now they only need to be present in the movement effects blueprint. Co-authored-by: lL1l1 <82986251+lL1l1@users.noreply.github.com> --- changelog/snippets/fix.6436.md | 1 + lua/sim/Unit.lua | 39 +++++++++++---------- units/URS0201/URS0201_unit.bp | 64 ++++++++++++++++------------------ 3 files changed, 53 insertions(+), 51 deletions(-) create mode 100644 changelog/snippets/fix.6436.md diff --git a/changelog/snippets/fix.6436.md b/changelog/snippets/fix.6436.md new file mode 100644 index 0000000000..1afff09c70 --- /dev/null +++ b/changelog/snippets/fix.6436.md @@ -0,0 +1 @@ +- (#6436) Prevent the logging of an unecessary warning when certain units make landfall. diff --git a/lua/sim/Unit.lua b/lua/sim/Unit.lua index 2e07017a23..8f4b89150b 100644 --- a/lua/sim/Unit.lua +++ b/lua/sim/Unit.lua @@ -2142,7 +2142,7 @@ Unit = ClassUnit(moho.unit_methods, IntelComponent, VeterancyComponent, DebugUni if self:IsValidBone(v) then self:ShowBone(v, children) else - WARN('*WARNING: TRYING TO SHOW BONE ', repr(v), ' ON UNIT ', repr(self.UnitId), ' BUT IT DOES NOT EXIST IN THE MODEL. PLEASE CHECK YOUR SCRIPT IN THE BUILD PROGRESS BONES.') + WARN('*TRYING TO SHOW BONE ', repr(v), ' ON UNIT ', repr(self.UnitId), ' BUT IT DOES NOT EXIST IN THE MODEL. PLEASE CHECK YOUR SCRIPT IN THE BUILD PROGRESS BONES.') end end end, @@ -3096,11 +3096,11 @@ Unit = ClassUnit(moho.unit_methods, IntelComponent, VeterancyComponent, DebugUni local tempEnhanceBp = self.Blueprint.Enhancements[work] if tempEnhanceBp.Prerequisite then if unitEnhancements[tempEnhanceBp.Slot] ~= tempEnhanceBp.Prerequisite then - WARN('*WARNING: Ordered enhancement ['..(tempEnhanceBp.Name or 'nil')..'] does not have the proper prerequisite. Slot ['..(tempEnhanceBp.Slot or 'nil')..'] - Needed: ['..(unitEnhancements[tempEnhanceBp.Slot] or 'nil')..'] - Installed: ['..(tempEnhanceBp.Prerequisite or 'nil')..']') + WARN('*Ordered enhancement ['..(tempEnhanceBp.Name or 'nil')..'] does not have the proper prerequisite. Slot ['..(tempEnhanceBp.Slot or 'nil')..'] - Needed: ['..(unitEnhancements[tempEnhanceBp.Slot] or 'nil')..'] - Installed: ['..(tempEnhanceBp.Prerequisite or 'nil')..']') return false end elseif unitEnhancements[tempEnhanceBp.Slot] then - WARN('*WARNING: Ordered enhancement ['..(tempEnhanceBp.Name or 'nil')..'] does not have the proper slot available. Slot ['..(tempEnhanceBp.Slot or 'nil')..'] has already ['..(unitEnhancements[tempEnhanceBp.Slot] or 'nil')..'] installed.') + WARN('*Ordered enhancement ['..(tempEnhanceBp.Name or 'nil')..'] does not have the proper slot available. Slot ['..(tempEnhanceBp.Slot or 'nil')..'] has already ['..(unitEnhancements[tempEnhanceBp.Slot] or 'nil')..'] installed.') return false end @@ -3312,11 +3312,6 @@ Unit = ClassUnit(moho.unit_methods, IntelComponent, VeterancyComponent, DebugUni -- Store latest layer for performance, preventing .Layer engine calls. self.Layer = new - if old != 'None' then - self:DestroyMovementEffects() - self:CreateMovementEffects(self.MovementEffectsBag, nil) - end - -- Bail out early if dead. The engine calls this function AFTER entity:Destroy() has killed -- the C object. Any functions down this line which expect a live C object (self:CreateAnimator()) -- for example, will throw an error. @@ -3360,6 +3355,12 @@ Unit = ClassUnit(moho.unit_methods, IntelComponent, VeterancyComponent, DebugUni self.Footfalls = self:CreateFootFallManipulators(movementEffects[new].Footfall) end self:CreateLayerChangeEffects(new, old) + + -- re-create movement effects for units with different effects per layer + if old != 'None' then + self:DestroyMovementEffects() + self:CreateMovementEffects(self.MovementEffectsBag, nil) + end -- Trigger the re-worded stuff that used to be inherited, no longer because of the engine bug above. if self.LayerChangeTrigger then @@ -3655,7 +3656,7 @@ Unit = ClassUnit(moho.unit_methods, IntelComponent, VeterancyComponent, DebugUni for _, typeGroup in effectTypeGroups do local bones = typeGroup.Bones if table.empty(bones) then - WARN('*WARNING: No effect bones defined for layer group ', repr(self.UnitId), ', Add these to a table in Display.[EffectGroup].', self.Layer, '.Effects {Bones ={}} in unit blueprint.') + WARN('*No effect bones defined for layer group ', repr(self.UnitId), ', Add these to a table in Display.[EffectGroup].', self.Layer, '.Effects {Bones ={}} in unit blueprint.') continue end @@ -3718,19 +3719,21 @@ Unit = ClassUnit(moho.unit_methods, IntelComponent, VeterancyComponent, DebugUni if bpTable[layer] then bpTable = bpTable[layer] + + if bpTable.CameraShake then + self.CamShakeT1 = self:ForkThread(self.MovementCameraShakeThread, bpTable.CameraShake) + end + local effectTypeGroups = bpTable.Effects if not effectTypeGroups or (effectTypeGroups and (table.empty(effectTypeGroups))) then - if not self.Footfalls and bpTable.Footfall then - WARN('*WARNING: No movement effect groups defined for unit ', repr(self.UnitId), ', Effect groups with bone lists must be defined to play movement effects. Add these to the Display.MovementEffects', layer, '.Effects table in unit blueprint. ') + -- warning isn't needed if this layer's table is used for Footfall without terrain effects + if not bpTable.Footfall then + WARN('*No movement effect groups defined for unit ', repr(self.UnitId), ', Effect groups with bone lists must be defined to play movement effects. Add these to the Display.MovementEffects.', layer, '.Effects table in unit blueprint.') end return false end - if bpTable.CameraShake then - self.CamShakeT1 = self:ForkThread(self.MovementCameraShakeThread, bpTable.CameraShake) - end - self:CreateTerrainTypeEffects(effectTypeGroups, 'FXMovement', layer, TypeSuffix, EffectsBag, TerrainType) end end, @@ -3833,7 +3836,7 @@ Unit = ClassUnit(moho.unit_methods, IntelComponent, VeterancyComponent, DebugUni CreateBeamExhaust = function(self, bpTable, beamBP) local effectBones = bpTable.Bones if not effectBones or (effectBones and table.empty(effectBones)) then - WARN('*WARNING: No beam exhaust effect bones defined for unit ', repr(self.UnitId), ', Effect Bones must be defined to play beam exhaust effects. Add these to the Display.MovementEffects.BeamExhaust.Bones table in unit blueprint.') + WARN('*No beam exhaust effect bones defined for unit ', repr(self.UnitId), ', Effect Bones must be defined to play beam exhaust effects. Add these to the Display.MovementEffects.BeamExhaust.Bones table in unit blueprint.') return false end for kb, vb in effectBones do @@ -3852,7 +3855,7 @@ Unit = ClassUnit(moho.unit_methods, IntelComponent, VeterancyComponent, DebugUni CreateContrails = function(self, tableData) local effectBones = tableData.Bones if not effectBones or (effectBones and table.empty(effectBones)) then - WARN('*WARNING: No contrail effect bones defined for unit ', repr(self.UnitId), ', Effect Bones must be defined to play contrail effects. Add these to the Display.MovementEffects.Air.Contrail.Bones table in unit blueprint. ') + WARN('*No contrail effect bones defined for unit ', repr(self.UnitId), ', Effect Bones must be defined to play contrail effects. Add these to the Display.MovementEffects.Air.Contrail.Bones table in unit blueprint. ') return false end local ZOffset = tableData.ZOffset or 0.0 @@ -3883,7 +3886,7 @@ Unit = ClassUnit(moho.unit_methods, IntelComponent, VeterancyComponent, DebugUni ---@return boolean CreateFootFallManipulators = function(self, footfall) if not footfall.Bones or (footfall.Bones and (table.empty(footfall.Bones))) then - WARN('*WARNING: No footfall bones defined for unit ', repr(self.UnitId), ', ', 'these must be defined to animation collision detector and foot plant controller') + WARN('*No footfall bones defined for unit ', repr(self.UnitId), ', ', 'these must be defined to animation collision detector and foot plant controller') return false end diff --git a/units/URS0201/URS0201_unit.bp b/units/URS0201/URS0201_unit.bp index 690ab6ff1a..2b12d3c442 100644 --- a/units/URS0201/URS0201_unit.bp +++ b/units/URS0201/URS0201_unit.bp @@ -133,39 +133,37 @@ UnitBlueprint{ }, MovementEffects = { Land = { - Effects = { - Footfall = { - Bones = { - { - FootBone = "Exhaust_Leg_L01", - Scale = 0.58, - Type = "FootFall01", - }, - { - FootBone = "Exhaust_Leg_L02", - Scale = 0.58, - Type = "FootFall01", - }, - { - FootBone = "Exhaust_Leg_L03", - Scale = 0.58, - Type = "FootFall01", - }, - { - FootBone = "Exhaust_Leg_R01", - Scale = 0.58, - Type = "FootFall01", - }, - { - FootBone = "Exhaust_Leg_R02", - Scale = 0.58, - Type = "FootFall01", - }, - { - FootBone = "Exhaust_Leg_R03", - Scale = 0.58, - Type = "FootFall01", - }, + Footfall = { + Bones = { + { + FootBone = "Exhaust_Leg_L01", + Scale = 0.58, + Type = "FootFall01", + }, + { + FootBone = "Exhaust_Leg_L02", + Scale = 0.58, + Type = "FootFall01", + }, + { + FootBone = "Exhaust_Leg_L03", + Scale = 0.58, + Type = "FootFall01", + }, + { + FootBone = "Exhaust_Leg_R01", + Scale = 0.58, + Type = "FootFall01", + }, + { + FootBone = "Exhaust_Leg_R02", + Scale = 0.58, + Type = "FootFall01", + }, + { + FootBone = "Exhaust_Leg_R03", + Scale = 0.58, + Type = "FootFall01", }, }, }, From 3f68ee3d804c148a27cc7c29de6f0f91f6c06e7b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 4 Oct 2024 13:01:25 +0200 Subject: [PATCH 10/13] Bump webrick from 1.8.1 to 1.8.2 in /docs (#6462) --- docs/Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Gemfile.lock b/docs/Gemfile.lock index 744fc57c49..3f3554cfee 100644 --- a/docs/Gemfile.lock +++ b/docs/Gemfile.lock @@ -83,7 +83,7 @@ GEM terminal-table (3.0.2) unicode-display_width (>= 1.1.1, < 3) unicode-display_width (2.5.0) - webrick (1.8.1) + webrick (1.8.2) PLATFORMS arm64-darwin From f5406c2e5d4f4324a42e0293d8eeb5c5d6a6574c Mon Sep 17 00:00:00 2001 From: "(Jip) Willem Wijnia" Date: Fri, 4 Oct 2024 20:54:38 +0200 Subject: [PATCH 11/13] Fix Seraphim walls (`xsb5101`) not orientating to the terrain as intended (#6471) --- changelog/snippets/fix.6471.md | 1 + units/XSB5101/XSB5101_unit.bp | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 changelog/snippets/fix.6471.md diff --git a/changelog/snippets/fix.6471.md b/changelog/snippets/fix.6471.md new file mode 100644 index 0000000000..1aeea06d6b --- /dev/null +++ b/changelog/snippets/fix.6471.md @@ -0,0 +1 @@ +- (#6471) Fix Seraphim walls not orientating towards the terrain diff --git a/units/XSB5101/XSB5101_unit.bp b/units/XSB5101/XSB5101_unit.bp index 16da35e4c5..f06a782a6b 100644 --- a/units/XSB5101/XSB5101_unit.bp +++ b/units/XSB5101/XSB5101_unit.bp @@ -70,7 +70,6 @@ UnitBlueprint{ RebuildBonusIds = { "xsb5101" }, }, General = { - AlwaysAlignToTerrain = true, CapCost = 0.1, FactionName = "Seraphim", Icon = "land", @@ -82,6 +81,7 @@ UnitBlueprint{ LifeBarOffset = 0.55, LifeBarSize = 0.8, Physics = { + AlwaysAlignToTerrain = true, DragCoefficient = 0.2, MaxGroundVariation = 50, MeshExtentsX = 1.5, From 005af9da584b8a4ca70ff7b5522cc9ca43781e05 Mon Sep 17 00:00:00 2001 From: "(Jip) Willem Wijnia" Date: Fri, 4 Oct 2024 21:33:19 +0200 Subject: [PATCH 12/13] Update the deployment procedure (#6409) --- .github/workflows/docs-url-check.yaml | 2 +- docs/deployment.md | 50 +++++++++++++++------------ 2 files changed, 28 insertions(+), 24 deletions(-) diff --git a/.github/workflows/docs-url-check.yaml b/.github/workflows/docs-url-check.yaml index 681c74f445..02af0eb467 100644 --- a/.github/workflows/docs-url-check.yaml +++ b/.github/workflows/docs-url-check.yaml @@ -50,4 +50,4 @@ jobs: # URLs are excluded because not all type of URLs are supported, see also: # - https://github.com/urlstechie/urlchecker-action/issues/105 - exclude_urls: https://code.visualstudio.com/shortcuts/keyboard-shortcuts-windows.pdf,https://github.com/FAForever/fa/deployments + exclude_urls: https://code.visualstudio.com/shortcuts/keyboard-shortcuts-windows.pdf,https://github.com/FAForever/fa/deployments,https://github.com/FAForever/fa/deployments/production diff --git a/docs/deployment.md b/docs/deployment.md index 440d9ed936..f0b0301e82 100644 --- a/docs/deployment.md +++ b/docs/deployment.md @@ -21,19 +21,22 @@ The deployment procedure can be a lengthy process because it involves various st ### Deployment of engine patches -The deployment of engine patches to the release branch is a manual process. This is intentional as users will automatically download the executable upon launching the game. +The deployment of engine patches to the release branch is a manual process. This is intentional from a security perspective - it provides a second pair of eyes from a server administrator who is usually not directly related to the game team. - (1) Make sure that any open changes that you want to include are merged to the `master` branch of the [Binary patches](https://github.com/FAForever/FA-Binary-Patches) repository. - (2) Update the executable of the `FAF Develop` and `FAF Beta Balance` game types using the [Upload workflow](https://github.com/FAForever/FA-Binary-Patches/actions). -- (3) Ask a server administrator to prepare the executable to be updated upon the next game release. -- (4) ??? -You can continue the deployment steps but you can not finalize it until the server administrator got back to you that it is set. This may take an arbitrary amount of time so make sure this is done well in advance. +The workflow requires an approval of another maintainer. Once approved, wait for the workflow to finish. -### Changelog for a deployment +- (3) Verify the executable on the `FAF Develop` game type. +- (4) Ask a server administrator to prepare the executable to be updated upon the next game release. This practically involves a copy operation where the server administrator verifies the executable of FAF Develop and copies it to a different location. -- (0) Checkout on the `develop` branch and pull in the latest version. Make sure that there are no other open changes. -- (1) Create a new branch that originates from `develop`. We'll refer to this branch as the `changelog branch`. +You can continue the deployment steps, but you can not finalize it until the server administrator got back to you that it is set. This may take an arbitrary amount of time so make sure this is done well in advance. + +### Deployment of Lua + +- (0) Checkout on the [develop](https://github.com/FAForever/fa/tree/develop) branch and pull in the latest version. Make sure that there are no other open changes. +- (1) Create a new branch that originates from [develop](https://github.com/FAForever/fa/tree/develop). We'll refer to this branch as the `changelog branch`. - (2) Generate the changelog using the [Changelog generation workflow](https://github.com/FAForever/fa/actions/workflows/docs-changelog.yaml). - (3) Once the workflow is completed, navigate to the summary section and download the artifact that is created by the workflow. - (4) Save the generated changelog to a new file in the format `yyyy-mm-dd-game-version.md` in `docs/_posts`. As an example for a file name: `2024-08-03-3811.md`. @@ -48,31 +51,32 @@ permalink: changelog/3811 --- ``` -- - (5.1) Add an introduction at the top of the changelog. -- - (5.2) Add the contributors at the bottom. +- - (5.2) Add an introduction at the top of the changelog. +- - (5.3) Add the contributors at the bottom. -- (6) Stage, commit and push the changes to GitHub. Create a pull request on GitHub to allow other maintainers to review the changelog. Make sure the pull requests points to `develop`. +- (6) Stage, commit and push the changes to GitHub. Create a pull request on GitHub to allow other maintainers to review the changelog. Make sure the pull request points to [develop](https://github.com/FAForever/fa/tree/develop). - (7) Delete the current snippets and stage, commit and push the changes to GitHub. +- (8) Update the game version in [mod_info.lua](https://github.com/FAForever/fa/blob/develop/mod_info.lua) and [version.lua](https://github.com/FAForever/fa/blob/develop/lua/version.lua) and stage, commit and push the changes to GitHub. -You can re-use the same branch and pull request in the next phase of the deployment. - -### Deployment of Lua - -The following (manual) steps are relevant to create a valid deployment to the FAF game type. +At this point you need to wait until the `changelog branch` is merged. -- (0) Checkout on the `changelog branch` branch created in the previous step and pull in the latest version. -- (1) Update the game version in [mod_info.lua](https://github.com/FAForever/fa/blob/develop/mod_info.lua) and [version.lua](https://github.com/FAForever/fa/blob/develop/lua/version.lua). -- (3) Push everything that you want to release to the [master](https://github.com/FAForever/fa/tree/master) branch. -- (4) Use the [Deploy to FAF Workflow](https://github.com/FAForever/fa/actions/workflows/deploy-faf.yaml) to perform the deployment. -- (5) Create a [release on GitHub](https://github.com/FAForever/fa/releases) that targets the [master](https://github.com/FAForever/fa/tree/master) branch. +- (9) Push everything that you want to release from [develop](https://github.com/FAForever/fa/tree/develop) to the [master](https://github.com/FAForever/fa/tree/master) branch. -### Release on GitHub +### Deployment - final steps -Once `deploy/faf` is updated it is important to create a [release](https://github.com/FAForever/fa/releases/new) on GitHub +- (1) Create a [release on GitHub](https://github.com/FAForever/fa/releases) that targets the [master](https://github.com/FAForever/fa/tree/master) branch. +- - (1.1) Set the tag with the game version. +- - (1.2) Match the format of the title with that of previous releases. +- - (1.3) Copy and paste the changelog into the description. Make sure to remove the title as a release has its own title. +- - (1.4) Create the release. +- (2) Use the [Deploy to FAF Workflow](https://github.com/FAForever/fa/actions/workflows/deploy-faf.yaml) to perform the deployment. +The workflow requires an approval of another maintainer. Once approved, wait for the workflow to finish. +- (3) Use the [Update SpookyDB](https://github.com/FAForever/fa/actions/workflows/spookydb-update.yaml) workflow to update [SpookyDB](https://github.com/FAForever/spooky-db) +- (4) Use the [Update UnitDB](https://github.com/FAForever/fa/actions/workflows/unitdb-update.yaml) workflow to update [UnitDB](https://github.com/FAForever/UnitDB) -The last step allows us to systematically post process what we deploy. You can learn more about this by inspecting the workflow file. +Once all this is run you can review the status of the deployment by the server in the [production environment](https://github.com/FAForever/fa/deployments/production). Once that returns green the deployment succeeded and you can inform the community of the deployment. Congratulations! ## Automated deployments From 4fa0fbad77c64cd89d590e49a21e72ff7534e755 Mon Sep 17 00:00:00 2001 From: Basilisk3 <126026384+Basilisk3@users.noreply.github.com> Date: Sat, 5 Oct 2024 22:27:54 +0200 Subject: [PATCH 13/13] Reduce the `TransportSpeedReduction` stat of the Fire Beetle (#6469) ## Description of the proposed changes 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 ## Checklist - [x] Changes are documented in the changelog for the next game version --- changelog/snippets/balance.6469.md | 4 ++++ units/XRL0302/XRL0302_unit.bp | 1 + 2 files changed, 5 insertions(+) create mode 100644 changelog/snippets/balance.6469.md diff --git a/changelog/snippets/balance.6469.md b/changelog/snippets/balance.6469.md new file mode 100644 index 0000000000..4929c92c54 --- /dev/null +++ b/changelog/snippets/balance.6469.md @@ -0,0 +1,4 @@ +- (#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 diff --git a/units/XRL0302/XRL0302_unit.bp b/units/XRL0302/XRL0302_unit.bp index 1d2b23b8ab..e22ca74b97 100644 --- a/units/XRL0302/XRL0302_unit.bp +++ b/units/XRL0302/XRL0302_unit.bp @@ -139,6 +139,7 @@ UnitBlueprint{ MeshExtentsY = 0.25, MeshExtentsZ = 0.65, MotionType = "RULEUMT_Land", + TransportSpeedReduction = 0.15, TurnRadius = 4, TurnRate = 200, },