window.visited = function(e) {\n var ret,c;\n e || (e = state.history[0].passage.title);\n for(ret=c=0; c<state.history.length; c++) {\n if(state.history[c].passage && state.history[c].passage.title == e) {\n ret++;\n }\n }\n return ret;\n}
Villain number four signalled an objection to Helga with his <<replace>>urumi.<<gains>>\n\nAn indian whip sword. <<replace>>A great deal of skill was required to wield it.<<gains>> The sort of thing kept at the back of the shop because customers tended not to buy anything after they'd lost an eye whilst playing with it.<<endreplace>><<endreplace>>\n\n//Ah, a challenge,// thought Helga.\n\n[[• She boldy approached, trusting her armour to deflect his flimsy blade.|Approach Whip]]\n\n[[• She kept her distance, taking a stool for a shield.|Distance Whip]]\n
Helga fed the machine the coins and the chit from the stables it hungered for before dropping to a crouch by the empty bin before the machine. An item dropped out.\n\nOdd.\n\nIt didn't look quite like what she ordered. Its usable condition was also debatable. She breathed a sigh of exasperation. The desire for wine had returned. The inn wasn't far from here, and she could at least try it on there. Perhaps things weren't as bad as they looked.<<set $bra = "internet">>\n\n[[The Inn]]\n
<<set $primarkWares = true>>Under five suits of armour Helga discovered a package.\n\nShe almost launched it into the air, unexpecting its lightness. It was a pack of three breast plates in what was almost her size. She turned it over in her hands and inspected the "metal". Paint. Helga tapped the surface and a hollow donk resounded.\n\nShe turned open mouthed to address an assistant and saw only a queue of impatience leading to a lackadaisical seller.\n\nHelga returned her gaze to the package and saw a tag with a price. An approving sound escaped her.\n\nThat really was cheap.\n\n[[• She joined the queue.|The Queue]]\n\n[[• She returned to the market entrance.|Armoury]]\n
Helga waited Britishly at the back of the queue for a few seconds...<<timedgoto "The Queue Front" 4s >>
She reached the front of the inn and entered an action scene typical of a bar brawl in a Western. The men she had heard from above had thrown Eirik out of a window and beaten some of the regulars. The innocent patrons were vacating the scene like the cockroach infestation in the inn's kitchen would were it discovered. Others took opportunity in the chaos.\n\nA ruffian turned to her with a broken bottle in hand, "well, hello, tchguuraaagggaaghhh!"\n\nHe stumbled back. Helga followed her chop to his throat with a kick to his bladder. The ruffian fell neatly back to sit on a stool before the insult to injury forced him to wet himself.\n\nThe main trouble makers stood before her. She was in the wrong armour but the right decisions may see her through this.<<set $foes = 5>>\n\n[[• She let out a her signature battle cry.|Battle Cry]]\n\n[[• She charged the nearest foe.|Charge]]\n
Our heroine is Helga. Six feet of Nordic awe and terror. She was normally seen astride her stallion Grynt, beheading foes and ululating in a manner that voids bowels more effectively than prunes. The battlefield was her fresco, its plaster the flesh of her enemies.\n\nOn this occasion however she was at the market. Grynt was interned at the stables and her sword rested in its scabbard. She fingered its pommel as she surveyed the armouries before her.\n\nIt had been a rough month for Helga. A stressful relationship and the dubious leadership of several generals had led her to drown her sorrows in wine and food. She'd put on weight. Everyone puts on weight differently: For some it will gather on their waist and bum - making them look like a bowling pin. Others will sprout various chins as their face shrinks within a moon of skin. Helga suffered the dubious luck of fat gathering first on her chest, necessitating the need to buy a new chest plate.\n\n[[Helga headed for the armouries.|Armoury]]\n
Helga sped forward, crashing into her nearest foe. He was heavier than her but her center of balance was lower, the blow lifting him off the ground and sending him flying backwards.<<set $foes-->>\n\n<<if $bra eq "primark">>She looked down at the splintered wood on her new chest plate and breathed a curse. Almost shattered, her stillness the only thing stopping it from completely falling free.<<set $chestPlates-->>\n\n"Hah", said villain number three, "what can protect you no-aaaaarrrggghhhh!"<<set $foes-->>\n\nHelga's kick to the groin was followed by her dashing back to her room. She returned hastily, snapping on her last chest plate. Her enemies were too stunned by her audacity to take advantage of the situation.<<else>>Her armour held. Stupid though she looked, Helga could still tackle people.<<endif>>\n\n[[CRACK!|Whip Crack]]\n
Helga took a moment to take stock of her situation:\n\n<<if $foes gt 1>>She had lost her pride<<endif>><<if $foes lt 2>>She still had her pride<<endif>><<if $foes eq 0>>, gained a bottle of rather nice wine<<endif>><<if $bra eq "primark">>, still had her horse<<if $chestPlates eq 2>>, still had two chest plates<<endif>><<if $chestPlates eq 1>>, had one chest plate left<<endif>><<if $chestPlates eq 0>>, had someone else's clothes<<endif>><<if visited("Enter Grynt")>>, had no money<<endif>><<endif>><<if $bra neq "primark">>, had lost her horse<<endif>><<if $bra eq "selfridges" and visited("Approach Whip")>>, had a nasty scar<<endif>><<if $bra eq "internet" and visited("Battle Cry")>>, had a broken chest plate<<endif>> and had developed a despair of women's fashion.\n\nHelga left the market, eager to return to the battlefield where she belonged.\n\nTHE END.
<<if visited("Internet") eq 1>>\n<<display "Internet 1st">>\n<<else>>\n<<display "Internet 2nd">>\n<<endif>>
Helga was screwed.\n\nHer enemies were still numerous enough to require an annoying amount of text-engine-code for me to illustrate.\n\n[[Eirik entered the bar.|Enter Eirik]]\n
Helga returned to the pile.\n\n<<if $primarkWares>>She picked up the package to appraise it again. No one had come to claim her choice of junk. She could still buy it.\n\n[[• She joined the queue.|The Queue]]<<else>>The excerpt from a teenager's bedroom laundry beckoned.\n\n[[• She pulled up her sleeves and searched through the pile.|Primark Wares]]<<endif>>\n\n[[• She returned to the market entrance.|Armoury]]
<<if $foes eq 4>>Four<<endif>><<if $foes eq 3>>Three<<endif>><<if $foes eq 2>>Two<<endif>> enemies remained.\n\n[[• She threw her sword at her enemies|Sword Throw]]\n\n[[• She whistled for her horse Grynt.|Horse Whistler]]\n
He flicked his sword towards her and on its curling path it <<if $bra eq "selfridges">>slashed her belly.\n\n[[She hastily retreated and picked up a stool as a shield|Distance Whip]].<<endif>><<if $bra eq "primark">>slapped into her chest plate and shattered it.<<set $chestPlates-->>\n\n<<if visited("Charge")>>She had no more chest plates left. Helga took a forgotten jacket for her own and put it on over the slim undershirt preserving her modesty.\n\n<<else>>"Hah", said villain number three, who then crumpled after Helga kicked him in the groin. Interrupting whatever witty comment <<replace>>he was going to say<<gains>> that I couldn't think of whilst writing this<<endreplace>>.<<set $foes-->>\n\nHelga then dashed back to her room. She returned hastily, snapping on her last chest plate. Her enemies were too stunned by her audacity to take advantage of the situation.<<endif>>\n\n<<replace>>Villain number four adjusted his eye patch and then flicked his sword again.<<gains>>\n\nShe neatly parried it. It flicked back on itself and took out its <<replace>>owner's remaining eye.<<gains>> The other he had lost when he'd insisted to the blacksmith he bought the urumi from that he should try it out now that he'd bought it.<<endreplace>>\n\n[[Helga sized up the rest of her enemies|Sized Up]]<<set $foes-->><<endreplace>><<endif>><<if $bra eq "internet">>twanged off her armour and into its <<replace>>owner's remaining eye.<<gains>> The other he had lost in <<replace>>a bet.<<gains>> He was able to flick the coin out a glass with his sword but ended up with the coin embedded in <<replace>>his eye.<<gains>> Like his sword, his monetary monocle intimidated many. And like his sword it was utterly impractical.<<endreplace>><<endreplace>><<endreplace>>\n\n[[Helga sized up the rest of her enemies|Sized Up]]<<set $foes-->><<endif>>
As Helga entered she was greeted by a scrawny maiden in petite battle gear. Her waist was exposed and her breast plate seemed ill fitting and needlessly pointy compared to the claustrophopic cage she herself was currently wearing. At least the shop assistant could run away in that thing of hers.\n\n"I require a new breast plate", Helga announced.\n\nThe tone of the command cowed the shop assistant as she looked her customer up and down.\n\n"I, um, I'll see if we have your", the pause continued past rudeness, "size."\n\n[[• She waited.|Selfridges Wares]]\n\n[[• She returned to the market entrance.|Armoury]]\n
Villain number four flicked his sword towards her and she threw the stool at him. His blade bent back and took out his <<replace>>remaining eye.<<gains>> The other he had lost drawing the urumi whilst facing a pirate once. He escaped, never learning from the lesson.<<endreplace>>\n\nHelga had defeated him. <<if $bra eq "internet">>But she'd retreated, putting herself at a disadvantage. She could not move quickly in this ill fitting armour.<<else>> She pushed him aside and approached the remaining villains with confidence.<<endif>><<set $foes-->>\n\n[[Helga sized up the rest of her enemies|Sized Up]]\n
Helga waited Britishly at the back of the queue for a few seconds...\n\n...before marching to the front of it. She rapped the desk with her short sword then threw the exact change just out of the assistant's reach.\n\nHelga left.\n\nShe opted to celebrate by heading to the nearest inn. There she could inspect her bargain in one of their rooms. And perhaps have some wine.<<set $bra = "primark">><<set $chestPlates = 2>>\n\n[[The Inn]]
Fittest
<<once>>A choice of armourers were before her.\n\nHelga only could only afford one <<replace>>bra,<<gains>> I mean chest plate,<<endreplace>> on this occasion. Browsing seemed wise. She surveyed their names. The market had changed since last she was here but the titles on their signs seemed strangely familiar:<<set $bra = "">>\n\n<<endonce>>[[• The Selfish Ridges|Selfridges]]\n\n[[• The Primed Mark|Primark]]\n\n[[• The Interned Net|Internet]]\n
<<if $bra eq "primark">>A distant crash could be heard, then approaching hooves.<<else>>A commotion could be heard far away, but there was no sound of approaching hooves. This didn't look good.<<endif>>\n\nHelga held the remaining foes with her steely gaze.\n\n[[She waited|Wait Grynt]]\n
#sidebar {\n display: none;\n width:5%\n}\nhtml, body {\n background-color: linen;\n}\nbody {\n font-size: 40%;\n}\n#passages{\n margin: 0;\n}\n.passage {\n font-size: 1.2rem;\n color: black;\n background-color: linen;\n font-family: "Book Antiqua", Palatino, Georgia, serif;\n}\na.internalLink, a.externalLink {\n color: darkred;\n}\na.internalLink:hover {\n color: red;\n text-decoration: none;\n}\nhr {\n border: 0;\n border-bottom: grey solid 2px;\n}\n
Villain number five had recovered from Helga's punch. He caught Helga off guard, swinging a club into her chest. Her armour crumpled under the blow as she was knocked off her feet.
Helga at least was wise. Her sword flew into the huge wooden chandelier that <<replace>>dominated the center of the bar.<<gains>> Despite the fact that I made no attempt at a Chekov's Gun for this earlier in the story.<<endreplace>> It crashed down on villain number one and villain number two, effortlessly saving me the task of describing them.<<set $foes -= 2>>
The machine loomed before Helga. Its obstinate display remained where she had left it.\n\n<<if $internetWares>><<set $auction++>><<if $auction gt 3>>She grimaced at the empty space where the promise of a solid purchase had hung.<<endif>><<if $auction eq 3>>Too late. The item had been bought. Helga checked the stock again and somehow this infinitude of sundry offered no replacement.<<endif>><<if $auction eq 2>><<display "Counter Bid">><<endif>><<if $auction eq 1>>The time for bidding had yet to close. Her one penny bid remained. She would have her purchase soon with plenty of funds for <<replace>>things<<gains>> like wine and food<<endreplace>>.<<endif>><<else>>The fog within billowed against the items hanging in space.\n\n[[• She operated the vending machine.|Internet Auction]]<<endif>>\n\n[[• She returned to the market entrance.|Armoury]]
The sword throw is a staple now in many movies and television series. The basic assumption being that the heroes always have the best tools. Therefore those tools must be able to do anything, much like the percussive maintenance of the Fonz. Swords in general are not meant to be thrown.\n\n<<if $bra eq "internet">><<if visited("Distance Whip")>>In Helga's hands however this might have worked.\n\nHer sword nonetheless clattered to the floor a foot short of the villains. //Probably wasn't a good idea that one.//\n\n<<if visited("Battle Cry")>><<display "Broken Armour">><<endif>><<else>><<if visited("Battle Cry")>><<display "Chandelier Drop">>\n\n<<display "Broken Armour">><<else>><<display "Chandelier Drop">><<endif>><<endif>><<else>><<display "Chandelier Drop">>\n\nHelga dusted her hands off. <<if $bra eq "selfridges" and visited("Approach Whip")>>She winced, her adrenaline fading and the pain of the gash on her belly returning. That was going to leave a nasty scar.\n<<endif>><<endif>>\n\n[[Eirik entered the bar.|Enter Eirik]]\n
Helga put her purchase down on the bed and then undid her armour. In the bar to the front of the inn she could <<replace>>hear new customers entering.<<gains>> Her keen senses could pick out at least five of them. They were armed.<<endreplace>>\n\nShe picked up the <<if $bra eq "primark">>package and removed one of the items. Helga noticed it was cracked. She discarded it and took out another - reasonable.<<endif>><<if $bra eq "selfridges">>metal cups, then drew a knife from her boot. With care and diligence she removed the lacy lining. There, it was at least servicable now.<<endif>><<if $bra eq "internet">>chest plate. Her brow furrowed, then relaxed. This was a man's chest plate. An oddly shaped one but certainly not for a woman. She was certain she'd chosen female on the machine.<<endif>>\n\n<<replace>>A discussion could be heard in the bar.<<gains>> Words were not audible but the tone sounded angry. She should perhaps get back into armour.<<endreplace>>\n\nHelga donned her new chest plate and walked to the window to let more light in. <<if $bra eq "primark">>Her chest shone with the same specular glow that a badly painted child's rocking horse would. It was crap. She breathed a sigh before turning towards her old armour.<<endif>><<if $bra eq "selfridges">>Her chest shone like a disco ball. Well at least she could wear it at parties. She looked down to her exposed waist with worry.<<endif>><<if $bra eq "internet">>Her chest felt cramped and the shoulder straps were too far apart. She couldn't fight in this, she wasn't mobile enough. She turned towards her old armour.<<endif>>\n\n<<replace>>CRASH!<<gains>>\n\n[[Her sword drawn Helga forgot her worries and ran out of the room.|Ruckus]]<<endreplace>>
Helga moved a hand to her purse where her coins and the chit from the stables resided. Then ripped the whole thing from her belt before handing it over. \n\nThis ordeal had made her thirsty. The inn was nearby. She knew the owner so perhaps she might be able to ask for credit. And she could at least see how well this bauble fitted her.<<set $bra = "selfridges">>\n\n[[The Inn]]\n
She glanced back out the window to look for Grynt. //Any second now.//<<if $bra eq "primark">><<timedgoto "Enter Grynt" 4s >><<else>><<timedgoto "Screwed" 4s>><<endif>>
Helga entered the Strangled Cat and headed to the side of the bar where the landlord of the place was engaged in a lack of conversation with one of the staple bar supports.\n\nShe had known the owner for at least eight years now. From back when she had been the chief method of evicting unwanted customers. She patted Eirik on the arm and nodded her head towards the rooms to the rear. He acquiesced a head tilt. <<replace>>Their relationship had always been practical.<<gains>> Especially so in the mechanics of this story.<<endreplace>>\n\n[[She entered one of the inn's rooms|Room]]\n
<<if $bra eq "internet">>"uuuuUUUUUUUU...", Helga wheezed. She fought for breath in the full body corset that she currently wore. She raised a fist towards them with one finger extended upwards whilst she took a moment to compose herself.\n\n<<replace>>...<<gains>>\n\nHelga then lifted herself up, caught the eye of the nearest foe and gave him a neat punch to the jaw. He fell back over a table. Not completely out of the fight but giving Helga a chance to focus on the others.\n\n[[CRACK!|Whip Crack]]<<endreplace>><<else>>"uuuuUUUUUURRRRRAAAAAAAAAAAAAAAAAAAAAAAAAHHHHHHH!", Helga screamed before punctuating the cry with a head butt to the nearest foe. It was the sort of terrific blow that had an echo.\n\nThe enemy folded randomly to the floor, a puppet whose strings had just been cut.<<set $foes-->>\n\n[[CRACK!|Whip Crack]]<<endif>>\n
<<if $foes gt 1>>Eirik carried a warhammer. With swift blows he finished the remaining villains\n\n"You never were good at security in my bar", he said.\n\nShe hung her head in shame.<<endif>><<if $foes eq 1>>Helga walked over to Eirik in a friendly manner. Matter of factly delivering an uppercut to the remaining villain on her way. Reaching him she gave him a nod of recognition and he gave a nod in return.<<endif>><<if $foes eq 0>>Eirik looked around at the debris, then at the prone villains, then at Helga.\n\nShe shrugged.\n\nHe walked behind the bar and took out bottle of wine, dusting it off before handing it to Helga. She graciously accepted.\n\n"You look awful in that thing", said Eirik.\n\nShe returned a slow nod.<<endif>>\n\n[[Helga left the inn.|Score]]\n
(function(){version.extensions.replaceMacrosCombined={major:1,minor:0,revision:1};\nvar nullobj={handler:function(){}};function showVer(n,notrans){n.innerHTML="";\nnew Wikifier(n,n.tweecode);n.setAttribute("data-enabled","true");\nn.style.display="inline";n.classList.remove("revision-span-out");\nif(!notrans){n.classList.add("revision-span-in");if(n.timeout){clearTimeout(n.timeout)\n}n.timeout=setTimeout(function(){n.classList.remove("revision-span-in");\nn=null},1)}}function hideVer(n,notrans){n.setAttribute("data-enabled","false");\nn.classList.remove("revision-span-in");if(n.timeout){clearTimeout(n.timeout)\n}if(!notrans){n.classList.add("revision-span-out");n.timeout=setTimeout(function(){if(n.getAttribute("data-enabled")=="false"){n.classList.remove("revision-span-out");\nn.style.display="none";n.innerHTML=""}n=null},1000)}else{n.style.display="none";\nn.innerHTML="";n=null}}function tagcontents(b,starttags,desttags,endtags,k){var l=0,c="",tg,a,i;\nfunction tagfound(i,e){for(var j=0;j<e.length;j++){if(a.indexOf("<<"+e[j],i)==i){return e[j]\n}}}a=b.source.slice(k);for(i=0;i<a.length;i++){if(tg=tagfound(i,starttags)){l++\n}else{if((tg=tagfound(i,desttags))&&l==0){b.nextMatch=k+i+tg.length+4;\nreturn[c,tg]}else{if(tg=tagfound(i,endtags)){l--;if(l<0){return null\n}}}}c+=a.charAt(i)}return null}var begintags=[];var endtags=[];\nfunction revisionSpanHandler(g,e,f,b){var k=b.source.indexOf(">>",b.matchStart)+2,vsns=[],vtype=e,flen=f.length,becomes,c,cn,m,h,vsn;\nfunction mkspan(vtype){h=insertElement(m,"span",null,"revision-span "+vtype);\nh.setAttribute("data-enabled",false);h.style.display="none";h.tweecode="";\nreturn h}if(this.shorthand&&flen){while(f.length>0){vsns.push([f.shift(),(this.flavour=="insert"?"gains":"becomes")])\n}}else{if(this.flavour=="insert"||(this.flavour=="continue"&&this.trigger=="time")){vsns.push(["","becomes"])\n}}if(this.flavour=="continue"&&flen){b.nextMatch=k+b.source.slice(k).length;\nvsns.push([b.source.slice(k),vtype])}else{becomes=["becomes","gains"];\nc=tagcontents(b,begintags,becomes.concat(endtags),endtags,k);\nif(c&&endtags.indexOf(c[1])==-1){while(c){vsns.push(c);c=tagcontents(b,begintags,becomes,endtags,b.nextMatch)\n}c=tagcontents(b,begintags,["end"+e],endtags,b.nextMatch)}if(!c){throwError(g,"can't find matching end"+e);\nreturn}vsns.push(c);if(this.flavour=="continue"){k=b.nextMatch;\nb.nextMatch=k+b.source.slice(k).length;vsns.push([b.source.slice(k),""])\n}}if(this.flavour=="remove"){vsns.push(["","becomes"])}console.log(JSON.stringify(vsns));\ncn=0;m=insertElement(g,"span",null,e);m.setAttribute("data-flavour",this.flavour);\nh=mkspan("initial");vsn=vsns.shift();console.log(e+" "+vsn[0]);\nh.tweecode=vsn[0];showVer(h,true);while(vsns.length>0){if(vsn){vtype=vsn[1]\n}vsn=vsns.shift();h=mkspan(vtype);h.tweecode=vsn[0]}if(typeof this.setup=="function"){this.setup(m,g,f)\n}}function quantity(m){return(m.children.length-1)+(m.getAttribute("data-flavour")=="remove")\n}function revisionSetup(m,g,f){m.className+=" "+f[0].replace(" ","_");\nshowVer(m.firstChild,true)}function keySetup(m,g,f){var fl=this.flavour,key=f[0];\nm.setEventListener("keydown",function l(e){var done=!revise("revise",m);\nif(done){m.removeEventListener("keydown",l)}})}function timeSetup(m,g,f){function cssTimeUnit(s){if(typeof s=="string"){if(s.slice(-2).toLowerCase()=="ms"){return Number(s.slice(0,-2))||0\n}else{if(s.slice(-1).toLowerCase()=="s"){return Number(s.slice(0,-1))*1000||0\n}}}throwError(g,s+" isn't a CSS time unit");return 0}var fl=this.flavour;\nvar tm=cssTimeUnit(f[0]);setTimeout(function timefn(){var done=!revise("revise",m);\nif(!done){setTimeout(timefn,tm)}},tm)}function hoverSetup(m){m.onmouseover=function(){revise("revise",this)\n};m.onmouseout=function(){revise("revert",this)};m=null}function mouseSetup(m){var fl=this.flavour,evt=(window.onmouseenter===null?"onmouseenter":"onmouseover");\nm[evt]=function(){var done=!revise("revise",this);if(done){this[evt]=null\n}};m=null}function linkSetup(m,g,f){var fl=this.flavour,l=Wikifier.createInternalLink(),p=m.parentNode;\nl.className="internalLink replaceLink";p.insertBefore(l,m);l.insertBefore(m,null);\nl.onclick=function(){var p,done=false;if(m&&m.parentNode==this){done=!revise("revise",m);\nscrollWindowTo(m)}if(done){this.parentNode.insertBefore(m,this);\nthis.parentNode.removeChild(this)}};l=null}function visitedSetup(m,g,f){var i,done,shv=state.history[0].variables,os="once seen",d=(m.firstChild&&(this.flavour=="insert"?m.firstChild.nextSibling:m.firstChild).tweecode);\nshv[os]=shv[os]||{};if(d&&!shv[os].hasOwnProperty(d)){shv[os][d]=1\n}else{for(i=shv[os][d];i>0&&!done;i--){done=!revise("revise",m,true)\n}if(shv[os].hasOwnProperty(d)){shv[os][d]+=1}}}[{name:"insert",flavour:"insert",trigger:"link",setup:linkSetup},{name:"timedinsert",flavour:"insert",trigger:"time",setup:timeSetup},{name:"insertion",flavour:"insert",trigger:"revisemacro",setup:revisionSetup},{name:"later",flavour:"insert",trigger:"visited",setup:visitedSetup},{name:"keyinsert",flavour:"insert",trigger:"key",setup:keySetup},{name:"replace",flavour:"replace",trigger:"link",setup:linkSetup},{name:"timedreplace",flavour:"replace",trigger:"time",setup:timeSetup},{name:"mousereplace",flavour:"replace",trigger:"mouse",setup:mouseSetup},{name:"hoverreplace",flavour:"replace",trigger:"hover",setup:hoverSetup},{name:"revision",flavour:"replace",trigger:"revisemacro",setup:revisionSetup},{name:"keyreplace",flavour:"replace",trigger:"key",setup:keySetup},{name:"timedremove",flavour:"remove",trigger:"time",setup:timeSetup},{name:"mouseremove",flavour:"remove",trigger:"mouse",setup:mouseSetup},{name:"hoverremove",flavour:"remove",trigger:"hover",setup:hoverSetup},{name:"removal",flavour:"remove",trigger:"revisemacro",setup:revisionSetup},{name:"once",flavour:"remove",trigger:"visited",setup:visitedSetup},{name:"keyremove",flavour:"remove",trigger:"key",setup:keySetup},{name:"continue",flavour:"continue",trigger:"link",setup:linkSetup},{name:"timedcontinue",flavour:"continue",trigger:"time",setup:timeSetup},{name:"mousecontinue",flavour:"continue",trigger:"mouse",setup:mouseSetup},{name:"keycontinue",flavour:"continue",trigger:"key",setup:keySetup},{name:"cycle",flavour:"cycle",trigger:"revisemacro",setup:revisionSetup},{name:"mousecycle",flavour:"cycle",trigger:"mouse",setup:mouseSetup},{name:"timedcycle",flavour:"cycle",trigger:"time",setup:timeSetup},{name:"keycycle",flavour:"replace",trigger:"key",setup:keySetup}].forEach(function(e){e.handler=revisionSpanHandler;\ne.shorthand=(["link","mouse","hover"].indexOf(e.trigger)>-1);\nmacros[e.name]=e;macros["end"+e.name]=nullobj;begintags.push(e.name);\nendtags.push("end"+e.name)});function reviseAll(rt,rname){var rall=document.querySelectorAll(".passage ."+rname),ret=false;\nfor(var i=0;i<rall.length;i++){ret=ret||revise(rt,rall[i])}return ret\n}function revise(rt,r,notrans){var ind2,curr,next,ind=-1,rev=(rt=="revert"),rnd=(rt.indexOf("random")>-1),fl=r.getAttribute("data-flavour"),rc=r.childNodes,cyc=(fl=="cycle"),rcl=rc.length-1;\nfunction doToGainerSpans(n,fn){for(var k=n-1;k>=0;k--){if(rc[k+1].classList.contains("gains")){fn(rc[k],notrans)\n}else{break}}}for(var k=0;k<=rcl;k++){if(rc[k].getAttribute("data-enabled")=="true"){ind=k\n}}if(rev){ind-=1}curr=(ind>=0?rc[ind]:(cyc?rc[rcl]:null));ind2=ind;\nif(rnd){ind2=(ind+(Math.floor(Math.random()*rcl)))%rcl}next=((ind2<rcl)?rc[ind2+1]:(cyc?rc[0]:null));\nvar docurr=(rev?showVer:hideVer);var donext=(rev?hideVer:showVer);\nif(curr){if(!(next&&next.classList.contains("gains"))||rnd){docurr(curr,notrans);\ndoToGainerSpans(ind,docurr,notrans)}}if(next){donext(next,notrans);\nif(rnd){doToGainerSpans(ind2+1,donext,notrans)}}return(cyc?true:(rev?(ind>0):(ind2<rcl-1)))\n}macros.revert=macros.revise=macros.randomise=macros.randomize={handler:function(a,b,c){var l,rev,rname;\nfunction disableLink(l){l.style.display="none"}function enableLink(l){l.style.display="inline"\n}function updateLink(l){if(l.className.indexOf("random")>-1){enableLink(l);\nreturn}var rall=document.querySelectorAll(".passage ."+rname),cannext,canprev,i,ind,r,fl;\nfor(i=0;i<rall.length;i++){r=rall[i],fl=r.getAttribute("data-flavour");\nif(fl=="cycle"){cannext=canprev=true}else{if(r.firstChild.getAttribute("data-enabled")==!1+""){canprev=true\n}if(r.lastChild.getAttribute("data-enabled")==!1+""){cannext=true\n}}}var can=(l.classList.contains("revert")?canprev:cannext);(can?enableLink:disableLink)(l)\n}function toggleText(w){w.classList.toggle(rl+"Enabled");w.classList.toggle(rl+"Disabled");\nw.style.display=((w.style.display=="none")?"inline":"none")}var rl="reviseLink";\nif(c.length<2){throwError(a,b+" macro needs 2 parameters");return\n}rname=c.shift().replace(" ","_");l=Wikifier.createInternalLink(a,null);\nl.className="internalLink "+rl+" "+rl+"_"+rname+" "+b;var v="";\nvar end=false;var out=false;if(c.length>1&&c[0][0]=="$"){v=c[0].slice(1);\nc.shift()}switch(c[c.length-1]){case"end":end=true;c.pop();break;\ncase"out":out=true;c.pop();break}var h=state.history[0].variables;\nfor(var i=0;i<c.length;i++){var on=(i==Math.max(c.indexOf(h[v]),0));\nvar d=insertElement(null,"span",null,rl+((on)?"En":"Dis")+"abled");\nif(on){h[v]=c[i];l.setAttribute("data-cycle",i)}else{d.style.display="none"\n}insertText(d,c[i]);l.appendChild(d)}l.onclick=function(){reviseAll(b,rname);\nvar t=this.childNodes,u=this.getAttribute("data-cycle")-0,m=t.length,n,lall,i;\nif((end||out)&&u==m-(end?2:1)){if(end){n=this.removeChild(t[u+1]);\nn.className=rl+"End";n.style.display="inline";this.parentNode.replaceChild(n,this)\n}else{this.parentNode.removeChild(this);return}}else{toggleText(t[u]);\nu=(u+1)%m;if(v){h[v]=c[u]}toggleText(t[u]);this.setAttribute("data-cycle",u)\n}lall=document.getElementsByClassName(rl+"_"+rname);for(i=0;i<lall.length;\ni++){updateLink(lall[i])}};disableLink(l);setTimeout(function(){updateLink(l);\nl=null},1)}};macros.mouserevise=macros.hoverrevise={handler:function(a,b,c,d){var endtags=["end"+b],evt=(window.onmouseenter===null?"onmouseenter":"onmouseover"),t=tagcontents(d,[b],endtags,endtags,d.source.indexOf(">>",d.matchStart)+2);\nif(t){var rname=c[0].replace(" ","_"),h=insertElement(a,"span",null,"hoverrevise hoverrevise_"+rname),f=function(){var done=!reviseAll("revise",rname);\nif(b!="hoverrevise"&&done){this[evt]=null}};new Wikifier(h,t[0]);\nif(b=="hoverrevise"){h.onmouseover=f;h.onmouseout=function(){reviseAll("revert",rname)\n}}else{h[evt]=f}h=null}}};macros.endmouserevise=nullobj;macros.endhoverrevise=nullobj\n}());1;
What can only be described as an unmanned vending machine stood before her.\n\nIt was a seven foot tall obelisk with a ship's wheel on its right side. Various levers, dials, hexes, glowing ideograms and indentations adorned the left. Before her a window barred entry to a purple fog that a cloak floated in. To either side of the cloak, stretching back into infinity, were other wearable items. A cosmic coat rack.\n\n[[• She operated the vending machine.|Internet Auction]]\n\n[[• She returned to the market entrance.|Armoury]]\n
@keyframes shakeit {\n 0% { transform: translate(2px, 1px) rotate(0deg); }\n 10% { transform: translate(-1px, -2px) rotate(-1deg); }\n 20% { transform: translate(-3px, 0px) rotate(1deg); }\n 30% { transform: translate(0px, 2px) rotate(0deg); }\n 40% { transform: translate(1px, -1px) rotate(1deg); }\n 50% { transform: translate(-1px, 2px) rotate(-1deg); }\n 60% { transform: translate(-3px, 1px) rotate(0deg); }\n 70% { transform: translate(2px, 1px) rotate(-1deg); }\n 80% { transform: translate(-1px, -1px) rotate(1deg); }\n 90% { transform: translate(2px, 2px) rotate(0deg); }\n 100% { transform: translate(1px, -2px) rotate(-1deg); }\n}\n\n@-o-keyframes shakeit {\n 0% { -o-transform: translate(2px, 1px) rotate(0deg); }\n 10% { -o-transform: translate(-1px, -2px) rotate(-1deg); }\n 20% { -o-transform: translate(-3px, 0px) rotate(1deg); }\n 30% { -o-transform: translate(0px, 2px) rotate(0deg); }\n 40% { -o-transform: translate(1px, -1px) rotate(1deg); }\n 50% { -o-transform: translate(-1px, 2px) rotate(-1deg); }\n 60% { -o-transform: translate(-3px, 1px) rotate(0deg); }\n 70% { -o-transform: translate(2px, 1px) rotate(-1deg); }\n 80% { -o-transform: translate(-1px, -1px) rotate(1deg); }\n 90% { -o-transform: translate(2px, 2px) rotate(0deg); }\n 100% { -o-transform: translate(1px, -2px) rotate(-1deg); }\n}\n\n@-webkit-keyframes shakeit {\n 0% { -webkit-transform: translate(2px, 1px) rotate(0deg); }\n 10% { -webkit-transform: translate(-1px, -2px) rotate(-1deg); }\n 20% { -webkit-transform: translate(-3px, 0px) rotate(1deg); }\n 30% { -webkit-transform: translate(0px, 2px) rotate(0deg); }\n 40% { -webkit-transform: translate(1px, -1px) rotate(1deg); }\n 50% { -webkit-transform: translate(-1px, 2px) rotate(-1deg); }\n 60% { -webkit-transform: translate(-3px, 1px) rotate(0deg); }\n 70% { -webkit-transform: translate(2px, 1px) rotate(-1deg); }\n 80% { -webkit-transform: translate(-1px, -1px) rotate(1deg); }\n 90% { -webkit-transform: translate(2px, 2px) rotate(0deg); }\n 100% { -webkit-transform: translate(1px, -2px) rotate(-1deg); }\n}\n\n@-moz-keyframes shakeit {\n 0% { -moz-transform: translate(2px, 1px) rotate(0deg); }\n 10% { -moz-transform: translate(-1px, -2px) rotate(-1deg); }\n 20% { -moz-transform: translate(-3px, 0px) rotate(1deg); }\n 30% { -moz-transform: translate(0px, 2px) rotate(0deg); }\n 40% { -moz-transform: translate(1px, -1px) rotate(1deg); }\n 50% { -moz-transform: translate(-1px, 2px) rotate(-1deg); }\n 60% { -moz-transform: translate(-3px, 1px) rotate(0deg); }\n 70% { -moz-transform: translate(2px, 1px) rotate(-1deg); }\n 80% { -moz-transform: translate(-1px, -1px) rotate(1deg); }\n 90% { -moz-transform: translate(2px, 2px) rotate(0deg); }\n 100% { -moz-transform: translate(1px, -2px) rotate(-1deg); }\n}\n\n.shake {\n -webkit-animation-name: shakeit;\n -webkit-animation-duration: 0.8s;\n -webkit-transform-origin:50% 50%;\n -webkit-animation-iteration-count: infinite;\n -webkit-animation-timing-function: linear;\n -moz-animation-name: shakeit;\n -moz-animation-duration: 0.8s;\n -moz-transform-origin:50% 50%;\n -moz-animation-iteration-count: infinite;\n -moz-animation-timing-function: linear;\n -o-animation-name: shakeit;\n -o-animation-duration: 0.8s;\n -o-transform-origin:50% 50%;\n -o-animation-iteration-count: infinite;\n -o-animation-timing-function: linear;\n animation-name: shakeit;\n animation-duration: 0.8s;\n transform-origin:50% 50%;\n animation-iteration-count: infinite;\n animation-timing-function: linear;\n}\n.shake{\n display:inline-block\n}
<<if not $selfridgesVisit>>\n<<display "Selfridges 1st">><<set $selfridgesVisit = 1>>\n<<else>>\n<<display "Selfridges 2nd">>\n<<set $selfridgesVisit++>>\n<<endif>>
<<set $internetWares = true; $auction = 0>>Helga gripped the ship's wheel and steered hard to starboard till the selection of wares lead around to chest plates. Then she pulled the lever to <<replace>>change gender.<<gains>> (Yes, you can read that last sentence out of context if it makes the story more entertaining for you.)<<endreplace>\n\nA turn of the dial below and an array of breast plates flew through the mist before stopping on Helga's perfect fit. A description on a brass plate glowed in norse runes next to it.\n\nIt was asking her to bid. An auction.\n\nWell, the minimum bid was a penny. She could at least afford to drop a penny in and see what else was on sale.\n\n[[She put in a penny and returned to the market entrance|Armoury]]\n
The bidding time was almost up.<<set $fuckingTwineAndItsFuckingBugs = true>>\n\nWait.\n\nA counter bid had been placed. Helga dodged to her left to spy the thick thaumaturgic cables leading out of machine's rear. That there were more of these things with other people bidding elsewhere should have been obvious.\n\nIn order to match that bid she would have to sell <<if $selfridgesWares>><<replace>>her horse.<<gains>> (Why does everything have to cost a horse these days she mused.)<<endreplace>><<else>>her horse.<<endif>> She would buy him back eventually of course, but it would still leave her without a mount for a while.\n\n<<replace>>• She moved to place the bid.<<gains>>\n\nBut she didn't trust this machine. That she should find new armour, larger than her previous ample size (trying hard not to make this read like a Sunday Sport readers-letter, bear with me) could only be sophistry.\n\n[[• She placed the bid anyway.|Internet Purchase]]<<endreplace>>
As Helga approached the Primed Mark she saw rows of customer-debris. A glazed and dejected look upon their faces as they sat with their families, exhausted and confused on various ledges or anything that would serve as a stool. They all appeared to have found what they were looking for, or at least had found something. But they had paid with their dignity in full.\n\nShe walked through the entrance, beyond what may have been a host of undead and through to the pile. There were of course hangers and places to hang things. But the items had been discarded as if they had suddenly transformed into snakes. Helga gingerly approached.\n\n[[• She searched through the pile.|Primark Wares]]\n\n[[• Disgusted, she returned to the market entrance.|Armoury]]\n
The shop assistant turned around and jumped with a squeak. She had thought perhaps that the ordeal of entertaining Helga was over.\n\n<<if $selfridgesWares>>[[• She purchased the chest plate.|Selfridges Purchase]]<<else>>"Um, shall I go look for you then?"\n\n[[• She waited.|Selfridges Wares]]<<endif>>\n\n[[• She returned to the market entrance.|Armoury]]
function screenShake(time) {\n console.log(document);\n var el = document.getElementsByClassName('content');\n baz = el;\n console.log(baz[0]);\n el[0].className = el[0].className + ' shake';\n if (time > 0) {\n setTimeout(function () {\n el[0].className = 'content';\n }, time);\n }\n};\n\ntry {\n version.extensions['screenShakeMacro'] = {\n major: 1,\n minor: 0,\n revision: 0\n };\n macros['screenShake'] = {\n handler: function (place, macroName, params, parser) {\n var time = parseInt(params[0]);\n if (typeof time !== 'number') {\n time = 1000;\n }\n \n // we're overriding the fade function. It behaves as usual except it runs screenShake() if time >= 0.\n fade = function (el, options) {\n var current;\n var proxy = el.cloneNode(true);\n var direction = (options.fade == 'in') ? 1 : -1;\n\n el.parentNode.replaceChild(proxy, el);\n\n if (options.fade == 'in') {\n current = 0;\n proxy.style.visibility = 'visible';\n } else current = 1;\n\n setOpacity(proxy, current);\n var interval = window.setInterval(tick, 25);\n\n function tick() {\n current += 0.05 * direction;\n\n setOpacity(proxy, Math.easeInOut(current));\n\n if (((direction == 1) && (current >= 1)) || ((direction == -1) && (current <= 0))) {\n console.log('swapping fader proxy out');\n el.style.visibility = (options.fade == 'in') ? 'visible' : 'hidden';\n proxy.parentNode.replaceChild(el, proxy);\n delete proxy;\n window.clearInterval(interval);\n\n if (options.onComplete) options.onComplete();\n\n if (time >= 0) {\n screenShake(time);\n time = -1;\n }\n\n }\n };\n\n function setOpacity(el, opacity) {\n var percent = Math.floor(opacity * 100);\n\n // IE\n el.style.zoom = 1;\n el.style.filter = 'alpha(opacity=' + percent + ')';\n\n // CSS 3\n el.style.opacity = opacity;\n };\n };\n },\n init: function () {},\n };\n} catch (e) {\n throwError(place, "screenShake Setup Error: " + e.message);\n}
<<set $selfridgesWares = true>>Eventually the assistant returned with something.\n\nHelga held up the gaudy item. It was big, pink and curvy in a way that armour for deflecting swords shouldn't be. It only covered as far as the ribs. Again the shop's theme of neglecting how avoid a spear in the navel. Would a large belt fix that? She eyed the black lace running along the seams of the metal. It looked ... itchy.\n\n"How much?"\n\nThe girl jumped. Then reported the exorbitant price.\n\n"What!? I would have to sell my horse to afford that!"\n\n<<if $fuckingTwineAndItsFuckingBugs>>Why does everything have to cost a horse these days Helga mused. She scowled at the girl. The<<else>>The<<endif>> assistant seemed to shrivel into herself like a penis in <<replace>>Scottish coastal water.<<gains>> (This simile borrowed from Billy Conolly. I have never stepped foot in Scotland. <<replace>>Nothing personal.<<gains>> Not stepped foot in Ireland either and I'm part <<replace>>Irish.<<gains>> Don't like Guiness so it's probably wasted on me.<<endreplace>><<endreplace>>)<<endreplace>>\n\n[[• She purchased the chest plate.|Selfridges Purchase]]\n\n[[• She returned to the market entrance.|Armoury]]\n
version.extensions.timedgotoMacro={major:1,minor:1,revision:0};macros["goto"]=macros["timedgoto"]={timer:null,handler:function(a,b,c,d){\nfunction cssTimeUnit(s){if(typeof s=="string"){if(s.slice(-2).toLowerCase()=="ms"){return Number(s.slice(0,-2))||0;\n}else{if(s.slice(-1).toLowerCase()=="s"){return Number(s.slice(0,-1))*1000||0;}}}throwError(a,s+" isn't a CSS time unit");\nreturn 0;}var t,d,m,s;t=c[c.length-1];d=d.fullArgs();m=0;if(b!="goto"){d=d.slice(0,d.lastIndexOf(t));\nm=cssTimeUnit(t);}d=eval(Wikifier.parse(d));if(d+""){if(this.timer){clearTimeout(this.timer);\n}s=state.history[0].passage.title;this.timer=setTimeout(function(){if(state.history[0].passage.title==s){state.display(d,a);\n}},m);}}};
CRASH\n\nThe fighting ceased as Grynt exploded through the door way. His plate armour ploughed through all the people and furniture that challenged him.\n\nHe trampled the remaining villains before stopping at Helga. <<replace>>She took his reigns and lead him out of the inn.<<gains>>\n\nOutside Eirik was recovering.\n\nHelga glanced back towards the inn. The roof sagged over the new ragged doorway. Bystanders were cautiously staying clear in case it collapsed.\n\nEirik looked at Helga, then at the hole in his inn, then at Helga. She cut off her purse and handed it to Eirik.\n\n[[Helga paused.|Score]]<<endreplace>>
Aaron Steed
<<if not $primarkVisit>>\n<<display "Primark 1st">><<set $primarkVisit = 1>>\n<<else>>\n<<display "Primark 2nd">>\n<<set $primarkVisit++>>\n<<endif>>