diff --git a/HSTracker/BobsBuddy/BobsBuddyInvoker.swift b/HSTracker/BobsBuddy/BobsBuddyInvoker.swift index 466a1b98..a4e2b5f1 100644 --- a/HSTracker/BobsBuddy/BobsBuddyInvoker.swift +++ b/HSTracker/BobsBuddy/BobsBuddyInvoker.swift @@ -826,10 +826,20 @@ class BobsBuddyInvoker { if friendly { let target = inputPlayer.secrets + MonoHelper.listClear(obj: target) + let params = UnsafeMutablePointer.allocate(capacity: 1) + let i32c = mono_get_int32_class() + for secret in game.player.secrets { - input?.addSecretFromDbfid(id: secret.id, target: target) + var obj: UnsafeMutablePointer? + params.pointee = Int32(secret.id) + + obj = mono_value_box(MonoHelper._monoInstance, i32c, params) + + MonoHelper.addToList(list: target, element: MonoHandle(obj: obj)) } - + params.deallocate() + let playerHand = inputPlayer.hand for e in gamePlayer.hand { diff --git a/HSTracker/Core/Extensions/Task.swift b/HSTracker/Core/Extensions/Task.swift index 4dec8f7d..366e8658 100644 --- a/HSTracker/Core/Extensions/Task.swift +++ b/HSTracker/Core/Extensions/Task.swift @@ -10,9 +10,9 @@ import Foundation @available(macOS 10.15, *) extension Task { - static func sleep(seconds: UInt64) async { + static func sleep(milliseconds: UInt64) async { do { - try await Task.sleep(nanoseconds: seconds * 1_000_000) + try await Task.sleep(nanoseconds: milliseconds * 1_000_000) } catch { logger.error(error) } diff --git a/HSTracker/Logging/Game.swift b/HSTracker/Logging/Game.swift index e20a941a..766de630 100644 --- a/HSTracker/Logging/Game.swift +++ b/HSTracker/Logging/Game.swift @@ -2613,14 +2613,20 @@ class Game: NSObject, PowerEventHandler { OpponentDeadForTracker.reset() var heroes = [Entity]() for _ in 0 ..< 10 { - await Task.sleep(seconds: 500) + await Task.sleep(milliseconds: 500) heroes = player.playerEntities.filter { x in x.isHero && (x.has(tag: .bacon_hero_can_be_drafted) || x.has(tag: .bacon_skin))} if heroes.count >= 2 { break } } - await Task.sleep(seconds: 500) + await Task.sleep(milliseconds: 500) + + var counter = 0 + while availableRaces == nil && counter < 5 { + await Task.sleep(milliseconds: 500) + counter += 1 + } await windowManager.battlegroundsSession.update() @@ -2642,7 +2648,7 @@ class Game: NSObject, PowerEventHandler { // Wait for the mulligan to be ready await waitForMulliganStart() - async let waitAndAppear: () = Task.sleep(seconds: 500) + async let waitAndAppear: () = Task.sleep(milliseconds: 500) var battlegroundsHeroPickStats: BattlegroundsHeroPickStats?