import random
class Personagem:
    Nome = ''
    
    #PRINCIPAIS
    Forca = 0
    Agilidade = 0
    Vitalidade = 0
    Inteligencia = 0
    Destreza = 0
    Sorte = 0
    #DERIVADOS
    Habilidade = 0
    Dano = 0
    Defesa = 0
    Esquiva = 0
    DanoMagico = 0
    DefesaMagica = 0
    ChanceAcerto = 0.00
    AcertoCritico = 0.00
    EsquivaPerfeita = 0.00
    #VIDA E PONTOS    
    Vida = Vitalidade*10
    Mana = Inteligencia*10
    VidaMaxima = Vitalidade*10
    ManaMaxima = Mana*10

    def __init__(self,nome,forca,agilidade,vitalidade,inteligencia,destreza,sorte):
        self.Nome = nome
        self.Forca = forca
        self.Agilidade = agilidade
        self.Vitalidade = vitalidade
        self.Inteligencia = inteligencia
        self.Destreza = destreza
        self.Sorte = sorte
        #DERIVADOS
        self.Habilidade = self.Destreza
        self.Dano = (self.Forca*random.randint(self.Habilidade,100))/100
        self.Defesa = (self.Forca*random.randint(self.Habilidade,100))/100
        self.Esquiva = (self.Agilidade*random.randint(self.Habilidade,100))/100
        self.DanoMagico = (self.Inteligencia*random.randint(self.Habilidade,100))/100
        self.DefesaMagica = (self.Inteligencia*random.randint(self.Habilidade,100))/100
        self.ChanceAcerto = 50+(self.Destreza/2)
        self.AcertoCritico = 20+(self.Sorte/2)
        self.EsquivaPerfeita = 10+(self.Sorte/2)
        #VIDA E PONTOS    
        self.Vida = self.Vitalidade*10
        self.Mana = self.Inteligencia*10
        self.VidaMaxima = self.Vitalidade*10
        self.ManaMaxima = self.Mana*10
        
    def AumentaAtributo(self,atributo,valor):
        if atributo.upper() == "FORCA":
            self.Forca += valor
        if atributo.upper() == "AGILIDADE":
            self.Agilidade += valor
        if atributo.upper() == "VITALIDADE":
            self.Vitalidade += valor
        if atributo.upper() == "INTELIGENCIA":
            self.Inteligencia += valor
        if atributo.upper() == "SORTE":
            self.Sorte += valor
    
    def DiminuiAtributo(self,atributo,valor):
        if atributo.upper() == "FORCA":
            self.Forca -= valor
        if atributo.upper() == "AGILIDADE":
            self.Agilidade -= valor
        if atributo.upper() == "VITALIDADE":
            self.Vitalidade -= valor
        if atributo.upper() == "INTELIGENCIA":
            self.Inteligencia -= valor
        if atributo.upper() == "SORTE":
            self.Sorte -= valor
            
    def DanoVida(self,valor):
        self.Vida -= valor
        print("%s: sofreu %d de dano(%d/%d)"%(self.Nome,valor,self.Vida,self.VidaMaxima))
    def RecuperaVida(self,valor):
        self.Vida += valor
        print("%s: recuperou %d de vida (%d/%d)"%(self.Nome,valor,self.Vida,self.VidaMaxima))

    def DanoMana(self,valor):
        self.Mana -= valor
        print("%s: perdeu %d de mana (%d/%d)"%(self.Nome,valor,self.Mana,self.ManaMaxima))
    def RecuperaMana(self,valor):
        self.Mana += valor
        print("%s: perdeu %d de mana (%d/%d)"%(self.Nome,valor,self.Mana,self.ManaMaxima))

    def Atacar(self):
        #frasesAtaque = ["golpeou rapidamente","golpeou fortemente","golpeou rigorosamente","golpeou de forma confiante"]
        if random.randint(0,100) < self.ChanceAcerto:
            print(self.Nome+" Ataca!")
            return self.Dano
        else:
            #print(self.Nome+":",frasesAtaque[random.randint(0,len(frasesAtaque)-1)])
            print(self.Nome+" Erra!")
            return -1
        
    def Defender(self,ataque):
        #frasesDefesa = ["defendeu-se perfeitamente!","defendeu-se com maestria!","defendeu-se sem pestanejar!","defendeu-se rápido e certeiro como um raio!","defendeu-se certeiro e preciso!"]
        if ataque > -1:
            defesa = (self.Forca * random.randint(0,100))/100
            dano = ataque-defesa
            if dano > 0:
                self.DanoVida(dano)
            else:
                #print(self.Nome+":",frasesDefesa[random.randint(0,len(frasesDefesa)-1)])
                print(self.Nome+" Defende-se Perfeitamente!")
            
