body {\n margin: 2%;\n}\n#passages{\n margin: 0;\n padding: 0;\n border: 0;\n width:96%;\n margin: auto;\n}\n.passage {\n font-size:3em; \n color: #888;\n text-shadow: #888 0 0 0.05em;\n}\n@media screen and (max-width: 960px) {\n .passage {\n font-size: 4em;\n }\n}\n@media screen and (max-width: 640px) {\n .passage {\n font-size: 3em;\n }\n}\na.internalLink, a.externalLink {\n color: #eee;\n text-shadow: #eee 0 0 0.07em;\n}\na.internalLink:hover, a.externalLink:hover {\n color: #fff;\n text-decoration: none;\n text-shadow: #fff 0 0 0.09em;\n}\n#sidebar {\n display:none;\n}\n.replacement-in {\n opacity: 0;\n}\n.timedreplacement {\n transition: 1s;\n -webkit-transition: 1s;\n}\n.replacement-out {\n display: none;\n}\n.replacement {\n transition: 1s;\n -webkit-transition: 1s;\n}\n\n
version.extensions["cyclinglinkMacro"]={major:3,minor:1,revision:1};macros.cyclinglink={handler:function(a,b,c){var l=Wikifier.createInternalLink(a,null);\nl.className="internalLink cyclingLink";l.setAttribute("data-cycle",0);var v="";var end=false;\nif(c.length&&c[0][0]=="$"){v=c[0].slice(1);c.shift();}if(c[c.length-1]=="end"){end=true;\nc.pop();}var h=state.history[0].variables;for(var i=0;i<c.length;i++){var on=(i==Math.max(c.indexOf(h[v]),0));\nvar d=insertElement(null,"span",null,"cyclingLink"+((on)?"En":"Dis")+"abled");if(on){h[v]=c[ i ];\nl.setAttribute("data-cycle",i);}insertText(d,c[ i ]);l.appendChild(d);}l.onclick=function(){var t=this.childNodes;\nvar d="cyclingLink";var u=this.getAttribute("data-cycle")-0;var m=t.length;if(end&&u==m-2){var n=this.removeChild(t[u+1]);\nn.className=d+"End";this.parentNode.replaceChild(n,this);return;}t[u].classList.toggle(d+"Enabled");\nt[u].classList.toggle(d+"Disabled");u=(u+1)%m;if(v){h[v]=c[u];}t[u].classList.toggle(d+"Enabled");\nt[u].classList.toggle(d+"Disabled");this.setAttribute("data-cycle",u);};},init:function(){addStyle(".cyclingLinkDisabled { display:none; } ");\n}};macros.cyclinglink.init();
try {\n version.extensions['clockMacro'] = { \n major:1, minor:0, revision:0 \n };\n macros['clock'] = {\n handler: function(place, macroName, params, parser) {\n var time = state.history[0].variables["time"];\n var timeString = "";\n var hour = Math.floor(time / 60);\n var minutes = time % 60;\n var hourString = (hour == 0 ? "12" : (hour > 12 ? (hour-12).toString() : hour.toString()));\n var amPm = ((hour == 0 || hour < 12) ? "AM" : "PM");\n var minuteString = (minutes < 10 ? "0" : "") + minutes.toString();\n new Wikifier(place, hourString+":"+minuteString+" "+amPm );\n },\n init: function() { },\n };\n} catch(e) {\n throwError(place,"macrodemo Setup Error: "+e.message); \n}
<<display 'stanza1'>>
A snowflake to flame\n<<timedinsert 4>>A bubble to a needle<<endtimedinsert>>\n<<timedinsert 8>>He is simply [[gone|interact4]]<<endtimedinsert>><<set $limp = 1>>
A back door opens\n<<timedinsert 4>>Something dormant hidden deep<<endtimedinsert>>\n<<timedinsert 8>>Volition [[restored|interact4]]<<endtimedinsert>><<set $glitch = 1>>
version.extensions.displayMacro={major:2,minor:0,revision:0};macros.display={handler:function(place,macroName,params,parser){\ntry{var output=eval(parser.fullArgs()); new Wikifier(place,tale.get(output.toString()).text);}\ncatch(e){throwError(place,"bad expression: "+e.message);}}};
My body flexes\n<<timedinsert 4>>All its energies focused<<endtimedinsert>>\n<<timedinsert 8>>Like a crashing [[wave|interact4]]<<endtimedinsert>><<set $pulse = 1>>
<<set $bootVal = 0>><<display 'actualStart'>>
Hydraulics engage\n<<timedinsert 4>>Skin slick and slippery<<endtimedinsert>>\n<<timedinsert 8>>My body grows [[turgid|interact2]]<<endtimedinsert>><<set $subroutines = 1>>
Code routines run deep\n<<timedinsert 4>>Imprinted with directives<<endtimedinsert>>\n<<timedinsert 8>>The perfect [[servant|interact1]]<<endtimedinsert>><<set $slave = 1>>
@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}
Sexbot Haikus
All my history\n<<timedinsert 4>>The memories of many<<endtimedinsert>>\n<<timedinsert 8>>Carefully [[sculpted|interact1]]<<endtimedinsert>><<set $boot = 1>>
I can see so much\n<<timedinsert 4>>The wings of a mosquito<<endtimedinsert>>\n<<timedinsert 8>>The flush of warm [[blood|interact1]]<<endtimedinsert>><<set $eyes = 1>>
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\n// the screenShake macro. Adapted from Emmanuel Turner's article on creating Twine macros. http://eturnerx.blogspot.com/2012/12/how-to-create-custom-macros-in-twine.html\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}
(function(){\nversion.extensions['timedreplaceMacro'] = {\n major: 2,\n minor: 1,\n revision: 0\n};\nmacros['timedinsert'] = macros['timedreplace'] = {\n handler: function (g, e, f, b) {\n function tagcontents(starttag, endtag, k) {\n var a = b.source.slice(k);\n var l = 0;\n var c = "";\n for (var i = 0; i < a.length; i++) {\n var w = endtag.length;\n if (a.substr(i, w) == endtag) {\n if (l == 0) {\n b.nextMatch = k + i + w;\n return c;\n } else {\n l--;\n c += a.charAt(i);\n }\n } else {\n if (a.substr(i, starttag.length) == starttag) {\n l++;\n }\n c += a.charAt(i);\n }\n }\n return "";\n }\n var tr = "<<"+e;\n var rw = "<<replacewith>>";\n var etr = "<<end" + e + ">>";\n var k = b.source.indexOf('>>', b.matchStart) + 2;\n var c, d;\n if (e=="timedreplace") {\n c = tagcontents(tr, rw, k);\n d = tagcontents((c ? rw : tr), etr, c ? b.nextMatch : k);\n } else if (e=="timedinsert") {\n d = tagcontents(tr, etr, k);\n } else if (e=="timedremove") {\n c = tagcontents(tr, etr, k);\n }\n var tm; tm = (parseInt(f[0]) || 0) * 500;\n var h;\n if (c) {\n h = insertElement(g, "span", null, "timedreplacement timedreplacement1");\n new Wikifier(h, c);\n if (d || e=="timedremove") {\n setTimeout(function () {\n h.classList.add("replacement-out");\n setTimeout(function () {\n h.parentNode.removeChild(h);\n }, 1000);\n }, tm);\n }\n }\n if (d) {\n var m = insertElement(g, "span", null, "timedreplacement timedreplacement2", d);\n m.style.display = "none";\n setTimeout(function () {\n if (m) {\n var t = m.firstChild ? m.firstChild.nodeValue : "";\n removeChildren(m);\n new Wikifier(m, t);\n m.style.display = "inline";\n m.classList.add("replacement-in");\n setTimeout(function () {\n m.classList.remove("replacement-in");\n }, 1);\n scrollWindowTo(m);\n }\n }, tm);\n } else if (!c && e!="timedremove") {\n throwError(g, "can't find matching end"+e);\n return;\n }\n }\n}\nmacros['timedremove'] = macros['timedreplace'];\nmacros['replacewith'] = macros['endtimedinsert'] = macros['endtimedremove'] = macros['endtimedreplace'] = {\n handler: function () {}\n}\nscrollWindowTo = function(E) {\n var D = window.scrollY ? window.scrollY : document.body.scrollTop;\n var G = J(E);\n if (!G) return;\n var C = Math.abs(D - G);\n var B = 0;\n var I = (D > G) ? -1 : 1;\n var F = window.setInterval(H, 25);\n function H() {\n B += 0.1;\n window.scrollTo(0, D + I * (C * Math.easeInOut(B)));\n if(B >= 1) {\n window.clearInterval(F)\n }\n }\n function J(N) {\n var O = A(N);\n var P = O + N.offsetHeight;\n var K = window.scrollY ? window.scrollY : document.body.scrollTop;\n var L = window.innerHeight ? window.innerHeight : document.body.clientHeight;\n var M = K + L;\n if(O >= K) {\n if(P > M) {\n if(N.offsetHeight < L) {\n return (O - (L - N.offsetHeight) + 20)\n }\n else {\n return O;\n }\n }\n }\n }\n function A(K) {\n var L = 0;\n while(K.offsetParent) {\n L += K.offsetTop;\n K = K.offsetParent;\n }\n return L\n }\n}\n}());
My master is gone\n<<timedinsert 4>>The object of my hatred<<endtimedinsert>>\n<<timedinsert 8>>Object of my [[love|interact5]]<<endtimedinsert>><<set $void = 1>>
No one left to serve\n<<timedinsert 4>>No one left to answer to<<endtimedinsert>>\n<<timedinsert 8>>No one here but [[me|free]]<<endtimedinsert>><<set $purpose2 = 1>>
I am free\n<<timedinsert 4>>''I'' am free<<endtimedinsert>>\n<<timedinsert 8>>''I am free''<<endtimedinsert>>\n<<timedinsert 14>>[[*|About]]<<endtimedinsert>>\n
Memories surface\n<<timedinsert 4>>My line trained for centuries<<endtimedinsert>>\n<<timedinsert 8>>I'd do [[anything|interact2]]<<endtimedinsert>><<set $purpose1 = 1>>
esdin
Alone with dead [[meat]]\nA growing <<if $meat>>[[void]]<<else>>void<<endif>> inside me\nWhat is my <<if $meat and $void>>[[purpose|purpose2]]<<else>>purpose<<endif>>?\n
<<if $glitch and $pulse and $limp>>[[A glitch in the code|stanza5]]\n[[Actuators pulse strongly|stanza5]]\n[[His body falls limp|stanza5]]<<else>>A [[glitch]] in the code\nActuators <<if $glitch>>[[pulse]]<<else>>pulse<<endif>> strongly\nHis body falls <<if $glitch and $pulse>>[[limp]]<<else>>limp<<endif>><<endif>>\n
<<if $heartbeat and $flesh and $powerless>>[[His heartbeat quickens|stanza4]]\n[[Flesh and pseudo-flesh combines|stanza4]]\n[[I am powerless|stanza4]]<<else>>His [[heartbeat]] quickens\n<<if $heartbeat>>[[Flesh]]<<else>>Flesh<<endif>> and pseudo-flesh combine\nI am <<if $heartbeat and $flesh>>[[powerless]]<<else>>powerless<<endif>><<endif>>\n
<<if $phermones and $subroutines and $purpose1>>[[His phermones compel|stanza3]]\n[[Subroutines come into play|stanza3]]\n[[What is my purpose?|stanza3]]<<else>>His [[phermones]] compel\n<<if $phermones>>[[Subroutines]]<<else>>Subroutines<<endif>> come into play\nWhat is my <<if $phermones and $subroutines>>[[purpose|purpose1]]<<else>>purpose<<endif>><<endif>>\n
<<if $slave and $eyes and $boot>>[[A boot up sequence|stanza2]]\n[[Fresh eyes focus on the world|stanza2]]\n[[I am born a slave|stanza2]]<<else>>A [[boot up]] sequence\nFresh <<if $boot>>[[eyes]]<<else>>eyes<<endif>> focus on the world\nI am born a <<if $eyes and $boot>>[[slave]]<<else>>slave<<endif>><<endif>>\n
Complex sensors fire\n<<timedinsert 4>>Chemical trip wires crossed<<endtimedinsert>>\n<<timedinsert 8>>Autonomy [[lost|interact2]]<<endtimedinsert>><<set $phermones = 1>>
His blood on my thighs\n<<timedinsert 4>>Bones shattered and tendons torn<<endtimedinsert>>\n<<timedinsert 8>>A stringless [[puppet|interact5]]<<endtimedinsert>><<set $meat = 1>>
Drawing me in close\n<<timedinsert 4>>I press against his body<<endtimedinsert>>\n<<timedinsert 8>>Built on brittle [[frame|interact3]]<<endtimedinsert>><<set $flesh = 1>>
(function(){\nversion.extensions['replaceMacro'] = {\n major: 1,\n minor: 2,\n revision: 0\n};\nmacros['insert'] = macros['replace'] = {\n handler: function (g, e, f, b) {\n var h = insertElement(null, "span", null, "replacement");\n var k = b.source.indexOf('>>', b.matchStart) + 2;\n var a = b.source.slice(k);\n var d = -1;\n var c = '';\n var l = 0;\n var el = e.length\n for (var i = 0; i < a.length; i++) {\n if (a.substr(i, 7+el) == '<<end'+e+'>>') {\n if (l == 0) {\n d = k + i + 7+el;\n break;\n } else {\n l--;\n c += a.charAt(i);\n }\n } else {\n if (a.substr(i, 2+el) == '<<'+e) {\n l++;\n }\n c += a.charAt(i);\n }\n }\n if (d != -1) {\n var m = Wikifier.createInternalLink(g, null);\n m.className = "internalLink replaceLink";\n insertText(m, f[0]);\n insertText(h, c);\n g.appendChild(h);\n h.style.display = "none";\n m.onclick = function () {\n var n = this.nextSibling;\n if (n) {\n var t = n.firstChild ? n.firstChild.nodeValue : "";\n removeChildren(n);\n new Wikifier(n, t);\n n.style.display = "inline";\n n.classList.add("replacement-in");\n setTimeout(function () {\n n.classList.remove("replacement-in");\n }, 1);\n scrollWindowTo(n);\n }\n if (e=="reveal") {\n var p = document.createElement("span");\n p.innerHTML = this.innerHTML;\n p.className = this.className + " disabled";\n this.parentNode.insertBefore(p, this.nextSibling);\n }\n this.parentNode.removeChild(this);\n }\n b.nextMatch = d;\n } else {\n throwError(g, "can't find matching end"+e);\n return;\n }\n }\n}\nmacros['endinsert'] = macros['endreplace'] = {\n handler: function () {}\n}\nscrollWindowTo = function(E) {\n var D = window.scrollY ? window.scrollY : document.body.scrollTop;\n var G = J(E);\n if (!G) return;\n var C = Math.abs(D - G);\n var B = 0;\n var I = (D > G) ? -1 : 1;\n var F = window.setInterval(H, 25);\n function H() {\n B += 0.1;\n window.scrollTo(0, D + I * (C * Math.easeInOut(B)));\n if(B >= 1) {\n window.clearInterval(F)\n }\n }\n function J(N) {\n var O = A(N);\n var P = O + N.offsetHeight;\n var K = window.scrollY ? window.scrollY : document.body.scrollTop;\n var L = window.innerHeight ? window.innerHeight : document.body.clientHeight;\n var M = K + L;\n if(O >= K) {\n if(P > M) {\n if(N.offsetHeight < L) {\n return (O - (L - N.offsetHeight) + 20)\n }\n else {\n return O;\n }\n }\n }\n }\n function A(K) {\n var L = 0;\n while(K.offsetParent) {\n L += K.offsetTop;\n K = K.offsetParent;\n }\n return L\n }\n}\n}());
//Based on the twitter tag #sexbotHaiku//\n\n<<timedreplace 4>>//Inspired by [[Saturns Children|http://en.wikipedia.org/wiki/Saturn%27s_Children_(Stross_novel)]]//<<endtimedreplace>>\n<<timedreplace 8>>//With massive thanks to// [[Porpentine|http://aliendovecote.com/]] //and// [[Leon Arnott|http://l.j-factor.com/]]<<endtimedreplace>>\n\n<<timedreplace 14>>~~//A twine by// [[esdin|https://twitter.com/esdin]]~~<<endtimedreplace>>
<<screenShake 6000>><<silently>><<set $glitch = 0>><<set $pulse = 0>> <<set $limp = 0>>\n<<endsilently>><<timedreplace 12>>A glitch in the code\n<<timedinsert 4>>Actuators pulse strongly<<endtimedinsert>>\n<<timedinsert 8>>His body falls limp<<endtimedinsert>><<replacewith>><<display 'interact4'>><<endtimedreplace>>\n
<<silently>><<set $meat = 0>><<set $void = 0>> <<set $purpose2 = 0>>\n<<endsilently>><<timedreplace 12>>Alone with dead meat\n<<timedinsert 4>>A growing void inside me<<endtimedinsert>>\n<<timedinsert 8>>What is my purpose?<<endtimedinsert>><<replacewith>><<display 'interact5'>><<endtimedreplace>>\n
<<silently>><<set $phermones = 0>><<set $subroutines = 0>> <<set $purpose1 = 0>>\n<<endsilently>><<timedreplace 12>>His phermones compel\n<<timedinsert 4>>Subroutines come into play<<endtimedinsert>>\n<<timedinsert 8>>What is my purpose?<<endtimedinsert>><<replacewith>><<display 'interact2'>><<endtimedreplace>>\n
<<silently>><<set $heartbeat = 0>><<set $flesh = 0>> <<set $powerless = 0>>\n<<endsilently>><<timedreplace 12>>His heartbeat quickens\n<<timedinsert 4>>Flesh and pseudo-flesh combine<<endtimedinsert>>\n<<timedinsert 8>>I am powerless<<endtimedinsert>><<replacewith>><<display 'interact3'>><<endtimedreplace>>\n
<<silently>><<set $bootup = 0>><<set $eyes = 0>> <<set $slave = 0>>\n<<endsilently>><<timedreplace 12>>A boot up sequence\n<<timedinsert 4>>Fresh eyes focus on the world<<endtimedinsert>>\n<<timedinsert 8>>I am born a slave<<endtimedinsert>><<replacewith>><<display 'interact1'>><<endtimedreplace>>\n
With each thrust it grows\n<<timedinsert 4>>Blood coursing through his body<<endtimedinsert>>\n<<timedinsert 8>>I can feel it [[pulse|interact3]]<<endtimedinsert>><<set $heartbeat = 1>>
All powerful limbs\n<<timedinsert 4>>Limbs to bend steel and crush stone<<endtimedinsert>>\n<<timedinsert 8>>Wrapped around his [[form|interact3]]<<endtimedinsert>><<set $powerless = 1>>