diff --git a/ModularBot_garage/src/ModularBot.nim b/ModularBot_garage/src/ModularBot.nim index 9818f32..bf4c057 100644 --- a/ModularBot_garage/src/ModularBot.nim +++ b/ModularBot_garage/src/ModularBot.nim @@ -174,6 +174,8 @@ method onBotDeath*(bot: ModularBot, e: BotDeathEvent) = bot.enemyTracker.markDead(e.victimId) if bot.enemyCount > 0: dec bot.enemyCount + if e.victimId == bot.currentTargetId: + bot.isRamming = false method onGameStarted*(bot: ModularBot, e: GameStartedEventForBot) = # minNumberOfParticipants == maxNumberOfParticipants for fixed battles; self is -1 @@ -256,13 +258,14 @@ method run*(bot: ModularBot) = setRadarTurnRate(radarRate) go() - # --- Target selection (sticky) --- - let candidateId = selectTarget(bot.enemyTracker, getX(), getY(), tmClosest) - if bot.shouldSwitchTarget(candidateId): - if candidateId != bot.currentTargetId: - bot.currentTargetId = candidateId - bot.targetSwitchTick = bot.tick - bot.printConfig("target") + # --- Target selection (sticky) --- lock target during ram to prevent dangerous switch + if not bot.isRamming: + let candidateId = selectTarget(bot.enemyTracker, getX(), getY(), tmClosest) + if bot.shouldSwitchTarget(candidateId): + if candidateId != bot.currentTargetId: + bot.currentTargetId = candidateId + bot.targetSwitchTick = bot.tick + bot.printConfig("target") # --- Aim + fire from tracked state (not scan event) --- let tid = bot.currentTargetId