So, I have to admit, when it comes to game balance, I don't know much. But I can still look at something and think if it'd be fun.
While it's really easy to remove the specific checks that this is a player's Pokémon, and equally easy to set the happiness for the Pokémon for it to activate in the PBS, I'd personally put some sort of limit on it:
- A slightly reduced rate, as a 25% endure rate at max friendship, such as for a mon using Return, doesn't sound very fun for the player, and "BS RNG mechanics" (for lack of a better term) should generally favor the player. People are bad at probability calculations, and tend to remember when random stuff does things bad more than when it does the expected result.
- A cap on the number of times it can activate. (And then the mon gets tired?)
Mind of course that these kinds of effects have to be specifically set up, as no Pokémon has a base friendship high enough to trigger affection effects in the first place.
I'm not sure to what degree such effects need to be telegraphed to the player. On one hand I can see the surprise element of a mon randomly holding on, but there's just as much a chance of the player missing that. If you genuinely want this affection effect for the sake of a cool set piece in a battle, it really should be scripted to always happen (but like, just once per battle).