ID:1564134
 
(See the best response by Kaiochao.)
Code:
challenge()
beaten=0
for(var/mob/m in world)
world << "You are [src] and they are [m]"
if(!m==src)
if(m.points>=points&&!m.beaten&&!m.placed&&m.charpicked)
world << "You have been beaten"
beaten=1
m.challenge()
break


Problem description:

Everything works, except for if(!m==src). That check is there to make sure you don't get put up against yourself. The output message before that displays the 2 different names of the mobs, yet the check still fails. What am I doing wrong?
Are you sure it's if(!m==src) that is failing?
Best response
You should be using m != src or !(m == src), not !m == src.

"!m == src" is "null == src".
Thanks for the help, I didn't know that's how it worked.
wow, can't believe I didn't catch that. Need to stop lurking late at night xD
DM does very little optimization of the expressions.

!(m==src)
m!=src

They may look similar, but when they compile, you come out with two different results:

!(m==src)

push m
push src
op_equal
op_lnot


m!=src

push m
push src
op_nequal

Protip: don't use more operations than you have to. If there is an operator "diphthong" shorthand for the two operators you are using, use the shorthand.