proc
Finish()
for(var/mob/M in oview(1))
if(usr.x==M.x && usr.y==M.y)
else
if((src.dir==1 && M.y==(src.y+1) && usr.x==M.x) | (src.dir==2 && M.y==(src.y-1) && usr.x==M.x) | (src.dir==8 && M.x==(src.x-1) && usr.y==M.y) | (src.dir==4 && M.x==(src.x+1) && usr.y==M.y) | (src.dir==9 && M.x==(src.x-1) && M.y==(src.y+1)) | (src.dir==6 && M.x==(src.x+1) && M.y==(src.y-1)) | (src.dir==10 && M.x==(src.x-1) && M.y==(src.y-1)) | (src.dir==5 && M.x==(src.x+1) && M.y==(src.y+1)))
if(M.ko = 1)
view(6) << "<b>[src] deals [M] a finishing blow!"
world << "<b>[M] has been killed by [src]!"
M.Death()
else
src << "You can't finish somebody who is not knocked out!"
Problem description: battle.dm:44:error::missing expression
When I first look at it, I see your first if() and else are kinda pointless. Then there's the "if(M.ko = 1)" where you're missing an equal sign. Actually, that really long if() could most likely be shortened.