Since none of the lanes look ripe for ganking, you decide to gain some more gold and experience by continuing to kill the jungle creeps. You take out wolves, wraiths and the <<print $jungle_other_buff>> buff to gain level 4. With your full suite of abilities and double buffs, your lane invasions should be even more fearsome.\n[[Excellent, where to next?|Jungle Fail]]\n<<set $jungle_action = "farming">>\n<<set $jungle_fail_action = "roamed top & secured first blood for their Riven">>\n<<set $jungle_losing_lane = "top">>
<html><img src="defeat.png" alt="Defeat" usemap="#defeat" />\n<map name="defeat"><area shape="rect" coords="290,341,412,377" alt="Continue" href="#" onclick="javascript:state.display('Lost Promotion', this); return false;"></map></html>
You're placed in a match with 4 <<cyclinglink "teammates" "strangers" "strangers whom you somehow need to cooperate with" end>>.\n\n<html><img src="lanes.png" width="300" alt="Summoner's Rift Lanes" /></html>\n\nYou have first pick in the draft, so you can call which role you'll be playing in team chat:\n\n[[Call top lane|Call Solo Top]]\n[[Call middle lane|Call Solo Mid]]\n[[Call bottom lane (AD carry)|Call ADC]]\n[[Call bottom lane (support)|Call Support]]\n[[Call jungle|Call Jungle]]\n\nOr say nothing at all and [[fill whatever role is needed|Fill]].
<html><img src="abilities/resonatingstrike.png" alt="Resonating Strike" /></html>
In your last game, someone else played <<if $your_role eq "top">><<cyclinglink "Fiora" "Teemo" "Warwick" "Poppy">><<else>><<cyclinglink "Master Yi" "Pantheon" "Sion" "Akali">><<endif>> in <<print $your_role>>. They pushed the lane, never warded and fed like crazy. You politely insist that you will be keeping your claim to <<print $your_role>> lane.\n\n<<replace>>Your obstinate teammate responds...<<gains>>\n\n''some_jerk44 :'' newb\n''some_jerk44 :'' gimme <<print $your_role>> or I feed\n\nYou contemplate whether you're willing to lose another ranked match due to a troll.\n\n<<if $your_role eq "top">>\n[[Concede, let the troll have top lane|Fill Begrudging]]\n[[Stand your ground, you're going top|Insist Solo 2]]\n<<else>>\n[[Concede, let the troll have middle lane|Fill Begrudging]]\n[[Stand your ground, you're going mid|Insist Solo 2]]\n<<endif>><<endreplace>>
<html><div class="champ-background" style="background-image: url(splash/shen.png);">\n<h1>Fuck yeah Shen!</h1>\n<p class="champ-description">Shen's stalwart tankiness won't ever dominate top lane, but his global map presence is invaluable. You can constantly split push the side lanes, then use Stand United to join your allies in a teamfight anywhere on the map.</p>\n<p><a class="internalLink" href="#" onclick="javascript:state.display('Insist Solo 3', this); return false;">Awesome, I wonder what champs my allies will pick.</a></p>\n</div></html>\n<<set $champ = "Shen">>
<html><img src="jungle/golem2.jpg" alt="Ancient Golem" /></html>
<html><img src="abilities/rollingthunder.png" alt="Rolling Thunder" /></html>
An unseen announcer greets you: "Welcome to Summoner's Rift!"\n\n<html><img src="sr_start.png" alt="Summoner's Rift" /></html>\n\nYou open the shop window to spend your initial gold, pausing for a moment to consider the options. You'd like to pick up something with defense and sustain, but you know that wards are critical for spotting the enemy jungler.\n\nWhat will you buy?\n\n[[I can't poke if I'm unprotected, I need Doran's Shield|Support Buy Shield]]\n[[I can't play strategically without vision, I need wards|Support Buy Wards]]
// Else If macro by Leon Arnott\n// http://www.glorioustrainwrecks.com/node/5404\nversion.extensions.ifMacros = { major:2, minor:0, revision:0 };\nmacros["if"] = {\n handler: function(place, macroName, params, parser) {\n var conditions = [],\n clauses = [],\n srcOffset = parser.source.indexOf(">>", parser.matchStart) + 2,\n src = parser.source.slice(srcOffset),\n endPos = -1,\n currentCond = parser.fullArgs(),\n currentClause = "",\n t = 0,\n nesting = 0;\n for (var i = 0; i < src.length; i++) {\n if (src.substr(i, 9) == "<<endif>>") {\n nesting--;\n if (nesting < 0) {\n endPos = srcOffset + i + 9;\n conditions.push(currentCond);\n clauses.push(currentClause);\n break;\n }\n }\n if ((src.substr(i, 6) == "<<else") && nesting == 0) {\n conditions.push(currentCond);\n clauses.push(currentClause);\n currentClause = "";\n t = src.indexOf(">>", i + 6);\n if (src.substr(i + 6, 4) == " if ") {\n currentCond = Wikifier.parse(src.slice(i + 10, t));\n } else {\n currentCond = "true";\n }\n i = t + 2;\n }\n if (src.substr(i, 5) == "<<if ") {\n nesting++;\n }\n currentClause += src.charAt(i);\n }\n try {\n if (endPos != -1) {\n parser.nextMatch = endPos;\n for (i = 0; i < clauses.length; i++) {\n if (eval(conditions.shift())) {\n new Wikifier(place, clauses[i].trim());\n break;\n }\n }\n } else {\n throwError(place, "can't find matching endif");\n }\n } catch (e) {\n throwError(place, "bad condition: " + e.message);\n }\n }\n};
Solo Queue - An Exercise in Serenity
You ping the Dragon pit and instruct your teammates to converge. Two of your teammates respond and begin moving in that direction. Your jungler, on the other hand, decides instead that finishing off the jungle <<cyclinglink "wraiths" "wolves" "golems">> is the current top priority.\n\nAs you round the corner into the river, the fog of war reveals four enemy champions walloping a nearly-dead dragon. The enemy jungler uses Smite to slay the beast, and all four turn their attention towards you. Your teammates, seeing the uneven odds, retreat back to lane. Your death contributes even more gold to the enemy's advantage.\n\n[[That could have gone better...|Everybody Raging]]
Your claim goes uncontested, and your teammates quietly fill out the remaining roles.\n\nAs the jungler, you'll prey on the neutral monsters that live between the lane. While roaming, you'll be able to help out any lane that's having a tough time. With any luck, your well-timed intervention should help your teammates <<cyclinglink "get ahead" "go even" "not feed" end>> in lane.\n\nTime to choose which champion to play:\n\n<<set $your_role = "jungle">><<preload "jungle">><<display "Jungle Champions">>
<html><div class="champ-background" style="background-image: url(splash/kassadin.png);">\n<h1>Fuck yeah Kassadin!</h1>\n<p class="champ-description">He wasn't banned!? Kassadin is the most feared mid lane assassin due to his incomparable mobility and snowball potential. You'll be riftwalking in and out of combat, blowing up high priority targets as you go.</p>\n<p><a class="internalLink" href="#" onclick="javascript:state.display('Insist Solo 3', this); return false;">Awesome, I wonder what champs my allies will pick.</a></p>\n</div></html>\n<<set $champ = "Kassadin">>
You ping the <<print $jungle_gank_lane>> lane and sneak your way over through the jungle. You lurk for a moment in the river bush, but the enemy <<print $jungle_gank_target>> keeps farming. <<replace>>You haven't been spotted.<<gains>>\n\n<<print tale.get($jungle_cc).text>>\n\nConfident that you've caught your opponent unaware, you rush into lane with your <<print $jungle_cc>>. Together, you secure an easy first blood for your <<print $jungle_gank_lane>> laner.\n\n[[Excellent start! Where to next?|Jungle Fail]]<<endreplace>>\n<<set $jungle_fail_action = "invaded bottom lane & secured a double kill for their AD carry">>\n<<set $jungle_losing_lane = "bottom">>
<html><img src="ranked.png" alt="Select Game Mode" />\n<h2>Classic - Summoner's Rift</h2>\n<p>Work with your allies to siege the enemy base and destroy their Nexus. Average game length is 30-45 minutes.</p></html>\nLast Step:\n[[Solo: match me with teammates|Matchmaking Solo]]\n[[Duo: I will invite a duo partner|Matchmaking Duo]]
Isolated from the rest of the map, top lane is a brutal 1v1 brawl. The current meta favours tanky champions in this lane, so combat tends to be slow and drawn-out. Who can sustain longer?\n\n<<set $your_role = "top">><<preload "top">><<display "Call Solo">>
<html><div class="champ-background" style="background-image: url(splash/ashe.png);">\n<h1>Fuck yeah Ashe!</h1>\n<p class="champ-description">Ashe may the the tutorial champion, but her simplicity doesn't reduce her effectiveness. Enchanted Crystal Arrow is considered the best initiation ability in the game, and the stacking slow from Frost Shot makes her nigh impossible to escape.</p>\n<p><a class="internalLink" href="#" onclick="javascript:state.display('ADC Game Start', this); return false;">Alright, let's do this.</a></p>\n</div></html>\n<<set $champ = "Ashe">>
<html><div class="champ-background" style="background-image: url(splash/twitch.png);">\n<h1>Fuck yeah Twitch!</h1>\n<p class="champ-description">Twitch being played as an AD carry belies his true role as an assassin. Ambush allows him to sneak up on high priority targets so he can burst them down with Expunge. With the right positioning, he can deal incredible AOE damage from the back lines with Spray & Pray.</p>\n<p><a class="internalLink" href="#" onclick="javascript:state.display('ADC Game Start', this); return false;">Alright, let's do this.</a></p>\n</div></html>\n<<set $champ = "Twitch">>
You position yourself ahead of your ADC, using your superior trading to zone out the enemy duo. Your strategy works, and you've soon got the waved pushed to the enemy tower. Unfortunately, <<replace>>your only ward in the river just timed out...<<gains>>\n\n<html><img src="abilities/bearstance.png" alt="Bear Stance" /></html>\n\nThe enemy Udyr suddenly lunges in from fog of war, diving towards you and your ADC. You're outnumbered and way out of position; the enemy team secures first blood and an easy double kill. They have a significant gold lead in bot lane, [[will their ADC start to snowball?|Bot Lane MIA]]<<endreplace>>
Your lane claim goes uncontested, and your teammates quietly fill out the remaining roles.\n\nThe AD Carry (or "Marksman" in Riot's new lingo) is weak in the early game, but becomes immensely powerful with enough gold. If the lane phase goes well, hopefully you can //carry// your team to victory.\n\nTime to choose which champion to play:\n\n<<set $your_role = "adc">><<preload "adc">><<display "ADC Champions">>
You decide to play cautiously in lane, acting as a bodyguard while your AD carry farms and scales into late game. You hang back and avoid engaging, focusing instead on guarding against jungle ganks.\n\nThe enemy duo employ the opposite strategy, and begin pushing the wave towards you. Their aggressive positioning forces you backwards, making you miss out on XP and gold. The minion wave is soon directly under your tower, complicating your ADC's farming task even further. <<replace>>You hold out as best you can, but...<<gains>>\n\n<<if $support_item eq "wards">>\n<<display "Support Safe Wards">>\n<<else>>\n<<display "Support Safe Shield">>\n<<endif>><<endreplace>>
<html><div class="champ-background" style="background-image: url(splash/riven.png);">\n<h1>Fuck yeah Riven!</h1>\n<p class="champ-description">Riven is a strong duelist and lane phase bully. Her abilities provide mobility, have short cooldowns and scale ridiculously well with attack damage. She's powerful in the early game, and can snowball out of control with a gold advantage.</p>\n<p><a class="internalLink" href="#" onclick="javascript:state.display('Insist Solo 3', this); return false;">Awesome, I wonder what champs my allies will pick.</a></p>\n</div></html>\n<<set $champ = "Riven">>
You hit Alt + F4 to exit the game and dodge having to play with a troll.\n\nReopening the client, you notice that you've lost <<randomnumber 7 10>> League Points in the ranked ladder. You also have a time penalty before you can play again.\n\n''Because you abandoned a recent game during champion selection, you are currently unable to join the queue.'' <<replace>>5 minutes later...<<becomes>>4 minutes later...<<becomes>>3 minutes later...<<becomes>>2 minutes later...<<becomes>>1 minute later...<<becomes>><<goto "Matchmaking">><<endreplace>>
As expected, your claim goes uncontested. Your teammates are happy that the least popular slot has been filled, and quietly fill out the remaining roles.\n\n<<display "Call Support 2">>
<<if $jungle_losing_lane eq "top">>\nYou race over to the losing lane to try and stop the bleeding. The enemy top laner is zoning out your teammate with their early advantage. You hastily rush in with your <<print $jungle_cc>>, <<replace>>but...<<gains>>\n\nHer early kill has made Riven stronger than the both of you combined; she turns your 2v1 gank into a double kill. The enemy top laner has acquired your <<print $jungle_buff>> buff and a large gold advantage, which will allow her to dominate the lane. [[Your irritable teammate is not pleased...|Everybody Raging]]<<endreplace>>\n<<else>>\nYou race over to bottom lane to try and stop the bleeding. The enemy duo are zoning out your teammates with their early advantage. You hastily rush in with your <<print $jungle_cc>>, <<replace>>but...<<gains>>\n\nThe enemy Hecarim races into lane at the exact same moment, distracting your teammates. Their bot duo focus their damage on you, granting another kill and <<print $jungle_buff>> buff to their AD carry. The situation in bot lane just got dire; [[your irritable teammate is not pleased...|Everybody Raging]]<<endreplace>>\n<<endif>>
<html><img src="abilities/piltover.png" alt="Piltover Peacemaker" /></html>\n\nThe enemy duo are relentless, artfully timing their skillshots between tower shots and whittling down your health. Without early defensive stats, you simple cannot trade damage effectively. Before long, you and your teammate are forced to recall back to base and heal. The enemy duo demolish the tower in your absence, giving their team control of bot lane. [[Will your ADC fall behind?|Bot Lane MIA]]
<html><div class="champ-background" style="background-image: url(splash/sona.png);">\n<h1>Fuck yeah Sona!</h1>\n<p class="champ-description">Sona may have less HP than a minion at level 1, but her inherent vulnerability is a tradeoff for incredible team utility. Her abilities not only poke and heal, but also provide lingering stat buffs for all nearby allies. With the right positioning, her ultimate Crescendo can lock up the entire enemy team.</p>\n<p><a class="internalLink" href="#" onclick="javascript:state.display('Support Game Start', this); return false;">Alright, let's do this.</a></p>\n</div></html>\n<<set $champ = "Sona">>
try {\n version.extensions['preload'] = {\n major: 1,\n minor: 0,\n revision: 0\n };\n macros['preload'] = {\n init: function() {\n if (this.images == null) {\n this.images = new Object();\n this.images.initial = new Array(\n "ranked.png",\n "match_found.png",\n "lanes.png",\n "champs/leesin.png",\n "champs/vi.png",\n "champs/volibear.png",\n "champs/ashe.png",\n "champs/corki.png",\n "champs/twitch.png",\n "champs/sona.png",\n "champs/taric.png",\n "champs/thresh.png",\n "defeat.png"\n );\n this.images.top = new Array(\n "champs/riven.png",\n "champs/shen.png",\n "champs/singed.png",\n "splash/riven.png",\n "splash/shen.png",\n "splash/singed.png"\n );\n this.images.mid = new Array(\n "champs/ahri.png",\n "champs/kassadin.png",\n "champs/orianna.png",\n "splash/ahri.png",\n "splash/kassadin.png",\n "splash/orianna.png"\n );\n this.images.jungle = new Array(\n "splash/leesin.png",\n "splash/vi.png",\n "splash/volibear.png",\n "items/huntersmachete.png",\n "abilities/resonatingstrike.png",\n "abilities/vaultbreaker.png",\n "abilities/rollingthunder.png",\n "jungle/golem.png",\n "jungle/golem2.jpg",\n "jungle/lizard.png",\n "jungle/lizard2.jpg"\n );\n this.images.adc = new Array(\n "splash/ashe.png",\n "splash/corki.png",\n "splash/twitch.png",\n "items/doransblade.png",\n "abilities/cocoon.png",\n "abilities/zenithblade.png",\n "doublekill.png",\n "jungle/dragon.jpg"\n );\n this.images.support = new Array(\n "splash/sona.png",\n "splash/taric.png",\n "splash/thresh.png",\n "sr_start.png",\n "items/doransshield.png",\n "items/stealthward.png",\n "abilities/bearstance.png",\n "abilities/rocketgrab.png",\n "abilities/piltover.png",\n "abilities/elasticslingshot.png",\n "doublekill.png",\n "jungle/dragon.jpg"\n );\n this.images.ending = new Array(\n "defeat_series.png",\n "uninstall.png"\n );\n }\n },\n handler: function(place, macroName, params, parser) {\n // initialize the arrays\n this.init();\n\n // preload all the images for the given section\n var toLoad = this.images[params[0]]\n for (i = 0; i < toLoad.length; ++i) {\n var temp = new Image();\n temp.src = toLoad[i];\n }\n },\n images: null,\n };\n} catch (e) {\n throwError(place, "Preload Macro Error: " + e.message);\n}
You decide to play aggressively and push the wave towards the enemy base. While risky, forcing them to farm under their tower will deny some of their minion gold. The XP advantage can also afford opportunities for advantageous 2v2 fights.\n\nAs you're attacking the minions, <<print $allysupport>> assists you by depleting her mana pool as quickly as possible, ineffectually throwing skillshots towards the enemy team. Your teammate follows your aggressively lead with inadvisable zeal, roaming deep into the side bushes. <<replace>>It's only a matter of time before...<<gains>>\n\n<html><img src="abilities/zenithblade.png" alt="Zenith Blade" /></html>\n\nThe enemy Leona lands Zenith Blade on <<print $allysupport>>. The enemy AD carry quickly focuses your out-of-position support, granting them first blood. [[Overall, an unfortunate early setback.|Bot Lane MIA]]<<endreplace>>
<<set $jungle_mob = "Ancient Golem">><<set $jungle_buff = "blue">><<set $jungle_other_buff = "red">><<display "Jungle Start">>
<html><img src="abilities/elasticslingshot.png" alt="Elastic Slingshot" /></html>\n\nThe enemy Zac suddenly flies out of the jungle, diving towards you under your turret. He lands his crowd control, the enemy duo focus their damage, and together they quickly secure first blood. Hopelessly outnumbered, your ADC watches them take down your tower and harmlessly retreats back to base. They have a significant gold lead in bot lane, [[will their ADC start to snowball?|Bot Lane MIA]]
<html><img src="jungle/lizard2.jpg" alt="Lizard Elder" /></html>
You decide you'd rather not risk a ranked loss by calling a troll's bluff. You relinquish your call on <<print $your_role>> lane and opt to fill whatever role is needed.\n\nInvariably, this leaves you with the least popular position: <<replace>>support.<<gains>> <<display "Call Support 2">><<endreplace>>
try {\n version.extensions['randomnumber'] = { major:1, minor:0, revision:0 };\n macros['randomnumber'] = {\n handler: function(place, macroName, params, parser) {\n if (params[0] === undefined) params[0] = 0;\n if (params[1] === undefined) params[1] = 1;\n var n = Math.round(Math.random()*params[1] + params[0]);\n insertText(place, n);\n },\n };\n} catch(e) {\n throwError(place,"randomnumber error: "+e.message); \n}
<html><img src="uninstall.png" alt="Uninstalling" /></html>\n<<timedcontinue 2.5s>>\n<html><a class="internalLink" href="#" onclick="javascript:state.restart(); return false;">Reinstall and play again?</a></html>
You decide to pick up a defensive item; you can't risk giving kills to the enemy duo. Doran's Shield should help keep you safe and improve your ability to trade damage in lane. With any luck, this small stat advantage will allow you to push your opponent out of lane and deny them from farming.\n\n<html><img src="items/doransshield.png" width="540" alt="Doran's Shield" /></html>\n\n<<set $support_item = "shield">><<display "Support Start Lane">>
<html>\n<a href="#" onclick="javascript:state.display('Choose Sona', this); return false;"><img src="champs/sona.png" /></a>\n<a href="#" onclick="javascript:state.display('Choose Taric', this); return false;"><img src="champs/taric.png" /></a>\n<a href="#" onclick="javascript:state.display('Choose Thresh', this); return false;"><img src="champs/thresh.png" /></a>\n</html>
<html><div class="champ-background" style="background-image: url(splash/vi.png);">\n<h1>Fuck yeah Vi!</h1>\n<p class="champ-description">With high damage, mobility and tankiness, there isn't much not to like about Vi (unless you're on the other team). Assault & Battery lets you dive through their entire front line and single out enemy carries.</p>\n<p><a class="internalLink" href="#" onclick="javascript:state.display('Jungle Game Start', this); return false;">Alright, let's do this.</a></p>\n</div></html>\n<<set $champ = "Vi">><<set $jungle_cc = "Vault Breaker">>
by Matthew Gallant
<html><img src="abilities/vaultbreaker.png" alt="Vault Breaker" /></html>
<<set $jungle_gank_lane = "bottom">>Getting a double kill in bot would really get the lane going. You ping the lane and sneak your way over through the river. <<replace>>Do they see me coming?<<gains>\n\nUnfortunately, the enemy duo back off as soon as you get close. They must have the lane warded, you're wasting your time here.\n\n[[Oh well, where to next?|Jungle Fail]]<<endreplace>>\n<<set $jungle_action = "ganking bot lane">>\n<<set $jungle_fail_action = "roamed top & secured first blood for their Riven">>\n<<set $jungle_losing_lane = "top">>
<html><div class="champ-background" style="background-image: url(splash/leesin.png);">\n<h1>Fuck yeah Lee Sin!</h1>\n<p class="champ-description">InSec, Bengi, Amazing; pro League junglers are often defined by their ability to play Lee Sin. Only those with exceptional mechanical skill can harness his mobility, unpredictability and strength. With any luck, you'll be making some moves for the highlight reel.</p>\n<p><a class="internalLink" href="#" onclick="javascript:state.display('Jungle Game Start', this); return false;">Alright, let's do this.</a></p>\n</div></html>\n<<set $champ = "Lee Sin">><<set $jungle_cc = "Resonating Strike">>
<<preload "initial">><<display Matchmaking>>
Unfortunately, while you were busy <<print $jungle_action>>, the enemy jungler <<print $jungle_fail_action>>. An early setback like this can snowball into a lost game, but you're certain that your team can pull it together. However, one teammate does not share your confidence...\n\n''some_jerk77 :'' gg, noob jungler\n\nBad players always blame the jungler for their mistakes. You try to ignore your raging teammate and focus on retaking the advantage. Where should you go next?\n\n[[Help the lane that's losing|Jungle Help Hard Lane]]\n<<if $jungle_gank_lane eq "top">>\n[[Continue pressuring top lane|Jungle Help Easy Lane]]\n<<else if $jungle_gank_lane eq "mid">>\n[[Continue pressuring mid lane|Jungle Help Easy Lane]]\n<<else if $jungle_gank_lane eq "bottom">>\n[[Continue pressuring bottom lane|Jungle Help Easy Lane]]\n<<else>>\n[[Apply pressure in bottom lane|Jungle Help Easy Lane]]\n<<endif>><<endreplace>>
You take a look at your friend list. Everyone you know is either offline or already in a match. [[Solo queue it is.|Matchmaking Solo]]
You call your desired role in team chat, and your teammates follow suit. Jungle, AD carry and <<if $your_role eq "top">>mid<<else>>top<<endif>> are claimed in quick succession. The player with last pick remains conspicuously silent, <<replace>>until...<<gains>>\n\n''some_jerk44 :'' i want <<print $your_role>>\n''some_jerk44 :'' i am platinum rank, this my smurf account\n\nTraditionally, pick order in the draft is used to resolve such disputes. As first pick, you have the right to play whatever role you'd like. Plus you have serious doubts as to the veracity of alleged platinum account. How should you respond?\n\n<<if $your_role eq "top">>\n[[I have first pick, I'm playing top|Insist Solo]]\n<<else>>\n[[I have first pick, I'm playing mid|Insist Solo]]\n<<endif>>\n[[*sigh* I'll just fill whatever we need|Fill Begrudging]]<<endreplace>>
<<print tale.get($jungle_mob).text>>\n\nYou ping the <<print $jungle_mob>> and ask your mid laner to help get you started. You roam back and forth in the bushes, apprehensive of a level 1 invasion. The game starts quietly though, and you secure the <<print $jungle_buff>> buff without incident.\n\nLooking to the minimap, you notice that the enemy top laner has already pushed the lane past the river. What should you do next?\n\n[[Help top lane|Jungle Gank Top]]\n[[Help mid lane|Jungle Gank Mid]]\n[[Help bot lane|Jungle Gank Bot]]\n[[Continue jungling|Jungle Farm]]
.revision-span-in {opacity: 0;}\n.revision-span:not(.revision-span-out) {transition: 1s; -webkit-transition: 1s;}\n.revision-span-out {position:absolute; opacity: 0;}
.champ-background {background-repeat: no-repeat; background-size: contain; min-height: 540px}\n.champ-description {max-width:500px;}
<html><img src="defeat_series.png" alt="Promotion Series Loss" usemap="#defeat_series" />\n<map name="defeat_series"><area shape="rect" coords="315,253,411,279" alt="OK" href="#" onclick="javascript:state.display('Uninstall', this); return false;"></map></html>
An unseen announcer greets you: "Welcome to Summoner's Rift!" You grab a stalwart Doran's Blade and run towards the bottom lane.\n\n<html><img src="items/doransblade.png" /></html>\n\nYou are accompanied by your lane partner, a support champion whose goal is to help you stay in lane and outfarm the opposition. Your teammate has chosen <<cyclinglink $allysupport "Nidalee" "Lux" "Anivia">>, the champion of choice for players who don't like playing support. <<replace>>Not a good sign.<<gains>>\n\nThe opposing minion waves collide, and you cautiously advance. How should you play?\n\n[[Play aggressively, push the lane|ADC Push]]\n[[Play safely, just go for last hits|ADC Safe]]<<endreplace>>
Ignoring your ill-mannered teammate for the moment, your thoughts turn to champion selection. Who would you like to play in <<print $your_role>> lane?\n\n<<if $your_role eq "top">>\n<<display "Top Lane Champions">>\n<<else>>\n<<display "Mid Lane Champions">>\n<<endif>>
You optimistically lock in <<print $champ>>, but the situation does not improve. In a rage, your troll teammate employs all the misspelled profanity in his limited vocabulary. When it's his turn to pick a champion, he locks in <<cyclinglink "Heimerdinger" "Sejuani" "Viktor" "Galio">> with <<cyclinglink "Clairvoyance & Heal" "Clarity & Teleport" "Smite & Revive">>.\n\nIt appears your boorish teammate intends to make good on his threat of intentionally throwing the game. It may be preferable to close the client and dodge the game. You'll take a small rank penalty, but you'll save yourself twenty minutes of frustration in a guaranteed loss. What will you do?\n\n[[Dodge the game, I don't want to play with this troll|Dodge Troll]]\n[[Call the troll's bluff, nobody likes to lose|Insist Solo 4]]
A few seconds before the match begins...\n\n''Game Alert: some_jerk44 has left during champion selection and you have been placed back in the matchmaking queue.''\n\n<html><a class="internalLink" href="#" onclick="javascript:state.restart(); return false;">Good riddance...</a></html>
<html><div class="champ-background" style="background-image: url(splash/ahri.png);">\n<h1>Fuck yeah Ahri!</h1>\n<p class="champ-description">Ahri can snare opponents with her Charm, then instantly melt them with her incredible magic damage. Spirit Rush gives her ridiculous mobility in teamfights, and she has excellent AOE damage and crowd control for an assassin.</p>\n<p><a class="internalLink" href="#" onclick="javascript:state.display('Insist Solo 3', this); return false;">Awesome, I wonder what champs my allies will pick.</a></p>\n</div></html>\n<<set $champ = "Ahri">>
<html>\n<a href="#" onclick="javascript:state.display('Choose Ashe', this); return false;"><img src="champs/ashe.png" /></a>\n<a href="#" onclick="javascript:state.display('Choose Corki', this); return false;"><img src="champs/corki.png" /></a>\n<a href="#" onclick="javascript:state.display('Choose Twitch', this); return false;"><img src="champs/twitch.png" /></a>\n</html>
<html>\n<a href="#" onclick="javascript:state.display('Choose Lee Sin', this); return false;"><img src="champs/leesin.png" /></a>\n<a href="#" onclick="javascript:state.display('Choose Vi', this); return false;"><img src="champs/vi.png" /></a>\n<a href="#" onclick="javascript:state.display('Choose Volibear', this); return false;"><img src="champs/volibear.png" /></a>\n</html>
After <<randomnumber 30 50>> seconds of matchmaking...\n\n<html>\n<img src="match_found.png" usemap="#solo" alt="Match Found" />\n<map name="solo">\n <area shape="rect" coords="208,250,305,285" alt="Accept" href="#" onclick="javascript:state.display('Champion Select', this); return false;">\n <area shape="rect" coords="395,250,495,285" alt="Decline" href="#" onclick="javascript:state.restart(); return false;">\n</map></html>
You and your lane partner make your way over to the bottom lane. Your job is to direct as much gold and XP to <<cyclinglink "your AD carry" "Ashe" "Caitlyn" "Corki" "Draven" "Ezreal" "Graves" "Kog'Maw" "Miss Fortune" "Quinn" "Sivir" "Tristana" "Twitch" "Varus" "Vayne" "Urgot" "Teemo" end>> as possible. Though weak and vulnerable now, a well-fed ADC can secure victory for the entire team in the late game.\n\nThe opposing minion waves collide, and you cautiously advance. How should you play?\n\n[[Poke the enemy laners, playing aggressively will deny them gold|Support Push]]\n[[Stay back and avoid engaging, just let your ADC farm|Support Safe]]
<html><div class="champ-background" style="background-image: url(splash/volibear.png);">\n<h1>Fuck yeah Volibear!</h1>\n<p class="champ-description">Volibear's jungle ganks are a terror; catching an out of position laner with Rolling Thunder will just about guarantee a kill. His abilities scale with his health bar, and the damage from his Thunder Claws can bounce to strike enemies in the back line.</p>\n<p><a class="internalLink" href="#" onclick="javascript:state.display('Jungle Game Start', this); return false;">Alright, let's do this.</a></p>\n</div></html>\n<<set $champ = "Volibear">><<set $jungle_cc = "Rolling Thunder">>
You grab a pair of Stealth Wards and an Ancient Coin. Though you'd like to have some armour, you recognize that the vision granted by wards is the most effective defense of all. You'll be able to spot when the enemy jungler or mid laner is roaming towards a bot lane looking for a kill, and retreat beneath the safety of your tower.\n\n<html><img src="items/stealthward.png" width="540" alt="Stealth Ward" /></html>\n\n<<set $support_item = "wards">><<display "Support Start Lane">>
<html>\n<a href="#" onclick="javascript:state.display('Choose Ahri', this); return false;"><img src="champs/ahri.png" /></a>\n<a href="#" onclick="javascript:state.display('Choose Kassadin', this); return false;"><img src="champs/kassadin.png" /></a>\n<a href="#" onclick="javascript:state.display('Choose Orianna', this); return false;"><img src="champs/orianna.png" /></a>\n</html>
<html>\n<a href="#" onclick="javascript:state.display('Choose Riven', this); return false;"><img src="champs/riven.png" /></a>\n<a href="#" onclick="javascript:state.display('Choose Shen', this); return false;"><img src="champs/shen.png" /></a>\n<a href="#" onclick="javascript:state.display('Choose Singed', this); return false;"><img src="champs/singed.png" /></a>\n</html>
// Timed Goto macro by Leon Arnott\n// http://www.glorioustrainwrecks.com/node/5108\nversion.extensions.timedgotoMacro = { major:1, minor:2, revision:0 };\nmacros["goto"] = macros.timedgoto = {\n timer: null,\n handler: function(a, b, c, d) {\n function cssTimeUnit(s) {\n if (typeof s == "string") {\n if (s.slice(-2).toLowerCase() == "ms") {\n return +(s.slice(0, -2)) || 0\n } else {\n if (s.slice(-1).toLowerCase() == "s") {\n return +(s.slice(0, -1)) * 1000 || 0\n }\n }\n }\n throwError(a, s + " isn't a CSS time unit");\n return 0\n }\n var t, d, m, s;\n t = c[c.length - 1];\n d = d.fullArgs();\n m = 0;\n if (b != "goto") {\n d = d.slice(0, d.lastIndexOf(t));\n m = cssTimeUnit(t)\n }\n d = eval(Wikifier.parse(d));\n if (d + "" && state && state.init) {\n if (macros["goto"].timer) {\n clearTimeout(macros["goto"].timer)\n }\n s = state.history[0].passage.title;\n macros["goto"].timer = setTimeout(function() {\n if (state.history[0].passage.title == s) {\n state.display(d, a)\n }\n }, m)\n }\n }\n};
The middle lane is short, which makes it the relatively safe. Its central location provides opportunities to roam around the map and assist your teammates. In the current meta, an AP mage or assassin is usually picked for this lane.\n\n<<set $your_role = "mid">><<preload "mid">><<display "Call Solo">>
You position yourself ahead of your ADC to zone out the enemy duo, but find that you're taking more damage than you're dishing out. A couple of bad trades take out three quarters of your healthbar, forcing you to recall back to base and heal up. Unfortunately, <<replace>>in your absence...<<gains>>\n\n<html><img src="abilities/rocketgrab.png" alt="Rocket Grab" /></html>\n\nThe enemy Blitzcrank lands a hook on your solo lane mate. Without your protection, the enemy duo pounce on your AD carry and easily secure first blood. They have a significant gold lead in bot lane, [[will their ADC start to snowball?|Bot Lane MIA]]<<endreplace>>
One of your teammates takes offense at your performance, and chimes in unhelpfully:\n\n''some_jerk77 :'' gg, noob bot lane\n\nYou spend your meager gold on <<if $your_role eq "adc">><<cyclinglink "a second Doran's Blade" "Boots of Speed" "a couple of of wards">><<else>><<cyclinglink "a few more wards" "Boots of Speed" "a Ruby Crystal">><<endif>> and start running back into lane. You lost track of the enemy duo while you were shopping; they're nowhere to be seen on the map. You fear that they may have joined their jungler in taking down the dragon, which would expand their early gold lead.\n\n<html><img src="jungle/dragon.jpg" alt="Dragon" /></html>\n\n[[Warn your teammates and try to head them off|Bot Lane Dragon]]\n[[You're in no position to contest dragon, just head back to lane|Bot Lane Return]]
<<set $jungle_gank_lane = "top">><<set $jungle_gank_target = "Darius">><<set $jungle_action = "ganking top lane">><<display "Jungle Gank Solo">>
// Combined Replace Macro Set by Leon Arnott\n// http://www.glorioustrainwrecks.com/node/5462\n(function() {\n version.extensions.replaceMacrosCombined = {\n major: 1,\n minor: 1,\n revision: 2\n };\n var nullobj = {\n handler: function() {}\n };\n\n function showVer(n, notrans) {\n if (!n) {\n return\n }\n n.innerHTML = "";\n new Wikifier(n, n.tweecode);\n n.setAttribute("data-enabled", "true");\n n.style.display = "inline";\n n.classList.remove("revision-span-out");\n if (!notrans) {\n n.classList.add("revision-span-in");\n if (n.timeout) {\n clearTimeout(n.timeout)\n }\n n.timeout = setTimeout(function() {\n n.classList.remove("revision-span-in");\n n = null\n }, 1)\n }\n }\n\n function hideVer(n, notrans) {\n if (!n) {\n return\n }\n n.setAttribute("data-enabled", "false");\n n.classList.remove("revision-span-in");\n if (n.timeout) {\n clearTimeout(n.timeout)\n }\n if (!notrans) {\n n.classList.add("revision-span-out");\n n.timeout = setTimeout(function() {\n if (n.getAttribute("data-enabled") == "false") {\n n.classList.remove("revision-span-out");\n n.style.display = "none";\n n.innerHTML = ""\n }\n n = null\n }, 1000)\n } else {\n n.style.display = "none";\n n.innerHTML = "";\n n = null\n }\n }\n\n function tagcontents(b, starttags, desttags, endtags, k) {\n var l = 0,\n c = "",\n tg, a, i;\n\n function tagfound(i, e) {\n for (var j = 0; j < e.length; j++) {\n if (a.indexOf("<<" + e[j], i) == i) {\n return e[j]\n }\n }\n }\n a = b.source.slice(k);\n for (i = 0; i < a.length; i++) {\n if (tg = tagfound(i, starttags)) {\n l++\n } else {\n if ((tg = tagfound(i, desttags)) && l == 0) {\n b.nextMatch = k + i + tg.length + 4;\n return [c, tg]\n } else {\n if (tg = tagfound(i, endtags)) {\n l--;\n if (l < 0) {\n return null\n }\n }\n }\n }\n c += a.charAt(i)\n }\n return null\n }\n var begintags = [];\n var endtags = [];\n\n function revisionSpanHandler(g, e, f, b) {\n var k = b.source.indexOf(">>", b.matchStart) + 2,\n vsns = [],\n vtype = e,\n flen = f.length,\n becomes, c, cn, m, h, vsn;\n\n function mkspan(vtype) {\n h = insertElement(m, "span", null, "revision-span " + vtype);\n h.setAttribute("data-enabled", false);\n h.style.display = "none";\n h.tweecode = "";\n return h\n }\n if (this.shorthand && flen) {\n while (f.length > 0) {\n vsns.push([f.shift(), (this.flavour == "insert" ? "gains" : "becomes")])\n }\n } else {\n if (this.flavour == "insert" || (this.flavour == "continue" && this.trigger == "time")) {\n vsns.push(["", "becomes"])\n }\n } if (this.flavour == "continue" && flen) {\n b.nextMatch = k + b.source.slice(k).length;\n vsns.push([b.source.slice(k), vtype])\n } else {\n becomes = ["becomes", "gains"];\n c = tagcontents(b, begintags, becomes.concat(endtags), endtags, k);\n if (c && endtags.indexOf(c[1]) == -1) {\n while (c) {\n vsns.push(c);\n c = tagcontents(b, begintags, becomes, endtags, b.nextMatch)\n }\n c = tagcontents(b, begintags, ["end" + e], endtags, b.nextMatch)\n }\n if (!c) {\n throwError(g, "can't find matching end" + e);\n return\n }\n vsns.push(c);\n if (this.flavour == "continue") {\n k = b.nextMatch;\n b.nextMatch = k + b.source.slice(k).length;\n vsns.push([b.source.slice(k), ""])\n }\n } if (this.flavour == "remove") {\n vsns.push(["", "becomes"])\n }\n cn = 0;\n m = insertElement(g, "span", null, e);\n m.setAttribute("data-flavour", this.flavour);\n h = mkspan("initial");\n vsn = vsns.shift();\n h.tweecode = vsn[0];\n showVer(h, true);\n while (vsns.length > 0) {\n if (vsn) {\n vtype = vsn[1]\n }\n vsn = vsns.shift();\n h = mkspan(vtype);\n h.tweecode = vsn[0]\n }\n if (typeof this.setup == "function") {\n this.setup(m, g, f)\n }\n }\n\n function quantity(m) {\n return (m.children.length - 1) + (m.getAttribute("data-flavour") == "remove")\n }\n\n function revisionSetup(m, g, f) {\n m.className += " " + f[0].replace(" ", "_")\n }\n\n function keySetup(m, g, f) {\n var fl = this.flavour,\n key = f[0];\n m.setEventListener("keydown", function l(e) {\n var done = !revise("revise", m);\n if (done) {\n m.removeEventListener("keydown", l)\n }\n })\n }\n\n function timeSetup(m, g, f) {\n function cssTimeUnit(s) {\n if (typeof s == "string") {\n if (s.slice(-2).toLowerCase() == "ms") {\n return Number(s.slice(0, -2)) || 0\n } else {\n if (s.slice(-1).toLowerCase() == "s") {\n return Number(s.slice(0, -1)) * 1000 || 0\n }\n }\n }\n throwError(g, s + " isn't a CSS time unit");\n return 0\n }\n var fl = this.flavour;\n var tm = cssTimeUnit(f[0]);\n setTimeout(function timefn() {\n var done = !revise("revise", m);\n if (!done) {\n setTimeout(timefn, tm)\n }\n }, tm)\n }\n\n function hoverSetup(m) {\n var fn, noMouseEnter = (document.head.onmouseenter !== null);\n m.onmouseenter = function() {\n revise("revise", this)\n };\n m.onmouseleave = function() {\n revise("revert", this)\n };\n if (noMouseEnter) {\n fn = function(n) {\n return function(e) {\n if (!event.relatedTarget || (event.relatedTarget != this && !(this.compareDocumentPosition(event.relatedTarget) & Node.DOCUMENT_POSITION_CONTAINED_BY))) {\n this[n]()\n }\n }\n };\n m.onmouseover = fn("onmouseenter");\n m.onmouseout = fn("onmouseleave")\n }\n m = null\n }\n\n function mouseSetup(m) {\n var fl = this.flavour,\n evt = (document.head.onmouseenter === null ? "onmouseenter" : "onmouseover");\n m[evt] = function() {\n var done = !revise("revise", this);\n if (done) {\n this[evt] = null\n }\n };\n m = null\n }\n\n function linkSetup(m, g, f) {\n var fl = this.flavour,\n l = Wikifier.createInternalLink(),\n p = m.parentNode;\n l.className = "internalLink replaceLink";\n p.insertBefore(l, m);\n l.insertBefore(m, null);\n l.onclick = function() {\n var p, done = false;\n if (m && m.parentNode == this) {\n done = !revise("revise", m);\n scrollWindowTo(m)\n }\n if (done) {\n this.parentNode.insertBefore(m, this);\n this.parentNode.removeChild(this)\n }\n };\n l = null\n }\n\n function visitedSetup(m, g, f) {\n var i, done, shv = state.history[0].variables,\n os = "once seen",\n d = (m.firstChild && (this.flavour == "insert" ? m.firstChild.nextSibling : m.firstChild).tweecode);\n shv[os] = shv[os] || {};\n if (d && !shv[os].hasOwnProperty(d)) {\n shv[os][d] = 1\n } else {\n for (i = shv[os][d]; i > 0 && !done; i--) {\n done = !revise("revise", m, true)\n }\n if (shv[os].hasOwnProperty(d)) {\n shv[os][d] += 1\n }\n }\n }[{\n name: "insert",\n flavour: "insert",\n trigger: "link",\n setup: linkSetup\n }, {\n name: "timedinsert",\n flavour: "insert",\n trigger: "time",\n setup: timeSetup\n }, {\n name: "insertion",\n flavour: "insert",\n trigger: "revisemacro",\n setup: revisionSetup\n }, {\n name: "later",\n flavour: "insert",\n trigger: "visited",\n setup: visitedSetup\n }, {\n name: "keyinsert",\n flavour: "insert",\n trigger: "key",\n setup: keySetup\n }, {\n name: "replace",\n flavour: "replace",\n trigger: "link",\n setup: linkSetup\n }, {\n name: "timedreplace",\n flavour: "replace",\n trigger: "time",\n setup: timeSetup\n }, {\n name: "mousereplace",\n flavour: "replace",\n trigger: "mouse",\n setup: mouseSetup\n }, {\n name: "hoverreplace",\n flavour: "replace",\n trigger: "hover",\n setup: hoverSetup\n }, {\n name: "revision",\n flavour: "replace",\n trigger: "revisemacro",\n setup: revisionSetup\n }, {\n name: "keyreplace",\n flavour: "replace",\n trigger: "key",\n setup: keySetup\n }, {\n name: "timedremove",\n flavour: "remove",\n trigger: "time",\n setup: timeSetup\n }, {\n name: "mouseremove",\n flavour: "remove",\n trigger: "mouse",\n setup: mouseSetup\n }, {\n name: "hoverremove",\n flavour: "remove",\n trigger: "hover",\n setup: hoverSetup\n }, {\n name: "removal",\n flavour: "remove",\n trigger: "revisemacro",\n setup: revisionSetup\n }, {\n name: "once",\n flavour: "remove",\n trigger: "visited",\n setup: visitedSetup\n }, {\n name: "keyremove",\n flavour: "remove",\n trigger: "key",\n setup: keySetup\n }, {\n name: "continue",\n flavour: "continue",\n trigger: "link",\n setup: linkSetup\n }, {\n name: "timedcontinue",\n flavour: "continue",\n trigger: "time",\n setup: timeSetup\n }, {\n name: "mousecontinue",\n flavour: "continue",\n trigger: "mouse",\n setup: mouseSetup\n }, {\n name: "keycontinue",\n flavour: "continue",\n trigger: "key",\n setup: keySetup\n }, {\n name: "cycle",\n flavour: "cycle",\n trigger: "revisemacro",\n setup: revisionSetup\n }, {\n name: "mousecycle",\n flavour: "cycle",\n trigger: "mouse",\n setup: mouseSetup\n }, {\n name: "timedcycle",\n flavour: "cycle",\n trigger: "time",\n setup: timeSetup\n }, {\n name: "keycycle",\n flavour: "replace",\n trigger: "key",\n setup: keySetup\n }].forEach(function(e) {\n e.handler = revisionSpanHandler;\n e.shorthand = (["link", "mouse", "hover"].indexOf(e.trigger) > -1);\n macros[e.name] = e;\n macros["end" + e.name] = nullobj;\n begintags.push(e.name);\n endtags.push("end" + e.name)\n });\n\n function insideDepartingSpan(elem) {\n var r = elem.parentNode;\n while (!r.classList.contains("passage")) {\n if (r.classList.contains("revision-span-out")) {\n return true\n }\n r = r.parentNode\n }\n }\n\n function reviseAll(rt, rname) {\n var rall = document.querySelectorAll(".passage ." + rname),\n ret = false;\n for (var i = 0; i < rall.length; i++) {\n if (!insideDepartingSpan(rall[i])) {\n ret = revise(rt, rall[i]) || ret\n }\n }\n return ret\n }\n\n function revise(rt, r, notrans) {\n var ind2, curr, next, ind = -1,\n rev = (rt == "revert"),\n rnd = (rt.indexOf("random") > -1),\n fl = r.getAttribute("data-flavour"),\n rc = r.childNodes,\n cyc = (fl == "cycle"),\n rcl = rc.length - 1;\n\n function doToGainerSpans(n, fn) {\n for (var k = n - 1; k >= 0; k--) {\n if (rc[k + 1].classList.contains("gains")) {\n fn(rc[k], notrans)\n } else {\n break\n }\n }\n }\n for (var k = 0; k <= rcl; k++) {\n if (rc[k].getAttribute("data-enabled") == "true") {\n ind = k\n }\n }\n if (rev) {\n ind -= 1\n }\n curr = (ind >= 0 ? rc[ind] : (cyc ? rc[rcl] : null));\n ind2 = ind;\n if (rnd) {\n ind2 = (ind + (Math.floor(Math.random() * rcl))) % rcl\n }\n next = ((ind2 < rcl) ? rc[ind2 + 1] : (cyc ? rc[0] : null));\n var docurr = (rev ? showVer : hideVer);\n var donext = (rev ? hideVer : showVer);\n var currfn = function() {\n if (!(next && next.classList.contains("gains")) || rnd) {\n docurr(curr, notrans);\n doToGainerSpans(ind, docurr, notrans)\n }\n };\n var nextfn = function() {\n donext(next, notrans);\n if (rnd) {\n doToGainerSpans(ind2 + 1, donext, notrans)\n }\n };\n if (!rev) {\n currfn();\n nextfn()\n } else {\n nextfn();\n currfn()\n }\n return (cyc ? true : (rev ? (ind > 0) : (ind2 < rcl - 1)))\n }\n macros.revert = macros.revise = macros.randomise = macros.randomize = {\n handler: function(a, b, c) {\n var l, rev, rname;\n\n function disableLink(l) {\n l.style.display = "none"\n }\n\n function enableLink(l) {\n l.style.display = "inline"\n }\n\n function updateLink(l) {\n if (l.className.indexOf("random") > -1) {\n enableLink(l);\n return\n }\n var rall = document.querySelectorAll(".passage ." + rname),\n cannext, canprev, i, ind, r, fl;\n for (i = 0; i < rall.length; i++) {\n r = rall[i], fl = r.getAttribute("data-flavour");\n if (insideDepartingSpan(r)) {\n continue\n }\n if (fl == "cycle") {\n cannext = canprev = true\n } else {\n if (r.firstChild.getAttribute("data-enabled") == !1 + "") {\n canprev = true\n }\n if (r.lastChild.getAttribute("data-enabled") == !1 + "") {\n cannext = true\n }\n }\n }\n var can = (l.classList.contains("revert") ? canprev : cannext);\n (can ? enableLink : disableLink)(l)\n }\n\n function toggleText(w) {\n w.classList.toggle(rl + "Enabled");\n w.classList.toggle(rl + "Disabled");\n w.style.display = ((w.style.display == "none") ? "inline" : "none")\n }\n var rl = "reviseLink";\n if (c.length < 2) {\n throwError(a, b + " macro needs 2 parameters");\n return\n }\n rname = c.shift().replace(" ", "_");\n l = Wikifier.createInternalLink(a, null);\n l.className = "internalLink " + rl + " " + rl + "_" + rname + " " + b;\n var v = "";\n var end = false;\n var out = false;\n if (c.length > 1 && c[0][0] == "$") {\n v = c[0].slice(1);\n c.shift()\n }\n switch (c[c.length - 1]) {\n case "end":\n end = true;\n c.pop();\n break;\n case "out":\n out = true;\n c.pop();\n break\n }\n var h = state.history[0].variables;\n for (var i = 0; i < c.length; i++) {\n var on = (i == Math.max(c.indexOf(h[v]), 0));\n var d = insertElement(null, "span", null, rl + ((on) ? "En" : "Dis") + "abled");\n if (on) {\n h[v] = c[i];\n l.setAttribute("data-cycle", i)\n } else {\n d.style.display = "none"\n }\n insertText(d, c[i]);\n l.appendChild(d)\n }\n l.onclick = function() {\n reviseAll(b, rname);\n var t = this.childNodes,\n u = this.getAttribute("data-cycle") - 0,\n m = t.length,\n n, lall, i;\n if ((end || out) && u == m - (end ? 2 : 1)) {\n if (end) {\n n = this.removeChild(t[u + 1]);\n n.className = rl + "End";\n n.style.display = "inline";\n this.parentNode.replaceChild(n, this)\n } else {\n this.parentNode.removeChild(this);\n return\n }\n } else {\n toggleText(t[u]);\n u = (u + 1) % m;\n if (v) {\n h[v] = c[u]\n }\n toggleText(t[u]);\n this.setAttribute("data-cycle", u)\n }\n lall = document.getElementsByClassName(rl + "_" + rname);\n for (i = 0; i < lall.length; i++) {\n updateLink(lall[i])\n }\n };\n l = null\n }\n };\n macros.mouserevise = macros.hoverrevise = {\n handler: function(a, b, c, d) {\n var endtags = ["end" + b],\n evt = (window.onmouseenter === null ? "onmouseenter" : "onmouseover"),\n t = tagcontents(d, [b], endtags, endtags, d.source.indexOf(">>", d.matchStart) + 2);\n if (t) {\n var rname = c[0].replace(" ", "_"),\n h = insertElement(a, "span", null, "hoverrevise hoverrevise_" + rname),\n f = function() {\n var done = !reviseAll("revise", rname);\n if (b != "hoverrevise" && done) {\n this[evt] = null\n }\n };\n new Wikifier(h, t[0]);\n if (b == "hoverrevise") {\n h.onmouseover = f;\n h.onmouseout = function() {\n reviseAll("revert", rname)\n }\n } else {\n h[evt] = f\n }\n h = null\n }\n }\n };\n macros.instantrevise = {\n handler: function(a, b, c, d) {\n reviseAll("revise", c[0].replace(" ", "_"))\n }\n };\n macros.endmouserevise = nullobj;\n macros.endhoverrevise = nullobj\n}());
<html><div class="champ-background" style="background-image: url(splash/orianna.png);">\n<h1>Fuck yeah Orianna!</h1>\n<p class="champ-description">The Lady of Clockwork is a strong pick into any mid lane matchup, pairing team utility with high damage and crowd control. You can shield a teammate with Command: Protect before they dive into the enemy team; they'll be lining up the Shockwave ult for you!</p>\n<p><a class="internalLink" href="#" onclick="javascript:state.display('Insist Solo 3', this); return false;">Awesome, I wonder what champs my allies will pick.</a></p>\n</div></html>\n<<set $champ = "Orianna">>
<<set $jungle_mob = "Lizard Elder">><<set $jungle_buff = "red">><<set $jungle_other_buff = "blue">><<display "Jungle Start">>
<<preload "ending">>The raging continues...\n\n<<if $your_role eq "jungle">>\n''some_jerk77 :'' <<cyclinglink "cant play with this n00b fkin jungler" "you suck, learn to jungle" "gg, noob team" "jungler can't gank, gg">>\n<<else if $your_role eq "adc">>\n''some_jerk77 :'' <<cyclinglink "cant play with this n00b fkin adc" "you suck, learn to adc" "gg, noob team" "bot feeding, gg">>\n<<else>>\n''some_jerk77 :'' <<cyclinglink "cant play with this n00b fkin support" "you suck, learn to support" "gg, noob team" "bot feeding, gg">>\n<<endif>>\n\nThe negative attitude spreads to your teammates. They chime in with their own insults, alternately directed at you or the original rager. Any semblance of team cohesion has been lost; the game might as well be over already. At the 20 minute mark, the surrender vote goes through.\n\n[[You dishonestly type "gg" in all chat.|Defeat]]
<html><div class="champ-background" style="background-image: url(splash/singed.png);">\n<h1>Fuck yeah Singed!</h1>\n<p class="champ-description">Everyone knows you shouldn't chase Singed, yet most opponents can't resist. They'll be choking on your poison cloud while trying in vain to whittle down your massive HP bar. Keep farming into the late game and you'll be the unkillable distraction they can't afford to ignore.</p>\n<p><a class="internalLink" href="#" onclick="javascript:state.display('Insist Solo 3', this); return false;">Awesome, I wonder what champs my allies will pick.</a></p>\n</div></html>\n<<set $champ = "Singed">>
You decide to play cautiously in lane, farming the minions safely so you can scale well into late game. You avoid trading damage with the enemy AD carry, and focus instead of securing every minion kill. The support <<print $allysupport>> matches your prudent stance; she concentrates on depleting her mana pool as quickly as possible by ineffectually lobbing skillshots towards the enemy team.\n\nThe enemy duo employ the opposite strategy, and begin pushing the wave towards you. Their aggressive positioning forces you backwards, making you miss out on XP and gold. The minion wave is soon directly under your tower, complicating your farming task even further. <<replace>>You hold out as best you can, but...<<gains>>\n\n<html><img src="abilities/cocoon.png" alt="Cocoon" /></html>\n\nThe enemy Elise suddenly leaps out of the jungle, diving towards you under your turret. She lands her cocoon, the enemy duo focus their damage, and together they quickly secure first blood. <<print $allysupport>>, being out of mana, watches them take down your tower and harmlessly retreats back to base. [[Overall, an unfortunate early setback.|Bot Lane MIA]]<<endreplace>>
<html><div class="champ-background" style="background-image: url(splash/thresh.png);">\n<h1>Fuck yeah Thresh!</h1>\n<p class="champ-description">Thresh is a champion designed for making big plays. Whether you're rescuing an ally with your lantern, immobilizing their carry with your hook, or dividing their team with your ultimate, you'll always be impactful in team fights.</p>\n<p><a class="internalLink" href="#" onclick="javascript:state.display('Support Game Start', this); return false;">Alright, let's do this.</a></p>\n</div></html>\n<<set $champ = "Thresh">>
<html><div class="champ-background" style="background-image: url(splash/taric.png);">\n<h1>Fuck yeah Taric!</h1>\n<p class="champ-description">While his healing and aura abilities are not to be discounted, Taric is best known for his fearsome low-cooldown stun. Gemcraft and Shatter scale with armour, making his late game damage truly outrageous.</p>\n<p><a class="internalLink" href="#" onclick="javascript:state.display('Support Game Start', this); return false;">Alright, let's do this.</a></p>\n</div></html>\n<<set $champ = "Taric">>
<<set $jungle_gank_lane = "mid">><<set $jungle_gank_target = "Karthus">><<set $jungle_action = "ganking mid lane">><<display "Jungle Gank Solo">>
You'd rather avoid a perilous team fight over dragon; it's more cautious to begin recovering the gold difference by returning bot lane farming. You return to lane and resume <<if $your_role eq "adc">>your quotidian farming<<else>>guarding your ADC<<endif>>.\n\n<html><img src="doublekill.png" width="300" alt="Vayne Double Kill" /></html>\n\nYour focus on securing minion gold is broken by a quick succession of announcements: your team's middle laner and jungler have been slain. You discover that, rather than securing the dragon, the enemy bottom lane duo roamed into middle lane. Your teammates were out of position, so a 3v2 fight in the enemy's favour netted an easy double kill.\n\n[[That could have gone better...|Everybody Raging]]
An unseen announcer greets you: "Welcome to Summoner's Rift!"\n\n<html><img src="items/huntersmachete.png" alt="Hunter's Machete" /></html>\n\nYou grab a Hunter's Machete and as many health potions as you can afford. You'll need all the help you can get to take on the fearsome <<cyclinglink "wolves" "wraiths" "golems">> that lurk between the lanes. Your teammates are counting on you to be fast and mobile, applying lane pressure wherever it's needed.\n\nYou cast you eye towards the jungle and <<replace>>start planning your route.<<gains>> Where should you start?\n\n<html><img src="jungle/golem.png" style="width:60px;height:60px;vertical-align:middle" /></html> [[I need mana, I'll start at Ancient Golem to get the blue buff|Jungle Start Blue]]\n<html><img src="jungle/lizard.png" style="width:60px;height:60px;vertical-align:middle" /></html> [[I want some early aggression, I'll start at Lizard Elder to get the red buff|Jungle Start Red]]<<endreplace>>
<html><div class="champ-background" style="background-image: url(splash/corki.png);">\n<h1>Fuck yeah Corki!</h1>\n<p class="champ-description">Corki is an unusual AD carry, typically picked for his abilities rather than his auto attacks. The poke of Missile Barrage and the armour shred of Gatling Gun are invaluable, and his low cooldowns make building Trinity Force extremely effective.</p>\n<p><a class="internalLink" href="#" onclick="javascript:state.display('ADC Game Start', this); return false;">Alright, let's do this.</a></p>\n</div></html>\n<<set $champ = "Corki">>
You decide to play aggressively and push the wave towards the enemy base. While risky, forcing them to farm under their tower will deny some of their minion gold. The XP advantage can also afford opportunities for advantageous 2v2 fights.\n\n<<if $support_item eq "wards">>\n<<display "Support Push Wards">>\n<<else>>\n<<display "Support Push Shield">>\n<<endif>>
// Cycling Link macro by Leon Arnott\n// http://www.glorioustrainwrecks.com/node/5020\nversion.extensions['cyclingLink'] = { major:3, minor:3, revision:0 };\nmacros.cyclinglink = {\n handler: function(a, b, c) {\n var rl = "cyclingLink";\n\n function toggleText(w) {\n w.classList.remove("cyclingLinkInit");\n w.classList.toggle(rl + "Enabled");\n w.classList.toggle(rl + "Disabled");\n w.style.display = ((w.style.display == "none") ? "inline" : "none")\n }\n switch (c[c.length - 1]) {\n case "end":\n var end = true;\n c.pop();\n break;\n case "out":\n var out = true;\n c.pop();\n break\n }\n var v = "";\n if (c.length && c[0][0] == "$") {\n v = c[0].slice(1);\n c.shift()\n }\n var h = state.history[0].variables;\n if (out && h[v] === "") {\n return\n }\n var l = Wikifier.createInternalLink(a, null);\n l.className = "internalLink cyclingLink";\n l.setAttribute("data-cycle", 0);\n for (var i = 0; i < c.length; i++) {\n var on = (i == Math.max(c.indexOf(h[v]), 0));\n var d = insertElement(null, "span", null, "cyclingLinkInit cyclingLink" + ((on) ? "En" : "Dis") + "abled");\n if (on) {\n h[v] = c[i];\n l.setAttribute("data-cycle", i)\n } else {\n d.style.display = "none"\n }\n insertText(d, c[i]);\n if (on && end && i == c.length - 1) {\n l.parentNode.replaceChild(d, l)\n } else {\n l.appendChild(d)\n }\n }\n l.onclick = function() {\n var t = this.childNodes;\n var u = this.getAttribute("data-cycle") - 0;\n var m = t.length;\n toggleText(t[u]);\n u = (u + 1);\n if (!(out && u == m)) {\n u %= m;\n if (v) {\n h[v] = c[u]\n }\n } else {\n h[v] = ""\n } if ((end || out) && u == m - (end ? 1 : 0)) {\n if (end) {\n var n = this.removeChild(t[u]);\n n.className = rl + "End";\n n.style.display = "inline";\n this.parentNode.replaceChild(n, this)\n } else {\n this.parentNode.removeChild(this);\n return\n }\n return\n }\n toggleText(t[u]);\n this.setAttribute("data-cycle", u)\n }\n }\n};
<<if $jungle_gank_lane eq "top" or $jungle_gank_lane eq "mid">>\nInvading a losing lane is too risky; you decide you'd rather continuing to press your advantage in <<print $jungle_gank_lane>>. When <<print $jungle_gank_target>> gets back to lane, you're already <<replace>>lurking in the bush to greet him.<<gains>>\n\nYou rush in to attempt another 2v1 kill, but the enemy laner nimbly reacts with <<cyclinglink "Flash" "Barrier" "Cleanse" "Ghost">> to escape. Nonetheless, you've applied even more pressure <<print $jungle_gank_lane>> and your teammate can hopefully begin to snowball off it. [[Will this quell your irritable teammate?|Everybody Raging]]<<endreplace>>\n<<else>>\nKnowing that the enemy jungler is on the other side of the map, you commit to making something happen in bottom lane. You sweep out the river with your Sweeping Lens trinket and start setting up an ambush. The enemy bot duo are cautious at first, but soon return to farming minions. <<replace>>They think you've moved on...<<gains>>\n\n<<print tale.get($jungle_cc).text>>\n\nYour persistence has paid off. You signal your teammates and dive onto their AD carry with <<print $jungle_cc>>. The three of you focus your damage for an easy kill, and the enemy support player is forced to escape with Flash. [[Will this quell your irritable teammate?|Everybody Raging]]<<endreplace>>\n<<endif>>
Playing support gives you the best chance of snowballing your lane to victory. Good warding and dragon control should give your team a strategic edge.\n\nTime to choose which champion to play:\n\n<<set $your_role = "support">><<preload "support">><<display "Support Champions">>
You let your teammates choose first, hoping that they'll perform best in comfortable roles.\n\nHowever, that does relegate you to the least popular position: <<replace>>support.<<gains>> <<display "Call Support 2">><<endreplace>>