He estado probando tu código y es normal que no consigas nada con newtext, la implementación del condacto tiene una sola linea, y está mal (100% de lineas con bug, jaja).
Básicamente está así:
Código:
function ACCnewtext()
{
parser_order_buffer = '';
}
y debería ser así:
Código:
function ACCnewtext()
{
player_order_buffer = '';
}
Una vez cambiado NEWTEXT se comporta como debe, y borra el resto de órdenes que de el jugador, de modo que te da igual si a Wilma le lees el Quijote. Está en condacts.js, por si lo quieres arreglar tú mismo.
Por otro lado, en tu código veo una utilización incorrecta de PARSE, que es la que "te obliga" a poner la frase de Wilma dos veces. Si te fijas en la descripción del condacto
PARSE se trata de una condición, mezclada con accion . El condacto trata de
parsear una frase más del input del jugador, y si no lo consigue tiene éxito como condición y se ejecuta la linea siguiente. En caso contrario (si consigue sacar una frase) la condición falla, y por tanto se pasa a la siguiente entrada.
Por eso en el propio ejemplo de la ayuda, pone esto:
Código:
_ _ PARSE
WRITELN "No te entiendo" ; No hay más frases pendiente o no se entendió
DONE
verbo nombre Lista de CondActos ; Cualquier frase que el NPC entienda
_ _ WRITELN "No te entiendo" ; o mensaje similar para cualquier LS que sí tenía sentido pero no habíamos considerado
Es decir, lo normal es poner "No te entiendo al principio si el PARSE no encuentra frase, porque será que has puesto "DECIR WILMA" a secas, o "DECIR WILMA, ADASDASDASS" (algo no parseable). Después, estarían las respuestas normales de WILMA a cosas que entiende. Ese "verbo nombre Lista de CondActos " vendría a ser una o varias entradas donde pongas cosas que Wilma podría entender. La última entrada, es por si has dicho algo a Wilma que, aunque parseable, Wilma no entiende.
En tu caso, en el cual Wilma es presa del pánico y es irrelevante lo que le digas que siempre dice lo mismo, veo dos opciones:
1) La más sencilla, no te complicas la vida y directamente en respuestas:
Código:
decir wilma
present oWilma
synonym hablar wilma
hablar wilma
present oWilma
eq fWilma 0
writeln "{ink|yellow|Wilma: } ¡Bájame de aquí!"
newtext
done
Esto tiene la desventaja de que incluso si pones "DECIR WILMA" a secas, te va a soltar la frase, proque
2) Una un poco más elaborada, en la que miras a ver si le has dicho algo a Wilma, y si no es así, dices algo diferente. Mantendrías lo que tienes en la tabla de respuestas, y en el proceso sería así:
Código:
_ _
PARSE
WRITELN "Le dices algo a Wilma, pero con los nervios no se te entiende nada."
NEWTEXT
DONE
_ _
writeln "{ink|yellow|Wilma: } ¡Bájame de aquí!"
NEWTEXT
DONE
Este tiene la desventaja de que si pones "HABLAR WILMA" te va a decir que no se te entiende nada, porque no puede parsear una frase detras.
En general, quizá no deberías hacer sinónimos DECIR y HABLAR, porque aunque es lo mismo, no se usan igual:
> HABLAR CON WILMA
> DECIR A WILMA, HOLA
Decir suele requerir poner lo que se dice, y HABLAR no.
Así, una solución general sería:
En Respuestas:
Código:
HABLAR WILMA
PRESENT oWilma
EQ fWilma 0 ; Que por cierto, está perfecto, pero quizá es mas sencillo "ZERO fWilma"
WRITELN ink|yellow|Wilma: } ¡Bájame de aquí!"
DONE
DECIR WILMA
PRESENT oWilma
EQ fWilma 0 ; Que por cierto, está perfecto, pero quizá es mas sencillo "ZERO fWilma"
PROCESS 11
DONE
y en el proceso 11:
Código:
_ _
PARSE
WRITELN "Le dices algo a Wilma, pero con los nervios no se te entiende nada."
NEWTEXT
DONE
_ _
writeln "{ink|yellow|Wilma: } ¡Bájame de aquí!"
NEWTEXT
DONE
Verás que no hago NEWTEXT en el caso de HABLAR WILMA, porque no se espera nada detrás, pero sí lo hago con DECIR, porque sí se espera algo.