debug: OMNI-HACK tagcheck — 1s after each auto set_tag, log whether the tag actually applied and whether skull entered hacking state (selection itself confirmed working: 16 picks incl 7m; skull only flies on-screen targets) + blacklist entries carry breed name
This commit is contained in:
@@ -235,7 +235,7 @@ local function find_hackable_target_unit_omni()
|
|||||||
end
|
end
|
||||||
|
|
||||||
local player_position = Unit_world_position(player_unit, 1)
|
local player_position = Unit_world_position(player_unit, 1)
|
||||||
local selected_unit, selected_distance
|
local selected_unit, selected_distance, selected_name
|
||||||
local diag_total
|
local diag_total
|
||||||
if mod_settings.debug_mode then
|
if mod_settings.debug_mode then
|
||||||
diag_total = 0
|
diag_total = 0
|
||||||
@@ -255,6 +255,9 @@ local function find_hackable_target_unit_omni()
|
|||||||
end
|
end
|
||||||
if distance <= OMNI_HACK_RANGE and (not selected_distance or distance < selected_distance) then
|
if distance <= OMNI_HACK_RANGE and (not selected_distance or distance < selected_distance) then
|
||||||
selected_unit, selected_distance = unit, distance
|
selected_unit, selected_distance = unit, distance
|
||||||
|
if diag_samples then
|
||||||
|
selected_name = breed_data.name
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -270,31 +273,41 @@ local function find_hackable_target_unit_omni()
|
|||||||
end
|
end
|
||||||
if selected_unit then
|
if selected_unit then
|
||||||
-- don't retarget the same unit forever if the game refuses to accept the tag
|
-- don't retarget the same unit forever if the game refuses to accept the tag
|
||||||
mod._hack_blacklist[selected_unit] = HACK_RETRY_DELAY
|
mod._hack_blacklist[selected_unit] = { t = HACK_RETRY_DELAY, n = selected_name }
|
||||||
end
|
end
|
||||||
return selected_unit, selected_distance
|
return selected_unit, selected_distance
|
||||||
end
|
end
|
||||||
|
|
||||||
local hack_interval = 0
|
local hack_interval = 0
|
||||||
|
local hack_check = nil
|
||||||
function mod:auto_hack(dt, t, fixed_frame)
|
function mod:auto_hack(dt, t, fixed_frame)
|
||||||
if not mod_settings.auto_hack or (mod_settings.disable_auto_hack_for_noospheric_command and context.has_noospheric_command) or context.class_name ~= "cryptic" or not context.has_servo_skull then
|
if not mod_settings.auto_hack or (mod_settings.disable_auto_hack_for_noospheric_command and context.has_noospheric_command) or context.class_name ~= "cryptic" or not context.has_servo_skull then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
|
for unit, entry in pairs(mod._hack_blacklist) do
|
||||||
|
entry.t = entry.t - dt
|
||||||
|
if entry.t <= 0 then
|
||||||
|
mod._hack_blacklist[unit] = nil
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if hack_check then
|
||||||
|
hack_check.ttl = hack_check.ttl - dt
|
||||||
|
if hack_check.ttl <= 0 then
|
||||||
|
if mod_settings.debug_mode then
|
||||||
|
local smart_tag_system = context.smart_tag_system
|
||||||
|
mod:diag(string.format("OMNI-HACK-DIAG tagcheck %s alive=%s tag_applied=%s skull_hacking=%s", tostring(hack_check.n), tostring(HEALTH_ALIVE[hack_check.unit] == true), tostring(smart_tag_system and smart_tag_system:unit_tag(hack_check.unit) ~= nil), tostring(mod:is_servo_skull_hacking())))
|
||||||
|
end
|
||||||
|
hack_check = nil
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
if hack_interval > 0 then
|
if hack_interval > 0 then
|
||||||
hack_interval = hack_interval - dt
|
hack_interval = hack_interval - dt
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
for unit, remaining in pairs(mod._hack_blacklist) do
|
|
||||||
local age = remaining - dt
|
|
||||||
if age <= 0 then
|
|
||||||
mod._hack_blacklist[unit] = nil
|
|
||||||
else
|
|
||||||
mod._hack_blacklist[unit] = age
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
if mod:is_servo_skull_hacking() then
|
if mod:is_servo_skull_hacking() then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
@@ -324,6 +337,7 @@ function mod:auto_hack(dt, t, fixed_frame)
|
|||||||
|
|
||||||
hack_interval = 1
|
hack_interval = 1
|
||||||
smart_tag_system:set_tag(HACK_TAG_NAME, player_unit, target_unit)
|
smart_tag_system:set_tag(HACK_TAG_NAME, player_unit, target_unit)
|
||||||
|
hack_check = { unit = target_unit, ttl = 1.0, n = mod._hack_blacklist[target_unit] and mod._hack_blacklist[target_unit].n or "?" }
|
||||||
end
|
end
|
||||||
|
|
||||||
local cancel_interval = 0
|
local cancel_interval = 0
|
||||||
|
|||||||
Reference in New Issue
Block a user