ID:145191
 
Code:
mob
Move()
if(usr.isfishing==1)
usr << "You stop fishing"
usr.isfishing = 0
else
..()

obj
icon = 'Skill.dmi'
Fishing_Pole
name = "Fishing Pole"
icon_state = "f pole"
verb
Use()
set category = null
if(istype(get_step(src,usr.dir), /turf/water))
if(usr.isfishing == 0)
usr << "You start fishing.."
usr.isfishing = 1
while(usr.isfishing==1)
sleep(rand(50,150))
usr << "You caught a harring!"
usr.FExp += 10
usr.contents += new /obj/Fish/Raw_Harring
usr.FishCheck()
else
..()
else
..()


Problem description:
The problem is, it loops fine, but it freezes you in place. The mob/Move() doesn't work.
You'll probably want to be using src in the Move() proc, rather than usr.
Another thing you might want to do is get rid of the ==1

In DM and BYOND, there are three false things. Remember this, it's important.

0 is false. No other number is. 0 is false; 1 is true, 100 is true -1.5 is true.

"" is false. That's an empty string. Two quotes with absolutely nothing inside. " " is true. "test" is true. "" is false.

null is false. null is a special value that appears when something has no definition, etc. If you just put "return" in a proc, you're returning the value "null". Null isn't nothing, it's an actual value signifying nothing. Thus, it is false.

EVERYTHING other than those 3 things (0, "", null) is true. Thus, you don't need ==1 to tell whether something is true. Just use if(fishing)
In response to PirateHead
i know i know, and u can do if(!isfishing). Itss just thati find it easier for me to understand when its all out, just like doing if(!isfishing) {usr << "You start fishing..";usr.isfishing==1}. I just prefer the other way.
In response to Evidence
Try adding some debugging lines to Move(). Do you know the flow of where your procedures are going? I always include lots of debugging lines when some confusing problem comes up -- often, my problem stems from a misunderstanding of how my code is structured.