"""Menschliches Timing statt Metronom.

Alle Eingabe- und Wartezeiten des Bots laufen durch dieses Modul, damit
Aktionsmuster serverseitig nicht als maschinengleiche Intervalle auffallen.
Mit TIBIAPILOT_HUMANIZE=0 wird alles deterministisch (Tests/Debugging).
"""
import os
import random
from time import sleep

HUMANIZE_ENV = 'TIBIAPILOT_HUMANIZE'


def enabled():
    return os.getenv(HUMANIZE_ENV, '1') != '0'


def pause(base):
    """Gaussverteilte Pause um `base` Sekunden (50 % bis 200 % davon)."""
    if base <= 0:
        return
    if not enabled():
        sleep(base)
        return
    sleep(min(max(random.gauss(base, base * 0.25), base * 0.5), base * 2))


def reaction():
    """Kleine Reaktionspause vor Klicks/Tasten (ca. 30–200 ms)."""
    if not enabled():
        return
    sleep(min(max(random.gauss(0.09, 0.03), 0.03), 0.2))


def stepPause():
    """Variable Mikropause zwischen einzelnen Maus-Schritten."""
    pause(0.006)


def jitterCoordinate(value, radius=2):
    """Zufälliger, mittig konzentrierter Offset für Zielkoordinaten."""
    if not enabled():
        return value
    return value + int(round(random.triangular(-radius, radius)))
