weekly-2026-08-28
·
125 commits
to main
since this release
Changelog
- bugfix(missileaiupdate): Diving missiles no longer miss moving targets (TheSuperHackers#3192)
- tweak(w3ddisplay): Set texture bit depth to display bit depth (TheSuperHackers#3181)
- refactor(gamestate): Decouple result handling from game state (TheSuperHackers#3000)
- bugfix(modulefactory): Fix mismatch caused by W3D module additions in Generals (TheSuperHackers#3180)
- bugfix(shell): Prevent menu crashing by avoiding initializing layouts during teardown (TheSuperHackers#3158)
- bugfix(selection): Prevent objects from being appended to a selection if they are not mass-selectable (TheSuperHackers#3169)
- refactor(scorch): Store scorch structs in a deque (TheSuperHackers#3159)
- refactor(scorch): Reorganize scorch deduplication and buffer writes (TheSuperHackers#3159)
- chore(scorch): Remove debug sample marks (TheSuperHackers#3159)
- fix(scorch): Releasing old scorch buffers before allocation (TheSuperHackers#3159)
- bugfix(scorch): Deduplicate before evicting the oldest scorch (TheSuperHackers#3159)
- fix(saveload): Use getFinalOverride in WeaponSet xfer load to match Object constructor (TheSuperHackers#2160)
- unify(particlesys): Move W3DParticleSys.h to Core (TheSuperHackers#3172)
- bugfix(contain): Preserve occupants when transferring assets to allies (TheSuperHackers#3124)
- bugfix(aiupdate): Let Tunnel Network passengers exit from any Tunnel Object again (TheSuperHackers#3136)
- refactor(particlesys): Cleanup retail smudge particle type identification (TheSuperHackers#3162)
- test(neutronmissile): Add debug draw for nuke missile radius (TheSuperHackers#3160)
- feat(string): Implement UTF-8 string conversion and validation functions (TheSuperHackers#2528)
- bugfix(object): The KINDOF_NO_SELECT flag now prevents an object from being selected (TheSuperHackers#3125)
- bugfix(scorch): Fix diffuse color calculation of scorches (TheSuperHackers#3153)
- perf(smudge): Early return W3DSmudgeManager::render when no smudges are present (TheSuperHackers#3140)
- bugfix(ai): Attacking infantry no longer attempt to path to their targets when force-evacuated from a vehicle (TheSuperHackers#3098)
- bugfix(selection): Fix group index range in SelectionTranslator::onMetaViewTeam() (TheSuperHackers#3139)
- bugfix(chinookaiupdate): Helicopter enter commands are now ignored if the target to enter is invalid or ourselves (TheSuperHackers#3115)
- bugfix(horde): Prevent dead units from being considered for horde membership (TheSuperHackers#3067)
- unify(shell): Move Shell to Core (TheSuperHackers#3070)
- unify(shell): Merge Shell from Zero Hour (TheSuperHackers#3070)
- perf(script): Reduce cost of ScriptEngine::findScript() by around 85% (TheSuperHackers#3096)
- bugfix(heightmap): Fix ray casting in BaseHeightMapRenderObjClass::Cast_Ray (2) (TheSuperHackers#2869)
- refactor: Simplify slot-to-player lookups (TheSuperHackers#3034)
- bugfix(scorch): Prevent volatile scorches from evicting static map scorches (TheSuperHackers#3114)
- bugfix(pathfinder): Prevent a retail crash where a pathfindCell has a dangling linked list pointer (TheSuperHackers#3113)
- bugfix(pathfinder): Prevent a retail crash where the head of the closed list has no associated m_info (TheSuperHackers#3113)
- bugfix(milesaudiomanager): Prevent dangling pointer to AudioEventRTS in PlayingAudio when handing it over to a new AudioRequest after a call to MilesAudioManager::startNextLoop() (TheSuperHackers#2774)
- refactor(audioevent): Add RefCountClass to DynamicAudioEventRTS (TheSuperHackers#2774)
- bugfix(scorch): Update scorch texture mip quality when changing texture quality setting (TheSuperHackers#3119)
- unify(drawable): Merge most of Drawable and Locomotor (TheSuperHackers#3097)
- ci(vcpkg): Limit setup to vcpkg presets (TheSuperHackers#3128)
- bugfix(jetaiupdate): Helicopters no longer land or remain landed at destroyed Airfields (TheSuperHackers#3080)
- tweak(gui): Move animated GUI window smoothly at higher than 30 frames per second (TheSuperHackers#3061)
- refactor(network): Remove dynamic allocations for NetPacket (TheSuperHackers#2866)
- refactor(baseheightmap): Extract scorch rendering from BaseHeightMap into new W3DScorch (TheSuperHackers#3017)
- bugfix(aiupdate): Don't process invalid exit commands (TheSuperHackers#3089)
- bugfix(jetaiupdate): Save helicopter landing position (TheSuperHackers#3077)
- bugfix(stickybomb): Allow Booby Traps to be placed on a previously booby-trapped object (TheSuperHackers#3060)
- fix(namekey): Canonicalize lowercase name keys (TheSuperHackers#3082)
- bugfix(contain): Allow passengers to exit immobilized Battle Buses (TheSuperHackers#3041)
- tweak(gui): Change LAN emote buttons to chat buttons and implement /me emote text command in LAN chats (TheSuperHackers#1821)
- refactor: Use slot indices for player conversions (TheSuperHackers#3033)
- chore: Remove unused W3DCustomEdging class (TheSuperHackers#3079)
- bugfix(jetaiupdate): Fix aircraft falling to their death if their Airfield is lost during their return flight (TheSuperHackers#3076)
- unify(w3ddevice): Move W3DDevice/Common to Core (TheSuperHackers#3073)
- unify(w3ddevice): Merge W3DModuleFactory from Zero Hour (TheSuperHackers#3073)
- unify(w3ddevice): Move W3DDevice/GameClient/GUI to Core (TheSuperHackers#3074)
- unify(gui): Move EstablishConnectionsMenu to Core (TheSuperHackers#3069)
- refactor(w3dview): Migrate raw pointers to RefCountPtr (TheSuperHackers#1763)
- unify(gui): Move GUICallbacks to Core (TheSuperHackers#3068)
- fix(client): Prevent movies from playing in headless mode (TheSuperHackers#3066)
- chore: Update retail behaviour preservation flags (TheSuperHackers#3065)
- feat(specialpower): Add INI option to start a special power without its initial reload time (TheSuperHackers#3054)
- refactor(refcountptr): Simplify RefCountPtr's Create_No_Add_Ref, Create_Add_Ref and add Assign_No_Add_Ref, Assign_Add_Ref (TheSuperHackers#3058)
- chore(refcountptr): Include ref_ptr.h in WWCommon.h (TheSuperHackers#3059)
- fix(spectregunship): Decouple particle system in SpectreGunshipUpdate::update from logic crc (TheSuperHackers#3055)
- bugfix(aiupdate): Prevent units from deploying when moving (TheSuperHackers#3016)
- tweak(gui): Decouple GUI window-move animations from the render frame rate (TheSuperHackers#2833)
- unify(win32device): Move Win32Device to Core (TheSuperHackers#3046)
- unify(win32device): Merge Win32GameEngine from Zero Hour (TheSuperHackers#3046)
- bugfix(gamefont): Lift the upper font point size limit of 100 (TheSuperHackers#3051)
- unify(precompiled): Move Precompiled to Core (TheSuperHackers#3050)
- unify(precompiled): Merge Precompiled from Zero Hour (TheSuperHackers#3050)
- feat(object): Implement KINDOF_NO_ATTACK_WARNING to suppress alarm events on object attacks (TheSuperHackers#2862)
- unify(bezier): Move Bezier to Core (TheSuperHackers#3047)
- bugfix(shroud): Fix texture access bounds in W3DShroud::getShroudLevel() (TheSuperHackers#3045)
- unify(commandline): Move CommandLine to Core (TheSuperHackers#3037)
- unify(common): Move DamageFX, Dict, DiscreteCircle, Language, MessageStream... to Core (TheSuperHackers#3038)
- chore: Correct the game title in Copyright headers of CommandLine source files (TheSuperHackers#3042)
- unify(ww3d2): Move ww3d to Core (TheSuperHackers#3012)
- unify(ww3d2): Merge ww3d (TheSuperHackers#3012)
- refactor(commandxlat): Split evaluateContextCommand into per-command handlers (TheSuperHackers#3008)
- chore: Restore full relative include visibility in WWVegas libraries (TheSuperHackers#3032)