Solucionado así:
Básicamente le puse más casos, como que quedan doble KO. Mucho más no sé explicar porque fue hace un rato y además me cuesta entenderlo.
Código (actionscript) [Seleccionar]
Escena 1
actions for fotograma 1
// Situación inicial.
BaseHP = 10;
BaseEnHP = 10;
EnDf = 2;
// Guardar Situación inicial.
SitID = "S"+BaseHP+"_"+BaseEnHP;
set (SitID+"HP", BaseHP);
set (SitID+"EnHP", BaseEnHP);
set (SitID+"Action", "Ninguno");
Action = 1;
// Variables de Unsolved situaciones.
U = 0;
Us = 0;
actions for fotograma 2
// Reset Situación.
HP = BaseHP;
EnHP = BaseEnHP;
trace ("La sit es: "+HP+"_"+EnHP);
// Aplicación.
trace ("Player attacks with "+Action+"!");
EnHP = EnHP-(Action-EnDf);
// Si EnHP aumentó, resetearlo.
if (BaseEnHP<EnHP) {
trace ("EnHP aumentó, se resetea: "+BaseEnHP);
EnHP = BaseEnHP;
} else {
trace ("EnHP reducido a: "+EnHP);
}
// Efecto simultáneo.
trace ("Enemy attacks!");
HP = HP-1;
// Si HP quedó negativo, pasa a 0.
if (HP<0) {
trace ("HP quedó negativo, pasa a 0");
HP = 0;
} else {
trace ("HP reducido a: "+HP);
}
// ¿Sol?
if (0<HP) {
if (EnHP<=0) {
// Solución; iniciar mostrar lista.
List = Action;
gotoAndPlay (4);
// Sino, ambos están OK.
// ¿La situación está anotada?
} else if (eval("S"+HP+"_"+EnHP+"HP") == undefined) {
// No. Anotarla.
SitID = "S"+HP+"_"+EnHP;
set (SitID+"HP", BaseHP);
set (SitID+"EnHP", BaseEnHP);
set (SitID+"Action", Action);
trace ("Nueva sit anotada: "+SitID);
Us = Us+1;
SitID = "U"+Us;
set (SitID+"HP", HP);
set (SitID+"EnHP", EnHP);
}
// Sino, el enemigo ganó.
}
actions for fotograma 3
// La situación existe o el jugador perdió.
// ¿Modificar candidato es posible?
if (Action<3) {
// Modificación de candidato.
Action = Action+2;
gotoAndPlay (2);
} else if (U<Us) {
// Usar Unsolveds.
U = U+1;
BaseHP = eval("U"+U+"HP");
BaseEnHP = eval("U"+U+"EnHP");
Action = 1;
gotoAndPlay (2);
} else {
// No hay Solución.
List = "No hay sol";
stop ();
}
actions for fotograma 5
SitID = eval("S"+BaseHP+"_"+BaseEnHP+"Action");
Base2HP = BaseHP;
BaseHP = eval("S"+BaseHP+"_"+BaseEnHP+"HP");
BaseEnHP = eval("S"+Base2HP+"_"+BaseEnHP+"EnHP");
if (SitID != "Ninguno") {
List = SitID+" "+List;
gotoAndPlay (4);
} else {
stop ();
}
Básicamente le puse más casos, como que quedan doble KO. Mucho más no sé explicar porque fue hace un rato y además me cuesta entenderlo.