//Tiel slips out the door and breaks into a jog down the cobblestone street, leaving his parents' warehouse—and their bickering—behind. Leaving, too, the weight of the hopeless gloom, of the fear that that life is all that awaits him: too much work for too little money, stuck with someone he needs but can barely stand, knowing that he'll go to sleep only to face it all again the next day.
But now that the work day is over, he's free to run toward the promise that things might be different for him—toward the person he loves, the one who makes him smile, who he thinks he could spend every day with and never grow tired of. Heron.//
(link: "➤")[==$fade[//Ey'll be home by now, probably still wearing eir apron after cooking dinner for em and eir mum. She'll be upstairs in the narrow townhouse, tinkering away, oblivious to their reunion downstairs. And Heron will be expecting him, because he comes by every evening, and stays as long as he can, until Heron eases away and says softly, "I should get to bed..." and Tiel kisses em one last time before retreating out the door, still dreading the coming day but slightly better fortified to face it.//
[[➤->2]]]<br>
<br>
<div class="center">
<div class="title">(text-size: 3)+(text-color: #3a1a6b)[''Cycle'']</div>
<br>
(button:"==X==")[[Start->1]](button:"==X==")[[About]]
(text-size: .5)[//A game by Tabitha O'Connell
Cover photo by Sumit Saharkar via Unsplash//]"I've felt like this for a while, okay? Kind of thought you might have noticed... But look, this is what I want, so please, can you just go?"
"...All right. Fine."
//Dumbfounded, Tiel storms out, leaving Heron behind.//
(link: "➤")[==$fade[//This time, he strides toward a solution. Back home, up the stairs to his tiny room, where he unlocks the jewelry box that holds his pocketwatch.
It's not much to look at, its antiquated ornateness marred by tarnish and scratches. But it's his most valuable possession, left to him by his grandmother when she died, along with instructions for its use. It's never let him down before.
With a deep breath and something like a prayer, Tiel turns the hands back to [[7 o'clock.->reset 1]]//](set: $loopcount to it +1)//The world blurs around Tiel, and when it clears, he's standing outside Heron's house again with his hand on the doorknob. He takes a deep breath, and once again, he opens the door.
There's Heron again, wearing the same serious expression. This time, Tiel://
(if: $accend)[// [[Is going to do things differently. He lets em speak.->path 1]]
//](if: $mad and not (visited: "outburst") and not (visited: "memory"))[ [[//Breaks.// "How the fuck can you treat me like this?!"->outburst]]
](unless: $love and $why)[// [[Lets em speak.->path 1]]
//](unless: (visited: "path 2"))[//[[Heads the whole thing off.->path 2]]
//](else:)[(if: $show)[(if: $notice or $love)[(link-reveal: "//Heads the whole thing off.//")[
$fade[(if: $love and not (visited: "path 4"))[ [[//...By stepping forward and hugging Heron.// "Hi. It's really nice to see you."->path 4]]
](if: $notice)[ (if: (visited: "3a") and $why and not (visited: "3b"))[ [["Hey, so, I've noticed you've been unhappy..."->3b]]
](else:)[(if: not (visited: "path 3"))[ [["Hey, so, I've noticed you've been unhappy. And I want to fix that."->path 3]] ]
]](if: $nicetry and not (visited: "memory"))[ [["I was just thinking about the day we met. Remember?"->memory]] ]]]]]]//Heron says the exact same words as before, (if: $accend)[but this time the pain of rejection is replaced by a welling up of sadness](else:)[and they sting almost as much].//
"Tiel... we're done. This isn't working for me anymore. We shouldn't be together."
//Tiel responds://
(if: not $love)[ [["Heron, wait—please. I love you."->1a]]
](if: not $why)[ [["Can you at least tell me why?"->1b]]
](if: $accend)[ [["...Okay. I understand."->acceptance end]] ](set: $notice to true)"Wait—I know what you're going to say. You're done with me—with us. But can we talk about it? Instead of you just... leaving me?"
//Heron pauses, mouth open, clearly caught off guard.// "So you noticed."
"Um, yeah. And I want things to be different."
(link: "➤")[==$fade[//Heron sighs.// "Tiel, it's too late for that. The best way for things to be different is for us to split up."
$reset]{
(set: $reset to "//Tiel turns away, winding the watch back to [[7 o'clock.->Reset]]//")
(set: $loopcount to 0)
(set: $fade to (t8n: "fade"))
(set: $notice to false)
(set: $why to false)
(set: $mad to false)
(set: $outburst to false)
(set: $love to false)
(set: $nicetry to false)
(set: $accend to false)
(set: $e1 to false)
(set: $e2 to false)
(set: $e3 to false)
(set: $3b to false)
(set: $show to true)
}(set: $notice to false)"Oh?" //Heron's eyebrows rise skeptically.// "And what do you propose to do to 'fix it'?"
(if: not $why)[ [["Well, you have to tell me *why* you're unhappy..."->3a]]
](else:)[ "I know you feel like I don't listen, or take you seriously. I'm always focused on myself, and I don't bother thinking about what you want. [[But I'm going to change that."->3b]] ]"Because you have no idea, huh? Fuck off, Tiel. We're done."
$reset(set: $why to true)(set: $notice to true)"All right. You want to know why? Because you never listen to me. You never take me seriously. You're always so set on what you want, you never take the time to consider what //I// want."
"That's not fair!"
//Tiel says it instinctively, forgetting his goal for a moment.//
"See? You're doing it right now."
//Heron doesn't even sound angry, just... despairing. Tiel swallows. He turns away, winding the watch back to [[7 o'clock.->Reset]]//(set: $notice to false)(set: $3b to true)(if: (history:)'s last is "Reset")["...I know you feel like I don't listen, or take you seriously. I'm always focused on myself, and I don't bother thinking about what you want. But I'm going to change that."
]//Heron doesn't look appeased.//
"But if you knew all that stuff... why haven't you done anything about it before now?"
"I... only just realized today. It hit me when I was thinking some things over. But I'm going to be better, I promise. I'm going to listen, and stop being so selfish..."
(link: "➤")[==$fade[//Heron sighs.// "Tiel, I wish I could believe you. But... I'm sorry, I just don't."
(if: $loopcount >=4 and not $mad)[(link: "➤")[(display: "mad")]
](else:)[$reset]]"You do?"
//Heron looks shocked, and that hurts more than anything else—that Tiel's acceptance of eir wishes would come as such a surprise.//
"Yeah. I know I haven't been great. And I know that ending this is what you want. So... I'll go."
(link: "➤")[==$fade[//For a moment, the expression on Heron's face makes Tiel think that maybe he's actually cracked it this time—that maybe, being willing to let go is what will allow him to keep Heron. But only for a moment, because then Heron blinks, and nods, and softly whispers,// "Okay."
[[➤->acc end2]]](set: $outburst to true)(set: $accend to true)//Heron stares at him.// "What? What are you talking about?"
"You think //I'm// selfish, but now you just want to kick me aside like a piece of trash? You weren't even going to explain yourself, you weren't going to give me a chance."
"Tiel, I don't understand..." //Heron takes a step back. Ey looks at Tiel mistrustfully now, which hurts like hell and only makes him angrier. He surges forward, closing the distance between them.//
"Don't pretend like you don't know! You were just about to tell me to get the fuck out of your life."
(link: "➤")[==$fade[//Heron's face is frozen in a surprised expression. Ey doesn't deny it. Did Tiel really think ey would?//
"Never mind." //He spins on his heel, striding toward the door, pausing to look back with his hand on the knob.// "It doesn't fucking matter. If this what you want, then fine."
//With that, he [[storms out.->outburst 2]]//]//It isn't working. It isn't working, and it's only making things worse. Tiel begins walking again, trudging this time, what lies ahead and behind equally unappealing. It would be so easy to rewind time just once more, erasing his harsh words, erasing Heron's fear, but the thought of turning the watch back now makes him feel sick. He doesn't deserve Heron, nor does he deserve to wipe his mistakes from eir mind—not this time. Let Heron remember him like this, and be glad to be rid of him. That, he does deserve.
[[The End]](set: $e3 to true)//=><=
~Ending (if: $e1)[3/3
](if: $e2)[1/3
](if: $e3)[2/3]~
//Thank you for playing!//
(button:"==X==")[(link: "Restart")[(restart:)]](button:"==X==")[[About]] (set: $nicetry to true)//Heron lets Tiel wrap em in his arms, but ey stands stiff and doesn't hug him back. Tiel presses on.//
"Seeing you is always the highlight of my day, you know."
//Heron eases away.// "That's nice, but... we need to talk."
//This time, Tiel pretends.//
"Oh? What is it?"
"I... have some concerns. I think... we should split up."
(if: $loopcount >=4 and not $mad)[ [[➤->mad]]
](else:)[(link: "➤")[==$fade["What? No, Heron, you can't mean that. I love you. Come on, we can make this work."
"I don't think we can."
$reset]](set: $accend to true)(set: $show to false)"Oh yeah..." //Heron actually smiles. Of course, ey doesn't remember how it went originally, how Tiel's attempt to flirt at the market just made em uncomfortable, or the countless cycles it took to finally make it perfect. But it was perfect, [[in the end.->the memory]]//
"You know I love you, right? I know I'm not always the best at showing it, but I really do. I care about you a lot."
//Heron's smile shifts, softens. Tiel continues.//
"And I know I can be self-absorbed. I haven't been fair to you, but I've been doing a lot of self-reflection, and I promise, I'm going to do better. Because you deserve it."
//He holds his breath.//
(link: "➤")[==$fade[//After a long, silent moment, Heron slides eir hand into his.// "I'm glad you said that. Thank you."
//It actually worked. Tiel:
(link-reveal: "Feels an unexpcted wave of guilt.")[(if: (visited: "outburst"))[ Heron has no idea that, in another reality, Tiel was just shouting at em... ] [[He turns away and winds the watch back.->Reset]] ]
[[Kisses Heron.->manip end]]//]//(link-reveal: "Content note")[: Deception and manipulation in a romantic relationship]//
This game combines aspects of my two previous longer Twine games, //You're a Time Agent!// and //Structural Integrity//, with its characters based on two from my novella //Dirt-Stained Hands, Thorn-Pierced Skin//. Some of the feedback on //Structural Integrity// from the 2023 Spring Thing had me wanting to make a game about (link: "(show spoiler)")[someone trying to fix a relationship that's irreparably broken]—and the <a href="https://itch.io/jam/anti-romance" target="_blank">Anti-Romance Jam</a> was the perfect opportunity! Other Spring Thing feedback also had me leaning in to the idea of letting the player serve as a sort of director for the story, rather than playing as the main character, so this is my first game with third-person narration.
I hope you enjoy(ed)!
(button:"==X==")[[Back->start]]//Tiel holds Heron close, savoring the taste of success. He did mean it about doing better(if: $outburst)[; after catching that glimpse of his worst self, he never wants to treat Heron remotely like that again. And with the watch, as far as Heron will know, he never will](else:)[, although he really doesn't think he's been as bad as Heron said. But some small part of him knows that this isn't the last time he's going to need the watch].
[[The End]]// (set: $e2 to true)//Tiel knocks on Heron's door but doesn't wait for a response before opening it. He's barely inside before Heron approaches, and Tiel grins at em and steps forward, ready to take eir face in his hands and kiss em, but Heron's hands lift to his chest and hold him back.//
"Hi. Can we... talk?"
(link: "➤")[==$fade[//Tiel eyes em skeptically, wondering what he did this time. Is he here too early? But no, the clock in the square is just finishing chiming seven, that's normal, a little later than normal, even, because his parents kept him late tonight.//
"Okay..." //Tiel pushes the door shut, then leans back against it, looking at Heron expectantly.// "Well, let's have it. Whatever fuck-up I've commited, I'm ready to hear it and do my penance."
[[➤->3]] ]//Heron doesn't smile; eir expression becomes rather pained, and now Tiel is starting to //worry// a bit, because this is odd and he had so been looking forward to a pleasant, easy night...//
"Tiel..." //Heron's eyes dart away before ey draws in a deep breath.// "We need to be done. This isn't working for me anymore. We shouldn't be together."
(link: "➤")[==$fade[//Ey sounds so certain, so confident. Tiel, on the other hand, is absolutely blindsided.//
[["What the //fuck//, Heron?"->4]]](set: $love to true)//Heron only shakes eir head, looking more sad now.// "It's too late for that. Goodbye, Tiel."
$reset//This time, Tiel keeps walking away from Heron's house instead of stopping to immediately reset the watch. He's still fuming, furious at how unfair Heron is being, and for a moment, his certainty about what he wants wobbles. Maybe, if Heron is going to act like this, he doesn't want to be with em after all.//
(link: "➤")[==$fade[//But then he remembers the fear in eir eyes, and has a thought so awful he can't even articulate it. He's come to a halt, his hand clenched unconsciously around the watch in his pocket. With a deep breath, he decides to:
[[Give up.->give up end]]
[[Wind the watch back to seven o'clock.->Reset]]//](set: $mad to true)"This isn't fucking fair!" //Tiel bursts out. He thought he'd have gotten //somewhere// by now; he's always succeeded eventually when he's used the watch before. Their first meeting, their first fight... But this time Heron is giving him nothing. If (if: (history:)'s last is "path 4")[telling Heron how much he cares about em](else:)[owning up to his faults] won't work, what will?
Heron only shakes eir head.//
"Please, just go."
//Tiel does, and winds the watch back to [[7 o'clock.->Reset]]////Tiel walks out, all too aware of the watch in his pocket as he leaves Heron's house for the last time. He could take it home, lock it away for the next time he fucks up at the warehouse and earns his parents' wrath, or makes a fool of himself trying to flirt with someone. But he's not sure, once he's home and alone with nothing to look forward to, if he'll be able to resist winding those hands back to when he still had Heron(if: (visited: "memory"))[—especially now that he knows exactly what words to say to get em back...](else:)[, and trying again to keep em in his life.]//
(link: "➤")[==$fade[//Slowly, he pulls the watch from his pocket. He opens it, but he doesn't turn the hands. Instead he lets it fall to the cobblestones, and before he can have second thoughts, smashes it beneath his heel.
[[The End]]// (set: $e1 to true)]Eventually, Tiel had gotten the timing right to slip a flower into Heron's basket without em noticing, and when ey did see it and looked around, confused, Tiel was waiting to give em a shy wave before turning away, as if that was as far as ey'd meant the interaction to extend. But then Heron had approached him, touched his shoulder, held out the flower.
"What's this for?" ey'd asked, brow wrinkled, and Tiel had wanted to kiss em right then.
"For you, silly. I've noticed they're your favorite."
A blush had spread over Heron's cheeks as eir eyes met Tiel's again. "You've noticed me?"
(text-style:"mirror")[[➤->memory]]//The world blurs around Tiel, making him momentarily dizzy. When it clears, he's standing outside Heron's house again with his hand on the doorknob. Time for his second—and however many else he needs—chance.
He takes a deep breath, and once again, he// (link-reveal: "//opens the door.//")[==
$fade[//There's Heron again, and this time, Tiel notices the serious expression on eir face. He:
[[Lets em speak.->path 1]]
[[Heads the whole thing off.->path 2]]//]