ENCUENTRO SALVAJE DEPENDIENDO DE UNA FLAG
Con este método evitaremos los encuentros salvajes, aún así, encontraremos Pokémon si pescamos, y los encuentros por script seguirán funcionando, viene a ser como un repelente permanente, que podemos controlar con una flag.
Para crear el sistema sólo tenemos que editar "src/field_control_avatar.c", donde encontraremos esta función:
Código:
static bool8 CheckStandardWildEncounter(u16 metatileBehavior)
{
if (sWildEncounterImmunitySteps < 4)
{
sWildEncounterImmunitySteps++;
sPreviousPlayerMetatileBehavior = metatileBehavior;
return FALSE;
}
if (StandardWildEncounter(metatileBehavior, sPreviousPlayerMetatileBehavior) == TRUE)
{
sWildEncounterImmunitySteps = 0;
sPreviousPlayerMetatileBehavior = metatileBehavior;
return TRUE;
}
sPreviousPlayerMetatileBehavior = metatileBehavior;
return FALSE;
}
Para comprobar si una flag está activada en un archivo .c, usaremos
Código:
FlagGet(FLAG)
Código:
static bool8 CheckStandardWildEncounter(u16 metatileBehavior)
{
if (FlagGet(FLAG_UNUSED_0x020) != 0){
if (sWildEncounterImmunitySteps < 4)
{
sWildEncounterImmunitySteps++;
sPreviousPlayerMetatileBehavior = metatileBehavior;
return FALSE;
}
if (StandardWildEncounter(metatileBehavior, sPreviousPlayerMetatileBehavior) == TRUE)
{
sWildEncounterImmunitySteps = 0;
sPreviousPlayerMetatileBehavior = metatileBehavior;
return TRUE;
}
sPreviousPlayerMetatileBehavior = metatileBehavior;
return FALSE;
}
}
Ahora, simplemente vamos a crear el script que compruebe en qué estado está la flag, y en función de ello, la active o la desactive.
Código:
Route117_ComprobarFlag::
checkflag FLAG_UNUSED_0x020
vgoto_if 1, Route117_FlagActivada
setflag FLAG_UNUSED_0x020
msgbox Route117_Text_FlagActivada, MSGBOX_NPC
end
Route117_FlagActivada::
clearflag FLAG_UNUSED_0x020
msgbox Route117_Text_FlagDesactivada, MSGBOX_NPC
end
Route117_Text_FlagActivada:
.string "Encuentros salvajes\n"
.string "activados.$"
Route117_Text_FlagDesactivada:
.string "Encuentros salvajes\n"
.string "desactivados.$"