Just a few tips first, I hope you don't mind...
The /halt is not required in the on *:text:!Away:#Battle: trigger. The else part is skipped anyway, and a return is done automatically at the end of the code. It can change if you are going to add some code after that, and for those cases I'd use /return instead of /halt. /halt also sets $halted for other scripts (.mrc files) and can stop mIRC from displaying the text if it's an on ^*:TEXT
Try to use /var %turn = blah instead of /set %turn blah for those %variables that you only need during the trigger itself. This makes it more clear which variables are for storing information about nicks and which variables are only used to keep some info during the processing of the on TEXT event. For your case: use /set for %away [ $+ [ $nick ] ] and %rob [ $+ [ $nick ] ] but /var for %turn, %turner and such...
set %turner $rand(1,2)
if (%turner == 1) {
set %turn $nick
}
if (%turner == 2) {
set %turn $2
}
You can replace all this with (assuming you only use %turn in this on TEXT event)
if ($rand(0,1)) var %turn = $nick
else var %turn = $2
or even:
var %turn = $iif($rand(0,1),$nick,$2)