Volviendo a tu problema, se me ocurre una cosa: el DOALL en teoría recorre todos los objetos que estén en la localidad indicada por el DOALL excepto que
1) Tenga alguno de estos atributos: aScenery, aConcealed, aNPC
2) Sea el objeto referenciado por el segundo nombre de la frase actual ¿no le habrás puesto al catalejo el mismo número de vocabulario que al barril?
Te contesto ahora a lo comentado

saimazoom escribió:
Gracias por mirarte estas cosas

. Te cuento un poco lo que voy haciendo:
1) He usado el # simplemente para no duplicar, pues quiero que si no hay ningún objeto dentro me de un mensaje distinto (No hay nada dentro). Lo voy a dividir en dos entradas y así evito el # y te cuento. Como sabes en NMP usábamos una instrucción de salto para este tipo de casos.
Sí, pero no se si un DOALL dentro de un "if" funcionará, se me hace raro, pero puede que sí.
saimazoom escribió:
2) He tenido que comentar casi todo lo de contenedores y "poner xx en yyy" de la librería original. Simplemente no funciona como lo teníamos hecho en el juego. En ISLA tenemos contenedores normales, por tamaño (grande y pequeño) y volcados además de poder usarlos los lleve o no el jugador (como el barril que pesa demasiado). Asi que no me queda más remedio que reinventar la rueda (pero no toda). Obviamente no he pegado aquí *todos* los casos de meter/sacar que tengo en el código.
Vale, si la estás reinventando basandote en la rueda anterior puede que no pase nada, pero ese PLACE es muy mala idea, o AUTOT o AUTOG o reconstruir la lógica del peso/máximo número de objetos/atributos que hacen que no se pueda coge (aSecenery)m etc. y luego hacer el PLACE si todo iba bien.
Citar:
3) Lo de reemplazar el verbo y el nombre que hace la librería base en algunos casos me ha traído bastantes problemas. Pues en casos
como 'poner lente en rayo', la librería le daba el cambiazo a 'meter en'. Es algo que intento también evitar en mi código, pues es muy
difícil de trazar si en alguna de las 3000 líneas anteriores alguien te ha cambiado un 'sacar' por un 'coger' o algo peor. En ese aspecto
prefiero con mucho la forma de sinónimos de múltiple entradas que teníamos en nmp

. Yo creo que deberías evitar tocar el input del jugador en la librería base, porque despista bastante escribir una cosa y que al proceso te llegue otra.
El modelo de la librería de Superglús es más "a la Inform", es decir, el parser saca verbo+nombre+prep+adver+noun2 y tal, pero luego eso se convierte en "acciones". Como no existen las acciones como tal lo que se hace es convertir determinadas entradas en otras, por ejemplo lo que dices de "PONER EN" se convierte en "METER EN" porque es la acción "meter en contenedor o superficie". Lamentablemente eso a veces te la lía, supongo que en Inform pasa igual, pero si te la lía no hay más que ponerlo en la tabla de respuestas al principio del todo(antes de los arreglos) ,y solucionado.
Las múltiples entradas obligan a cambiar mucho el compilador, un compilador que si no me equivoco está hecho con lex/yacc, pero del que no se conservan los ficheros originales, por lo que cambiar la gramática no es fácil. No es imposible, pero le di una vuelta y no veía por donde cogerlo, lo cual unido a mi aversión por el manejo de strings de C y que el lexer es todo strings.... como que paso XD