Looking around, you just need to add an item handler for BattleUseOnPokemon, then set the evo stones to be able to be used on a pokemon, like a potion.
Code:
ItemHandlers::BattleUseOnPokemon.addIf(proc{|item| pbIsEvolutionStone?(item)},
proc{|item,pokemon,battler,scene|
if (pokemon.isShadow? rescue false)
scene.pbDisplay(_INTL("It won't have any effect."))
next false
end
newspecies=pbCheckEvolution(pokemon,item)
if newspecies<=0
scene.pbDisplay(_INTL("It won't have any effect."))
next false
else
pbFadeOutInWithMusic(99999){
evo=PokemonEvolutionScene.new
evo.pbStartScreen(pokemon,newspecies)
evo.pbEvolution(false)
evo.pbEndScreen
if battler
scene.pbChangePokemon(battler,battler.pokemon)
battler.name=pokemon.name
end
}
next true
end
})
Toss this in PItem_ItemEffects, give your evo stones in battle useability, and bam, evo stones in battle.
Mind you I only tested this on v17.2.