fix(homing): 抖动公式的整数除法加 @warning_ignore,消掉 INTEGER_DIVISION 告警

(bullet_idx * HOMING_RETRY_MS) / maxi(1, _active_count) 的截断是有意的 ——
抖动只需毫秒粒度的偏移,小数部分丢弃即所需语义。加注解让编辑器面板对
项目文件保持零告警,使验收标准⑩「无告警」真正成立。

行为不变(注解为编译期),复测:①②③ FAILS=0 / ah=0.25000 / max_step=0.050000
/ 速率 350.0000;1500 弹同帧集体失败的到期时刻跨度 223ms、222 个互异值,抖动照常生效。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-30 17:32:43 +08:00
co-authored by Claude Opus 5
parent 14136b1223
commit 4b09cd1064
+2
View File
@@ -260,6 +260,8 @@ func _apply_homing(bullet_idx: int, base: int, delta: float) -> void:
# 用「bullet_idx 在活跃弹数中的占比」而非 bullet_idx % HOMING_RETRY_MS:后者在 # 用「bullet_idx 在活跃弹数中的占比」而非 bullet_idx % HOMING_RETRY_MS:后者在
# 弹数少于窗口宽度时只铺开 _active_count 毫秒(20 颗弹 → 20ms ≈ 1.2 帧,等于没 # 弹数少于窗口宽度时只铺开 _active_count 毫秒(20 颗弹 → 20ms ≈ 1.2 帧,等于没
# 打散),占比式则不论弹数多少都铺满整窗。到期时刻落在 [200, 400) ms。 # 打散),占比式则不论弹数多少都铺满整窗。到期时刻落在 [200, 400) ms。
# 整数除法是有意的:抖动只需毫秒粒度的偏移,小数部分丢弃即所需语义
@warning_ignore("integer_division")
var jitter: int = (bullet_idx * HOMING_RETRY_MS) / maxi(1, _active_count) var jitter: int = (bullet_idx * HOMING_RETRY_MS) / maxi(1, _active_count)
# 取模在循环内不可达(bullet_idx < _active_count ⟹ jitter ≤ 199),仅作索引越界兜底 # 取模在循环内不可达(bullet_idx < _active_count ⟹ jitter ≤ 199),仅作索引越界兜底
cold["homing_retry_at"] = now + HOMING_RETRY_MS + jitter % HOMING_RETRY_MS cold["homing_retry_at"] = now + HOMING_RETRY_MS + jitter % HOMING_RETRY_MS