public void execute(GameSession gameSession, byte[] bytes) { var read = new LegacyModuleRequest(); read.readCommand(bytes); var player = gameSession.Player; string[] packet = read.message.Split('|'); switch (packet[0]) { case ServerCommands.TECHS: player.TechManager.AssembleTechCategoryRequest(packet[1]); break; case ClientCommands.PORTAL_JUMP: JumpRequest(gameSession); break; case ClientCommands.LASER_STOP: player.DisableAttack(player.SettingsManager.SelectedLaser); break; case ServerCommands.ROCKET_ATTACK: player.AttackManager.RocketAttack(); break; case ServerCommands.SET_STATUS: switch (packet[1]) { case ClientCommands.INSTAREPAIR: InstaRepair(gameSession); break; case ClientCommands.CONFIGURATION: player.ChangeConfiguration(packet[2]); break; case ServerCommands.EMP: player.AttackManager.EMP(); break; case ServerCommands.INSTASHIELD: player.AttackManager.ISH(); break; case ServerCommands.SMARTBOMB: player.AttackManager.SMB(); break; case ClientCommands.SELECT_CLOAK: player.CpuManager.Cloak(); break; case ClientCommands.AROL: player.CpuManager.ArolX(); break; case ClientCommands.RLLB: player.CpuManager.RllbX(); break; case ClientCommands.MINE: AssembleMineRequest(packet[2], gameSession); break; } break; case ServerCommands.GROUPSYSTEM: switch (packet[1]) { case ServerCommands.GROUPSYSTEM_GROUP_INVITE: switch (packet[2]) { case ServerCommands.GROUPSYSTEM_GROUP_INVITE_SUB_BY_NAME: GroupSystem.AssembleInvite(gameSession.Player, GroupSystem.GetPlayerByName(Out.DecodeFrom64(packet[3]))); break; case ServerCommands.GROUPSYSTEM_GROUP_INVITE_SUB_REVOKE: GroupSystem.Revoke(gameSession.Player, GameManager.GetGameSession(Convert.ToInt32(packet[3]))?.Player); break; case ServerCommands.GROUPSYSTEM_GROUP_INVITE_SUB_ACKNOWLEDGE: GroupSystem.AssembleAcceptedInvitation(gameSession.Player, GameManager.GetGameSession(Convert.ToInt32(packet[3]))?.Player); break; case ServerCommands.GROUPSYSTEM_GROUP_INVITE_SUB_REJECT: GroupSystem.Reject(gameSession.Player, GameManager.GetGameSession(Convert.ToInt32(packet[3]))?.Player); break; } break; case ServerCommands.GROUPSYSTEM_GROUP_EVENT_MEMBER_LEAVES_SUB_KICK: gameSession.Player.Group?.Kick(GameManager.GetGameSession(Convert.ToInt32(packet[2]))?.Player); break; case ServerCommands.GROUPSYSTEM_GROUP_EVENT_MEMBER_LEAVES_SUB_LEAVE: gameSession.Player.Group?.Leave(gameSession.Player); break; case ServerCommands.GROUPSYSTEM_BLOCK_INVITATIONS: GroupSystem.BlockInvitations(gameSession.Player); break; case ClientCommands.GROUPSYSTEM_PING: switch (packet[2]) { case ClientCommands.GROUPSYSTEM_PING_POSITION: if (packet.Length < 4) { GroupSystem.Ping(gameSession.Player, gameSession.Player.Spacemap.Characters[int.Parse(packet[3])]?.Position); break; } GroupSystem.Ping(gameSession.Player, new Position(int.Parse(packet[3]), int.Parse(packet[4]))); break; case ClientCommands.GROUPSYSTEM_PING_USER: GroupSystem.Ping(gameSession.Player, GameManager.GetGameSession(Convert.ToInt32(packet[3]))?.Player); break; } break; case ClientCommands.GROUPSYSTEM_FOLLOW: gameSession.Player.Group?.Follow(gameSession.Player, GameManager.GetGameSession(Convert.ToInt32(packet[2]))?.Player); break; case ClientCommands.GROUPSYSTEM_PROMOTE: gameSession.Player.Group?.ChangeLeader(GameManager.GetGameSession(Convert.ToInt32(packet[2]))); break; case ClientCommands.GROUPSYSTEM_SET_REMOTE: switch (packet[2]) { case ClientCommands.GROUPSYSTEM_CHANGE_INVITATON_BEHAVIOUR: gameSession.Player.Group?.ChangeBehavior(gameSession, Convert.ToInt32(packet[3])); break; } break; } break; } }