diff --git a/parts/eventsets/checkTurn_1.lua b/parts/eventsets/checkTurn_1.lua index bdd209db..b571f5fb 100644 --- a/parts/eventsets/checkTurn_1.lua +++ b/parts/eventsets/checkTurn_1.lua @@ -2,12 +2,17 @@ return{ dropPiece=function(P) if #PLY_ALIVE>1 then P.control=false - local ID=P.id - repeat - ID=ID+1 - if not PLAYERS[ID]then ID=1 end - until PLAYERS[ID].alive or ID==P.id - PLAYERS[ID].control=true + local id1=P.sid + local minMaxID,minID=1e99,1e99 + for i=1,#PLY_ALIVE do + local id2=PLY_ALIVE[i].sid + if id2>id1 then + minMaxID=math.min(minMaxID,id2) + else + minID=math.min(minID,id2) + end + end + PLY_ALIVE[minMaxID==1e99 and minID or minMaxID].control=true end end } diff --git a/parts/eventsets/checkTurn_7.lua b/parts/eventsets/checkTurn_7.lua index 08156272..0ce5d424 100644 --- a/parts/eventsets/checkTurn_7.lua +++ b/parts/eventsets/checkTurn_7.lua @@ -2,12 +2,17 @@ return{ dropPiece=function(P) if P.stat.piece%7==0 and #PLY_ALIVE>1 then P.control=false - local ID=P.id - repeat - ID=ID+1 - if not PLAYERS[ID]then ID=1 end - until PLAYERS[ID].alive or ID==P.id - PLAYERS[ID].control=true + local id1=P.sid + local minMaxID,minID=1e99,1e99 + for i=1,#PLY_ALIVE do + local id2=PLY_ALIVE[i].sid + if id2>id1 then + minMaxID=math.min(minMaxID,id2) + else + minID=math.min(minID,id2) + end + end + PLY_ALIVE[minMaxID==1e99 and minID or minMaxID].control=true end end } diff --git a/parts/player/init.lua b/parts/player/init.lua index 41a7952b..992cbc1f 100644 --- a/parts/player/init.lua +++ b/parts/player/init.lua @@ -175,7 +175,7 @@ local function _newEmptyPlayer(id,mini) --User-related P.username="" P.uid=false - P.sid=false + P.sid=id --Block states --[[