Triggers = {} TIMER_RESTART_AMT = 150 timer = 0 it = nil function Triggers.init() it = Players[0] for p in Players() do record_movement(p) end end function Triggers.idle() if timer > 0 and not it.disconnected then timer = timer - 1 record_movement(it) else timer = TIMER_RESTART_AMT start_next_turn() end for p in Players() do if p ~= it then stop_movement(p) end set_overlay(p) end end function record_movement(player) player._x = player.monster.x player._y = player.monster.y player._z = player.monster.z player._poly = player.monster.polygon player._ev_x = player.external_velocity.x player._ev_y = player.external_velocity.y player._ev_z = player.external_velocity.z for proj in Projectiles() do if(proj.owner == player.monster) then proj._x = proj.x proj._y = proj.y proj._z = proj.z proj._poly = proj.polygon end end end function stop_movement(player) if not player.dead then player:position(player._x, player._y, player._z, player._poly) player.external_velocity.x = player._ev_x player.external_velocity.y = player._ev_y player.external_velocity.z = player._ev_z end player.weapons.active = false for proj in Projectiles() do if(proj.owner == player.monster) then if(proj._x == nil or proj._y == nil or proj._z == nil or proj._poly == nil) then proj._x = proj.x proj._y = proj.y proj._z = proj.z proj._poly = proj.polygon end proj:position(proj._x, proj._y, proj._z, proj._poly) end end end function start_next_turn() pick_next_plr() it.weapons.active = true if it.dead then it.action_flags.action_trigger = true -- Revive automatically end for p in Players() do p:view_player(it) end it:play_sound("alarm", 1.1) it:print("Your turn!") end function pick_next_plr() repeat if it.index == #Players-1 then it = Players[0] else it = Players[it.index+1] end until not it.disconnected end function Triggers.player_revived(player) record_movement(player) end function set_overlay(player) if player == it then if timer > 60 then player.overlays[0].color = "green" elseif timer > 30 then player.overlays[0].color = "yellow" else player.overlays[0].color = "red" end local size = math.floor(timer / 7) local text = string.rep("=", size) player.overlays[0].text = text else player.overlays[0].color = "green" player.overlays[0].text = "Waiting for next turn." end end