ID:1972036
 
(See the best response by Kaiochao.)
/mob/living/carbon/proc/updateappearance(icon_update=1, mutcolor_update=0, mutations_overlay_update=0)
if(!has_dna())
return
gender = (deconstruct_block(getblock(dna.uni_identity, DNA_GENDER_BLOCK), 2)-1) ? FEMALE : MALE


/mob/proc/update_body()
if(istype(src,/mob/living/carbon))
src.updateappearance()



Problem description: I'm getting an undefined proc error. The one listed above is the proc, while the one below is the one with the error.

Best response
updateappearance() is defined under /mob/living/carbon, which means only /mob/living/carbon and its children (e.g. /mob/living/carbon/blahblah) have access to it. A proc under /mob will have its src defined as a /mob, which doesn't have access to updateappearance().

The solution here is to either cast src to a /mob/living/carbon, or to preferably override update_body() under /mob/living/carbon, like so:
// you have this already:
mob/proc/update_body()

// just add this:
mob/living/carbon
update_body() // note lack of "proc": this is an override of a pre-defined proc
..() // call other versions of update_body()
updateappearance()

This lets you avoid istype(), which is nice.
Because src is not typecast as /mob/living/carbon. You can either do something like
var/mob/living/carbon/C = src
if(istype(C))
C.updateappearance()

Or use src:updateappearance() instead.