Let's see.
So, it blocks moves like Swords Dance. It has Disable-like effect, except it works as long the user is in battle, not for given number of turns.
Honestly, that doesn't look that difficult. First, how to determine if the move is boosting.
Code:
boosts: {
atk: 1
},
// ...
target: "self",
(there are some exceptions, like Belly Drum, but that's the general pattern)
Next, how to disable moves. Assault Vest provides a solution (please note it's code from Assault Vest, not the proposed Fairy Lock).
Code:
onModifyPokemon: function(pokemon) {
var moves = pokemon.moveset;
for (var i=0; i<moves.length; i++) {
if (this.getMove(moves[i].move).category === 'Status') {
moves[i].disabled = true;
}
}
},
The last thing is modifying the enemy as long the user is in battle. That's also simple. All that needs to be done is setting the status to the user (not the enemy). Next, the status should define "onFoeModifyPokemon" event, which does the thing similar to Assault Vest's "onModifyPokemon".
By the way, I apologise for latest lack of updates. It's hard to code when you have lots to work on, and there is school. Perhaps I shouldn't have applied to code this mod. I'm sure it looked simpler when I applied for it. I looked at everything at the list, and I have general idea how to implement everything on the list, but I barely have any time to work on this project.