# Import de librairie
from random import randrange

print "Bienvenue au jeu GOOOOOOOOOOOOOOOBLIIIINS ! Le jeu inspire de Goblin Slayer."
print

class character(object):
    def __init__(self, name, health, damage, armor, weapon, shield, damage_weight):
        self.name = name
        self.health = health
        self.damage = damage
        self.armor = armor
        self.weapon = weapon
        self.shield = shield
        self.damage_weight = damage_weight

# Fiche de joueur
player = character(raw_input("Quel est ton nom ? "), 100, randrange(5, 19), 5, True, True, 1)
print
# Trois ennemis de force croissante
goblin = character("Guerrier gobelin", 20, randrange(2, 7), 0, False, False, 1)
hobgoblin = character("HobGobelin", 40, randrange(4, 9), 2, True, False, 2)
goblin_lord = character("Seigneur Gobelin", 100, randrange(7, 15), 5, True, True, 3)

goblin_number = raw_input("Combien de gobelins voulez-vous affronter ? ")
goblin_number = int(goblin_number)
hobgoblin_number = raw_input("Combien de hobgobelins voulez-vous affronter ? ")
hobgoblin_number = int(hobgoblin_number)
goblin_lord_number = raw_input("Combien de seigneurs gobelins voulez-vous affronter ? ")
goblin_lord_number = int(goblin_lord_number)

print
print "Vous, %s, allez affronter %s %s, %s %s et %s %s. Faites attentions a vous. Apres chaque combat, vous aurez droit au repos." % (player.name, goblin_number, goblin.name, hobgoblin_number, hobgoblin.name, goblin_lord_number, goblin_lord.name)
print

# Fonction de combat
def fight(main, ennemy):
    turn = 1
    while main.health > 0 and ennemy.health > 0:
        print "===== Tour " + str(turn) + " ====="
        print
        print "Votre ennemi a %s points de vie. Vous en avez %s." % (ennemy.health, main.health)
        print
        main.damage = randrange(5, 15)
        ennemy.damage = randrange(2, 7) * ennemy.damage_weight
        if main.damage > ennemy.armor:
            damage = (main.damage - ennemy.armor)
            # DEBUG print main.damage, ennemy.armor
            print "Vous faites %s degats." % (damage)
            print
            ennemy.health -= damage
        if ennemy.damage > main.armor:
            damage = (ennemy.damage - main.armor)
            # DEBUG print ennemy.damage, main.armor
            print "Il vous inflige %s degats." % (damage)
            print
            main.health -= damage
        if main.damage <= ennemy.armor:
            print "Vous frappez, mais pas assez fort."
            print
        if ennemy.damage <= main.armor:
            print "Il vous frappe, mais pas assez fort."
            print
        turn += 1
    else:
        if main.health <= 0:
            print "Vous avez succombe."
            exit()
        elif ennemy.health <= 0:
            print "Votre ennemi est mort."
            print
            print "=================="

raw_input("Quand vous etes pret a demarrer, appuyez sur Entree : ")

# Combats avec les gobelins
goblin_turn = goblin_number

while goblin_turn != 0:
    print
    print "Un %s vous attaque ! Il en reste %s." % (goblin.name, goblin_turn)
    print
    fight(player, goblin)
    goblin.health = 20
    goblin_turn -= 1

player.health = 100
raw_input("Prenez du repos, et appuyez sur une touche pour continuer : ")

# Combats avec les hobgobelins
hobgoblin_turn = hobgoblin_number

while hobgoblin_turn != hobgoblin_number:
    print
    print "Un %s vous attaque ! Il en reste %s." % (hobgoblin.name, hobgoblin_turn)
    print
    fight(player, hobgoblin)
    hobgoblin.health = 40
    hobgoblin_turn -= 1

player.health = 100
raw_input("Prenez du repos, et appuyez sur une touche pour continuer : ")

# Combats avec les seigneurs gobelins
goblin_lord_turn = goblin_lord_number

while goblin_lord_turn != goblin_lord_number:
    print
    print "Un %s vous attaque ! Il en reste %s." % (goblin_lord.name, goblin_lord_turn)
    print
    fight(player, goblin_lord)
    goblin_lord.health = 100
    goblin_lord_turn -= 1

raw_input("Bravo, vous avez vaincu. ")