mob/proc
battle()
Exp()
Levelup()
usr.LvMoves()
Evolve()
mob/
proc
LvMoves()
if(usr.icon=='Charmander.dmi'||usr.icon=='Cyndaquil.dmi'||usr.icon=='Torchic.dmi'||usr.icon=='Chimchar.dmi')
if(usr.Level==7)
usr.verbs+=new/mob/Pokemon/Attack/verb/Ember()
usr<<"You learned Ember."
if(usr.icon=='Bulbasaur.dmi'||usr.icon=='Chikorita.dmi'||usr.icon=='turtwig.dmi')
if(usr.Level==6)
usr.verbs+=new/mob/Pokemon/Attack/verb/Razor_Leaf()
usr<<"You learned Razor Leaf."
if(usr.icon=='Bulbasaur.dmi'||usr.icon=='Chikorita.dmi'||usr.icon=='turtwig.dmi')
if(usr.Level==7)
usr.verbs+=new/mob/Pokemon/Attack/verb/Water_Gun()
usr<<"You learned Water Gun."
Problem description: Pokemon's level just passes up, and the pokemon doesn't learn the move.
A huge problem I see is the use of usr; you should use usr when the procedure is directly called (ex: Click, /verb's), this this case, you want to use src.
I recommend that you have each pokemon defined as a type path, that way you can have procedures redefined for each specific path... or use switch():