@@.feature;"There should be achievements and save points."@@\n\n[[Status|Status][$status_return_passage=passage()]]\n[[Map|Map][$map_return_passage=passage()]]\n<<if visited()==1>><<set $yp += 1>><<endif>>\n<<if $achievement == 0 and visited("Home", "Town", "Forge", "Gate", "Woods")>>Congratulations, you have unlocked the "cartographer" achievment!<<set $achievement = 1>><<endif>>\n\nYou follow the tracks<<if visited()>1>> again<<endif>>, and arrive at the dragon's lair. The hills have given way to rocky mountain slopes, stumpy trees and shrubs dotting the dark earth among gray stone. \n\nThere is an evil dragon here.\n\nAs you approach the end of the trail, more and more trees appear which have been turned into blackened, charred remnants. Sounds of wildlife vanish, leaving only the eerie whistle of the breeze. \n\nYou find a cave, and the dragon's familiar saccharin odor emanates from the dark entrance. \n\nThen, you see its eyes, and its reptilan head silhouetted in the darkness. \n\nThere is a trail here that leads back west to the gate. \n\n[[Charge the dragon?|Charge]]\n[[West|Gate]]\n
\nYou are in a cave. Your home has been destroyed by an evil dragon, which you have tracked back to this lair. \n\n<<if not $haveSword>>There is a sword laying among the bones of past fallen heroes. <<endif>>\n\nThere is an evil dragon here. \n\nYou are wearing simple armor. <<if $haveSword>>You have a sword.<<else>>You have no items.<<endif>>\n\n<<if not $haveSword>>[[Pick up the sword?|Cave][$haveSword = true]]<<endif>>\n\n[[Charge the dragon?|ChargeDragon]]\n
/* Your story will use the CSS in this passage to style the page.\nGive this passage more tags, and it will only affect passages with those tags.\nExample selectors: */\n\nbody {\n\t/* This affects the entire page */\n\t\n\t\n}\n.passage {\n\t/* This only affects passages */\n\t\n\t\n}\n.passage a {\n\t/* This affects passage links */\n\t\n\t\n}\n.passage a:hover {\n\t/* This affects links while the cursor is over them */\n\t\n\t\n}\n.feature {\n\talign: center;\n\tpadding: 1em;\n\tborder: 1px solid white;\n\tcolor: gray;\n}\n
Welcome to MegaGame.\nThis is a game that explores feature creep and just how far down the rabbit hole you can take a small simple concept if you allow feature creep to go on and on. \nOften in day-to-day interactions in game development studios, you'll hear things like "There should be a button here that does this." or "Wouldn't it be cool if..." and the number of hours it takes to create that feature is ignored or minimized. Some might think, "oh, it's just a little change, it won't impact our deadline." This is one of the biggest factors in creating crunch time where there was going to be none. \n\nTo start, we will go through a simple game concept, and then repeat it with these types of feature creep requests. \n\n[[Start Dragon Game|Cave]]\n
@@.feature;"Why not have a slashing mechanic?"@@\n\nYou charge at the dragon before it can vanish into the caves!\n\n<<if $evil == "good">>You feel the memories of those still alive who have lost loved ones flashing through your mind, and your eyes and heart blaze with righteous fury as you dash over the decimated landscape. You shout a wordless warcry, and the creatures in the area take notice of you as you hope fervently that you can successfully defend the lands with your skills in this critical moment.<<else if $evil == "evil">>You picture the dragon dead beneath your heel. You can almost taste the creature's foul blood as you focus on where to strike along its neck. Saliva dribbles from your mouth as your face locks into a hateful, bloodthirsty grin.<<else>>Your trained feet carry you swiftly forward, your body almost acting of its own accord. You will strike down this creature. That is all you have left to repeat in your mind. You do not feel the threat of your own death in any way.<<endif>>\n\nIts eyes seem to mock you, together with the burnt bodies of several other would-be champions strewn across the entrance to the cave. \n\nTo your relief, the dragon decides to stand its ground and face you rather than flee into the cave or further back into the mountains. \n\nThen, thanks to <<if $strength_source=="teacher">>years of repeated, practiced lessons with your teacher<<else>>a wild intuition that comes to your mind from the sight<<endif>>, you realize what it is going to do next, as it lowers its head, and its belly makes an undulating motion. \n\nFire streams out suddenly from the dragon's mouth, white-hot and aimed directly at you. \n\n<<if $yp >= 9>><<replace>>Use Dodge<<becomes>>You deftly sidestep the fire and continue rushing forward!\n\n<<if $sword == 2>>You raise your sword, the odd "kssshhh" sound seeming to momentarily confuse the dragon. Now is your chance. You strike with your enchanted blade!\n\n<<if $yp >= 25>><<replace>>Use Piercing Strike<<becomes>>You feel all your experience coming together in the critical moment, and your aim strikes true.<<set $used_skill=1>><<endreplace>><<endif>>\n\n<hr>\n(To attack, click the button below and then once it has started, click in the top right area of the page, and then drag your mouse across the page from top right to lower left in a slashing motion and release it there. You will have limited time to attempt to complete the slash.)\n<<set $slash_result_passage = "DragonSlashResult">>\n<div id="c">Timer: starting</div>\n<<loadJS "MouseSlash.js">>\n<button onClick="startSlash();">Click to Start</button>\n<hr>\n\n<<else>>Your charge is suddenly disrupted by the dragon's swift strike with its jaws. Your world goes dark as teeth clamp in around your neck. You die. [[Restore from auto-save?|Lair]]\n<<endif>>\n\n<<endreplace>><<else>>You brace for the impact, trusting in your battered but reliable armor. You find the heat is too much for your armor as it melts away. You have a brief moment where the world is nothing but burning pain. You die. [[Restore from auto-save?|Lair]]\n<<endif>>\n
@@.feature;"There should be more about the sword."@@\n\n[[Status|Status][$status_return_passage=passage()]]\n[[Map|Map][$map_return_passage=passage()]]\n<<if visited()==1>><<set $yp += 1>><<endif>>\n\nAt the opposite end of town, you reach the smithy, with the fire of a large forge roaring inside. The squat work building has open windows and doors, and many shelves and tools are scattered around. The smell of melted metal and burning wood fills the air. \n\nMiller, the smith and one of the village leaders, welcomes you and you <<if $extroverted == "extroverted">>make some small talk<<else>>nod in return<<endif>>. You explain to him again about your plans, and he sits, his large body sweating. He lifts his hat and wipes his brow with a cloth, revealing his <<$hair>> hair a moment before replacing it. \n\n<<if $sword == 0>>"Yes, I have a sword you could use, but if you're going to have a chance at slaying the dragon, you'll need the blessing of the Dohktfwhie. They say the enchanted powder can be worked into an ordinary blade to let it pierce dragon scale. Have you been to the woods yet?<<else if $sword == 1>>"Blessed Saints! You have the enchantment? I can smell it on you from here! I'll work it into the sword now."\n\nMiller heats the sword as you wait <<if $evil == "evil">>im<<endif>>patiently. He takes the powder and covers the sword with it, and strange sparks fly as the powder reacts to the heated metal, black and <<$eyes>> swirls appearing on its surface. Miller's eyes watch the reaction in awe, the legend coming to life right in front of him. He douses the blade and checks the edges as it cools. "Still sharp. Maybe sharper."\n\nHe hands you the sword. You feel its heavy weight and hear a strange "kssshhh" along with the swoosh of air as you swing it. You have acquired the sword! You feel much more prepared to face the dragon now.<<set $yp += 9; $sword = 2>><<else>>Miller nods as he looks over the sword again. "We are lucky to have that blessing." Then he meets your eyes. "We are lucky to have you. I pray you make it back safely."<<endif>>\n\nThe road continues off into the distance, connecting to a main highway which goes between two large cities you <<if $strength_source == "teacher">>often<<else>>rarely<<endif>> visit. \nThe road also runs east, back to the center of town.\n\n[[West|Town]]\n
@@.feature;"There should be secrets, and more about how you find the dragon."@@\n\n[[Status|Status][$status_return_passage=passage()]]\n[[Map|Map][$map_return_passage=passage()]]\n<<if visited()==1>><<set $yp += 1>><<endif>>\n\nThe path splits here at the gate and fence that divides the homes from the wilderness. Tall, wild grass grows here, and the land slopes up and down, forming hills. The breeze feels cool and you feel a little unsafe being outside the village. \n\nA path leads north back to town through the gate. Another path leads west into the woods. To the east, dragon tracks mar the ground, and your heartbeat quickens as your <<$eyes>> eyes trace them from within your helmet. \n\n[[North|Town]]\n[[West|Woods]] (warning, takes time to load)\n[[East|Lair]]\n<a href="egg.html" target="_blank" style="text-decoration:none;color:black;">South</a>\n
@@.feature;"It should have side quests and music."@@\n\n(Use the audio widget in the twine menu to start the audio. If you don't see it or it doesn't work, you can open <a href="http://opengameart.org/content/the-fall-of-arcana-epic-game-theme-music" target="_blank">this page</a> in a new tab or window and start it playing there.)\n\nYou hear someone knocking. <<revision openDoor>>You ( [[ignore them until they go away|Home]] | <<revise openDoor "open the door">> )?<<becomes>>You open the door and find Tob standing there. The middle-aged man has scruffy hair and torn clothes, but is always busy working for the village. He looks at you with worry in his eyes, "Have you seen Chikku?"\n\nYou shake your head. Chikku is Tob's son. "No. Did he run off again?"\n\n"Yes," Tob says, distraught. "Please help me look for him if you have the time. I'm going to check north of town."\n\nYou nod, and Tob smiles gratefully before heading off to the north. \n\n[[Continue|Home]]\n<<endrevision>>\n
Status\n\nScore: <<$yp>>\n\nLevel: <<if $yp < 1>>0<<else if $yp < 4>>1<<else if $yp < 9>>2<<else if $yp < 16>>3<<else if $yp < 25>>4<<else>>5 (max)<<endif>>\n\nSkills:\n<<if $yp < 9>>???<<else>>Dodge<<endif>>\n<<if $yp < 25>>???<<else>>Precise Strike<<endif>>\n\nInventory:\n<<if $sword == 2>>Sword<<else if $sword == 1>>Powder<<endif>>\n<<if $side_quest == 1>>Ribbon<<endif>>\n\n<<if $achievement == 1>>Achievement Reached: Cartographer - You visited every area on the map!<<endif>>\n\n[[Back|$status_return_passage]]\n
Map\n\nO = room\nX = your location\n\n@@font-family:"Courier New",monospace;<pre>Home Town Forge\n <<if $map_return_passage=="Home">>X<<else>>O<<endif>> - - - <<if $map_return_passage=="Town">>X<<else>>O<<endif>> - - - - <<if $map_return_passage=="Forge">>X<<else>>O<<endif>>\n |\n |\n |\n <<if $map_return_passage=="Woods">>X<<else>>O<<endif>> - - - <<if $map_return_passage=="Gate">>X<<else>>O<<endif>> - - - - - - - - - - <<if $map_return_passage=="Lair">>X<<else>>O<<endif>>\nWoods Gate Mountains</pre>@@\n\n[[Back|$map_return_passage]]\n
@@.feature;"You should be able to customize your character."@@\n\nSupplies lay scattered around the humble hovel you call a home. The place needs a cleaning, but you haven't thought about that for weeks. Not since the attacks started. \n\nYou finish slipping your worn, familiar armor over your head, and fasten it into place before glancing up into the mirror. \n\nYou see <<if $eyes == 0>>( [[blue|HomeCharacterCreation][$eyes="blue"]] | [[brown|HomeCharacterCreation][$eyes="brown"]] )?<<else>><<print $eyes>><<endif>> eyes staring back at you. <<if $eyes != 0>>They are filled with <<if $evil == 0>>( [[emptiness|HomeCharacterCreation][$evil="neutral"]] | [[hatred|HomeCharacterCreation][$evil="evil"]] | [[sadness and resolve|HomeCharacterCreation][$evil="good"]] )?<<else>><<if $evil=="evil">>hatred<<else if $evil=="neutral">>emptiness<<else>>sadness and resolve<<endif>>. \nThey are eyes that have witnessed hundreds of people screaming and running for their lives so often that it has lost meaning. They are eyes that have watched friends cry over their lost loved ones. They are eyes that show that you exactly how that feels. \nA younger member of your family was killed before your eyes by the intentional stomp of the dragon's clawed foot, even though they posed no threat. There was no reason, other than for the dragon to laugh an evil laugh afterwards. \nYou feel <<if $evil == "evil">>loathing and anger, your fists clenching<<else if $evil == "neutral">>no emotion<<else if $evil == "good">>the suffering of the victims<<endif>> as you recall the memory<<if $evil == "good">>. Your purpose is clear: to save the people and protect them from further injustice.<<else>>.<<endif>><<endif>><<endif>>\n\nYou see your <<if $hair_length == 0>>( [[long|HomeCharacterCreation][$hair_length="long"]] | [[short|HomeCharacterCreation][$hair_length="short"]] )?<<else>><<print $hair_length>><<endif>> <<if $hair == 0>>( [[dark|HomeCharacterCreation][$hair="dark"]] | [[sandy blonde|HomeCharacterCreation][$hair="sandy blonde"]] | [[blue|HomeCharacterCreation][$hair="blue"]] )?<<else>><<print $hair>><<endif>> hair on top of your head. <<if $hair_length == "long">>You tuck it into your helmet in a practiced motion.<<endif>>\n\n<<if $extroverted == 0>>You ( [[check your appearance|HomeCharacterCreation][$extroverted="extroverted"]] | [[check your buckles|HomeCharacterCreation][$extroverted="introverted"]] )?<<else>><<if $extroverted=="extroverted">>You check your appearance carefully, aware of exactly how your looks can affect those around you.<<else>>You check your buckles and knots and belts on your clothing and armor, ensuring that nothing will come loose at a critical moment.<<endif>><<endif>>\n\nYour eye catches a particular dent in your armor, and you remember the <<if $strength_source==0>>( [[teacher|HomeCharacterCreation][$strength_source="teacher"]] | [[wolf|HomeCharacterCreation][$strength_source="nature"]] )? that gave it to you.<<else if $strength_source=="teacher">>kind but persistent fighting teacher who trained you all those years growing up. The lessons still echo in your mind. "You must see the blow coming before it even begins!" Again and again, the blows came, and eventually you learned the signs: the muscles tensing, the weight shifting, the eyes focusing. You will rely on the strength of those lessons heavily today.<<else>>terrible childhood you had. Abandoned, drifting from home to home, running as villages were destroyed around you, trying to survive in the wild as you searched for a safe place, the growl of the wolf with a particularly strong bite. You managed to do it, and find this kind family. Now things are bad again, and you must survive. But you can't just run like you did that day. This time, you must end the threat. You want to keep the rest of your family alive.<<endif>>\n\n<<if $eyes == 0 || $hair == 0 || $hair_length == 0 || $evil == 0 || $strength_source == 0 || $extroverted == 0>>The vision in the mirror is still not clear.<<else>>A clear vision of your reflection has been revealed. Your <<$hair_length>> <<$hair>> hair is hidden as you put on your helmet, though you know it will do little to protect against the unfathomable heat of the dragon's flame. Your <<$eyes>> eyes peer through your visor. You take a breath, starting to think about anything else you might need. \n\nJust then, a knock comes at the [[door|HomeDoor]].<<endif>>\n\n
@@.feature;"There should be credits and a place for a fan community."@@\n\n!MegaGame\n\nCode, Production, Design, Direction, Writing:\n<b>Josh Jones</b>\n\nEngine:\n<b><a href="http://www.twinery.org" target="_blank">Twine Engine</a></b>\n\nThis game was made possible by the inspiration funded from the <a href="http://vazor222.com/sown2014" target="_blank">SOWN2014 supporters</a>.\n\nLove, Catering:\n<b>Xan</b>\n\nHelpful Articles, Expertise:\n<a href="http://www.auntiepixelante.com/twine/" target="_blank">Anna Anthropy</a>\n<a href="http://www.glorioustrainwrecks.com/node/5462" target="_blank">Leon Arnott</a>\n<a href="http://gangles.ca/2013/05/30/twine-troubles/" target="_blank">Matthew Gallant</a>\n\nMusic:\n<a href="http://opengameart.org/content/the-fall-of-arcana-epic-game-theme-music" target="_blank">Matthew Pablo</a>\n\nThank you to all the playtesters for your suggestions!\n\n<hr>\n\nDid you enjoy the game? Tweet a link to your post about it with <a href="http://twitter.com/intent/tweet?hashtags=vazor222megagame" target="_blank">#vazor222megagame</a>!\n\n<hr>\n\nFinal Status:\n[[Status|Status][$status_return_passage=passage()]]\n
(function(){version.extensions.replaceMacrosCombined={major:1,minor:1,revision:7};var nullobj={handler:function(){}};function showVer(n,notrans){if(!n){return;}n.innerHTML="";\nnew Wikifier(n,n.tweecode);n.setAttribute("data-enabled","true");n.style.display="inline";n.classList.remove("revision-span-out");if(!notrans){n.classList.add("revision-span-in");\nif(n.timeout){clearTimeout(n.timeout);}n.timeout=setTimeout(function(){n.classList.remove("revision-span-in");n=null;},20);}}function hideVer(n,notrans){if(!n){return;\n}n.setAttribute("data-enabled","false");n.classList.remove("revision-span-in");if(n.timeout){clearTimeout(n.timeout);}if(!notrans){n.classList.add("revision-span-out");\nn.timeout=setTimeout(function(){if(n.getAttribute("data-enabled")=="false"){n.classList.remove("revision-span-out");n.style.display="none";n.innerHTML="";}n=null;\n},1000);}else{n.style.display="none";n.innerHTML="";n=null;}}function tagcontents(b,starttags,desttags,endtags,k){var l=0,c="",tg,a,i;function tagfound(i,e,endtag){for(var j=0;\nj<e.length;j++){if(a.indexOf("<<"+e[j]+(endtag?">>":""),i)==i){return e[j];}}}a=b.source.slice(k);for(i=0;i<a.length;i++){if(tg=tagfound(i,starttags)){l++;}else{if((tg=tagfound(i,desttags,true))&&l==0){b.nextMatch=k+i+tg.length+4;\nreturn[c,tg];}else{if(tg=tagfound(i,endtags,true)){l--;if(l<0){return null;}}}}c+=a.charAt(i);}return null;}var begintags=[];var endtags=[];function 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);h.setAttribute("data-enabled",false);h.style.display="none";h.tweecode="";return 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"]);}}if(this.flavour=="continue"&&flen){b.nextMatch=k+b.source.slice(k).length;\nvsns.push([b.source.slice(k),vtype]);}else{becomes=["becomes","gains"];c=tagcontents(b,begintags,becomes.concat(endtags),endtags,k);if(c&&endtags.indexOf(c[1])==-1){while(c){vsns.push(c);\nc=tagcontents(b,begintags,becomes,endtags,b.nextMatch);}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;b.nextMatch=k+b.source.slice(k).length;vsns.push([b.source.slice(k),""]);}}if(this.flavour=="remove"){vsns.push(["","becomes"]);\n}cn=0;m=insertElement(g,"span",null,e);m.setAttribute("data-flavour",this.flavour);h=mkspan("initial");vsn=vsns.shift();h.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);}}function quantity(m){return(m.children.length-1)+(m.getAttribute("data-flavour")=="remove");\n}function revisionSetup(m,g,f){m.className+=" "+f[0].replace(" ","_");}function keySetup(m,g,f){var key=f[0];m.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;}}}throwError(g,s+" isn't a CSS time unit");return 0;}var tm=cssTimeUnit(f[0]);var s=state.history[0].passage.title;\nsetTimeout(function timefn(){if(state.history[0].passage.title==s){var done=!revise("revise",m);if(!done){setTimeout(timefn,tm);}}},tm);}function hoverSetup(m){var fn,noMouseEnter=(document.head.onmouseenter!==null),m1=m.children[0],m2=m.children[1],gains=m2.className.indexOf("gains")>-1;\nif(!m1||!m2){return;}m1.onmouseenter=function(e){var efp=document.elementFromPoint(e.clientX,e.clientY);while(efp&&efp!==this){efp=efp.parentNode;}if(!efp){return;\n}if(this.getAttribute("data-enabled")!="false"){revise("revise",this.parentNode);}};m2.onmouseleave=function(e){var efp=document.elementFromPoint(e.clientX,e.clientY);\nwhile(efp&&efp!==this){efp=efp.parentNode;}if(efp){return;}if(this.getAttribute("data-enabled")!="false"){revise("revert",this.parentNode);}};if(gains){m1.onmouseleave=m2.onmouseleave;\n}if(noMouseEnter){fn=function(n){return function(e){if(!event.relatedTarget||(event.relatedTarget!=this&&!(this.compareDocumentPosition(event.relatedTarget)&Node.DOCUMENT_POSITION_CONTAINED_BY))){this[n]();\n}};};m1.onmouseover=fn("onmouseenter");m2.onmouseout=fn("onmouseleave");if(gains){m1.onmouseout=m2.onmouseout;}}m=null;}function mouseSetup(m){var evt=(document.head.onmouseenter===null?"onmouseenter":"onmouseover");\nm[evt]=function(){var done=!revise("revise",this);if(done){this[evt]=null;}};m=null;}function linkSetup(m,g,f){var l=Wikifier.createInternalLink(),p=m.parentNode;\nl.className="internalLink replaceLink";p.insertBefore(l,m);l.insertBefore(m,null);l.onclick=function(){var p,done=false;if(m&&m.parentNode==this){done=!revise("revise",m);\nscrollWindowTo(m);}if(done){this.parentNode.insertBefore(m,this);this.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;}else{for(i=shv[os][d];i>0&&!done;i--){done=!revise("revise",m,true);}if(shv[os].hasOwnProperty(d)){shv[os][d]+=1;\n}}}[{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);macros[e.name]=e;macros["end"+e.name]=nullobj;begintags.push(e.name);endtags.push("end"+e.name);});function insideDepartingSpan(elem){var r=elem.parentNode;\nwhile(!r.classList.contains("passage")){if(r.classList.contains("revision-span-out")){return true;}r=r.parentNode;}}function reviseAll(rt,rname){var rall=document.querySelectorAll(".passage [data-flavour]."+rname),ret=false;\nfor(var i=0;i<rall.length;i++){if(!insideDepartingSpan(rall[i])){ret=revise(rt,rall[i])||ret;}}return ret;}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);}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;if(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);var currfn=function(){if(!(next&&next.classList.contains("gains"))||rnd){docurr(curr,notrans);doToGainerSpans(ind,docurr,notrans);\n}};var nextfn=function(){donext(next,notrans);if(rnd){doToGainerSpans(ind2+1,donext,notrans);}};if(!rev){currfn();nextfn();}else{nextfn();currfn();}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;function 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);return;}var rall=document.querySelectorAll(".passage [data-flavour]."+rname),cannext,canprev,i,ind,r,fl;\nfor(i=0;i<rall.length;i++){r=rall[i],fl=r.getAttribute("data-flavour");if(insideDepartingSpan(r)){continue;}if(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;}}}var can=(l.classList.contains("revert")?canprev:cannext);(can?enableLink:disableLink)(l);}function toggleText(w){w.classList.toggle(rl+"Enabled");\nw.classList.toggle(rl+"Disabled");w.style.display=((w.style.display=="none")?"inline":"none");}var rl="reviseLink";if(c.length<2){throwError(a,b+" macro needs 2 parameters");\nreturn;}rname=c.shift().replace(" ","_");l=Wikifier.createInternalLink(a,null);l.className="internalLink "+rl+" "+rl+"_"+rname+" "+b;var v="";var end=false;var out=false;\nif(c.length>1&&c[0][0]=="$"){v=c[0].slice(1);c.shift();}switch(c[c.length-1]){case"end":end=true;c.pop();break;case"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));var d=insertElement(null,"span",null,rl+((on)?"En":"Dis")+"abled");if(on){h[v]=c[i];l.setAttribute("data-cycle",i);\n}else{d.style.display="none";}insertText(d,c[i]);l.appendChild(d);}l.onclick=function(){reviseAll(b,rname);var 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]||t[u]);n.className=rl+"End";n.style.display="inline";this.parentNode.replaceChild(n,this);}else{this.parentNode.removeChild(this);\nreturn;}}else{toggleText(t[u]);u=(u+1)%m;if(v){h[v]=c[u];}toggleText(t[u]);this.setAttribute("data-cycle",u);}lall=document.getElementsByClassName(rl+"_"+rname);\nfor(i=0;i<lall.length;i++){updateLink(lall[i]);}};disableLink(l);setTimeout((function(l){return function(){updateLink(l);};}(l)),1);l=null;}};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);if(b!="hoverrevise"&&done){this[evt]=null;\n}};new Wikifier(h,t[0]);if(b=="hoverrevise"){h.onmouseover=f;h.onmouseout=function(){reviseAll("revert",rname);};}else{h[evt]=f;}h=null;}}};macros.instantrevise={handler:function(a,b,c,d){reviseAll("revise",c[0].replace(" ","_"));\n}};macros.endmouserevise=nullobj;macros.endhoverrevise=nullobj;}());
MegaGame
@@.feature;"It should have non-player characters."@@\n\n[[Status|Status][$status_return_passage=passage()]]\n[[Map|Map][$map_return_passage=passage()]]\n<<if visited()==1>><<set $yp += 1>><<endif>>\n\nYou arrive at the center of town. A few of the villagers go about their business, moving from building to building. Many homes stand empty, walls and roofs smashed in, huge chunks missing from their structure. \n\nYou <<if $extroverted == "extroverted">>greet the people you pass who meet your eyes with a <<if $evil == "evil">>fierce, distrustful glare<<else if $evil == "good">>hearty and hopefully cheering "Hello!"<<else>>nod and a quiet inquiry about how they are doing<<endif>><<else>>avoid meeting anyone's eyes, watching your step and thinking about <<if $evil =="evil">>how you are going to end the dragon's life<<else if $evil == "good">>all others who have lost family here<<else>>your destination<<endif>><<endif>>. \n\n<<if $helped_kathy==0>>Kathy calls out to you, her blue eyes searching your <<$eyes>> eyes briefly after seeing your armor. She has a pile of boards she is nailing into place and could use someone to help hand them to her on the ladder.\n<<if $evil == "evil">>(Begrudgingly) <<endif>>[[Help Kathy|Town][$helped_kathy=1]]<<else>>Kathy wipes her brow as the last board is in place and stands admiring her work. "Thank you again for your help."<<if $helped_kathy is 1>><<set $yp += 3>><<set $helped_kathy to 2>><<endif>><<endif>>\n\n<<if $helped_teff==0>>A young child with <<$hair_length>> hair smiles up at you, expectantly. Teff waits for your daily lesson eagerly. \n[[Train Teff|Town][$helped_teff=1]]<<else>>Scuff marks in the ground show where you sparred last with Teff. The child has come a long way, and as you trained, you felt your own skills being refreshed.<<if $helped_teff is 1>><<set $yp += 3>><<set $helped_teff to 2>><<endif>><<endif>>\n\n<<if $helped_arthur==0>>An old man sits in the shade on one side of the street, a book in his hands. He motions for you to come closer. Arthur may be wisest elder in the village.\n[[Speak to Arthur|Town][$helped_arthur=1]]<<else>>You refresh yourself on what little is known in the books about dragons: wingless, evil, intelligent, gigantic lizards with hard scales, as Arthur explained it to you. It is unknown why they smell sweet. The old man sits back in his chair, eyes closed, content to feel the breeze and rest.<<if $helped_arthur is 1>><<set $yp += 3>><<set $helped_arthur to 2>><<endif>><<endif>>\n\nThe familiar dirt road is here, and runs off to the east and west. A less-used path heads south between some buildings, towards a roughly-built gate in a basic fence. \n\n[[West|Home]]\n[[East|Forge]]\n[[South|Gate]]\n
<<nobr>>\n<<set $eyes = 0>> /% blue, brown %/\n<<set $hair = 0>> /% dark, sandy blonde, blue %/\n<<set $hair_length = 0>> /% short, long %/\n<<set $evil = 0>> /% evil, neutral, good %/\n<<set $extroverted = 0>> /% introverted, extroverted %/\n<<set $strength_source = 0>> /% teacher, nature %/\n/% skills - Dodge at lvl 3, Piercing Strike at lvl 5 %/\n<<set $yp = 0 >> /% you points, 4=lvl 2, 9=lvl 3, 16 = lvl 4, 25 = level 5 %/\n<<set $side_quest = 0 >> /% 1 = completed, show Chikku's ribbon %/\n<<set $sword = 0>>\n<<set $used_skill = 0>> /% 1 = used precision strike %/\n<<set $slash_success = 0 >> /% 1 = slash success %/\n<<set $slash_result_passage = "MegaGameStart">>\n<<set $status_return_passage = "MegaGameStart">>\n<<set $map_return_passage = "MegaGameStart">>\n<<set $helped_kathy = 0>>\n<<set $helped_teff = 0>>\n<<set $helped_arthur = 0>>\n<<set $achievement = 0>>\n<<endnobr>>\nNow we will revisit the same simple game concept, but suggested features will be shown where the game has been expanded. Any feature creep suggestions that changed the original concept ("You slay a dragon with a sword") were rejected (including multiplayer), any feature suggestions that were too similar or just lists of the same thing were reduced, and any feature creep suggestions that required advanced visuals or programming (AI) were rejected (keeping the focus on the writing, and also keeping the development time more feasible). \n\n[[Start Dragon MegaGame|HomeCharacterCreation]]\n
@@.feature;"There should be an element of chance."@@\n\n<<set $strike_win = 0>>\nA wind blows, and your die is cast.\n<<if $slash_success or $used_skill>>\n<<if $slash_success == 0 and $used_skill == 1>>Your foot shifts unexpectedly on a loose stone, but your Precision Strike allows you to make a split-second adjustment to aim correctly.<<endif>>\n\nYour strike closes on its target. <<set $roll = random(1,25)>>\n<<if $side_quest==1>>The fluttering ribbon seems to <<if $roll > 20>>slightly alter<<set $roll -= 5>><<else>>bless<<set $roll -= 1>><<endif>> your aim, and you feel quiet thanks for its protection.<<endif>>\n<<if $yp >= $roll>><<set $strike_win to 1>><<endif>>\n<<endif>>\n\n<<if $strike_win is 1>>\nThe breeze favors your position, your timing, and your aim, and does not throw you off. You strike true and hard, and it is somehow enough to sever the creature's head from its body. <<if $sword==2>>The black and <<$eyes>> swirls glow as the sword repels the dragon's blood. <<endif>>\n\nYou live.\n\n[[Credits|Credits]]\n<<else>>\nYou fail to strike correctly, and your blade comes just short of the creature's neck. An angry gust tips your balance and you are distracted trying not to fall. <<if $sword == 2>>Clanging uselessly on the floor, the sword's ominous sound is disrupted, and the dragon takes only a few seconds to blink and refocus its eyes on you. <<endif>>Then the dragon suddenly closes its jaws over your head. Your hands batter the sides of the dragon's mouth, but it is futile. The sweet smell turns to foul oily burned scents as you are engulfed in flame, the unreal heat melting your armor and your head. You die. [[Restore from auto-save?|Lair]]\n<<endif>>\n
@@.feature;"It should have a map and levels."@@\n\n[[Status|Status][$status_return_passage=passage()]]\n[[Map|Map][$map_return_passage=passage()]]\n<<if visited()==1>><<set $yp += 1>><<endif>>\n\nYou stand in front of your home. Your <<$eyes>> eyes scan over the area. The familiar dirt road runs off to the east, and the surrounding lands are dense forest and farmland. A scent of grass is on the wind as you feel a breeze on your cheek. \n\n[[East|Town]]\n\n
// from: http://videlais.com/2013/03/05/twine-tuesday-loading-external-javascript/\n\nmacros['loadJS'] =\n{\n\thandler: function(place, object, parameters)\n\t{\n\t\tvar se = document.createElement("script");\n\t\tse.type = 'text/javascript';\n\t\tse.src = parameters[0];\n\t\tvar hT = document.getElementsByTagName("HEAD")[0];\n\t\thT.appendChild(se);\n\t\tif(se.innerText) {eval(se.innerText);}\n\t\telse {eval(se.textContent);}\n\t}\n}\n
@@.feature;"There should be a text seeking minigame."@@\n\n[[Status|Status][$status_return_passage=passage()]]\n[[Map|Map][$map_return_passage=passage()]]\n<<if visited()==1>><<set $yp += 1>><<endif>>\n\nYou are surrounded by large trees, and the sounds of the forest fill your ears. Trails wind up and down hills, disappearing behind trees and into burrows. The light shimmers and the forest seems alive. \n\n(Warning, maze will reset if you check status or map.)\n\n<<replace>>Search uphill to the right. <<becomes>>\s\n\t<<replace>>Search uphill to the right. <<becomes>>\s\n\t\t<<replace>>Search uphill to the right. <<becomes>>\s\n\t\t\t<<replace>>Search uphill to the right. <<becomes>>\s\n\t\t\t\t<<replace>>Search uphill to the right. <<becomes>>\s\n\t\t\t\t\tThis path loops back on itself.\n\t\t\t\t<<endreplace>>\s\n\t\t\t\t<<replace>>Search downhill to the left. <<becomes>>\s\n\t\t\t\t\tThis path ends in a watery mudhole.\n\t\t\t\t<<endreplace>>\s\n\t\t\t<<endreplace>>\s\n\t\t\t<<replace>>Search downhill to the left. <<becomes>>\s\n\t\t\t\t<<replace>>Search downhill to the left. <<becomes>>\s\n\t\t\t\t\t<<replace>>Search downhill to the left. <<becomes>>\s\n\t\t\t\t\t\t<<replace>>Search downhill to the left. <<becomes>>\s\n\t\t\t\t\t\t\t<<replace>>Search uphill to the left. <<becomes>>\s\n\t\t\t\t\t\t\t\tThis path fades into broken rock and overgrown forest floor.\n\t\t\t\t\t\t\t<<endreplace>>\s\n\t\t\t\t\t\t\t<<replace>>Search downhill through a ditch. <<becomes>>\s\n\t\t\t\t\t\t\t\t<<replace>>Search downhill to the left. <<becomes>>Search uphill to the right. <<becomes>>\s\n\t\t\t\t\t\t\t\t\t<<replace>>Search the dried-up creek. <<becomes>>\s\n\t\t\t\t\t\t\t\t\t\tYou find nothing but dirt and stones here.\n\t\t\t\t\t\t\t\t\t<<endreplace>>\s\n\t\t\t\t\t\t\t\t<<endreplace>>\s\n\t\t\t\t\t\t\t<<endreplace>>\s\n\t\t\t\t\t\t<<endreplace>>\s\n\t\t\t\t\t\t<<replace>>Search uphill to the right. <<becomes>>\s\n\t\t\t\t\t\t\tThis path loops back on itself.\n\t\t\t\t\t\t<<endreplace>>\s\n\t\t\t\t\t<<endreplace>>\s\n\t\t\t\t<<endreplace>>\s\n\t\t\t<<endreplace>>\s\n\t\t<<endreplace>>\s\n\t\t<<replace>>Search downhill to the left. <<becomes>>\s\n\t\t\t<<replace>>Search along the riverbank. <<becomes>>\s\n\t\t\t\t<<replace>>Search along the riverbank. <<becomes>>\s\n\t\t\t\t\t<<replace>>Search along the riverbank. <<becomes>>\s\n\t\t\t\t\t\t<<replace>>Search up the dried-up creek. <<becomes>>\s\n\t\t\t\t\t\t\t<<replace>>Search up the dried-up creek. <<becomes>>\s\n\t\t\t\t\t\t\t\tYou find nothing but dirt and stones here. You think you've been here before.\n\t\t\t\t\t\t\t<<endreplace>>\s\n\t\t\t\t\t\t<<endreplace>>\s\n\t\t\t\t\t\t<<replace>>Continue along the riverbank. <<becomes>>\s\n\t\t\t\t\t\t\t<<replace>>Continue along the riverbank. <<becomes>>\s\n\t\t\t\t\t\t\t\tYou arrive at a waterfall. The peaceful scene of beautiful nature surrounds you, but it is still a dead end.\n\t\t\t\t\t\t\t<<endreplace>>\s\n\t\t\t\t\t\t\t<<replace>>Follow child footprints. <<becomes>>\s\n\t\t\t\t\t\t\t\t<<if $side_quest == 0>>You blink as you see footprints suddenly, and begin to follow them. After a few turns, see Chikku sleeping soundly, next to a large bear! The bear appears to be napping also. \n\t\t\t\t\t\t\t\t<<replace>>Sneak up and grab Chikku. <<becomes>>\s\n\t\t\t\t\t\t\t\t\tYou successfully steal Chikku away from the enormous beast, and you hurry back the way you came.\n\t\t\t\t\t\t\t\t\tChikku looks like he is about to wake and cry out, so you stop behind a large tree, and remove your helmet so Chikku can see your face. \n\t\t\t\t\t\t\t\t\t<<if $hair_length=="long">>Chikku wakes to find your long hair falling around your shoulders, and he recognizes you and murmurs sleepily as he looks around.\n\n\t\t\t\t\t\t\t\t\t"Where's tha big furry wall?"\n\t\t\t\t\t\t\t\t\t<<else>>\s\n\t\t\t\t\t\t\t\t\tChikku wakes and starts crying. The poor kid looks like he has been crying for hours, and has been doused in river water. It's a miracle he didn't wake the large bear.\n\t\t\t\t\t\t\t\t\t<<endif>>\s\n\t\t\t\t\t\t\t\t\tYou shush the child, and luckily nothing chases you as you continue out of the forest.\n\n\t\t\t\t\t\t\t\t\tTob runs into you at the edge of the forest, and sighs a breath of relief. \n\t\t\t\t\t\t\t\t\t"I was so worried! Thank you!"\n\t\t\t\t\t\t\t\t\tAs you watch Tob go back towards the gate, you notice a ribbon on the ground. It must have fallen from Chikku's hair. It reminds you of the ribbons Tob's wife used to wear. She had been killed in a recent attack, and she was buried near here. Sensing an otherworldly strength in the ribbon, you decide to tie it to your arm as a good luck charm. You will need every last bit of help you can get. <<set $side_quest = 1>><<set $yp += 1>>\n\t\t\t\t\t\t\t\t<<endreplace>>\s\n\t\t\t\t\t\t\t\t<<else>>\s\n\t\t\t\t\t\t\t\tYou find a sleeping bear.\n\t\t\t\t\t\t\t\t<<endif>>\s\n\t\t\t\t\t\t\t<<endreplace>>\s\n\t\t\t\t\t\t<<endreplace>>\s\n\t\t\t\t\t<<endreplace>>\s\n\t\t\t\t<<endreplace>>\s\n\t\t\t<<endreplace>>\s\n\t\t<<endreplace>>\s\n\t<<endreplace>>\s\n\t<<replace>>Search downhill to the left. <<becomes>>\s\n\t\tYou find a dead-end.\n\t<<endreplace>>\s\n<<endreplace>>\s\n<<replace>>Search downhill to the left. <<becomes>>\s\n\t<<replace>>Search uphill to the right. <<becomes>>Search uphill to the right. <<becomes>>Continue to the right. <<becomes>>Continue uphill. <<becomes>>\s\n\t\t<<replace>>Search in the trees. <<becomes>>\s\n\t\t\tYou find nothing here.\n\t\t\t<<if $sword == 0>><<replace>>Rest your hand on the big tree near you. <<becomes>>A tiny winged humanoid appears with a surprised yelp. "Waugh! Watch where you're a-puttin' those big hands of yours, human!" You had almost pinned the Dohktfwhie to the tree as it lay hidden and invisible. The Dohktfwhie appears to you like a wild-pink-haired feral woman, the size of your hand.\n\nShe eyes you and notes your armor. "Why are you so persistent, wandering about in here? What do we need to do to be rid of you, little pest?"\n\nYou perform the bow of respect you learned from your childhood stories, reaching your hands into the air, then bringing them together, palms touching each other and fingertips pointing upwards. Then you bring your hands to your chest and bow, bending the top half of your body forward.\n\n"I seek the blessing of your forest, to have the power to defend it against your ancient foes who crawl on the ground and spray foul fires to burn your trees."\n\nThe tiny woman looks impressed, and responds, "I hear your words, and I will consult with the forest." She disappears.\n\n<<timedreplace 10s>>You wait... <<becomes>>The Dohktfwhie returns with a bag of powder and hands it to you. "The trees have found your cause just and your history with the woods commendable. We put our trust in you to guard us."\n\nYou take the bag, bowing again, and feeling the forest's eyes on you as you turn to go.<<set $sword to 1>><<endtimedreplace>>\n\t\t\t<<endreplace>>\s\n\t\t\t<<else>>A big tree is near you, and invisible fluttering wings can be heard nearby.<<endif>>\n\t\t<<endreplace>>\s\n\t<<endreplace>>\s\n\t<<replace>>Search downhill to the left. <<becomes>>\s\n\t\tYou find nothing here.\n\t<<endreplace>>\s\n<<endreplace>>\s\n\n\nNo matter how much you search, every time you look back towards the gate, you find the edge of the woods close and easy to get to, as if the woods are glad to be rid of you. \n\n[[East|Gate]]\n
.revision-span-in {\n\topacity: 0;\n}\n.revision-span:not(.revision-span-out) {\n\ttransition: 1s; -webkit-transition: 1s;\n}\n.revision-span-out {\n\tposition:absolute;\n\topacity: 0;\n}\n
The dragon takes a deep breath as you approach, and releases a fiercely hot stream of fire at you. You sidestep the fire deftly and charge with a scream!\n\n<<if $haveSword>>You swing the sword with a precision strike just before the dragon's jaws crush your head. Your strike is true and you sever the thing's neck, slaying it instantly. You win!\n\n[[Next|MegaGameStart]]\n<<else>>Your charge is suddenly disrupted by the dragon's swift strike with its jaws. Your world goes dark. You lose.\n\n[[Restart|Cave]]\n\n[[Next|MegaGameStart]]\n<<endif>>\n
@vazor222