You don't necessarily have to regard this, it's just what I have so far:
mob
var
turn
time_left
ai
playing
canattack=1
battle_handler
var
timeleft
mob
player_one
player_two
New(mob/a,mob/b) //handling two players for now.
if(!a||!b)
return //obviously if neither player is there, we do nothing.
if(rand(1,2)==1)
player_one=a
player_two=b
else
player_one=b
player_two=a
player_one<<"<b><font color=blue>It's your turn!</font></b>"
player_one.turn=1
player_one.playing=1
player_two.playing=1
spawn timer(player_one,player_two) //You're limited on time!
proc
timer(mob/player_one,mob/player_two)
player_one.ai()
timeleft=30
for()
if(!player_one)
return
if(!player_two)
return
if(!player_one.turn||!timeleft)
turn_switch(player_one,player_two)
break
if(!player_one.playing||!player_two.playing)
world<<"one of the players isn't playing."
return //the battle's over.
sleep(10)
timeleft-=1
time_track(player_one,player_two) //Keep track of time, updating their status.
time_track(mob/a,mob/b)
a<<"[timeleft]"
//update players status bars to tell them time left...
turn_switch(mob/player_one,mob/player_two)
player_one<<"<b><font color=red>Switching to [player_two]'s turn.</font></b>"
player_two<<"<b><font color=blue>It's your turn!</font></b>"
player_one.turn=0
player_two.moves=player_two.max_moves
player_two.turn=1
timer(player_two,player_one)