#!/usr/bin/env python
# encoding: iso-8859-15
#
#Minë. Mundo Interactivo-Narrativo en Español [Tierra-Media]
#Copyright (C) 2002  Pablo Ruiz Múzquiz
#
#
#This program is free software; you can redistribute it and/or modify
#it under the terms of the GNU General Public License as published by
#the Free Software Foundation; either version 2 of the License, or
#(at your option) any later version.
#
#This program is distributed in the hope that it will be useful,
#but WITHOUT ANY WARRANTY; without even the implied warranty of
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#GNU General Public License for more details.
#
#You should have received a copy of the GNU General Public License
#along with this program; if not, write to the Free Software
#Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
#
#Fichero: raza.py

"""Clase Raza."""

import Idioma


class Raza(object):
    """Información sobre cualquiera de las razas que pueden tener los personajes.
    
    Una raza se caracteriza por:
        - nombre (string): identificador de la raza
	- volumen_base (int): volumen típico de un personaje de esta raza
	- aura_base (int): aura típica de un personaje de esta raza
	- descripcion_base ({string: any}): descripción típica de un personaje de esta raza,
	                                    en el mismo formato que la de Personaje
	- idiomas_base ({Idioma: int}): idiomas típicos que conoce un personaje de esta raza
	- profesiones_prohibidas ([Profesion]): profesiones a las que no se puede acceder por raza
	- modif_atrib ({string: int}): modificadores a los atributos según la raza
	- nombre_genero ({string: string}): nombre de la raza según género (masculino / femenino)
	- tiempo_hambre (float): horas que tarda en subir un nivel de hambre
	- tiempo_sed (float): horas que tarda en subir un nivel de sed
	- puntos_nutritivos (float): puntos nutritivos necesarios para recuperar un nivel de hambre
	- puntos_hidratantes (float): puntos nutritivos necesarios para recuperar un nivel de sed
	- niveles_hambre ({string: any}[]): comportamiento de cada nivel, es un array en el que
	                                    cada elemento es un diccionario:
						- mensaje
						- horas
						- puntos_dano

    Invariantes:
      nombre != None
      volumen_base > 0
      aura_base in range(0,100)

      descripcion_base != None
      len(descripcion_base) >= 0
      descripcion_base[i]["dificultad"] in range(0,100)
      descripcion_base[i]["texto"] != None

      idiomas_base != None
      len(idiomas_base) == len(Idioma.lista)
      idiomas_base[i] in range(1,5)

      profesiones_prohibidas != None
      len(profesiones_prohibidas) > 0

      modif_atrib != None
      len(modif_atrib) == 6

      nombre_genero != None
      len(nombre_genero) == 2
      nombre_genero[i] != None

      tiempo_hambre > 0
      tiempo_sed > 0
      puntos_nutritivos > 0
      puntos_hidratantes > 0

      niveles_hambre[i]["mensaje"] != None
      niveles_hambre[i]["horas"] > 0
      niveles_hambre[i]["puntos_dano"] >= 0

      niveles_sed[i]["mensaje"] != None
      niveles_sed[i]["horas"] > 0
      niveles_sed[i]["puntos_dano"] >= 0
    """

    def __init__(self, nombre, volumen_base, aura_base, descripcion_base,
                 idiomas_base, profesiones_prohibidas, modif_atrib,
		 nombre_genero, tiempo_hambre, tiempo_sed, puntos_nutritivos,
		 puntos_hidratantes, niveles_hambre, niveles_sed):
	"""Crea una nueva instancia de Raza.

	No está permitido instanciar más razas aparte de las existentes
	dentro de Raza_lista.

	Requiere:
	  Todos los parámetros satisfacen las invariantes.
	"""
        self.nombre = nombre
	self.volumen_base = volumen_base
	self.aura_base = aura_base
	self.descripcion_base = descripcion_base
	self.idiomas_base = idiomas_base
	self.profesiones_prohibidas = profesiones_prohibidas
	self.modif_atrib = modif_atrib
	self.nombre_genero = nombre_genero
	self.tiempo_hambre = tiempo_hambre
	self.tiempo_sed = tiempo_sed
	self.puntos_nutritivos = puntos_nutritivos
	self.puntos_hidratantes = puntos_hidratantes
	self.niveles_hambre = niveles_hambre
	self.niveles_sed = niveles_sed

    
# Lista de todas las razas definidas
lista = [

    # Elfo 
    Raza(nombre = "elfo",
	 volumen_base = 1,
	 aura_base = 65,
	 descripcion_base = [{"dificultad": 0,
			      "texto": "Un elfo de los de toda la vida.",
			      "personaje_mira": None}],
	 idiomas_base = {Idioma.oestron:5,
			 Idioma.quenya:5,
			 Idioma.enano:0,
			 Idioma.orco:0},
	 profesiones_prohibidas = [],
	 modif_atrib = {"fuerza": -1,
			"destreza": +2,
			"constitucion": -1,
			"inteligencia": +0,
			"sabiduria": +1,
			"carisma": +1},
	 nombre_genero = {"masculino": "el elfo",
			  "femenino": "la elfa"},
	 tiempo_hambre = 1,
	 tiempo_sed = 1.2,
	 puntos_nutritivos = 1,
	 puntos_hidratantes = 1,
	 niveles_hambre = [ {"mensaje": "Hambre nivel 0", "horas": 0, "puntos_dano": 0},
			    {"mensaje": "Hambre nivel 1", "horas": 0, "puntos_dano": 0},
			    {"mensaje": "Hambre nivel 2", "horas": 0, "puntos_dano": 0},
			    {"mensaje": "Hambre nivel 3", "horas": 0, "puntos_dano": 0},
			    {"mensaje": "Hambre nivel 4", "horas": 0, "puntos_dano": 0},
			    {"mensaje": "Hambre nivel 5", "horas": 0, "puntos_dano": 0},
			    {"mensaje": "Hambre nivel 6", "horas": 0, "puntos_dano": 0},
			    {"mensaje": "Hambre nivel 7", "horas": 0, "puntos_dano": 0},
			    {"mensaje": "Hambre nivel 8", "horas": 0, "puntos_dano": 0},
			    {"mensaje": "Hambre nivel 9", "horas": 0, "puntos_dano": 0},
			    {"mensaje": "Hambre nivel 10", "horas": 0, "puntos_dano": 0},
			    {"mensaje": "Hambre nivel 11", "horas": 0, "puntos_dano": 0},
			    {"mensaje": "Hambre nivel 12", "horas": 0, "puntos_dano": 0},
			    {"mensaje": "Hambre nivel 13", "horas": 0, "puntos_dano": 0},
			    {"mensaje": "Hambre nivel 14", "horas": 0, "puntos_dano": 0},
			    {"mensaje": "Hambre nivel 15", "horas": 0, "puntos_dano": 0} ],
	 niveles_sed = [ {"mensaje": "Sed nivel 0", "horas": 0, "puntos_dano": 0},
			 {"mensaje": "Sed nivel 1", "horas": 0, "puntos_dano": 0},
			 {"mensaje": "Sed nivel 2", "horas": 0, "puntos_dano": 0},
			 {"mensaje": "Sed nivel 3", "horas": 0, "puntos_dano": 0},
			 {"mensaje": "Sed nivel 4", "horas": 0, "puntos_dano": 0},
			 {"mensaje": "Sed nivel 5", "horas": 0, "puntos_dano": 0},
			 {"mensaje": "Sed nivel 6", "horas": 0, "puntos_dano": 0},
			 {"mensaje": "Sed nivel 7", "horas": 0, "puntos_dano": 0},
			 {"mensaje": "Sed nivel 8", "horas": 0, "puntos_dano": 0},
			 {"mensaje": "Sed nivel 9", "horas": 0, "puntos_dano": 0},
			 {"mensaje": "Sed nivel 10", "horas": 0, "puntos_dano": 0},
			 {"mensaje": "Sed nivel 11", "horas": 0, "puntos_dano": 0},
			 {"mensaje": "Sed nivel 12", "horas": 0, "puntos_dano": 0},
			 {"mensaje": "Sed nivel 13", "horas": 0, "puntos_dano": 0},
			 {"mensaje": "Sed nivel 14", "horas": 0, "puntos_dano": 0},
			 {"mensaje": "Sed nivel 15", "horas": 0, "puntos_dano": 0} ]),

    # Humano
    Raza(nombre = "humano",
	 volumen_base = 1,
	 aura_base = 50,
	 descripcion_base = [{"dificultad": 0,
			      "texto": "Un humano corrientillo.",
			      "personaje_mira": None}],
	 idiomas_base = {Idioma.oestron:5,
			 Idioma.quenya:0,
			 Idioma.enano:0,
			 Idioma.orco:0},
	 profesiones_prohibidas = [],
	 modif_atrib = {"fuerza": +2,
			"destreza": +0,
			"constitucion": +1,
			"inteligencia": -1,
			"sabiduria": -1,
			"carisma": -1},
	 nombre_genero = {"masculino": "el humano",
			  "femenino": "la humana"},
	 tiempo_hambre = 1,
	 tiempo_sed = 1.2,
	 puntos_nutritivos = 1,
	 puntos_hidratantes = 1,
	 niveles_hambre = [ {"mensaje": "Estás satisfecho y repleto de comida",                                     "horas": 0,   "puntos_dano": 0},
			    {"mensaje": "No tienes nada de hambre",                                                 "horas": 0,   "puntos_dano": 0},
			    {"mensaje": "No estás repleto, pero en realidad aún no sientes hambre",                 "horas": 0,   "puntos_dano": 0},
			    {"mensaje": "Si piensas en la comida, sientes algo de gusanillo",                       "horas": 0,   "puntos_dano": 0},
			    {"mensaje": "Te está empezando a entrar hambre, aunque aún puedes aguantar",            "horas": 5,   "puntos_dano": 0},
			    {"mensaje": "Ya va siendo hora de ir comiendo",                                         "horas": 3,   "puntos_dano": 0},
			    {"mensaje": "Hace rato que llegó la hora de la comida",                                 "horas": 2.5, "puntos_dano": 0},
			    {"mensaje": "La gusa aprieta ya un poco",                                               "horas": 2.5, "puntos_dano": 0},
			    {"mensaje": "¿Qué es este ruido? ¿Una tormenta? Ah, no, son tus tripas rugiendo...",    "horas": 2,   "puntos_dano": 0},
			    {"mensaje": "Te comerías un pollo entero de un bocado",                                 "horas": 2,   "puntos_dano": 0},
			    {"mensaje": "Te comerías una vaca con patatitas y zanahorias",                          "horas": 2,   "puntos_dano": 0},
			    {"mensaje": "El estómago te está empezando a doler en serio",                           "horas": 1.5, "puntos_dano": 1},
			    {"mensaje": "Notas un gran agujero rugiente en tus tripas",                             "horas": 1.5, "puntos_dano": 1},
			    {"mensaje": "Hambreeee, tienes hambreeeee, te dueleeee",                                "horas": 1,   "puntos_dano": 2},
			    {"mensaje": "Te sientes débil y mareado. Sólo piensas en comer",                        "horas": 1,   "puntos_dano": 3},
			    {"mensaje": "Te estás literalmente muriendo de hambre. No vas a aguantar mucho tiempo", "horas": 1,   "puntos_dano": 5} ],
	 niveles_sed = [ {"mensaje": "Sed nivel 0", "horas": 0, "puntos_dano": 0},
			 {"mensaje": "Sed nivel 1", "horas": 0, "puntos_dano": 0},
			 {"mensaje": "Sed nivel 2", "horas": 0, "puntos_dano": 0},
			 {"mensaje": "Sed nivel 3", "horas": 0, "puntos_dano": 0},
			 {"mensaje": "Sed nivel 4", "horas": 0, "puntos_dano": 0},
			 {"mensaje": "Sed nivel 5", "horas": 0, "puntos_dano": 0},
			 {"mensaje": "Sed nivel 6", "horas": 0, "puntos_dano": 0},
			 {"mensaje": "Sed nivel 7", "horas": 0, "puntos_dano": 0},
			 {"mensaje": "Sed nivel 8", "horas": 0, "puntos_dano": 0},
			 {"mensaje": "Sed nivel 9", "horas": 0, "puntos_dano": 0},
			 {"mensaje": "Sed nivel 10", "horas": 0, "puntos_dano": 0},
			 {"mensaje": "Sed nivel 11", "horas": 0, "puntos_dano": 0},
			 {"mensaje": "Sed nivel 12", "horas": 0, "puntos_dano": 0},
			 {"mensaje": "Sed nivel 13", "horas": 0, "puntos_dano": 0},
			 {"mensaje": "Sed nivel 14", "horas": 0, "puntos_dano": 0},
			 {"mensaje": "Sed nivel 15", "horas": 0, "puntos_dano": 0} ]),

    # Orco
    Raza(nombre = "orco",
	 volumen_base = 1,
	 aura_base = 35,
	 descripcion_base = [{"dificultad": 0,
			      "texto": "Un orco entrañable.",
			      "personaje_mira": None}],
	 idiomas_base = {Idioma.oestron:5,
			 Idioma.quenya:0,
			 Idioma.enano:0,
			 Idioma.orco:5},
	 profesiones_prohibidas = ["montaraz",
				   "bardo",
				   "animista"],
	 modif_atrib = {"fuerza": +3,
			"destreza": +1,
			"constitucion": +3,
			"inteligencia": -2,
			"sabiduria": -2,
			"carisma": -2},
	 nombre_genero = {"masculino": "el orco",
			  "femenino": "la orca"},
	 tiempo_hambre = 1,
	 tiempo_sed = 1.2,
	 puntos_nutritivos = 1,
	 puntos_hidratantes = 1,
	 niveles_hambre = [ {"mensaje": "Hambre nivel 0", "horas": 0, "puntos_dano": 0},
			    {"mensaje": "Hambre nivel 1", "horas": 0, "puntos_dano": 0},
			    {"mensaje": "Hambre nivel 2", "horas": 0, "puntos_dano": 0},
			    {"mensaje": "Hambre nivel 3", "horas": 0, "puntos_dano": 0},
			    {"mensaje": "Hambre nivel 4", "horas": 0, "puntos_dano": 0},
			    {"mensaje": "Hambre nivel 5", "horas": 0, "puntos_dano": 0},
			    {"mensaje": "Hambre nivel 6", "horas": 0, "puntos_dano": 0},
			    {"mensaje": "Hambre nivel 7", "horas": 0, "puntos_dano": 0},
			    {"mensaje": "Hambre nivel 8", "horas": 0, "puntos_dano": 0},
			    {"mensaje": "Hambre nivel 9", "horas": 0, "puntos_dano": 0},
			    {"mensaje": "Hambre nivel 10", "horas": 0, "puntos_dano": 0},
			    {"mensaje": "Hambre nivel 11", "horas": 0, "puntos_dano": 0},
			    {"mensaje": "Hambre nivel 12", "horas": 0, "puntos_dano": 0},
			    {"mensaje": "Hambre nivel 13", "horas": 0, "puntos_dano": 0},
			    {"mensaje": "Hambre nivel 14", "horas": 0, "puntos_dano": 0},
			    {"mensaje": "Hambre nivel 15", "horas": 0, "puntos_dano": 0} ],
	 niveles_sed = [ {"mensaje": "Sed nivel 0", "horas": 0, "puntos_dano": 0},
			 {"mensaje": "Sed nivel 1", "horas": 0, "puntos_dano": 0},
			 {"mensaje": "Sed nivel 2", "horas": 0, "puntos_dano": 0},
			 {"mensaje": "Sed nivel 3", "horas": 0, "puntos_dano": 0},
			 {"mensaje": "Sed nivel 4", "horas": 0, "puntos_dano": 0},
			 {"mensaje": "Sed nivel 5", "horas": 0, "puntos_dano": 0},
			 {"mensaje": "Sed nivel 6", "horas": 0, "puntos_dano": 0},
			 {"mensaje": "Sed nivel 7", "horas": 0, "puntos_dano": 0},
			 {"mensaje": "Sed nivel 8", "horas": 0, "puntos_dano": 0},
			 {"mensaje": "Sed nivel 9", "horas": 0, "puntos_dano": 0},
			 {"mensaje": "Sed nivel 10", "horas": 0, "puntos_dano": 0},
			 {"mensaje": "Sed nivel 11", "horas": 0, "puntos_dano": 0},
			 {"mensaje": "Sed nivel 12", "horas": 0, "puntos_dano": 0},
			 {"mensaje": "Sed nivel 13", "horas": 0, "puntos_dano": 0},
			 {"mensaje": "Sed nivel 14", "horas": 0, "puntos_dano": 0},
			 {"mensaje": "Sed nivel 15", "horas": 0, "puntos_dano": 0} ]),

    # Enano
    Raza(nombre = "enano",
	 volumen_base = 0.75,
	 aura_base = 50,
	 descripcion_base = [{"dificultad": 0,
			      "texto": "El enano de siempre.",
			      "personaje_mira": None}],
	 idiomas_base = {Idioma.oestron:5,
			 Idioma.quenya:0,
			 Idioma.enano:5,
			 Idioma.orco:1},
	 profesiones_prohibidas = ["animista"],
	 modif_atrib = {"fuerza": +4,
			"destreza": +0,
			"constitucion": +4,
			"inteligencia": -2,
			"sabiduria": -3,
			"carisma": -2},
	 nombre_genero = {"masculino": "el enano",
			  "femenino": "la enana"},
	 tiempo_hambre = 1,
	 tiempo_sed = 1.2,
	 puntos_nutritivos = 1,
	 puntos_hidratantes = 1,
	 niveles_hambre = [ {"mensaje": "Hambre nivel 0", "horas": 0, "puntos_dano": 0},
			    {"mensaje": "Hambre nivel 1", "horas": 0, "puntos_dano": 0},
			    {"mensaje": "Hambre nivel 2", "horas": 0, "puntos_dano": 0},
			    {"mensaje": "Hambre nivel 3", "horas": 0, "puntos_dano": 0},
			    {"mensaje": "Hambre nivel 4", "horas": 0, "puntos_dano": 0},
			    {"mensaje": "Hambre nivel 5", "horas": 0, "puntos_dano": 0},
			    {"mensaje": "Hambre nivel 6", "horas": 0, "puntos_dano": 0},
			    {"mensaje": "Hambre nivel 7", "horas": 0, "puntos_dano": 0},
			    {"mensaje": "Hambre nivel 8", "horas": 0, "puntos_dano": 0},
			    {"mensaje": "Hambre nivel 9", "horas": 0, "puntos_dano": 0},
			    {"mensaje": "Hambre nivel 10", "horas": 0, "puntos_dano": 0},
			    {"mensaje": "Hambre nivel 11", "horas": 0, "puntos_dano": 0},
			    {"mensaje": "Hambre nivel 12", "horas": 0, "puntos_dano": 0},
			    {"mensaje": "Hambre nivel 13", "horas": 0, "puntos_dano": 0},
			    {"mensaje": "Hambre nivel 14", "horas": 0, "puntos_dano": 0},
			    {"mensaje": "Hambre nivel 15", "horas": 0, "puntos_dano": 0} ],
	 niveles_sed = [ {"mensaje": "Sed nivel 0", "horas": 0, "puntos_dano": 0},
			 {"mensaje": "Sed nivel 1", "horas": 0, "puntos_dano": 0},
			 {"mensaje": "Sed nivel 2", "horas": 0, "puntos_dano": 0},
			 {"mensaje": "Sed nivel 3", "horas": 0, "puntos_dano": 0},
			 {"mensaje": "Sed nivel 4", "horas": 0, "puntos_dano": 0},
			 {"mensaje": "Sed nivel 5", "horas": 0, "puntos_dano": 0},
			 {"mensaje": "Sed nivel 6", "horas": 0, "puntos_dano": 0},
			 {"mensaje": "Sed nivel 7", "horas": 0, "puntos_dano": 0},
			 {"mensaje": "Sed nivel 8", "horas": 0, "puntos_dano": 0},
			 {"mensaje": "Sed nivel 9", "horas": 0, "puntos_dano": 0},
			 {"mensaje": "Sed nivel 10", "horas": 0, "puntos_dano": 0},
			 {"mensaje": "Sed nivel 11", "horas": 0, "puntos_dano": 0},
			 {"mensaje": "Sed nivel 12", "horas": 0, "puntos_dano": 0},
			 {"mensaje": "Sed nivel 13", "horas": 0, "puntos_dano": 0},
			 {"mensaje": "Sed nivel 14", "horas": 0, "puntos_dano": 0},
			 {"mensaje": "Sed nivel 15", "horas": 0, "puntos_dano": 0} ]),

    # Hobbit
    Raza(nombre = "hobbit",
	 volumen_base = 0.5,
	 aura_base = 50,
	 descripcion_base = [{"dificultad": 0,
			      "texto": "Un hobbit rechoncho.",
			      "personaje_mira": None}],
	 idiomas_base = {Idioma.oestron:5,
			 Idioma.quenya:0,
			 Idioma.enano:0,
			 Idioma.orco:0},
	 profesiones_prohibidas = ["montaraz",
				   "animista"],
	 modif_atrib = {"fuerza": -2,
			"destreza": +2,
			"constitucion": -1,
			"inteligencia": +1,
			"sabiduria": -1,
			"carisma": +0},
	 nombre_genero = {"masculino": "el hobbit",
			  "femenino": "la hobbit"},
	 tiempo_hambre = 4,
	 tiempo_sed = 5,
	 puntos_nutritivos = 1.25,
	 puntos_hidratantes = 1,
	 niveles_hambre = [ {"mensaje": "Tienes el estómago satisfecho, la situación ideal", "horas": 0, "puntos_dano": 0},
			    {"mensaje": "No estaría mal un pequeño tentempié", "horas": 1.5, "puntos_dano": 0},
			    {"mensaje": "No cabe duda, es hora de comer algo", "horas": 1.5, "puntos_dano": 0},
			    {"mensaje": "¿No piensas que la cena se está retrasando demasiado?", "horas": 2, "puntos_dano": 0},
			    {"mensaje": "Seguro que ya te has saltado una o dos comidas", "horas": 3, "puntos_dano": 0},
			    {"mensaje": "Recuerdas ese pastelillo de miel que tu madre te daba todas las tardes...", "horas": 3, "puntos_dano": 0},
			    {"mensaje": "Realmente no puede ser sano estar tanto tiempo en ayunas", "horas": 2.5, "puntos_dano": 0},
			    {"mensaje": "No logras quitarte de la cabeza la imagen de un pollo asado bien doradito", "horas": 2.5, "puntos_dano": 0},
			    {"mensaje": "Te comerías un buey con su guarnición de patatas y guisantes asados", "horas": 2, "puntos_dano": 0},
			    {"mensaje": "Tienes una alucinación: estás sentado en un gran salón junto al fuego comiéndote ese buey con guarnición de patatas", "horas": 3, "puntos_dano": 0},
			    {"mensaje": "Ahora mismo te comerías el banquete de despedida de Bilbo tú solito", "horas": 2, "puntos_dano": 0},
			    {"mensaje": "La situación es crítica, el estómago te está empezando a doler", "horas": 1.5, "puntos_dano": 0},
			    {"mensaje": "Tus tripas te producen terribles retortijones", "horas": 2, "puntos_dano": 1},
			    {"mensaje": "Hambreeee, tienes hambreeeee, te dueleeee", "horas": 2, "puntos_dano": 2},
			    {"mensaje": "Te sientes débil y mareado. Sólo piensas en comer", "horas": 1.5, "puntos_dano": 2},
			    {"mensaje": "Te estás literalmente muriendo de hambre. No vas a aguantar mucho tiempo", "horas": 1.5, "puntos_dano": 4} ],
	 niveles_sed = [ {"mensaje": "Sed nivel 0", "horas": 0, "puntos_dano": 0},
			 {"mensaje": "Sed nivel 1", "horas": 0, "puntos_dano": 0},
			 {"mensaje": "Sed nivel 2", "horas": 0, "puntos_dano": 0},
			 {"mensaje": "Sed nivel 3", "horas": 0, "puntos_dano": 0},
			 {"mensaje": "Sed nivel 4", "horas": 0, "puntos_dano": 0},
			 {"mensaje": "Sed nivel 5", "horas": 0, "puntos_dano": 0},
			 {"mensaje": "Sed nivel 6", "horas": 0, "puntos_dano": 0},
			 {"mensaje": "Sed nivel 7", "horas": 0, "puntos_dano": 0},
			 {"mensaje": "Sed nivel 8", "horas": 0, "puntos_dano": 0},
			 {"mensaje": "Sed nivel 9", "horas": 0, "puntos_dano": 0},
			 {"mensaje": "Sed nivel 10", "horas": 0, "puntos_dano": 0},
			 {"mensaje": "Sed nivel 11", "horas": 0, "puntos_dano": 0},
			 {"mensaje": "Sed nivel 12", "horas": 0, "puntos_dano": 0},
			 {"mensaje": "Sed nivel 13", "horas": 0, "puntos_dano": 0},
			 {"mensaje": "Sed nivel 14", "horas": 0, "puntos_dano": 0},
			 {"mensaje": "Sed nivel 15", "horas": 0, "puntos_dano": 0} ])
]


def buscar(nombre):
    """Obtiene un raza a partir de su nombre, o None si no existe.

    Requiere:
      nombre != None
    """
    for raza in lista:
        if raza.nombre == nombre:
	    return raza
    return None


# Andrés: hay dos partes del sistema de razas que no sé que hacer con ellas:
#
# - Filtro de color de ojos y pelo: esto si se quiere hacer habría que
#   estudiarlo más y darle un poco más de contenido. De momento lo suprimo.
# - Ajuste de puntos de vida por raza: esto lo dejo aparcado hasta que nos
#   pongamos con el sistema de combate.
#
# Aquí copio el código que había al respecto en PersonajeJugador.py
#
# class PJElfo(PersonajeJugador):
#     def vida_ajustada(self, vida): return vida + self.nivel * 4
# 
# class PJHumano(PersonajeJugador):
#     def vida_ajustada(self, vida): return vida + self.nivel * 5
# 
# class PJOrco(PersonajeJugador):
#     def color_de_ojos_ajustado(self, color_de_ojos):
#         if color_de_ojos in ['verde', 'azul']:
#             print "Lo siento, un orco no puede tener los ojos de color", color_de_ojos
#             print "Tus ojos serán de color negro"
#             return 'negro'
#         else:
#             return color_de_ojos
#     def color_de_pelo_ajustado(self, color_de_pelo):
#         if color_de_pelo in ['rubio', 'pelirrojo']:  # esto es una pijada
#             print "Lo siento, un orco no puede tener el pelo de color", color_de_pelo
#             print "Tu pelo será de color negro"
#             return 'negro'
#         else:
#             return color_de_pelo
#     def vida_ajustada(self, vida): return vida + self.nivel * 5
# 
# class PJEnano(PersonajeJugador):
#     def vida_ajustada(self, vida): return vida + self.nivel * 6
# 
# class PJHobbit(PersonajeJugador):
#     def vida_ajustada(self, vida): return vida + self.nivel * 6


# Código para pruebas unitarias del módulo.

if (__name__ == '__main__'):
    for nombre_raza in [raza.nombre for raza in lista]:
        raza = buscar(nombre_raza)
        print "Raza: " + raza.nombre
	print " volumen_base = " + str(raza.volumen_base)
	print " aura_base = " + str(raza.aura_base)
	print " descripcion_base = " + str(raza.descripcion_base)
	print " idiomas_base = " + str(raza.idiomas_base)
	print " profesiones_prohibidas = " + str(raza.profesiones_prohibidas)
	print " modif_atrib = " + str(raza.modif_atrib)
	print " nombre_genero = " + str(raza.nombre_genero)

