fix: 360 omni marking now enumerates smart-tag registry instead of physics sweep
linear_sphere_sweep returns only a capped hit table (no count) and its slots flood with world-geometry actors, starving real enemies behind the player (crash: nil num_hits compare; then silent no-marks). Candidates now come from smart_tag_system._unit_extension_data (alive, breed-typed, in range) — geometry can't interfere, LOS gates still apply unless omni_mark_ignore_los. OMNI-DIAG candidate/reject logging kept, gated on debug_mode.
This commit is contained in:
@@ -26,7 +26,7 @@ Only the exception tables need manual updates. All in `scripts/mods/AutoMark/tar
|
||||
- `ENEMY_EXTENTS` — melee-aim half-extents for big units (fallback = breed's own values, then 0.3)
|
||||
- `IGNORE_EXECUTION_ORDER_FORCE_MARK_BREED_NAMES` / `IGNORE_EXECUTION_ORDER_PRIORITY_BREED_NAMES` / `IGNORE_THREAT_PRIORITY_BREED_NAMES` — special-mechanic exceptions (netgunner, ritualists, grenadiers, bomber)
|
||||
- Hard-coded name/behaviour checks: `renegade_netgunner` (sticky targeting), `cultist_ritualist` / `chaos_mutator_ritualist` (ignore-unaggroed exemption), `chaos_poxwalker_bomber` (priority-0 default), dormant-daemonhost logic keyed off the `witch` breed tag
|
||||
- `360° marking` lives in `find_auto_mark_target_unit`: a full-sphere `linear_sphere_sweep` replaces the forward raycast when `omni_mark` is on (settings: `omni_mark`, `omni_mark_ignore_los`).
|
||||
- `360° marking` lives in `find_auto_mark_target_unit`: when `omni_mark` is on, candidates come from enumerating `smart_tag_system._unit_extension_data` (alive, `_target_type == "breed"`, in range) instead of the forward raycast — do NOT use `PhysicsWorld.linear_sphere_sweep` for this: it returns only a capped table (no count), floods slots with world-geometry actors, and starves real enemies. LOS gates still apply unless `omni_mark_ignore_los` (settings: `omni_mark`, `omni_mark_ignore_los`). With `debug_mode` on, logs `OMNI-DIAG` lines: candidate breeds per sweep + per-pass reject reasons.
|
||||
|
||||
## Procedure after a game update
|
||||
|
||||
|
||||
Reference in New Issue
Block a user