"""
Major Life Crisis Events
Severe negative events that significantly impact the player's life

Events:
- houseFireDamage: Home fire with major damage
- legalTrouble: Facing legal problems requiring decisions
- victimOfCrime: Being robbed and feeling unsafe
- majorAccident: Serious accident requiring long recovery
- naturalDisaster: Natural disaster affecting the area
"""

import random
from events.base import messageFunction, questionFunction, answerOption


def houseFireDamage(player, type='message'):
    """Home fire with major damage and belongings lost"""
    fname = 'houseFireDamage'
    check = fname not in player.events and player.c.ageYears >= 18 and player.c.ageYears <= 100 and 1 >= random.random()*5000
    message = "A fire damaged your home. Some of your belongings are gone forever."

    if check:
        player.events.add(fname)
        if player.c.money >= 5000:
            player.c.money -= 5000
        else:
            # Can't afford full amount
            player.c.money = 0
            player.c.stress += 20  # Additional stress from financial ruin
        player.c.happiness -= 45
        player.c.stress += 50

    return messageFunction(fname, message, player, check)


def legalTrouble(player, type='message', message=False, response=False):
    """Facing legal problems with different handling options"""
    fname = 'legalTrouble'
    check = fname not in player.askedQuestions and player.c.ageYears >= 16 and player.c.ageYears <= 100 and 1 >= random.random()*5000
    message = "You're facing legal problems. How do you handle it?"

    answerOptions = [
        answerOption('Hire expensive lawyer', '0', moneyCost=5000),
        answerOption('Public defender', '1'),
        answerOption('Represent yourself', '2', energyCost=50)
    ]

    if (type != 'answer'):
        return questionFunction(fname, message, player, check, answerOptions)
    elif (type == 'answer'):
        if (response['option'] == answerOptions[0].option):
            # Hired expensive lawyer
            player.c.stress += 30
            player.messageQueue.append("You hired an expensive lawyer to handle your legal troubles. The cost is high, but at least you have expert representation.")
        elif (response['option'] == answerOptions[1].option):
            # Public defender
            player.c.stress += 40
            player.messageQueue.append("You're using a public defender. They're overworked and you're stressed about the outcome.")
        elif (response['option'] == answerOptions[2].option):
            # Represent yourself
            player.c.stress += 50
            player.messageQueue.append("You decided to represent yourself in court. The stress of learning legal procedures on the fly is overwhelming.")


def victimOfCrime(player, type='message'):
    """Being robbed and feeling violated and unsafe"""
    fname = 'victimOfCrime'
    check = fname not in player.events and player.c.ageYears >= 14 and player.c.ageYears <= 100 and 1 >= random.random()*5000
    message = "You were robbed. You feel violated and unsafe."

    if check:
        player.events.add(fname)
        if player.c.money >= 800:
            player.c.money -= 800
        else:
            # Can't afford full amount
            player.c.money = 0
            player.c.stress += 20  # Additional stress from financial ruin
        player.c.happiness -= 35
        player.c.stress += 60  # Combined stress from crime and confidence loss

    return messageFunction(fname, message, player, check)


def majorAccident(player, type='message'):
    """Serious accident requiring months of recovery"""
    fname = 'majorAccident'
    check = fname not in player.events and player.c.ageYears >= 16 and player.c.ageYears <= 100 and 1 >= random.random()*5000
    message = "You were in a serious accident. Recovery will take months."

    if check:
        player.events.add(fname)
        player.c.health -= 50
        player.c.energy -= 60
        player.c.happiness -= 40

    return messageFunction(fname, message, player, check, moneyCost=3000)


def naturalDisaster(player, type='message'):
    """Natural disaster hitting the area causing chaos"""
    fname = 'naturalDisaster'
    check = fname not in player.events and player.c.ageYears >= 1 and player.c.ageYears <= 100 and 1 >= random.random()*5000
    message = "A natural disaster hit your area. Everything is chaotic and scary."

    if check:
        player.events.add(fname)
        player.c.stress += 45
        player.c.happiness -= 30
        if player.c.money >= 1000:
            player.c.money -= 1000
        else:
            # Can't afford full amount
            player.c.money = 0
            player.c.stress += 20  # Additional stress from financial ruin

    return messageFunction(fname, message, player, check)


__all__ = [
    'houseFireDamage',
    'legalTrouble',
    'victimOfCrime',
    'majorAccident',
    'naturalDisaster',
]
