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): |
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 |
|
|
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): |
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): |
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] |
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] |
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] |
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) |
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) |
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>]. |
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 |
|
|
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) |
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") |
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 |
|
|
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 |
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): |
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('') |
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í' |
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 |
|
|