ID:262670
 
Code:
mob
verb
Attack(mob/M as mob in oview(1))
set category = "Taijutsu"
if (usr.resting==1)
usr << "Not while resting"
else
icon = 'players.dmi'
icon_state = "Attac"
usr << "You attack [M]!"
oview() << "[usr] attacks [M]!"
sleep(5)
icon = 'players.dmi'
icon_state = "guy"
var/damage = rand(1,10) + usr.taijutsu
view(6) << "[damage] damage!"
M:hp -= damage
M:Deathcheck()

proc
Deathcheck()
if(istype(src,/mob/clone))
del(src)
for(var/mob/M in world)
if(M == src.ownedby)
M.clones -= 1
del(src)
else if (hp <= 0)
world << "[src] dies!"
if(usr.village=="Leaf")
src.loc = locate (41,46,1)
if(usr.village=="Rain")
src.loc = locate (41,46,9)
if(usr.village=="Sand")
src.loc = locate (41,46,5)
if(usr.village=="Waterfall")
src.loc= locate (41,46,4)
if(usr.village=="Grass")
src.loc = locate (41,46,3)
if(usr.village=="Rock")
src.loc = locate (41,46,6)
if(usr.village=="Cloud")
src.loc = locate (41,46,7)
if(usr.village=="Sound")
src.loc = locate (41,46,8)
if(usr.village=="Mist")
src.loc= locate (41,46,2)
src.hp=usr.maxhp
src.Chakra=usr.maxChakra
src.stamina=usr.stamina


---------------------------

turf
trainwater
icon='scenery.dmi'
icon_state="waterfall01"
Entered(mob/M)
if(!M.client||!ismob(M))return 0//only if 'M' is a mob and client (incase).. note that usr is not used here do to user abuse potentials... I think >.>
M.inwaterfall=1
M.waterfall()
Exited(mob/M)
if(M.inwaterfall) M.inwaterfall=0

mob/proc/waterfall()
set background = 1
while(src.inwaterfall)//while this var is true
src.hp-=2
src.Deathcheck()
src.maxhp+=2
src<<"You gain some Max Hp and lose some HP."
sleep(20)

mob/var/inwaterfall = 0

---------------------------

obj/Naruto_Hair
name = "Naruto Hair"
icon = 'NHair.dmi'
icon_state = "guy"
worn = 0
verb
Wear()
if(src.worn == 1)
src.worn = 0
usr.overlays -= 'NHair.dmi'
usr << "You remove the [src.name]."
else
src.worn = 1
usr.overlays += 'hair(1).dmi'
usr << "You wear the [src.name]."
Drop()
if(src.worn == 1)
usr << "Not while its being worn."
if(src.worn == 0)
src.loc=locate(usr.x,usr.y+1,usr.z)
Get()
set src in oview(1)
Move(usr)
mob
melp
Barber
icon = 'NPC.dmi'
icon_state = "clothes dealer"
npc = 1
hp = 99999999999999999999999999999999999999999999999999999999999999999999999
verb
Hair()
set src in oview(2)
set category = "Commands"
switch(input("Hey! What hair do you want?", "Barber") in list ("Naruto","Sasuke","Shikamaru","Long","Shaved","Rock Lee","Spikey"))
if("Naruto")
usr << "<b>You get Naruto Hair!"
usr.contents += new/obj/Naruto_Hair(usr)


Problem description:For the first one when you get killed for some odd reason you dont get sent to those locations if your that village. For the second one your able to Rest while on the waterfall which makes you never die while training. And The third one doesnt even show up when you Equip the item. I know this is alot to ask for help about but do you think you could give me a hand?

Well I can't help you with everything, but I did spot this, in your Death process.
if(usr.village=="Leaf")

Usr is no good in processes, that could be your problem. Every single village check is usr.

I also saw alot of checks like this:
if(usr.variable==1)//this check can be done differently

if(usr.variable)//this is the same check, and works for vars that only switch from 0 and 1.
if(!usr.variable)//this is the equivalent to if(usr.variable==0)

Hope that helps you out some.
-Edit-
And as far as Resting in the waterfall, you should have a check in your Rest verb, or process, however you do it, that checks to see if the mob is in the waterfall. I notice you already have a mob variable for being in the waterfall, so that should be simple.
-Edit2-
About your hair not showing up, I'm not sure if an icon can be added directly as an overlay like that. I've always done it something like this:
verb
Wear()
if(src.worn == 1)
src.worn = 0
var/obj/X=new/obj/Certain_Object
usr.overlays -= X
usr << "You remove the [src.name]."
else
src.worn = 1
var/obj/X=new/obj/Certain_Object
usr.overlays += X
usr << "You wear the [src.name]."

Of course there might be (and probably is) a better way to do it, but it's worked for me so far.
From what I can see, if your checking the src's variable "village" you shouldn't set "usr"'s variable of loc to that, you should set "src"'s. As for the waterfall, I think it might be because your code does not truely remove them. My guess is its a bug with your DeathCheck() proc. Perhaps try warping via Move() instead of setting their "loc" variable via locate. Personally, I'd use a proc that was made not in mob or anything like that that would say something like: DeathCheck(M). Heres a sample of one, to do this, define the proc without it being within a mob/turf/world/obj root.
    proc
DeathCheck(mob/PC)
if(istype(PC,/mob/clone))
del(PC)
for(var/mob/M in world)
if(M == PC.ownedby)
M.clones -= 1
del(PC)
else if (PC.hp <= 0)
world << "[PC] dies!"
if(PC.village=="Leaf")
PC.loc = locate (41,46,1)
if(PC.village=="Rain")
PC.loc = locate (41,46,9)
if(PC.village=="Sand")
PC.loc = locate (41,46,5)
if(PC.village=="Waterfall")
PC.loc= locate (41,46,4)
if(usr.village=="Grass")
src.loc = locate (41,46,3)
if(PC.village=="Rock")
PC.loc = locate (41,46,6)
if(PC.village=="Cloud")
PC.loc = locate (41,46,7)
if(PC.village=="Sound")
PC.loc = locate (41,46,8)
if(PC.village=="Mist")
PC.loc= locate (41,46,2)
PC.hp=PC.maxhp
PC.Chakra=PC.maxChakra
PC.stamina=PC.stamina