mob/proc/Levelup()
if(src.exp >= src.maxexp)
if(istype(src,/mob/person))
var/leftover = src.exp-src.maxexp
var/atkup = rand(1,6)
src.attack += atkup
var/defup = rand(1,6)
src.defense += defup
var/hpup = rand(10,25)
src.maxhealth += hpup
src.health = src.maxhealth
src.exp = 0
src.maxexp += rand(level+5,level+25)
src.level += 1
src.exp += leftover
Levelup()
src << {"You have been promoted to Level [level]!
Attack + [atkup]
Defense + [defup]
Max Health + [hpup]"}
else
..()
Long story short, enough EXP, no Level Up.
Conclusion? istype(src,/mob/person) returns false.
Thus, the player isn't a /mob/person.