ID:141077
 
Code:
obj
Woofdog
icon = 'dog.dmi'
density = 1
verb
Drop()
set name = "Drop dog"
set category = "Dog"
if(usr.DogHurt)
usr << "You cannot drop your dog because its health status isn't good."
return
usr << "You have dropped your dog."
var/mob/Woofdog/X = new()
X.loc = locate(usr.x, usr.y-1, usr.z)
X.name = usr.dogname
X.tai = round(usr.Mtai / 2)
X.maxhealth = round(usr.maxhealth / 2)
X.health = X.maxhealth
X.havingowner = 1
X.owner = usr
del(src)
mob
Woofdog
icon = 'dog.dmi'
Move_Delay = 1
density = 1
rank = "Dog NiN"
health = 25000
isdog = 1
New()
..()
woof()
proc/woof()
while(src)
if(!src.havingowner)
if(!src.move && src.Frozen) return
for(var/mob/A in oview(4, src))
if(A.client)
if(get_dist(src, A) <= 3)
step_towards(src, A)
else
step_away(src, A, 5)
sleep(5)
verb
Catch()
set src in oview(1)
src.move = 0
src.Frozen = 1
usr << "You caught the dog."
sleep(100)
if(!src.havingowner)
usr << "The dog escapes."
else
usr << "The dog is yours now."
Tame()
set src in oview(1)
if(!usr.Inuzuka)
usr << "You have to be in the Inuzuka clan to have the ability to tame a dog."
return
if(usr.hasdog)
usr << "You already have a dog and you can't take more than one."
return
if(src.Frozen && !src.move)
if(!src.havingowner)
usr.dogname()
usr.dogname = "[html_encode(usr.dogname)]"
usr.hasdog = 1
var/obj/Woofdog/W = new()
W.loc = usr
W.name = "Dog: [usr.dogname]"
usr.SaveGame()
del(src)
Bump(mob/M)
if(M && M == owner || M.name == src.name || !src.Agressive || src.fighting || src.Hurt || M.NPC) return
var/mob/O = src.owner
if(!O.PK)return
if(!src.InGatsuuga)
var/Damage = round(src.tai)
F_damage(M, Damage, "#ff0000")
view() << "[src] attacks [M] for [Damage] damage!"
M.health-=Damage
M.Death(src)
src.fighting = 1
sleep(5)
src.fighting = 0
else
if(usr.pooping) return
var/Damage2 = round(usr.tai*4)
M.health-=Damage2
view()<<"[usr] pierces [M] with Gatsuuga for [Damage2] damage."
usr.pooping=1
spawn(5) usr.pooping=0
F_damage(M, Damage2, "#ff0000")
M.Death(usr)

mob/proc/dogname()
dogname = input("Give your dog a name.") as text
if(length(dogname) < 3)
alert("Sorry. Your dog's name isn't allowed to have fewer than 3 letters!")
dogname()
return
if(length(dogname) > 20)
alert("Sorry. Your dog's name isn't allowed to have more than 20 letters!")
dogname()
return


Problem description:
Whatever I try, I cannot seem to drop the damn dog. It may be because I have been away from BYOND for some time, but I really have no idea how to solve this sucker.
Hope you guys can help me.
It never gets past creating the mob because New() never finishes, it just loops infinitely. You need to spawn() off all that junk. And stop using locate(x,y,z). Use get_step() instead.
In response to Garthor
Thanks for the heads up.
It worked.