"""Ab und zu furzen und frech lachen."""

from __future__ import annotations

import random

from jam.brain import JamState

FART_BUBBLE = ["*pffffft*", "*pröpp*", "*bauz*", "💨 …"]

FART_LAUGH_LINES = [
    "HÄHÄHÄHÄ! Boah, das war LAUT!",
    "PFFFFT— HÄHÄHÄ! Ich muss lachen!",
    "Hehehehe! Ups… nein, Absicht! HÄHÄHÄ!",
    "Boah, das saß! Hähähä! Kann nicht aufhören!",
    "Ich lach mich schlapp! Du riechst das, oder? HÄHÄHÄ!",
    "FRECH-MODUS: Laut gefurzt, laut gelacht!",
    "Hähähähä! Entschuldigung? Nö! HÄHÄHÄ!",
    "Monster-Lachen! HÄHÄHÄHÄ! Zu laut? Pech!",
    "Das war Kunst. HÄHÄHÄ! Du verstehst das nicht.",
    "Pffff— HÄHÄHÄHÄHÄ! Ich kann nicht mehr!",
    "Jam 1, Desktop-Luft 0. HÄHÄHÄ! Hehehe!",
    "LAUT pupsen, LAUT lachen – mein Tag ist gemacht! HÄHÄHÄ!",
]

FART_THOUGHTS = [
    "💭 Idee… gleich passiert was Unangenehmes. Für andere.",
    "💭 Bauch says yes. Sozial says nein. Bauch gewinnt.",
]


def fart_chance(state: JamState) -> float:
    if state.stage < 1:
        return 0.06
    frech = state.traits.get("frech", 0.35) if state.traits else 0.35
    base = 0.14 + frech * 0.24
    if state.happiness > 0.75:
        base += 0.08
    return min(0.42, base)


def fart_is_loud(state: JamState) -> bool:
    """Nur selten laut – sonst leises Furz/Lachen."""
    if state.stage < 3:
        return False
    return random.random() < 0.12


def pick_fart_bubble(state: JamState) -> str:
    if state.stage == 0:
        return random.choice(["*kleines poot*", "*blub*"])
    return random.choice(FART_BUBBLE)


def pick_fart_laugh(state: JamState) -> str:
    if state.stage <= 1:
        return random.choice(["Hehe!", "Hihi!", "Ups!"])
    return random.choice(FART_LAUGH_LINES)


def pick_fart_thought() -> str:
    return random.choice(FART_THOUGHTS)
