Skip to content

Commit

Permalink
Merge branch 'deploy/fafdevelop' into MaxGroundVariation
Browse files Browse the repository at this point in the history
  • Loading branch information
Basilisk3 authored Apr 11, 2024
2 parents f7867eb + 51fe1fb commit 00f4b17
Show file tree
Hide file tree
Showing 170 changed files with 2,483 additions and 1,124 deletions.
2 changes: 1 addition & 1 deletion changelog/3807.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ Previously, the cost of enhancements for an SACU preset was added to the veteran

Previously the Ythotha would use the same texture that the ACU does, but scaled up. It now uses a custom made texture that better fits the shape. It's not perfect, if you're interested in improving it then do get in touch with us!

# AI
## AI

- (6052) Remove rounding performed on AI unit threat level calculations to improve threat assignment and variation between units.

Expand Down
40 changes: 11 additions & 29 deletions changelog/3808.md
Original file line number Diff line number Diff line change
@@ -1,43 +1,25 @@
# Game Version 3808

## Bug Fixes

<!-- Remove header when empty -->

## Balance
A small hotfix because we it appears we finally managed to get achievements working again.

<!-- Remove header when empty -->
With gratitude to all those who took the time to report issues,

## Features
Jip

<!-- Remove header when empty -->

## Graphics

<!-- Remove header when empty -->
## Bug Fixes

## AI
- (#6058, a132700) Fix another bug with achievements

<!-- Remove header when empty -->
Preliminary data in the server logs show that achievements are being processed and updated again for players on the FAF Develop gametype! With this release we make the current state of our hunt on bugs surrounding achievements available to the player base.

## Other Changes
# AI

<!-- Remove header when empty -->
- (#6052) Remove rounding performed on AI unit threat level calculations to improve threat assignment and variation between units.

## Contributors

With thanks to the following people who contributed through coding:

<!-- Remove when empty -->

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

<!-- Remove when empty -->

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

<!-- Remove when empty -->

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

<!-- Remove when empty -->
- Relent0r
- lL1l1
- Jip
94 changes: 94 additions & 0 deletions changelog/3809.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
# Game Version 3809

## Bug Fixes

<!-- Remove header when empty -->

## Balance

- (#5901) Increase UEF T3 MAA's DPS and damage, and swap its speed with Aeon's T3 MAA.

- Cougar: DPS: 176 -> 206, Damage per volley: 1200 -> 1400, Speed: 3.3 -> 3.5
- Redeemer: Speed: 3.5 -> 3.3

This brings its DPS closer in line with other factions, lets it 3 shot strategic bombers instead of 4 shot, and lets it better escort Titans/Parashields.
Redeemer's extra speed wasn't very necessary for its role within Aeon, so it was chosen to be swapped with.

- (#5874) Fine tune the balance of the Tech 2 Navy stage.
- Uashavoh: T2 Destroyer (XSS0201):
- AntiTorpedo RateOfFire: 0.26 --> 0.3
- Salem Class: T2 Destroyer (URS0201):
- BackUpDistance: 5 --> 10
- Cooper: T2 Torpedo Boat (XES0102):
- Health: 1750 --> 2000

- (#5895) After receiving several buffs, the Seraphim Tech 3 Submarine Hunter has become too oppressive, especially in larger formations. These changes aim to bring it back in line, while keeping its identity.
- Yathsou: T3 Submarine Hunter (XSS0304):
- Damage: 290 --> 380
- RateOfFire: 0.25 --> 0.22
- MuzzleSalvoDelay: 0.7 --> 1
- MuzzleSalvoSize: 5 --> 4
- DPS: 363 --> 338
- Torpedo Defense RateOfFire (x2): 0.15 --> 0.1

- (#6043) The `BuildRate` and `BuildTime` stats of all Radars and Sonars are updated to be more streamlined. The build time of Tech 2 Sonars is corrected to ensure it is not longer than that of Tech 3 Sonars. Tech 3 Sonars get their very low build time increased, to compensate for their Tech 2 counterparts being much quicker to build and providing more build power.
- Tech 1 Radars
- BuildRate: 14.08 --> 13
- Tech 2 Radars
- BuildRate: 21.46 --> 20
- BuildTime: 845 --> 780
- Tech 3 Radars
- BuildTime: 2575 --> 2400
- Tech 1 Sonars
- BuildRate: 14.08 --> 13
- BuildTime: 127.5 --> 125
- BuildCostEnergy: 1275 --> 1250
- Tech 2 Sonars
- BuildRate: 15 --> 20
- BuildTime: 1680 --> 780
- BuildTime: 2120 --> 1040 (Seraphim)
- Tech 3 Sonars
- BuildTime: 750 --> 1200
- BuildTime: 900 --> 1400 (Cybran)

## Features

<!-- Remove header when empty -->

## Graphics

<!-- Remove header when empty -->

## AI

- (#6046) Fix issue with T2 static artillery not receiving any surface threat during blueprint pass over.

## Other Changes

- (#5668, #6066) Rework Seraphim weapon modules

- (#6067) Fix a performance issue related to AIs and their transport logic

- (#6042) Improve annotations for `OnMotionHorzEventChange` and `OnMotionVertEventChange`

## Contributors

With thanks to the following people who contributed through coding:

- Relent0r
- Basilisk3
- Rowey
- Jip
- lLl1l1

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

<!-- Remove when empty -->

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

<!-- Remove when empty -->

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

<!-- Remove when empty -->
1 change: 1 addition & 0 deletions engine/Core/Blueprints/UnitBlueprint.lua
Original file line number Diff line number Diff line change
Expand Up @@ -655,6 +655,7 @@

---@class UnitBlueprintTarmac
---@field Albedo FileName
---@field Albedo2 FileName
---@field DeathLifetime number
---@field FadeOut number
---@field Length number
Expand Down
12 changes: 12 additions & 0 deletions engine/Enums.lua
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,18 @@
---| "Air"
---| "Orbital"

---@alias HorizontalMovementState
---| 'TopSpeed'
---| 'Stopped'
---| 'Stopping'
---| 'Cruise'

---@alias VerticalMovementState
---| 'Down'
---| 'Bottom'
---| 'Up'
---| 'Top'

---@alias WeaponRangeCategory
---| "UWRC_Undefined"
---| "UWRC_DirectFire"
Expand Down
5 changes: 2 additions & 3 deletions lua/AI/AIAddBuilderTable.lua
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ function AddGlobalBaseTemplate(aiBrain, locationType, baseBuilderName)
error('*AI ERROR: Invalid BaseBuilderTemplate: none found named - ' .. baseBuilderName)
end

--SPEW('*AI DEBUG: AddGlobalBaseTemplate(): Loading Base Template '..repr(baseBuilderName))
for k,v in BaseBuilderTemplates[baseBuilderName].Builders do
AddGlobalBuilderGroup(aiBrain, locationType, v)
end
Expand All @@ -36,7 +35,7 @@ function AddGlobalBuilderGroup(aiBrain, locationType, builderGroupName)
if BuilderGroups[builderGroupName] then
AddBuilderTable(aiBrain, locationType, BuilderGroups[builderGroupName], builderGroupName)
else
WARN('['..string.gsub(debug.getinfo(1).source, ".*\\(.*.lua)", "%1")..', line:'..debug.getinfo(1).currentline..'] *AddGlobalBuilderGroup ERROR: BuilderGroup ' .. repr(builderGroupName) .. ' does not exist!' )
WARN('['..string.gsub(debug.getinfo(1).source, ".*\\(.*.lua)", "%1")..', line:'..debug.getinfo(1).currentline..'] *AddGlobalBuilderGroup ERROR: BuilderGroup ' .. tostring(builderGroupName) .. ' does not exist!' )
end
end

Expand All @@ -63,7 +62,7 @@ function AddBuilderTable(aiBrain, locationType, builderTable, tableName)
elseif builderTable.BuildersType == 'StrategyBuilder' and managers.StrategyManager then
tableType = 'StrategyManager'
else
WARN('*AI ERROR: Invalid BuildersType ('..repr(builderTable.BuildersType)..') for table of builder to add to brain')
WARN('*AI ERROR: Invalid BuildersType ('..tostring(builderTable.BuildersType)..') for table of builder to add to brain')
return
end

Expand Down
5 changes: 0 additions & 5 deletions lua/AI/AttackManager.lua
Original file line number Diff line number Diff line change
Expand Up @@ -290,16 +290,12 @@ AttackManager = ClassSimple {
tempPlatoon.PlatoonData = {}
end
tempPlatoon.PlatoonData.PlatoonName = v.PlatoonName
--LOG('*AM DEBUG: AM Master Platoon Formed, Builder Named: ', repr(v.BuilderName))
--LOG('*AI DEBUG: ARMY ', repr(self:GetArmyIndex()),': AM Master Platoon formed - ',repr(v.BuilderName))
if v.AIThread then
tempPlatoon:ForkAIThread(import(v.AIThread[1])[v.AIThread[2]])
--LOG('*AM DEBUG: AM Master Platoon using AI Thread: ', repr(v.AIThread[2]), ' Builder named: ', repr(v.BuilderName))
end
if v.DestroyCallbacks then
for dcbNum, destroyCallback in v.DestroyCallbacks do
tempPlatoon:AddDestroyCallback(import(destroyCallback[1])[destroyCallback[2]])
--LOG('*AM DEBUG: AM Master Platoon adding destroy callback: ', destroyCallback[2], ' Builder named: ', repr(v.BuilderName))
end
end
if v.FormCallbacks then
Expand All @@ -309,7 +305,6 @@ AttackManager = ClassSimple {
else
self.Trash:Add(ForkThread(import(callback[1])[callback[2]], tempPlatoon))
end
--LOG('*AM DEBUG: AM Master Platoon Form callback: ', repr(callback[2]), ' Builder Named: ', repr(v.BuilderName))
end
end
end
Expand Down
2 changes: 1 addition & 1 deletion lua/AI/OpAI/BaseManager.lua
Original file line number Diff line number Diff line change
Expand Up @@ -1285,7 +1285,7 @@ BaseManager = ClassSimple {
local unitNames = self.AIBrain.BaseTemplates[addName].UnitNames
local buildCounter = self.AIBrain.BaseTemplates[addName].BuildCounter
if not tblUnit then
error('*AI DEBUG - Group: ' .. repr(name) .. ' not found for Army: ' .. repr(army), 2)
error('*AI DEBUG - Group: ' .. tostring(name) .. ' not found for Army: ' .. tostring(army), 2)
else
-- Convert building to the proper type to be built if needed (ex: T2 and T3 factories to T1)
for i, unit in tblUnit do
Expand Down
3 changes: 1 addition & 2 deletions lua/AI/OpAI/OpBehaviors.lua
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,6 @@ function CDROverChargeThread( cdr )
local priList = { categories.COMMAND, categories.EXPERIMENTAL, categories.TECH3 * categories.INDIRECTFIRE,
categories.TECH3 * categories.MOBILE, categories.TECH2 * categories.INDIRECTFIRE, categories.MOBILE * categories.TECH2,
categories.TECH1 * categories.INDIRECTFIRE, categories.TECH1 * categories.MOBILE, categories.ALLUNITS }
--LOG('*AI DEBUG: ARMY ' , repr(aiBrain:GetArmyIndex()), ': CDR AI ACTIVATE - Commander go fight stuff! -- ' .. numUnits)
local target
local continueFighting = true
local counter = 0
Expand Down Expand Up @@ -124,7 +123,7 @@ function CDROverChargeThread( cdr )
IssueToUnitMove(cdr, {startX, 0, startZ} )
end
end
--LOG('*AI DEBUG: ARMY ', repr(aiBrain:GetArmyIndex()), ': CDR AI DEACTIVATE - Nothing to see here!')

if aiBrain:PlatoonExists(plat) then
cdr:ForkThread( CDRRepairBuildingUnit, plat )
end
Expand Down
16 changes: 10 additions & 6 deletions lua/AI/Transportutilities.lua
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ function AssignTransportToPool( unit, aiBrain )
-- if the unit is not already in the transport Pool --
if not unit.Dead and (not unit.PlatoonHandle != aiBrain.TransportPool) then
if TransportDialog then
LOG("*AI DEBUG TRANSPORT "..repr(unit.PlatoonHandle.BuilderName).." Transport "..unit.EntityId.." starts assigning to Transport Pool" )
LOG("*AI DEBUG TRANSPORT "..tostring(unit.PlatoonHandle.BuilderName).." Transport "..unit.EntityId.." starts assigning to Transport Pool" )
end
IssueToUnitClearCommands(unit)
-- if not in need of repair or fuel --
Expand All @@ -111,7 +111,7 @@ function AssignTransportToPool( unit, aiBrain )
unit.Assigning = false

if TransportDialog then
LOG("*AI DEBUG TRANSPORT "..repr(unit.PlatoonHandle.BuilderName).." Transport "..unit.EntityId.." now available to Transport Pool" )
LOG("*AI DEBUG TRANSPORT "..tostring(unit.PlatoonHandle.BuilderName).." Transport "..unit.EntityId.." now available to Transport Pool" )
end

end
Expand Down Expand Up @@ -591,7 +591,7 @@ function GetTransports( platoon, aiBrain)
end
else
if TransportDialog then
LOG("*AI DEBUG "..aiBrain.Nickname.." "..platoon.BuilderName.." transport "..transport.EntityId.." rejected - In Use "..repr(transport.InUse).." - Assigning "..repr(transport.Assigning).." - BeingBuilt "..repr(IsBeingBuilt(transport)).." or Low Fuel/Health")
LOG("*AI DEBUG "..aiBrain.Nickname.." "..platoon.BuilderName.." transport "..transport.EntityId.." rejected - In Use "..tostring(transport.InUse).." - Assigning "..tostring(transport.Assigning).." - BeingBuilt "..tostring(IsBeingBuilt(transport)).." or Low Fuel/Health")
end
if not transport.Dead then
ForkThread( ReturnTransportsToPool, aiBrain, {transport}, true )
Expand Down Expand Up @@ -715,7 +715,7 @@ function GetTransports( platoon, aiBrain)
if not transportplatoon or counter < 1 then
if TransportDialog then
if not transportplatoon then
LOG("*AI DEBUG "..aiBrain.Nickname.." "..platoon.BuilderName.." transport platoon dead after assignmnet "..repr(transportplatoon))
LOG("*AI DEBUG "..aiBrain.Nickname.." "..platoon.BuilderName.." transport platoon dead after assignmnet "..tostring(transportplatoon))
else
LOG("*AI DEBUG "..aiBrain.Nickname.." "..platoon.BuilderName.." unit platoon dead after assignment ")
end
Expand Down Expand Up @@ -777,7 +777,7 @@ function ReturnTransportsToPool( aiBrain, units, move )
continue
end
if not v.Dead and TransportDialog then
LOG("*AI DEBUG "..aiBrain.Nickname.." transport "..v.EntityId.." "..v:GetBlueprint().Description.." Returning to Pool InUse is "..repr(v.InUse) )
LOG("*AI DEBUG "..aiBrain.Nickname.." transport "..v.EntityId.." "..v:GetBlueprint().Description.." Returning to Pool InUse is "..tostring(v.InUse) )
end
if v.WatchLoadingThread then
KillThread( v.WatchLoadingThread)
Expand Down Expand Up @@ -1792,7 +1792,11 @@ function WatchUnitLoading( transport, units, aiBrain, UnitPlatoon)
unitsdead = false
loading = true
-- here is where we issue the Load command to the transport --
safecall("Unable to IssueTransportLoad units are "..repr(units), IssueTransportLoad, newunits, transport )
local ok, msg = pcall(IssueTransportLoad, {u}, transport )
if not ok then
LOG("Unable to IssueTransportLoad to: " .. repr(u.Blueprint.BlueprintId))
end

break
end
end
Expand Down
2 changes: 1 addition & 1 deletion lua/AI/aiarchetype-managerloader.lua
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ function SetupMainBase(aiBrain)
ScenarioInfo.ArmySetup[aiBrain.Name].AIPersonality = baseType
end

LOG('*AI DEBUG: ARMY ', repr(aiBrain:GetArmyIndex()), ': Initiating Archetype using ' .. base)
LOG('*AI DEBUG: ARMY ', tostring(aiBrain:GetArmyIndex()), ': Initiating Archetype using ' .. base)
AIAddBuilderTable.AddGlobalBaseTemplate(aiBrain, 'MAIN', base)
aiBrain:ForceManagerSort()
end
Expand Down
Loading

0 comments on commit 00f4b17

Please sign in to comment.