/[ambar]/ambar/dialogocrear.py
ViewVC logotype

Diff of /ambar/dialogocrear.py

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 2.8 by pabloruiz, Sun Sep 1 11:32:00 2002 UTC revision 2.9 by pabloruiz, Tue Nov 5 22:58:22 2002 UTC
# Line 1  Line 1 
1  #!/usr/bin/env python  #!/usr/bin/env python
2  #  #
3  #Minë. Mundo Interactivo-Narrativo en Español [Tierra-Media]  #Minë. Mundo Interactivo-Narrativo en Español [Tierra-Media]
4  #Copyright (C) 2002  Pablo Ruiz Múzquiz  #Copyright (C) 2002  Pablo Ruiz Múzquiz
5  #  #
6  #  #
7  #This program is free software; you can redistribute it and/or modify  #This program is free software; you can redistribute it and/or modify
8  #it under the terms of the GNU General Public License as published by  #it under the terms of the GNU General Public License as published by
9  #the Free Software Foundation; either version 2 of the License, or  #the Free Software Foundation; either version 2 of the License, or
10  #(at your option) any later version.  #(at your option) any later version.
11  #  #
12  #This program is distributed in the hope that it will be useful,  #This program is distributed in the hope that it will be useful,
13  #but WITHOUT ANY WARRANTY; without even the implied warranty of  #but WITHOUT ANY WARRANTY; without even the implied warranty of
14  #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  #GNU General Public License for more details.  #GNU General Public License for more details.
16  #  #
17  #You should have received a copy of the GNU General Public License  #You should have received a copy of the GNU General Public License
18  #along with this program; if not, write to the Free Software  #along with this program; if not, write to the Free Software
19  #Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA  #Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20  #  #
21  #  #
22  #Fichero: dialogocrear.py  #Fichero: dialogocrear.py
23    
24  """Clase DialogoCrear."""  """Clase DialogoCrear."""
25    
26  from dialogo import *  from dialogo import *
27  from utils import *  from utils import *
28  from mundo import *  from mundo import *
29  from sala import *  from sala import *
30  from raza import *  from raza import *
31  from profesion import *  from profesion import *
32  from idioma import *  from idioma import *
33  from copy import *  from copy import *
34    
35  class DialogoCrear(Dialogo):  class DialogoCrear(Dialogo):
36      """Dialogo mantenido con el jugador para crear un personaje nuevo.      """Dialogo mantenido con el jugador para crear un personaje nuevo.
37    
38      Contiene los siguientes atributos:      Contiene los siguientes atributos:
39       - __id       - __id
40       - __clave       - __clave
41       - __esMaia       - __esMaia
42       - __nombre       - __nombre
43       - __descripcion       - __descripcion
44       - __descripcion_ok       - __descripcion_ok
45       - __descripcion_especial_ok       - __descripcion_especial_ok
46       - __experiencia       - __experiencia
47       - __nivel       - __nivel
48       - __vida       - __vida
49       - __volumen       - __volumen
50       - __estado_pj       - __estado_pj
51       - __sala       - __sala
52       - __atrib       - __atrib
53       - __atrib_ok       - __atrib_ok
54       - __idiomas       - __idiomas
55       - __idiomas_ok       - __idiomas_ok
56       - __raza       - __raza
57       - __profesion       - __profesion
58       - __sexo       - __sexo
59       - __edad       - __edad
60       - __altura       - __altura
61       - __peso       - __peso
62       - __color_de_ojos       - __color_de_ojos
63       - __color_de_pelo       - __color_de_pelo
64       - __aura       - __aura
65       - __ptos_atrib       - __ptos_atrib
66       - __ptos_atrib_max       - __ptos_atrib_max
67       - __ptos_idiomas       - __ptos_idiomas
68       - __ptos_idiomas_max       - __ptos_idiomas_max
69      """      """
70    
71      def __init__(self, padre, conn):      def __init__(self, padre, conn):
72          Dialogo.__init__(self, padre, conn)          Dialogo.__init__(self, padre, conn)
73          self.__id = None          self.__id = None
74          self.__clave = None          self.__clave = None
75          self.__esMaia = None          self.__esMaia = None
76          self.__nombre = None          self.__nombre = None
77          self.__descripcion = None          self.__descripcion = None
78          self.__descripcion_ok = None          self.__descripcion_ok = None
79          self.__descripcion_especial_ok = None          self.__descripcion_especial_ok = None
80          self.__experiencia = None          self.__experiencia = None
81          self.__nivel = None          self.__nivel = None
82          self.__vida = None          self.__vida = None
83          self.__volumen = None          self.__volumen = None
84          self.__estado_pj = None          self.__estado_pj = None
85          self.__sala = None          self.__sala = None
86          self.__atrib = None          self.__atrib = None
87          self.__atrib_ok = None          self.__atrib_ok = None
88          self.__idiomas = None          self.__idiomas = None
89          self.__idiomas_ok = None          self.__idiomas_ok = None
90          self.__raza = None          self.__raza = None
91          self.__profesion = None          self.__profesion = None
92          self.__sexo = None          self.__sexo = None
93          self.__edad = None          self.__edad = None
94          self.__altura = None          self.__altura = None
95          self.__peso = None          self.__peso = None
96          self.__color_de_ojos = None          self.__color_de_ojos = None
97          self.__color_de_pelo = None          self.__color_de_pelo = None
98          self.__aura = None          self.__aura = None
99          self.__ptos_atrib = None          self.__ptos_atrib = None
100          self.__ptos_atrib_max = None          self.__ptos_atrib_max = None
101          self.__ptos_idiomas = None          self.__ptos_idiomas = None
102          self.__ptos_idiomas_max = None          self.__ptos_idiomas_max = None
103    
104          self.estado_0()          self.estado_0()
105    
106    
107      def estado_0(self):      def estado_0(self):
108          self.poner_estado(0)          self.poner_estado(0)
109    
110          self.conn().send('Creación de personaje')          self.conn().send('Creación de personaje')
111          self.conn().send('')          self.conn().send('')
112          self.conn().send('¡Bienvenido a la Tierra Media! Tu cuerpo está tomando forma')          self.conn().send('¡Bienvenido a la Tierra Media! Tu cuerpo está tomando forma')
113          self.conn().send('pero es necesario el hálito vital de Eru para conseguir')          self.conn().send('pero es necesario el hálito vital de Eru para conseguir')
114          self.conn().send('que abras los ojos y respires.')          self.conn().send('que abras los ojos y respires.')
115          self.conn().send('')          self.conn().send('')
116          self.conn().send('Desde el primer momento serás testigo de maravillas sólo')          self.conn().send('Desde el primer momento serás testigo de maravillas sólo')
117          self.conn().send('posibles en este universo mágico que te permitirán viajar a')          self.conn().send('posibles en este universo mágico que te permitirán viajar a')
118    
119          self.conn().send('lugares fantásticos y conocer a gente real en una Arda ')          self.conn().send('lugares fantásticos y conocer a gente real en una Arda ')
120          self.conn().send('tan real como tu imaginación...')          self.conn().send('tan real como tu imaginación...')
121          self.conn().send('')          self.conn().send('')
122          self.conn().send('Estás a punto de entrar en la aventura literaria más emocionante')          self.conn().send('Estás a punto de entrar en la aventura literaria más emocionante')
123          self.conn().send('de tu vida pues participarás, junto con otra mucha gente, del')          self.conn().send('de tu vida pues participarás, junto con otra mucha gente, del')
124          self.conn().send('trabajo de decenas de amantes de la obra de Tolkien que han')          self.conn().send('trabajo de decenas de amantes de la obra de Tolkien que han')
125          self.conn().send('conseguido poco a poco reconstruir una Tierra Media para todos.')          self.conn().send('conseguido poco a poco reconstruir una Tierra Media para todos.')
126          self.conn().send('')          self.conn().send('')
127          self.conn().send('Es necesario hacerte algunas preguntas para saber qué personaje')          self.conn().send('Es necesario hacerte algunas preguntas para saber qué personaje')
128          self.conn().send('deseas ser. tómate el tiempo que necesites para responder cada')          self.conn().send('deseas ser. tómate el tiempo que necesites para responder cada')
129          self.conn().send('una de ellas.')          self.conn().send('una de ellas.')
130          self.conn().send('')          self.conn().send('')
131          self.conn().send('')          self.conn().send('')
132          self.conn().send(color(32) + 'En todo momento puedes escribir ? para recibir ayuda' + finl)          self.conn().send(color(32) + 'En todo momento puedes escribir ? para recibir ayuda' + finl)
133          self.conn().send(color(32) + '                                - para retroceder al paso anterior' + finl)          self.conn().send(color(32) + '                                - para retroceder al paso anterior' + finl)
134          self.conn().send(color(32) + '                                + para avanzar al paso siguiente' + finl)          self.conn().send(color(32) + '                                + para avanzar al paso siguiente' + finl)
135          self.conn().send('')          self.conn().send('')
136    
137          self.estado_1()          self.estado_1()
138          escribir('Creando un personaje...')          escribir('Creando un personaje...')
139          return None          return None
140                    
141    
142      def estado_1(self):      def estado_1(self):
143          self.poner_estado(1)          self.poner_estado(1)
144          self.conn().send(color(33) + '¿Qué nombre deseas tener? ' + color(32) + '(? - +): ' + finl, 0)          self.conn().send(color(33) + '¿Qué nombre deseas tener? ' + color(32) + '(? - +): ' + finl, 0)
145          return None          return None
146    
147                    
148      def comando_1(self, cmd_list):      def comando_1(self, cmd_list):
149          dlg = None          dlg = None
150          if len(cmd_list) == 0:          if len(cmd_list) == 0:
151              self.conn().send('Debes introducir un nombre (1 sola palabra). Pulsa ? para ayuda.')              self.conn().send('Debes introducir un nombre (1 sola palabra). Pulsa ? para ayuda.')
152              dlg = self.estado_1()              dlg = self.estado_1()
153          elif cmd_list[0] == '?':          elif cmd_list[0] == '?':
154              self.conn().send('El nombre es el identificador de tu personaje. Consiste en')              self.conn().send('El nombre es el identificador de tu personaje. Consiste en')
155              self.conn().send('UNA SOLA palabra, que puede contener letras y números, pero no')              self.conn().send('UNA SOLA palabra, que puede contener letras y números, pero no')
156              self.conn().send('espacios o símbolos especiales.')              self.conn().send('espacios o símbolos especiales.')
157              dlg = self.estado_1()              dlg = self.estado_1()
158          elif cmd_list[0] == '-':          elif cmd_list[0] == '-':
159              self.conn().send('No puedes retroceder, estás en el primer paso.')              self.conn().send('No puedes retroceder, estás en el primer paso.')
160              dlg = self.estado_1()              dlg = self.estado_1()
161          elif cmd_list[0] == '+':          elif cmd_list[0] == '+':
162              if self.__id == None:              if self.__id == None:
163                  self.conn().send('Antes de avanzar tienes que introducir un nombre.')                  self.conn().send('Antes de avanzar tienes que introducir un nombre.')
164                  dlg = self.estado_1()                  dlg = self.estado_1()
165              else:              else:
166                  self.conn().send('')                  self.conn().send('')
167                  dlg = self.estado_2()                  dlg = self.estado_2()
168          else:          else:
169              id = cmd_list[0]              id = cmd_list[0]
170              #Comprobamos que no es un nombre raro              #Comprobamos que no es un nombre raro
171              no_valido = 0              no_valido = 0
172              caracteres_no_validos = ''              caracteres_no_validos = ''
173              for i in id:              for i in id:
174                  if (i not in string.letters) and (i not in string.digits):                  if (i not in string.letters) and (i not in string.digits):
175                      no_valido = 1                      no_valido = 1
176                      caracteres_no_validos += ' '+i                      caracteres_no_validos += ' '+i
177                  elif len(id) > 25:                  elif len(id) > 25:
178                      no_valido = 1                      no_valido = 1
179                      caracteres_no_validos = 'El nombre es demasiado largo'                      caracteres_no_validos = 'El nombre es demasiado largo'
180    
181              if no_valido:              if no_valido:
182                  self.conn().send("El nombre introducido contiene caracteres que no son letras o dígitos")                  self.conn().send("El nombre introducido contiene caracteres que no son letras o dígitos")
183                  self.conn().send("o es demasiado largo.")                  self.conn().send("o es demasiado largo.")
184                  self.conn().send("Caracteres no válidos: "+caracteres_no_validos)                  self.conn().send("Caracteres no válidos: "+caracteres_no_validos)
185                  dlg = self.estado_1()                  dlg = self.estado_1()
186                                            
187              #Comprobamos que no existe ya un pj con mismo ID              #Comprobamos que no existe ya un pj con mismo ID
188              elif Mundo.pjs_activos.has_key(id) or \              elif Mundo.pjs_activos.has_key(id) or \
189                 Mundo_localizar_sala(Mundo.ID_SALA_LIMBO).personajes.has_key(id):                 Mundo_localizar_sala(Mundo.ID_SALA_LIMBO).personajes.has_key(id):
190                  self.conn().send('Ya existe en juego un personaje con el nombre de ' + id + ', prueba con otro...')                  self.conn().send('Ya existe en juego un personaje con el nombre de ' + id + ', prueba con otro...')
191                  dlg = self.estado_1()                  dlg = self.estado_1()
192    
193              #Procedemos a crear el pj              #Procedemos a crear el pj
194              else:              else:
195                  self.__id = id                  self.__id = id
196                  self.conn().send('El nombre de tu personaje es ' + str(self.__id))                  self.conn().send('El nombre de tu personaje es ' + str(self.__id))
197                  escribir('El nombre que ha elegido el jugador es: ' + self.__id)                  escribir('El nombre que ha elegido el jugador es: ' + self.__id)
198                  self.conn().send('')                  self.conn().send('')
199                  dlg = self.estado_101()                  dlg = self.estado_101()
200          return dlg          return dlg
201    
202      def estado_101(self):      def estado_101(self):
203          self.poner_estado(101)          self.poner_estado(101)
204          self.conn().send(color(33) + 'Introduce una clave: ' + color(32) + '(? - +): ' + finl, 0)          self.conn().send(color(33) + 'Introduce una clave: ' + color(32) + '(? - +): ' + finl, 0)
205          return None          return None
206            
207            
208      def comando_101(self, cmd_list):      def comando_101(self, cmd_list):
209          dlg = None          dlg = None
210          if len(cmd_list) == 0:          if len(cmd_list) == 0:
211              self.conn().send('Debes introducir una clave/contraseña tan larga como quieras [una palabra].')              self.conn().send('Debes introducir una clave/contraseña tan larga como quieras [una palabra].')
212              self.conn().send('Intenta que no sea fácil de adivinar. Pulsa ? para ayuda.')              self.conn().send('Intenta que no sea fácil de adivinar. Pulsa ? para ayuda.')
213              dlg = self.estado_101()              dlg = self.estado_101()
214          elif cmd_list[0] == '?':          elif cmd_list[0] == '?':
215              self.conn().send('La clave es un dato personal y que está asociada a un personaje.')              self.conn().send('La clave es un dato personal y que está asociada a un personaje.')
216              self.conn().send('Necesitarás introducir la clave cada vez que desees recuperar')              self.conn().send('Necesitarás introducir la clave cada vez que desees recuperar')
217              self.conn().send('a tu personaje. Para ello evita claves fácil de adivinar o cortas')              self.conn().send('a tu personaje. Para ello evita claves fácil de adivinar o cortas')
218              dlg = self.estado_101()              dlg = self.estado_101()
219          elif cmd_list[0] == '-':          elif cmd_list[0] == '-':
220              self.conn().send('')              self.conn().send('')
221              dlg = self.estado_1()              dlg = self.estado_1()
222          elif cmd_list[0] == '+':          elif cmd_list[0] == '+':
223    
224              if self.__clave == None:              if self.__clave == None:
225                  self.conn().send('Antes de avanzar tienes que introducir una clave.')                  self.conn().send('Antes de avanzar tienes que introducir una clave.')
226                  dlg = self.estado_101()                  dlg = self.estado_101()
227              else:              else:
228                  self.conn().send('')                  self.conn().send('')
229                  dlg = self.estado_2()                  dlg = self.estado_2()
230          else:          else:
231              clave = cmd_list[0]              clave = cmd_list[0]
232              self.__clave = clave              self.__clave = clave
233              escribir('La clave que ha elegido el jugador es: ' + self.__clave)              escribir('La clave que ha elegido el jugador es: ' + self.__clave)
234              self.conn().send('La clave no se muestra.\n')              self.conn().send('La clave no se muestra.\n')
235    
236              #Es la clave de los Maiar?              #Es la clave de los Maiar?
237    
238              if clave == file('clave_maiar.txt','r').readlines()[0][:-1]:              if clave == file('clave_maiar.txt','r').readlines()[0][:-1]:
239                  self.__esMaia = 1                  self.__esMaia = 1
240              else:              else:
241                  self.__esMaia = 0                  self.__esMaia = 0
242                            
243              dlg = self.estado_2()              dlg = self.estado_2()
244          return dlg                  return dlg        
245                                    
246      def estado_2(self):      def estado_2(self):
247          self.poner_estado(2)          self.poner_estado(2)
248          self.conn().send(color(33) + '¿A qué raza quieres pertenecer? ' + color(32) + '(? - +): ' + finl, 0)          self.conn().send(color(33) + '¿A qué raza quieres pertenecer? ' + color(32) + '(? - +): ' + finl, 0)
249          return None          return None
250    
251                    
252      def comando_2(self, cmd_list):      def comando_2(self, cmd_list):
253          dlg = None          dlg = None
254          if len(cmd_list) == 0:          if len(cmd_list) == 0:
255              self.conn().send('Debes introducir una raza. Pulsa ? para ayuda.')              self.conn().send('Debes introducir una raza. Pulsa ? para ayuda.')
256              dlg = self.estado_2()              dlg = self.estado_2()
257          elif cmd_list[0] == '?':          elif cmd_list[0] == '?':
258              self.conn().send('La raza determina totalmente las cualidades y caracterización')              self.conn().send('La raza determina totalmente las cualidades y caracterización')
259              self.conn().send('del personaje. Existen las siguientes razas:')              self.conn().send('del personaje. Existen las siguientes razas:')
260              self.conn().send('\n'.join([raza.nombre for raza in Raza_lista]))              self.conn().send('\n'.join([raza.nombre for raza in Raza_lista]))
261              dlg = self.estado_2()              dlg = self.estado_2()
262          elif cmd_list[0] == '-':          elif cmd_list[0] == '-':
263              self.conn().send('')              self.conn().send('')
264              dlg = self.estado_101()              dlg = self.estado_101()
265          elif cmd_list[0] == '+':          elif cmd_list[0] == '+':
266              if self.__raza == None:              if self.__raza == None:
267                  self.conn().send('Antes de avanzar tienes que introducir una raza.')                  self.conn().send('Antes de avanzar tienes que introducir una raza.')
268                  dlg = self.estado_2()                  dlg = self.estado_2()
269              else:              else:
270                  self.conn().send('')                  self.conn().send('')
271                  dlg = self.estado_3()                  dlg = self.estado_3()
272          else:          else:
273              raza = Raza_buscar(cmd_list[0])              raza = Raza_buscar(cmd_list[0])
274              if raza == None:              if raza == None:
275                  self.conn().send('La raza ' + cmd_list[0] + ' no existe.')                  self.conn().send('La raza ' + cmd_list[0] + ' no existe.')
276                  dlg = self.estado_2()                  dlg = self.estado_2()
277              else:              else:
278                  self.__raza = raza                  self.__raza = raza
279                  self.conn().send('La raza de tu personaje es ' + str(self.__raza.nombre))                  self.conn().send('La raza de tu personaje es ' + str(self.__raza.nombre))
280                  escribir('La raza que ha elegido el jugador es: ' + self.__raza.nombre)                  escribir('La raza que ha elegido el jugador es: ' + self.__raza.nombre)
281                  self.conn().send('')                  self.conn().send('')
282                  dlg = self.estado_201()                  dlg = self.estado_201()
283          return dlg          return dlg
284                    
285    
286      def estado_201(self):      def estado_201(self):
287          self.poner_estado(201)          self.poner_estado(201)
288          self.conn().send(color(33) + '¿De qué sexo es tu personaje (m/f)? ' + color(32) + '(? - +): ' + finl, 0)          self.conn().send(color(33) + '¿De qué sexo es tu personaje (m/f)? ' + color(32) + '(? - +): ' + finl, 0)
289          return None          return None
290    
291    
292      def comando_201(self, cmd_list):      def comando_201(self, cmd_list):
293          dlg = None          dlg = None
294          if len(cmd_list) == 0:          if len(cmd_list) == 0:
295              self.conn().send('Debes introducir "m" o "f". Pulsa ? para ayuda.')              self.conn().send('Debes introducir "m" o "f". Pulsa ? para ayuda.')
296              dlg = self.estado_201()              dlg = self.estado_201()
297          elif cmd_list[0] == '?':          elif cmd_list[0] == '?':
298              self.conn().send('El sexo no tiene efecto práctico en el juego, pero')              self.conn().send('El sexo no tiene efecto práctico en el juego, pero')
299              self.conn().send('forma parte de la caracterización del personaje.')              self.conn().send('forma parte de la caracterización del personaje.')
300              self.conn().send('Los posibles valores son "m" para masculino y "f" para femenino')              self.conn().send('Los posibles valores son "m" para masculino y "f" para femenino')
301              dlg = self.estado_201()              dlg = self.estado_201()
302          elif cmd_list[0] == '-':          elif cmd_list[0] == '-':
303              self.conn().send('')              self.conn().send('')
304              dlg = self.estado_2()              dlg = self.estado_2()
305          elif cmd_list[0] == '+':          elif cmd_list[0] == '+':
306              if self.__sexo == None:              if self.__sexo == None:
307                  self.conn().send('Antes de avanzar tienes que introducir un sexo válido.')                  self.conn().send('Antes de avanzar tienes que introducir un sexo válido.')
308                  dlg = self.estado_201()                  dlg = self.estado_201()
309              else:              else:
310                  self.conn().send('')                  self.conn().send('')
311                  dlg = self.estado_3()                  dlg = self.estado_3()
312          else:          else:
313              sexo = cmd_list[0]              sexo = cmd_list[0]
314    
315              if sexo != "m" and sexo != "f":              if sexo != "m" and sexo != "f":
316                  self.conn().send('Debes introducir un sexo válido. Pulsa ? para ayuda.')                  self.conn().send('Debes introducir un sexo válido. Pulsa ? para ayuda.')
317                  dlg = self.estado_201()                  dlg = self.estado_201()
318              else:              else:
319                  if sexo == "m":                  if sexo == "m":
320                      self.__sexo = "masculino"                      self.__sexo = "masculino"
321                  else:                  else:
322                      self.__sexo = "femenino"                      self.__sexo = "femenino"
323                  self.conn().send('El sexo de tu personaje es ' + str(self.__sexo))                  self.conn().send('El sexo de tu personaje es ' + str(self.__sexo))
324                  escribir('El sexo que ha elegido el jugador es: ' + self.__sexo)                  escribir('El sexo que ha elegido el jugador es: ' + self.__sexo)
325                  self.conn().send('')                  self.conn().send('')
326                  dlg = self.estado_3()                  dlg = self.estado_3()
327          return dlg          return dlg
328    
329    
330      def estado_3(self):      def estado_3(self):
331          self.poner_estado(3)          self.poner_estado(3)
332          self.conn().send(color(33) + '¿Qué edad tiene tu personaje (en años)? ' + color(32) + '(? - +): ' + finl, 0)          self.conn().send(color(33) + '¿Qué edad tiene tu personaje (en años)? ' + color(32) + '(? - +): ' + finl, 0)
333          return None          return None
334    
335                    
336      def comando_3(self, cmd_list):      def comando_3(self, cmd_list):
337          dlg = None          dlg = None
338          if len(cmd_list) == 0:          if len(cmd_list) == 0:
339              self.conn().send('Debes introducir una edad. Pulsa ? para ayuda.')              self.conn().send('Debes introducir una edad. Pulsa ? para ayuda.')
340              dlg = self.estado_3()              dlg = self.estado_3()
341    
342          elif cmd_list[0] == '?':          elif cmd_list[0] == '?':
343              self.conn().send('La edad no tiene efecto en las tiradas del juego, pero')              self.conn().send('La edad no tiene efecto en las tiradas del juego, pero')
344              self.conn().send('forma parte de la caracterización del personaje.')              self.conn().send('forma parte de la caracterización del personaje.')
345              self.conn().send('Intenta ser coherente con la raza elegida.')              self.conn().send('Intenta ser coherente con la raza elegida.')
346              dlg = self.estado_3()              dlg = self.estado_3()
347          elif cmd_list[0] == '-':          elif cmd_list[0] == '-':
348              self.conn().send('')              self.conn().send('')
349              dlg = self.estado_201()              dlg = self.estado_201()
350          elif cmd_list[0] == '+':          elif cmd_list[0] == '+':
351              if self.__edad == None:              if self.__edad == None:
352                  self.conn().send('Antes de avanzar tienes que introducir una edad.')                  self.conn().send('Antes de avanzar tienes que introducir una edad.')
353                  dlg = self.estado_3()                  dlg = self.estado_3()
354              else:              else:
355                  self.conn().send('')                  self.conn().send('')
356                  dlg = self.estado_4()                  dlg = self.estado_4()
357          else:          else:
358              try:              try:
359                  self.__edad = int(cmd_list[0])                  self.__edad = int(cmd_list[0])
360                                    
361                  #Casos de edades para diferentes razas                  #Casos de edades para diferentes razas
362                  if self.__raza.nombre == 'elfo' and self.__edad < 25:                  if self.__raza.nombre == 'elfo' and self.__edad < 25:
363                      self.conn().send('Esta edad no es válida para un elfo. Prueba con una edad mayor')                      self.conn().send('Esta edad no es válida para un elfo. Prueba con una edad mayor')
364                      raise ValueError                      raise ValueError
365                  elif self.__raza.nombre == 'elfo' and self.__edad > 3000:                  elif self.__raza.nombre == 'elfo' and self.__edad > 3000:
366                      self.conn().send('Esta edad no es válida para un elfo joven. Prueba con una edad menor')                      self.conn().send('Esta edad no es válida para un elfo joven. Prueba con una edad menor')
367                      raise ValueError                      raise ValueError
368                  elif self.__raza.nombre == 'enano' and self.__edad < 25:                  elif self.__raza.nombre == 'enano' and self.__edad < 25:
369                      self.conn().send('Esta edad no es válida para un enano. Prueba con una edad mayor')                      self.conn().send('Esta edad no es válida para un enano. Prueba con una edad mayor')
370                      raise ValueError                      raise ValueError
371                  elif self.__raza.nombre == 'enano' and self.__edad > 300:                  elif self.__raza.nombre == 'enano' and self.__edad > 300:
372                      self.conn().send('Esta edad no es válida para un enano joven. Prueba con una edad menor')                      self.conn().send('Esta edad no es válida para un enano joven. Prueba con una edad menor')
373                      raise ValueError                      raise ValueError
374                  elif self.__raza.nombre == 'orco' and self.__edad < 15:                  elif self.__raza.nombre == 'orco' and self.__edad < 15:
375                      self.conn().send('Esta edad no es válida para un orco. Prueba con una edad mayor')                      self.conn().send('Esta edad no es válida para un orco. Prueba con una edad mayor')
376                      raise ValueError                      raise ValueError
377                  elif self.__raza.nombre == 'orco' and self.__edad > 55:                  elif self.__raza.nombre == 'orco' and self.__edad > 55:
378                      self.conn().send('Esta edad no es válida para un orco joven. Prueba con una edad menor')                      self.conn().send('Esta edad no es válida para un orco joven. Prueba con una edad menor')
379                      raise ValueError                      raise ValueError
380                  elif self.__raza.nombre == 'humano' and self.__edad < 18:                  elif self.__raza.nombre == 'humano' and self.__edad < 18:
381                      self.conn().send('Esta edad no es válida para un humano. Prueba con una edad mayor')                      self.conn().send('Esta edad no es válida para un humano. Prueba con una edad mayor')
382                      raise ValueError                      raise ValueError
383                  elif self.__raza.nombre == 'humano' and self.__edad > 70:                  elif self.__raza.nombre == 'humano' and self.__edad > 70:
384                      self.conn().send('Esta edad no es válida para un humano joven. Prueba con una edad menor')                      self.conn().send('Esta edad no es válida para un humano joven. Prueba con una edad menor')
385                      raise ValueError                      raise ValueError
386                  elif self.__raza.nombre == 'hobbit' and self.__edad < 18:                  elif self.__raza.nombre == 'hobbit' and self.__edad < 18:
387                      self.conn().send('Esta edad no es válida para un hobbit. Prueba con una edad mayor')                      self.conn().send('Esta edad no es válida para un hobbit. Prueba con una edad mayor')
388                      raise ValueError                      raise ValueError
389                  elif self.__raza.nombre == 'hobbit' and self.__edad > 70:                  elif self.__raza.nombre == 'hobbit' and self.__edad > 70:
390                      self.conn().send('Esta edad no es válida para un hobbit joven. Prueba con una edad menor')                      self.conn().send('Esta edad no es válida para un hobbit joven. Prueba con una edad menor')
391                      raise ValueError                      raise ValueError
392    
393                  else:                  else:
394                      self.conn().send('La edad de tu personaje es ' + str(self.__edad) + " años.")                      self.conn().send('La edad de tu personaje es ' + str(self.__edad) + " años.")
395                      escribir('La edad que ha elegido el jugador es: ' + str(self.__edad))                      escribir('La edad que ha elegido el jugador es: ' + str(self.__edad))
396                      self.conn().send('')                      self.conn().send('')
397                      dlg = self.estado_4()                      dlg = self.estado_4()
398              except ValueError:              except ValueError:
399                  self.conn().send('Debes introducir una edad válida. Pulsa ? para ayuda.')                  self.conn().send('Debes introducir una edad válida. Pulsa ? para ayuda.')
400                  dlg = self.estado_3()                  dlg = self.estado_3()
401          return dlg          return dlg
402                    
403    
404      def estado_4(self):      def estado_4(self):
405          self.poner_estado(4)          self.poner_estado(4)
406          self.conn().send(color(33) + '¿Qué altura tiene tu personaje (m.cm)? ' + color(32) + '(? - +): ' + finl, 0)          self.conn().send(color(33) + '¿Qué altura tiene tu personaje (m.cm)? ' + color(32) + '(? - +): ' + finl, 0)
407          return None          return None
408    
409                    
410      def comando_4(self, cmd_list):      def comando_4(self, cmd_list):
411          dlg = None          dlg = None
412          if len(cmd_list) == 0:          if len(cmd_list) == 0:
413              self.conn().send('Debes introducir una altura. Pulsa ? para ayuda.')              self.conn().send('Debes introducir una altura. Pulsa ? para ayuda.')
414              dlg = self.estado_4()              dlg = self.estado_4()
415          elif cmd_list[0] == '?':          elif cmd_list[0] == '?':
416              self.conn().send('La altura no tiene efecto en las tiradas del juego, pero')              self.conn().send('La altura no tiene efecto en las tiradas del juego, pero')
417              self.conn().send('forma parte de la caracterización del personaje.')              self.conn().send('forma parte de la caracterización del personaje.')
418              self.conn().send('El formato es metros punto centímetros (por ejemplo,')              self.conn().send('El formato es metros punto centímetros (por ejemplo,')
419              self.conn().send('introducir 1.80 significa 1 metro y 80 centímetros).')              self.conn().send('introducir 1.80 significa 1 metro y 80 centímetros).')
420              self.conn().send('Ten en cuenta las limitaciones de la raza escogida.')              self.conn().send('Ten en cuenta las limitaciones de la raza escogida.')
421              dlg = self.estado_4()              dlg = self.estado_4()
422          elif cmd_list[0] == '-':          elif cmd_list[0] == '-':
423              self.conn().send('')              self.conn().send('')
424              dlg = self.estado_3()              dlg = self.estado_3()
425          elif cmd_list[0] == '+':          elif cmd_list[0] == '+':
426              if self.__altura == None:              if self.__altura == None:
427                  self.conn().send('Antes de avanzar tienes que introducir una altura.')                  self.conn().send('Antes de avanzar tienes que introducir una altura.')
428                  dlg = self.estado_4()                  dlg = self.estado_4()
429              else:              else:
430                  self.conn().send('')                  self.conn().send('')
431                  dlg = self.estado_5()                  dlg = self.estado_5()
432          else:          else:
433              try:              try:
434                  self.__altura = float(cmd_list[0])                  self.__altura = float(cmd_list[0])
435                  #Casos de alturas para diferentes razas                  #Casos de alturas para diferentes razas
436                  if self.__raza.nombre == 'elfo' and (self.__altura > 2.30 or self.__altura < 1.75):                  if self.__raza.nombre == 'elfo' and (self.__altura > 2.30 or self.__altura < 1.75):
437                      raise ValueError                      raise ValueError
438                  elif self.__raza.nombre == 'enano' and (self.__altura > 1.70 or self.__altura < 1.00):                  elif self.__raza.nombre == 'enano' and (self.__altura > 1.70 or self.__altura < 1.00):
439                      raise ValueError                      raise ValueError
440                  elif self.__raza.nombre == 'hobbit' and (self.__altura > 1.70 or self.__altura < 0.80):                  elif self.__raza.nombre == 'hobbit' and (self.__altura > 1.70 or self.__altura < 0.80):
441                      raise ValueError                      raise ValueError
442                  elif self.__raza.nombre == 'orco' and (self.__altura > 1.65 or self.__altura < 0.90):                  elif self.__raza.nombre == 'orco' and (self.__altura > 1.65 or self.__altura < 0.90):
443                      raise ValueError                      raise ValueError
444                  elif self.__raza.nombre == 'humano' and (self.__altura > 2.10 or self.__altura < 1.50):                  elif self.__raza.nombre == 'humano' and (self.__altura > 2.10 or self.__altura < 1.50):
445                      raise ValueError                      raise ValueError
446                  else:                  else:
447                      self.conn().send('La altura de tu personaje es %0.2f metros' % self.__altura)                      self.conn().send('La altura de tu personaje es %0.2f metros' % self.__altura)
448                      escribir('La altura que ha elegido el jugador es: ' + str(self.__altura))                      escribir('La altura que ha elegido el jugador es: ' + str(self.__altura))
449                      self.conn().send('')                      self.conn().send('')
450                      dlg = self.estado_5()                      dlg = self.estado_5()
451              except ValueError:              except ValueError:
452                  self.conn().send('Esta altura no es válida para un '+self.__raza.nombre+'.')                  self.conn().send('Esta altura no es válida para un '+self.__raza.nombre+'.')
453                  self.conn().send('Debes introducir una altura válida. Pulsa ? para ayuda.')                  self.conn().send('Debes introducir una altura válida. Pulsa ? para ayuda.')
454                  dlg = self.estado_4()                  dlg = self.estado_4()
455          return dlg          return dlg
456                    
457    
458      def estado_5(self):      def estado_5(self):
459          self.poner_estado(5)          self.poner_estado(5)
460          self.conn().send(color(33) + '¿Cuánto pesa tu personaje (kg)? ' + color(32) + '(? - +): ' + finl, 0)          self.conn().send(color(33) + '¿Cuánto pesa tu personaje (kg)? ' + color(32) + '(? - +): ' + finl, 0)
461          return None          return None
462    
463                    
464      def comando_5(self, cmd_list):      def comando_5(self, cmd_list):
465          dlg = None          dlg = None
466          if len(cmd_list) == 0:          if len(cmd_list) == 0:
467              self.conn().send('Debes introducir un peso. Pulsa ? para ayuda.')              self.conn().send('Debes introducir un peso. Pulsa ? para ayuda.')
468              dlg = self.estado_5()              dlg = self.estado_5()
469          elif cmd_list[0] == '?':          elif cmd_list[0] == '?':
470              self.conn().send('El peso no tiene efecto en las tiradas del juego, pero')              self.conn().send('El peso no tiene efecto en las tiradas del juego, pero')
471              self.conn().send('forma parte de la caracterización del personaje.')              self.conn().send('forma parte de la caracterización del personaje.')
472              self.conn().send('Intenta ser coherente con la raza elegida.')              self.conn().send('Intenta ser coherente con la raza elegida.')
473              dlg = self.estado_5()              dlg = self.estado_5()
474          elif cmd_list[0] == '-':          elif cmd_list[0] == '-':
475              self.conn().send('')              self.conn().send('')
476              dlg = self.estado_4()              dlg = self.estado_4()
477          elif cmd_list[0] == '+':          elif cmd_list[0] == '+':
478              if self.__peso == None:              if self.__peso == None:
479                  self.conn().send('Antes de avanzar tienes que introducir un peso.')                  self.conn().send('Antes de avanzar tienes que introducir un peso.')
480                  dlg = self.estado_5()                  dlg = self.estado_5()
481              else:              else:
482                  self.conn().send('')                  self.conn().send('')
483                  dlg = self.estado_6()                  dlg = self.estado_6()
484          else:          else:
485              try:              try:
486                  self.__peso = int(cmd_list[0])                  self.__peso = int(cmd_list[0])
487                  #Casos de pesos para diferentes razas                  #Casos de pesos para diferentes razas
488                  if self.__raza.nombre == 'elfo' and (self.__peso > 120 or self.__peso < 40):                  if self.__raza.nombre == 'elfo' and (self.__peso > 120 or self.__peso < 40):
489                      raise ValueError                      raise ValueError
490                  elif self.__raza.nombre == 'enano' and (self.__peso > 350 or self.__peso < 70):                  elif self.__raza.nombre == 'enano' and (self.__peso > 350 or self.__peso < 70):
491                      raise ValueError                      raise ValueError
492                  elif self.__raza.nombre == 'orco' and (self.__peso > 150 or self.__peso < 35):                  elif self.__raza.nombre == 'orco' and (self.__peso > 150 or self.__peso < 35):
493                      raise ValueError                      raise ValueError
494                  elif self.__raza.nombre == 'humano' and (self.__peso > 200 or self.__peso < 40):                  elif self.__raza.nombre == 'humano' and (self.__peso > 200 or self.__peso < 40):
495                      raise ValueError                      raise ValueError
496                  elif self.__raza.nombre == 'hobbit' and (self.__peso > 200 or self.__peso < 35):                  elif self.__raza.nombre == 'hobbit' and (self.__peso > 200 or self.__peso < 35):
497                      raise ValueError                      raise ValueError
498                  else:                  else:
499                      self.conn().send('El peso de tu personaje es ' + str(self.__peso) + ' kilos.')                      self.conn().send('El peso de tu personaje es ' + str(self.__peso) + ' kilos.')
500                      escribir('El peso que ha elegido el jugador es: ' + str(self.__peso))                      escribir('El peso que ha elegido el jugador es: ' + str(self.__peso))
501                      self.conn().send('')                      self.conn().send('')
502                      dlg = self.estado_6()                      dlg = self.estado_6()
503              except ValueError:              except ValueError:
504                  self.conn().send('Este peso no es válido para un '+self.__raza.nombre+'.')                  self.conn().send('Este peso no es válido para un '+self.__raza.nombre+'.')
505                  self.conn().send('Debes introducir un peso válido. Pulsa ? para ayuda.')                  self.conn().send('Debes introducir un peso válido. Pulsa ? para ayuda.')
506                  dlg = self.estado_5()                  dlg = self.estado_5()
507          return dlg          return dlg
508                    
509    
510      def estado_6(self):      def estado_6(self):
511          self.poner_estado(6)          self.poner_estado(6)
512          self.conn().send(color(33) + '¿Cuál es el color de ojos de tu personaje? ' + color(32) + '(? - +): ' + finl, 0)          self.conn().send(color(33) + '¿Cuál es el color de ojos de tu personaje? ' + color(32) + '(? - +): ' + finl, 0)
513          return None          return None
514    
515                    
516      def comando_6(self, cmd_list):      def comando_6(self, cmd_list):
517          dlg = None          dlg = None
518          if len(cmd_list) == 0:          if len(cmd_list) == 0:
519              self.conn().send('Debes introducir un color. Pulsa ? para ayuda.')              self.conn().send('Debes introducir un color. Pulsa ? para ayuda.')
520              dlg = self.estado_6()              dlg = self.estado_6()
521          elif cmd_list[0] == '?':          elif cmd_list[0] == '?':
522              self.conn().send('El color de ojos no tiene efecto en las tiradas del juego,')              self.conn().send('El color de ojos no tiene efecto en las tiradas del juego,')
523              self.conn().send('pero forma parte de la caracterización del personaje.')              self.conn().send('pero forma parte de la caracterización del personaje.')
524              self.conn().send('Introducir el color en masculino y singular. Por ejemplo,')              self.conn().send('Introducir el color en masculino y singular. Por ejemplo,')
525              self.conn().send('negro, verde, azul.')              self.conn().send('negro, verde, azul.')
526              dlg = self.estado_6()              dlg = self.estado_6()
527          elif cmd_list[0] == '-':          elif cmd_list[0] == '-':
528              self.conn().send('')              self.conn().send('')
529              dlg = self.estado_5()              dlg = self.estado_5()
530          elif cmd_list[0] == '+':          elif cmd_list[0] == '+':
531              if self.__color_de_ojos == None:              if self.__color_de_ojos == None:
532                  self.conn().send('Antes de avanzar tienes que introducir un color.')                  self.conn().send('Antes de avanzar tienes que introducir un color.')
533                  dlg = self.estado_6()                  dlg = self.estado_6()
534              else:              else:
535                  self.conn().send('')                  self.conn().send('')
536                  dlg = self.estado_7()                  dlg = self.estado_7()
537          else:          else:
538              if not cmd_list[0].isalpha():              if not cmd_list[0].isalpha():
539                  self.conn().send('Debes introducir un color válido. Pulsa ? para ayuda.')                  self.conn().send('Debes introducir un color válido. Pulsa ? para ayuda.')
540                  dlg = self.estado_6()                  dlg = self.estado_6()
541              else:              else:
542                  self.__color_de_ojos = cmd_list[0]                  self.__color_de_ojos = cmd_list[0]
543                  self.conn().send('El personaje tiene los ojos de color ' + self.__color_de_ojos)                  self.conn().send('El personaje tiene los ojos de color ' + self.__color_de_ojos)
544                  escribir('El color de ojos que ha elegido el jugador es: ' + self.__color_de_ojos)                  escribir('El color de ojos que ha elegido el jugador es: ' + self.__color_de_ojos)
545                  self.conn().send('')                  self.conn().send('')
546                  dlg = self.estado_7()                  dlg = self.estado_7()
547          return dlg          return dlg
548                    
549    
550      def estado_7(self):      def estado_7(self):
551          self.poner_estado(7)          self.poner_estado(7)
552          self.conn().send(color(33)+'¿Cuál es el color de pelo de tu personaje? ' + color(32) + '(? - +): ' + finl, 0)          self.conn().send(color(33)+'¿Cuál es el color de pelo de tu personaje? ' + color(32) + '(? - +): ' + finl, 0)
553          return None          return None
554    
555                    
556      def comando_7(self, cmd_list):      def comando_7(self, cmd_list):
557          dlg = None          dlg = None
558          if len(cmd_list) == 0:          if len(cmd_list) == 0:
559              self.conn().send('Debes introducir un color. Pulsa ? para ayuda.')              self.conn().send('Debes introducir un color. Pulsa ? para ayuda.')
560              dlg = self.estado_7()              dlg = self.estado_7()
561          elif cmd_list[0] == '?':          elif cmd_list[0] == '?':
562              self.conn().send('El color de pelo no tiene efecto en las tiradas del juego,')              self.conn().send('El color de pelo no tiene efecto en las tiradas del juego,')
563              self.conn().send('pero forma parte de la caracterización del personaje.')              self.conn().send('pero forma parte de la caracterización del personaje.')
564              self.conn().send('Introducir el color en masculino y singular. Por ejemplo,')              self.conn().send('Introducir el color en masculino y singular. Por ejemplo,')
565              self.conn().send('negro, rubio, castaño.')              self.conn().send('negro, rubio, castaño.')
566              dlg = self.estado_7()              dlg = self.estado_7()
567          elif cmd_list[0] == '-':          elif cmd_list[0] == '-':
568              self.conn().send('')              self.conn().send('')
569              dlg = self.estado_6()              dlg = self.estado_6()
570          elif cmd_list[0] == '+':          elif cmd_list[0] == '+':
571              if self.__color_de_pelo == None:              if self.__color_de_pelo == None:
572                  self.conn().send('Antes de avanzar tienes que introducir un color.')                  self.conn().send('Antes de avanzar tienes que introducir un color.')
573                  dlg = self.estado_7()                  dlg = self.estado_7()
574              else:              else:
575                  self.conn().send('')                  self.conn().send('')
576                  dlg = self.estado_8()                  dlg = self.estado_8()
577          else:          else:
578              if not cmd_list[0].isalpha():              if not cmd_list[0].isalpha():
579                  self.conn().send('Debes introducir un color válido. Pulsa ? para ayuda.')                  self.conn().send('Debes introducir un color válido. Pulsa ? para ayuda.')
580                  dlg = self.estado_7()                  dlg = self.estado_7()
581              else:              else:
582                  self.__color_de_pelo = cmd_list[0]                  self.__color_de_pelo = cmd_list[0]
583                  self.conn().send('El personaje tiene el pelo de color ' + self.__color_de_pelo)                  self.conn().send('El personaje tiene el pelo de color ' + self.__color_de_pelo)
584                  escribir('El color de pelo que ha elegido el jugador es: ' + self.__color_de_pelo)                  escribir('El color de pelo que ha elegido el jugador es: ' + self.__color_de_pelo)
585                  self.conn().send('')                  self.conn().send('')
586                  dlg = self.estado_8()                  dlg = self.estado_8()
587          return dlg          return dlg
588                    
589    
590      def estado_8(self):      def estado_8(self):
591          self.poner_estado(8)          self.poner_estado(8)
592          self.conn().send(color(33) + '¿Qué profesión se ajusta mejor a tu personaje? ' + color(32) + '(? - +): ' + finl, 0)          self.conn().send(color(33) + '¿Qué profesión se ajusta mejor a tu personaje? ' + color(32) + '(? - +): ' + finl, 0)
593          return None          return None
594    
595                    
596      def comando_8(self, cmd_list):      def comando_8(self, cmd_list):
597          dlg = None          dlg = None
598          if len(cmd_list) == 0:          if len(cmd_list) == 0:
599              self.conn().send('Debes introducir una profesion. Pulsa ? para ayuda.')              self.conn().send('Debes introducir una profesion. Pulsa ? para ayuda.')
600              dlg = self.estado_8()              dlg = self.estado_8()
601          elif cmd_list[0] == '?':          elif cmd_list[0] == '?':
602              self.conn().send('La profesión complementa la raza para determinar')              self.conn().send('La profesión complementa la raza para determinar')
603              self.conn().send('las cualidades y caracterización del personaje. ')              self.conn().send('las cualidades y caracterización del personaje. ')
604              self.conn().send('Existen las siguientes profesiones:')              self.conn().send('Existen las siguientes profesiones:')
605              for profesion in Profesion_lista:              for profesion in Profesion_lista:
606                  self.conn().send(profesion.nombre)                  self.conn().send(profesion.nombre)
607              dlg = self.estado_8()              dlg = self.estado_8()
608          elif cmd_list[0] == '-':          elif cmd_list[0] == '-':
609              self.conn().send('')              self.conn().send('')
610              dlg = self.estado_7()              dlg = self.estado_7()
611          elif cmd_list[0] == '+':          elif cmd_list[0] == '+':
612              if self.__profesion == None:              if self.__profesion == None:
613                  self.conn().send('Antes de avanzar tienes que introducir una profesion.')                  self.conn().send('Antes de avanzar tienes que introducir una profesion.')
614                  dlg = self.estado_8()                  dlg = self.estado_8()
615              else:              else:
616                  self.conn().send('')                  self.conn().send('')
617                  dlg = self.estado_9()                  dlg = self.estado_9()
618          else:          else:
619              profesion = Profesion_buscar(cmd_list[0])              profesion = Profesion_buscar(cmd_list[0])
620              if profesion == None:              if profesion == None:
621                  self.conn().send('La profesion ' + cmd_list[0] + ' no existe.')                  self.conn().send('La profesion ' + cmd_list[0] + ' no existe.')
622                  dlg = self.estado_8()                  dlg = self.estado_8()
623              elif profesion.nombre in self.__raza.profesiones_prohibidas:              elif profesion.nombre in self.__raza.profesiones_prohibidas:
624                  self.conn().send('Un ' + self.__raza.nombre + ' no puede ser ' +                  self.conn().send('Un ' + self.__raza.nombre + ' no puede ser ' +
625                                   profesion.nombre + ".")                                   profesion.nombre + ".")
626                  dlg = self.estado_8()                  dlg = self.estado_8()
627              else:              else:
628    
629                  # Caso particular: si cambiamos la profesion una vez que ya se han                  # Caso particular: si cambiamos la profesion una vez que ya se han
630                  # definido los atributos, hay que volver a recalcularlos.                  # definido los atributos, hay que volver a recalcularlos.
631                  if self.__profesion != None and self.__profesion != profesion:                  if self.__profesion != None and self.__profesion != profesion:
632                      self.__atrib_ok = None                      self.__atrib_ok = None
633    
634                  self.__profesion = profesion                  self.__profesion = profesion
635                  self.conn().send('La profesion del personaje es ' + profesion.nombre)                  self.conn().send('La profesion del personaje es ' + profesion.nombre)
636                  escribir('La profesión que ha elegido el jugador es: ' + profesion.nombre)                  escribir('La profesión que ha elegido el jugador es: ' + profesion.nombre)
637                  self.conn().send('')                  self.conn().send('')
638                  dlg = self.estado_9()                  dlg = self.estado_9()
639          return dlg          return dlg
640                    
641    
642      def estado_9(self):      def estado_9(self):
643          self.poner_estado(9)          self.poner_estado(9)
644                    
645          # La variable atrib_ok indica si el jugador ya ha terminado de          # La variable atrib_ok indica si el jugador ya ha terminado de
646          # definir sus atributos.          # definir sus atributos.
647          if self.__atrib_ok == None:          if self.__atrib_ok == None:
648              self.__atrib_ok = 0              self.__atrib_ok = 0
649    
650              # Aqui se inicializa el nivel, los valores iniciales de los atributos              # Aqui se inicializa el nivel, los valores iniciales de los atributos
651              # y los puntos para repartir.              # y los puntos para repartir.
652              self.__nivel = 1              self.__nivel = 1
653              self.__experiencia = 0              self.__experiencia = 0
654              self.__ptos_atrib = 0              self.__ptos_atrib = 0
655              self.__ptos_atrib_max = 72 - PersonajeJugador_ptos_obligatorios(self.__raza,              self.__ptos_atrib_max = 72 - PersonajeJugador_ptos_obligatorios(self.__raza,
656                                                                              self.__profesion)                                                                              self.__profesion)
657    
658              # El nivel inicial de cada atributo es 12 más el modificador por raza y              # El nivel inicial de cada atributo es 12 más el modificador por raza y
659              # por profesión.              # por profesión.
660              self.__atrib = {}                                                                          self.__atrib = {}                                                            
661              for atributo in self.__raza.modif_atrib.keys():              for atributo in self.__raza.modif_atrib.keys():
662                  self.__atrib[atributo] = 12 + \                  self.__atrib[atributo] = 12 + \
663                                 PersonajeJugador_modif_atrib_total(atributo,                                 PersonajeJugador_modif_atrib_total(atributo,
664                                                                    self.__raza,                                                                    self.__raza,
665                                                                    self.__profesion)                                                                    self.__profesion)
666    
667          self.conn().send('Tienes 72 puntos para repartir entre los atributos de')          self.conn().send('Tienes 72 puntos para repartir entre los atributos de')
668          self.conn().send('Fuerza, Destreza, Constitución, Inteligencia, Sabiduría')          self.conn().send('Fuerza, Destreza, Constitución, Inteligencia, Sabiduría')
669          self.conn().send('y Carisma.')          self.conn().send('y Carisma.')
670          self.conn().send('')          self.conn().send('')
671          self.conn().send('Los niveles mínimos y maximos dependen de la raza')          self.conn().send('Los niveles mínimos y maximos dependen de la raza')
672          self.conn().send('y profesion. Los atributos ya han sido rellenados')          self.conn().send('y profesion. Los atributos ya han sido rellenados')
673          self.conn().send('hasta el nivel medio. Si quieres aumentar un atributo,')          self.conn().send('hasta el nivel medio. Si quieres aumentar un atributo,')
674          self.conn().send('tendras que reducir otro primero.')          self.conn().send('tendras que reducir otro primero.')
675          self.conn().send('')          self.conn().send('')
676          self.conn().send(color(31)+'------ Pulsa ENTER ------ '+finl,0)          self.conn().send(color(31)+'------ Pulsa ENTER ------ '+finl,0)
677    
678          return None          return None
679                    
680    
681      def comando_9(self, cmd_list):      def comando_9(self, cmd_list):
682          return self.estado_10()          return self.estado_10()
683                            
684                    
685      def estado_10(self):      def estado_10(self):
686          self.poner_estado(10)          self.poner_estado(10)
687          self.conn().send('')          self.conn().send('')
688          self.conn().send(color(32) + 'Tus niveles actuales de atributos son:')          self.conn().send(color(32) + 'Tus niveles actuales de atributos son:')
689          for atributo in self.__atrib.keys():          for atributo in self.__atrib.keys():
690              self.conn().send("%-13s" % (atributo), 0)              self.conn().send("%-13s" % (atributo), 0)
691              self.conn().send(" [" + str(PersonajeJugador_min_atrib(atributo,              self.conn().send(" [" + str(PersonajeJugador_min_atrib(atributo,
692                                                                   self.__raza,                                                                   self.__raza,
693                                                                   self.__profesion)), 0)                                                                   self.__profesion)), 0)
694              self.conn().send("-" + str(PersonajeJugador_max_atrib(atributo,              self.conn().send("-" + str(PersonajeJugador_max_atrib(atributo,
695                                                                  self.__raza,                                                                  self.__raza,
696                                                                  self.__profesion)), 0)                                                                  self.__profesion)), 0)
697              self.conn().send("]: " + str(self.__atrib[atributo]))              self.conn().send("]: " + str(self.__atrib[atributo]))
698          self.conn().send(finl)          self.conn().send(finl)
699          self.conn().send(color(33) + 'Tienes ' + str(self.__ptos_atrib) + ' puntos para repartir')          self.conn().send(color(33) + 'Tienes ' + str(self.__ptos_atrib) + ' puntos para repartir')
700          self.conn().send('Atributo a modificar (escribe "fin" para terminar) ' + color(32) + '(? - +): ' + finl, 0)          self.conn().send('Atributo a modificar (escribe "fin" para terminar) ' + color(32) + '(? - +): ' + finl, 0)
701          return None          return None
702    
703                    
704      def comando_10(self, cmd_list):      def comando_10(self, cmd_list):
705          dlg = None          dlg = None
706          if len(cmd_list) == 0:          if len(cmd_list) == 0:
707              self.conn().send('')              self.conn().send('')
708              dlg = self.estado_10()              dlg = self.estado_10()
709          elif cmd_list[0] == '?':          elif cmd_list[0] == '?':
710              self.conn().send('Introduce el nombre de un atributo y el numero de puntos')              self.conn().send('Introduce el nombre de un atributo y el numero de puntos')
711              self.conn().send('que quieres sumarle (o restar si es negativo).')              self.conn().send('que quieres sumarle (o restar si es negativo).')
712              self.conn().send('Por ejemplo, fuerza 12 o destreza -4.')              self.conn().send('Por ejemplo, fuerza 12 o destreza -4.')
713              self.conn().send('')              self.conn().send('')
714              self.conn().send('El significado de los atributos es el siguiente:')              self.conn().send('El significado de los atributos es el siguiente:')
715              self.conn().send('Fuerza: indica la capacidad del personaje para acciones')              self.conn().send('Fuerza: indica la capacidad del personaje para acciones')
716              self.conn().send('        como levantar cargas, romper cosas y golpear.')              self.conn().send('        como levantar cargas, romper cosas y golpear.')
717              self.conn().send('Destreza: indica la capacidad del personaje para acciones')              self.conn().send('Destreza: indica la capacidad del personaje para acciones')
718              self.conn().send('          como manipular mecanismos, combatir con armas')              self.conn().send('          como manipular mecanismos, combatir con armas')
719              self.conn().send('          de mano, disparar o abrir cerraduras.')              self.conn().send('          de mano, disparar o abrir cerraduras.')
720              self.conn().send('Constitucion: indica la capacidad del personaje para')              self.conn().send('Constitucion: indica la capacidad del personaje para')
721              self.conn().send('              soportar esfuerzos y heridas.')              self.conn().send('              soportar esfuerzos y heridas.')
722              self.conn().send('Inteligencia: indica la capacidad del personaje para')              self.conn().send('Inteligencia: indica la capacidad del personaje para')
723              self.conn().send('              aprender, descifrar enigmas, observar el')              self.conn().send('              aprender, descifrar enigmas, observar el')
724              self.conn().send('              entorno y encontrar cosas escondidas.')              self.conn().send('              entorno y encontrar cosas escondidas.')
725              self.conn().send('Sabiduría: refleja el conocimiento del mundo que tiene el')              self.conn().send('Sabiduría: refleja el conocimiento del mundo que tiene el')
726              self.conn().send('           personaje, incluyendo reconocer lugares,')              self.conn().send('           personaje, incluyendo reconocer lugares,')
727              self.conn().send('           conocer propiedades de objetos y entender')              self.conn().send('           conocer propiedades de objetos y entender')
728              self.conn().send('           la magia.')              self.conn().send('           la magia.')
729              self.conn().send('Carisma: indica la capacidad del personaje para interactuar')              self.conn().send('Carisma: indica la capacidad del personaje para interactuar')
730              self.conn().send('         con otros personajes, caerles bien, hacerse obedecer,')              self.conn().send('         con otros personajes, caerles bien, hacerse obedecer,')
731              self.conn().send('         y ¿por que no? tambien engañar.')              self.conn().send('         y ¿por que no? tambien engañar.')
732              dlg = self.estado_10()              dlg = self.estado_10()
733          elif cmd_list[0] == '-':          elif cmd_list[0] == '-':
734              self.conn().send('')              self.conn().send('')
735              dlg = self.estado_8()              dlg = self.estado_8()
736          elif cmd_list[0] == '+':          elif cmd_list[0] == '+':
737              if self.__atrib_ok == 0:              if self.__atrib_ok == 0:
738                  self.conn().send('Antes de avanzar tienes que terminar de definir los atributos.')                  self.conn().send('Antes de avanzar tienes que terminar de definir los atributos.')
739                  dlg = self.estado_10()                  dlg = self.estado_10()
740              else:              else:
741                  self.conn().send('')                  self.conn().send('')
742                  dlg = self.estado_12()                  dlg = self.estado_12()
743          elif len(cmd_list) == 1 and cmd_list[0] == "fin":          elif len(cmd_list) == 1 and cmd_list[0] == "fin":
744              dlg = self.estado_11()              dlg = self.estado_11()
745          elif len(cmd_list) != 2:          elif len(cmd_list) != 2:
746              self.conn().send('Introduce un nombre de atributo y un numero.')              self.conn().send('Introduce un nombre de atributo y un numero.')
747              dlg = self.estado_10()              dlg = self.estado_10()
748          else:          else:
749              try:              try:
750                  atributo = cmd_list[0]                  atributo = cmd_list[0]
751                  if not self.__atrib.has_key(atributo):                  if not self.__atrib.has_key(atributo):
752                      self.conn().send(atributo + " no es un atributo.")                      self.conn().send(atributo + " no es un atributo.")
753                      raise ValueError                      raise ValueError
754    
755                  try:                  try:
756                      valor = int(cmd_list[1])                      valor = int(cmd_list[1])
757                  except ValueError:                  except ValueError:
758                      self.conn().send(cmd_list[1] + " no es un numero valido.")                      self.conn().send(cmd_list[1] + " no es un numero valido.")
759                      raise ValueError                      raise ValueError
760    
761                  if self.__ptos_atrib - valor < 0:                  if self.__ptos_atrib - valor < 0:
762                      self.conn().send("No tienes tantos puntos para repartir. Quita de otro atributo primero.")                      self.conn().send("No tienes tantos puntos para repartir. Quita de otro atributo primero.")
763                      raise ValueError                      raise ValueError
764    
765                  if self.__ptos_atrib - valor > self.__ptos_atrib_max:                  if self.__ptos_atrib - valor > self.__ptos_atrib_max:
766                      self.conn().send("No puedes quitar tantos puntos. Añade algunos a otro atributo.")                      self.conn().send("No puedes quitar tantos puntos. Añade algunos a otro atributo.")
767                      raise ValueError                      raise ValueError
768    
769                  valor_atrib = self.__atrib[atributo]                  valor_atrib = self.__atrib[atributo]
770    
771                  if valor_atrib + valor < PersonajeJugador_min_atrib(atributo,                  if valor_atrib + valor < PersonajeJugador_min_atrib(atributo,
772                                                                      self.__raza,                                                                      self.__raza,
773                                                                      self.__profesion):                                                                      self.__profesion):
774                      self.conn().send("Ese atributo no puede ser tan pequeño")                      self.conn().send("Ese atributo no puede ser tan pequeño")
775                      raise ValueError                      raise ValueError
776    
777                  if valor_atrib + valor > PersonajeJugador_max_atrib(atributo,                  if valor_atrib + valor > PersonajeJugador_max_atrib(atributo,
778                                                                      self.__raza,                                                                      self.__raza,
779                                                                      self.__profesion):                                                                      self.__profesion):
780                      self.conn().send("Ese atributo no puede ser tan grande")                      self.conn().send("Ese atributo no puede ser tan grande")
781                      raise ValueError                      raise ValueError
782    
783                  self.__atrib[atributo] = valor_atrib + valor                  self.__atrib[atributo] = valor_atrib + valor
784                  self.__ptos_atrib -= valor                  self.__ptos_atrib -= valor
785    
786              except ValueError:              except ValueError:
787                  pass                  pass
788    
789              dlg = self.estado_10()              dlg = self.estado_10()
790    
791          return dlg          return dlg
792    
793    
794      def estado_11(self):      def estado_11(self):
795          dlg = None          dlg = None
796          self.poner_estado(11)          self.poner_estado(11)
797          if self.__ptos_atrib != 0:          if self.__ptos_atrib != 0:
798              self.conn().send("\nTodavía tienes puntos por repartir.")              self.conn().send("\nTodavía tienes puntos por repartir.")
799              self.conn().send("¿Seguro que quieres terminar?")              self.conn().send("¿Seguro que quieres terminar?")
800          else:          else:
801              self.__atrib_ok = 1              self.__atrib_ok = 1
802              dlg = self.estado_12()              dlg = self.estado_12()
803          return dlg          return dlg
804                                    
805                                            
806      def comando_11(self, cmd_list):      def comando_11(self, cmd_list):
807          dlg = None          dlg = None
808          if len(cmd_list) == 0:          if len(cmd_list) == 0:
809              dlg = self.estado_11()              dlg = self.estado_11()
810          elif cmd_list[0] == "no":          elif cmd_list[0] == "no":
811              dlg = self.estado_10()              dlg = self.estado_10()
812          elif cmd_list[0] == "si":          elif cmd_list[0] == "si":
813              self.__atrib_ok = 1              self.__atrib_ok = 1
814              dlg = self.estado_12()              dlg = self.estado_12()
815          else:          else:
816              self.conn().send("Introduce si o no, por favor")              self.conn().send("Introduce si o no, por favor")
817              dlg = self.estado_11()              dlg = self.estado_11()
818          return dlg          return dlg
819                    
820    
821      def estado_12(self):      def estado_12(self):
822          self.poner_estado(12)          self.poner_estado(12)
823                    
824          # La variable idiomas_ok indica si el jugador ya ha terminado de          # La variable idiomas_ok indica si el jugador ya ha terminado de
825          # definir sus idiomas.          # definir sus idiomas.
826          if self.__idiomas_ok == None:          if self.__idiomas_ok == None:
827              self.__idiomas_ok = 0              self.__idiomas_ok = 0
828    
829              # Ahora inicializamos los niveles iniciales de idiomas, que dependen de              # Ahora inicializamos los niveles iniciales de idiomas, que dependen de
830              # la raza. OJO-> no se puede usar el método copy() sobre idiomas_base porque              # la raza. OJO-> no se puede usar el método copy() sobre idiomas_base porque
831              # posiblemente crearía instancias nuevas de la clase idioma. Comprobar.              # posiblemente crearía instancias nuevas de la clase idioma. Comprobar.
832              self.__idiomas = {}              self.__idiomas = {}
833              for idioma in self.__raza.idiomas_base.keys():              for idioma in self.__raza.idiomas_base.keys():
834                  self.__idiomas[idioma] = self.__raza.idiomas_base[idioma]                  self.__idiomas[idioma] = self.__raza.idiomas_base[idioma]
835    
836              # Y los puntos para repartir en idiomas.              # Y los puntos para repartir en idiomas.
837              self.__ptos_idiomas_max = 13              self.__ptos_idiomas_max = 13
838              self.__ptos_idiomas = 13              self.__ptos_idiomas = 13
839              for idioma in self.__idiomas.keys():              for idioma in self.__idiomas.keys():
840                  self.__ptos_idiomas -= self.__idiomas[idioma]                  self.__ptos_idiomas -= self.__idiomas[idioma]
841    
842          self.conn().send('')          self.conn().send('')
843          self.conn().send('Ahora tienes otros 13 puntos para repartir entre los')          self.conn().send('Ahora tienes otros 13 puntos para repartir entre los')
844          self.conn().send('idiomas que conoce tu personaje.')          self.conn().send('idiomas que conoce tu personaje.')
845          self.conn().send('')          self.conn().send('')
846          self.conn().send('Los niveles mínimos y maximos son 0 y 5 para todos')          self.conn().send('Los niveles mínimos y maximos son 0 y 5 para todos')
847          self.conn().send('los idiomas. Los niveles iniciales ya han sido rellenados')          self.conn().send('los idiomas. Los niveles iniciales ya han sido rellenados')
848          self.conn().send('segun la raza, pero no se han gastado todos los puntos.')          self.conn().send('segun la raza, pero no se han gastado todos los puntos.')
849          self.conn().send('Puedes aumentar niveles en los idiomas que quieras.')          self.conn().send('Puedes aumentar niveles en los idiomas que quieras.')
850          self.conn().send('No es recomendable bajar mucho el oestron ni el')          self.conn().send('No es recomendable bajar mucho el oestron ni el')
851          self.conn().send('idioma natal del personaje (los que lo tengan).')          self.conn().send('idioma natal del personaje (los que lo tengan).')
852          self.conn().send('')          self.conn().send('')
853          self.conn().send(color(31) + '------ Pulsa ENTER ------ ' + finl, 0)          self.conn().send(color(31) + '------ Pulsa ENTER ------ ' + finl, 0)
854    
855          return None          return None
856                    
857    
858      def comando_12(self, cmd_list):      def comando_12(self, cmd_list):
859          return self.estado_13()          return self.estado_13()
860    
861    
862      def estado_13(self):      def estado_13(self):
863          self.poner_estado(13)          self.poner_estado(13)
864          self.conn().send('')          self.conn().send('')
865          self.conn().send(color(32) + 'Tus niveles actuales de idiomas son:')          self.conn().send(color(32) + 'Tus niveles actuales de idiomas son:')
866          for idioma in self.__idiomas.keys():          for idioma in self.__idiomas.keys():
867              self.conn().send("%-10s" % (idioma.nombre), 0)              self.conn().send("%-10s" % (idioma.nombre), 0)
868              self.conn().send("[0-5]: " + str(self.__idiomas[idioma]))              self.conn().send("[0-5]: " + str(self.__idiomas[idioma]))
869          self.conn().send(finl)          self.conn().send(finl)
870          self.conn().send(color(33) + 'Tienes '+ str(self.__ptos_idiomas)+' puntos para repartir')          self.conn().send(color(33) + 'Tienes '+ str(self.__ptos_idiomas)+' puntos para repartir')
871          self.conn().send('Idioma a modificar (escribe "fin" para terminar) ' + color(32) + '(? - +): ' + finl, 0)          self.conn().send('Idioma a modificar (escribe "fin" para terminar) ' + color(32) + '(? - +): ' + finl, 0)
872          return None          return None
873    
874                    
875      def comando_13(self, cmd_list):      def comando_13(self, cmd_list):
876          dlg = None          dlg = None
877          if len(cmd_list) == 0:          if len(cmd_list) == 0:
878              self.conn().send('')              self.conn().send('')
879              dlg = self.estado_13()              dlg = self.estado_13()
880          elif cmd_list[0] == '?':          elif cmd_list[0] == '?':
881              self.conn().send('Introduce el nombre de un idioma y el numero de puntos')              self.conn().send('Introduce el nombre de un idioma y el numero de puntos')
882              self.conn().send('que quieres sumarle (o restar si es negativo).')              self.conn().send('que quieres sumarle (o restar si es negativo).')
883              self.conn().send('Por ejemplo, enano 3 o quenya -1.')              self.conn().send('Por ejemplo, enano 3 o quenya -1.')
884              dlg = self.estado_13()              dlg = self.estado_13()
885          elif cmd_list[0] == '-':          elif cmd_list[0] == '-':
886              self.conn().send('')              self.conn().send('')
887              dlg = self.estado_9()              dlg = self.estado_9()
888          elif cmd_list[0] == '+':          elif cmd_list[0] == '+':
889              if self.__idiomas_ok == 0:              if self.__idiomas_ok == 0:
890                  self.conn().send('Antes de avanzar tienes que terminar de definir los idiomas.')                  self.conn().send('Antes de avanzar tienes que terminar de definir los idiomas.')
891                  dlg = self.estado_13()                  dlg = self.estado_13()
892              else:              else:
893                  self.conn().send('')                  self.conn().send('')
894                  dlg = self.estado_16()                  dlg = self.estado_16()
895          elif len(cmd_list) == 1 and cmd_list[0] == "fin":          elif len(cmd_list) == 1 and cmd_list[0] == "fin":
896              dlg = self.estado_14()              dlg = self.estado_14()
897          elif len(cmd_list) != 2:          elif len(cmd_list) != 2:
898              self.conn().send('Introduce un nombre de idioma y un numero.')              self.conn().send('Introduce un nombre de idioma y un numero.')
899              dlg = self.estado_13()              dlg = self.estado_13()
900          else:          else:
901              try:              try:
902                  idioma = Idioma_buscar(cmd_list[0])                  idioma = Idioma_buscar(cmd_list[0])
903                  if idioma == None:                  if idioma == None:
904                      self.conn().send(cmd_list[0] + " no es un idioma.")                      self.conn().send(cmd_list[0] + " no es un idioma.")
905                      raise ValueError                      raise ValueError
906    
907                  try:                  try:
908                      valor = int(cmd_list[1])                      valor = int(cmd_list[1])
909                  except ValueError:                  except ValueError:
910                      self.conn().send(cmd_list[1] + " no es un numero valido.")                      self.conn().send(cmd_list[1] + " no es un numero valido.")
911                      raise ValueError                      raise ValueError
912    
913                  if self.__ptos_idiomas - valor < 0:                  if self.__ptos_idiomas - valor < 0:
914                      self.conn().send("No tienes tantos puntos para repartir. Quita puntos de otro idioma primero.")                      self.conn().send("No tienes tantos puntos para repartir. Quita puntos de otro idioma primero.")
915                      raise ValueError                      raise ValueError
916    
917                  if self.__ptos_idiomas - valor > self.__ptos_idiomas_max:                  if self.__ptos_idiomas - valor > self.__ptos_idiomas_max:
918                      self.conn().send("No puedes quitar tantos puntos. Añade algunos a otro idioma.")                      self.conn().send("No puedes quitar tantos puntos. Añade algunos a otro idioma.")
919                      raise ValueError                      raise ValueError
920    
921                  valor_idioma = self.__idiomas[idioma]                  valor_idioma = self.__idiomas[idioma]
922    
923                  if valor_idioma + valor < 0:                  if valor_idioma + valor < 0:
924                      self.conn().send("El valor de un idioma no puede ser menor que 0")                      self.conn().send("El valor de un idioma no puede ser menor que 0")
925                      raise ValueError                      raise ValueError
926    
927                  if valor_idioma + valor > 5:                  if valor_idioma + valor > 5:
928                      self.conn().send("El valor de un idioma no puede ser mayor que 5")                      self.conn().send("El valor de un idioma no puede ser mayor que 5")
929                      raise ValueError                      raise ValueError
930    
931                  self.__idiomas[idioma] = valor_idioma + valor                  self.__idiomas[idioma] = valor_idioma + valor
932                  self.__ptos_idiomas -= valor                  self.__ptos_idiomas -= valor
933    
934              except ValueError:              except ValueError:
935                  pass                  pass
936    
937              dlg = self.estado_13()              dlg = self.estado_13()
938    
939          return dlg          return dlg
940    
941    
942      def estado_14(self):      def estado_14(self):
943          dlg = None          dlg = None
944          self.poner_estado(14)          self.poner_estado(14)
945          if self.__ptos_idiomas != 0:          if self.__ptos_idiomas != 0:
946              self.conn().send("\nTodavía tienes puntos por repartir.")              self.conn().send("\nTodavía tienes puntos por repartir.")
947              self.conn().send("¿Estas seguro de que quieres terminar?")              self.conn().send("¿Estas seguro de que quieres terminar?")
948          else:          else:
949              self.__idiomas_ok = 1              self.__idiomas_ok = 1
950              dlg = self.estado_16()              dlg = self.estado_16()
951          return dlg          return dlg
952                            
953                    
954      def comando_14(self, cmd_list):      def comando_14(self, cmd_list):
955          dlg = None          dlg = None
956          if len(cmd_list) == 0:          if len(cmd_list) == 0:
957              dlg = self.estado_14()              dlg = self.estado_14()
958          elif cmd_list[0] == "no":          elif cmd_list[0] == "no":
959              dlg = self.estado_13()              dlg = self.estado_13()
960          elif cmd_list[0] == "si":          elif cmd_list[0] == "si":
961              self.__idiomas_ok = 1              self.__idiomas_ok = 1
962              dlg = self.estado_16()              dlg = self.estado_16()
963          else:          else:
964              self.conn().send("Introduce si o no, por favor")              self.conn().send("Introduce si o no, por favor")
965              dlg = self.estado_14()              dlg = self.estado_14()
966          return dlg          return dlg
967    
968                    
969      def estado_16(self):      def estado_16(self):
970          self.poner_estado(16)          self.poner_estado(16)
971    
972          if self.__descripcion_ok == None:          if self.__descripcion_ok == None:
973              self.__descripcion_ok = 0              self.__descripcion_ok = 0
974              self.__descripcion_especial_ok = 0              self.__descripcion_especial_ok = 0
975              self.__descripcion = deepcopy(self.__raza.descripcion_base)              self.__descripcion = deepcopy(self.__raza.descripcion_base)
976    
977          self.conn().send('\n\nHemos llegado a la parte final de la creación del personaje.')          self.conn().send('\n\nHemos llegado a la parte final de la creación del personaje.')
978          self.conn().send('')          self.conn().send('')
979          self.conn().send('Queda tan sólo que escribas una descripción de entre 3 y 6')          self.conn().send('Queda tan sólo que escribas una descripción de entre 3 y 6')
980          self.conn().send('líneas de cómo te ven los demás. A continuación te presentamos')                self.conn().send('líneas de cómo te ven los demás. A continuación te presentamos')      
981          self.conn().send('una descripción. Puedes aceptarla o redactar otra tú mismo.')          self.conn().send('una descripción. Puedes aceptarla o redactar otra tú mismo.')
982          self.conn().send('')          self.conn().send('')
983    
984          if len(self.__descripcion) > 0:          if len(self.__descripcion) > 0:
985              self.conn().send(color(31) + self.__descripcion[0]["texto"] + finl + '\n')              self.conn().send(color(31) + self.__descripcion[0]["texto"] + finl + '\n')
986          else:          else:
987              self.conn().send(color(31) + "(vacia)" + finl + '\n')              self.conn().send(color(31) + "(vacia)" + finl + '\n')
988                    
989          self.conn().send(color(33) + '¿Deseas conservar esta descripción (S/n)? ' + color(32) + '(? - +): '+ finl, 0)          self.conn().send(color(33) + '¿Deseas conservar esta descripción (S/n)? ' + color(32) + '(? - +): '+ finl, 0)
990          return None          return None
991    
992    
993      def comando_16(self, cmd_list):      def comando_16(self, cmd_list):
994          dlg = None          dlg = None
995          if len(cmd_list) == 0:          if len(cmd_list) == 0:
996              cmd_list = ['s']              cmd_list = ['s']
997    
998          if cmd_list[0] == 'n' or cmd_list[0] == 'no':          if cmd_list[0] == 'n' or cmd_list[0] == 'no':
999              self.__descripcion = []              self.__descripcion = []
1000              dlg = self.estado_17()              dlg = self.estado_17()
1001          elif cmd_list[0] == 's' or cmd_list[0] == 'si':          elif cmd_list[0] == 's' or cmd_list[0] == 'si':
1002              self.__descripcion_ok = 1              self.__descripcion_ok = 1
1003              dlg = self.estado_18()              dlg = self.estado_18()
1004          elif cmd_list[0] == '-':          elif cmd_list[0] == '-':
1005              self.conn().send('')              self.conn().send('')
1006              dlg = self.estado_12()              dlg = self.estado_12()
1007          elif cmd_list[0] == '+':          elif cmd_list[0] == '+':
1008              if self.__descripcion_ok == 0:              if self.__descripcion_ok == 0:
1009                  self.conn().send('Antes de avanzar tienes que terminar de definir tu descripcion.')                  self.conn().send('Antes de avanzar tienes que terminar de definir tu descripcion.')
1010                  dlg = self.estado_16()                  dlg = self.estado_16()
1011              else:              else:
1012                  self.conn().send('')                  self.conn().send('')
1013                  dlg = self.estado_18()                  dlg = self.estado_18()
1014          else:          else:
1015              self.conn().send('Por favor, responde "si" o "no"')              self.conn().send('Por favor, responde "si" o "no"')
1016              dlg = self.estado_16()              dlg = self.estado_16()
1017    
1018          return None          return None
1019    
1020                            
1021      def estado_17(self):      def estado_17(self):
1022          self.poner_estado(17)          self.poner_estado(17)
1023          self.conn().send(color(33) + '\nEscribe tu descripción: ', 0)          self.conn().send(color(33) + '\nEscribe tu descripción: ', 0)
1024          return None          return None
1025    
1026                                    
1027      def comando_17(self, cmd_list):      def comando_17(self, cmd_list):
1028          dlg = None          dlg = None
1029          if len(cmd_list) == 0:          if len(cmd_list) == 0:
1030              self.conn().send('La descripcion no puede ir vacia')              self.conn().send('La descripcion no puede ir vacia')
1031              dlg = self.estado_17()              dlg = self.estado_17()
1032          else:          else:
1033              texto = " ".join(cmd_list)              texto = " ".join(cmd_list)
1034              self.__descripcion.append({"dificultad":0, "texto":texto})              self.__descripcion.append({"dificultad":0, "texto":texto})
1035              dlg = self.estado_16()              dlg = self.estado_16()
1036          return dlg          return dlg
1037    
1038    
1039      def estado_18(self):      def estado_18(self):
1040          self.poner_estado(18)          self.poner_estado(18)
1041          self.conn().send('\n\nMinë te permite, al comienzo, incluir una pequeña descripción')          self.conn().send('\n\nMinë te permite, al comienzo, incluir una pequeña descripción')
1042          self.conn().send('especial algo difícil de detectar por la gente. Puede referirse a')          self.conn().send('especial algo difícil de detectar por la gente. Puede referirse a')
1043          self.conn().send('una marca especial, un rasgo característico, un objeto particular, etc,')          self.conn().send('una marca especial, un rasgo característico, un objeto particular, etc,')
1044          self.conn().send('que sea relevante para la historia de tu personaje aunque no tenga')          self.conn().send('que sea relevante para la historia de tu personaje aunque no tenga')
1045          self.conn().send('repecursión "práctica" en Minë. Tu descripcion especial actual es:')          self.conn().send('repecursión "práctica" en Minë. Tu descripcion especial actual es:')
1046          self.conn().send('')          self.conn().send('')
1047    
1048          if len(self.__descripcion) > 1:          if len(self.__descripcion) > 1:
1049              self.conn().send(color(31) + self.__descripcion[1]["texto"] + finl + '\n')              self.conn().send(color(31) + self.__descripcion[1]["texto"] + finl + '\n')
1050          else:          else:
1051              self.conn().send(color(31) + "(vacia)" + finl + '\n')              self.conn().send(color(31) + "(vacia)" + finl + '\n')
1052                    
1053          self.conn().send(color(33) + '¿Deseas conservar esta descripción especial (S/n)?  ' + color(32) + '(? - +): '+ finl, 0)          self.conn().send(color(33) + '¿Deseas conservar esta descripción especial (S/n)?  ' + color(32) + '(? - +): '+ finl, 0)
1054          return None          return None
1055    
1056    
1057      def comando_18(self, cmd_list):      def comando_18(self, cmd_list):
1058          dlg = None          dlg = None
1059          if len(cmd_list) == 0:          if len(cmd_list) == 0:
1060              cmd_list = ['s']              cmd_list = ['s']
1061    
1062          if cmd_list[0] == 'n' or cmd_list[0] == 'no':          if cmd_list[0] == 'n' or cmd_list[0] == 'no':
1063              if len(self.__descripcion) > 1:              if len(self.__descripcion) > 1:
1064                  del self.__descripcion[1]                  del self.__descripcion[1]
1065              dlg = self.estado_19()              dlg = self.estado_19()
1066          elif cmd_list[0] == 's' or cmd_list[0] == 'si':          elif cmd_list[0] == 's' or cmd_list[0] == 'si':
1067              self.__descripcion_especial_ok = 1              self.__descripcion_especial_ok = 1
1068              dlg = self.estado_20()              dlg = self.estado_20()
1069          elif cmd_list[0] == '-':          elif cmd_list[0] == '-':
1070              self.conn().send('')              self.conn().send('')
1071              dlg = self.estado_16()              dlg = self.estado_16()
1072          elif cmd_list[0] == '+':          elif cmd_list[0] == '+':
1073              if self.__descripcion_especial_ok == 0:              if self.__descripcion_especial_ok == 0:
1074                  self.conn().send('Antes de avanzar tienes que definir tu descripcion especial.')                  self.conn().send('Antes de avanzar tienes que definir tu descripcion especial.')
1075                  dlg = self.estado_18()                  dlg = self.estado_18()
1076              else:              else:
1077                  self.conn().send('')                  self.conn().send('')
1078                  dlg = self.estado_20()                  dlg = self.estado_20()
1079          else:          else:
1080              self.conn().send('Por favor, responde "si" o "no"')              self.conn().send('Por favor, responde "si" o "no"')
1081              dlg = self.estado_18()              dlg = self.estado_18()
1082    
1083          return dlg          return dlg
1084                            
1085                            
1086      def estado_19(self):      def estado_19(self):
1087          self.poner_estado(19)          self.poner_estado(19)
1088          self.conn().send(color(33)+'\nEscribe tu descripción especial: ', 0)          self.conn().send(color(33)+'\nEscribe tu descripción especial: ', 0)
1089          return None          return None
1090                    
1091                                    
1092      def comando_19(self, cmd_list):      def comando_19(self, cmd_list):
1093          dlg = None          dlg = None
1094          if len(cmd_list) == 0:          if len(cmd_list) == 0:
1095              if len(self.__descripcion) > 1:              if len(self.__descripcion) > 1:
1096                  del self.__descripcion[1]                  del self.__descripcion[1]
1097              dlg = self.estado_18()              dlg = self.estado_18()
1098          else:          else:
1099              texto = " ".join(cmd_list)              texto = " ".join(cmd_list)
1100              self.__descripcion.append({"dificultad":30, "texto":texto})              self.__descripcion.append({"dificultad":30, "texto":texto})
1101              dlg = self.estado_18()              dlg = self.estado_18()
1102          return dlg          return dlg
1103    
1104                    
1105      def estado_20(self):      def estado_20(self):
1106          from dialogonormal import DialogoNormal          from dialogonormal import DialogoNormal
1107    
1108          self.poner_estado(20)          self.poner_estado(20)
1109    
1110          #%%self.conn().send('Los puntos de vida son el doble que la Constitucion',0)          #%%self.conn().send('Los puntos de vida son el doble que la Constitucion',0)
1111          self.__vida = self.__atrib["constitucion"] * 2          self.__vida = self.__atrib["constitucion"] * 2
1112    
1113          # El nombre largo del personaje será el id seguido de su raza (teniendo          # El nombre largo del personaje será el id seguido de su raza (teniendo
1114          # en cuenta masculino y femenino).          # en cuenta masculino y femenino).
1115          self.__nombre = self.__id + " " + \          self.__nombre = self.__id + " " + \
1116                          self.__raza.nombre_genero[self.__sexo]                          self.__raza.nombre_genero[self.__sexo]
1117    
1118          self.__volumen = self.__raza.volumen_base          self.__volumen = self.__raza.volumen_base
1119          self.__estado_pj = "vivo"          self.__estado_pj = "vivo"
1120          self.__idioma_base = Idioma_oestron          self.__idioma_base = Idioma_oestron
1121                    
1122          self.__aura = self.__raza.aura_base          self.__aura = self.__raza.aura_base
1123          self.__sala = Mundo_localizar_sala(Mundo.ID_SALA_ENTRADA)          self.__sala = Mundo_localizar_sala(Mundo.ID_SALA_ENTRADA)
1124    
1125          # Ya tenemos todos los datos, podemos crear el personaje          # Ya tenemos todos los datos, podemos crear el personaje
1126          # y pasar por fin al estado normal.          # y pasar por fin al estado normal.
1127    
1128          personaje = PersonajeJugador(self.__id,          personaje = PersonajeJugador(self.__id,
1129                                       self.__clave,                                       self.__clave,
1130                                       self.__esMaia,                                       self.__esMaia,
1131                                       self.__nombre,                                       self.__nombre,
1132                                       self.__descripcion,                                       self.__descripcion,
1133                                       self.__experiencia,                                       self.__experiencia,
1134                                       self.__nivel,                                       self.__nivel,
1135                                       self.__vida,                                       self.__vida,
1136                                       self.__volumen,                                       self.__volumen,
1137                                       self.__estado_pj,                                       self.__estado_pj,
1138                                       self.__sala,                                       self.__sala,
1139                                       None,                                       None,
1140                                       self.__atrib,                                       self.__atrib,
1141                                       self.__idiomas,                                       self.__idiomas,
1142                                       self.__idioma_base,                                       self.__idioma_base,
1143                                       self.__raza,                                       self.__raza,
1144                                       self.__profesion,                                       self.__profesion,
1145                                       self.__sexo,                                       self.__sexo,
1146                                       self.__edad,                                       self.__edad,
1147                                       self.__altura,                                       self.__altura,
1148                                       self.__peso,                                       self.__peso,
1149                                       self.__color_de_ojos,                                       self.__color_de_ojos,
1150                                       self.__color_de_pelo,                                       self.__color_de_pelo,
1151                                       self.__aura)                                       self.__aura)
1152    
1153          self.padre().controlar_personaje(personaje)          self.padre().controlar_personaje(personaje)
1154    
1155          escribir("Personaje llamado " + personaje.id + " creado.")          escribir("Personaje llamado " + personaje.id + " creado.")
1156    
1157          Mundo_salvar_todo()          Mundo_salvar_todo()
1158    
1159          return DialogoNormal(self.padre(), self.conn(), self.padre().personaje())          return DialogoNormal(self.padre(), self.conn(), self.padre().personaje())
1160                            
1161                            
1162  # Código para pruebas unitarias del módulo.  # Código para pruebas unitarias del módulo.
1163    
1164  if (__name__ == '__main__'):  if (__name__ == '__main__'):
1165      print "No hay código para pruebas unitarias del módulo."      print "No hay código para pruebas unitarias del módulo."
1166      print "Para probar, ejecutar mine.py y conectarse via telnet."      print "Para probar, ejecutar mine.py y conectarse via telnet."
1167    

Legend:
Removed from v.2.8  
changed lines
  Added in v.2.9

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26