Trainers trigger in local id order (#7424)
Co-authored-by: Martin Griffin <martinrgriffin@gmail.com>
This commit is contained in:
parent
ee0953ab29
commit
a8e60a8ba3
@ -360,6 +360,8 @@ static const struct SpriteTemplate sSpriteTemplate_Emote =
|
||||
bool8 CheckForTrainersWantingBattle(void)
|
||||
{
|
||||
u8 i;
|
||||
u8 trainerObjects[OBJECT_EVENTS_COUNT];
|
||||
u8 trainerObjectsCount = 0;
|
||||
|
||||
if (FlagGet(OW_FLAG_NO_TRAINER_SEE))
|
||||
return FALSE;
|
||||
@ -367,17 +369,34 @@ bool8 CheckForTrainersWantingBattle(void)
|
||||
gNoOfApproachingTrainers = 0;
|
||||
gApproachingTrainerId = 0;
|
||||
|
||||
// Adds trainers wanting to battle to array
|
||||
for (i = 0; i < OBJECT_EVENTS_COUNT; i++)
|
||||
{
|
||||
u8 numTrainers;
|
||||
|
||||
{
|
||||
if (!gObjectEvents[i].active)
|
||||
continue;
|
||||
if (gObjectEvents[i].trainerType != TRAINER_TYPE_NORMAL && gObjectEvents[i].trainerType != TRAINER_TYPE_BURIED)
|
||||
continue;
|
||||
trainerObjects[trainerObjectsCount++] = i;
|
||||
}
|
||||
|
||||
numTrainers = CheckTrainer(i);
|
||||
if (numTrainers == 0xFF) // non-trainerbatle script
|
||||
// Sorts array by localId
|
||||
for (i = 1; i <= trainerObjectsCount; i++)
|
||||
{
|
||||
u8 x = trainerObjects[i];
|
||||
u8 j = i;
|
||||
while (j > 0 && gObjectEvents[trainerObjects[j-1]].localId > gObjectEvents[x].localId)
|
||||
{
|
||||
trainerObjects[j] = trainerObjects[j-1];
|
||||
j--;
|
||||
}
|
||||
trainerObjects[j] = x;
|
||||
}
|
||||
|
||||
for (i = 1; i <= trainerObjectsCount; i++)
|
||||
{
|
||||
u8 numTrainers;
|
||||
numTrainers = CheckTrainer(trainerObjects[i]);
|
||||
if (numTrainers == 0xFF) // non-trainerbattle script
|
||||
{
|
||||
u32 objectEventId = gApproachingTrainers[gNoOfApproachingTrainers - 1].objectEventId;
|
||||
gSelectedObjectEvent = objectEventId;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user