Section 4 - 'Libreria' de conversaciones
[--------------------------------------------------
Las que hay en el repositorio no
me acaban de encajar, así que
me meto en el barullo de hacerme
una propia.
--------------------------------------------------]
ConvTabla is a table-name that varies. ConvTabla is Table of NoConv.
Table of NoConv
| numero | seleccion | respuesta | activado | activa | extra | |
| 0 | a text | "ERROR Conversación" | a number | a list of numbers | a rule |
To decide whether conversacion iniciada:
if ConvTabla is Table of NoConv:
decide no;
otherwise:
decide yes.
Selecting option is an action applying to one number.
Understand "[number]" as selecting option when conversacion iniciada.
Before doing anything except selecting option or looking when conversacion iniciada:
say "Mejor no hacer nada hasta que termine esta conversación.";
stop the action.
Instead of looking when conversacion iniciada:
try selecting option 0.
Carry out selecting option:
let N be the number understood;
if N is 0:
say "Selecciona una de las opciones indicadas.";
decir opciones activas en ConvTabla;
stop the action;
if there is a activado of N in ConvTabla:
choose row with activado of N in ConvTabla;
otherwise:
if there is a numero of -1 in ConvTabla:
choose row with numero of -1 in ConvTabla;
say "[respuesta entry]";
say line break;
say line break;
otherwise:
say "Selecciona una de las opciones indicadas.";
decir opciones activas en ConvTabla;
stop the action;
say "[seleccion entry]";
say line break;
say "[respuesta entry]";
say line break;
if numero entry is less than 9000:
say line break;
quitar activados ConvTabla;
nuevas opciones para numero entry en ConvTabla;
otherwise:
now ConvTabla is Table of NoConv; [FIN]
follow extra entry.
This is the fake rule:
rule succeeds.
To quitar activados ( tabla - a table-name ):
repeat through tabla:
now activado entry is 0.
To decir opciones activas en ( tabla - a table-name ):
repeat through tabla:
if activado entry is not 0:
say "[j][activado entry][x]) [seleccion entry][line break]".
To nuevas opciones para ( num - a number) en ( tabla - a table-name):
choose row with numero of num in tabla;
let L be activa entry;
let N be number of entries of L;
let C be 0;
say "Respondes:[line break]";
repeat with IND running through L:
increase C by 1;
choose row with numero of IND in tabla;
now activado entry is C;
say "[j][C][x]) [seleccion entry][line break]".
To iniciar conversacion ( tabla - a table-name):
[ Marcamos que se inicia ]
now ConvTabla is tabla;
quitar activados tabla;
[ Escogemos el nodo raíz ]
choose row with numero of 0 in tabla;
say respuesta entry;
say line break;
say line break;
nuevas opciones para 0 en tabla.
[Tabla ejemplo]
Table of Conversacion Ejemplo
| numero | seleccion | respuesta | activado | activa | extra |
| 0 [inicial] | -- | "'No molestes', dice." | 1 | {1, 2, 3} | the fake rule |
| 1 | "Tengo que molestar." | "'Pesado', contesta." | 0 | {3} | the fake rule |
| 2 | "Lo siento." | "'Ya, claro', dice." | 0 | {3, 4} | the fake rule |
| 3 | "Imbecil." | "'Te vas a cagar', dice." | 0 | {9999} | the fake rule |
| 4 | "En serio que lo siento." | "'No me lo creo', dice." | 0 | {3, 5} | the fake rule |
| 5 | "Juro que lo siento." | "'Y yo soy Napoleón', dice." | 0 | {3, 6} | the fake rule |
| 6 | "Por mi madre, lo siento." | "'Vale, te creo', contesta al fin." | 0 | {9991} | the fake rule |
| 9991 | "Gracias" | "'No hay de qué', dice." | 0 | -- | the fake rule |
| 9999 | "Vete a la mierda" | "'Estás muerto', contesta." | 0 | -- | the fake rule |