Compare commits

...
Author SHA1 Message Date
Axle1975 6703b9d917 Add tdraw.dll, tdraw.txt and LICENSE 2026-06-20 14:45:01 +10:00
Axle1975 3f578ce371 tatw-2.0b95 2025-10-24 13:26:39 +11:00
7 changed files with 807 additions and 2 deletions
+1
View File
@@ -2,3 +2,4 @@ TADEMO.UFO filter=lfs diff=lfs merge=lfs -text
online.dll filter=lfs diff=lfs merge=lfs -text
rev31.gp3 filter=lfs diff=lfs merge=lfs -text
TotalA.exe filter=lfs diff=lfs merge=lfs -text
tdraw.dll filter=lfs diff=lfs merge=lfs -text
+43
View File
@@ -0,0 +1,43 @@
Beta 95
Summary of changes (For more details and notes, see the full changelog (TAT-v2.0-Beta-Changelog.txt) included in the release):
Fixed the dark green showing up as yellow on the minimap.
Minelaying units now have the same icon as constructors.
Fixed "slow" animations for water explosions.
(Thanks ChaoStorm!)
Fixed Arm Mumbo script to prevent the unit locking up and not firing when under heavy fire.
Arm Mumbo weapon damage increased.
Control G added to Arm Pelican.
Fixed a script bug that prevented Arm Guardians and Core Punishers from firing in ballistic mode until they'd fired at least once in direct-fire mode.
Seaplanes made more expensive and heavier than regular advanced aircraft:
Previously, Seaplanes had the same armor/firepower as advanced aircraft, but cost only 2/3s as much. This changes Seaplanes to cost 25% more than advanced aircraft, but keep the same weapons, so all of the extra cost goes into armor, boosting their armor by about 56% over advanced aircraft. However, they also move about 10% slower. This makes Seaplanes much more heavily armored for a relatively small increase in cost compared to advanced aircraft while keeping the same weapons.
Replaced Arm Sentinel and Core Gaat Gun models with their original OTA models which are shorter, but also target fast-moving units like Flash tanks more effectively.
Core Viper weapon area of effect increased.
Arm Spirit and Core Krow removed from Advanced Air Plants and added to Experimental Gantries.
Arm Spirit cost increased, speed reduced, weapon range reduced, damage increased, and reload reduced.
Core Krow cost increased, speed reduced, weapon range reduced, and damage increased.
Arm Bantha weapon velocity increased to improve accuracy.
Core Cauterizer turn rate increased.
Arm and Core Commander explosion area of effect increased.
Arm and Core Decoy Commander explosion area of effect increased.
NOTE: This increase in the Commander blast area of effect prevents an enemy commander from destroying your commander with his anti-air missile from further away and surviving your blast. As always, remember that Commander blasts only affect units, leaving structures intact.
Arm and Core Micro Fusions cost and output reduced.
NOTE: This puts Micro Fusions at the same metal/energy efficiency as regular fusions, instead of 23% more efficient. They also produce less energy each, meaning they take up more space and are therefore more hazardous to use.
Arm and Core Amphibious Complex costs reduced 2/3 to equal the costs of Hovercraft Platforms.
NOTE: This puts the Amphibious Complexes back to T1.5 level, just like Hover platforms.
Hovers give better than T1 units, and a couple of advanced things like Micro Fusions, but mostly not advanced. Complexes give full-blown advanced units at half the cost of regular advanced, but you get a short list of units across both Kbots and Vehicles, so you'll just have to work with what you get.
+79
View File
@@ -0,0 +1,79 @@
# TA Demo Recorder and Community Patch
## LICENSE
### TA Community Patch (original filename: tdraw.dll; source directory: src/DDRaw)
The MIT License (MIT)
Copyright (c) 2023 Axle1975, FunkyFr3sh
Copyright (c) 2019 Xpoy
Copyright (c) 2003 SJ, Yeha
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.
### TA Demo Recorder (original filename: tplayx.dll; source directory: src/Recorder)
The MIT License (MIT)
Copyright (c) 2015 Rime
Copyright (c) 2003 SJ, Yeha
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.
### TA Demo Replayer (original filename: SERVER.EXE, source directory: src/Server)
The MIT License (MIT)
Copyright (c) 2015 Chaos
Copyright (c) 2003 Fnordia
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.
+99
View File
@@ -1,3 +1,102 @@
October 22, 2025
TA:T v2.0 Beta 95:
Fixed the dark green showing up as yellow on the minimap.
Minelaying units now have the same icon as constructors.
Fixed "slow" animations for water explosions.
(Thanks ChaoStorm!)
Adjusted Arm Mumbo script to avoid it locking up when being hit by lots of enemy fire all at once.
Arm Mumbo weapon [TAWF003_weapon] damage increased to 26 (19).
NOTE: The Mumbo weapon often hits twice on a target, due to the area of effect, but sometimes only hits once. It's hard to estimate how often, but this increase should help better off-set the times it's only hitting once on a target.
Added Control G hotkey to Arm Pelican.
Fixed a script bug that prevented Arm Guardians and Core Punishers from firing in ballistic mode until they'd fired at least once in direct-fire mode.
Arm Seaplane Platform description changed to Builds Armored Seaplanes (540 Build Power) (Builds Seaplanes (540 Build Power)).
Arm Construction Seaplane energy cost increased to 20729 (11054), metal cost increased to 288 (153), build time increased to 14063 (7500), armor increased to 916 (586), speed reduced to 6.6363 (7.3), and description changed to Armored Construction Seaplane (Construction Seaplane).
Arm Tornado energy cost increased to 5296 (2825), metal cost increased to 166 (89), build time increased to 5390 (2875), armor increased to 497 (318), speed reduced to 8.64 (9.5), and description changed to Armored Stealth Seaplane Fighter (Stealth Seaplane Fighter).
Arm Tsunami energy cost increased to 25483 (13591), metal cost increased to 401 (214), build time increased to 12966 (6915), armor increased to 1916 (1226), speed reduced to 6.667 (7.333), and description changed to Armored Seaplane Bomber (Seaplane Bomber).
Arm Albatross energy cost increased to 7778 (4148), metal cost increased to 245 (131), build time increased to 7915 (4221), armor increased to 1170 (749), speed reduced to 6.667 (7.333), and description changed to Armored Torpedo Seaplane (Torpedo Seaplane).
Arm Sabre energy cost increased to 13510 (7206), metal cost increased to 426 (227), build time increased to 13750 (7333), armor increased to 1695 (1085), speed reduced to 6.82 (7.5), and description changed to Armored Seaplane Laser Gunship (Seaplane Laser Gunship).
Arm Seahawk energy cost increased to 29975 (15986), metal cost increased to 259 (138), build time increased to 30513 (16273), armor increased to 1648 (1055), speed reduced to 8.4 (9.2), and description changed to Armored Radar/Sonar/Line of sight Seaplane (-101E) (Radar/Sonar/Line of sight Seaplane (-101E)).
Core Seaplane Platform description changed to Builds Armored Seaplanes (540 Build Power) (Builds Seaplanes (540 Build Power)).
Core Construction Seaplane energy cost increased to 21786 (11619), metal cost increased to 303 (161), build time increased to 15156 (8083), armor increased to 1059 (678), speed reduced to 6.033 (6.6363), and description changed to Armored Construction Seaplane (Construction Seaplane).
Core Voodoo energy cost increased to 5459 (2911), metal cost increased to 173 (92), build time increased to 5694 (3037), armor increased to 589 (377), speed reduced to 7.855 (8.64), and description changed to Armored Stealth Seaplane Fighter (Stealth Seaplane Fighter).
Core Maelstrom energy cost increased to 26781 (14283), metal cost increased to 423 (225), build time increased to 13978 (7455), armor increased to 2217 (1419), speed reduced to 6.06 (6.666), and description changed to Armored Seaplane Bomber (Seaplane Bomber).
Core Typhoon energy cost increased to 8166 (4355), metal cost increased to 258 (137), build time increased to 8523 (4545), armor increased to 1353 (866), speed reduced to 6.06 (6.666), and description changed to Armored Torpedo Seaplane (Torpedo Seaplane).
Core Cutlass energy cost increased to 14488 (7727), metal cost increased to 456 (243), build time increased to 15115 (8061), armor increased to 1997 (1278), speed reduced to 6.2 (6.82), and description changed to Armored Seaplane Riot Cannon Gunship (Seaplane Riot Cannon Gunship).
Core Hunter energy cost increased to 30700 (16373), metal cost increased to 265 (141), build time increased to 32031 (17083), armor increased to 1852 (1185), speed reduced to 7.64 (8.4), and description changed to Armored Radar/Sonar/Line of sight Seaplane (-101E) (Radar/Sonar/Line of sight Seaplane (-101E)).
NOTE: Previously, Seaplanes had the same armor/firepower as advanced aircraft, but cost only 2/3s as much. This changes Seaplanes to cost 25% more than advanced aircraft, but keep the same weapons, so all of the extra cost goes into armor, boosting their armor by about 56% over advanced aircraft. However, they also move about 10% slower. This makes Seaplanes much more heavily armored for a relatively small increase in cost compared to advanced aircraft while keeping the same weapons.
Arm Detonator and Core Catalyst weapon [ARMEMP_WEAPON] special damage set to 34000 for the Goliath (Was default damage of 25000).
Arm Retaliator weapon [NUCLEAR_MISSILE] and Core Silencer weapon [CRBLMSSL] special damage set to 34000 for the Goliath (Was default damage of 25000).
NOTE: This prevents a full veteran status Goliath from surviving a direct nuclear hit.
Replaced Arm Sentinel and Core Gaat Gun models with their original OTA models which are shorter, but also target fast-moving units like Flash tanks more effectively.
Core Clasher description changed to Heavy Blast-Laser Hovercraft (Heavy Laser Hovercraft).
Core Termite description changed to All-terrain Assault Blast-Laser Vehicle (All-terrain Assault Laser Vehicle).
NOTE: This just reflects that the weapon has a larger area of effect (for a laser).
Core Viper weapon [CORVIPE_LASER] area of effect increased to 168 (128).
Arm Spirit and Core Krow removed from Advanced Air Plants and added to Experimental Gantries.
Arm Spirit model size increased 33%.
Arm Spirit energy cost increased to 202355 (151766), metal cost increased to 3185 (2389), buildtime increased to 102969 (77227), armor increased to 8635 (6476), and speed reduced to 8.1712 (10.214).
Arm Spirit weapon [Arm_pidr] range reduced to 535 (713), reload reduced to 7.847 (10.463), and damage increased to 16000 (12000).
Core Krow energy cost increased to 214392 (160794), metal cost increased to 3376 (2532), buildtime increased to 111855 (83891), armor increased to 23632 (17724), speed reduced to 4.956 (6.195), acceleration reduced to 0.1285 (0.25), and turn rate reduced to 414 (572).
Core Krow weapon [KROWLASER2] range reduced to 489 (611), damage increased to 652 (391) and energy per shot increased to 156 (117).
Core Krow weapon [KROWLASER] range reduced to 534 (667), damage increased to 358 (215) and energy per shot increased to 95 (71).
Arm Bantha weapon [ARMBANTHA_FIRE] weapon velocity increased to 600 (450) and tolerance reduced to 3500 (6000).
NOTE: This should let them hit faster moving targets more easily.
Core Cauterizer turnrate increased to 140 (70).
Arm and Core Commander explosion [COMMANDER_BLAST] area of effect increased to 1600 (960).
Arm and Core Decoy Commander destroyed explosion [DECOY_COMMANDER_BLAST] area of effect increased to 1600 (960).
NOTE: This increase in the Commander blast area of effect prevents an enemy commander from destroying your commander with his anti-air missile from further away and surviving your blast. As always, remember that Commander blasts only affect units, leaving structures intact.
Arm and Core Micro Fusion energy cost reduced to 10453 (15072), metal cost reduced to 608 (876), buildtime reduced to 18471 (27751), armor reduced to 352 (616), energy make reduced to 200 (350), and description updated.
NOTE: This puts Micro Fusions at the same metal/energy efficiency as regular fusions, instead of 23% more efficient. They also produce less energy each, meaning they take up more space and are therefore more hazardous to use.
Arm Amphibious Complex energy cost reduced to 12836 (19259), metal cost reduced to 2100 (3150), and build time reduced to 42000 (63000).
Core Amphibious Complex energy cost reduced to 13265 (19734), metal cost reduced to 2170 (3231), and build time reduced to 44512 (66277).
NOTE: This puts the Amphibious Complexes back to T1.5 level, just like Hover platforms.
Hovers give better than T1 units, and a couple of advanced things like Micro Fusions, but mostly not advanced. Complexes give full-blown advanced units at half the cost of regular advanced, but you get a short list of units across both Kbots and Vehicles, so you'll just have to work with what you get.
Arm Fortification Gates destroyed explosion set to [MEDIUM_BUILDINGEX] ([LARGE_BUILDINGEX]) and self-destruct explosion set to [MEDIUM_BUILDING] ([LARGE_BUILDING]).
Core Fortification Gates destroyed explosion set to [MEDIUM_BUILDINGEX] ([LARGE_BUILDINGEX]) and self-destruct explosion set to [MEDIUM_BUILDING] ([LARGE_BUILDING]).
September 7, 2025
TA:T v2.0 Beta 94:
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
+580
View File
@@ -0,0 +1,580 @@
WHAT IS THIS
tdraw.dll is an upgrade for Total Annihilation. It patches the game to fix many bugs and add many features.
It is an integral component of the TA Community Patch, the other parts being tplayx.dll (the recorder) and server.exe (the replayer).
tdraw.dll has a long provenance dating back to the work of SY_Yeha, who introduced whiteboard markers and the TA Hook and new hotkeys to TA.
Later work by Xpoy extended hotkey support, added new shortcut commands, uni-code font support, megamap, weapon-id crack (not present in current release) and porting music patch from GOG version,
and later support was provided by Rime.
The present release includes contributions from Axle and FunkyFresh, and owes a debt to TAG_Venom for extensive testing and critical feeback, and to Gamma and Wotan for further testing and feature suggestions.
CONFIGURATIONS
The release .zip files are annotated with a build configuration tag: "tdraw-<config>.zip". The various configurations are:
* tdraw-full.zip: all features enabled
* tdraw-escalation.zip: built for TA:Escalation. disables the following features
- mex snap
- that is all
* tdraw-minimal.zip: disables the following features
- mex/wreck snap
- options for construction units to stay put when guarding
- options for construction units to only reclaim or onlt assist while patrolling
- auto kickout construction units that are blocking another builder
- weather report at top of screen
- sync wind speed between players
- map DT's always visible.
INSTALLATION
Drop tdraw.dll into your TA directory.
Ensure the following files are also present in your TA directory:
- ddraw.dll (available from https://github.com/FunkyFr3sh/cnc-ddraw)
- totala.ini
You may need to rename totala.ini and tdraw.dll to whatever your mod is using. See below for reference. For other mods, please consult with the mod maintainers.
ini file dll file
Beta patch 3.9.02 TA.ini tdraw.dll
Escalation 9.9.6 TAESC.ini taesc.dll
Mayhem 10.9.2 Settings.ini mdraw.dll
ProTA 4.6 ProTA.ini tdraw.dll
Zero Alpha5-060322 tazero.ini zdraw.dll
NEW FEATURES IN BRIEF:
*2026.6.8
- bugfix for VoteReject - prevent local user from rejecting himself
*2026.6.3
- add "nottounderwater" flag for weapons (see NEW FEATURES IN DETAIL)
- fix bug potentially being the root cause of since-year-1997 intermittent black screen on join games
- better quality megamap render
*2026.5.28
- Fix construction units intermittently trying to sit within the footprint of rotated structures before building them
*2026.5.15
- Fix intermittent 6x8 staircase yardmap on south-facing rotatable factories
- New "PreviewObject3D=" unit key to override the 3DO model used for the nanoframe ghost preview (see NEW FEATURES IN DETAIL)
*2026.5.9
- Lag-switch mitigation: detects and freezes local simulation when network goes dark
- Vote-to-reject system for in-progress multiplayer games (see NEW FEATURES IN DETAIL)
- add "nottoair" flag for weapons (see NEW FEATURES IN DETAIL)
- add "surfacefire" flag for weapons (see NEW FEATURES IN DETAIL)
- +autoteam bugfix for occasional players stranded by themselves
- Diagnostic logging for crashes 004cbed5 and 0049cf19
- Building rotation: press '/' (configurable) to cycle the build cursor
facing for buildings whose FBI permits it (see NEW FEATURES IN DETAIL)
- Nanoframe ghost preview at the build cursor (see NEW FEATURES IN DETAIL)
- Fix for ctrl-z (and ctrl-a / ctrl-b / ctrl-c) silently truncating selections for unit ids >= 512
- Export engine-backed player elimination status to gpgnet4ta via shared memory,
so games where a commander dies but play continues are reported with the correct outcome
*2026.2.17 - Fix false trigger on version check
*2026.2.10 - Minor adjustment to diagnostic crash detection ("ERROR: dstRect out of bounds", allow CopyScreenContext all the way to the edge of destination context)
*2026.2.7 - Disable AUTOTEAM, RANDOMTEAM and CRCREPORT buttons for non-host players
*2026.2.5 - Add support for AUTOTEAM, RANDOMTEAM and CRCREPORT buttons in battleroom (guis/lounge2.gui)
*2026.2.2 - Custom ctrl-f2 menu skin for escalation
*2026.1.29 - Create seperate builds for full-featured (tdraw-full.zip), escalation (tdraw-escalation.zip), and minimal (tdraw-minimal.zip) feature sets.
*2025.12.13 - Add diagnostics for crash at 004cbed5
*2025.12.6 - Fix crash when game installed in a long path (eg C:\Program Files (x86)\Steam\steamapps\common\Total Annihilation\PROTA)
*2025.11.26 - New keys for unit definitions (units/*.fbi) to customise per-unit veterancy
*2025.8.29 - Bugfix for multithreaded version/cheat check
*2025.8.19 - Auto kickout of units under build order is now strictly only for own units (previously allowed kickout anyone's units if cheats enabled)
*2025.8.1 - Set build square preview to yellow if user can build there but it contains a unit that will be kicked out
*2025.7.12
- Allow user to queue build orders underneath their own mobile units; and auto kickout of units that are under a build order
- Mod developers can opt-in to "Improved behaviour of con units".
Modifies what construction units that are guarding factories do after completing each unit: either stay put; cavedog; or scatter.
Set byte at TotalA.exe:0x101f1f to 0x00 to disable the feature (default) or 0x01 to enable the feature.
Note that if one player's 0x101f1f setting doesn't match that of other players, an in-game cheat warning will be triggered.
Once enabled, see ctrl-f2 menu for related user configurable options.
- Fix bug with erroneous game results reported to TAF when using in-game +autoteam
- With fixed position, start positions are assigned in order given by TAF auto balance
so that players are positioned opposite an opponent of similar skill
- Fixed bugs with player placement in 2v2+ games on maps with neutral units
- Push anticheat hashing functions into background threads so as to reduce in-game slowdown experienced by some users
*v2025.5.18
- Improved behaviour of con units when guarding a factory - they stay put after finishing a build
*v2025.4.24
- Fix crash on parsing spawned unit initial commands - its now possible to copy-paste mission scripts from campaign
- Log cheat warnings to tdrawlog.txt for offline analysis
- Fix for non functional perm-los sonar patch (which otherwise requires watcher's com to be in top-left of map to work)
*v2024.12.5
- Fix crash on print-screen (and presumably many other related crashes)
*v2024.12.3
- Fix crash on +logo
- Fix rare intermitent crash on adding / moving / deleting whiteboard markers
*v2024.10.27
- Ability to create multiplayer/skirmish maps with neutral units and/or additional per-player spawn units
- Add a controls to hide/minimise the allies resource bar
- Make the allies resource bar actually work with ctrl-f2 setting "background=None"
- Fix incorrect player logo colour for "new marker added" messages
- Player the "Mission Complete" sound upon winning a multiplayer/skirmish game
- Fix bug causing "unit limit reached" in between single player missions
- Remove shared metal/energy from player "totals"
- Get TAHook to use the click-snapped start position
- Increase size capacity of whiteboard marker messages
- Fix for 10 player (and other) VerCheck false positives
- Support for watching all 10 players in 10 player replays (pending a corresponding TAF update to activate it)
*v2024.3.31 and prior
- Set start positions based on battleroom teams (or alliances)
- Repair battleroom teams icons so they can be used to create teams before to launching
- Add +autoteam battleroom and in-game commands to automatically assign teams
- Add +randomteam battleroom command to automatically assign random teams
- Add .exereport battleroom command to report CRC32 of each player's totala.exe
- Add .tdreport battleroom command to report CRC32 of each player's tdraw.dll (may be a different filename depending on mod)
- Add .tpreport battleroom command to report CRC32 of each player's tplayx.dll (may be a different filename depending on mod)
- Add .gp3report battleroom command to report CRC32 of each player's rev31.gp3 (may be a different filename depending on mod)
- Add .crcreport battleroom command to report fingerprints of each player's totala.exe, tdraw.dll, tplayx.dll and rev31.gp3 file all at once
- ClickSnap to snap to nearest mex, geo or reclaimable feature
- Add ability to drag queued orders around the map
- Con units patrol behaviour - hold position: reclaim only
- Fix the "ghost com" bug (remote commanders appear in top left of map during first 50sec of game)
- Fix the "units exploding in factories" bug by holding back recycling of deceased units' IDs for 5 seconds
- Option to render DTs and fortwalls that belong to the map (not built by a player)
- Supress "qqqqqq" whiteboard marker lables when "q" is used as the whiteboard key
- Show clock and weather report (wind and tidal strength) on top resource panel
- Sync wind speed across all players
- Set default resolution on new installs to 1024x768 (.ini setting "DisplayModeMinHeight768 = TRUE/FALSE")
- Disable relay of F11 chatmacro text to other players
- Enable start button in multiplayer lobby if only one player + AI are present
- Add +noshake and .ready buttons to sharing menu
- Add .autopause button to battleroom screen
- Change whiteboard, mappos and resource indicator colours in response to +logo commands
- Prevent +logo commands from affecting other players
- Ctrl-B doesn't select aircraft carriers
- Ctrl-F centres view on selected factory
- Ctrl-S works correctly with mobile-units-can-build-mobile-units hack
- Set +lostype as a cheatcode (not available unless cheats enabled)
- Look for ddraw.dll in current working directory as backend, or failing that use system ddraw.dll
- Use the same .ini file as TotalA.exe
- Use the same registry path as TotalA.exe
- Add FPS counter to megamap, increase megamap FPS
- Fix blue background on scoreboard
- Grey background on mega map to distinguish from unmapped area
- Prevent Ctrl-F2 dialog and allies resource bar from moving off screen
- Improve responsiveness of whiteboard marker movements sent to remote players
- Render cursor while in megamap
- Fix crash when removing markers
- Fix crash on simultaneous whiteboard marker move and delete
- Fix rare crash on TA Hook line drawing
- Radar and sonar jammers no longer jam your own radar and sonar in >3 player multiplayer
- Use CTRL_F and CTRL_B unit category tags for ctrl+f and ctrl+b hotkeys in preference to heuristics
- Change ctrl+s to use CTRL_W and NOTAIR/NAIR categories so as not to select jammers etc
NEW FEATURES IN DETAIL:
- Start positions
Start positions are now assigned based on battleroom teams/alliances.
With fixed positions, host and their team are assigned the odd positions in the order that they joined the lobby.
With random positions, host and their team are randomly assigned the even or odd positions, and they are assigned in random order.
The Teams icons now function correctly, so they can be used to arrange teams in the battleroom if desired.
This is optional, it is perfectly fine to arrange teams by creating alliances too.
- Autoteam
In the battleroom, host can type "+autoteam" to have teams assigned automatically.
These teams will then determine the start positions as described above.
If launched from TAF, the battleroom +autoteam will assign autobalanced teams based on the player rating.
Otherwise teams are assigned randomly.
The +randomteam command is available to use should you prefer random teams over autobalanced teams.
Alternatively, if host types "+autoteam" in-game, alliances are created based on actual start positions.
For more than 2 teams, host can type eg "+autoteam 3" to create the desired number of teams.
- MexSnap and WreckSnap
This patch includes ability to snap mexes and geos to the nearest metal or geo patch (MexSnap),
and to snap reclaim commands to the nearest reclaim (WreckSnap).
While holding down shift, press q and e alternately to switch between building mexes and reclaiming features.
If Mex/WreckSnap is temporarily interfering with your wishes,
you can hold down alt to override it.
The override key can be configured in the ctrl-f2 options menu.
The Mex/WreckSnap radii can also be configured independently via the ctrl-f2 options menu.
Press ctrl-f2, click on the "MexSnap" or "WreckSnap" field and press a number 0 to 9.
0 disables the Mex/WreckSnap and a larger radius results in snapping to features further away.
Note that Mex/WreckSnap is disabled by default.
It needs to be enabled by the mod maintainer.
If your Mex/WreckSnap radius shows as "NA" in the ctrl-f2 menu,
it is likely that Mex/WreckSnap hasn't been enabled by your mod maintainer.
- Move Queued Orders
After queueing a build order or a move order,
you can later move them around by selecting the unit
and left mouse dragging the order to a new position.
- Construction Units Patrol Behaviour
Patrol behaviour of contructions units is modified depending on their movement orders:
Hold Position: your construction units will only look for reclaim
Maneuvre/roam: your construction units will both look for reclaim and for units that need repair or assist
Mash the 'v' key to get the desired movement order and then set a patrol route.
- Neutral unit and/or per-player additional unit spawn
To enable this feature add a "[units]" section under the "[Schema 0]" section of your map's .ota file. eg
[Schema 0]
{
....
[units]
{
[unit0]
{
Unitname=ARMHLT;
Ident=;
XPos=3164;
YPos=0;
ZPos=2250;
Player=11;
HealthPercentage=100;
}
[unit0]
{
Unitname=ARMPEEP;
Ident=;
XPos=268;
YPos=0;
ZPos=384;
Player=1;
HealthPercentage=100;
CreationCountdown=30;
InitialMission=p 1750 1828;
}
}
These additional units will spawn in for skirmish/multiplayer.
The "Player" key in the .ota file refers to the map position 1..10.
Whichever player is spawned into these positions will receive ownership of the respective units.
You can set Player=11. If any Player=11 units are defined, then the last player (eg the 6th in a 3v3)
receives ownership of the Player=11 units as long as they are an AI. He does not receive ownership of any other units.
If a player receives any units by this mechanism, they won't receive a commander.
If you want the player to have a commander,
then either don't define any units for that position,
or include a commander unit in the list of units.
The required fields for each unit are UnitName, XPos, ZPos and Player.
YPos and HealthPercentage are ignored.
Optional CreationCountdown is in seconds and InitialMission works.
Optional Ident makes it possible to refer to the unit in InitialMission of another unit.
You'll have to look at eg totala4.hpi/maps/*.OTA for examples of InitialMission scripts to copy.
- Vote-to-Reject
When a player is to be rejected during an in-progress multiplayer game, the rejection must now be
approved by a majority vote rather than taking effect immediately.
Manual reject (initiated via Tab → Control → player → reject prompt):
The proposer's YES is counted automatically. All other non-target players are shown a vote dialog
and may click YES or NO. The reject passes if at least 2/3 of non-target active players vote YES
(minimum 1). If the target has a teammate, that teammate must vote YES for the reject to pass.
If the vote fails by a NO majority it is cancelled immediately; otherwise the vote times out after
60 seconds with no effect and a 90-second cooldown is imposed before another vote can be proposed.
Timeout reject (triggered automatically when a player stops responding for 30 seconds):
All players are shown the vote dialog. The reject passes if at least 2 players vote YES
(or just 1 in a 2-player game), provided at least one ally of the timed-out player has voted YES.
If a NO majority makes the threshold unreachable, voting closes early and the player is
automatically rejected when the 90-second vote timer expires.
The vote dialog:
Each active vote appears as a row in an overlay dialog at the top-centre of the screen.
Each row shows the vote subject ("X has timed out - vote to reject?" or
"VOTE: X wants to reject Y"), the current tally (Ny/Nn/total, countdown), and YES / NO buttons.
Clicking YES or NO casts your vote and broadcasts it to all other players.
For timeout votes where the local player is an ally of the timed-out player, a ".take" button
is also shown. Clicking it broadcasts the chat message ".take", which the recorder (tplayx.dll)
interprets as the player taking over the timed-out player's units. Once the recorder confirms
the take, the corresponding vote is automatically cancelled.
- Per-Unit Veterancy Customization
This patch introduces new optional keys for unit definition files (units/*.fbi)
that allow you to customize veterancy behavior for individual units.
Example
[UNITINFO]
{
UnitName=ARMMART;
...
VeterancyThresholds=6 12 18 24 30; // OTA default: 5 10 15 20 25
VeterancyAccuracyBuffRate=3; // OTA default: 12
}
New Keys
- VeterancyThresholds:
Sets the number of kills required to reach each veterancy level (VetLevel).
Example: "6 12 18 24 30" means:
- 6 kills for VetLevel 1
- 12 kills for VetLevel 2
- 18 kills for VetLevel 3
- etc.
OTA's default thresholds are "5 10 15 20 25".
- VeterancyAccuracyBuffRate:
Controls how quickly a units weapon accuracy improves with kills, independently of veterancy levels.
- Accuracy starts at a factor of 1 with 0 kills.
- This factor increases by +1 every VeterancyAccuracyBuffRate kills.
- Formula: accuracyFactor = 1 + floor(kills / VeterancyAccuracyBuffRate)
- OTAs default rate is 12.
- Set to zero to disable accuracy buff altogether
Veterancy Effects (Unchanged)
This patch does NOT change what veterancy levels do, only how they are earned.
For reference, each VetLevel in OTA gives:
- Capture cost: +10% worker time needed to capture the unit
- Damage taken: -4% damage received
- Damage dealt: +6% damage dealt
- Target tracking: improved weapon target tracking (effect uncertain)
- Reload time: -6% weapon reload time
- Accuracy buff: improved firing accuracy (randomness reduced by an increasing factor)
Note: Reload time also appears to be affected by the units health.
Veterancy Limits
OTA limits:
- Capture cost: no limit
- Damage taken: up to 5 levels
- Damage dealt: up to 5 levels
- Target tracking: up to 1 level
- Reload time: up to 5 levels
- Accuracy buff: no limit
With this patch:
- Capture cost: no limit
Beyond the last specified threshold, kill requirements are extrapolated linearly from the last two thresholds.
- Damage taken: up to 25 levels or the number of VeterancyThresholds, whichever is lower
- Damage dealt: up to the number of VeterancyThresholds
- Target tracking: up to 1 level
- Reload time: up to 16 levels or the number of VeterancyThresholds, whichever is lower
- Accuracy buff: no limit
- Weapon TDF flags: nottoair, nottounderwater and surfacefire
Two new optional keys for weapon definition files (weapons/*.tdf) give mod developers
finer control over which unit types a weapon can target.
nottoair=1
The weapon cannot target or fire at flying units (units with an airborne movement state).
Useful for weapons that are physically implausible against air targets, such as depth charges
or large ballistic artillery.
Example:
[DEPTH_CHARGE]
{
...
nottoair=1;
}
nottounderwater=1
The weapon cannot target or fire at fully-submerged units (a target whose top is at or below
sea level, such as a dived submarine). Ordinary weapons already cannot reach underwater
targets; this flag is meant for waterweapon=1 weapons, letting them hit surface ships while
leaving submerged units to torpedoes and depth charges. It is the underwater mirror of
nottoair.
Example:
[NAVAL_GUN]
{
...
waterweapon=1;
nottounderwater=1;
}
surfacefire=1
Used together with waterweapon=1. Normally a water weapon can only target submarines and
other units that are at or below sea level. With surfacefire=1 the weapon can also target
surface units above sea level, such as hovercraft or land units near the shoreline.
Both auto-aim and manual targeting are affected.
Example:
[TORPEDO_SURFACE]
{
...
waterweapon=1;
surfacefire=1;
}
- Building rotation
While a building is selected for placement, press '/' to cycle through the
facings the unit allows. Shift may be held while pressing '/' so you can
rotate without lifting the line-build modifier. Most buildings only allow
their default facing, in which case the key does nothing. The rotate key
can be reassigned in the ctrl-f2 menu.
Alternatively, hold the snap-override key (default Alt — also configurable
in ctrl-f2) and scroll the mouse wheel: forward = counter-clockwise, back
= clockwise. This leaves plain mouse-wheel free for the megamap.
A third option is built into the build menu itself. Each rotatable
structure button has a small overlay marker on each cardinal it can
face (S = bottom edge, E = right, N = top, W = left). Click the
button on the corresponding edge to enter placement mode with that
rotation already chosen — clicks in the centre of the button select
the unit normally and keep the previously chosen rotation. Tick or
un-tick "Build menu rotation overlay" in the ctrl-f2 menu to enable
or disable the overlay (when off, the build menu is stock vanilla
and clicks behave as if it were never installed).
Mod authors can replace the built-in chevron art by dropping a 4-
frame GAF at anims/buildrotate.gaf beside their other animations.
Frames are interpreted in the order S, E, N, W (matching the
rotation index), and each frame's hotspot is anchored just inside
the cardinal margin band of the build button so the artwork sits
cleanly inside the button rather than straddling the edge. An
optional second file anims/buildrotateclick.gaf (also 4 frames in
the same order) is blitted in place of the idle GAF for the brief
click-feedback flash; if absent, no flash is rendered (mods opting
into a custom GAF need to ship the companion click GAF themselves
if they want one). When neither GAF loads the built-in chevrons
are used. A reference generator and example .gaf files live under
tools/make_buildrotate_gaf.py in the source tree.
Mod developers opt-in per unit by adding a "Rotations=" key to the
[UNITINFO] section of the FBI listing the cardinal letters they want
to allow, e.g.
[UNITINFO]
{
...
Rotations=SENW;
}
Limitation: a few mods script their Create() function to forcibly TURN
the unit body (e.g. so structures face the centre of the map). Such
scripts run after the build cursor's rotation is applied and overwrite
it, so the Rotations= key has no visible effect on those units.
- Nanoframe ghost preview
A small green animated preview of the building you're about to place
is drawn inside the build rectangle. It rotates in step with the
rotate-build key, and disappears on red (can't-build) squares. When
shift-line / shift-row building, the preview is shown at every
rectangle in the row.
Mod authors with upgrade-style units (where the 3DO model contains
both the basic and upgraded geometry, and the COB script controls
visibility at runtime) can list the pieces that should appear in the
preview by adding a "PreviewPieces=" key to [UNITINFO]:
[UNITINFO]
{
...
PreviewPieces=base, turret, sleeve, barrel, cover;
}
Names are matched case-insensitively against 3DO piece names; comma,
space, or semicolon may be used as separators. When the key is set,
ONLY listed pieces are rendered. When the key is omitted (the usual
case), every piece is rendered minus a small hardcoded set of
cosmetic / firing-effect names (flare, flash, muzzle, fire, flame,
wake).
Per-rotation overrides are also available — useful when the visible
pieces should differ by facing. Use any of:
PreviewPiecesS=... facing south (rotation 0)
PreviewPiecesE=... facing east (rotation 1)
PreviewPiecesN=... facing north (rotation 2)
PreviewPiecesW=... facing west (rotation 3)
Lookup order for the active rotation:
1. PreviewPieces<S|E|N|W>= if set (non-empty), uses ONLY that list.
2. PreviewPieces= the default for every rotation.
3. neither set every piece minus the ephemeral filter.
For units whose Create() script auto-rotates the structure toward
the nearest enemy Commander, the preview can be made to face the
same direction — preventing the jarring snap when the build commits
— by adding:
[UNITINFO]
{
...
PreviewFaceOpponent=1;
}
At each preview frame we find the nearest enemy commander to the
build cursor (each enemy player's first unit slot, which is the
commander in all but pathological cases), and snap the line from
the cursor to that commander to the nearest cardinal (S / E / N /
W). PreviewFaceOpponent overrides the Rotations= restriction —
setting this key is the author's explicit signal that the unit's
heading is script-driven, so the preview must face whichever
cardinal the script will pick regardless of what Rotations= permits
the player to cycle through.
To avoid leaking enemy positions through fog-of-war scanning, the
override only applies when the build cursor is within the actual
builddistance of one of the local player's selected, completed
construction units (each builder gets its own threshold from its
FBI builddistance=). Outside that radius the preview falls back to
the player's rotate-build selection — same as if PreviewFaceOpponent
were unset.
Falls back to the player's rotate-build selection in single-player
or any case where no enemy commander can be found (e.g. all enemies
dead).
Mod authors who want the preview to display a completely different
model than the unit's actual Object3D= (e.g. a simplified silhouette,
or the upgraded form of a unit whose 3DO bundles multiple variants)
can name an alternative 3DO with a "PreviewObject3D=" key:
[UNITINFO]
{
...
PreviewObject3D=corarmvp_preview;
}
The value is a 3DO base name (no extension); the file is loaded from
the HPI archive at objects3d/<name>.3DO on first use and cached
for the rest of the game session. All other preview FBI keys
(PreviewPieces, PreviewFaceOpponent, etc.) apply to this overridden
model — piece-name whitelists are matched against the OVERRIDE 3DO's
piece names, not the unit's real one.
If the named 3DO can't be found in the HPI, a warning is logged to
tdrawlog.txt and the preview falls back to the unit's real model;
no other behaviour is affected.