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

Diff of /ambar/dialogocrear.py

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

revision 1.4 by amoyav, Thu Mar 14 07:33:18 2002 UTC revision 1.5 by amoyav, Sun Jul 28 12:22:46 2002 UTC
# Line 38  class DialogoCrear(Dialogo): Line 38  class DialogoCrear(Dialogo):
38       - __id       - __id
39       - __nombre       - __nombre
40       - __descripcion       - __descripcion
41         - __descripcion_ok
42         - __descripcion_especial_ok
43       - __experiencia       - __experiencia
44       - __nivel       - __nivel
45       - __vida       - __vida
# Line 45  class DialogoCrear(Dialogo): Line 47  class DialogoCrear(Dialogo):
47       - __estado_pj       - __estado_pj
48       - __sala       - __sala
49       - __atrib       - __atrib
50         - __atrib_ok
51       - __idiomas       - __idiomas
52         - __idiomas_ok
53       - __raza       - __raza
54       - __profesion       - __profesion
55       - __sexo       - __sexo
# Line 55  class DialogoCrear(Dialogo): Line 59  class DialogoCrear(Dialogo):
59       - __color_de_ojos       - __color_de_ojos
60       - __color_de_pelo       - __color_de_pelo
61       - __aura       - __aura
62       - __ptos       - __ptos_atrib
63       - __ptos_max       - __ptos_atrib_max
64         - __ptos_idiomas
65         - __ptos_idiomas_max
66      """      """
67    
68      def __init__(self, padre, conn):      def __init__(self, padre, conn):
69          Dialogo.__init__(self, padre, conn)          Dialogo.__init__(self, padre, conn)
70            self.__id = None
71            self.__nombre = None
72            self.__descripcion = None
73            self.__descripcion_ok = None
74            self.__descripcion_especial_ok = None
75            self.__experiencia = None
76            self.__nivel = None
77            self.__vida = None
78            self.__volumen = None
79            self.__estado_pj = None
80            self.__sala = None
81            self.__atrib = None
82            self.__atrib_ok = None
83            self.__idiomas = None
84            self.__idiomas_ok = None
85            self.__raza = None
86            self.__profesion = None
87            self.__sexo = None
88            self.__edad = None
89            self.__altura = None
90            self.__peso = None
91            self.__color_de_ojos = None
92            self.__color_de_pelo = None
93            self.__aura = None
94            self.__ptos_atrib = None
95            self.__ptos_atrib_max = None
96            self.__ptos_idiomas = None
97            self.__ptos_idiomas_max = None
98          self.estado_0()          self.estado_0()
99    
100    
# Line 80  class DialogoCrear(Dialogo): Line 114  class DialogoCrear(Dialogo):
114          self.conn().send('tan real como tu imaginación...')          self.conn().send('tan real como tu imaginación...')
115          self.conn().send('')          self.conn().send('')
116          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')
117          self.conn().send('de tu vida pues participarás, junto con otra mucha gente, del trabajo')          self.conn().send('de tu vida pues participarás, junto con otra mucha gente, del')
118          self.conn().send(' de decenas de amantes de la obra de Tolkien que han conseguido')          self.conn().send('trabajo de decenas de amantes de la obra de Tolkien que han')
119          self.conn().send(' poco a poco reconstruir una Tierra Media para todos.')          self.conn().send('conseguido poco a poco reconstruir una Tierra Media para todos.')
120          self.conn().send('')          self.conn().send('')
121          self.conn().send('Es necesario hacerte algunas preguntas para saber qué personaje deseas ser.')          self.conn().send('Es necesario hacerte algunas preguntas para saber qué personaje')
122          self.conn().send('tómate el tiempo que necesites para responder cada una de ellas.')          self.conn().send('deseas ser. tómate el tiempo que necesites para responder cada')
123            self.conn().send('una de ellas.')
124          self.conn().send('')          self.conn().send('')
125          self.conn().send('')          self.conn().send('')
126          self.conn().send('Recuerda que en cualquier momento puedes escribir "?" para recibir ayuda')          self.conn().send(color(32) + 'En todo momento puedes escribir ? para recibir ayuda' + finl)
127            self.conn().send(color(32) + '                                - para retroceder al paso anterior' + finl)
128            self.conn().send(color(32) + '                                + para avanzar al paso siguiente' + finl)
129          self.conn().send('')          self.conn().send('')
130    
131          self.estado_1()          self.estado_1()
132          escribir( "Creando un personaje...")          escribir('Creando un personaje...')
133          return None          return None
134                    
135    
136      def estado_1(self):      def estado_1(self):
137          self.poner_estado(1)          self.poner_estado(1)
138          self.conn().send(color(33) + '¿Qué nombre deseas tener?: ' + finl, 0)          self.conn().send(color(33) + '¿Qué nombre deseas tener? ' + color(32) + '(? - +): ' + finl, 0)
139          return None          return None
140    
141                    
# Line 107  class DialogoCrear(Dialogo): Line 144  class DialogoCrear(Dialogo):
144          if len(cmd_list) == 0:          if len(cmd_list) == 0:
145              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.')
146              dlg = self.estado_1()              dlg = self.estado_1()
147          elif cmd_list[0] == "?":          elif cmd_list[0] == '?':
148              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')
149              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')
150              self.conn().send('espacios o símbolos especiales.')              self.conn().send('espacios o símbolos especiales.')
151              dlg = self.estado_1()              dlg = self.estado_1()
152            elif cmd_list[0] == '-':
153                self.conn().send('No puedes retroceder, estás en el primer paso.')
154                dlg = self.estado_1()
155            elif cmd_list[0] == '+':
156                if self.__id == None:
157                    self.conn().send('Antes de avanzar tienes que introducir un nombre.')
158                    dlg = self.estado_1()
159                else:
160                    self.conn().send('')
161                    dlg = self.estado_2()
162          else:          else:
             self.conn().send('')  
163              id = cmd_list[0]              id = cmd_list[0]
164              if Mundo.pjs_activos.has_key(id) or \              if Mundo.pjs_activos.has_key(id) or \
165                 Mundo_localizar_sala(Mundo.ID_SALA_LIMBO).personajes.has_key(id):                 Mundo_localizar_sala(Mundo.ID_SALA_LIMBO).personajes.has_key(id):
166                  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...')
167                  dlg = self.estado_1()                  dlg = self.estado_1()
168              else:              else:
169                  self.__id = id                  self.__id = id
170                  escribir('El nombre que has elegido es: ' + self.__id)                  escribir('El nombre que has elegido es: ' + self.__id)
171                    self.conn().send('')
172                  dlg = self.estado_2()                  dlg = self.estado_2()
173          return dlg          return dlg
174    
175    
176      def estado_2(self):      def estado_2(self):
177          self.poner_estado(2)          self.poner_estado(2)
178          self.conn().send(color(33) + '¿A qué raza quieres pertenecer?: ' + finl, 0)          self.conn().send(color(33) + '¿A qué raza quieres pertenecer? ' + color(32) + '(? - +): ' + finl, 0)
179          return None          return None
180    
181                    
# Line 137  class DialogoCrear(Dialogo): Line 184  class DialogoCrear(Dialogo):
184          if len(cmd_list) == 0:          if len(cmd_list) == 0:
185              self.conn().send('Debes introducir una raza. Pulsa ? para ayuda.')              self.conn().send('Debes introducir una raza. Pulsa ? para ayuda.')
186              dlg = self.estado_2()              dlg = self.estado_2()
187          elif cmd_list[0] == "?":          elif cmd_list[0] == '?':
188              self.conn().send('La raza determina totalmente las cualidades y caracterización')              self.conn().send('La raza determina totalmente las cualidades y caracterización')
189              self.conn().send('del personaje. Existen las siguientes razas:')              self.conn().send('del personaje. Existen las siguientes razas:')
190              self.conn().send("\n".join([raza.nombre for raza in Raza_lista]))              self.conn().send('\n'.join([raza.nombre for raza in Raza_lista]))
191              dlg = self.estado_2()              dlg = self.estado_2()
192            elif cmd_list[0] == '-':
193                self.conn().send('')
194                dlg = self.estado_1()
195            elif cmd_list[0] == '+':
196                if self.__raza == None:
197                    self.conn().send('Antes de avanzar tienes que introducir una raza.')
198                    dlg = self.estado_2()
199                else:
200                    self.conn().send('')
201                    dlg = self.estado_3()
202          else:          else:
203              raza = Raza_buscar(cmd_list[0])              raza = Raza_buscar(cmd_list[0])
204              if raza == None:              if raza == None:
# Line 156  class DialogoCrear(Dialogo): Line 213  class DialogoCrear(Dialogo):
213    
214      def estado_201(self):      def estado_201(self):
215          self.poner_estado(201)          self.poner_estado(201)
216          self.conn().send(color(33) + '¿De qué sexo es tu personaje? (m/f): ' + finl, 0)          self.conn().send(color(33) + '¿De qué sexo es tu personaje (m/f)? ' + color(32) + '(? - +): ' + finl, 0)
217          return None          return None
218    
219    
# Line 165  class DialogoCrear(Dialogo): Line 222  class DialogoCrear(Dialogo):
222          if len(cmd_list) == 0:          if len(cmd_list) == 0:
223              self.conn().send('Debes introducir "m" o "f". Pulsa ? para ayuda.')              self.conn().send('Debes introducir "m" o "f". Pulsa ? para ayuda.')
224              dlg = self.estado_201()              dlg = self.estado_201()
225          elif cmd_list[0] == "?":          elif cmd_list[0] == '?':
226              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')
227              self.conn().send('forma parte de la caracterización del personaje.')              self.conn().send('forma parte de la caracterización del personaje.')
228              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')
229              dlg = self.estado_201()              dlg = self.estado_201()
230            elif cmd_list[0] == '-':
231                self.conn().send('')
232                dlg = self.estado_2()
233            elif cmd_list[0] == '+':
234                if self.__sexo == None:
235                    self.conn().send('Antes de avanzar tienes que introducir un sexo válido.')
236                    dlg = self.estado_201()
237                else:
238                    self.conn().send('')
239                    dlg = self.estado_3()
240          else:          else:
241              sexo = cmd_list[0]              sexo = cmd_list[0]
242    
# Line 182  class DialogoCrear(Dialogo): Line 249  class DialogoCrear(Dialogo):
249                  else:                  else:
250                      self.__sexo = "femenino"                      self.__sexo = "femenino"
251                  self.conn().send('El sexo de tu personaje es ' + str(self.__sexo))                  self.conn().send('El sexo de tu personaje es ' + str(self.__sexo))
252                  self.conn().send('')                  self.conn().send('')
253                  dlg = self.estado_3()                  dlg = self.estado_3()
254          return dlg          return dlg
255    
256    
257      def estado_3(self):      def estado_3(self):
258          self.poner_estado(3)          self.poner_estado(3)
259          self.conn().send(color(33) + '¿Qué edad tiene tu personaje? (en años): ' + finl, 0)          self.conn().send(color(33) + '¿Qué edad tiene tu personaje (en años)? ' + color(32) + '(? - +): ' + finl, 0)
260          return None          return None
261    
262                    
# Line 201  class DialogoCrear(Dialogo): Line 268  class DialogoCrear(Dialogo):
268          elif cmd_list[0] < 25:          elif cmd_list[0] < 25:
269              self.conn().send('Esta edad no es válida. Prueba con una edad mayor')              self.conn().send('Esta edad no es válida. Prueba con una edad mayor')
270              dlg = self.estado_3()              dlg = self.estado_3()
271          elif cmd_list[0] == "?":          elif cmd_list[0] == '?':
272              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')
273              self.conn().send('forma parte de la caracterización del personaje.')              self.conn().send('forma parte de la caracterización del personaje.')
274              dlg = self.estado_3()              dlg = self.estado_3()
275            elif cmd_list[0] == '-':
276                self.conn().send('')
277                dlg = self.estado_201()
278            elif cmd_list[0] == '+':
279                if self.__edad == None:
280                    self.conn().send('Antes de avanzar tienes que introducir una edad.')
281                    dlg = self.estado_3()
282                else:
283                    self.conn().send('')
284                    dlg = self.estado_4()
285          else:          else:
286              try:              try:
287                  self.__edad = int(cmd_list[0])                  self.__edad = int(cmd_list[0])
# Line 219  class DialogoCrear(Dialogo): Line 296  class DialogoCrear(Dialogo):
296    
297      def estado_4(self):      def estado_4(self):
298          self.poner_estado(4)          self.poner_estado(4)
299          self.conn().send(color(33) + '¿Qué altura tiene tu personaje? (m.cm): ' + finl, 0)          self.conn().send(color(33) + '¿Qué altura tiene tu personaje (m.cm)? ' + color(32) + '(? - +): ' + finl, 0)
300          return None          return None
301    
302                    
# Line 228  class DialogoCrear(Dialogo): Line 305  class DialogoCrear(Dialogo):
305          if len(cmd_list) == 0:          if len(cmd_list) == 0:
306              self.conn().send('Debes introducir una altura. Pulsa ? para ayuda.')              self.conn().send('Debes introducir una altura. Pulsa ? para ayuda.')
307              dlg = self.estado_4()              dlg = self.estado_4()
308          elif cmd_list[0] == "?":          elif cmd_list[0] == '?':
309              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')
310              self.conn().send('forma parte de la caracterización del personaje.')              self.conn().send('forma parte de la caracterización del personaje.')
311              self.conn().send('El formato es metros punto centímetros (por ejemplo,')              self.conn().send('El formato es metros punto centímetros (por ejemplo,')
312              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).')
313              dlg = self.estado_4()              dlg = self.estado_4()
314            elif cmd_list[0] == '-':
315                self.conn().send('')
316                dlg = self.estado_3()
317            elif cmd_list[0] == '+':
318                if self.__altura == None:
319                    self.conn().send('Antes de avanzar tienes que introducir una altura.')
320                    dlg = self.estado_4()
321                else:
322                    self.conn().send('')
323                    dlg = self.estado_5()
324          else:          else:
325              try:              try:
326                  self.__altura = float(cmd_list[0])                  self.__altura = float(cmd_list[0])
# Line 248  class DialogoCrear(Dialogo): Line 335  class DialogoCrear(Dialogo):
335    
336      def estado_5(self):      def estado_5(self):
337          self.poner_estado(5)          self.poner_estado(5)
338          self.conn().send(color(33) + '¿Cuánto pesa tu personaje? (kg): ' + finl, 0)          self.conn().send(color(33) + '¿Cuánto pesa tu personaje (kg)? ' + color(32) + '(? - +): ' + finl, 0)
339          return None          return None
340    
341                    
# Line 257  class DialogoCrear(Dialogo): Line 344  class DialogoCrear(Dialogo):
344          if len(cmd_list) == 0:          if len(cmd_list) == 0:
345              self.conn().send('Debes introducir un peso. Pulsa ? para ayuda.')              self.conn().send('Debes introducir un peso. Pulsa ? para ayuda.')
346              dlg = self.estado_5()              dlg = self.estado_5()
347          elif cmd_list[0] == "?":          elif cmd_list[0] == '?':
348              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')
349              self.conn().send('forma parte de la caracterización del personaje.')              self.conn().send('forma parte de la caracterización del personaje.')
350              dlg = self.estado_5()              dlg = self.estado_5()
351            elif cmd_list[0] == '-':
352                self.conn().send('')
353                dlg = self.estado_4()
354            elif cmd_list[0] == '+':
355                if self.__peso == None:
356                    self.conn().send('Antes de avanzar tienes que introducir un peso.')
357                    dlg = self.estado_5()
358                else:
359                    self.conn().send('')
360                    dlg = self.estado_6()
361          else:          else:
362              try:              try:
363                  self.__peso = int(cmd_list[0])                  self.__peso = int(cmd_list[0])
# Line 275  class DialogoCrear(Dialogo): Line 372  class DialogoCrear(Dialogo):
372    
373      def estado_6(self):      def estado_6(self):
374          self.poner_estado(6)          self.poner_estado(6)
375          self.conn().send(color(33) + '¿Cuál es el color de ojos de tu personaje?: ' + finl, 0)          self.conn().send(color(33) + '¿Cuál es el color de ojos de tu personaje? ' + color(32) + '(? - +): ' + finl, 0)
376          return None          return None
377    
378                    
# Line 284  class DialogoCrear(Dialogo): Line 381  class DialogoCrear(Dialogo):
381          if len(cmd_list) == 0:          if len(cmd_list) == 0:
382              self.conn().send('Debes introducir un color. Pulsa ? para ayuda.')              self.conn().send('Debes introducir un color. Pulsa ? para ayuda.')
383              dlg = self.estado_6()              dlg = self.estado_6()
384          elif cmd_list[0] == "?":          elif cmd_list[0] == '?':
385              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,')
386              self.conn().send('pero forma parte de la caracterización del personaje.')              self.conn().send('pero forma parte de la caracterización del personaje.')
387              self.conn().send('Introducir el color en masculino y singular. Por ejemplo,')              self.conn().send('Introducir el color en masculino y singular. Por ejemplo,')
388              self.conn().send('negro, verde, azul.')              self.conn().send('negro, verde, azul.')
389              dlg = self.estado_6()              dlg = self.estado_6()
390            elif cmd_list[0] == '-':
391                self.conn().send('')
392                dlg = self.estado_5()
393            elif cmd_list[0] == '+':
394                if self.__color_de_ojos == None:
395                    self.conn().send('Antes de avanzar tienes que introducir un color.')
396                    dlg = self.estado_6()
397                else:
398                    self.conn().send('')
399                    dlg = self.estado_7()
400          else:          else:
401              if not cmd_list[0].isalpha():              if not cmd_list[0].isalpha():
402                  self.conn().send('Debes introducir un color válido. Pulsa ? para ayuda.')                  self.conn().send('Debes introducir un color válido. Pulsa ? para ayuda.')
# Line 304  class DialogoCrear(Dialogo): Line 411  class DialogoCrear(Dialogo):
411    
412      def estado_7(self):      def estado_7(self):
413          self.poner_estado(7)          self.poner_estado(7)
414          self.conn().send(color(33)+'¿Cuál es el color de pelo de tu personaje?: '+finl, 0)          self.conn().send(color(33)+'¿Cuál es el color de pelo de tu personaje? ' + color(32) + '(? - +): ' + finl, 0)
415          return None          return None
416    
417                    
# Line 313  class DialogoCrear(Dialogo): Line 420  class DialogoCrear(Dialogo):
420          if len(cmd_list) == 0:          if len(cmd_list) == 0:
421              self.conn().send('Debes introducir un color. Pulsa ? para ayuda.')              self.conn().send('Debes introducir un color. Pulsa ? para ayuda.')
422              dlg = self.estado_7()              dlg = self.estado_7()
423          elif cmd_list[0] == "?":          elif cmd_list[0] == '?':
424              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,')
425              self.conn().send('pero forma parte de la caracterización del personaje.')              self.conn().send('pero forma parte de la caracterización del personaje.')
426              self.conn().send('Introducir el color en masculino y singular. Por ejemplo,')              self.conn().send('Introducir el color en masculino y singular. Por ejemplo,')
427              self.conn().send('negro, rubio, castaño.')              self.conn().send('negro, rubio, castaño.')
428              dlg = self.estado_7()              dlg = self.estado_7()
429            elif cmd_list[0] == '-':
430                self.conn().send('')
431                dlg = self.estado_6()
432            elif cmd_list[0] == '+':
433                if self.__color_de_pelo == None:
434                    self.conn().send('Antes de avanzar tienes que introducir un color.')
435                    dlg = self.estado_7()
436                else:
437                    self.conn().send('')
438                    dlg = self.estado_8()
439          else:          else:
440              if not cmd_list[0].isalpha():              if not cmd_list[0].isalpha():
441                  self.conn().send('Debes introducir un color válido. Pulsa ? para ayuda.')                  self.conn().send('Debes introducir un color válido. Pulsa ? para ayuda.')
# Line 333  class DialogoCrear(Dialogo): Line 450  class DialogoCrear(Dialogo):
450    
451      def estado_8(self):      def estado_8(self):
452          self.poner_estado(8)          self.poner_estado(8)
453          self.conn().send(color(33) + '¿Qué profesión se ajusta mejor a la de tu personaje?: ' + finl, 0)          self.conn().send(color(33) + '¿Qué profesión se ajusta mejor a tu personaje? ' + color(32) + '(? - +): ' + finl, 0)
454          return None          return None
455    
456                    
# Line 342  class DialogoCrear(Dialogo): Line 459  class DialogoCrear(Dialogo):
459          if len(cmd_list) == 0:          if len(cmd_list) == 0:
460              self.conn().send('Debes introducir una profesion. Pulsa ? para ayuda.')              self.conn().send('Debes introducir una profesion. Pulsa ? para ayuda.')
461              dlg = self.estado_8()              dlg = self.estado_8()
462          elif cmd_list[0] == "?":          elif cmd_list[0] == '?':
463              self.conn().send('La profesión complementa la raza para determinar')              self.conn().send('La profesión complementa la raza para determinar')
464              self.conn().send('las cualidades y caracterización del personaje. ')              self.conn().send('las cualidades y caracterización del personaje. ')
465              self.conn().send('Existen las siguientes profesiones:')              self.conn().send('Existen las siguientes profesiones:')
466              for profesion in Profesion_lista:              for profesion in Profesion_lista:
467                  self.conn().send(profesion.nombre)                  self.conn().send(profesion.nombre)
468              dlg = self.estado_8()              dlg = self.estado_8()
469            elif cmd_list[0] == '-':
470                self.conn().send('')
471                dlg = self.estado_7()
472            elif cmd_list[0] == '+':
473                if self.__profesion == None:
474                    self.conn().send('Antes de avanzar tienes que introducir una profesion.')
475                    dlg = self.estado_8()
476                else:
477                    self.conn().send('')
478                    dlg = self.estado_9()
479          else:          else:
480              profesion = Profesion_buscar(cmd_list[0])              profesion = Profesion_buscar(cmd_list[0])
481              if profesion == None:              if profesion == None:
# Line 359  class DialogoCrear(Dialogo): Line 486  class DialogoCrear(Dialogo):
486                                   profesion.nombre + ".")                                   profesion.nombre + ".")
487                  dlg = self.estado_8()                  dlg = self.estado_8()
488              else:              else:
489    
490                    # Caso particular: si cambiamos la profesion una vez que ya se han
491                    # definido los atributos, hay que volver a recalcularlos.
492                    if self.__profesion != None and self.__profesion != profesion:
493                        self.__atrib_ok = None
494    
495                  self.__profesion = profesion                  self.__profesion = profesion
496                  self.conn().send('La profesion del personaje es ' + profesion.nombre)                  self.conn().send('La profesion del personaje es ' + profesion.nombre)
497                  self.conn().send('')                  self.conn().send('')
# Line 369  class DialogoCrear(Dialogo): Line 502  class DialogoCrear(Dialogo):
502      def estado_9(self):      def estado_9(self):
503          self.poner_estado(9)          self.poner_estado(9)
504                    
505          # Aqui se inicializa el nivel, los valores iniciales de los atributos          # La variable atrib_ok indica si el jugador ya ha terminado de
506          # y los puntos para repartir.          # definir sus atributos.
507          self.__nivel = 1          if self.__atrib_ok == None:
508          self.__experiencia = 0              self.__atrib_ok = 0
509          self.__ptos = 0  
510          self.__ptos_max = 72 - PersonajeJugador_ptos_obligatorios(self.__raza,              # Aqui se inicializa el nivel, los valores iniciales de los atributos
511                                                                    self.__profesion)              # y los puntos para repartir.
512                self.__nivel = 1
513          # El nivel inicial de cada atributo es 12 más el modificador por raza y              self.__experiencia = 0
514          # por profesión.              self.__ptos_atrib = 0
515          self.__atrib = {}                                                                              self.__ptos_atrib_max = 72 - PersonajeJugador_ptos_obligatorios(self.__raza,
516          for atributo in self.__raza.modif_atrib.keys():                                                                              self.__profesion)
517              self.__atrib[atributo] = 12 + \  
518                             PersonajeJugador_modif_atrib_total(atributo,              # El nivel inicial de cada atributo es 12 más el modificador por raza y
519                                                                self.__raza,              # por profesión.
520                                                                self.__profesion)              self.__atrib = {}                                                            
521                for atributo in self.__raza.modif_atrib.keys():
522                    self.__atrib[atributo] = 12 + \
523                                   PersonajeJugador_modif_atrib_total(atributo,
524                                                                      self.__raza,
525                                                                      self.__profesion)
526    
         self.conn().send('Tu nivel inicial será 1: ', 0)  
         self.conn().send('')  
527          self.conn().send('Tienes 72 puntos para repartir entre los atributos de')          self.conn().send('Tienes 72 puntos para repartir entre los atributos de')
528          self.conn().send('Fuerza, Destreza, Constitución, Inteligencia, Sabiduría')          self.conn().send('Fuerza, Destreza, Constitución, Inteligencia, Sabiduría')
529          self.conn().send('y Carisma.')          self.conn().send('y Carisma.')
# Line 411  class DialogoCrear(Dialogo): Line 547  class DialogoCrear(Dialogo):
547          self.conn().send('')          self.conn().send('')
548          self.conn().send(color(32) + 'Tus niveles actuales de atributos son:')          self.conn().send(color(32) + 'Tus niveles actuales de atributos son:')
549          for atributo in self.__atrib.keys():          for atributo in self.__atrib.keys():
550              self.conn().send(atributo, 0)              self.conn().send("%-13s" % (atributo), 0)
551              self.conn().send(" [" + str(PersonajeJugador_min_atrib(atributo,              self.conn().send(" [" + str(PersonajeJugador_min_atrib(atributo,
552                                                                   self.__raza,                                                                   self.__raza,
553                                                                   self.__profesion)), 0)                                                                   self.__profesion)), 0)
# Line 420  class DialogoCrear(Dialogo): Line 556  class DialogoCrear(Dialogo):
556                                                                  self.__profesion)), 0)                                                                  self.__profesion)), 0)
557              self.conn().send("]: " + str(self.__atrib[atributo]))              self.conn().send("]: " + str(self.__atrib[atributo]))
558          self.conn().send(finl)          self.conn().send(finl)
559          self.conn().send(color(33) + 'Tienes ' + str(self.__ptos) + ' puntos para repartir')          self.conn().send(color(33) + 'Tienes ' + str(self.__ptos_atrib) + ' puntos para repartir')
560          self.conn().send('Atributo a modificar (escribe "fin" para terminar): ' + finl, 0)          self.conn().send('Atributo a modificar (escribe "fin" para terminar) ' + color(32) + '(? - +): ' + finl, 0)
561          return None          return None
562    
563                    
# Line 430  class DialogoCrear(Dialogo): Line 566  class DialogoCrear(Dialogo):
566          if len(cmd_list) == 0:          if len(cmd_list) == 0:
567              self.conn().send('')              self.conn().send('')
568              dlg = self.estado_10()              dlg = self.estado_10()
569          elif cmd_list[0] == "?":          elif cmd_list[0] == '?':
570              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')
571              self.conn().send('que quieres sumarle (o restar si es negativo).')              self.conn().send('que quieres sumarle (o restar si es negativo).')
572              self.conn().send('Por ejemplo, fuerza 12 o destreza -4.')              self.conn().send('Por ejemplo, fuerza 12 o destreza -4.')
# Line 454  class DialogoCrear(Dialogo): Line 590  class DialogoCrear(Dialogo):
590              self.conn().send('         con otros personajes, caerles bien, hacerse obedecer,')              self.conn().send('         con otros personajes, caerles bien, hacerse obedecer,')
591              self.conn().send('         y ¿por que no? tambien engañar.')              self.conn().send('         y ¿por que no? tambien engañar.')
592              dlg = self.estado_10()              dlg = self.estado_10()
593            elif cmd_list[0] == '-':
594                self.conn().send('')
595                dlg = self.estado_8()
596            elif cmd_list[0] == '+':
597                if self.__atrib_ok == 0:
598                    self.conn().send('Antes de avanzar tienes que terminar de definir los atributos.')
599                    dlg = self.estado_10()
600                else:
601                    self.conn().send('')
602                    dlg = self.estado_12()
603          elif len(cmd_list) == 1 and cmd_list[0] == "fin":          elif len(cmd_list) == 1 and cmd_list[0] == "fin":
604              dlg = self.estado_11()              dlg = self.estado_11()
605          elif len(cmd_list) != 2:          elif len(cmd_list) != 2:
# Line 472  class DialogoCrear(Dialogo): Line 618  class DialogoCrear(Dialogo):
618                      self.conn().send(cmd_list[1] + " no es un numero valido.")                      self.conn().send(cmd_list[1] + " no es un numero valido.")
619                      raise ValueError                      raise ValueError
620    
621                  if self.__ptos - valor < 0:                  if self.__ptos_atrib - valor < 0:
622                      self.conn().send("No tienes tantos puntos para repartir. Quita puntos de otro atributo primero.")                      self.conn().send("No tienes tantos puntos para repartir. Quita de otro atributo primero.")
623                      raise ValueError                      raise ValueError
624    
625                  if self.__ptos - valor > self.__ptos_max:                  if self.__ptos_atrib - valor > self.__ptos_atrib_max:
626                      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.")
627                      raise ValueError                      raise ValueError
628    
# Line 495  class DialogoCrear(Dialogo): Line 641  class DialogoCrear(Dialogo):
641                      raise ValueError                      raise ValueError
642    
643                  self.__atrib[atributo] = valor_atrib + valor                  self.__atrib[atributo] = valor_atrib + valor
644                  self.__ptos -= valor                  self.__ptos_atrib -= valor
645    
646              except ValueError:              except ValueError:
647                  pass                  pass
# Line 508  class DialogoCrear(Dialogo): Line 654  class DialogoCrear(Dialogo):
654      def estado_11(self):      def estado_11(self):
655          dlg = None          dlg = None
656          self.poner_estado(11)          self.poner_estado(11)
657          if self.__ptos != 0:          if self.__ptos_atrib != 0:
658              self.conn().send("Todavia tienes puntos por repartir.")              self.conn().send("Todavia tienes puntos por repartir.")
659              self.conn().send("¿Estas seguro de que quieres terminar?")              self.conn().send("¿Seguro que quieres terminar?")
660          else:          else:
661                self.__atrib_ok = 1
662              dlg = self.estado_12()              dlg = self.estado_12()
663          return dlg          return dlg
664                                    
# Line 523  class DialogoCrear(Dialogo): Line 670  class DialogoCrear(Dialogo):
670          elif cmd_list[0] == "no":          elif cmd_list[0] == "no":
671              dlg = self.estado_10()              dlg = self.estado_10()
672          elif cmd_list[0] == "si":          elif cmd_list[0] == "si":
673                self.__atrib_ok = 1
674              dlg = self.estado_12()              dlg = self.estado_12()
675          else:          else:
676              self.conn().send("Introduce si o no, por favor")              self.conn().send("Introduce si o no, por favor")
# Line 533  class DialogoCrear(Dialogo): Line 681  class DialogoCrear(Dialogo):
681      def estado_12(self):      def estado_12(self):
682          self.poner_estado(12)          self.poner_estado(12)
683                    
684          # Ahora inicializamos los niveles iniciales de idiomas, que dependen de          # La variable idiomas_ok indica si el jugador ya ha terminado de
685          # la raza. OJO-> no se puede usar el método copy() sobre idiomas_base porque          # definir sus idiomas.
686          # posiblemente crearía instancias nuevas de la clase idioma. Comprobar.          if self.__idiomas_ok == None:
687          self.__idiomas = {}              self.__idiomas_ok = 0
688          for idioma in self.__raza.idiomas_base.keys():  
689              self.__idiomas[idioma] = self.__raza.idiomas_base[idioma]              # Ahora inicializamos los niveles iniciales de idiomas, que dependen de
690                # la raza. OJO-> no se puede usar el método copy() sobre idiomas_base porque
691          # Y los puntos para repartir en idiomas.              # posiblemente crearía instancias nuevas de la clase idioma. Comprobar.
692          self.__ptos_max = 13              self.__idiomas = {}
693          self.__ptos = 13              for idioma in self.__raza.idiomas_base.keys():
694          for idioma in self.__idiomas.keys():                  self.__idiomas[idioma] = self.__raza.idiomas_base[idioma]
695              self.__ptos -= self.__idiomas[idioma]  
696                # Y los puntos para repartir en idiomas.
697                self.__ptos_idiomas_max = 13
698                self.__ptos_idiomas = 13
699                for idioma in self.__idiomas.keys():
700                    self.__ptos_idiomas -= self.__idiomas[idioma]
701    
702          self.conn().send('')          self.conn().send('')
703          self.conn().send('Ahora tienes otros 13 puntos para repartir entre los')          self.conn().send('Ahora tienes otros 13 puntos para repartir entre los')
# Line 557  class DialogoCrear(Dialogo): Line 710  class DialogoCrear(Dialogo):
710          self.conn().send('No es recomendable bajar mucho el oestron ni el')          self.conn().send('No es recomendable bajar mucho el oestron ni el')
711          self.conn().send('idioma natal del personaje (los que lo tengan).')          self.conn().send('idioma natal del personaje (los que lo tengan).')
712          self.conn().send('')          self.conn().send('')
713          self.conn().send(color(31)+'------ Pulsa ENTER ------ '+finl,0)          self.conn().send(color(31) + '------ Pulsa ENTER ------ ' + finl, 0)
714    
715          return None          return None
716                    
# Line 571  class DialogoCrear(Dialogo): Line 724  class DialogoCrear(Dialogo):
724          self.conn().send('')          self.conn().send('')
725          self.conn().send(color(32) + 'Tus niveles actuales de idiomas son:')          self.conn().send(color(32) + 'Tus niveles actuales de idiomas son:')
726          for idioma in self.__idiomas.keys():          for idioma in self.__idiomas.keys():
727              self.conn().send(idioma.nombre + "[0-5]: " + str(self.__idiomas[idioma]))              self.conn().send("%-10s" % (idioma.nombre), 0)
728                self.conn().send("[0-5]: " + str(self.__idiomas[idioma]))
729          self.conn().send(finl)          self.conn().send(finl)
730          self.conn().send(color(33) + 'Tienes '+ str(self.__ptos)+' puntos para repartir')          self.conn().send(color(33) + 'Tienes '+ str(self.__ptos_idiomas)+' puntos para repartir')
731          self.conn().send('Idioma a modificar (escribe "fin" para terminar): ' + finl, 0)          self.conn().send('Idioma a modificar (escribe "fin" para terminar) ' + color(32) + '(? - +): ' + finl, 0)
732          return None          return None
733    
734                    
# Line 583  class DialogoCrear(Dialogo): Line 737  class DialogoCrear(Dialogo):
737          if len(cmd_list) == 0:          if len(cmd_list) == 0:
738              self.conn().send('')              self.conn().send('')
739              dlg = self.estado_13()              dlg = self.estado_13()
740          elif cmd_list[0] == "?":          elif cmd_list[0] == '?':
741              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')
742              self.conn().send('que quieres sumarle (o restar si es negativo).')              self.conn().send('que quieres sumarle (o restar si es negativo).')
743              self.conn().send('Por ejemplo, enano 3 o quenya -1.')              self.conn().send('Por ejemplo, enano 3 o quenya -1.')
744              dlg = self.estado_13()              dlg = self.estado_13()
745            elif cmd_list[0] == '-':
746                self.conn().send('')
747                dlg = self.estado_9()
748            elif cmd_list[0] == '+':
749                if self.__idiomas_ok == 0:
750                    self.conn().send('Antes de avanzar tienes que terminar de definir los idiomas.')
751                    dlg = self.estado_13()
752                else:
753                    self.conn().send('')
754                    dlg = self.estado_16()
755          elif len(cmd_list) == 1 and cmd_list[0] == "fin":          elif len(cmd_list) == 1 and cmd_list[0] == "fin":
756              dlg = self.estado_14()              dlg = self.estado_14()
757          elif len(cmd_list) != 2:          elif len(cmd_list) != 2:
# Line 606  class DialogoCrear(Dialogo): Line 770  class DialogoCrear(Dialogo):
770                      self.conn().send(cmd_list[1] + " no es un numero valido.")                      self.conn().send(cmd_list[1] + " no es un numero valido.")
771                      raise ValueError                      raise ValueError
772    
773                  if self.__ptos - valor < 0:                  if self.__ptos_idiomas - valor < 0:
774                      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.")
775                      raise ValueError                      raise ValueError
776    
777                  if self.__ptos - valor > self.__ptos_max:                  if self.__ptos_idiomas - valor > self.__ptos_idiomas_max:
778                      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.")
779                      raise ValueError                      raise ValueError
780    
# Line 625  class DialogoCrear(Dialogo): Line 789  class DialogoCrear(Dialogo):
789                      raise ValueError                      raise ValueError
790    
791                  self.__idiomas[idioma] = valor_idioma + valor                  self.__idiomas[idioma] = valor_idioma + valor
792                  self.__ptos -= valor                  self.__ptos_idiomas -= valor
793    
794              except ValueError:              except ValueError:
795                  pass                  pass
# Line 638  class DialogoCrear(Dialogo): Line 802  class DialogoCrear(Dialogo):
802      def estado_14(self):      def estado_14(self):
803          dlg = None          dlg = None
804          self.poner_estado(14)          self.poner_estado(14)
805          if self.__ptos != 0:          if self.__ptos_idiomas != 0:
806              self.conn().send("Todavia tienes puntos por repartir.")              self.conn().send("Todavia tienes puntos por repartir.")
807              self.conn().send("¿Estas seguro de que quieres terminar?")              self.conn().send("¿Estas seguro de que quieres terminar?")
808          else:          else:
809              dlg = self.estado_15()              self.__idiomas_ok = 1
810                dlg = self.estado_16()
811          return dlg          return dlg
812                            
813                    
# Line 653  class DialogoCrear(Dialogo): Line 818  class DialogoCrear(Dialogo):
818          elif cmd_list[0] == "no":          elif cmd_list[0] == "no":
819              dlg = self.estado_13()              dlg = self.estado_13()
820          elif cmd_list[0] == "si":          elif cmd_list[0] == "si":
821              dlg = self.estado_15()              self.__idiomas_ok = 1
822                dlg = self.estado_16()
823          else:          else:
824              self.conn().send("Introduce si o no, por favor")              self.conn().send("Introduce si o no, por favor")
825              dlg = self.estado_14()              dlg = self.estado_14()
826          return dlg          return dlg
827    
828            
829        def estado_16(self):
830            self.poner_estado(16)
831    
832      def estado_15(self):          if self.__descripcion_ok == None:
833          self.conn().send('Los puntos de vida son el doble que la Constitucion',0)              self.__descripcion_ok = 0
834          self.__vida = self.__atrib["constitucion"] * 2              self.__descripcion_especial_ok = 0
835                self.__descripcion = deepcopy(self.__raza.descripcion_base)
         del self.__ptos  
         del self.__ptos_max  
836    
837          self.conn().send('\n\nHemos llegado 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.')
838          self.conn().send('')          self.conn().send('')
839          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')
840          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')      
841          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.')
842          self.conn().send('')          self.conn().send('')
843    
844          self.__descripcion = deepcopy(self.__raza.descripcion_base)          if len(self.__descripcion) > 0:
845                self.conn().send(color(31) + self.__descripcion[0]["texto"] + finl + '\n')
846          return self.estado_16()          else:
847                self.conn().send(color(31) + "(vacia)" + finl + '\n')
           
     def estado_16(self):  
         self.poner_estado(16)  
         for item in self.__descripcion:  
             self.conn().send(color(31) + item["texto"] + finl + '\n')  
848                    
849          self.conn().send(color(33) + '¿Deseas conservar esta descripción? (S/n): ' + finl, 0)          self.conn().send(color(33) + '¿Deseas conservar esta descripción (S/n)? ' + color(32) + '(? - +): '+ finl, 0)
850          return None          return None
851    
852    
# Line 697  class DialogoCrear(Dialogo): Line 859  class DialogoCrear(Dialogo):
859              self.__descripcion = []              self.__descripcion = []
860              dlg = self.estado_17()              dlg = self.estado_17()
861          elif cmd_list[0] == 's' or cmd_list[0] == 'si':          elif cmd_list[0] == 's' or cmd_list[0] == 'si':
862                self.__descripcion_ok = 1
863              dlg = self.estado_18()              dlg = self.estado_18()
864            elif cmd_list[0] == '-':
865                self.conn().send('')
866                dlg = self.estado_12()
867            elif cmd_list[0] == '+':
868                if self.__descripcion_ok == 0:
869                    self.conn().send('Antes de avanzar tienes que terminar de definir tu descripcion.')
870                    dlg = self.estado_16()
871                else:
872                    self.conn().send('')
873                    dlg = self.estado_18()
874          else:          else:
875              self.conn().send('Por favor, responde "si" o "no"')              self.conn().send('Por favor, responde "si" o "no"')
876              dlg = self.estado_16()              dlg = self.estado_16()
# Line 714  class DialogoCrear(Dialogo): Line 887  class DialogoCrear(Dialogo):
887      def comando_17(self, cmd_list):      def comando_17(self, cmd_list):
888          dlg = None          dlg = None
889          if len(cmd_list) == 0:          if len(cmd_list) == 0:
890                self.conn().send('La descripcion no puede ir vacia')
891              dlg = self.estado_17()              dlg = self.estado_17()
892          else:          else:
893              texto = " ".join(cmd_list)              texto = " ".join(cmd_list)
# Line 728  class DialogoCrear(Dialogo): Line 902  class DialogoCrear(Dialogo):
902          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')
903          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,')
904          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')
905          self.conn().send('repecursión "práctica" en Minë.')          self.conn().send('repecursión "práctica" en Minë. Tu descripcion especial actual es:')
906            self.conn().send('')
907    
908            if len(self.__descripcion) > 1:
909                self.conn().send(color(31) + self.__descripcion[1]["texto"] + finl + '\n')
910            else:
911                self.conn().send(color(31) + "(vacia)" + finl + '\n')
912                    
913          self.conn().send(color(33) + '¿Deseas añadir esta descripción especial? (S/n): ' + finl, 0)          self.conn().send(color(33) + '¿Deseas conservar esta descripción especial (S/n)?  ' + color(32) + '(? - +): '+ finl, 0)
914          return None          return None
915    
916    
917      def comando_18(self, cmd_list):      def comando_18(self, cmd_list):
918          dlg = None          dlg = None
919          if cmd_list == []:          if len(cmd_list) == 0:
920              cmd_list = ['s']              cmd_list = ['s']
921    
922          if cmd_list[0] == 'n' or cmd_list[0] == 'no':          if cmd_list[0] == 'n' or cmd_list[0] == 'no':
923              dlg = self.estado_20()              if len(self.__descripcion) > 1:
924          elif cmd_list[0] == 's' or cmd_list[0] == 'si':                  del self.__descripcion[1]
925              dlg = self.estado_19()              dlg = self.estado_19()
926            elif cmd_list[0] == 's' or cmd_list[0] == 'si':
927                self.__descripcion_especial_ok = 1
928                dlg = self.estado_20()
929            elif cmd_list[0] == '-':
930                self.conn().send('')
931                dlg = self.estado_16()
932            elif cmd_list[0] == '+':
933                if self.__descripcion_especial_ok == 0:
934                    self.conn().send('Antes de avanzar tienes que definir tu descripcion especial.')
935                    dlg = self.estado_18()
936                else:
937                    self.conn().send('')
938                    dlg = self.estado_20()
939          else:          else:
940              self.conn().send('Por favor, responde "si" o "no"')              self.conn().send('Por favor, responde "si" o "no"')
941              dlg = self.estado_18()              dlg = self.estado_18()
# Line 759  class DialogoCrear(Dialogo): Line 952  class DialogoCrear(Dialogo):
952      def comando_19(self, cmd_list):      def comando_19(self, cmd_list):
953          dlg = None          dlg = None
954          if len(cmd_list) == 0:          if len(cmd_list) == 0:
955              dlg = self.estado_19()              if len(self.__descripcion) > 1:
956                    del self.__descripcion[1]
957                dlg = self.estado_18()
958          else:          else:
959              texto = " ".join(cmd_list)              texto = " ".join(cmd_list)
960              self.__descripcion.append({"dificultad":30, "texto":texto})              self.__descripcion.append({"dificultad":30, "texto":texto})
961              dlg = self.estado_20()              dlg = self.estado_18()
962          return dlg          return dlg
963    
964                    
# Line 772  class DialogoCrear(Dialogo): Line 967  class DialogoCrear(Dialogo):
967    
968          self.poner_estado(20)          self.poner_estado(20)
969    
970            #%%self.conn().send('Los puntos de vida son el doble que la Constitucion',0)
971            self.__vida = self.__atrib["constitucion"] * 2
972    
973          # 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
974          # en cuenta masculino y femenino).          # en cuenta masculino y femenino).
975          self.__nombre = self.__id + " " + \          self.__nombre = self.__id + " " + \

Legend:
Removed from v.1.4  
changed lines
  Added in v.1.5

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