With the group draw for worlds behind us now is the time to make some predictions as to who will make it out. Before we do this I just want to take a second to congratulate Riot on the whole group selection process. It took long enough but finally this season we got a proper group selection ceremony. Much better and more transparent than the hush-hush group selection affairs of previous years (though conspiracy theories about how the process was all rigged will probably still abound on the Internet – once again demonstrating the devastating power of millions of idiots sitting at keyboards). Now while I did think the ceremony was well produced it could have used a bit more… I don’t know, pizzaz perhaps? Given that they allotted a whole hour to the event they could have thrown in a bit of theatrical flair, perhaps with some more of the pro players present and/or some cosplay and confetti cannons or something. As for the seeding format, I think it was about as well designed as possible while still leaving it open to some random chance.

Now let’s take a look at each of the groups and who I think will prevail as first and second seed. I will go through the groups not from A-D but rather in order of least interesting to most interesting. So let’s look at the most boring group first: Group C. This group contains SKT-T1, H2K, EDG, and Bangkok Titans. Calling this group is rather easy, with SKT-T1 and EDG advancing easily (unless some sort of major disaster strikes either of these teams, like food poisoning or, you know, a meteor hitting their group practice house). Not only are these two teams some of the strongest at the tournament and favourites to win the whole shebang, but the other two teams are some of the weakest. Bangkok Titans are likely the single weakest team at the tournament and while H2K was the second seed from EU, they are really the third best team from the region (Origen is easily better, they simply couldn’t get the second seed because they had no points from the spring split since they didn’t play in the LCS until summer); and then the EU LCS isn’t one of the top regions to begin with. Overall the gulf between the top two teams in this group and the other two is simply monumental. This leaves just the storyline of a Faker-Ryu rematch when SKT-T1 meet H2K (unless SKT-T1 decide to play Easyhoon in those matches, though that would just be pure evil), which might lend to some entertainment but will likely end up rather one-sided (in the mid-lane as well as everywhere else), and the question of who will qualify in the first spot. It really depends on how you value the LPL versus the LCK. I know a lot of people will assume that SKT-T1 is the stronger team, since they dominated their region while EDG ended up coming in second in the LPL. As someone who thinks that the LPL is actually the far stronger region this season though my personal pick is for EDG to take the top spot.
First: EDG Second: SKT-T1

The next group to look at is what is already being called the group of death: Group D. This group has LGD, KT Rolster, TSM and Origen Gaming. As a TSM anti-fan this group makes me giddy with joy as it looks unlikely that they will win even a single game (meanwhile TSM fans should be able to take solace in the fact that this is likely to mean a big shakeup in the TSM camp following worlds, which should leave the team in a much stronger state for the coming season). This group isn’t as clear cut as group C however. While LGD is also a top contender to win the whole tournament and should make it out of the group easily KT is a bit of an unknown. They got smashed 3-0 by SKT in the LCK finals and so are a clear cut below them. Where that leaves them in relation to other international teams depends a lot on the relative strength of the Korean region this season, something that is still a little unclear (in the past they were the strongest region but the restructuring and the exodus of top players to China at the beginning of the season have left the region in a weakened state). At the same time TSM and Origen are no push over teams (Origen in particular are likely the strongest of the pool 3 teams) and both certainly have it within them to upset KT and take the second seed (yes, even TSM though it is certainly far from likely). I’m confident that LGD will take the first seed, probably only dropping games if they don’t take things too seriously for some reason, but second seed is somewhat open. That said KT are still favourites to make it out over TSM and Origen.
First: LGD Second: KT Rolster

Next we shall cast our eyes to the miracle group of life that CLG lucked into: Group A. This group is made up of CLG, Flash Wolves, Koo Tigers, and Pain Gaming. This group is honestly hard to call. CLG should be able to make it out but with Xmithie caught up in visa problems and replaced with Huhi there is a big question mark to their strength. Historically (i.e. prior to the start of the LCS) CLG were famous for over-performing at tournaments where they played with a sub so maybe this is a good sign for them but it will be hard to tell until we see them play. Koo Tigers have had consistency issues and looked rather poor at their last international outing. Meanwhile little is known about the relative strength of both Taiwan and Brazil compared to the rest of the world making it tough to rate the Flash Wolves and Pain Gaming. Really any combination of teams is possible to advance out of the group, though most people are calling the Tigers the favourites with either CLG or the Flash Wolves taking second place. I’m going to be a completely unbiased raving CLG fanboy and actually call it for CLG to take the number one spot in the group. I think the Tigers will edge out the number two spot, simply because I have so little data on the actual strength of the Taiwan and Brazil regions, but it wouldn’t surprise me much to see either the Wolves or Pain take the number two spot instead.
First: CLG Second: Koo Tigers

The last group is the one that is impossible to call reliably: Group B. The group is constructed thusly: Fnatic, IG, Ahq, and C9. In this group I think anything is possible. Many people are counting C9 out of the group and while they are likely the weakest team in the group there is always the possibility that they pull things together and make it out. Assuming that C9 don’t magically level up and show a much higher level of play than what they showed during the summer split in the NA LCS they will probably end up at the bottom of the group. This leaves Fnatic, IG and Ahq. The word on the street is that the current meta heavily favours IGs playstyle, this combined with the fact they hail from the (in my opinion) strongest region, the LPL, make them my favourites to top the group. That leaves the second seed between Fnatic and Ahq. This really depends on just how good Taiwan is compared to EU. Both teams dominated their regions but both regions are somewhat weak (compared to China and Korea at least). In reality this is likely a toss-up but I’ll side with Fnatic here, simply because I have more knowledge about this team. Some people have been rating Taiwan very highly and Ahq in particular so it is very possible that I’m completely wrong on this one. I would simply say that it is 50-50 but where is the fun in that?
First: IG Second: Fnatic

So there are my predictions for the group stages at worlds this year. As for the overall winner, I would say with 95% certainty that it will be one of LGD, EDG and SKT. If pressed to choose a single winner I would pick LGD (Imp is simply an amazing player) but either of the other two teams have a very similar chance to win it all. If any other team (other than LGD/EDG/SKT) ends up winning it I would consider that a huge upset. Now all I can do is wait for worlds to start to see if my predictions are accurate or if they turn out to be completely rubbish.


It seemed so unlikely to happen: C9 making their 3rd consecutive worlds appearance. Now, somehow, in an eSports fairytale moment they did it. Running a gauntlet of the best remaining NA teams, falling behind 0-2 not once, but twice, and both times persevering to make the reverse sweep happen. First the epic CLG win, now this. Does Riot script this stuff? If they do, kudos to the writers, they have outdone themselves here. In all seriousness though, this is truly a great storyline going into worlds to come out of NA. And a good thing it is too, because it’s not like they are going to do much once they get there. I mean I would love to see NA do well at worlds, I really would, but unless CLG somehow draw a magical super soft group, like sponge-cake soft, I don’t see it happening. TSM as second seed pretty much won’t have any chance, simply because of how stacked the other regions are, and as nice as it is for C9 to qualify as third seed they are going to end up in a group of death.

On a positive note let’s talk about C9 a bit. Now they certainly don’t look like the same old dominant force that they were in previous seasons but there are some very positive things that have come out of their gauntlet run. First off, they are tenacious: coming back twice for the reverse sweep after being down shows great mental fortitude. The downside of course is that they were down 0-2 twice! That shows that there are still some major holes. A big positive sign was that Incarnation played very well. Not only that but he played aggressive, a welcome change after playing scared for a long time after joining the team. The more he grows in his role, the better for C9 in the future. As for the rest of the team they mostly performed as expected. Sneaky is still a god (those Vayne mechanics!), LemonNation did his job, Balls is still looking like a weak link (though his performance was mostly passable). Is that everyone? No, wait I think there’s one more person on C9 to talk about. Oh yeah, Hai. Is he a wizard or what? Sure, his in-game personal performance was so-so (those Amumu games were pretty bad), but his shotcalling and ability to make the team work together are simply astounding. With Hai on the team the C9 teamfighting once again looks top calibre (for NA) and the team once again has the ability to make crazy and decisive movements across the map in ways that we simply did not see happening with Hai-less C9 earlier in the season. I don’t think many, maybe any, players in the West understand how to play League of Legends on a strategic level as well as Hai. When he does decide to retire I suspect he’ll make a fantastic coach. If he does take the reigns as coach, either of a re-made C9 (perhaps only keeping Sneaky and Incarnation) or of one of the other top teams, I think that there is a good chance that they would dominate NA as hard as C9 did when they first burst onto the scene. A exciting prospect to look forwards to for next season.


Just a short post on this, but CLG finally managed to actually win something for the first time in forever. An emotional day for all CLG fans for sure (HotshotGG shedding a tear in the post-match interview sure tugged at my heartstrings). Well played from the whole team, now I just hope it lasts and they don’t immediately crumble again.

On the other side of the Atlantic we also saw some great games between OG and Fnatic. 5 games, an eventual Fnatic victory and a pentakill for Rekkles; I don’t think it could have been better if it was scripted by Riot. Some fantastic games all around. Hopefully worlds will also deliver some great games, and hopefully the LCS teams will put up a good fight (ZionSpartan claiming they had a good chance to win worlds was a bit of a joke, no LCS team will win) but maybe, just maybe the stars will align and we’ll at least see on or two western teams in the semifinals. That would be nice. Though with so many strong Chinese and Korean teams in the mix this time it doesn’t look too promising.


Today was a tragic day for hope and freedom and all things good. Today the plucky team of rebels from Team Liquid were defeated in brutal fashion by the evil empire of TSM, lead to battle by their commander Darth Bjergerking. Hopes and dreams were smashed as the TSM juggernaut came crashing down, wiping out Team Liquid 3 games to 1. Ok, so this might not be a totally objective view of today’s events but nobody has ever accused me of being objective.

Perhaps the most heartbreaking thing about the games (for a massive TSM anti-fan like me) was the fact that TL actually got a large lead early in several games, only to lose a few crucial teamfights and proceed to get crushed in the late game. The first game in particular was simply painful to watch as it drew towards its inevitable conclusion. It is hard to fault individual players on TL for the loss either. Quas had a few missteps but was mostly solid. Piglet and Xpecial performed well. IWDominate has always been a volatile player and missing the smite on Baron to let WildTurtle steal it with the Jinx rocket was, well it wasn’t very good, but hardly his fault alone (the rocket should have been blocked by another player). Fenix didn’t look great when he wasn’t playing on Azir (in the one game that they did win) but he didn’t do much wrong either. It was just down to simply better teamfighting by TSM, something they’ve been famous for in the NA scene for pretty much forever.

Unfortunately I expect the NA LCS grand finals to go much the same way as these games. CLG will likely take early leads and then get crushed in teamfights in the mid and late game, perhaps even to a greater degree than TL did. CLG might pick up one game if they can snowball hard but that might be it. I wonder if CLG will be more willing to pick away the Jinx from WildTurtle, since it looks like that might be his one good ADC pick this time around. Hopefully we’ll get to see some good games regardless of who wins.


Countered Logic

In what can only be described as “a complete and utter reversal of historical trends and expectations”, CLG has finally managed to not look like garbage in the post season. This comes from a huge CLG fan who’s been rooting for them for over 3 years at this point, only to be disappointed by them in predictable fashion time and again. It would seem that this proves that CLG has finally managed to replace its weak Link (seriously though, even Mr. Inconsistent himself, the notorious P.O.B., Pobelter, has looked far more solid in playoffs so far than Link ever did).

The big question mark for me coming into this was whether Xmithie would perform, and to my surprise he actually did. I mean, it’s not like he carried the team or anything but he didn’t play Evelynn and feed 10 kills to the enemy team, so I’d say that’s a big win. While he clearly still has some champion pool issues (he played Ekko in all three games), his performance was good enough to not drag his team down. Given the fact that all three lanes are capable of being threats on their own, frankly this is really all that he needs to do.

Speaking of threats, ZionSpartan played phenomenally from the top lane. It helps that the current meta favours his more carry-oriented playstyle but still going toe-to-toe with a worldclass Korean toplaner like Impact shows massive skill. People sometimes overrate ZionSpartan a bit, simply because he plays a less supportive and more carry style, but there is no doubt that he stepped up big this series.

In the botlane Doublelift once again performed well. That was to be expected though, especially because this is the best chance LiftLift has had in a long time to finally lift a trophy. Of course that means beating the winner of TL vs TSM, something that I would still categorize as “highly unlikely, with a side of very improbable”. He still went a little very hyphee on Tristana a few times, but it mostly worked out in this instance, so I’ll chalk it up as being “totally calculated”.

Somewhat disappointing this series was LiftLift’s botlane co-star: Aphromoo. Not that he played poorly or anything, I think it is more that I’m so used to seeing him carrying CLG past the finish line kicking and screaming, that anything less is a bit of a disappointment. That might just be down to the rest of the team stepping up though, reducing the need for him to make mad playz and hard carry. Overall Rush Hour performed about as well as would be expected from CLG, one of the teams absolutely famous for their botlane-centric play. This makes it even more puzzling that TiP would opt to play heavily botlane focused compositions in all three games, but hey, I ain’t complaining. I’m just happy to see my favourite team in the LCS finals for a change.

Now if only Team Liquid can defeat the evil empire of TSM tomorrow I will be very pleased. Either way the finals at Madison Square Garden should be legen-wait-for-it-dary.


I’ve decided to write a series of posts outlining some of the techniques I used in creating LoLTool. These will mostly focus on explaining some of the reverse-engineering of the League of Legends client required to make stuff work. This first post will explain how I get the item data used to display items in the Recommended Items Editor (RIE).

This particular piece of code recently underwent some major changes due to Riot changing the client (thanks Rito!). For context the way I initially got the data was through reading the SQLite database file called “gameStats_en_US.sqlite” that comes with the LoL client. This contained a table with all the items and various attributes (like cost and the description). This worked great for the most part but after one of the recent patches this data was no longer included (the database file still exists and still contains a table for items but the table is simply empty).

With the previous source of data no longer available I began searching for other sources. Some item data is included in a file called “ItemDataPack.swf” in JSON format, but this was incomplete and not good enough for my purposes. I considered creating my own database file and distributing it with LoLTool but this would mean after every patch I would have to manually update this file. This would be a lot of extra work for me and if I happened to be busy at the time it might mean that item information isn’t updated for a few weeks after a patch. Not a good solution.

While stuck with this I decided to take a look to see if I could extract the data I needed using the official Riot API. I had already been looking at the this for a potential player statistics plugin for LoLTool so I had some idea of what it could do. It turned out that getting the item data was actually very easy, the only small hindrance being that it came in JSON format. I had previously decoded JSON using the .NET built-in JSON deserialization library but this requires writing a custom deserializer for every bit of JSON you want to process. It works sure, but it isn’t fun. This is when I stumbled upon the NewtonSoft Json.NET library. Wow, what a difference a good library makes! I went from being annoyed at JSON to loving it in no time. With Json.NET all it takes to decode a JSON object is creating a class with getter/setter methods for each of the JSON properties and a call to deserialize and you are done. It does all the magic work for you. You can even do a partial implementation and it will only decode those properties that you have created accessors for. So if you find yourself working with JSON in C# I wholeheartedly recommend using the Json.NET library to do so, it will make your life much easier. Seriously, after downloading the JSON code all that is required to parse it are the following lines of code:

JObject jo = JObject.Parse( json );
JToken itemData = jo["data"];
Dictionary<int, JItem> itemsDict = JsonConvert.DeserializeObject<Dictionary<int, JItem>>(itemData.ToString());
foreach( JItem ji in itemsDict.Values )
    if( ji.Gold.Purchasable )
         items.Add( ji );

Where JItem is just a class I created with accessor properties matching the names of the properties in the item JSON (found in the Riot API documentation). Easy.

The next thing I did was to update the category filters (the checkboxes found in the Recommended Items Editor) to be automatically generated from the tags attribute found in the items data. After this was done a problem remained: there were a bunch of items that shouldn’t be there like Attack Upgrade I, Attack Upgrade II and so on. Yeah, the Blackmarket Brawler items and brawler upgrades (though this was before this mode was released, so I was a little confused at first). While some of these were tagged correctly as Blackmarket Brawler items, most were not (thanks Rito!). So I had to manually go through and identify all of these special items and include them in a special exclusion list that is used to filter these items out. For now this is hardcoded into the program, although I might turn this into some sort of text file (XML, or maybe CSV) in the future so it can be updated without recompiling the core program.

The last problem that I had to overcome was that the image names included with the item data didn’t always match the image names of the items that I was using (extracted from “ImagePack_items.swf” – the topic of a future Inside LoLTool discussion). 80-90% of items had the correct images after using some fuzzy matching but a few were still completely wrong (once again, thanks Rito!). Pretty much all the jungling items were wrong, several boot enchants, the Doran’s items were wrong and a few others like Void Staff. To fix these I extracted the images from the SWF file and then went through manually matching each item with the correct image. For each item that needed to be changed a replacement rule was hardcoded in to use the correct image name instead of the one supplied through the Riot API. Of course this means that the next time Riot decide to make sweeping changes to itemization it is likely that I’ll have to go back in and update some of these replacement rules (again, these should probably be moved to some sort of text data file that can be easily updated without recompilation).

Hopefully this post will give you some insights into what goes into making LoLTool work under the hood.


The latest update for LoLTool is now live and if you run the launcher it should download and install it automatically. Some details follow below.

So Riot ships a SQLite database with the League client that used to contain all the item data (names, descriptions, cost, etc…) needed to make the whole recommended item editor work. Then, for some reason, they removed all of that data. Presumably they updated how the client gets the data internally and didn’t want to maintain a duplicate copy of the data. Fair enough, but a giant pain for me. It’s probably all in the game client data somewhere, but I never managed to decode those files. So I’ve switched to using the Riot API instead. All the item data can be retrieved from the Riot servers and supposedly this does not count against the rate limit for Riot API requests with a developer key. Hopefully this works for everyone; as per usual my testing is limited to my personal dev machine. If things are broken for you make sure you email me and let me know so that I can investigate. Thank you all, and good luck out on the Rift!


Hello everyone! We are back online after a long absence.

So what happened? Well, first up the previous site got hacked. Ok, that was my bad. Turns out ignoring constant nags to update the site with security updates for several years is really not a good idea. Who woulda thunk? Yeah that was lazy. At the time when I found out that the site was offline I was just ending the final stretch of my Master’s degree and simply didn’t have the time to invest in fixing the site.

Then Riot went ahead and removed all the item data from the database that comes with the game, so now I had to figure out a new way to get item data or else the recommended item editor would be completely useless. That meant more time invested.

Now I’ve finished my Master’s so I have a little time to invest back into this project. A fix for getting the item data is also complete, so LoLTool should be working with all the previous functionality. It should be up on the site shortly.

As to future updates… I will try to keep everything working when Riot breaks things, and I may add some more functionality at some point but the amount of time I can invest in this is rather limited, especially given that it costs me far more to host the site than it makes in advertising revenue, let alone being in way profitable. So I’ll only be working on it in my spare time and when I feel like it.