- •
Fixed an issue where units and enemies struggled to ascend small hills or plateaus (such as the raised ground around the Village Plaza), eliminating false sideways wall deflections on walkable floor slopes, increasing traversable slope angles to 60 degrees with constant uphill walking speed, and expanding navmesh slope and climb limits.
- •
Fixed units and enemies wedging or freezing against building corners and walls by expanding navmesh obstacle carving to match physical agent radii, eliminating 3D vertical offset squashing on planar navigation directions, preventing deadlocks with full-speed perpendicular wall sliding, and adding proactive stuck recovery for non-combat patrol states.
- •
Fixed an issue where units and enemies could freeze in place and refuse to advance toward buildings or combat targets by ensuring standby holding behavior strictly requires physical arrival at an assigned standoff slot, aligning ranged unit slot queries with preferred attack ranges, and guaranteeing queued units advance immediately when frontline combat slots open up.
- •
Fixed an issue where Rock Golem's Colossal Crush and Crag Cleave failed to damage player units due to physics area culling, and significantly boosted visual impact with high-visibility dust shockwaves, flying rock debris, and ground cracks.
- •
Fixed a runtime crash when player buildings were destroyed by correctly retrieving obstacle footprint dimensions from `nav_obstacle_size` on `BuildingData` rather than `footprint_size`, ensuring smooth collapse animations and dust shock ring effects play properly.
- •
Fixed an issue where the Bandit's Healing Vapor Bomb failed to throw when engaging distant enemies by evaluating distance to the wounded ally rather than the enemy combat target, snapped the restorative green gas impact effect and slime decal to ground level across a full 6-meter area, and added live real-time action cooldown countdown timers to the unit inspection tooltip.
- •
Fixed missing and uncolored floating combat numbers for DoT (Damage over Time) and HoT (Heal over Time) sources, mapped all 10 damage types (including Disease for Mummy Rot, Fire, Frost, Lightning, Arcane, Poison, and Siege) to vibrant distinct floating text colors, added floating status text indicators (Chilled, Snared, Stunned, Poisoned, Burning, Diseased, Regen), ensured buildings and structures are completely immune to snares/slows/chills/stuns without turning white, and upgraded character status visuals to additive mesh overlays to preserve underlying textures.
- •
Fixed an engine error in BountyManager and combat targeting where accessing global positions of destroyed, despawned, or tree-exiting entities triggered `!is_inside_tree()` warnings.
- •
Fixed an engine TypedArray validation error in AuraComponent where periodic damage ticking (such as Mummy Rot Aura) attempted to erase previously freed target instances from typed arrays, cleanly purging destroyed units with array filters and guarding object validations across components.
- •
Fixed Fog of War visual reveal radius clearing only half of unit perception range (5m vs 10m) due to sprite diameter scaling math, synchronizing visual FoW clearing with sensory vision range, and resolved enemy models remaining concealed or invisible while in combat on vision borders by implementing 5-point perimeter extent sampling in the visibility component.
- •
Fixed an issue where Frostbolt slow and snare effects failed to wear off units by migrating status effect slow tracking to deterministic physics frame processing, ensuring accurate modifier removal, and automatically cleansing combat debuffs when units rest and recover at the town plaza. Also resolved Poacher Warriors freezing or stalling without attacking by tuning primary Cleave cooldown to a fluid 1.8s rhythm, standardizing melee ability reach to 2.2m, and prioritizing martial attacks over buff shouts.
- •
Fixed an issue preventing Level 1 from launching by correcting mission objective target identifiers to match Undead Crypt spawners, dynamically scaling base claim exclusion zones on small maps to allow secondary spawner placement, and expanding dry land margins.
- •
Fixed a UnitStateMachine FSM error ("Attempted to transition to unknown state: StunnedState") occurring when an enemy unit landed a stun or stagger effect (such as Pommel Strike or Thunder Wave) on a player unit by mounting the StunnedState node under FSM in BaseUnit.tscn.
- •
Fixed a runtime GDScript error in StatusEffectComponent when DoT damage ticked after the attacking unit had been freed by safely sanitizing attacker instance references, fixed enemy mages dealing invisible direct damage by instantiating fire, frost, blood, and lightning spell projectile and beam visuals, resolved wounded units twitching or remaining stuck at the town plaza while healing by adding a self-evaluating stationary resting behavior state that automatically exits upon reaching healthy threshold, and added clean transparent backgrounds to objective checkmark and cross UI icons.
- •
Fixed an issue where Rogues froze outside melee range while stealthed without attacking by correcting a navigation arrival bug that stopped flanking units in front of enemies, transitioning Rogue stealth management to out of combat, and ensuring pure melee stealthed units physically navigate behind targets on foot before striking. Removed teleportation/warp mechanics from Rogue (strictly preserving Shadow Warp for the Nightblade), and tuned Rogue attacks for fast, low-damage skirmishing with 8.0 damage / 0.6s cooldown Dagger Strikes and a 10.0 damage melee Backstab opener.
- •
Fixed an issue where destroying an enemy spawner awarded 2 points toward 'Destroy Strongholds' objectives and 1 point toward 'Kill Enemies' objectives by eliminating a duplicate `entity_died` broadcast in `SpawnerBase.gd`, enforcing strict mutual exclusivity between spawner and unit kill sensors in `EliminateEntitiesTracker.gd`, and adding guards against redundant death triggers.
- •
Fixed an issue where yellow treasure markers and dead unit/enemy pips remained frozen on the minimap in inactive fog by enforcing strict active-vision filtering for dynamic drops, immediately removing dead entities from unit and enemy tracking groups upon death, and instantly cleaning up bounties on dead targets.
- •
Fixed a rendering engine error (`material_casts_shadows` null material) caused by dynamic material allocations and transient mesh cleanup during combat VFX, stealth toggles, status effect tints, and bounty collections by caching persistent materials and safely detaching material overrides before freeing geometry instances.
- •
Tuned Bandit preferred combat range to 4.5m (comfortably inside their 6.0m ability action envelope), aligned ability-readiness range requirements in behavior tree combat conditions, and added line-of-sight target filtering to prevent frontline units from bypassing blocking spawners to chase obstructed enemies.
- •
Resolved combat range edge jitter and stutter-stepping for ranged and mid-ranged units (such as Bandits, Elementalists, and Summoners) by positioning standoff formation rings comfortably inside maximum attack ranges, harmonizing range evaluation tolerances across behavior trees and movement components, and validating ability readiness upon reaching navigation destinations.
- •
Fixed an issue where melee units (such as Berserkers) could get stuck against enemy spawners while pursuing enemies behind them by adding line-of-strike clearance validation in PackNavigationManager, enforcing strict combat-range arrival requirements, and setting safe spawn offsets outside obstacle carving zones.
- •
Fixed an issue where units (such as Bandits depositing gold or attacking structures) could become stuck against building corners and navigation obstacles by calculating true corner bounding radii, validating standoff slots outside carved obstacle areas, and ensuring uninterrupted pathing around structures.
- •
Fixed melee unit and enemy tunnel-vision pathing and congestion by adding 3-ray obstacle feeler steering to swing wide around allies and obstacles, dynamic self-defense retaliation upon taking damage, in-movement opportunity switching to engage nearby threats, and automatic unblocked flank slot allocation when obstructed.
- •
Fixed an issue where the collapsed Objectives Panel and transparent UI containers in the upper-left of the screen blocked clicks from reaching terrain, buildings, and bounties by setting mouse filters to ignore clicks on non-visible containers.
- •
Fixed an issue where clicking on a player-owned building under attack with an active defense bounty opened the modify bounty dialog instead of selecting the building; player buildings now prioritize building selection to hire units and place buildings, and active defense bounties are accessed via direct floating marker clicks or a sleek, non-intrusive defense banner above the action grid.
- •
Resolved combat engagement jitter, stutter-stepping, and stalling near buildings for Berserker, Rogue, Bandit, Nightblade, and enemy melee units by eliminating double-offset navigation slot distances, aligning attack range tolerances in the Ability Picker, caching perimeter slot angles across obstacle corners, separating melee and ranged formation slot categories, and ensuring melee units always push past backline casters to close the gap into melee range.
- •
Fixed an issue where zooming the camera at minimum or maximum zoom boundaries caused the camera to drift across the map.
- •
Fixed a Godot AnimationTree mixer error (`make_animation_instance: Condition "animation.is_null()" is true`) by pre-initializing state machine animation nodes and blend spaces before activating the tree, resolving non-existent animation clips across all unit scenes, and adding self-healing fallback logic to UnitAnimationComponent.
- •
Fixed an issue where SFX volume settings had no effect on game notifications, HUD error buzzers, unit gold deposit sounds, or combat impacts by routing all sound effects to the dedicated SFX audio bus.
- •
Fixed a performance issue where the colorblind filter performed a full-screen shader copy on every frame even when disabled; the filter is now completely hidden when inactive.
- •
Fixed an issue where creating or updating a bounty while a building was selected would draw the bounty UI directly over the actions panel without clearing or hiding the action buttons.
- •
Fixed an issue where Rogues and melee units would freeze facing enemies at a distance without approaching into melee range due to utility buff ranges (such as Stealth) corrupting melee attack range checks.
- •
Implemented a data-driven preferred combat range system and ability range classification flags, allowing melee units with long-range opening abilities or self-buffs to continue closing the gap to their preferred melee distance (~2.0m).
- •
Fixed an issue where units would experience a delay when switching targets upon killing an enemy, walk away toward distant bounties before realizing nearby threats were present, or freeze for 2 seconds due to artificial target loss pauses.
- •
Fixed a bug where units traveling toward non-combat destinations would latch onto stale combat targets, causing units (such as the Psychic) to slide across the map while tracking distant enemies and displaying phantom combat status text.
- •
Fixed building placement validation where units underneath the placement ghost did not turn the building invalid/red by enabling Area3D detection on character HitboxComponents, adding direct spatial unit checks, and updating ghost validity checks every frame during placement mode.
- •
Fixed an issue where units and enemies separated by buildings would stall in standoff positions by validating combat slots with multi-angle radial searches around targets and evaluating physical entity strike range on arrival.
- •
Fixed an issue where units could get hung up against building edges by dynamically computing NavigationObstacle3D carving bounds from physical CollisionShape3D extents with safety margins, and implementing direct collision tangent deflection for corner sliding.
- •
Fixed a runtime GDScript error in SpawnerBase._ready() by aligning SpawnerData property accesses (max_health, base_armor_type, passive_healing_amount/interval) with HealthComponent.initialize().
- •
Fixed an issue where units would freeze in place during combat without attacking nearby enemies due to mismatched melee condition ranges and double standoff distance offsets.
- •
Fixed a typed array mismatch runtime error during building placement in Barracks and Slums addon visual components.
- •
Fixed a scene parse error in Psychic.tscn by placing newly attached ability and barrier component resource tags in the file header, restoring downstream resource loading for Barracks, Hearthstone Plaza, and level startup.
- •
Fixed an issue where procedural level generation would fail to start levels and exhaust re-seed attempts by ensuring player-buildable objectives (such as the Village Plaza) are excluded from at-start spawner pre-validation.
- •
Fixed an issue where Nightblade, Bandit, Berserker, and Psychic froze during combat by populating valid animation clip names (e.g. `Thrust_Slash`, `Double_Blade_Spin`) in their ability files and configuring `UnitAnimationComponent` arrays.
- •
Fixed a runtime GDScript error in `ShadowWarpVFX.gd` when spawning Nightblade's ghostly echo trail echos by replacing invalid `set_delay` call on `Tween` with `tween_interval`.
- •
Fixed an issue where Nightblade got locked in stealth unable to attack or exit stealth by ensuring attack actions immediately break stealth and removing front-attack positioning blocks on stealthed units.
- •
Reverted unintended modifications to Rogue (`Rogue.tscn` and `RogueData.tres`), restoring original visual model attachments and unit data properties.
- •
Fixed a bug where Warriors would walk inside enemy spawner buildings by dynamically adding the building's radius to their navigation agent's target desired distance. Skeletons also now correctly spawn outside the radius of the spawner building instead of inside its mesh.
- •
Fixed a core targeting issue where Warriors would fail to switch targets from spawners to skeletons and sometimes abandon combat. Enemy spawners are now correctly classified as buildings across all AI combat checks, allowing units to properly engage dynamic threats and path without getting stuck.
- •
Fixed a console error where the unit information tooltip UI would attempt to attach itself to the scene tree improperly during teardown.
- •
Fixed defense bounty markers (cyan) persisting on buildings indefinitely after attackers were killed, and explore bounty markers (gold) sometimes remaining in the world after being claimed by units.
- •
Fixed placing a bounty on unexplored fog that happened to overlap a hidden enemy spawner revealing the spawner's position as a red kill bounty instead of treating it as an explore bounty.
- •
Fixed save/load system where loading a saved game caused buildings to lose track of their hired unit counts, showing 0/5 instead of the correct numbers. Also fixed units losing carried gold, building production queues failing to restore active training progress, restored units spawning frozen at origin coordinates without active AI, enemy spawners re-triggering burst waves on load, and raid difficulty scaling resetting to Day 1 values.