45 |
|
|
46 |
COMANDOS_POSIBLES = ['+salir','+doc','+ip','+seguir','+noseguir','+hablar','+hablarq','+hablaro', |
COMANDOS_POSIBLES = ['+salir','+doc','+ip','+seguir','+noseguir','+hablar','+hablarq','+hablaro', |
47 |
'+hablare', '+susurrar','+susurrarq','+susurrare','+susurraro','+gritar', |
'+hablare', '+susurrar','+susurrarq','+susurrare','+susurraro','+gritar', |
48 |
'+gritarq','+gritare','+gritaro','+idioma','+actuar','+decir','+preguntar', |
'+gritarq','+gritare','+gritaro','+idioma','+actuar','+decir','+preguntar', |
49 |
'+atacar','+coger','+dejar','+esconder','+mochila','+examinar','+usar', |
'+atacar','+coger','+dejar','+esconder','+mochila','+examinar','+usar', |
50 |
'+comer','+beber','+estadisticas','+mirar','+mr','+area','+observar', |
'+comer','+beber','+estadisticas','+mirar','+mr','+area','+observar', |
51 |
'+silencio','+confiar','+noconfiar','+dar','+amigos','+recapitular','+reloj', |
'+silencio','+confiar','+noconfiar','+dar','+amigos','+recapitular','+reloj', |
52 |
'+poner','+quitar'] |
'+poner','+quitar'] |
53 |
|
|
54 |
COMANDOS_MAIAR = ['+entorno','+ent','+listar','+localizar','+loc'] |
COMANDOS_MAIAR = ['+entorno','+ent','+listar','+localizar','+loc'] |
55 |
|
|
57 |
'+suroeste', '+oeste', '+noroeste', '+arriba', '+abajo'] |
'+suroeste', '+oeste', '+noroeste', '+arriba', '+abajo'] |
58 |
|
|
59 |
COMANDOS_ABREV_DIR = {'+n':'+norte', '+ne':'+noreste', '+e':'+este', '+se':'+sureste', |
COMANDOS_ABREV_DIR = {'+n':'+norte', '+ne':'+noreste', '+e':'+este', '+se':'+sureste', |
60 |
'+s':'+sur', '+so': '+suroeste', '+o':'+oeste', '+no':'+noroeste', |
'+s':'+sur', '+so': '+suroeste', '+o':'+oeste', '+no':'+noroeste', |
61 |
'+ar':'+arriba', '+ab':'+abajo'} |
'+ar':'+arriba', '+ab':'+abajo'} |
62 |
|
|
63 |
|
|
64 |
def __init__(self, padre, conn, personaje): |
def __init__(self, padre, conn, personaje): |
65 |
Dialogo.__init__(self, padre, conn) |
Dialogo.__init__(self, padre, conn) |
66 |
self.__personaje = personaje |
self.__personaje = personaje |
67 |
|
self.__inactivo = 0 |
68 |
|
|
69 |
self.lanzar_tirada_percep_sala() |
self.lanzar_tirada_percep_sala() |
70 |
|
|
71 |
self.cmd_estadisticas() |
self.cmd_estadisticas() |
72 |
|
|
73 |
self.conn().send('La apariencia de tu personaje es:') |
self.conn().send('La apariencia de tu personaje es:') |
74 |
for item in self.__personaje.descripcion: |
for item in self.__personaje.descripcion: |
75 |
self.conn().send(color(31) + item["texto"] + "\n" + finl) |
self.conn().send(color(31) + item["texto"] + "\n" + finl) |
76 |
|
|
77 |
self.cmd_mirar() |
self.cmd_mirar() |
78 |
|
|
79 |
self.conn().send("IMPORTANTE: los comandos se escriben empezando con el carácter +.") |
self.conn().send("IMPORTANTE: los comandos se escriben empezando con el carácter +.") |
80 |
self.conn().send("Escribe +? para leer la ayuda.") |
self.conn().send("Escribe +? para leer la ayuda.") |
81 |
self.conn().send("Para hablar, simplemente escribe algo sin + delante.") |
self.conn().send("Para hablar, simplemente escribe algo sin + delante.") |
82 |
self.conn().send('') |
self.conn().send('') |
83 |
if self.__personaje.es_maia: self.conn().send("Eres un Maia de Minë.") |
if self.__personaje.es_maia: self.conn().send("Eres un Maia de Minë.") |
84 |
self.conn().send('') |
self.conn().send('') |
96 |
# ------------------------------------------- |
# ------------------------------------------- |
97 |
|
|
98 |
def entra_personaje(self, personaje): |
def entra_personaje(self, personaje): |
99 |
if self.__personaje.silencio == "no": |
if self.__personaje.silencio == "no": |
100 |
if isinstance(personaje, PersonajeJugador): |
if isinstance(personaje, PersonajeJugador): |
101 |
self.conn().send(color(35) + personaje.id + " ha entrado" + finl) |
self.conn().send(color(35) + personaje.id + " ha entrado" + finl) |
102 |
else: |
else: |
103 |
self.conn().send(color(35) + personaje.nombre + " ha entrado" + finl) |
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 |
if isinstance(personaje, PersonajeJugador): |
if isinstance(personaje, PersonajeJugador): |
109 |
self.conn().send(color(35) + personaje.id + " se va hacia " + |
self.conn().send(color(35) + personaje.id + " se va hacia " + |
110 |
nombre_sala_destino + finl) |
nombre_sala_destino + finl) |
111 |
else: |
else: |
112 |
self.conn().send(color(35) + personaje.nombre + " se va hacia " + |
self.conn().send(color(35) + personaje.nombre + " se va hacia " + |
113 |
nombre_sala_destino + finl) |
nombre_sala_destino + finl) |
114 |
|
|
115 |
|
|
116 |
def habla_personaje(self, personaje, mensaje): |
def habla_personaje(self, personaje, mensaje): |
117 |
if isinstance(personaje, PersonajeJugador): |
if isinstance(personaje, PersonajeJugador): |
118 |
self.conn().send("\n"+ personaje.id + " dice: " + personaje.color_texto() + mensaje +' ' + finl) |
self.conn().send("\n"+ personaje.id + " dice: " + personaje.color_texto() + mensaje +' ' + finl) |
119 |
else: |
else: |
120 |
self.conn().send("\n"+ personaje.nombre + " dice: " + personaje.color_texto() + mensaje +' ' + finl) |
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 |
if isinstance(personaje, PersonajeJugador): |
if isinstance(personaje, PersonajeJugador): |
125 |
self.conn().send(personaje.id + " susurra: " + personaje.color_texto() + mensaje + finl) |
self.conn().send(personaje.id + " susurra: " + personaje.color_texto() + mensaje + finl) |
126 |
else: |
else: |
127 |
self.conn().send(personaje.nombre + " susurra: " + personaje.color_texto() + mensaje + finl) |
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 |
if isinstance(personaje, PersonajeJugador): |
if isinstance(personaje, PersonajeJugador): |
133 |
self.conn().send("\n" + color(35) + personaje.id + " grita: " + personaje.color_texto() + mensaje + finl) |
self.conn().send("\n" + color(35) + personaje.id + " grita: " + personaje.color_texto() + mensaje + finl) |
134 |
else: |
else: |
135 |
self.conn().send("\n" + color(35) + personaje.nombre + " grita: " + personaje.color_texto() + mensaje + finl) |
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 |
if isinstance(personaje, PersonajeJugador): |
if isinstance(personaje, PersonajeJugador): |
141 |
self.conn().send(personaje.id + " " + accion) |
self.conn().send(personaje.id + " " + accion) |
142 |
else: |
else: |
143 |
self.conn().send(personaje.nombre + " " + accion) |
self.conn().send(personaje.nombre + " " + accion) |
144 |
|
|
145 |
|
|
146 |
def actua_individual_personaje(self, personaje, accion): |
def actua_individual_personaje(self, personaje, accion): |
147 |
if isinstance(personaje, PersonajeJugador): |
if isinstance(personaje, PersonajeJugador): |
148 |
self.conn().send(personaje.color_texto() + personaje.id + ' ' + accion + finl) |
self.conn().send(personaje.color_texto() + personaje.id + ' ' + accion + finl) |
149 |
else: |
else: |
150 |
self.conn().send(personaje.color_texto() + personaje.nombre + ' ' + accion + finl) |
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): |
154 |
self.conn().send(accion) |
self.conn().send(accion) |
155 |
|
|
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 |
if isinstance(personaje, PersonajeJugador): |
if isinstance(personaje, PersonajeJugador): |
160 |
self.conn().send(color(35) + personaje.id + " " + accion + finl) |
self.conn().send(color(35) + personaje.id + " " + accion + finl) |
161 |
else: |
else: |
162 |
self.conn().send(color(35) + personaje.nombre + " " + accion + finl) |
self.conn().send(color(35) + personaje.nombre + " " + accion + finl) |
163 |
|
|
164 |
|
|
165 |
def suceso_entorno(self, suceso): |
def suceso_entorno(self, suceso): |
166 |
if self.__personaje.silencio == "no": |
if self.__personaje.silencio == "no": |
167 |
self.conn().send('...'+ suceso + '...') |
self.conn().send('...'+ suceso + '...') |
168 |
|
|
169 |
|
|
170 |
def ataca_personaje(self, personaje, result): |
def ataca_personaje(self, personaje, result): |
181 |
|
|
182 |
|
|
183 |
def movimiento_automatico(self): |
def movimiento_automatico(self): |
184 |
self.conn().send("Te mueves siguiendo a " + self.__personaje.anterior.id) |
self.conn().send("Te mueves siguiendo a " + self.__personaje.anterior.id) |
185 |
self.lanzar_tirada_percep_sala() |
self.lanzar_tirada_percep_sala() |
186 |
self.cmd_mirar() |
self.cmd_mirar() |
187 |
|
|
188 |
if self.__personaje.salas_visitadas.get(self.__personaje.sala.id) != 'si': |
if self.__personaje.salas_visitadas.get(self.__personaje.sala.id) != 'si': |
189 |
self.conn().send("Es la primera vez que estás aquí...") |
self.conn().send("Es la primera vez que estás aquí...") |
190 |
self.__personaje.salas_visitadas.update({self.__personaje.sala.id:'si'}) |
self.__personaje.salas_visitadas.update({self.__personaje.sala.id:'si'}) |
191 |
#Ganamos un punto de experiencia (hay que premiar la exploración) |
#Ganamos un punto de experiencia (hay que premiar la exploración) |
192 |
self.__personaje.experiencia = self.__personaje.experiencia + 1 |
self.__personaje.experiencia = self.__personaje.experiencia + 1 |
193 |
|
|
209 |
if len(cmd_list) == 0: |
if len(cmd_list) == 0: |
210 |
accion = '' |
accion = '' |
211 |
args = [] |
args = [] |
212 |
self.ejecutar(accion, args) |
self.ejecutar(accion, args) |
213 |
else: |
else: |
214 |
acciones_temp = ' '.join(cmd_list) |
acciones_temp = ' '.join(cmd_list) |
215 |
acciones = acciones_temp.split('&&')[:] |
acciones = acciones_temp.split('&&')[:] |
216 |
for una_accion in acciones: |
for una_accion in acciones: |
217 |
una_accion = una_accion.split() |
una_accion = una_accion.split() |
218 |
accion = una_accion[0] |
accion = una_accion[0] |
219 |
try: |
try: |
220 |
args = una_accion[1:] |
args = una_accion[1:] |
221 |
except: |
except: |
222 |
args = [] |
args = [] |
223 |
|
|
224 |
self.ejecutar(accion, args) |
self.ejecutar(accion, args) |
225 |
|
|
226 |
|
|
227 |
def tick_0(self, tick_ahora, tick_anterior): |
def tick_0(self, tick_ahora, tick_anterior): |
228 |
"""Durante el dialogo normal, los ticks del reloj se usan para ir 'cantando' |
"""Durante el dialogo normal, los ticks del reloj se usan para ir 'cantando' |
229 |
el tiempo, como los serenos. |
el tiempo, como los serenos. |
230 |
""" |
""" |
231 |
if tick_ahora.hora() != tick_anterior.hora(): |
if tick_ahora.hora() != tick_anterior.hora(): |
232 |
self.conn().send(color(35) + "El tiempo pasa. Son las %d horas (%s)." % |
self.conn().send(color(35) + "El tiempo pasa. Son las %d horas (%s)." % |
233 |
(tick_ahora.hora(), tick_ahora.desc_seccion()) + finl) |
(tick_ahora.hora(), tick_ahora.desc_seccion()) + finl) |
234 |
|
# Desconexión automática si el jugador está una hora de juego sin hacer nada |
235 |
|
# Para evitar que el personaje muera de hambre si la conexión se queda abierta |
236 |
|
if self.__inactivo: |
237 |
|
self.conn().send("Llevas más de una hora de juego sin actividad.") |
238 |
|
self.conn().send("Has sido desconectado automáticamente para garantizar la seguridad de tu personaje.") |
239 |
|
self.conn().send("Puedes volver a conectarte en cualquier momento.") |
240 |
|
self.estado_1() |
241 |
|
self.__inactivo = 1 |
242 |
|
|
243 |
|
|
244 |
def ataque_normal_0(self, personaje, result): |
def ataque_normal_0(self, personaje, result): |
273 |
#la orden dada. |
#la orden dada. |
274 |
comando_dado = ' '.join([self.__personaje.nombre+' ejecuta: ',accion,' '.join(args)]) |
comando_dado = ' '.join([self.__personaje.nombre+' ejecuta: ',accion,' '.join(args)]) |
275 |
escribir(comando_dado) |
escribir(comando_dado) |
276 |
|
self.__inactivo = 0 |
277 |
|
|
278 |
try: |
try: |
279 |
|
|
280 |
# Primero se ve si el comando es en realidad una de las |
# Primero se ve si el comando es en realidad una de las |
281 |
# posibles direcciones. Notar que la direccion "otro" no aparece en |
# posibles direcciones. Notar que la direccion "otro" no aparece en |
282 |
# esta lista (si alguna sala tiene una salida en esta direccion, hay |
# esta lista (si alguna sala tiene una salida en esta direccion, hay |
283 |
# que usar el id de la salida para moverse a ella). |
# que usar el id de la salida para moverse a ella). |
284 |
|
|
285 |
es_salida = 0 |
es_salida = 0 |
286 |
|
|
287 |
|
if accion in DialogoNormal.COMANDOS_DIRECCIONES: |
288 |
|
es_salida = 1 |
289 |
|
direccion = accion[1:] |
290 |
|
elif accion in DialogoNormal.COMANDOS_ABREV_DIR.keys(): |
291 |
|
es_salida = 1 |
292 |
|
direccion = DialogoNormal.COMANDOS_ABREV_DIR[accion][1:] |
293 |
|
|
294 |
|
if es_salida == 1: |
295 |
|
encontrado = 0 |
296 |
|
|
297 |
|
for salida in self.__personaje.sala.salidas: |
298 |
|
if direccion == salida["direccion"] and \ |
299 |
|
self.__personaje.resultado_tirada("percepcion_sala", salida["dificultad"]) > 0: |
300 |
|
encontrado = 1 |
301 |
|
self.cmd_mover(salida["id"]) |
302 |
|
#En cuanto hayamos encontrado una sala que esté en esa dirección |
303 |
|
#nos vamos a ella. De otra forma, Minë te presenta todas, una por una |
304 |
|
#y te deja en la última del búcle |
305 |
|
break |
306 |
|
|
307 |
|
if encontrado == 0: |
308 |
|
self.conn().send("No puedes ir por ahi.") |
309 |
|
|
310 |
|
self.estado_0() |
311 |
|
|
312 |
|
# Si no, ver si es el id de una de las salidas. |
313 |
|
if es_salida == 0: |
314 |
|
for salida in self.__personaje.sala.salidas: |
315 |
|
if normalizar_id(accion[1:]) == extraer_id(salida["descripcion"]) and \ |
316 |
|
self.__personaje.resultado_tirada("percepcion_sala", salida["dificultad"]) > 0: |
317 |
|
es_salida = 1 |
318 |
|
self.cmd_mover(salida["id"]) |
319 |
|
self.estado_0() |
320 |
|
|
321 |
if accion in DialogoNormal.COMANDOS_DIRECCIONES: |
# Si no, ver si es un comando. En ese caso, llamar a la función |
322 |
es_salida = 1 |
# especializada en ejecutar cada comando. |
323 |
direccion = accion[1:] |
if es_salida == 0: |
324 |
elif accion in DialogoNormal.COMANDOS_ABREV_DIR.keys(): |
|
325 |
es_salida = 1 |
#Comprobamos que un jugador normal no intenta ejecutar una acción de Maia |
326 |
direccion = DialogoNormal.COMANDOS_ABREV_DIR[accion][1:] |
if accion in DialogoNormal.COMANDOS_MAIAR and self.__personaje.es_maia == 0: |
327 |
|
self.conn().send("Error, comando no reconocido. Escribe '+?' y pulsa ENTER") |
328 |
if es_salida == 1: |
self.conn().send("para una lista de comandos.") |
329 |
encontrado = 0 |
self.estado_0() |
330 |
|
|
331 |
for salida in self.__personaje.sala.salidas: |
#Miramos cada acción por separado. |
332 |
if direccion == salida["direccion"] and \ |
|
333 |
self.__personaje.resultado_tirada("percepcion_sala", salida["dificultad"]) > 0: |
elif accion == "+decir": |
334 |
encontrado = 1 |
self.cmd_hablar_pnj("decir", args) |
335 |
self.cmd_mover(salida["id"]) |
self.estado_0() |
336 |
#En cuanto hayamos encontrado una sala que esté en esa dirección |
|
337 |
#nos vamos a ella. De otra forma, Minë te presenta todas, una por una |
elif accion == "+preguntar" or accion == "+p": |
338 |
#y te deja en la última del búcle |
self.cmd_hablar_pnj("preguntar", args) |
339 |
break |
self.estado_0() |
340 |
|
|
341 |
if encontrado == 0: |
elif accion == "+recapitular" or accion == "+recap": |
342 |
self.conn().send("No puedes ir por ahi.") |
self.cmd_recapitular(args) |
343 |
|
self.estado_0() |
344 |
self.estado_0() |
|
345 |
|
elif accion == "+creditos": |
346 |
# Si no, ver si es el id de una de las salidas. |
for linea in creditos.splitlines(): |
347 |
if es_salida == 0: |
self.conn().send(linea) |
348 |
for salida in self.__personaje.sala.salidas: |
self.estado_0() |
349 |
if normalizar_id(accion[1:]) == extraer_id(salida["descripcion"]) and \ |
|
350 |
self.__personaje.resultado_tirada("percepcion_sala", salida["dificultad"]) > 0: |
elif accion == "+sus" or accion == "+susurrar": |
351 |
es_salida = 1 |
try: |
352 |
self.cmd_mover(salida["id"]) |
oyente = args[0] |
353 |
self.estado_0() |
mensaje = " ".join(args[1:]) |
354 |
|
self.cmd_susurrar(oyente, mensaje, idioma=self.__personaje.idioma_base) |
355 |
# Si no, ver si es un comando. En ese caso, llamar a la función |
except: |
356 |
# especializada en ejecutar cada comando. |
self.conn().send('Tienes que decir algo a alguien') |
357 |
if es_salida == 0: |
self.estado_0() |
358 |
|
self.estado_0() |
359 |
#Comprobamos que un jugador normal no intenta ejecutar una acción de Maia |
|
360 |
if accion in DialogoNormal.COMANDOS_MAIAR and self.__personaje.es_maia == 0: |
elif accion == "+susq" or accion == "+susurrarq": |
361 |
self.conn().send("Error, comando no reconocido. Escribe '+?' y pulsa ENTER") |
try: |
362 |
self.conn().send("para una lista de comandos.") |
oyente = args[0] |
363 |
self.estado_0() |
mensaje = " ".join(args[1:]) |
364 |
|
self.cmd_susurrar(oyente, mensaje, idioma=Idioma_quenya) |
365 |
#Miramos cada acción por separado. |
except: |
366 |
|
self.conn().send('Tienes que decir algo a alguien') |
367 |
elif accion == "+decir": |
self.estado_0() |
368 |
self.cmd_hablar_pnj("decir", args) |
self.estado_0() |
369 |
self.estado_0() |
|
370 |
|
elif accion == "+suse" or accion == "+susurrare": |
371 |
elif accion == "+preguntar" or accion == "+p": |
try: |
372 |
self.cmd_hablar_pnj("preguntar", args) |
oyente = args[0] |
373 |
self.estado_0() |
mensaje = " ".join(args[1:]) |
374 |
|
self.cmd_susurrar(oyente, mensaje, idioma=Idioma_enano) |
375 |
elif accion == "+recapitular" or accion == "+recap": |
except: |
376 |
self.cmd_recapitular(args) |
self.conn().send('Tienes que decir algo a alguien') |
377 |
self.estado_0() |
self.estado_0() |
378 |
|
self.estado_0() |
379 |
elif accion == "+creditos": |
|
380 |
for linea in creditos.splitlines(): |
elif accion == "+suso" or accion == "+susurraro": |
381 |
self.conn().send(linea) |
try: |
382 |
self.estado_0() |
oyente = args[0] |
383 |
|
mensaje = " ".join(args[1:]) |
384 |
elif accion == "+sus" or accion == "+susurrar": |
self.cmd_susurrar(oyente, mensaje, idioma=Idioma_orco) |
385 |
try: |
except: |
386 |
oyente = args[0] |
self.conn().send('Tienes que decir algo a alguien') |
387 |
mensaje = " ".join(args[1:]) |
self.estado_0() |
388 |
self.cmd_susurrar(oyente, mensaje, idioma=self.__personaje.idioma_base) |
self.estado_0() |
389 |
except: |
|
390 |
self.conn().send('Tienes que decir algo a alguien') |
elif accion == "+h" or accion == "+hablar": |
391 |
self.estado_0() |
mensaje = " ".join(args) |
392 |
self.estado_0() |
self.cmd_hablar(mensaje, idioma=Idioma_oestron) |
393 |
|
self.estado_0() |
394 |
elif accion == "+susq" or accion == "+susurrarq": |
|
395 |
try: |
elif accion == "+hq" or accion == "+hablarq": |
396 |
oyente = args[0] |
mensaje = " ".join(args) |
397 |
mensaje = " ".join(args[1:]) |
self.cmd_hablar(mensaje, idioma=Idioma_quenya) |
398 |
self.cmd_susurrar(oyente, mensaje, idioma=Idioma_quenya) |
self.estado_0() |
399 |
except: |
|
400 |
self.conn().send('Tienes que decir algo a alguien') |
elif accion == "+he" or accion == "+hablare": |
401 |
self.estado_0() |
mensaje = " ".join(args) |
402 |
self.estado_0() |
self.cmd_hablar(mensaje, idioma=Idioma_enano) |
403 |
|
self.estado_0() |
404 |
elif accion == "+suse" or accion == "+susurrare": |
|
405 |
try: |
elif accion == "+ho" or accion == "+hablaro": |
406 |
oyente = args[0] |
mensaje = " ".join(args) |
407 |
mensaje = " ".join(args[1:]) |
self.cmd_hablar(mensaje, idioma=Idioma_orco) |
408 |
self.cmd_susurrar(oyente, mensaje, idioma=Idioma_enano) |
self.estado_0() |
409 |
except: |
|
410 |
self.conn().send('Tienes que decir algo a alguien') |
elif accion == "+g" or accion == "+gritar": |
411 |
self.estado_0() |
mensaje = " ".join(args) |
412 |
self.estado_0() |
self.cmd_gritar(mensaje) |
413 |
|
self.estado_0() |
414 |
elif accion == "+suso" or accion == "+susurraro": |
|
415 |
try: |
elif accion == "+gq" or accion == "+gritarq": |
416 |
oyente = args[0] |
mensaje = " ".join(args) |
417 |
mensaje = " ".join(args[1:]) |
self.cmd_gritar(mensaje, idioma=Idioma_quenya) |
418 |
self.cmd_susurrar(oyente, mensaje, idioma=Idioma_orco) |
self.estado_0() |
419 |
except: |
|
420 |
self.conn().send('Tienes que decir algo a alguien') |
elif accion == "+ge" or accion == "+gritare": |
421 |
self.estado_0() |
mensaje = " ".join(args) |
422 |
self.estado_0() |
self.cmd_gritar(mensaje, idioma=Idioma_enano) |
423 |
|
self.estado_0() |
424 |
elif accion == "+h" or accion == "+hablar": |
|
425 |
mensaje = " ".join(args) |
elif accion == "+go" or accion == "+gritaro": |
426 |
self.cmd_hablar(mensaje, idioma=Idioma_oestron) |
mensaje = " ".join(args) |
427 |
self.estado_0() |
self.cmd_gritar(mensaje, idioma=Idioma_orco) |
428 |
|
self.estado_0() |
429 |
elif accion == "+hq" or accion == "+hablarq": |
|
430 |
mensaje = " ".join(args) |
elif accion == "+est" or accion == "+estadisticas": |
431 |
self.cmd_hablar(mensaje, idioma=Idioma_quenya) |
self.cmd_estadisticas() |
432 |
self.estado_0() |
self.estado_0() |
433 |
|
|
434 |
elif accion == "+he" or accion == "+hablare": |
elif accion == "+m" or accion == "+mirar": |
435 |
mensaje = " ".join(args) |
self.cmd_mirar() |
436 |
self.cmd_hablar(mensaje, idioma=Idioma_enano) |
self.estado_0() |
437 |
self.estado_0() |
|
438 |
|
elif accion == "+mr": |
439 |
elif accion == "+ho" or accion == "+hablaro": |
self.cmd_mirar(resumen=1) |
440 |
mensaje = " ".join(args) |
self.estado_0() |
441 |
self.cmd_hablar(mensaje, idioma=Idioma_orco) |
|
442 |
self.estado_0() |
elif accion == "+mochila" or accion == "+mo": |
443 |
|
self.cmd_mochila() |
444 |
elif accion == "+g" or accion == "+gritar": |
self.estado_0() |
445 |
mensaje = " ".join(args) |
|
446 |
self.cmd_gritar(mensaje) |
elif accion == "+silencio": |
447 |
self.estado_0() |
self.cmd_silencio() |
448 |
|
self.estado_0() |
449 |
elif accion == "+gq" or accion == "+gritarq": |
|
450 |
mensaje = " ".join(args) |
elif accion == "+idioma": |
451 |
self.cmd_gritar(mensaje, idioma=Idioma_quenya) |
nombre_idioma_base = (len(args) > 0 and args[0]) or "" |
452 |
self.estado_0() |
self.cmd_idioma(nombre_idioma_base) |
453 |
|
self.estado_0() |
454 |
elif accion == "+ge" or accion == "+gritare": |
|
455 |
mensaje = " ".join(args) |
elif accion == "+c" or accion == "+coger": |
456 |
self.cmd_gritar(mensaje, idioma=Idioma_enano) |
(id_objeto, cantidad, n_orden, n_instancia, ok) = \ |
457 |
self.estado_0() |
self.parsear_ident_objeto(args, "coger") |
458 |
|
if ok: |
459 |
elif accion == "+go" or accion == "+gritaro": |
self.cmd_coger(id_objeto, cantidad, n_orden, n_instancia) |
460 |
mensaje = " ".join(args) |
self.estado_0() |
|
self.cmd_gritar(mensaje, idioma=Idioma_orco) |
|
|
self.estado_0() |
|
|
|
|
|
elif accion == "+est" or accion == "+estadisticas": |
|
|
self.cmd_estadisticas() |
|
|
self.estado_0() |
|
|
|
|
|
elif accion == "+m" or accion == "+mirar": |
|
|
self.cmd_mirar() |
|
|
self.estado_0() |
|
|
|
|
|
elif accion == "+mr": |
|
|
self.cmd_mirar(resumen=1) |
|
|
self.estado_0() |
|
|
|
|
|
elif accion == "+mochila" or accion == "+mo": |
|
|
self.cmd_mochila() |
|
|
self.estado_0() |
|
|
|
|
|
elif accion == "+silencio": |
|
|
self.cmd_silencio() |
|
|
self.estado_0() |
|
|
|
|
|
elif accion == "+idioma": |
|
|
nombre_idioma_base = (len(args) > 0 and args[0]) or "" |
|
|
self.cmd_idioma(nombre_idioma_base) |
|
|
self.estado_0() |
|
|
|
|
|
elif accion == "+c" or accion == "+coger": |
|
|
(id_objeto, cantidad, n_orden, n_instancia, ok) = \ |
|
|
self.parsear_ident_objeto(args, "coger") |
|
|
if ok: |
|
|
self.cmd_coger(id_objeto, cantidad, n_orden, n_instancia) |
|
|
self.estado_0() |
|
|
|
|
461 |
#%% try: |
#%% try: |
462 |
#%% nombre_objeto = (len(args) > 0 and args[0]) or "" |
#%% nombre_objeto = (len(args) > 0 and args[0]) or "" |
463 |
#%% cantidad = int((len(args) > 1 and args[1])) or 1 |
#%% cantidad = int((len(args) > 1 and args[1])) or 1 |
470 |
#%% self.conn().send('Ha ocurrido un error. Consulta la sintaxis del comando en la ayuda con +?') |
#%% self.conn().send('Ha ocurrido un error. Consulta la sintaxis del comando en la ayuda con +?') |
471 |
#%% self.estado_0() |
#%% self.estado_0() |
472 |
|
|
473 |
elif accion == "+d" or accion == "+dejar": |
elif accion == "+d" or accion == "+dejar": |
474 |
(id_objeto, cantidad, n_orden, n_instancia, ok) = \ |
(id_objeto, cantidad, n_orden, n_instancia, ok) = \ |
475 |
self.parsear_ident_objeto(args, "dejar") |
self.parsear_ident_objeto(args, "dejar") |
476 |
if ok: |
if ok: |
477 |
self.cmd_dejar(id_objeto, cantidad, n_orden, n_instancia) |
self.cmd_dejar(id_objeto, cantidad, n_orden, n_instancia) |
478 |
|
|
479 |
self.estado_0() |
self.estado_0() |
480 |
|
|
481 |
elif accion == "+esc" or accion == "+esconder": |
elif accion == "+esc" or accion == "+esconder": |
482 |
(id_objeto, cantidad, n_orden, n_instancia, ok) = \ |
(id_objeto, cantidad, n_orden, n_instancia, ok) = \ |
483 |
self.parsear_ident_objeto(args, "esconder") |
self.parsear_ident_objeto(args, "esconder") |
484 |
if ok: |
if ok: |
485 |
dificultad = self.__personaje.generar_dificultad("inteligencia", 0) |
dificultad = self.__personaje.generar_dificultad("inteligencia", 0) |
486 |
self.cmd_dejar(id_objeto, cantidad, n_orden, n_instancia, dificultad) |
self.cmd_dejar(id_objeto, cantidad, n_orden, n_instancia, dificultad) |
487 |
|
|
488 |
self.estado_0() |
self.estado_0() |
489 |
|
|
490 |
#%% try: |
#%% try: |
491 |
#%% nombre_objeto = (len(args) > 0 and args[0]) or "" |
#%% nombre_objeto = (len(args) > 0 and args[0]) or "" |
496 |
#%% self.conn().send('Ha ocurrido un error. Consulta la sintaxis del comando en la ayuda con +?') |
#%% self.conn().send('Ha ocurrido un error. Consulta la sintaxis del comando en la ayuda con +?') |
497 |
#%% self.estado_0() |
#%% self.estado_0() |
498 |
|
|
499 |
elif accion == "+dar": |
elif accion == "+dar": |
500 |
(id_receptor, id_objeto, cantidad, n_orden, n_instancia, ok) = \ |
(id_receptor, id_objeto, cantidad, n_orden, n_instancia, ok) = \ |
501 |
self.parsear_ident_objeto(args, "dar") |
self.parsear_ident_objeto(args, "dar") |
502 |
if ok: |
if ok: |
503 |
self.cmd_dar(id_receptor, id_objeto, cantidad, n_orden, n_instancia) |
self.cmd_dar(id_receptor, id_objeto, cantidad, n_orden, n_instancia) |
504 |
|
|
505 |
self.estado_0() |
self.estado_0() |
506 |
|
|
507 |
elif accion == "+comer": |
elif accion == "+comer": |
508 |
(id_objeto, cantidad, n_orden, n_instancia, ok) = \ |
(id_objeto, cantidad, n_orden, n_instancia, ok) = \ |
509 |
self.parsear_ident_objeto(args, "comer") |
self.parsear_ident_objeto(args, "comer") |
510 |
if ok: |
if ok: |
511 |
if cantidad > 1: |
if cantidad > 1: |
512 |
self.conn().send("El comando no es correcto, consulta la ayuda con +?") |
self.conn().send("El comando no es correcto, consulta la ayuda con +?") |
513 |
else: |
else: |
514 |
self.cmd_comer(id_objeto, n_orden, n_instancia) |
self.cmd_comer(id_objeto, n_orden, n_instancia) |
515 |
|
|
516 |
self.estado_0() |
self.estado_0() |
517 |
|
|
518 |
elif accion == "+beber": |
elif accion == "+beber": |
519 |
(id_objeto, cantidad, n_orden, n_instancia, ok) = \ |
(id_objeto, cantidad, n_orden, n_instancia, ok) = \ |
520 |
self.parsear_ident_objeto(args, "beber") |
self.parsear_ident_objeto(args, "beber") |
521 |
if ok: |
if ok: |
522 |
if cantidad > 1: |
if cantidad > 1: |
523 |
self.conn().send("El comando no es correcto, consulta la ayuda con +?") |
self.conn().send("El comando no es correcto, consulta la ayuda con +?") |
524 |
else: |
else: |
525 |
self.cmd_beber(id_objeto, n_orden, n_instancia) |
self.cmd_beber(id_objeto, n_orden, n_instancia) |
526 |
|
|
527 |
self.estado_0() |
self.estado_0() |
528 |
|
|
529 |
elif accion == "+u" or accion == "+usar": |
elif accion == "+u" or accion == "+usar": |
530 |
(id_objeto, cantidad, n_orden, n_instancia, id_objeto2, n_orden2, \ |
(id_objeto, cantidad, n_orden, n_instancia, id_objeto2, n_orden2, \ |
531 |
n_instancia2, ok) = self.parsear_ident_objeto(args, "usar") |
n_instancia2, ok) = self.parsear_ident_objeto(args, "usar") |
532 |
if ok: |
if ok: |
533 |
if cantidad > 1: |
if cantidad > 1: |
534 |
self.conn().send("El comando no es correcto, consulta la ayuda con +?") |
self.conn().send("El comando no es correcto, consulta la ayuda con +?") |
535 |
else: |
else: |
536 |
if id_objeto2 == "": |
if id_objeto2 == "": |
537 |
self.cmd_usar(id_objeto, n_orden, n_instancia) |
self.cmd_usar(id_objeto, n_orden, n_instancia) |
538 |
else: |
else: |
539 |
self.cmd_usar_con(id_objeto, n_orden, n_instancia, |
self.cmd_usar_con(id_objeto, n_orden, n_instancia, |
540 |
id_objeto2, n_orden2, n_instancia2) |
id_objeto2, n_orden2, n_instancia2) |
541 |
|
|
542 |
self.estado_0() |
self.estado_0() |
543 |
|
|
544 |
#%% nombre_objeto = (len(args) > 0 and args[0]) or "" |
#%% nombre_objeto = (len(args) > 0 and args[0]) or "" |
545 |
#%% self.cmd_usar(nombre_objeto) |
#%% self.cmd_usar(nombre_objeto) |
546 |
#%% self.estado_0() |
#%% self.estado_0() |
547 |
|
|
548 |
elif accion == "+poner": |
elif accion == "+poner": |
549 |
if len(args) == 0: |
if len(args) == 0: |
550 |
self.conn().send("Debes indicar la posición y el objeto a ponerte, consulta la ayuda con +?") |
self.conn().send("Debes indicar la posición y el objeto a ponerte, consulta la ayuda con +?") |
551 |
else: |
else: |
552 |
posicion = args[0] |
posicion = args[0] |
553 |
if not posicion in Personaje.POSICIONES: |
if not posicion in Personaje.POSICIONES: |
554 |
self.conn().send("La posición no es válida, consulta la ayuda con +?") |
self.conn().send("La posición no es válida, consulta la ayuda con +?") |
555 |
else: |
else: |
556 |
(id_objeto, cantidad, n_orden, n_instancia, ok) = \ |
(id_objeto, cantidad, n_orden, n_instancia, ok) = \ |
557 |
self.parsear_ident_objeto(args[1:], "poner") |
self.parsear_ident_objeto(args[1:], "poner") |
558 |
if ok: |
if ok: |
559 |
if cantidad > 1: |
if cantidad > 1: |
560 |
self.conn().send("El comando no es correcto, consulta la ayuda con +?") |
self.conn().send("El comando no es correcto, consulta la ayuda con +?") |
561 |
else: |
else: |
562 |
self.cmd_poner(posicion, id_objeto, n_orden, n_instancia) |
self.cmd_poner(posicion, id_objeto, n_orden, n_instancia) |
563 |
|
|
564 |
self.estado_0() |
self.estado_0() |
565 |
|
|
566 |
elif accion == "+quitar": |
elif accion == "+quitar": |
567 |
if len(args) == 0: |
if len(args) == 0: |
568 |
self.conn().send("Debes indicar la posición, consulta la ayuda con +?") |
self.conn().send("Debes indicar la posición, consulta la ayuda con +?") |
569 |
else: |
else: |
570 |
posicion = args[0] |
posicion = args[0] |
571 |
if not posicion in Personaje.POSICIONES: |
if not posicion in Personaje.POSICIONES: |
572 |
self.conn().send("La posición no es válida, consulta la ayuda con +?") |
self.conn().send("La posición no es válida, consulta la ayuda con +?") |
573 |
else: |
else: |
574 |
self.cmd_quitar(posicion) |
self.cmd_quitar(posicion) |
575 |
|
|
576 |
self.estado_0() |
self.estado_0() |
577 |
|
|
578 |
elif accion == "+confiar": |
elif accion == "+confiar": |
579 |
id_personaje_de_confianza = args[0] |
id_personaje_de_confianza = args[0] |
580 |
self.__personaje.ids_amigos.update({id_personaje_de_confianza:1}) |
self.__personaje.ids_amigos.update({id_personaje_de_confianza:1}) |
581 |
self.conn().send("A partir de ahora confías en "+id_personaje_de_confianza) |
self.conn().send("A partir de ahora confías en "+id_personaje_de_confianza) |
582 |
|
|
583 |
self.estado_0() |
self.estado_0() |
584 |
|
|
585 |
elif accion == "+noconfiar": |
elif accion == "+noconfiar": |
586 |
id_personaje_de_no_confianza = args[0] |
id_personaje_de_no_confianza = args[0] |
587 |
self.__personaje.ids_amigos.update({id_personaje_de_no_confianza:0}) |
self.__personaje.ids_amigos.update({id_personaje_de_no_confianza:0}) |
588 |
self.conn().send("A partir de ahora no confías en "+id_personaje_de_no_confianza) |
self.conn().send("A partir de ahora no confías en "+id_personaje_de_no_confianza) |
589 |
|
|
590 |
self.estado_0() |
self.estado_0() |
591 |
|
|
592 |
elif accion == "+amigos": |
elif accion == "+amigos": |
593 |
self.cmd_listar_amigos() |
self.cmd_listar_amigos() |
594 |
self.estado_0() |
self.estado_0() |
595 |
|
|
596 |
elif accion == "+ex" or accion == "+examinar": |
elif accion == "+ex" or accion == "+examinar": |
597 |
(id_objeto, cantidad, n_orden, n_instancia, ok) = \ |
(id_objeto, cantidad, n_orden, n_instancia, ok) = \ |
598 |
self.parsear_ident_objeto(args, "examinar") |
self.parsear_ident_objeto(args, "examinar") |
599 |
if ok: |
if ok: |
600 |
if cantidad > 1: |
if cantidad > 1: |
601 |
self.conn().send("El comando no es correcto, consulta la ayuda con +?") |
self.conn().send("El comando no es correcto, consulta la ayuda con +?") |
602 |
else: |
else: |
603 |
self.cmd_examinar(id_objeto, n_orden, n_instancia) |
self.cmd_examinar(id_objeto, n_orden, n_instancia) |
604 |
|
|
605 |
self.estado_0() |
self.estado_0() |
606 |
|
|
607 |
#%% nombre_objeto = (len(args) > 0 and args[0]) or "" |
#%% nombre_objeto = (len(args) > 0 and args[0]) or "" |
608 |
#%% posicion = int((len(args) > 1 and args[1])) or 1 |
#%% posicion = int((len(args) > 1 and args[1])) or 1 |
610 |
#%% self.cmd_examinar(nombre_objeto,posicion) |
#%% self.cmd_examinar(nombre_objeto,posicion) |
611 |
#%% self.estado_0() |
#%% self.estado_0() |
612 |
|
|
613 |
elif accion == "+ob" or accion == "+observar": |
elif accion == "+ob" or accion == "+observar": |
614 |
nombre_oponente = (len(args) > 0 and args[0]) or "" |
nombre_oponente = (len(args) > 0 and args[0]) or "" |
615 |
self.cmd_observar(nombre_oponente) |
self.cmd_observar(nombre_oponente) |
616 |
self.estado_0() |
self.estado_0() |
|
|
|
|
elif accion == "+a" or accion == "+atacar": |
|
|
self.conn().send("Comando deshabilitado temporalmente. Lo sentimos.") |
|
|
self.estado_0() |
|
|
|
|
|
elif accion == "+sal" or accion == "+salir" or accion == "/q" or accion == "+q": |
|
|
self.estado_1() |
|
|
|
|
|
elif accion == "+": |
|
|
self.estado_0() |
|
|
|
|
|
elif accion == "+help" or accion == "+ayuda" or accion == "+?": |
|
|
self.cmd_ayuda(args) |
|
|
self.estado_0() |
|
|
|
|
|
elif accion == "+doc": |
|
|
self.cmd_doc(args) |
|
|
self.estado_0() |
|
|
|
|
|
elif accion == "+actuar" or accion == "+act": |
|
|
mensaje = " ".join(args) |
|
|
self.cmd_actuar(mensaje) |
|
|
self.estado_0() |
|
|
|
|
|
elif accion == "+entorno" or accion == "+ent": |
|
|
mensaje = " ".join(args) |
|
|
self.cmd_entorno(mensaje) |
|
|
self.estado_0() |
|
|
|
|
|
elif accion == "+listar": |
|
|
self.cmd_listar_personajes() |
|
|
self.estado_0() |
|
|
|
|
|
elif accion == "+localizar" or accion == "+loc": |
|
|
try: |
|
|
self.cmd_localizar(args[0]) |
|
|
except: |
|
|
self.conn().send('Tienes que especificar un personaje para localizar') |
|
|
|
|
|
self.estado_0() |
|
|
|
|
|
elif accion == "+seguir" or accion == "+seg": |
|
|
if len(args) == 0: |
|
|
self.conn().send('Tienes que especificar un personaje para seguir') |
|
|
else: |
|
|
self.cmd_seguir(args[0]) |
|
|
self.estado_0() |
|
617 |
|
|
618 |
elif accion == "+noseguir" or accion == "+noseg": |
elif accion == "+a" or accion == "+atacar": |
619 |
self.cmd_no_seguir() |
self.conn().send("Comando deshabilitado temporalmente. Lo sentimos.") |
620 |
self.estado_0() |
self.estado_0() |
621 |
|
|
622 |
elif accion == "+ip": |
elif accion == "+sal" or accion == "+salir" or accion == "/q" or accion == "+q": |
623 |
self.cmd_ip() |
self.estado_1() |
624 |
self.estado_0() |
|
625 |
|
elif accion == "+": |
626 |
elif accion == "+area": |
self.estado_0() |
627 |
self.cmd_area() |
|
628 |
self.estado_0() |
elif accion == "+help" or accion == "+ayuda" or accion == "+?": |
629 |
|
self.cmd_ayuda(args) |
630 |
elif accion == "+reloj": |
self.estado_0() |
631 |
self.cmd_reloj() |
|
632 |
self.estado_0() |
elif accion == "+doc": |
633 |
|
self.cmd_doc(args) |
634 |
elif accion == "": |
self.estado_0() |
635 |
self.estado_0() |
|
636 |
|
elif accion == "+actuar" or accion == "+act": |
637 |
elif accion[0] == "+" or accion == "+": |
mensaje = " ".join(args) |
638 |
self.conn().send("Error, comando no reconocido. Escribe '+?' y pulsa ENTER") |
self.cmd_actuar(mensaje) |
639 |
self.conn().send("para una lista de comandos.") |
self.estado_0() |
640 |
self.estado_0() |
|
641 |
|
elif accion == "+entorno" or accion == "+ent": |
642 |
else: |
mensaje = " ".join(args) |
643 |
mensaje = accion + ' ' + " ".join(args) |
self.cmd_entorno(mensaje) |
644 |
self.cmd_hablar(mensaje, idioma=self.__personaje.idioma_base) |
self.estado_0() |
645 |
self.estado_0() |
|
646 |
|
elif accion == "+listar": |
647 |
|
self.cmd_listar_personajes() |
648 |
|
self.estado_0() |
649 |
|
|
650 |
|
elif accion == "+localizar" or accion == "+loc": |
651 |
|
try: |
652 |
|
self.cmd_localizar(args[0]) |
653 |
|
except: |
654 |
|
self.conn().send('Tienes que especificar un personaje para localizar') |
655 |
|
|
656 |
|
self.estado_0() |
657 |
|
|
658 |
|
elif accion == "+seguir" or accion == "+seg": |
659 |
|
if len(args) == 0: |
660 |
|
self.conn().send('Tienes que especificar un personaje para seguir') |
661 |
|
else: |
662 |
|
self.cmd_seguir(args[0]) |
663 |
|
self.estado_0() |
664 |
|
|
665 |
|
elif accion == "+noseguir" or accion == "+noseg": |
666 |
|
self.cmd_no_seguir() |
667 |
|
self.estado_0() |
668 |
|
|
669 |
|
elif accion == "+ip": |
670 |
|
self.cmd_ip() |
671 |
|
self.estado_0() |
672 |
|
|
673 |
|
elif accion == "+area": |
674 |
|
self.cmd_area() |
675 |
|
self.estado_0() |
676 |
|
|
677 |
|
elif accion == "+reloj": |
678 |
|
self.cmd_reloj() |
679 |
|
self.estado_0() |
680 |
|
|
681 |
|
elif accion == "": |
682 |
|
self.estado_0() |
683 |
|
|
684 |
|
elif accion[0] == "+" or accion == "+": |
685 |
|
self.conn().send("Error, comando no reconocido. Escribe '+?' y pulsa ENTER") |
686 |
|
self.conn().send("para una lista de comandos.") |
687 |
|
self.estado_0() |
688 |
|
|
689 |
|
else: |
690 |
|
mensaje = accion + ' ' + " ".join(args) |
691 |
|
self.cmd_hablar(mensaje, idioma=self.__personaje.idioma_base) |
692 |
|
self.estado_0() |
693 |
|
|
694 |
except ExcepcionDeJuego, ex: |
except ExcepcionDeJuego, ex: |
695 |
|
|
696 |
self.conn().send(str(ex)) |
self.conn().send(str(ex)) |
697 |
self.estado_0() |
self.estado_0() |
698 |
|
|
699 |
|
|
700 |
def parsear_ident_objeto(self, args, comando): |
def parsear_ident_objeto(self, args, comando): |
701 |
"""Pequeña funcion utilitaria para parsear la secuencia |
"""Pequeña funcion utilitaria para parsear la secuencia |
702 |
[<id_receptor>] [<cantidad>] id_objeto [<n_orden>] [<n_instancia>] \ |
[<id_receptor>] [<cantidad>] id_objeto [<n_orden>] [<n_instancia>] \ |
703 |
[ +con id_objeto2 [<n_orden2>] [<n_instancia2>] ]. |
[ +con id_objeto2 [<n_orden2>] [<n_instancia2>] ]. |
704 |
|
|
705 |
cantidad, n_orden y n_instancia se reconocen porque son sólo dígitos. |
cantidad, n_orden y n_instancia se reconocen porque son sólo dígitos. |
706 |
id_objeto puede tener más de una palabra. |
id_objeto puede tener más de una palabra. |
707 |
id_receptor sólo puede tener una palabra. |
id_receptor sólo puede tener una palabra. |
708 |
id_receptor sólo se parsea si el comando es "dar" |
id_receptor sólo se parsea si el comando es "dar" |
709 |
Los elementos detrás de +con sólo se parsean si el comando es "usar" |
Los elementos detrás de +con sólo se parsean si el comando es "usar" |
710 |
""" |
""" |
711 |
id_receptor = "" |
id_receptor = "" |
712 |
cantidad = 1 |
cantidad = 1 |
713 |
id_objeto = "" |
id_objeto = "" |
714 |
n_orden = 1 |
n_orden = 1 |
715 |
n_instancia = 1 |
n_instancia = 1 |
716 |
id_objeto2 = "" |
id_objeto2 = "" |
717 |
n_orden2 = 1 |
n_orden2 = 1 |
718 |
n_instancia2 = 1 |
n_instancia2 = 1 |
719 |
ok = 1 |
ok = 1 |
720 |
|
|
721 |
i = 0 |
i = 0 |
722 |
|
|
723 |
if comando == 'dar' and i < len(args) and not args[i].isdigit(): |
if comando == 'dar' and i < len(args) and not args[i].isdigit(): |
724 |
id_receptor = args[i] |
id_receptor = args[i] |
725 |
i = i + 1 |
i = i + 1 |
726 |
|
|
727 |
if i < len(args) and args[i].isdigit(): |
if i < len(args) and args[i].isdigit(): |
728 |
cantidad = int(args[i]) |
cantidad = int(args[i]) |
729 |
i = i + 1 |
i = i + 1 |
730 |
|
|
731 |
while i < len(args) and not args[i].isdigit() and args[i] != "+con": |
while i < len(args) and not args[i].isdigit() and args[i] != "+con": |
732 |
if len(id_objeto) > 0: |
if len(id_objeto) > 0: |
733 |
id_objeto += " " |
id_objeto += " " |
734 |
id_objeto += args[i] |
id_objeto += args[i] |
735 |
i = i + 1 |
i = i + 1 |
736 |
|
|
737 |
if i < len(args) and args[i].isdigit(): |
if i < len(args) and args[i].isdigit(): |
738 |
n_orden = int(args[i]) |
n_orden = int(args[i]) |
739 |
i = i + 1 |
i = i + 1 |
740 |
|
|
741 |
if i < len(args) and args[i].isdigit(): |
if i < len(args) and args[i].isdigit(): |
742 |
n_instancia = int(args[i]) |
n_instancia = int(args[i]) |
743 |
i = i + 1 |
i = i + 1 |
744 |
|
|
745 |
if id_objeto == "": |
if id_objeto == "": |
746 |
self.conn().send("Tienes que indicar qué objeto quieres " + comando + ".") |
self.conn().send("Tienes que indicar qué objeto quieres " + comando + ".") |
747 |
ok = 0 |
ok = 0 |
748 |
elif cantidad < 1: |
elif cantidad < 1: |
749 |
self.conn().send("La cantidad tiene que ser igual o mayor que 1.") |
self.conn().send("La cantidad tiene que ser igual o mayor que 1.") |
750 |
ok = 0 |
ok = 0 |
751 |
elif n_orden < 1: |
elif n_orden < 1: |
752 |
self.conn().send("El número de orden tiene que ser igual o mayor que 1.") |
self.conn().send("El número de orden tiene que ser igual o mayor que 1.") |
753 |
ok = 0 |
ok = 0 |
754 |
elif n_instancia < 1: |
elif n_instancia < 1: |
755 |
self.conn().send("El número de objeto tiene que ser igual o mayor que 1.") |
self.conn().send("El número de objeto tiene que ser igual o mayor que 1.") |
756 |
ok = 0 |
ok = 0 |
757 |
|
|
758 |
if ok and i < len(args): |
if ok and i < len(args): |
759 |
if comando != 'usar' or args[i] != '+con': |
if comando != 'usar' or args[i] != '+con': |
760 |
|
|
761 |
self.conn().send("El comando no es correcto, consulta la ayuda con +?") |
self.conn().send("El comando no es correcto, consulta la ayuda con +?") |
762 |
ok = 0 |
ok = 0 |
763 |
|
|
764 |
else: |
else: |
765 |
|
|
766 |
i = i + 1 |
i = i + 1 |
767 |
|
|
768 |
while i < len(args) and not args[i].isdigit(): |
while i < len(args) and not args[i].isdigit(): |
769 |
if len(id_objeto2) > 0: |
if len(id_objeto2) > 0: |
770 |
id_objeto2 += " " |
id_objeto2 += " " |
771 |
id_objeto2 += args[i] |
id_objeto2 += args[i] |
772 |
i = i + 1 |
i = i + 1 |
773 |
|
|
774 |
if i < len(args) and args[i].isdigit(): |
if i < len(args) and args[i].isdigit(): |
775 |
n_orden2 = int(args[i]) |
n_orden2 = int(args[i]) |
776 |
i = i + 1 |
i = i + 1 |
777 |
|
|
778 |
if i < len(args) and args[i].isdigit(): |
if i < len(args) and args[i].isdigit(): |
779 |
n_instancia2 = int(args[i]) |
n_instancia2 = int(args[i]) |
780 |
i = i + 1 |
i = i + 1 |
781 |
|
|
782 |
if id_objeto2 == "": |
if id_objeto2 == "": |
783 |
if n_orden2 < 1: |
if n_orden2 < 1: |
784 |
self.conn().send("El número de orden 2 tiene que ser igual o mayor que 1.") |
self.conn().send("El número de orden 2 tiene que ser igual o mayor que 1.") |
785 |
ok = 0 |
ok = 0 |
786 |
elif n_instancia2 < 1: |
elif n_instancia2 < 1: |
787 |
self.conn().send("El número de objeto 2 tiene que ser igual o mayor que 1.") |
self.conn().send("El número de objeto 2 tiene que ser igual o mayor que 1.") |
788 |
ok = 0 |
ok = 0 |
789 |
|
|
790 |
if comando == 'dar': |
if comando == 'dar': |
791 |
return (id_receptor, id_objeto, cantidad, n_orden, n_instancia, ok) |
return (id_receptor, id_objeto, cantidad, n_orden, n_instancia, ok) |
792 |
elif comando == 'usar': |
elif comando == 'usar': |
793 |
return (id_objeto, cantidad, n_orden, n_instancia, id_objeto2, n_orden2, n_instancia2, ok) |
return (id_objeto, cantidad, n_orden, n_instancia, id_objeto2, n_orden2, n_instancia2, ok) |
794 |
else: |
else: |
795 |
return (id_objeto, cantidad, n_orden, n_instancia, ok) |
return (id_objeto, cantidad, n_orden, n_instancia, ok) |
796 |
|
|
797 |
|
|
798 |
def parsear_ident_objeto_doble(self, args, comando): |
def parsear_ident_objeto_doble(self, args, comando): |
799 |
"""Pequeña funcion utilitaria para parsear la secuencia |
"""Pequeña funcion utilitaria para parsear la secuencia |
800 |
id_objeto [<n_orden>] [<n_instancia>] id_objeto2 [<n_orden2>] [<n_instancia2>]. |
id_objeto [<n_orden>] [<n_instancia>] id_objeto2 [<n_orden2>] [<n_instancia2>]. |
801 |
|
|
802 |
n_orden y n_instancia se reconocen porque son sólo dígitos. |
n_orden y n_instancia se reconocen porque son sólo dígitos. |
803 |
id_objeto sólo puede tener una palabra. |
id_objeto sólo puede tener una palabra. |
804 |
""" |
""" |
805 |
cantidad = 1 |
cantidad = 1 |
806 |
id_objeto = "" |
id_objeto = "" |
807 |
id_objeto2 = "" |
id_objeto2 = "" |
808 |
n_orden = 1 |
n_orden = 1 |
809 |
n_instancia = 1 |
n_instancia = 1 |
810 |
n_orden2 = 1 |
n_orden2 = 1 |
811 |
n_instancia2 = 1 |
n_instancia2 = 1 |
812 |
ok = 0 |
ok = 0 |
813 |
|
|
814 |
i = 0 |
i = 0 |
815 |
|
|
816 |
id_objeto += args[i] |
id_objeto += args[i] |
817 |
i = i + 1 |
i = i + 1 |
818 |
|
|
819 |
if i < len(args) and args[i].isdigit(): |
if i < len(args) and args[i].isdigit(): |
820 |
n_orden = int(args[i]) |
n_orden = int(args[i]) |
821 |
i = i + 1 |
i = i + 1 |
822 |
|
|
823 |
if i < len(args) and args[i].isdigit(): |
if i < len(args) and args[i].isdigit(): |
824 |
n_instancia = int(args[i]) |
n_instancia = int(args[i]) |
825 |
i = i + 1 |
i = i + 1 |
826 |
|
|
827 |
id_objeto2 += args[i] |
id_objeto2 += args[i] |
828 |
i = i + 1 |
i = i + 1 |
829 |
|
|
830 |
if i < len(args) and args[i].isdigit(): |
if i < len(args) and args[i].isdigit(): |
831 |
n_orden2 = int(args[i]) |
n_orden2 = int(args[i]) |
832 |
i = i + 1 |
i = i + 1 |
833 |
|
|
834 |
if i < len(args) and args[i].isdigit(): |
if i < len(args) and args[i].isdigit(): |
835 |
n_instancia2 = int(args[i]) |
n_instancia2 = int(args[i]) |
836 |
i = i + 1 |
i = i + 1 |
837 |
|
|
838 |
if id_objeto == "" or id_objeto2 == "": |
if id_objeto == "" or id_objeto2 == "": |
839 |
self.conn().send("Tienes que indicar qué objeto quieres " + comando + ".") |
self.conn().send("Tienes que indicar qué objeto quieres " + comando + ".") |
840 |
elif n_orden < 1 or n_orden2 < 1: |
elif n_orden < 1 or n_orden2 < 1: |
841 |
self.conn().send("El número de orden tiene que ser igual o mayor que 1.") |
self.conn().send("El número de orden tiene que ser igual o mayor que 1.") |
842 |
elif n_instancia < 1 or n_instancia < 1: |
elif n_instancia < 1 or n_instancia < 1: |
843 |
self.conn().send("El número de objeto tiene que ser igual o mayor que 1.") |
self.conn().send("El número de objeto tiene que ser igual o mayor que 1.") |
844 |
else: |
else: |
845 |
ok = 1 |
ok = 1 |
846 |
|
|
847 |
return (id_objeto, n_orden, n_instancia, id_objeto2, n_orden2, n_instancia2, ok) |
return (id_objeto, n_orden, n_instancia, id_objeto2, n_orden2, n_instancia2, ok) |
848 |
|
|
849 |
|
|
850 |
# --------------------- |
# --------------------- |
852 |
# --------------------- |
# --------------------- |
853 |
|
|
854 |
def cmd_doc(self,args): |
def cmd_doc(self,args): |
855 |
self.conn().send("\n"+color(32)+"--------- Documentación de Minë ---------\n"+finl) |
self.conn().send("\n"+color(32)+"--------- Documentación de Minë ---------\n"+finl) |
856 |
if len(args) > 0: |
if len(args) > 0: |
857 |
|
|
858 |
if args[0] == "instalacion" or args[0] == "inst": |
if args[0] == "instalacion" or args[0] == "inst": |
859 |
|
|
860 |
self.conn().send(ayuda.como_instalar_mine) |
self.conn().send(ayuda.como_instalar_mine) |
861 |
|
|
862 |
|
|
863 |
elif args[0] == "tolkien" or args[0] == "jrrt": |
elif args[0] == "tolkien" or args[0] == "jrrt": |
864 |
|
|
865 |
self.conn().send(ayuda.tolkien) |
self.conn().send(ayuda.tolkien) |
866 |
|
|
867 |
|
|
868 |
elif args[0] == "gpl" or args[0] == "gnu": |
elif args[0] == "gpl" or args[0] == "gnu": |
869 |
|
|
870 |
self.conn().send(ayuda.gpl) |
self.conn().send(ayuda.gpl) |
871 |
|
|
872 |
else: |
else: |
873 |
self.conn().send("Los documentos disponibles actualmente son:\n") |
self.conn().send("Los documentos disponibles actualmente son:\n") |
874 |
self.conn().send("[ instalacion | tolkien | gpl ]") |
self.conn().send("[ instalacion | tolkien | gpl ]") |
875 |
|
|
876 |
|
|
877 |
def cmd_ayuda(self,args): |
def cmd_ayuda(self,args): |
878 |
|
|
879 |
self.conn().send("\n"+color(32)+"------------------------ Ayuda de Minë ------------------------\n"+finl) |
self.conn().send("\n"+color(32)+"------------------------ Ayuda de Minë ------------------------\n"+finl) |
923 |
|
|
924 |
elif args[0] == "objetos": |
elif args[0] == "objetos": |
925 |
|
|
926 |
self.conn().send(color(33)+" Objetos\n"+finl) |
self.conn().send(color(33)+" Objetos\n"+finl) |
927 |
self.conn().send(" Coger un objeto de la sala y meterlo en la mochila:") |
self.conn().send(" Coger un objeto de la sala y meterlo en la mochila:") |
928 |
self.conn().send(color(31) + ' +[c]oger [<cantidad>] <id_objeto> [<n_orden> [<n_unidad>]]' + finl) |
self.conn().send(color(31) + ' +[c]oger [<cantidad>] <id_objeto> [<n_orden> [<n_unidad>]]' + finl) |
929 |
self.conn().send(" Dejar un objeto de la mochila en la sala:") |
self.conn().send(" Dejar un objeto de la mochila en la sala:") |
942 |
|
|
943 |
self.conn().send(" Usar un objeto de la mochila (opcionalmente con otro en mochila o sala):") |
self.conn().send(" Usar un objeto de la mochila (opcionalmente con otro en mochila o sala):") |
944 |
self.conn().send(color(31) + ' +[u]sar <nombre> [<n_orden> [<n_unidad>]]') |
self.conn().send(color(31) + ' +[u]sar <nombre> [<n_orden> [<n_unidad>]]') |
945 |
self.conn().send( ' [+con <nombre> [<n_orden> [<n_unidad>]]]' + finl) |
self.conn().send( ' [+con <nombre> [<n_orden> [<n_unidad>]]]' + finl) |
946 |
|
|
947 |
self.conn().send("") |
self.conn().send("") |
948 |
|
|
1011 |
self.conn().send("Lista de jugadores de Minë (Sólo Maiar): " + |
self.conn().send("Lista de jugadores de Minë (Sólo Maiar): " + |
1012 |
color(31) + '+listar' + finl) |
color(31) + '+listar' + finl) |
1013 |
|
|
1014 |
elif args[0] == "hablar": |
elif args[0] == "hablar": |
1015 |
|
|
1016 |
self.conn().send(color(33)+" Hablar\n"+finl) |
self.conn().send(color(33)+" Hablar\n"+finl) |
1017 |
self.conn().send("Hablar en oestron en la sala actual: " + |
self.conn().send("Hablar en oestron en la sala actual: " + |
1087 |
|
|
1088 |
if len(argumentos) != 1: |
if len(argumentos) != 1: |
1089 |
self.conn().send("Debes decir de qué personaje quieres recapitular.") |
self.conn().send("Debes decir de qué personaje quieres recapitular.") |
1090 |
return |
return |
1091 |
|
|
1092 |
pnjs = self.__personaje.sala.personajes |
pnjs = self.__personaje.sala.personajes |
1093 |
|
|
1094 |
encontrado = 0 |
encontrado = 0 |
1095 |
for pnj in pnjs.values(): |
for pnj in pnjs.values(): |
1096 |
if normalizar_id(argumentos[0]) == extraer_id(pnj.nombre): |
if normalizar_id(argumentos[0]) == extraer_id(pnj.nombre): |
1097 |
argumentos = argumentos[1:] |
argumentos = argumentos[1:] |
1098 |
encontrado = 1 |
encontrado = 1 |
1099 |
break |
break |
1100 |
|
|
1101 |
if encontrado == 0: |
if encontrado == 0: |
1102 |
self.conn().send("No conoces a nadie llamado " + argumentos[0]) |
self.conn().send("No conoces a nadie llamado " + argumentos[0]) |
1103 |
return |
return |
1104 |
|
|
1105 |
from interfazpnjhablante import InterfazPNJHablante |
from interfazpnjhablante import InterfazPNJHablante |
1106 |
if not isinstance(pnj.controlador, InterfazPNJHablante): |
if not isinstance(pnj.controlador, InterfazPNJHablante): |
1107 |
self.conn().send(pnj.nombre + " no responde.\n") |
self.conn().send(pnj.nombre + " no responde.\n") |
1108 |
return |
return |
1109 |
|
|
1110 |
try: |
try: |
1111 |
visita = pnj.controlador._visitas[0] |
visita = pnj.controlador._visitas[0] |
1112 |
items = visita.items()[:] |
items = visita.items()[:] |
1113 |
items.reverse() |
items.reverse() |
1114 |
duplicados = [] |
duplicados = [] |
1133 |
if tema not in temas: |
if tema not in temas: |
1134 |
temas.append(tema) |
temas.append(tema) |
1135 |
self.conn().send(disponible + tema) |
self.conn().send(disponible + tema) |
1136 |
|
|
1137 |
except Exception: |
except Exception: |
1138 |
# Conviene protegerse contra errores en carga de salas. No es bueno que por |
# Conviene protegerse contra errores en carga de salas. No es bueno que por |
1139 |
# un fichero de sala mal escrito pete el servidor entero o te eche de la |
# un fichero de sala mal escrito pete el servidor entero o te eche de la |
1140 |
# conexión. |
# conexión. |
1141 |
escribir( "Ha saltado una excepcion al intentar recapitular") |
escribir( "Ha saltado una excepcion al intentar recapitular") |
1142 |
escribir_excepcion() |
escribir_excepcion() |
1143 |
if self.conn().is_open: |
if self.conn().is_open: |
1144 |
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.") |
1145 |
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.") |
1146 |
return |
return |
1147 |
|
|
1148 |
|
|
1149 |
def cmd_hablar_pnj(self, comando, argumentos): |
def cmd_hablar_pnj(self, comando, argumentos): |
1150 |
|
|
1151 |
from interfazpnjhablante import InterfazPNJHablante |
from interfazpnjhablante import InterfazPNJHablante |
1152 |
pnjs = [ personaje for personaje in self.__personaje.sala.personajes.values() \ |
pnjs = filter(lambda personaje:isinstance(personaje.controlador, InterfazPNJHablante), \ |
1153 |
if isinstance(personaje.controlador, InterfazPNJHablante) ] |
self.__personaje.sala.personajes.values()) |
1154 |
|
|
1155 |
if len(pnjs) == 0: |
if len(pnjs) == 0: |
1156 |
self.conn().send("No hay PNJs en la sala con quienes hablar\n") |
self.conn().send("No hay PNJs en la sala con quienes hablar\n") |
1157 |
return |
return |
1158 |
|
|
1159 |
encontrado = 0 |
encontrado = 0 |
1160 |
|
|
1161 |
if len(argumentos) < 2: |
if len(argumentos) < 2: |
1162 |
if len(argumentos) < 1 or len(pnjs) > 1: |
if len(pnjs) > 1: |
1163 |
|
self.conn().send("Debes indicar a qué personaje quieres decir o preguntar algo.") |
1164 |
|
self.conn().send("Utiliza el formato +<accion> <personaje> <tema>") |
1165 |
|
return |
1166 |
|
elif len(argumentos) < 1: |
1167 |
self.conn().send("Debes decir o preguntar a alguien por algo.") |
self.conn().send("Debes decir o preguntar a alguien por algo.") |
1168 |
return |
self.conn().send("Utiliza el formato +decir <tema> o +preguntar <tema>") |
1169 |
elif len(pnjs) == 1: |
return |
1170 |
pnj = pnjs[0] |
elif len(pnjs) == 1: |
1171 |
encontrado = 1 |
pnj = pnjs[0] |
1172 |
|
encontrado = 1 |
1173 |
if encontrado == 0: |
|
1174 |
for pnj in pnjs.values(): |
if encontrado == 0: |
1175 |
if normalizar_id(argumentos[0]) == extraer_id(pnj.nombre): |
for pnj in pnjs: |
1176 |
argumentos = argumentos[1:] |
if normalizar_id(argumentos[0]) == extraer_id(pnj.nombre): |
1177 |
encontrado = 1 |
argumentos = argumentos[1:] |
1178 |
break |
encontrado = 1 |
1179 |
|
break |
1180 |
|
|
1181 |
if encontrado == 0: |
if encontrado == 0: |
1182 |
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") |
1183 |
return |
return |
1184 |
|
|
1185 |
if not isinstance(pnj.controlador, InterfazPNJHablante): |
if not isinstance(pnj.controlador, InterfazPNJHablante): |
1186 |
self.conn().send(pnj.nombre + " no responde.\n") |
self.conn().send(pnj.nombre + " no responde.\n") |
1187 |
return |
return |
1188 |
|
|
1189 |
try: |
try: |
1190 |
pnj.controlador.conversa_personaje(self.__personaje, comando, |
libre = pnj.controlador.conversa_personaje(self.__personaje, comando, |
1191 |
string.join(argumentos, ' ')) |
string.join(argumentos, ' ')) |
1192 |
except Exception: |
if not libre: |
1193 |
# Conviene protegerse contra errores en carga de pnjs. No es bueno que por |
self.conn().send("Todavía está hablando con alguien. Debes esperar a que termine.") |
1194 |
# un fichero de pnj mal escrito pete el servidor entero o te eche de la |
except Exception: |
1195 |
# conexión. |
# Conviene protegerse contra errores en carga de pnjs. No es bueno que por |
1196 |
escribir( "Ha saltado una excepcion al intentar " + comando) |
# un fichero de pnj mal escrito pete el servidor entero o te eche de la |
1197 |
escribir_excepcion() |
# conexión. |
1198 |
if self.conn().is_open: |
escribir( "Ha saltado una excepcion al intentar " + comando) |
1199 |
self.conn().send("Ha habido un error interno del programa referente a esta conversación.") |
escribir_excepcion() |
1200 |
self.conn().send("No puedes hacer esta pregunta. Por favor, habla con algun administrador de Mine. Puedes escribir a mine_ste@yahoogroups.com.") |
if self.conn().is_open: |
1201 |
|
self.conn().send("Ha habido un error interno del programa referente a esta conversación.") |
1202 |
|
self.conn().send("No puedes hacer esta pregunta. Por favor, habla con algun administrador de Mine. Puedes escribir a mine_ste@yahoogroups.com.") |
1203 |
|
|
1204 |
|
|
1205 |
def cmd_mover(self, id_sala_destino): |
def cmd_mover(self, id_sala_destino): |
1206 |
|
|
1207 |
# Comprobar si la puerta está cerrada y si podemos abrirla |
# Comprobar si la puerta está cerrada y si podemos abrirla |
1208 |
podemos_pasar = 1 |
podemos_pasar = 1 |
1209 |
cierre = self.__personaje.sala.salida_cerrada(id_sala_destino) |
cierre = self.__personaje.sala.salida_cerrada(id_sala_destino) |
1210 |
id_llave = cierre[0] |
id_llave = cierre[0] |
1211 |
msg_cerrado = cierre[1] |
msg_cerrado = cierre[1] |
1212 |
if id_llave != None: |
if id_llave != None: |
1213 |
podemos_pasar = 0 |
podemos_pasar = 0 |
1214 |
for objeto in self.__personaje.mochila: |
for objeto in self.__personaje.mochila: |
1215 |
if objeto[0].id == id_llave: |
if objeto[0].id == id_llave: |
1216 |
self.conn().send(color(35) + "Abres el paso con " + objeto[0].nombre + finl) |
self.conn().send(color(35) + "Abres el paso con " + objeto[0].nombre + finl) |
1217 |
podemos_pasar = 1 |
podemos_pasar = 1 |
1218 |
|
|
1219 |
if not podemos_pasar: |
if not podemos_pasar: |
1220 |
self.conn().send(msg_cerrado) |
self.conn().send(msg_cerrado) |
1221 |
else: |
else: |
1222 |
try: |
try: |
1223 |
nueva_sala = Mundo.localizar_sala(id_sala_destino) |
nueva_sala = Mundo.localizar_sala(id_sala_destino) |
1224 |
except Exception: |
except Exception: |
1225 |
# Conviene protegerse contra errores en carga de salas. No es bueno que por |
# Conviene protegerse contra errores en carga de salas. No es bueno que por |
1226 |
# un fichero de sala mal escrito pete el servidor entero o te eche de la |
# un fichero de sala mal escrito pete el servidor entero o te eche de la |
1227 |
# conexión. |
# conexión. |
1228 |
escribir( "Ha saltado una excepcion al intentar entrar en " + id_sala_destino) |
escribir( "Ha saltado una excepcion al intentar entrar en " + id_sala_destino) |
1229 |
escribir_excepcion() |
escribir_excepcion() |
1230 |
if self.conn().is_open: |
if self.conn().is_open: |
1231 |
self.conn().send("Ha habido un error interno del programa referente a esta sala.") |
self.conn().send("Ha habido un error interno del programa referente a esta sala.") |
1232 |
self.conn().send("No puedes ir ahi. Por favor, habla con algun administrador de Mine.") |
self.conn().send("No puedes ir ahi. Por favor, habla con algun administrador de Mine.") |
1233 |
else: |
else: |
1234 |
|
|
1235 |
if nueva_sala.volumen_ocupado() + self.__personaje.volumen_total() > nueva_sala.volumen: |
if nueva_sala.volumen_ocupado() + self.__personaje.volumen_total() > nueva_sala.volumen: |
1236 |
|
|
1237 |
self.conn().send("Ese lugar está al límite de su capacidad y no cabes. No puedes ir allí.") |
self.conn().send("Ese lugar está al límite de su capacidad y no cabes. No puedes ir allí.") |
1238 |
|
|
1239 |
else: |
else: |
1240 |
|
|
1241 |
if self.__personaje.anterior != None: |
if self.__personaje.anterior != None: |
1242 |
id_lider = self.__personaje.anterior.id |
id_lider = self.__personaje.anterior.id |
1243 |
else: |
else: |
1244 |
id_lider = None |
id_lider = None |
1245 |
|
|
1246 |
self.__personaje.mover(nueva_sala) # aqui se deja de seguir al lider, si lo hay |
self.__personaje.mover(nueva_sala) # aqui se deja de seguir al lider, si lo hay |
1247 |
self.lanzar_tirada_percep_sala() |
self.lanzar_tirada_percep_sala() |
1248 |
self.cmd_mirar() |
self.cmd_mirar() |
1249 |
|
|
1250 |
if self.__personaje.salas_visitadas.get(id_sala_destino) != 'si': |
if self.__personaje.salas_visitadas.get(id_sala_destino) != 'si': |
1251 |
self.conn().send("Es la primera vez que estás aquí...") |
self.conn().send("Es la primera vez que estás aquí...") |
1252 |
self.__personaje.salas_visitadas.update({id_sala_destino:'si'}) |
self.__personaje.salas_visitadas.update({id_sala_destino:'si'}) |
1253 |
#Ganamos un punto de experiencia (hay que premiar la exploración) |
#Ganamos un punto de experiencia (hay que premiar la exploración) |
1254 |
self.__personaje.cambiar_experiencia(+1) |
self.__personaje.cambiar_experiencia(+1) |
1255 |
|
|
1256 |
if id_lider != None: |
if id_lider != None: |
1257 |
self.conn().send('Ya no estas siguiendo a ' + id_lider) |
self.conn().send('Ya no estas siguiendo a ' + id_lider) |
1258 |
|
|
1259 |
|
|
1260 |
def cmd_amigos(self, id_amigo): |
def cmd_amigos(self, id_amigo): |
1271 |
|
|
1272 |
|
|
1273 |
def cmd_silencio(self): |
def cmd_silencio(self): |
1274 |
if self.__personaje.silencio == 'no': |
if self.__personaje.silencio == 'no': |
1275 |
self.__personaje.silencio = 'sí' |
self.__personaje.silencio = 'sí' |
1276 |
else: |
else: |
1277 |
self.__personaje.silencio = 'no' |
self.__personaje.silencio = 'no' |
1278 |
|
|
1279 |
self.conn().send("Has elegido que "+self.__personaje.silencio+" haya silencio") |
self.conn().send("Has elegido que "+self.__personaje.silencio+" haya silencio") |
1280 |
|
|
1281 |
|
|
1282 |
def cmd_susurrar(self, nombre_oyente, mensaje, idioma=Idioma_oestron): |
def cmd_susurrar(self, nombre_oyente, mensaje, idioma=Idioma_oestron): |
1283 |
if len(mensaje) == 0: |
if len(mensaje) == 0: |
1284 |
self.conn().send('Tienes que decir algo...') |
self.conn().send('Tienes que decir algo...') |
1285 |
elif self.__personaje.id == nombre_oyente: |
elif self.__personaje.id == nombre_oyente: |
1286 |
self.conn().send('no tiene sentido que te hables a ti mismo') |
self.conn().send('no tiene sentido que te hables a ti mismo') |
1287 |
else: |
else: |
1288 |
if self.__personaje.sala != None: |
if self.__personaje.sala != None: |
1289 |
encontrado = 0 |
encontrado = 0 |
1290 |
for personaje in self.__personaje.sala.personajes.values(): |
for personaje in self.__personaje.sala.personajes.values(): |
1291 |
if personaje !=self.__personaje and personaje.controlador != None and personaje.id == nombre_oyente: |
if personaje !=self.__personaje and personaje.controlador != None and personaje.id == nombre_oyente: |
1292 |
encontrado = 1 |
encontrado = 1 |
1293 |
self.__personaje.susurrar(personaje,mensaje,idioma) |
self.__personaje.susurrar(personaje,mensaje,idioma) |
1294 |
self.conn().send("Susurras a "+personaje.id+": "+mensaje) |
self.conn().send("Susurras a "+personaje.id+": "+mensaje) |
1295 |
if encontrado == 0: |
if encontrado == 0: |
1296 |
self.conn().send('no hay nadie aquí que se llame '+nombre_oyente) |
self.conn().send('no hay nadie aquí que se llame '+nombre_oyente) |
1297 |
|
|
1298 |
|
|
1299 |
def cmd_localizar(self, id_personaje): |
def cmd_localizar(self, id_personaje): |
1300 |
try: |
try: |
1301 |
personaje = Mundo.pjs_activos[id_personaje] |
personaje = Mundo.pjs_activos[id_personaje] |
1302 |
self.conn().send(id_personaje + |
self.conn().send(id_personaje + |
1303 |
' está en ' + personaje.sala.nombre + |
' está en ' + personaje.sala.nombre + |
1304 |
' en el area de ' + personaje.sala.area) |
' en el area de ' + personaje.sala.area) |
1305 |
except KeyError: |
except KeyError: |
1306 |
self.conn().send('No existe ningun personaje con ese nombre jugando en Minë en este momento') |
self.conn().send('No existe ningun personaje con ese nombre jugando en Minë en este momento') |
1307 |
|
|
1308 |
|
|
1309 |
def cmd_listar_personajes(self): |
def cmd_listar_personajes(self): |
1310 |
ids_personajes = [ personaje.id for personaje in Mundo.pjs_activos.values() ] |
ids_personajes = [ personaje.id for personaje in Mundo.pjs_activos.values() ] |
1311 |
|
|
1312 |
self.conn().send('En este momento hay ' + `len(ids_personajes)` + |
self.conn().send('En este momento hay ' + `len(ids_personajes)` + |
1313 |
' personajes en Mine:\n' + |
' personajes en Mine:\n' + |
1314 |
'\n'.join(ids_personajes)) |
'\n'.join(ids_personajes)) |
1315 |
|
|
1316 |
|
|
1317 |
def cmd_hablar(self, mensaje, idioma=Idioma_oestron): |
def cmd_hablar(self, mensaje, idioma=Idioma_oestron): |
1318 |
if len(mensaje) > 0: |
if len(mensaje) > 0: |
1319 |
self.__personaje.hablar(mensaje,idioma) |
self.__personaje.hablar(mensaje,idioma) |
1320 |
self.conn().send('Dices: '+ self.__personaje.color_texto() + mensaje) |
self.conn().send('Dices: '+ self.__personaje.color_texto() + mensaje) |
1321 |
else: |
else: |
1322 |
self.conn().send('Tienes que decir algo...') |
self.conn().send('Tienes que decir algo...') |
1323 |
|
|
1324 |
|
|
1325 |
def cmd_entorno(self, suceso): |
def cmd_entorno(self, suceso): |
1326 |
if len(suceso) > 0: |
if len(suceso) > 0: |
1327 |
self.__personaje.describir_entorno(suceso) |
self.__personaje.describir_entorno(suceso) |
1328 |
else: |
else: |
1329 |
self.conn().send('Tienes que describir algo...') |
self.conn().send('Tienes que describir algo...') |
1330 |
|
|
1331 |
|
|
1332 |
def cmd_actuar(self, mensaje): |
def cmd_actuar(self, mensaje): |
1333 |
if len(mensaje) > 0: |
if len(mensaje) > 0: |
1334 |
self.__personaje.actuar(mensaje) |
self.__personaje.actuar(mensaje) |
1335 |
self.conn().send(self.__personaje.id+' '+mensaje) |
self.conn().send(self.__personaje.id+' '+mensaje) |
1336 |
else: |
else: |
1337 |
self.conn().send('Tienes que hacer algo...') |
self.conn().send('Tienes que hacer algo...') |
1338 |
|
|
1339 |
|
|
1340 |
def cmd_gritar(self, mensaje, idioma=Idioma_oestron): |
def cmd_gritar(self, mensaje, idioma=Idioma_oestron): |
1341 |
if len(mensaje) > 0: |
if len(mensaje) > 0: |
1342 |
self.__personaje.gritar(mensaje,idioma) |
self.__personaje.gritar(mensaje,idioma) |
1343 |
self.conn().send("Gritas: "+mensaje) |
self.conn().send("Gritas: "+mensaje) |
1344 |
else: |
else: |
1345 |
self.conn().send('Tienes que decir algo...') |
self.conn().send('Tienes que decir algo...') |
1347 |
|
|
1348 |
def cmd_estadisticas(self): |
def cmd_estadisticas(self): |
1349 |
self.conn().send(color(31)) |
self.conn().send(color(31)) |
1350 |
self.conn().send("Estadísticas de " + self.__personaje.nombre) |
self.conn().send("Estadísticas de " + self.__personaje.nombre) |
1351 |
self.conn().send("-------------------------------------------------------------------") |
self.conn().send("-------------------------------------------------------------------") |
1352 |
|
|
1353 |
self.conn().send(color(32), 0) |
self.conn().send(color(32), 0) |
1354 |
self.conn().send("Nombre: %-17s Aura: %-17d Nivel: %10d" % |
self.conn().send("Nombre: %-17s Aura: %-17d Nivel: %10d" % |
1355 |
(self.__personaje.id, |
(self.__personaje.id, |
1356 |
self.__personaje.aura, |
self.__personaje.aura, |
1357 |
self.__personaje.nivel)) |
self.__personaje.nivel)) |
1358 |
self.conn().send("Raza: %-17s Vida: %-17d Experiencia: %4d" % |
self.conn().send("Raza: %-17s Vida: %-17d Experiencia: %4d" % |
1359 |
(self.__personaje.raza.nombre, |
(self.__personaje.raza.nombre, |
1360 |
self.__personaje.vida, |
self.__personaje.vida, |
1361 |
self.__personaje.experiencia)) |
self.__personaje.experiencia)) |
1362 |
self.conn().send("Edad: %-17d Profesion: %-12s Fuerza: %3d" % |
self.conn().send("Edad: %-17d Profesion: %-12s Fuerza: %3d" % |
1363 |
(self.__personaje.edad, |
(self.__personaje.edad, |
1364 |
self.__personaje.profesion.nombre, |
self.__personaje.profesion.nombre, |
1365 |
self.__personaje.atrib["fuerza"])) |
self.__personaje.atrib["fuerza"])) |
1366 |
self.conn().send("Sexo: %-17s Idiomas: Destreza: %3d" % |
self.conn().send("Sexo: %-17s Idiomas: Destreza: %3d" % |
1367 |
(self.__personaje.sexo, |
(self.__personaje.sexo, |
1368 |
self.__personaje.atrib["destreza"])) |
self.__personaje.atrib["destreza"])) |
1369 |
self.conn().send("Altura: %-17.2f quenya: %-12s Constitución: %3d" % |
self.conn().send("Altura: %-17.2f quenya: %-12s Constitución: %3d" % |
1370 |
(self.__personaje.altura, |
(self.__personaje.altura, |
1371 |
self.__personaje.idiomas[Idioma_quenya], |
self.__personaje.idiomas[Idioma_quenya], |
1372 |
self.__personaje.atrib["constitucion"])) |
self.__personaje.atrib["constitucion"])) |
1373 |
self.conn().send("Peso: %-17d orco: %-12s Inteligencia: %3d" % |
self.conn().send("Peso: %-17d orco: %-12s Inteligencia: %3d" % |
1374 |
(self.__personaje.peso, |
(self.__personaje.peso, |
1375 |
self.__personaje.idiomas[Idioma_orco], |
self.__personaje.idiomas[Idioma_orco], |
1376 |
self.__personaje.atrib["inteligencia"])) |
self.__personaje.atrib["inteligencia"])) |
1377 |
self.conn().send("Color de ojos: %-11s enano: %-12s Sabiduria: %3d" % |
self.conn().send("Color de ojos: %-11s enano: %-12s Sabiduria: %3d" % |
1378 |
(self.__personaje.color_de_ojos, |
(self.__personaje.color_de_ojos, |
1379 |
self.__personaje.idiomas[Idioma_enano], |
self.__personaje.idiomas[Idioma_enano], |
1380 |
self.__personaje.atrib["sabiduria"])) |
self.__personaje.atrib["sabiduria"])) |
1381 |
self.conn().send("Color de pelo: %-11s oestron: %-12s Carisma: %3d" % |
self.conn().send("Color de pelo: %-11s oestron: %-12s Carisma: %3d" % |
1382 |
(self.__personaje.color_de_pelo, |
(self.__personaje.color_de_pelo, |
1383 |
self.__personaje.idiomas[Idioma_oestron], |
self.__personaje.idiomas[Idioma_oestron], |
1384 |
self.__personaje.atrib["carisma"])) |
self.__personaje.atrib["carisma"])) |
1385 |
self.conn().send("El idioma en el que hablas es: %s " % (self.__personaje.idioma_base.nombre)) |
self.conn().send("El idioma en el que hablas es: %s " % (self.__personaje.idioma_base.nombre)) |
1386 |
self.conn().send(self.__personaje.mensaje_hambre) |
self.conn().send(self.__personaje.mensaje_hambre) |
1387 |
self.conn().send(self.__personaje.mensaje_sed) |
self.conn().send(self.__personaje.mensaje_sed) |
1388 |
self.conn().send(color(31) + "-------------------------------------------------------------------" + finl) |
self.conn().send(color(31) + "-------------------------------------------------------------------" + finl) |
1389 |
|
|
1390 |
|
|
1451 |
self.conn().send(" (" + str(len(objeto["instancias"])) + ")", 0) |
self.conn().send(" (" + str(len(objeto["instancias"])) + ")", 0) |
1452 |
self.conn().send(finl) |
self.conn().send(finl) |
1453 |
|
|
1454 |
self.conn().send("") |
self.conn().send("") |
1455 |
|
|
1456 |
|
|
1457 |
def cmd_mochila(self): |
def cmd_mochila(self): |
1458 |
self.conn().send(color(31) + "--------- Contenido de la mochila ---------" + finl) |
self.conn().send(color(31) + "--------- Contenido de la mochila ---------" + finl) |
1459 |
if len(self.__personaje.mochila) == 0: |
if len(self.__personaje.mochila) == 0: |
1460 |
self.conn().send("(la mochila esta vacia)") |
self.conn().send("(la mochila esta vacia)") |
1461 |
else: |
else: |
1462 |
self.conn().send(color(31) + "%-35s%-8s" % ("Nombre", "Cantidad") + finl) |
self.conn().send(color(31) + "%-35s%-8s" % ("Nombre", "Cantidad") + finl) |
1463 |
for objetos in self.__personaje.mochila: |
for objetos in self.__personaje.mochila: |
1464 |
self.conn().send("%-35s%8d" % (objetos[0].nombre, len(objetos))) |
self.conn().send("%-35s%8d" % (objetos[0].nombre, len(objetos))) |
1465 |
|
|
1466 |
|
|
1467 |
def cmd_idioma(self, nombre_idioma_base): |
def cmd_idioma(self, nombre_idioma_base): |
1468 |
if len(nombre_idioma_base) == 0: |
if len(nombre_idioma_base) == 0: |
1469 |
self.conn().send("Tu idioma base actual es " + self.__personaje.idioma_base.nombre) |
self.conn().send("Tu idioma base actual es " + self.__personaje.idioma_base.nombre) |
1470 |
else: |
else: |
1471 |
idioma_base = Idioma_buscar(nombre_idioma_base) |
idioma_base = Idioma_buscar(nombre_idioma_base) |
1472 |
if idioma_base != None: |
if idioma_base != None: |
1473 |
self.__personaje.idioma_base = idioma_base |
self.__personaje.idioma_base = idioma_base |
1474 |
self.conn().send("Tu idioma por defecto es ahora " + idioma_base.nombre) |
self.conn().send("Tu idioma por defecto es ahora " + idioma_base.nombre) |
1475 |
else: |
else: |
1476 |
self.conn().send("Lo siento, has de elegir como idioma base uno " + |
self.conn().send("Lo siento, has de elegir como idioma base uno " + |
1477 |
"de los siguientes: " + |
"de los siguientes: " + |
1478 |
", ".join([ i.nombre for i in Idioma_lista ])) |
", ".join([ i.nombre for i in Idioma_lista ])) |
1479 |
|
|
1480 |
|
|
1481 |
def cmd_coger(self, id_objeto, cantidad, n_orden, n_instancia): |
def cmd_coger(self, id_objeto, cantidad, n_orden, n_instancia): |
1482 |
try: |
try: |
1483 |
|
|
1484 |
#%% aqui faltaría lo del sigilo... |
#%% aqui faltaría lo del sigilo... |
1485 |
nombre = self.__personaje.coger(id_objeto, cantidad, n_orden, n_instancia) |
nombre = self.__personaje.coger(id_objeto, cantidad, n_orden, n_instancia) |
1486 |
|
|
1487 |
self.conn().send("Has cogido " + nombre, 0) |
self.conn().send("Has cogido " + nombre, 0) |
1488 |
if cantidad > 1: |
if cantidad > 1: |
1489 |
self.conn().send(" (" + str(cantidad) + " unidades)") |
self.conn().send(" (" + str(cantidad) + " unidades)") |
1490 |
else: |
else: |
1491 |
self.conn().send("") |
self.conn().send("") |
1492 |
|
|
1493 |
except ExcepcionDeJuego, mensaje: |
except ExcepcionDeJuego, mensaje: |
1494 |
|
|
1495 |
self.conn().send(str(mensaje)) |
self.conn().send(str(mensaje)) |
1496 |
|
|
1497 |
|
|
1498 |
#%% def cmd_coger(self, id_objeto, cantidad, n_orden, n_instancia): |
#%% def cmd_coger(self, id_objeto, cantidad, n_orden, n_instancia): |
1499 |
#%% encontrados = 0 |
#%% encontrados = 0 |
1500 |
#%% n_objeto = -1 |
#%% n_objeto = -1 |
1501 |
#%% |
#%% |
1502 |
#%% # Buscar el objeto en la sala. Puede que haya varios con el mismo identificativo, |
#%% # Buscar el objeto en la sala. Puede que haya varios con el mismo identificativo, |
1503 |
#%% # discriminamos con el parametro n_orden. |
#%% # discriminamos con el parametro n_orden. |
1504 |
#%% for objeto in self.__personaje.sala.objetos: |
#%% for objeto in self.__personaje.sala.objetos: |
1505 |
#%% n_objeto = n_objeto + 1 |
#%% n_objeto = n_objeto + 1 |
1506 |
#%% instancias = objeto["instancias"] |
#%% instancias = objeto["instancias"] |
1507 |
#%% if len(instancias) > 0: |
#%% if len(instancias) > 0: |
1508 |
#%% if normalizar_id(id_objeto) == extraer_id(instancias[0].nombre): |
#%% if normalizar_id(id_objeto) == extraer_id(instancias[0].nombre): |
1509 |
#%% encontrados = encontrados + 1 |
#%% encontrados = encontrados + 1 |
1510 |
#%% if encontrados == n_orden: |
#%% if encontrados == n_orden: |
1511 |
#%% |
#%% |
1512 |
#%% # Hemos encontrado el objeto, ahora vemos si hay instancias |
#%% # Hemos encontrado el objeto, ahora vemos si hay instancias |
1513 |
#%% # suficientes. |
#%% # suficientes. |
1514 |
#%% if (n_instancia + cantidad - 1) > len(instancias): |
#%% if (n_instancia + cantidad - 1) > len(instancias): |
1515 |
#%% self.conn().send("No hay " + str(n_instancia + cantidad - 1) + |
#%% self.conn().send("No hay " + str(n_instancia + cantidad - 1) + |
1516 |
#%% " instancias de ese objeto, solo hay " + |
#%% " instancias de ese objeto, solo hay " + |
1517 |
#%% str(len(instancias))) |
#%% str(len(instancias))) |
1518 |
#%% else: |
#%% else: |
1519 |
#%% |
#%% |
1520 |
#%% # Todo ok: cogemos las instancias y las metemos en la mochila |
#%% # Todo ok: cogemos las instancias y las metemos en la mochila |
1521 |
#%% for i in range(0, cantidad): |
#%% for i in range(0, cantidad): |
1522 |
#%% instancia = self.__personaje.sala.coger_objeto(n_objeto, |
#%% instancia = self.__personaje.sala.coger_objeto(n_objeto, |
1523 |
#%% n_instancia - 1) |
#%% n_instancia - 1) |
1524 |
#%% self.__personaje.meter_en_mochila(instancia) |
#%% self.__personaje.meter_en_mochila(instancia) |
1525 |
#%% |
#%% |
1526 |
#%% self.__personaje.actuar("ha cogido " + instancia.nombre) |
#%% self.__personaje.actuar("ha cogido " + instancia.nombre) |
1527 |
#%% self.conn().send("Has cogido " + instancia.nombre, 0) |
#%% self.conn().send("Has cogido " + instancia.nombre, 0) |
1528 |
#%% if cantidad > 1: |
#%% if cantidad > 1: |
1529 |
#%% self.conn().send(" (" + str(cantidad) + " unidades)") |
#%% self.conn().send(" (" + str(cantidad) + " unidades)") |
1530 |
#%% else: |
#%% else: |
1531 |
#%% self.conn().send("") |
#%% self.conn().send("") |
1532 |
#%% |
#%% |
1533 |
#%% break |
#%% break |
1534 |
#%% |
#%% |
1535 |
#%% if encontrados == 0: |
#%% if encontrados == 0: |
1536 |
#%% self.conn().send("No hay en la sala ningún objeto con identificativo " + id_objeto) |
#%% self.conn().send("No hay en la sala ningún objeto con identificativo " + id_objeto) |
1537 |
#%% elif encontrados < n_orden: |
#%% elif encontrados < n_orden: |
1538 |
#%% self.conn().send("No hay en la sala suficientes objetos con identificativo " + |
#%% self.conn().send("No hay en la sala suficientes objetos con identificativo " + |
1539 |
#%% id_objeto + ", solo hay " + str(encontrados)) |
#%% id_objeto + ", solo hay " + str(encontrados)) |
1540 |
|
|
1541 |
|
|
1542 |
#%% def cmd_coger(self, nombre_objeto, cantidad=1): |
#%% def cmd_coger(self, nombre_objeto, cantidad=1): |
1563 |
|
|
1564 |
|
|
1565 |
def cmd_dejar(self, id_objeto, cantidad, n_orden, n_instancia): |
def cmd_dejar(self, id_objeto, cantidad, n_orden, n_instancia): |
1566 |
try: |
try: |
1567 |
|
|
1568 |
#%% aqui faltaría lo del sigilo... |
#%% aqui faltaría lo del sigilo... |
1569 |
nombre = self.__personaje.dejar(id_objeto, cantidad, n_orden, n_instancia) |
nombre = self.__personaje.dejar(id_objeto, cantidad, n_orden, n_instancia) |
1570 |
|
|
1571 |
self.conn().send("Has dejado " + nombre, 0) |
self.conn().send("Has dejado " + nombre, 0) |
1572 |
if cantidad > 1: |
if cantidad > 1: |
1573 |
self.conn().send(" (" + str(cantidad) + " unidades)") |
self.conn().send(" (" + str(cantidad) + " unidades)") |
1574 |
else: |
else: |
1575 |
self.conn().send("") |
self.conn().send("") |
1576 |
|
|
1577 |
except ExcepcionDeJuego, mensaje: |
except ExcepcionDeJuego, mensaje: |
1578 |
|
|
1579 |
self.conn().send(str(mensaje)) |
self.conn().send(str(mensaje)) |
1580 |
|
|
1581 |
|
|
1582 |
|
|
1583 |
#%% def cmd_dejar(self, id_objeto, cantidad, n_orden, n_instancia, dificultad = 0): |
#%% def cmd_dejar(self, id_objeto, cantidad, n_orden, n_instancia, dificultad = 0): |
1584 |
#%% encontrados = 0 |
#%% encontrados = 0 |
1585 |
#%% n_objeto = -1 |
#%% n_objeto = -1 |
1586 |
#%% |
#%% |
1587 |
#%% # Buscar el objeto en la mochila. Puede que haya varios con el mismo identificativo, |
#%% # Buscar el objeto en la mochila. Puede que haya varios con el mismo identificativo, |
1588 |
#%% # discriminamos con el parametro n_orden. |
#%% # discriminamos con el parametro n_orden. |
1589 |
#%% for instancias in self.__personaje.mochila: |
#%% for instancias in self.__personaje.mochila: |
1590 |
#%% n_objeto = n_objeto + 1 |
#%% n_objeto = n_objeto + 1 |
1591 |
#%% if normalizar_id(id_objeto) == extraer_id(instancias[0].nombre): |
#%% if normalizar_id(id_objeto) == extraer_id(instancias[0].nombre): |
1592 |
#%% encontrados = encontrados + 1 |
#%% encontrados = encontrados + 1 |
1593 |
#%% if encontrados == n_orden: |
#%% if encontrados == n_orden: |
1594 |
#%% |
#%% |
1595 |
#%% # Hemos encontrado el objeto, ahora vemos si hay instancias |
#%% # Hemos encontrado el objeto, ahora vemos si hay instancias |
1596 |
#%% # suficientes. |
#%% # suficientes. |
1597 |
#%% if (n_instancia + cantidad - 1) > len(instancias): |
#%% if (n_instancia + cantidad - 1) > len(instancias): |
1598 |
#%% self.conn().send("No tienes " + str(n_instancia + cantidad - 1) + |
#%% self.conn().send("No tienes " + str(n_instancia + cantidad - 1) + |
1599 |
#%% " unidades de ese objeto en la mochila, solo tienes " + |
#%% " unidades de ese objeto en la mochila, solo tienes " + |
1600 |
#%% str(len(instancias))) |
#%% str(len(instancias))) |
1601 |
#%% else: |
#%% else: |
1602 |
#%% |
#%% |
1603 |
#%% # Todo ok: sacamos las instancias de la mochila y las dejamos |
#%% # Todo ok: sacamos las instancias de la mochila y las dejamos |
1604 |
#%% # en la sala |
#%% # en la sala |
1605 |
#%% for i in range(0, cantidad): |
#%% for i in range(0, cantidad): |
1606 |
#%% instancia = self.__personaje.sacar_de_mochila(n_objeto, |
#%% instancia = self.__personaje.sacar_de_mochila(n_objeto, |
1607 |
#%% n_instancia - 1) |
#%% n_instancia - 1) |
1608 |
#%% self.__personaje.sala.dejar_objeto(instancia, dificultad) |
#%% self.__personaje.sala.dejar_objeto(instancia, dificultad) |
1609 |
#%% |
#%% |
1610 |
#%% if dificultad == 0: |
#%% if dificultad == 0: |
1611 |
#%% self.__personaje.actuar("ha dejado " + instancia.nombre) |
#%% self.__personaje.actuar("ha dejado " + instancia.nombre) |
1612 |
#%% self.conn().send("Has dejado " + instancia.nombre, 0) |
#%% self.conn().send("Has dejado " + instancia.nombre, 0) |
1613 |
#%% else: |
#%% else: |
1614 |
#%% self.__personaje.actuar("ha escondido algo") |
#%% self.__personaje.actuar("ha escondido algo") |
1615 |
#%% self.conn().send("Has escondido " + instancia.nombre, 0) |
#%% self.conn().send("Has escondido " + instancia.nombre, 0) |
1616 |
#%% |
#%% |
1617 |
#%% if cantidad > 1: |
#%% if cantidad > 1: |
1618 |
#%% self.conn().send(" (" + str(cantidad) + " unidades)") |
#%% self.conn().send(" (" + str(cantidad) + " unidades)") |
1619 |
#%% else: |
#%% else: |
1620 |
#%% self.conn().send("") |
#%% self.conn().send("") |
1621 |
#%% |
#%% |
1622 |
#%% break |
#%% break |
1623 |
#%% |
#%% |
1624 |
#%% if encontrados == 0: |
#%% if encontrados == 0: |
1625 |
#%% self.conn().send("No tienes en la mochila ningún objeto con identificativo " + |
#%% self.conn().send("No tienes en la mochila ningún objeto con identificativo " + |
1626 |
#%% id_objeto) |
#%% id_objeto) |
1627 |
#%% elif encontrados < n_orden: |
#%% elif encontrados < n_orden: |
1628 |
#%% self.conn().send("No tienes en la mochila suficientes objetos con identificativo " + |
#%% self.conn().send("No tienes en la mochila suficientes objetos con identificativo " + |
1629 |
#%% id_objeto + ", solo tienes " + str(encontrados)) |
#%% id_objeto + ", solo tienes " + str(encontrados)) |
1630 |
|
|
1631 |
|
|
1632 |
def cmd_esconder(self, id_objeto, cantidad, n_orden, n_instancia): |
def cmd_esconder(self, id_objeto, cantidad, n_orden, n_instancia): |
1633 |
try: |
try: |
1634 |
|
|
1635 |
#%% aqui faltaría lo del sigilo... |
#%% aqui faltaría lo del sigilo... |
1636 |
nombre = self.__personaje.esconder(id_objeto, cantidad, n_orden, n_instancia) |
nombre = self.__personaje.esconder(id_objeto, cantidad, n_orden, n_instancia) |
1637 |
|
|
1638 |
self.conn().send("Has escondido " + nombre, 0) |
self.conn().send("Has escondido " + nombre, 0) |
1639 |
if cantidad > 1: |
if cantidad > 1: |
1640 |
self.conn().send(" (" + str(cantidad) + " unidades)") |
self.conn().send(" (" + str(cantidad) + " unidades)") |
1641 |
else: |
else: |
1642 |
self.conn().send("") |
self.conn().send("") |
1643 |
|
|
1644 |
except ExcepcionDeJuego, mensaje: |
except ExcepcionDeJuego, mensaje: |
1645 |
|
|
1646 |
self.conn().send(str(mensaje)) |
self.conn().send(str(mensaje)) |
1647 |
|
|
1648 |
|
|
1649 |
def cmd_dar(self, id_receptor, id_objeto, cantidad, n_orden, n_instancia): |
def cmd_dar(self, id_receptor, id_objeto, cantidad, n_orden, n_instancia): |
1650 |
encontrados = 0 |
encontrados = 0 |
1651 |
n_objeto = -1 |
n_objeto = -1 |
1652 |
|
|
1653 |
# Buscar el id_receptor en la sala actual. |
# Buscar el id_receptor en la sala actual. |
1654 |
if self.__personaje.sala != None: |
if self.__personaje.sala != None: |
1662 |
self.conn().send('No hay nadie aquí que se llame '+id_receptor) |
self.conn().send('No hay nadie aquí que se llame '+id_receptor) |
1663 |
return |
return |
1664 |
|
|
1665 |
# Buscar el objeto en la mochila. Puede que haya varios con el mismo identificativo, |
# Buscar el objeto en la mochila. Puede que haya varios con el mismo identificativo, |
1666 |
# discriminamos con el parametro n_orden. |
# discriminamos con el parametro n_orden. |
1667 |
for instancias in self.__personaje.mochila: |
for instancias in self.__personaje.mochila: |
1668 |
n_objeto = n_objeto + 1 |
n_objeto = n_objeto + 1 |
1669 |
if normalizar_id(id_objeto) == extraer_id(instancias[0].nombre): |
if normalizar_id(id_objeto) == extraer_id(instancias[0].nombre): |
1670 |
encontrados = encontrados + 1 |
encontrados = encontrados + 1 |
1671 |
if encontrados == n_orden: |
if encontrados == n_orden: |
1672 |
|
|
1673 |
# Hemos encontrado el objeto, ahora vemos si hay instancias |
# Hemos encontrado el objeto, ahora vemos si hay instancias |
1674 |
# suficientes. |
# suficientes. |
1675 |
if (n_instancia + cantidad - 1) > len(instancias): |
if (n_instancia + cantidad - 1) > len(instancias): |
1676 |
self.conn().send("No tienes " + str(n_instancia + cantidad - 1) + |
self.conn().send("No tienes " + str(n_instancia + cantidad - 1) + |
1677 |
" unidades de ese objeto en la mochila, solo tienes " + |
" unidades de ese objeto en la mochila, solo tienes " + |
1678 |
str(len(instancias))) |
str(len(instancias))) |
1679 |
else: |
else: |
1680 |
#Comprobar antes de seguir que el personaje que da el objeto se encuentra |
#Comprobar antes de seguir que el personaje que da el objeto se encuentra |
1681 |
#en la lista de confianza del receptor (salvo que el que da sea un Maia...) |
#en la lista de confianza del receptor (salvo que el que da sea un Maia...) |
1682 |
|
|
1690 |
self.__personaje.actuar_individual(receptor, "te ha intentado dar " + id_objeto + " pero te has negado.") |
self.__personaje.actuar_individual(receptor, "te ha intentado dar " + id_objeto + " pero te has negado.") |
1691 |
break |
break |
1692 |
|
|
1693 |
# Todo ok: sacamos las instancias de la mochila |
# Todo ok: sacamos las instancias de la mochila |
1694 |
for i in range(0, cantidad): |
for i in range(0, cantidad): |
1695 |
instancia = self.__personaje.sacar_de_mochila(n_objeto, |
instancia = self.__personaje.sacar_de_mochila(n_objeto, |
1696 |
n_instancia - 1) |
n_instancia - 1) |
1697 |
receptor.meter_en_mochila(instancia) |
receptor.meter_en_mochila(instancia) |
1698 |
|
|
1699 |
#mensajes |
#mensajes |
1700 |
self.__personaje.actuar("ha dado " + instancia.nombre + " a " + receptor.nombre) |
self.__personaje.actuar("ha dado " + instancia.nombre + " a " + receptor.nombre) |
1701 |
self.conn().send("Has dado " + instancia.nombre + " a " + receptor.nombre, 0) |
self.conn().send("Has dado " + instancia.nombre + " a " + receptor.nombre, 0) |
1702 |
self.__personaje.actuar_individual(receptor, "te ha dado " + instancia.nombre +' ('+str(cantidad)+' unidad[es])') |
self.__personaje.actuar_individual(receptor, "te ha dado " + instancia.nombre +' ('+str(cantidad)+' unidad[es])') |
1703 |
if cantidad > 1: |
if cantidad > 1: |
1704 |
self.conn().send(" (" + str(cantidad) + " unidades)") |
self.conn().send(" (" + str(cantidad) + " unidades)") |
1705 |
else: |
else: |
1706 |
self.conn().send("") |
self.conn().send("") |
1707 |
|
|
1708 |
break |
break |
1709 |
|
|
1710 |
if encontrados == 0: |
if encontrados == 0: |
1711 |
self.conn().send("No tienes en la mochila ningún objeto con identificativo " + |
self.conn().send("No tienes en la mochila ningún objeto con identificativo " + |
1712 |
id_objeto) |
id_objeto) |
1713 |
elif encontrados < n_orden: |
elif encontrados < n_orden: |
1714 |
self.conn().send("No tienes en la mochila suficientes objetos con identificativo " + |
self.conn().send("No tienes en la mochila suficientes objetos con identificativo " + |
1715 |
id_objeto + ", solo tienes " + str(encontrados)) |
id_objeto + ", solo tienes " + str(encontrados)) |
1716 |
|
|
1717 |
|
|
1718 |
#%% def cmd_dejar(self, nombre_objeto, cantidad, accion = "dejado",dif=0): |
#%% def cmd_dejar(self, nombre_objeto, cantidad, accion = "dejado",dif=0): |
1731 |
|
|
1732 |
|
|
1733 |
def cmd_comer(self, id_objeto, n_orden, n_instancia): |
def cmd_comer(self, id_objeto, n_orden, n_instancia): |
1734 |
self.__personaje.comer(id_objeto, n_orden, n_instancia) |
self.__personaje.comer(id_objeto, n_orden, n_instancia) |
1735 |
|
|
1736 |
|
|
1737 |
def cmd_beber(self, id_objeto, n_orden, n_instancia): |
def cmd_beber(self, id_objeto, n_orden, n_instancia): |
1738 |
self.__personaje.beber(id_objeto, n_orden, n_instancia) |
self.__personaje.beber(id_objeto, n_orden, n_instancia) |
1739 |
|
|
1740 |
|
|
1741 |
def cmd_usar(self, id_objeto, n_orden, n_instancia): |
def cmd_usar(self, id_objeto, n_orden, n_instancia): |
1742 |
self.__personaje.usar(id_objeto, n_orden, n_instancia) |
self.__personaje.usar(id_objeto, n_orden, n_instancia) |
1743 |
|
|
1744 |
|
|
1745 |
def cmd_usar_con(self, id_objeto, n_orden, n_instancia, id_objeto2, n_orden2, n_instancia2): |
def cmd_usar_con(self, id_objeto, n_orden, n_instancia, id_objeto2, n_orden2, n_instancia2): |
1746 |
self.__personaje.usar_con(id_objeto, n_orden, n_instancia, |
self.__personaje.usar_con(id_objeto, n_orden, n_instancia, |
1747 |
id_objeto2, n_orden2, n_instancia2) |
id_objeto2, n_orden2, n_instancia2) |
1748 |
|
|
1749 |
#%% encontrados = 0 |
#%% encontrados = 0 |
1750 |
#%% n_objeto = -1 |
#%% n_objeto = -1 |
1751 |
#%% |
#%% |
1752 |
#%% # Buscar el objeto en la mochila. Puede que haya varios con el mismo identificativo, |
#%% # Buscar el objeto en la mochila. Puede que haya varios con el mismo identificativo, |
1753 |
#%% # discriminamos con el parametro n_orden. |
#%% # discriminamos con el parametro n_orden. |
1754 |
#%% for instancias in self.__personaje.mochila: |
#%% for instancias in self.__personaje.mochila: |
1755 |
#%% n_objeto = n_objeto + 1 |
#%% n_objeto = n_objeto + 1 |
1756 |
#%% if normalizar_id(id_objeto) == extraer_id(instancias[0].nombre): |
#%% if normalizar_id(id_objeto) == extraer_id(instancias[0].nombre): |
1757 |
#%% encontrados = encontrados + 1 |
#%% encontrados = encontrados + 1 |
1758 |
#%% if encontrados == n_orden: |
#%% if encontrados == n_orden: |
1759 |
#%% |
#%% |
1760 |
#%% # Hemos encontrado el objeto, ahora vemos si hay instancias |
#%% # Hemos encontrado el objeto, ahora vemos si hay instancias |
1761 |
#%% # suficientes. |
#%% # suficientes. |
1762 |
#%% if (n_instancia) > len(instancias): |
#%% if (n_instancia) > len(instancias): |
1763 |
#%% self.conn().send("No tienes " + str(n_instancia) + |
#%% self.conn().send("No tienes " + str(n_instancia) + |
1764 |
#%% " instancias de ese objeto en la mochila, solo tienes " + |
#%% " instancias de ese objeto en la mochila, solo tienes " + |
1765 |
#%% str(len(instancias))) |
#%% str(len(instancias))) |
1766 |
#%% else: |
#%% else: |
1767 |
#%% |
#%% |
1768 |
#%% # Todo ok: usamos la instancia |
#%% # Todo ok: usamos la instancia |
1769 |
#%% instancia = instancias[n_instancia - 1] |
#%% instancia = instancias[n_instancia - 1] |
1770 |
#%% |
#%% |
1771 |
#%% if not instancia.puede_usar(self.__personaje): |
#%% if not instancia.puede_usar(self.__personaje): |
1772 |
#%% self.conn().send("No puedes usar este objeto.") |
#%% self.conn().send("No puedes usar este objeto.") |
1773 |
#%% else: |
#%% else: |
1774 |
#%% instancia.usar(self.__personaje) |
#%% instancia.usar(self.__personaje) |
1775 |
#%% |
#%% |
1776 |
#%% #self.conn().send("Aún no se pueden usar objetos...") |
#%% #self.conn().send("Aún no se pueden usar objetos...") |
1777 |
#%% #if nombre_objeto == "": |
#%% #if nombre_objeto == "": |
1778 |
#%% # self.conn.send("Debes especificar un objeto") |
#%% # self.conn.send("Debes especificar un objeto") |
1786 |
|
|
1787 |
|
|
1788 |
def cmd_poner(self, posicion, id_objeto, n_orden, n_instancia): |
def cmd_poner(self, posicion, id_objeto, n_orden, n_instancia): |
1789 |
self.__personaje.ponerse(posicion, id_objeto, n_orden, n_instancia) |
self.__personaje.ponerse(posicion, id_objeto, n_orden, n_instancia) |
1790 |
|
|
1791 |
|
|
1792 |
def cmd_quitar(self, posicion): |
def cmd_quitar(self, posicion): |
1793 |
self.__personaje.quitarse(posicion) |
self.__personaje.quitarse(posicion) |
1794 |
|
|
1795 |
|
|
1796 |
def cmd_examinar(self, id_objeto, n_orden, n_instancia): |
def cmd_examinar(self, id_objeto, n_orden, n_instancia): |
1797 |
encontrados = 0 |
encontrados = 0 |
1798 |
n_objeto = -1 |
n_objeto = -1 |
1799 |
|
|
1800 |
# Buscar el objeto en la mochila. Puede que haya varios con el mismo identificativo, |
# Buscar el objeto en la mochila. Puede que haya varios con el mismo identificativo, |
1801 |
# discriminamos con el parametro n_orden. |
# discriminamos con el parametro n_orden. |
1866 |
|
|
1867 |
def cmd_observar(self, nombre_oponente): |
def cmd_observar(self, nombre_oponente): |
1868 |
|
|
1869 |
encontrado = 0 |
encontrado = 0 |
1870 |
for oponente in self.__personaje.sala.personajes.values(): |
for oponente in self.__personaje.sala.personajes.values(): |
1871 |
print oponente.id, oponente.nombre |
print oponente.id, oponente.nombre |
1872 |
if isinstance(oponente, PersonajeJugador): |
if isinstance(oponente, PersonajeJugador): |
1873 |
nombre = oponente.id |
nombre = oponente.id |
1874 |
else: |
else: |
1875 |
nombre = oponente.nombre |
nombre = oponente.nombre |
1876 |
|
|
1877 |
if normalizar_id(nombre_oponente) == extraer_id(nombre): |
if normalizar_id(nombre_oponente) == extraer_id(nombre): |
1878 |
encontrado = 1 |
encontrado = 1 |
1879 |
break |
break |
1880 |
|
|
1881 |
if encontrado == 0: |
if encontrado == 0: |
1882 |
self.conn().send("Aquí no hay nadie llamado " + nombre_oponente) |
self.conn().send("Aquí no hay nadie llamado " + nombre_oponente) |
1883 |
return |
return |
1884 |
|
|
1885 |
result = self.__personaje.comparar(oponente) |
result = self.__personaje.comparar(oponente) |
1886 |
|
|
1887 |
if result == Personaje.COMP_INF_MAS_FUERTE: |
if result == Personaje.COMP_INF_MAS_FUERTE: |
1888 |
adjetivo = "infinitamente más fuerte" |
adjetivo = "infinitamente más fuerte" |
1918 |
|
|
1919 |
|
|
1920 |
def cmd_seguir(self, id_lider): |
def cmd_seguir(self, id_lider): |
1921 |
if not self.__personaje.sala.personajes.has_key(id_lider): |
if not self.__personaje.sala.personajes.has_key(id_lider): |
1922 |
self.conn().send('Aqui no hay nadie llamado ' + id_lider) |
self.conn().send('Aqui no hay nadie llamado ' + id_lider) |
1923 |
else: |
else: |
1924 |
if self.__personaje.anterior != None: |
if self.__personaje.anterior != None: |
1925 |
self.conn().send('Ya no estas siguiendo a ' + self.__personaje.anterior.id) |
self.conn().send('Ya no estas siguiendo a ' + self.__personaje.anterior.id) |
1926 |
self.__personaje.no_seguir() |
self.__personaje.no_seguir() |
1927 |
|
|
1928 |
lider = self.__personaje.sala.personajes[id_lider] |
lider = self.__personaje.sala.personajes[id_lider] |
1929 |
self.__personaje.seguir(lider) |
self.__personaje.seguir(lider) |
1930 |
self.conn().send('Ahora estas siguiendo a ' + lider.id) |
self.conn().send('Ahora estas siguiendo a ' + lider.id) |
1931 |
|
|
1932 |
|
|
1933 |
def cmd_no_seguir(self): |
def cmd_no_seguir(self): |
1934 |
if self.__personaje.anterior == None: |
if self.__personaje.anterior == None: |
1935 |
self.conn().send('¡No estabas siguiendo a nadie!') |
self.conn().send('¡No estabas siguiendo a nadie!') |
1936 |
else: |
else: |
1937 |
self.conn().send('Ya no estas siguiendo a ' + self.__personaje.anterior.id) |
self.conn().send('Ya no estas siguiendo a ' + self.__personaje.anterior.id) |
1938 |
self.__personaje.no_seguir() |
self.__personaje.no_seguir() |
1939 |
|
|
1940 |
|
|
1941 |
def cmd_ip(self): |
def cmd_ip(self): |
1942 |
self.conn().send('Estás conectado desde la dirección ' + self.conn().ip) |
self.conn().send('Estás conectado desde la dirección ' + self.conn().ip) |
1943 |
|
|
1944 |
|
|
1945 |
def cmd_area(self): |
def cmd_area(self): |
1946 |
self.conn().send('Estás en el área ' + self.__personaje.sala.area) |
self.conn().send('Estás en el área ' + self.__personaje.sala.area) |
1947 |
|
|
1948 |
|
|
1949 |
def cmd_atacar(self, nombre_oponente): |
def cmd_atacar(self, nombre_oponente): |
1978 |
|
|
1979 |
|
|
1980 |
def cmd_reloj(self): |
def cmd_reloj(self): |
1981 |
ahora = FechaHoraMine_ahora() |
ahora = FechaHoraMine_ahora() |
1982 |
self.conn().send("%s (%s)" % (str(ahora), ahora.desc_seccion())) |
self.conn().send("%s (%s)" % (str(ahora), ahora.desc_seccion())) |
1983 |
|
|
1984 |
|
|
1985 |
# Código para pruebas unitarias del módulo. |
# Código para pruebas unitarias del módulo. |
1986 |
|
|
1987 |
if (__name__ == '__main__'): |
if (__name__ == '__main__'): |