gameServer/HWProtoInRoomState.hs
changeset 10882 ed7717f659ae
parent 10881 941b5ab9e5a6
child 10884 7b76811fb689
equal deleted inserted replaced
10881:941b5ab9e5a6 10882:ed7717f659ae
   123                     minimum [hhnum $ head roomTeams, canAddNumber roomTeams]
   123                     minimum [hhnum $ head roomTeams, canAddNumber roomTeams]
   124                 else
   124                 else
   125                     defaultHedgehogsNumber rm
   125                     defaultHedgehogsNumber rm
   126         let newTeam = clNick `seq` TeamInfo clNick tName teamColor grave fort voicepack flag isRegistered dif hhNum (hhsList hhsInfo)
   126         let newTeam = clNick `seq` TeamInfo clNick tName teamColor grave fort voicepack flag isRegistered dif hhNum (hhsList hhsInfo)
   127         return $
   127         return $
   128             if not . null . drop (maxTeams rm - 1) $ roomTeams then
   128             if not . null . drop (teamsNumberLimit rm) $ roomTeams then
   129                 [Warning $ loc "too many teams"]
   129                 [Warning $ loc "too many teams"]
   130             else if canAddNumber roomTeams <= 0 then
   130             else if canAddNumber roomTeams <= 0 then
   131                 [Warning $ loc "too many hedgehogs"]
   131                 [Warning $ loc "too many hedgehogs"]
   132             else if isJust $ findTeam rm then
   132             else if isJust $ findTeam rm then
   133                 [Warning $ loc "There's already a team with same name in the list"]
   133                 [Warning $ loc "There's already a team with same name in the list"]
   387 handleCmd_inRoom ("RND":rs) = do
   387 handleCmd_inRoom ("RND":rs) = do
   388     n <- clientNick
   388     n <- clientNick
   389     s <- roomClientsChans
   389     s <- roomClientsChans
   390     return [AnswerClients s ["CHAT", n, B.unwords $ "/rnd" : rs], Random s rs]
   390     return [AnswerClients s ["CHAT", n, B.unwords $ "/rnd" : rs], Random s rs]
   391 
   391 
       
   392 
       
   393 handleCmd_inRoom ["MAXTEAMS", n] = roomAdminOnly $ do
       
   394     cl <- thisClient
       
   395     let m = readInt_ n
       
   396     if m < 2 || m > 8 then
       
   397         return [AnswerClients [sendChan cl] ["CHAT", "[server]", loc "/maxteams: specify number from 2 to 8"]]
       
   398     else
       
   399         return [ModifyRoom (\r -> r{teamsNumberLimit = m})]
       
   400 
   392 handleCmd_inRoom ["FIX"] = serverAdminOnly $
   401 handleCmd_inRoom ["FIX"] = serverAdminOnly $
   393     return [ModifyRoom (\r -> r{isSpecial = True})]
   402     return [ModifyRoom (\r -> r{isSpecial = True})]
   394 
   403 
   395 handleCmd_inRoom ["UNFIX"] = serverAdminOnly $
   404 handleCmd_inRoom ["UNFIX"] = serverAdminOnly $
   396     return [ModifyRoom (\r -> r{isSpecial = False})]
   405     return [ModifyRoom (\r -> r{isSpecial = False})]