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

Diff of /ambar/dialogonormal.py

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

revision 2.10 by amoyav, Thu Aug 29 13:16:28 2002 UTC revision 2.11 by amoyav, Thu Aug 29 17:00:53 2002 UTC
# Line 29  from sala import * Line 29  from sala import *
29  from logo import *  from logo import *
30  from utils import *  from utils import *
31  from idioma import *  from idioma import *
32    from personajejugador import *
33  import ayuda  import ayuda
34    
35  class DialogoNormal(Dialogo):  class DialogoNormal(Dialogo):
# Line 48  class DialogoNormal(Dialogo): Line 49  class DialogoNormal(Dialogo):
49                           '+susurrar','+susurrarq','+susurrare','+susurraro','+gritar','+gritarq','+gritare','+gritaro',\                           '+susurrar','+susurrarq','+susurrare','+susurraro','+gritar','+gritarq','+gritare','+gritaro',\
50                           '+idioma','+actuar','+decir','+preguntar','+atacar','+coger','+dejar','+esconder','+mochila',\                           '+idioma','+actuar','+decir','+preguntar','+atacar','+coger','+dejar','+esconder','+mochila',\
51                           '+examinar','+usar','+estadisticas','+mirar','+mr','+area','+observar','+silencio','+confiar','+noconfiar',\                           '+examinar','+usar','+estadisticas','+mirar','+mr','+area','+observar','+silencio','+confiar','+noconfiar',\
52                           '+dar','+amigos']                           '+dar','+amigos', '+recapitular']
53    
54      COMANDOS_MAIAR =  ['+entorno','+ent','+listar','+localizar','+loc']      COMANDOS_MAIAR =  ['+entorno','+ent','+listar','+localizar','+loc']
55    
# Line 96  class DialogoNormal(Dialogo): Line 97  class DialogoNormal(Dialogo):
97    
98      def entra_personaje(self, personaje):      def entra_personaje(self, personaje):
99          if self.__personaje.silencio == "no":          if self.__personaje.silencio == "no":
100              self.conn().send(color(35) + personaje.id + " ha entrado" + finl)              if isinstance(personaje, PersonajeJugador):
101                    self.conn().send(color(35) + personaje.id + " ha entrado" + finl)
102                else:
103                    self.conn().send(color(35) + personaje.nombre + " ha entrado" + finl)
104                                                    
105                                                    
106      def sale_personaje(self, personaje, nombre_sala_destino):      def sale_personaje(self, personaje, nombre_sala_destino):
107          if self.__personaje.silencio == "no":          if self.__personaje.silencio == "no":
108              self.conn().send(color(35) + personaje.id + " se va hacia " +              if isinstance(personaje, PersonajeJugador):
109                               nombre_sala_destino + finl)                  self.conn().send(color(35) + personaje.id + " se va hacia " +
110                                     nombre_sala_destino + finl)
111                else:
112                    self.conn().send(color(35) + personaje.nombre + " se va hacia " +
113                                     nombre_sala_destino + finl)
114                                                    
115                                                    
116      def habla_personaje(self, personaje, mensaje):      def habla_personaje(self, personaje, mensaje):
117          self.conn().send("\n"+ personaje.id + " dice: " + personaje.color_texto() + mensaje +'  ' + finl)          if isinstance(personaje, PersonajeJugador):
118                self.conn().send("\n"+ personaje.id + " dice: " + personaje.color_texto() + mensaje +'  ' + finl)
119            else:
120                self.conn().send("\n"+ personaje.nombre + " dice: " + personaje.color_texto() + mensaje +'  ' + finl)
121    
122                    
123      def susurra_personaje(self, personaje, mensaje):      def susurra_personaje(self, personaje, mensaje):
124          self.conn().send(personaje.id + " susurra: " + personaje.color_texto()  + mensaje + finl)          if isinstance(personaje, PersonajeJugador):
125                self.conn().send(personaje.id + " susurra: " + personaje.color_texto()  + mensaje + finl)
126            else:
127                self.conn().send(personaje.nombre + " susurra: " + personaje.color_texto()  + mensaje + finl)
128    
129                    
130      def grita_personaje(self, personaje, mensaje):      def grita_personaje(self, personaje, mensaje):
131          if self.__personaje.silencio == "no":          if self.__personaje.silencio == "no":
132              self.conn().send("\n" + color(35) + personaje.id + " grita: " + personaje.color_texto()  + mensaje + finl)              if isinstance(personaje, PersonajeJugador):
133                    self.conn().send("\n" + color(35) + personaje.id + " grita: " + personaje.color_texto()  + mensaje + finl)
134                else:
135                    self.conn().send("\n" + color(35) + personaje.nombre + " grita: " + personaje.color_texto()  + mensaje + finl)
136    
137    
138      def actua_personaje(self, personaje, accion):      def actua_personaje(self, personaje, accion):
139          if self.__personaje.silencio == "no":          if self.__personaje.silencio == "no":
140              self.conn().send(personaje.id +  " " + accion)              if isinstance(personaje, PersonajeJugador):
141                    self.conn().send(personaje.id +  " " + accion)
142                else:
143                    self.conn().send(personaje.nombre +  " " + accion)
144    
145    
146      def actua_individual_personaje(self, personaje, accion):      def actua_individual_personaje(self, personaje, accion):
147          self.conn().send(personaje.color_texto() + personaje.id + ' ' + accion + finl)          if isinstance(personaje, PersonajeJugador):
148                self.conn().send(personaje.color_texto() + personaje.id + ' ' + accion + finl)
149            else:
150                self.conn().send(personaje.color_texto() + personaje.nombre + ' ' + accion + finl)
151    
152            
153      def actua_uno_mismo(self, accion):      def actua_uno_mismo(self, accion):
# Line 133  class DialogoNormal(Dialogo): Line 156  class DialogoNormal(Dialogo):
156                                                    
157      def actua_global_personaje(self, personaje, accion):      def actua_global_personaje(self, personaje, accion):
158          if self.__personaje.silencio == "no":          if self.__personaje.silencio == "no":
159              self.conn().send(color(35) + personaje.id + " " + accion + finl)              if isinstance(personaje, PersonajeJugador):
160                    self.conn().send(color(35) + personaje.id + " " + accion + finl)
161                else:
162                    self.conn().send(color(35) + personaje.nombre + " " + accion + finl)
163                                                    
164                                                    
165      def suceso_entorno(self, suceso):      def suceso_entorno(self, suceso):
# Line 302  class DialogoNormal(Dialogo): Line 328  class DialogoNormal(Dialogo):
328                      self.conn().send(linea)                      self.conn().send(linea)
329                  self.estado_0()                  self.estado_0()
330    
                   
331              elif accion == "+sus" or accion == "+susurrar":              elif accion == "+sus" or accion == "+susurrar":
332                  try:                  try:
333                      oyente = args[0]                      oyente = args[0]
# Line 313  class DialogoNormal(Dialogo): Line 338  class DialogoNormal(Dialogo):
338                      self.estado_0()                      self.estado_0()
339                  self.estado_0()                  self.estado_0()
340    
   
                   
341              elif accion == "+susq" or accion == "+susurrarq":              elif accion == "+susq" or accion == "+susurrarq":
342                  try:                  try:
343                      oyente = args[0]                      oyente = args[0]
# Line 325  class DialogoNormal(Dialogo): Line 348  class DialogoNormal(Dialogo):
348                      self.estado_0()                      self.estado_0()
349                  self.estado_0()                  self.estado_0()
350    
                   
351              elif accion == "+suse" or accion == "+susurrare":              elif accion == "+suse" or accion == "+susurrare":
352                  try:                  try:
353                      oyente = args[0]                      oyente = args[0]
# Line 346  class DialogoNormal(Dialogo): Line 368  class DialogoNormal(Dialogo):
368                      self.estado_0()                      self.estado_0()
369                  self.estado_0()                  self.estado_0()
370    
                   
371              elif accion == "+h" or accion == "+hablar":              elif accion == "+h" or accion == "+hablar":
372                  mensaje = " ".join(args)                  mensaje = " ".join(args)
373                  self.cmd_hablar(mensaje, idioma=Idioma_oestron)                  self.cmd_hablar(mensaje, idioma=Idioma_oestron)
# Line 578  class DialogoNormal(Dialogo): Line 599  class DialogoNormal(Dialogo):
599                  self.conn().send("Error, comando no reconocido. Escribe '+?' y pulsa ENTER")                  self.conn().send("Error, comando no reconocido. Escribe '+?' y pulsa ENTER")
600                  self.conn().send("para una lista de comandos.")                  self.conn().send("para una lista de comandos.")
601                  self.estado_0()                  self.estado_0()
   
602                                    
603              else:              else:
604                  mensaje = accion + ' ' + " ".join(args)                  mensaje = accion + ' ' + " ".join(args)
# Line 586  class DialogoNormal(Dialogo): Line 606  class DialogoNormal(Dialogo):
606                  self.estado_0()                  self.estado_0()
607    
608    
   
609      def parsear_ident_objeto(self, args, comando):      def parsear_ident_objeto(self, args, comando):
610          """Pequeña funcion utilitaria para parsear la secuencia          """Pequeña funcion utilitaria para parsear la secuencia
611          [<id_receptor>] [<cantidad>] id_objeto [<n_orden>] [<n_instancia>].          [<id_receptor>] [<cantidad>] id_objeto [<n_orden>] [<n_instancia>].
# Line 799  class DialogoNormal(Dialogo): Line 818  class DialogoNormal(Dialogo):
818                                
819                self.conn().send("Localizar a un personaje (Sólo Maiar): " +                self.conn().send("Localizar a un personaje (Sólo Maiar): " +
820                                 color(31) + '+[loc]alizar <nombre>' + finl)                                 color(31) + '+[loc]alizar <nombre>' + finl)
821    
822                self.conn().send("Lista de jugadores de Minë (Sólo Maiar): " +                self.conn().send("Lista de jugadores de Minë (Sólo Maiar): " +
823                                 color(31) + '+listar' + finl)                                 color(31) + '+listar' + finl)
824                                
# Line 835  class DialogoNormal(Dialogo): Line 855  class DialogoNormal(Dialogo):
855                                 color(31) + "+idioma <idioma>" + finl)                                 color(31) + "+idioma <idioma>" + finl)
856                self.conn().send("Describir sucesos del entorno (Sólo Maiar): " +                self.conn().send("Describir sucesos del entorno (Sólo Maiar): " +
857                                 color(31) + '+[ent]orno <texto>' + finl)                                 color(31) + '+[ent]orno <texto>' + finl)
858    
859                self.conn().send("Entablar una conversación con un PNJ: " +                self.conn().send("Entablar una conversación con un PNJ: " +
860                                 color(31) + '+decir <pnj> <texto>' + finl)                                 color(31) + '+decir <pnj> <texto>' + finl)
861                self.conn().send("Preguntar al PNJ por un tema: " +                self.conn().send("Preguntar al PNJ por un tema: " +
862                                 color(31) + '+[p]reguntar <pnj> <texto>' + finl)                                 color(31) + '+[p]reguntar <pnj> <texto>' + finl)
863                                self.conn().send("Recordar los temas hablados con un PNJ: " +
864                                   color(31) + '+[recap]itular <pnj>' + finl)
865                
866            elif args[0] == "ataque":            elif args[0] == "ataque":
867                                
868                self.conn().send(color(33)+" Ataque\n"+finl)                              self.conn().send(color(33)+" Ataque\n"+finl)              
# Line 872  class DialogoNormal(Dialogo): Line 895  class DialogoNormal(Dialogo):
895                        
896                            
897      def cmd_recapitular(self, argumentos):      def cmd_recapitular(self, argumentos):
         pnjs = filter(lambda p: isinstance(p, PersonajeNoJugador), self.__personaje.sala.personajes.values())  
898    
899          pnjs_ids = []          if len(argumentos) != 1:
900          for pnj in pnjs: pnjs_ids.append(pnj.id.split('%')[0])              self.conn().send("Debes decir de qué personaje quieres recapitular.")
901                return
902    
903          try:          pnjs = self.__personaje.sala.personajes
904              if argumentos[0] in pnjs_ids:  
905                  pnj = pnjs[pnjs_ids.index(argumentos[0])]          encontrado = 0
906                  argumentos = argumentos[1:]          for pnj in pnjs.values():
907              else:              if normalizar_id(argumentos[0]) == extraer_id(pnj.nombre):
908                  self.conn().send("No conoces nadie llamado %s\n" % argumentos[0])                 argumentos = argumentos[1:]
909                  return                 encontrado = 1
910          except:                 break
911              self.conn().send("¿De qué personaje quieres recordar la conversación?\n")  
912            if encontrado == 0:
913                self.conn().send("No conoces a nadie llamado " + argumentos[0])
914              return              return
915            
916          from interfazpnjhablante import InterfazPNJHablante          from interfazpnjhablante import InterfazPNJHablante
917          if not isinstance(pnj.controlador, InterfazPNJHablante):          if not isinstance(pnj.controlador, InterfazPNJHablante):
918              self.conn().send(pnj.id + " no responde.\n")              self.conn().send(pnj.id + " no responde.\n")
# Line 930  class DialogoNormal(Dialogo): Line 955  class DialogoNormal(Dialogo):
955                  self.conn().send("No puedes recapitular esta conversación. Por favor, habla con algun administrador de Mine.")                  self.conn().send("No puedes recapitular esta conversación. Por favor, habla con algun administrador de Mine.")
956          return          return
957            
958    
959      def cmd_hablar_pnj(self, comando, argumentos):      def cmd_hablar_pnj(self, comando, argumentos):
960    
961          if len(argumentos) < 2:          if len(argumentos) < 2:
962              self.conn().send("Debes decir o preguntar a alguien por algo.")              self.conn().send("Debes decir o preguntar a alguien por algo.")
963              return              return
964    
965          pnjs = filter(lambda p: isinstance(p, PersonajeNoJugador), self.__personaje.sala.personajes.values())          pnjs = self.__personaje.sala.personajes
966          pnjs_ids = []  
967          for pnj in pnjs: pnjs_ids.append(pnj.id.split('%')[0])          encontrado = 0
968            for pnj in pnjs.values():
969          if argumentos[0] in pnjs_ids:              if normalizar_id(argumentos[0]) == extraer_id(pnj.nombre):
970              pnj = pnjs[pnjs_ids.index(argumentos[0])]                 argumentos = argumentos[1:]
971              argumentos = argumentos[1:]                 encontrado = 1
972          else:                 break
973    
974            if encontrado == 0:
975              self.conn().send("No has indicado correctamente con quién deseas hablar\n")              self.conn().send("No has indicado correctamente con quién deseas hablar\n")
976              return              return
977                    
# Line 953  class DialogoNormal(Dialogo): Line 981  class DialogoNormal(Dialogo):
981              return                    return      
982                    
983          try:          try:
984              pnj.controlador.conversa_personaje(self.__personaje, comando, string.join(argumentos, ' '))              pnj.controlador.conversa_personaje(self.__personaje, comando,
985                                                   string.join(argumentos, ' '))
986          except Exception:          except Exception:
987              # Conviene protegerse contra errores en carga de pnjs. No es bueno que por              # Conviene protegerse contra errores en carga de pnjs. No es bueno que por
988              # un fichero de pnj mal escrito pete el servidor entero o te eche de la              # un fichero de pnj mal escrito pete el servidor entero o te eche de la
# Line 963  class DialogoNormal(Dialogo): Line 992  class DialogoNormal(Dialogo):
992              if self.conn().is_open:              if self.conn().is_open:
993                  self.conn().send("Ha habido un error interno del programa referente a esta conversación.")                  self.conn().send("Ha habido un error interno del programa referente a esta conversación.")
994                  self.conn().send("No puedes hacer esta pregunta. Por favor, habla con algun administrador de Mine. Puedes escribir a mine_ste@yahoogroups.com.")                  self.conn().send("No puedes hacer esta pregunta. Por favor, habla con algun administrador de Mine. Puedes escribir a mine_ste@yahoogroups.com.")
         return  
       
         pnjs = filter(lambda p: p.__module__ == "personajenojugador", self.__personaje.sala.personajes.values())  
         if len(pnjs) != 1:  
             self.conn().send("¿Con quién quieres hablar?\n")  
             return  
         pnj = pnjs[0]          
         pnj.interfaz  
995    
996    
997      def cmd_mover(self, id_sala_destino):      def cmd_mover(self, id_sala_destino):
# Line 1011  class DialogoNormal(Dialogo): Line 1032  class DialogoNormal(Dialogo):
1032                  if id_lider != None:                  if id_lider != None:
1033                      self.conn().send('Ya no estas siguiendo a ' + id_lider)                      self.conn().send('Ya no estas siguiendo a ' + id_lider)
1034            
1035    
1036      def cmd_amigos(self, id_amigo):      def cmd_amigos(self, id_amigo):
1037          self.__personaje.ids_amigos.append(id_amigo)          self.__personaje.ids_amigos.append(id_amigo)
1038          self.conn().send("Has añadido a "+id_amigo+" a tu lista de personas de confianza.")          self.conn().send("Has añadido a "+id_amigo+" a tu lista de personas de confianza.")
1039    
1040    
1041      def cmd_listar_amigos(self):      def cmd_listar_amigos(self):
1042          self.conn().send("-> Lista de personas de confianza <-")          self.conn().send("-> Lista de personas de confianza <-")
1043          self.conn().send('')          self.conn().send('')
# Line 1022  class DialogoNormal(Dialogo): Line 1045  class DialogoNormal(Dialogo):
1045              if self.__personaje.ids_amigos[key] > 0:              if self.__personaje.ids_amigos[key] > 0:
1046                  self.conn().send(self.__personaje.color_texto() + '\t'+ key + finl)                  self.conn().send(self.__personaje.color_texto() + '\t'+ key + finl)
1047            
1048    
1049      def cmd_silencio(self):      def cmd_silencio(self):
1050          if self.__personaje.silencio == 'no':          if self.__personaje.silencio == 'no':
1051              self.__personaje.silencio = 'sí'              self.__personaje.silencio = 'sí'
# Line 1134  class DialogoNormal(Dialogo): Line 1158  class DialogoNormal(Dialogo):
1158                           (self.__personaje.color_de_pelo,                           (self.__personaje.color_de_pelo,
1159                            self.__personaje.idiomas[Idioma_oestron],                            self.__personaje.idiomas[Idioma_oestron],
1160                            self.__personaje.atrib["carisma"]))                            self.__personaje.atrib["carisma"]))
1161          self.conn().send("El idioma en el que hablas es: %s " % (self.__personaje.idioma_base))          self.conn().send("El idioma en el que hablas es: %s " % (self.__personaje.idioma_base.nombre))
1162          self.conn().send(color(31) + "-------------------------------------------------------------------" + finl)          self.conn().send(color(31) + "-------------------------------------------------------------------" + finl)
1163                    
1164                    

Legend:
Removed from v.2.10  
changed lines
  Added in v.2.11

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