The easiest way would probably be to have PP regenerate by 1 every turn, and change the check whether the move has more than zero PP to check that it's entirely full. (Also you could reword the PP display when selecting the next attack so that it displays the number as either "ready" or as "X turns left", where X is max PP - current PP, e.g. how many more turns it takes for it to regenerate to full again)
Refilling PP probably would be easiest to implement in obj_battlecontrol's step event, state = ctst_ACTIONSELECT, substate = 0. (That's the start of the turn). Also, you'd probably want to add a case in the room transition when winning / losing a battle to refill all PP to max.
PP display GUI elements are set up in mev_battle_attack (starting at line 41) and mev_pause_monsters_status (starting at line 50).
The enemy PP check is at line 400 of the battle control's step event (state = ctst_ACTIONSELECT, substate = bcontrolstate_ACTIONSELECT_ENEMY). Player's PP check is mev_battle_attack at line 8.