Just curious if anyone knows how Perish Song is programmed in Colo along with how the game decides to end the battle, due to a bug I have seemed to have found or at least a variation on an old one. I have recently obtained a copy of Colo and knew about the standard bug with Perish Song, in which if an enemy faints due to a status ailment while Perish Song has been used on the player's Pokémon, then that Pokémon will gain Exp depending on what the Perish Count was at.
I forgot about needing a status ailment when I taught Perish Song to Misdreavus, though I found it was useful to have while going through Mt. Battle. Near the end of Area 7 is a battle that involves a Pupitar that knows Sandstorm. During my battle, Pupitar was not doing much damage and was mostly trying to keep Sandstorm on the field, so I ended up focusing on attacking the other Pokémon so that I could get the trainer's team down to two for a guaranteed win with Perish Song. As it turned out, I believe that the battle entering the final turn had me with an Ampharos and a Misdreavus against the Pupitar. Ampharos and Pupitar has a Perish Count of 1, I had a Flygon holding an Exp Share in the party, and a sandstorm was raging. Whatever I did, neither side lost a Pokémon. The sandstorm did its damage, Pupitar fainted to Perish Song, and I gained the Exp. Then, Ampharos fainted to Perish Song, I gained more Exp., and the battle ended.
Testing has shown that Pupitar needs to faint to a Perish Count before the Pokémon on my side faints to the same Perish Count, that Sandstorm might play a factor, that an Exp. Share might be require, and that the Pokémon on the other side might need to be immune to Sandstorm damage, and that the Pokémon on my side might need to take Sandstorm damage.
I was hoping that someone would know about how Perish Song is program to see why it has issues dealing with when Pokémon faint and how much Exp it deals out, among other possible oddities. Just in case someone would like to look at how things occurred, I have a partial transcript of the last turn from one of my tests.
Ampharos takes damage due to Sandstorm.
Pupitar has a Perish Count of 0.
Pupitar faints due to Perish Count.
- Guy Odon is out of usable Pokémon at this point. -
Ampharos gained 180 Exp.
Umbreon gained 180 Exp.
Flygon gained 904 Exp. (Exp Share + Participated)
Misdreavus gain 180 Exp.
Ampharos has a Perish Count of 0.
Ampharos faints due to Perish Count.
- I am down to 5 Pokémon remaining at this point. -
Umbreon gained 241 Exp.
Flygon gained 966 Exp. (Exp Share + Participated)
Misdreavus gained 241 Exp.
- The game considers the battle to now be over. -