Wednesday, January 8, 2014

How to Theorycraft Effectively

Theorycrafting!

To some people, that word is scary---OMG NUMBERS EW, while to others it's exciting---I'm gonna figure out the BEST way to set up/build my champion, and then beat you because my build is better!

For me, theorycrafting is definitely the latter.  I love seeing what the numbers tell me and then applying that in my gameplay!  The goal of this article is to get you to feel the same way---or help you theorycraft more efficiently if it's something you already do.  :)

Note that this guide assumes you have access to Microsoft Excel 2010+, but you can do most of what I discuss with Google's spreadsheet tool.

Step 1.  Come up with a good question.

That's it!  Come up with a question that you answer, but make sure it's a good question.  Examples of good questions: "Are hybrid pen marks or magic pen marks better on LeBlanc if I'm vs a Riven starting Doran's Shield?  What about against an Ahri starting Doran's Ring?" or "On Annie, if I'm going to be poking with Q 3-4 times between Ws, should I max Q first or should I max W first?  And what will the implications on my mana pool be?"

Examples of bad questions: "What's the best build order for Caitlyn?" or "What should my support runes be?"

Now, the last two questions are definitely good questions to ask.  But they're bad theorycrafting questions---they're just too general!  A good question needs to have a very specific way to answer it using numbers from the game.

Let's look at our "good" examples.  In the first question, we're wondering, do we want MPen or HyPen marks on LeBlanc?  That's half the information we need---our OPTIONS, and our champion's STATS that affect our options.  However---it's not enough.  Your champion's stats are affected by the enemy's stats as well, and so we need to know what the enemy is.  Riven starting Doran's shield, for example, is going to be a lot harder to poke down with autoattacks than an Ahri starting Doran's Ring.  If you're against a Doran's Shield, that's 8 damage per auto that you're losing, and Riven will also have higher base armor than Ahri.  On the other hand, you're likely to get more autos per Q/W/E against a Riven than against an Ahri because Ahri is also ranged.  So when looking at the total damage you do in one "rotation," you're going to want to include more autos vs a Riven than you would against an Ahri.

If that doesn't make sense, don't worry---there will be examples later on!

Now let's look at our second question, about Annie.  This question is somewhat more simple than the first one, because we've provided even more information---there will be 3-4 Qs between Ws.  Annie's Q gains less damage per level than her W does, but it's slightly longer range and on a shorter cooldown; also the fact that it's targeted makes it easier to land and then back away.  So which spell would you want to scale if this is going to be your combo?  We can easily extend it to 2 Qs between Ws or 1 Q between Ws (in fact, "How many Qs between Ws do I need to make it worth it to scale Q over W?" would be another good question to ask).  However, Annie also doesn't have the freest of mana costs if she's spamming her spells.  So we add the second part---how sustainable is this?  Given the amount of regen that you have, how many rotations will you be able to get through?

Now let's talk a bit about the "bad" examples.  "What's the best build order for Caitlyn?"  Well, what are you trying to accomplish?  Max DPS upon reaching 6k gold into your build against a tank that's built Sunfire and Spirit Visage and also has a Warden's Mail?  Or a build that will help you take down towers as efficiently as possible only 4k gold in?  Or a build that will minimize the time it takes for you to clear a wave of creeps?  Or a build that's best for dueling the enemy ADC?  These questions could have very different answers.

And finally, "What should my support runes be?"  Well, what champion are you playing, first of all!?  Runes for Lulu will be different from runes for Taric will be different from runes for Janna.  And furthermore, runes can change a ton on the matchup and overall game flow---if I'm gonna be 2v1ing as Nami, I might do scaling mana regen quints, but if I'm in a 2v2 as Vayne-Nami vs Lucian-Leona, I probably want flat HP instead.

What you should notice, though, is that bad questions are made up of multiple good questions.  That is, if you have a general question like "What should my support runes be?" then you can break it up into smaller, more specific questions, which you then answer separately.

For the rest of this article, I'm gonna be using the question, "What should my offense quints be on Sona?"  This is split up into several sub-questions.  Separate cases include vs Zyra (a stand-in for a ranged support) or vs Leona (a stand-in for a melee support); and different options for offense quints.

(If you want to skip straight to the result, check out the end of the charts section of my Sona guide here (not linking that section directly cos sometimes the numbers change).)

Step 2.  Decide what stats you need in order to answer the question.

In general, if you're looking at an offensive thing (how much damage do I do to ----, how can I best do damage, etc.), you need to know your AP, your AD, your flat ArPen, your flat MPen, your percent ArPen, and your percent MPen.  You also need to know your enemy's stats---armor and magic resist for the most part.

Of course, these stats will come from different sources: items, runes, masteries, base stats, and hypothetically auras that your team has, so you need to make sure you include all of these sources!

Here are the stats that I use for this particular question.


So I have Zyra Armor Base and Scaling; MR Base and Scaling; the same stats for Leona; and also rune (Yel/Bl) and mastery (M) armor and MR.  I do NOT include items on Zyra or Leona, but if I wanted to then I could make two more boxes for each of them; if I wanted to include percent armor/MR increase that would be another thing I'd want to make a box for.

NEVER EVER EVER PUT A VALUE DIRECTLY INTO A FORMULA.  ANY VALUE THAT YOU HAVE TO USE SHOULD GO INTO A CELL, AND THEN YOU REFERENCE THAT CELL IN YOUR FORMULA!!!

There are several reasons for this.  First of all is error checking---you might just make a mistake when trying to make a calculation!  It's a lot easier to trace mistakes back if there are no values directly in the formula.

And second, League of Legends is NOT a static game!  Patches happen ALL THE TIME, and the spreadsheet that you just spent all day making might be completely irrelevant in as short a time as 2 weeks from now when all of your champion's base values are changed!  You do NOT want to have to change everything just because of something so minor as an increase in base armor by 2 or a decrease in base AD by 1.5.

If your calculations say "+(47+3*$C3)" where C3 is champion level, and suddenly Sona gets a buff to have 53 AD at level 1, then we'd have to edit everything.  However, if the calculation says "+($A$4+$A$6*$C3)" then all we have to change is the cell A4 that has Sona's base AD written in it and increase that number by 3.

INTERLUDE:

If you get confused about seeing too many things like $X$8 in your formula and not being able to read it well, you can name your cell!  Right click on the cell, and this menu will pop up:

You can click Define Name and then type whatever name you want into it.

Then, you can make a formula like this instead!

If you don't want to define names, there's another thing that you can use to help you figure out where formulas are referencing which values:

Colors!  They start to repeat after a while, but most formulas won't reference too many things, especially because of the next part.

Step 3.  Figure out what intermediate values you need, and calculate them.

You really don't want your formulas cluttered, first of all.  In general, my rule-of-thumb is to avoid having more than 8 cells referenced by a particular formula; if I need to reference that many values, then I should be splitting up the calculation.

In general, you NEVER want to be adding up multiple pieces that contribute to a single stat within your final formula.  What I mean by that is, you should never have something like

=(DAMAGE/(1+(AR_RUNE+AR_MASTERY+AR_ITEM+AR_BASE+LVL*AR_LVL)/100).  Instead, you would want all of those sources of armor added up into a single cell and then the formula to be =DAMAGE/(1+AR_NET/100).

There are a few reasons for this.

First of all, it makes it easier to find mistakes!  (This is always a reason.)  Second, what if Riot did something SUPER EVIL like changing the order of percent pen vs flat pen again!?!!?  You would have to go through your final formula in every single cell and change it!  Ewwwwww....Whereas you can just change the armor formula itself if you do it this way.

And what if you just want to change your situation?  Suppose suddenly you're curious about what if Leona has W active?  Or if Renekton decided to take the % increase in armor/MR mastery?

THE OVERARCHING GOAL HERE IS TO MAKE EDITS AS EASY AS POSSIBLE AND AVOID EDITING YOUR "FINAL" FORMULA AS MUCH AS POSSIBLE.

Finally, sometimes the intermediate steps can give you interesting information.  "Oh, I didn't realize that an increase by ---- in armor actually led to a ---- damage change at this point in the game."  All of what you do here should help you to build your intuition of what numbers mean what.  And so the more "useful" numbers you see the better.

Let's go back to our example.  I actually have 2 sets of intermediate values.

First, I calculate net stats amor/MR/AD/AP/Flat and % Pen:


Why are all of those numbers there 3 times!?  Well, because the next set of intermediate values I calculate are the PHYSICAL and MAGICAL parts of Sona's damage, SEPARATELY.


Let's look at the formulas I use.

First, Magic Mod:

=1/(1+(X9*(1-X14/100)-X12)/100)

Phys Mod:

=1/(1+(X8*(1-X15/100)-X13)/100)

And for reference, X8 = Enemy Armor:

=$Y$3+$AA$3*$A$8+$Y$5+$AA$5

And X9, Enemy Magic Resist:

=$AC$3+$AE$3*$A$8+$AC$5+$AE$5

See how this could be confusing if I didn't do intermediate calculations?

Now, below that entire chart of constants, I have the following cell that explains to me:

Magic Modifier = 1/(1+(MR*(1-%MPen/100)-FlatMPen)/100).  Physical Modifier the analogous for physical damage. 

So if I forget exactly what it is that I did (say 4 months from now), I have a note reminding me exactly what I've done.

(n.b. the magic modifier is what you multiply your magic damage by to get the amount of damage actually dealt to the enemy champion accounting for their MR; same thing for phys modifier only for physical damage.)

Ok and now let's look at the actual damages set of numbers.

As you can see, it's "just" a ton of different potential combinations of damages you might do.  The standard trading combo is AA+Q+QC, but you might also get AAs in between Qs...and then because this is level 6, you also have to wonder about your ult, etc. etc.

Here are the formulas for a few of the cells:

Powerchord Magic:

=($M$2+$S$4*X$11)*X$16

It references the current chord damage (which is a weird enough scaling that I just enter it by hand each level), AP, the AP scaling on chord, and of course the magic modifier.

Autoattack, Phys Damage:

=(X$10)*X$17

Just your AD * the physical modifier.

R+Q+QC+4AA:

=D21+D9+D12+4*D10

Summing things up in that column

And then Net is just the sum of the physical damage and the magic damage.

See!?  Not too bad :)

Now, you might be wondering about my use of $....

Step 4.  Make your formulas universal enough that you can autofill EVERYTHING!

This probably shouldn't be its own step, but whatever.  This is the SINGLE MOST IMPORTANT THING TO DO.  Well, one of them anyway.  You need to be able to click on a cell and then drag it to autofill an entire region.  And then one you've filled all of the unique things, copy-paste that section to autofill everything else.

If you don't know how autofill works, or static values with $, just google "excel autofill" (without the quotes) and read a tutorial.

I'll give you an example of what I autofilled in these sheets.

Here's the picture of the values section again:

Magic Modifer and Physical Modifer were each typed out one time, and then dragged horizontally to autofill the rest.  Additionally, every value that is not blue was autofilled from the closest blue column to the left (e.g. Y9 the formula is "=X9").  And if a value is unchanging across the entire grid, I just autofilled it also to equal the cell directly to its left.  Or if it's only changed for one of the blue columns, I autofilled it for the rest of the blue columns from the first blue column.

Basically, I made it so that if anything changes, I need to edit AS FEW CELLS AS POSSIBLE.

I also made it take as little time to fill in the grid as possible.

For those of you not familiar with autofill (I'm not making an entire guide about it), keep in mind I'm using the same word to talk about two things --- first, the ability to copy a formula to other cells by clicking the corner of the starting cell and then dragging it along the region; and second, the ability to have other cells change automatically by having their values just be "=STARTINGCELL"

What $ does is it holds either the row or column or both constant when doing click-and-drag autofilling, which is equivalent to copy-paste.  Cut-and-paste works differently; it basically renames itself to the new location, so precedents and dependents are not affected in any way.

Step 5.  Decide how you want to present the final data, and fill in that formula.

In this example, all I care about are the net damages.  So I'm gonna remake the chart with only net damages instead of the intermediary damages as well.


The formulas here are all of the form "=F9," i.e. they just reference the upper chart.  Again these charts can be autofilled by just clicking and dragging, once across and then once vertically.

I also added a conditional format.  The rule is simply:

And then I actually copy-pasted each row vertically saying copy formatting only to apply the conditional format to each row individually of the chart.  This isn't too bad because you can power-of-2-increase the amount that you're copying (i.e. first row is formatted, copy it, then copy first 2 rows, etc.).

You can use more complicated conditional formatting as well though.  Here's the format I used for the cooldown charts:


You should attempt to do as much conditional formatting as possible!  Formatting by hand is f*king obnoxious!

I want to stop for a moment and mention DECIDNG HOW TO BEST PRESENT DATA IS REALLY, REALLY, REALLY, REALLY DIFFICULT!  IT TAKES A LOT OF PRACTICE TO GENERATE CHARTS THAT ACTUALLY CONVEY WHAT YOU WANT THEM TO CONVEY AND ARE EASY TO READ!  However, it's also REALLY, REALLY IMPORTANT!  If you do a whole bunch of calculations but you can't look at any of the numbers at the same time, it's gonna be really hard for you to actually learn anything from your calculations.

STEP 6.  MAKE SURE EVERYTHING IS CORRECT!

Ok, maybe this is actually the most important thing!

I want to introduce you to a feature of Excel that you may or may not be familiar with:  Dependent and Precedent tracing!


Here's how you do it: Find the Page Layout tab at the top, and then you'll see a section that looks like this:
Say you have A1 highlighted.  Then if you click "Trace Precedents" it shows you arrows from all cells that A1 references leading to A1 (i.e. the precedents of A1), and if you click "Trace Dependents" then it shows you arrows from A1 to all cells that reference A1.

This can help you a TON to catch mistakes made when potentially overusing autofill or forgetting a $ somewhere or putting a $ that you didn't mean.

And then the final thing you should do is always the check of "Does this make sense???"  If it says that your Q is going to be dealing 70 damage at level 1 with 0 bonus AD or AP, you proooobably made a mistake since Q only deals 50 damage!  Make sure you didn't accidentally put a - sign when you meant a + or something like that.

You can also edit your source cells to see if numbers change the way you expect them to.  Let's give Zyra 100 armor.  Now is the amount of damage we're doing to her slightly less than half of our stated damage (slightly less than to account for penetration that you might have).

Step 7.  DUPLICATE YOUR CHART WITH OTHER STARTING VALUES.

This comes AFTER you've done all your error checking, AFTER you've done the pretty formatting.  Absolutely dead last.  Now you're ready to change your starting values and compare numbers.

Notice how in the stats section I have some orange cells and some purple cells?  Yeah, those.  The orange cells are cells that I can change the values of in order to adjust starting info---say suddenly Sona is speccing 21 into offense and has penetration, or I want to give her a Haunting Guise---or, more reasonably, I just want to see what happens with different options for offense quints.  I can change those numbers and then look at the change in results of my final charts.

And then the purple cells are cells that I can change based on the champion level.

Step 8.  MAKE GAMEPLAY DECISIONS BASED ON YOUR NUMBERS!

"Awww but I really like having AP reds on Sona..."  Well we showed here that it's not actually good.  So don't do it.  If you're doing theorycrafting, the numbers aren't lying to you.  Adjust your gameplay or rune/mastery choices based on what the numbers tell you!

That does come with one caveat---say you get more DPS from AD as opposed to AS, but you feel like you play better due to the faster AA animation.  Sure, go for AS!  That's something that's qualitative, and theorycrafting can only help you make quantitative decisions.  Qualitative ones are still up to you!

Tuesday, December 17, 2013

Purple Wards: How to Deal with Evelynn

This is a post about a HYPOTHETICAL solution to Evelynn.  It is NOT implemented, nor do I have any reason to think it will be; it's just my opinion on how to fix the problem that stealth champions are creating right now with pink wards in their current state.

First, let's talk about the vision situation.  How can you currently attain true sight of an enemy stealthed champion?
---Pink ward (only one per champion is available on the map at a time)
---Oracle's Lens (not available before level 9)

That's it.  There's no other way.  And pink wards, in addition to having the limitation of only one per champion at a time, also have the limitation of being visible.  So whereas before, if Red Team had an Eve, and Blue Team put a pink ward, then either Eve could buy an Oracle to clear out the blue pink wards, or everyone on the red team could buy pinks of their own to clear out the blue pinks.  The upshot of this was that, if Red Team wanted Eve to be able to gank, then they would have to invest in true sight as well.  As it stands in preseason 4, Red Team can just clear out Blue Team's pinks without buying any true sight of their own.

This makes junglers like Shaco and Evelynn MUCH stronger than they used to be, because you can no longer cover a lane with pink to make it safe from ganks.

Now, it's true that Eve sits around a 50% winrate in soloq, but if we look at ranked 5s, she sits solidly above 50%, spiking up to above 60% sometimes.  Her average winrate in ranked 5s over the past three weeks is about 54.4% (to arrive at that number I averaged the winrates available from lolking NOT taking into account the number of times that she was played per day, so this average is only an estimate).  For contrast, only Sivir, Amumu, Ziggs, and Rammus sit at overall winrates higher than 54.4%.  (source for all these numbers is lolking.)

Evelynn popularity and winrate: Ranked 5v5, all levels of play.  Source: lolking

Evelynn popularity and winrate: Ranked 5v5, diamond only.  Source: lolking

Evelynn popularity and winrate: Ranked soloqueue, all levels of play.  Source: lolking
In addition to the numbers, let's consider the qualitative argument that Evelynn isn't fun to play against.  She forces passive play on laners unless you know where she is, and it's significantly more difficult to do that with vision in its current state.  Your jungler can no longer place a couple pink wards in forward locations, and if you do place such wards, Eve herself can just clear them without any investment of her own.  Basically, it now costs Eve's team nothing to counter the vision that the other team tried so hard to establish.

So now that we've established that there is something problematic about Eve, how do we fix it?  Season 3 pink wards were obviously overpowered, and the rework to them in Season 4 feels great --- no more endless wars between the two supports in botlane for who will have pink-ward control over the tribush, the vision snowball that was possible in Season 3 now has significant counterplay that forces the winning team to act as soon as they've established vision instead of just waiting for a mistake and then winning the game, because their vision control won't last as soon as they clear out of an area.

However, what if there was a ward that revealed stealthed enemy champions but not stealthed enemy traps?  I call it a "purple ward," and the way it works is that it upgrades your sight to truesight of enemy champions.  So if Eve is standing stealthed in my vision radius, and the radius of my purple ward, then I can see her.  But if she's standing only in radius of my purple ward, then I can't see her.

Here's a couple examples.  Click on the image to enlarge it.
A couple of interactions to note:
---A purple ward + a green ward = a season 3 pink ward except that it only sees stealthed champions
---Placing a purple ward in the middle of midlane allows you to see a stealthed Akali while she's in her shroud
---Because a purple ward is stealthed, it can be disabled (and then killed) by someone with a sweeping lens
---If a support places a purple ward in the side lane bush and stands in it, then he can see if an Evelynn or Shaco or other stealthed champ enters the bush.  However, the instant he leaves the bush, he loses that vision unless there's a green ward also in the bush.

A purple ward would cost 50 gold and last for 3 minutes, stealthing itself after a brief period (the same as a green ward).  Any champion can have up to 2 purple wards in their inventory at a time, and one placed on the map at a time.  This way, buying a green ward and a purple ward costs the same as a season 3 pink ward did.  A purple ward starts with 3hp but loses all but 1hp when it stealths.  This way, it is still doable to kill both a green ward and a purple ward with a single sweep of a sweeping lens, but you cannot one-shot or even two-shot a purple ward before it stealths itself.

Why should purple wards be implemented?
---Allows truesight prior to level 9 without losing a "permanent" ward---at the moment, getting true sight of an enemy champion in a brawl forces you to lose a forward ward that you may have wanted to keep.
---Allows for counterplay to Evelynn with a much more reasonable counter-counter play: Evelynn's team either needs to invest in their own pink ward or a sweeping lens cooldown to kill a purple ward.  This means that the presence of an Evelynn will require an investment by both teams, not just the team playing against the Eve.

What are some downsides of purple wards?
---Somewhat complicated to understand, because they require an interaction with another allied unit to function in a way not previously seen in League.
---Nerf some champions that are already relatively weak: Talon and Akali come to mind.

Overall, however, I believe that purple wards will add a lot more to the game than they will detract, and I think they're a very well-balanced solution to the current problem of stealth champions being overpowered.

Wednesday, November 27, 2013

Why Ezreal/Janna is a bad lane

Janna's Strengths:
--Shield (sustain IF AND ONLY IF the ADC is trading or getting poked)
--Damage (through AD bonus to ADC, multiplied by ADC having good AD-scaling skills or trading multiple autoattacks)
--Peel (useful if ADC needs peel)
--Chasing (useful if ADC can just chase down enemy botlane)

Janna's Weaknesses:
--Can't trade herself (so needs a long-range ADC to poke; otherwise ADC will soak too much damage if goes to trade)
--Not great in an allin at early levels (AD bonus doesn't last for that long on shield, shield not that big yet, doesn't have good damage nuke of her own)
--Very squishy herself (can't act as a damage soak for ADC)
--No waveclear

Ezreal's strengths:
--Good poke in lane (gets to stay back and not trade)
--Mobility (doesn't need much peel and also can dodge poke)
--Good level 2 allin

Ezreal's weaknesses:
--Not great in longterm trades (passive isn't that good compared to other steroids)
--Subpar waveclear pre-6
--Weak AA poke (due to standard range)

Basically, Janna's AD shield is a HUGE part of her kit since she has no damage nuke of her own.  But Ezreal can't really make use of that shield at all!  Janna also provides fantastic peel to someone like Caitlyn or Vayne, which is something that Ezreal doesn't need.  Ezreal prefers to stand back and poke, and he appreciates true sustain (like what he would get from Nami or Sona).  Janna's passive-ish give-AD-to-the-ADC style of play doesn't synergize with Ezreal at ALL, making the lane extremely weak.

Friday, June 21, 2013

Introducing SSSSSSSSSS! And a general update

So...I've been pretty awful about updating here recently.  Basically, I've been casting a LOT and covering LCS for LoLKing.  Those articles get published on zam.com, and I announce them on my Twitter when they go up.  I've been playing a lot of Plat v Silver games---follow my Twitter or my stream to find out when I'm streaming those.  I'm not saving VoDs of them unless someone specifically requests, but I've been streaming for about 8-10 hours a week for the past few weeks, so there's a decent amount of VoDs you can watch at any given time if you're interested.

I've also been casting a lot---mostly for NESL, but I'm also starting to cast the Dominate Dominion tournament that's hosted weekly on Saturdays here.  (Again, follow my Twitter for updates on whenever I'm casting stuff.)  At some point I'll finish my Nami guide and release it; I have made the temporary link public, but you can't vote/comment on it yet because it's not done.

Sona got buffed!  That was pretty awesome.  Still run HP quints on her probably.  Haven't gotten much of a chance to play since the 3.8 patch, so maaaaybe you can get away with a bit less HP, but it's still probably your strongest choice.



And now...introducing the SSSSSSSSSSS!  SSSSSSSSS roughly stands for 'Saturday Sundown Super Silly Scrim Series,' but it's not on Saturdays and not at sundown.  But they are super silly scrims!  Sign-ups for this week are open.  Each week, there's a different theme, and this week the theme is "Carry me Bro," where you may only play ranged champions and ONLY build AD Carry items.  Allowed items must provide either Attack Damage or Attack Speed and NOT contain any Ability Power (Triforce is allowed).  (Yes, you may purchase components prior to completing an item.)

SSSSSSSSSSS will be hosted and casted by myself and Blanket Ninja roughly every week and streamed on my stream.  This week, it's at 7:30pm Pacific time on Sunday June 23, but that time will be variable from week to week.  Eventually I'll get around to making a page here for that.


You can still take double golems if you have like Draven/Janna or something super high-damage, probably not with Nami/Caitlyn though.  Haven't tried it with too many lane combos yet.

I'm gonna try to make a post talking about NA LCS sometime in the next week or so.  But maybe I'll work on my Nami guide instead.  We'll see.


Finally, I'm wanting to start offering shoutcasting lessons, but I really want to charge for them.  If that's something you'd be interested in, message me on reddit or email me at [my IGN]LOL at gmail.com.  Rates would probably be about $10-20/hour, depending on how many lessons you wanted to commit to.

Saturday, May 18, 2013

How to nerf Sona (QQ)

Writing this sort of makes me sad, because I love Sona, and it will make me sad for her to be weaker.  However, I do think she's OP right now, and nerfing her is 100% reasonable.  This is in response to this Riot forum post.

For anyone reading this post linked from there, I have 700+ games with Sona and I wrote this approved Sona guide on solomid.net, so I actually know what I'm talking about.

  • Nerf her ultimate.  This is what I would like to see targeted most of all.  Ways to do this:
    • Increase the cooldown (not recommended---I hate nerfing champions by just increasing cooldowns.  It just makes it feel worse to play the champion.)
    • Make it do 0 damage (this is reasonable but sort of silly and doesn't really address the issues---her utility is crazy-good)
    • Return it to the DOT that it used to do (fine, but not sufficient, see above)
    • Decrease the stun duration:
      • Everywhere.  That would be okay, but I would rather see
      • The farther you are from her, the less you're stunned for, or
      • The closer you are to her, the less you're stunned for.
      This is my favorite option for nerfing Sona.  Make her stun variable duration depending on how far you are from her.  Either way promotes more creative play from Sona.  If close-range stuns last the longest, you want to make sure you're right on top of your ADC so you can stun the diver immediately.  If long-range stuns last the longest, you actually want to be staying decently far from your ADC so you'll get the longest stun possible.  Obviously this also opens additional counterplay options against Sona, which is always nice.
    • Decrease the area.  This would be okay to be honest.  I would hate this change because it's ridiculous how much intuition you get about the area of a skill, but it makes sense: her AoE is really big, and if you want to keep the same duration stun why wouldn't you just nerf the area.  But I'd rather see the stun duration changed.
  • Nerf her auras.  There are a LOT of ways to do this.
    • Just nerf the numbers overall.  This already happened once.  I don't suggest doing it again.
    • Make her auras decay over time.  THIS IS THE SINGLE BEST WAY TO NERF SONA.  We already have a decay of her W from double bonus to single bonus after 3 seconds.  What I'd rather see is a decay per second from double bonus to half-bonus over a slightly longer period, and I'd like to see this on all three of her skills.  So if she's completely oom and can't refresh her auras, she's basically screwed.
      • This doesn't punish active Sona play that much in the short run
      • If Sona can't be effective in the short run, it massively punishes her in the long run
      • It massively punishes passive Sona
      • Increases Sona's skill ceiling (not that she's not already really complicated, but this would make her more challenging in a good way and reward coordination between her and her ADC.  And no one can say that Sona is intended to be straightforward to play with her passive)
    •  Make Sona's auras do less to herself than to her allies.  This is a BAD change to Sona, as it would encourage passive play.
    • Make her residual aura after she switches stances last for less time.  Please no.  Being able to go E --> Q --> W without losing the defense aura for any time but giving yourself the Q-chord against an objective/in an allin is actually pretty important, in my opinion.  And more importantly, if you're running away with E persistent and you have enough mana, you want to Q --> W --> E and then get the E-chord off on whoever's chasing you without losing your MS for any time at all.  And to be honest, nerfing that is just going to make people who main Sona sad without actually adjusting her balance sufficiently.
  • Nerf her Q/W numbers.
    • Cut down on her early damage.  I would hate to see this because (1) it encourages passive play, and (2) it takes away a lot from what makes Sona herself
    • Cut down on her W heal increase per level and increase its AP scaling.  I like this because it rewards healing from a Q aura as opposed to a W aura.  (I like this idea a LOT.)
    • Increase her mana costs.  I actually don't think this is a good idea unless it's in conjunction with 1-2 other things also, because her mana costs are already so high that increasing them further to make her be balanced on that alone will make her lose at all but the very top levels of play in terms of coordination between ADC and support.
  • Nerf her base stats.  Please no.  This is another really delicate line to cross.  I already feel that flat HP quints are 100% necessary on her; nerfing her base stats more will just lock item builds/runes without addressing the real problems.
  • Remove the auto-attack reset upon getting a power chord.  I don't actually recommend this, but it would be better than some changes.

So, yeah.  I may update this post as I come up with more things.  The last thing I want to say is that I don't actually think nerfing Sona is as appropriate as buffing other supports, and I'd rather see very slight nerfs to Sona and more substantial buffs to other supports.

Tuesday, May 7, 2013

Clone Recommended Item Builds Update

I updated this for Howling Abyss and figured I'd repost.  Enjoy!

Link to OP. 

# A Python script to allow you to 'clone' a customized set of recommended items.
# Written by RheingoldRiver.  Feel free to modify and share it but please don't
# claim you wrote it yourself if you do so.

# This code is intended to work with Enigma's Recommended Items Changer.  I am
# in no way affiliated with Enigma and any errors here are entirely my own.
# If you have League installed in a different directory, edit the variables
# dirOrig and dirNew accordingly.

# The inputs are (1) a string of the champion whose build you want to clone;
# (2) a vector of strings of the champions to which you want to clone the build;
# (3) a string denoting which mode you want to take the build from; and (4)
# a string denoting which mode you want to copy the build to.  Mode strings are
# "sr" for Summoner's Rift"; "dom" for Dominion; "ha" for Howling Abyss;
# and "tt" for Twisted Treeline.

# Example inputs:
#    cloneBuild("Sona",["Janna","Nami","Lulu"],"sr","sr")
# will copy your Summoner's Rift Sona build to Janna, Nami, and Lulu on
# Summoner's Rift.
#    cloneBuild("Irelia",["Irelia"],"sr","dom")
# will copy your Summoner's Rift Irelia build to Irelia on Dominion.

# If one of your builds contains items not available on a particular map then
# the program will still work; those items will just not appear in your
# recommended items on that map.

ADC = ["Ashe", "Caitlyn", "Corki", "Draven", "Ezreal", "Graves", "Kayle",
       "Kogmaw", "MissFortune", "Quinn", "Sivir", "Tristana", "Twitch", "Urgot",
       "Varus", "Vayne"]
SUPPORT = ["Alistar", "Blitzcrank", "Fiddlesticks", "Janna", "Leona", "Lulu",
            "Lux", "Nami", "Nidalee", "Nunu", "Sona", "Soraka", "Taric",
            "Thresh", "Zilean", "Zyra"]
APMANA = ["Ahri", "Anivia", "Annie", "Brand", "Cassiopeia", "ChoGath", "Diana",
          "Elise", "Evelynn", "Fizz", "Galio", "Gragas", "Heimerdinger",
          "Karma", "Karthus", "Kassadin", "LeBlanc", "Lissandra", "Malzahar",
          "Morgana", "Orianna", "Ryze", "Sion", "Swain", "Syndra", "Teemo",
          "TwistedFate", "Veigar", "Viktor", "Xerath", "Ziggs"]
APMANALESS = ["Akali", "Katarina", "Kennen", "Mordekaiser", "Rumble",
              "Vladimir"]
ADBRUISER = ["Darius", "DrMundo", "Fiora", "Gangplank", "Garen", "Hecarim",
             "Irelia", "JarvanIV", "Jax", "Jayce", "Khazix", "LeeSin",
             "MasterYi", "Nasus", "Nocturne", "Olaf", "Pantheon", "Poppy",
             "Rammus", "Renekton", "Rengar", "Riven", "Shaco", "Shen",
             "Shyvana", "Skarner", "Talon", "Trundle", "Tryndamere", "Udyr",
             "Vi", "MonkeyKing", "XinZhao", "Yorick", "Zac", "Zed"]
APBRUISER = ["Amumu", "Malphite", "Maokai", "Nautilus", "Sejuani", "Singed",
             "Volibear", "Warwick"]
ALL = ADC + SUPPORT + APMANA + APMANALESS + ADBRUISER + APBRUISER


import os
def cloneBuild(orig,new,mode1,mode2):
    d1 = {"dom":"8", "sr":"1", "tt":"10", "pg": "3", "ha":"12"}
    d2 = {"sr":"CLASSIC", "dom":"ODIN", "tt":"CLASSIC", "pg":"any", "ha":"any"}
    fileOrig = "EnigmaItem_" + d1[mode1] + "_" + d2[mode1] + "-0.json"
    dirOrig = 'C:/Riot Games/League of Legends/Config/Champions/' + orig + '/Recommended/'
    fOrig = dirOrig + fileOrig
    f1 = open(fOrig,'r')
    s = f1.readline()
    f1.close()
    for champ in new:
        fileNew = "EnigmaItem_" + d1[mode2] + "_" + d2[mode2] + "-0.json"
        dirNew = 'C:/Riot Games/League of Legends/Config/Champions/' + champ + '/Recommended/'
        if not os.path.exists(dirNew):
            os.makedirs(dirNew)
        fNew = dirNew + fileNew  
        f2 = open(fNew,'w')
        s = s.replace(orig,champ)
        s = s.replace(d2[mode1],d2[mode2])
        s = s.replace("\"map\":\""+d1[mode1]+"\"","\"map\":\""+d1[mode2]+"\"")
        f2.write(s)
        f2.close()


Wednesday, May 1, 2013

LCS Coverage and Patch 3.6 Thoughts

I got the chance to attend LCS this past weekend, giving coverage for LoLKing/ZAM.  You can find the three articles (match summaries and interviews) here, here, and here.

And changes to botlane in the 3.6 patch...

Corki:  This is actually pretty huge.  I think he should be at least decently viable if not strong.  He might even be strong enough to make Corki-Leona a good lane again.

Draven:  We knew this was coming, it's definitely a change for the better.

Ezreal: I hate Pulsefire Ezreal anyway.

Karma:  I think her cooldowns are still too long for botlane given what they do.  Her skills seem like they would make her a sustain/trading support, but they're basically the same as Lulu's cooldowns, don't do that much extra base damage, and she doesn't have the bonus on her autoattacks that Lulu does.  And her level 6 isn't going to let her save her ADC from the enemy support's ult (like Alistar's or Lulu's) or get a kill on the enemy ADC (like Sona's or Nami's)...definitely she's more of an AP mid.  That said, if you're a god at hitting your Qs, she does have the potential to output a good amount of damage.  I'd put her in the same class of support as Nidalee, where if you're able to outplay with skillshots it can be strong, but overall even if it wins early, it's probably going to lose late.

Lulu:  Aaaahh now I need to rewrite the Lulu article I wrote the other day.  Grr.  Help, Pix! is now more damage/mana efficient at all levels if you only hit one target with Glitterlance (more on that when I update the Lulu article).  Her E mana efficiency goes from 1.3 to 2.8; Q goes from 1.1 to 2.  [edit: done!]

Nunu:  It was actually kind of annoying when Consume expended Visionary but didn't cast.  Not really going to affect his viability that much, this is almost so minor as to be a QOL change.

Quinn:  Haven't seen enough of her to say whether this is going to affect her in a major way.  The Vault change is honestly probably the most important part of all of this.  She no longer has the highest-cooldown ult at all three levels though (Urgot's was already longer at level 3, but Urgot typically builds some CDR).

Sivir:  Don't think this is gonna help enough.

Sona:  To be honest, I thought her W-chord already didn't reduce Baron/Dragon damage.  Oops.

Thresh:  Thank god he finally got nerfed, but this isn't enough.  Like Sona, you can nerf him so that he's only barely viable if that at all levels of play below plat/diamond, but he's still gonna be insanely OP in the right hands.  His scaling with team communication is higher than that of any other champion I think.  Maybe Twisted Fate.

Vayne:  What.  I thought they realized that this would make her too strong so they weren't gonna do it.  She's gonna be REALLY strong now.  Not strong enough to win lane without massive outplay, but still a lot stronger.  Auto-Q-auto-condemn for 3 procs of silver bolts is way easier now.

Things I need to update:  My Lulu article, like I said [done].  And also some cooldown information in my Sona guide [jk don't need to do this].  I also intend to, at some point, add much more detailed information to the matchups sections (important cooldown timers, relative mana sustain, etc.) but that's gonna be about 5-10 hours worth of work, and I'm not sure when I'll have the time [yeah, soontm].


SNSS is on SATURDAY this week!