ID:141008
 
Code:
proc
Battle(mob/A,mob/B)
begin//<- takes it here.
A:Death(A)
B:Death(B)
if(A.tourndied >= 1) ///
world<<"[B] has won against [A]!"
Candidates.Remove(A)
A.tourndied=0
B.loc=locate(1,18,8) /// relocate the winner.
Chuunin_AI()
return // stop runtime errors
if(B.tourndied >= 1) ///
world<<"[A] has won against [B]!"
Candidates.Remove(B)
B.tourndied=0
A.loc=locate(1,18,8) /// relocate the winner.
Chuunin_AI()
return // stop runtime errors
else
sleep(10)
goto begin//<-goto


Problem description:

I dont get any errors but in another topic every1 said that goto is bad. Why?
I suppose that you are talking about [link] which is the latest of the hundreds of threads that raise this topic.
Goto is usually prone to create something known as spaghetti-code, or in other words code that is difficult to read.
Now you might say that you can read the code just fine, but then people would be bound to reply that you often miss some important facts that you (might/should) have noted using a more suited looping construct like while, for, or do while.
Not to mention that you are causing the people that try to help you when you get stuck with source code more trouble than would be needed, as they will certainly encounter the issue of bad readability.

As a side-note, on the first few lines of your code I saw lax dereference operator (:), which is another tricky topic, since it removes errors from compile time but often causes them at runtime, which is rather bad, since you should fix everything before actually running the game (for the obvious reason to spare your players with these bugs).