mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2026-10-02 10:53:44 +00:00
The client's TacArcBehavior::Cast (0x00fb2d10) sorts the targets in the arc nearest first, or by weight when distance_weight or angle_weight is set (sortWithWeights, 0x00f58cd0: distance_weight * (max range - distance) / max range + angle_weight * (180 - angle) / 180, heaviest first). With use_attack_priority, SortByAttackPriority (0x00f72900) then buckets them by GetAttackPriority, lowest first, keeping that order inside each bucket; only the DestroyableComponent answers it, and an object without one counts as 1. DoHit keeps the first max targets. Nothing else ranks targets: enemies are taken over nearer smashables only because their attack_priority (1) is lower than most smashables' (10). use_attack_priority is off when a behavior does not set it (TacArcBehavior:: Initialize, 0x00f9b980), as before. The server sorted by distance only and ignored the flag, so a one-target swing hit the nearest crate instead of the enemy behind it. OrderTargets now does the client's ordering, with equal targets in ascending id order (the order the client's id set hands them over in); the chosen targets are still written in ascending id order (issue 1045). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>