Your already high-risk/low-reward job gets about thirty times more dangerous when you inadvertently release an ancient archdemon into Sanctum City. Armed with only a recent promotion and the begrudging support of your enigmatic boss, Tahira, it's up to you to decide what to do with Siruud the Devourer.

Keep your head above water as you try to break your bind with a dangerous archdemon, either pursuing the perfectionist Tahira who harbours a deep and secret resentment for your demon, or by abandoning everything you know to help Siruud understand what happened the night he was arrested.

- - - - -

This is the very first "draft" of Bad Ritual transitioned into Twine. There may be errors: please let me know of them! The best way is to give me some context: where in the story you were, what option you picked, maybe complete phrases from the glitching passage. I appreciate your help catching oopsies at this time.

The original version of the game is automatically playable in browser from the itch interface, but unfortunately there's no way for me to have two playable files. The Lite version, which has a lighter colour scheme with higher contrast for easier viewing, can be downloaded and merely clicked on to launch in the browser.

If you'd like to support the development of the game, consider donating to my Kofi !!

Install instructions

MOBILE USERS: Testing the downloadable Lite version on my phone yielded mixed results. I wasn't able to launch the game from my downloads (my phone helpfully informing me that there was no app that would open an HTML file 🙄), but once I moved the file to Dropbox (a free cloud storage app) and launched it from there, it gave me the option to launch in browser.

If you can't launch the game from your files, I do recommend trying to launch it from another program. I'm not sure why it didn't work otherwise these details would be more instructive, but if you have problems just let me know.


Bad Ritual.html 694 kB

Development log


Log in with to leave a comment.

Awesome game, though I was confused when it ended after the interaction between the MC and Calrin and Tayn. I loved having different choices for different personalities, though I couldn't help always teasing Siruud XD

I'll have to figure something out for the end screen for sure 😂😅 and I'm glad you like it !! He totally deserves to get owned every now and again.

I loved it soo much!!!! Awesome job <3


Thank you !!!! I'm glad you liked it, thank-you for commenting !!!!!!!!! 💚💚💚💚💚💚💚💚💚

I lov my new Big Demon and cannot wait for more!! Excellent job!!!

Ahh thank you !!! I'm so glad you like him, even in this stage where he's just a bit of a jerk 😂

Oh that was one brilliant read, can't wait for more.
Curious question, how many personality types are there, I am ready to use all my ocs for this

Three total! I kept it with the standard "charismatic, stoic, compassionate" video game personalities for my own sanity. One day I'll have enough spare time to craft the in depth personality system of my dreams lol. Glad you liked it !!!! 🧡🧡🧡🧡🧡🧡🧡🧡🧡


I absolutely loved the game! The characters are amazing, the premise is so good, and your writing is superb! Oh and also, I'm in love with Siruud <3 Keep up the good work, and I'm looking forward to seeing more of this story!


I'm so glad you liked it !!!!  🧡🧡🧡🧡🧡🧡🧡🧡🧡🧡🧡 thank you for taking the time to comment !!!

I really enjoy this format over the choice game version, it's much easier for me to focus and read!


Thank you !! I do too tbh, I was missing the ability to set variables in text instead of listing them out 😅 Thanks for commenting !!! 🧡🧡🧡


love this, every bone in my body tells me to tease siruud like the snarky prick i am and im glad this game lets me. 10/10. would force an archdemon to go grocery shopping with me again.

🧡🧡🧡🧡🧡🧡🧡🧡🧡🧡 is there a better date than pseudo robbing a bulk brand grocery store???? Peak romance. I'm glad you liked it, thanks for commenting !!!!!!!!!!

Holy crap. This story is gorgeous. Such an original concept, and your prose is fabulous. I love my demon boi and my distinguished bisexual priestess lady. This may be the best twine game I've ever seen.

THANK-YOU !!! 🧡🧡🧡🧡🧡🧡🧡🧡🧡 I'm so glad you liked it !!! Thank you for commenting !!!!! 🧡🧡🧡🧡🧡🧡🧡🧡


Dang giiirl, you are working hard! You got 3 games in the works and you're juggling 2 different types of programming (Renpy & ChoiceScript) and real life. As much as i love to see my Siruud, the devourer of eating out my a** in renpy form, i do hope you're taking great care of your well being and your mental health. Juggling IRL work and these more funner (not even a word but idc) works can be hard sis. 

BR's is Twine now so thank god that's a little bit easier to switch between 😂 the worst symptom is that updates take forever to roll out, so as long as people stay cool about that then everything juggles pretty easily, don't worry too much about me! I'm glad you like the game !! Thanks for commenting !!! 🧡🧡🧡🧡🧡


I found this story by accident and  made account on this website just to say how much I love it!!!! I really hope that you're going to finish it because I'm just so excited about how it all ends, and the writing is soo good!


Thank you !!!! Don't worry, I have full intention of finishing it: it just takes longer than typical releases because I'm the only one working on it in my spare time 😅🧡🧡🧡🧡🧡 thanks for commenting !!!!!!!!!!


this is????? SO good???? i love siruud's/mc's dynamic so much its Very Good. i also ended up getting the scene where siruud helps mc w/ their sensory overload and thats just??? so sweet ohmyGod

and also i just rlly appreciate that they/them pronouns were an option

the writing is so good?? this whole game is just hella good my man


I'm glad you liked it !!!! And if only we all had a huge demon dude to help us when we're feeling overwhelmed. I'm also proud to say all my games have they/them options, because it's always kind of a letdown when they're not there. I'm looking to expand into more GN pronouns I just gotta do some Grammar Research.


(2 edits)

Uhm, I think there's a glitch? I got to here and there are no links to the next part so I'm a little confused. I tried restarting and it always stops me at this part. The game is great tho, I love the storyline


the same thing happens in the other route, too. I assume it's because the game's not done, so you just have to wait until it's updated to continue.

Oooooh that makes sense. Thanks for help

Missed this 😅😅😅 yep that's absolutely correct, it doesn't continue when there's nowhere to go. I think next update I'm going to invest some time in adding an end screen, because you're not alone in the confusion !!

It's okay, I can wait, the story is really interesting and I love text based games. Unfortunately, they are usually with a price, so I'm glad I found you. I also read Hybrid, and I love your writing style. Again, no hurry and keep up the good work!


the new version runs very well !! i could've sworn i'd played the grocery shopping chapter and commented but i can't find it on the old site so

love the range of siruud's aliases

looove how snarky, and flirtatious, the banter gets, like mc commenting on eden/siruud's clothing and "so we're in this mess because you wanted to be petty" as well as the exposition "the most sacred rule of non-engagement, holiest in the bulk supermarket"

the thought of eden/siruud standing in the supermarket entrance profoundly confused is hilarious

oohh the suspense of adrien bright and what both tahira and siruud are holding back good good GOOD 

i found a small(?) repetition and hopefully screenshots are a good way to relay this


Ohhhhhhh, thank-you, I think there's probably a few of those where I went "no surely that's too long" and copy/pasted without removing the extra text lol. I've caught one already and there's a weird little passage area where one is conspicuously missing just purely because I fucked up. And I had this posted to itch before it switch to Twine but apparently it wasn't allowed to be posted anywhere but the forum as a COG, which was why I switched.

Also THANK YOU !!! 🧡🧡🧡🧡🧡🧡🧡🧡🧡🧡🧡🧡🧡🧡🧡🧡🧡🧡🧡🧡🧡 Also who among us, now of all times, would engage with anyone in a grocery store. Before it was just polite to let people do their thing but now?


I can't believe how hooked I am already! The writing is so great, can't wait for the full release! Hoping it gets a little steamy :D because Siruud seems totally the dominating type :D :D :D 


Maybe not as steamy as some people are hoping, but there's more outright romance in the future 😂 thanks for commenting, I'm glad you like it !!!


I've played up to an end, and I absolutely adore this game!! The characters are interesting and lovable, the writing is clean, skilled, and funny, and the way the game allows you to develop your personality and who you are is so nicely done!! This is a stunning game the completely embodies my love for twine games! Thank you so much for making this!

AHH I'm glad you like it !! And I'm glad the personality is coming through, I'm always a little lowkey worried it becomes word soup after a while 😅😅😅😅😅 🧡🧡🧡🧡🧡🧡 And I'm glad that it works well in Twine !! It was a Twine game that moved to a different engine and then back so it's been a REAL journey.


About your default name problem, but maybe I misunderstood what exactly the problem is:

You can just do the same with the default name as you did with other variables like magic, by typing a default name inside the quotation marks instead of leaving them empty. For example:
(set: $firstname to "Alix")(set: $lastname to "Dalton")

You can also have a default text displayed in the text input boxes by writing it in the quotation marks of the value segment. That will not yet set the variable to the displayed text though. That only happens upon executing the confirm button:
<input class="box" type="text" name="firstname" value="Alix">


See, I was doing the (set:) but it would only set ONE of the names for some reason? The second name will ALWAYS be 0. I tried both setting the value on click to the next passage, and setting them at the start of the next passage, and either way it would always set the first name and never the last. And then if I try setting a default value then it'll for sure show up in the box, but unfortunately if that "confirm" button isn't clicked then nothing is set and the whole name is 0.

Thanks for suggesting the value thing though, I hadn't thought of that. I think that would work but it's something to do with how the javascript is being made to work with Twine. It might be inevitable that those 'confirm' MUST be clicked. I could always set a default name when I initialize the variables... thanks again 🧡


Have you tried out a combination of (set:) and (prompt:) yet? It's a bit intrusive as (prompt:) makes a text box pop up instead of it being smoothly set inside of the text. And cause the prompt pops up as soon as it's loaded, I combined it with a (link:) that only reveals/loads the rest of the passage upon clicking it. You can leave the part where I wrote "Charlie" empty, that'd just be the default text displayed.

I don't have that much experience with Harlowe though, I've so far mostly worked with SugarCube. Might be that there are better ways for this:

You've always held the deeply insignificant belief that the text is wrong: your (link: "first name...") [==
(set: $firstname to (prompt: "Your first name...", "Charlie"))

...seems to be a little larger than your (link: "last name...") [==
(set: $lastname to (prompt: "Your last name...", "Birmington"))

...but when you'd asked if maybe a mistake had been made, the man at the desk had said it didn't matter...


I actually specifically did it this way to avoid using prompt because I hate the timing of the prompt (ie I have to give names their own passages because they will pop up right away) and I hate that it clashes with the aesthetic of the game and breaks immersion. This isn't a perfect solution but I have used prompt and wanted this code on purpose to avoid it 😅😅 


Okay, my last attempt! This must be annoying, I'm sorry.
First, the variables $firstname and $lastname have to be set/created somewhere so that the variables actually have a value, even if it's "".
(set: $firstname to "", $lastname to "")

Then on the passage where the player inputs their name, I tried to figure out how to force the player to do so. Allowing the player only to continue once they hit those "Confirm" buttons.

My solution now was to turn [that was that.] into a named hook.
Then I created an (even:) that checks whether $lastname and $firstname have the value "" or not.
Once both variables have a value that is not "", the named hook gets replaced with a passage link.
Meaning the player can only continue once both names have been set.

See below:

...but when you'd asked if maybe a mistake had been made, the man at the desk had said it didn't matter, and [that was that.]<goto|
(event: when ($firstname is not "") and ($lastname is not ""))[(replace: ?goto)[[[that was that.->prologue_6 start]]]]


Oh no it's not annoying !! I'm glad to have another set of eyes on it !! And it probably would be good to at least be able to inform people when they haven't hit the right buttons huh, although I still would rather just set a name for them. I think my big issue isn't so much worry that people will forget, more or less that there's a subset of readers who aren't interested in picking a name at all and would usually opt for a default.

am initializing first and last name to be blank, but I did so with the intent of setting a name if the names had not been set using confirm, which circles us back around to "it only works for ONE of the variables for no particular reason". My prior idea to set a "default" name while initializing the variables and then allowing them to be overwritten with the confirm button yielded results though !! Not functioning results, but I'm finding that regardless of how first and last name are intialized, the javascript will always overwrite them with null value 0 if the confirm button isn't clicked. Even setting the value in the HTML is moot if the confirm buttons aren't clicked.

OH I JUST DID IT !! I made the (set:) on the subsequent page check for both a variable that was equal to zero and a variable that was completely unset. I think the reason for it only working for one or the other when I attempted one way or another is because I think the code is meant to serve one name box on one page, s I think one name was being set t value blank, or whatever value was in the HTML, and the other one wasn't being set at all.

Or, whatever. I'm going to upload that change, thanks for talking through it with me !!


I think. I love this. And probably Siruud. Definitely Siruud. ;-;  


If only he was worthy 😂🧡

(1 edit) (+1)

I've been a fan of your work for a fairly long while, but I've always been too timid to comment, so I'm just going to go for it. I love this "new" project!! The setting is really interesting and unique, the writing is snappy and clean and fun to read, and I am deeply invested in the 'reluctant buddy-cop' vibe I'm getting from Siruud and MC's "partnership." 

Thank you so much for sharing your fantastic work with us; I'm really excited to see where this goes!   <3   :) 


AH I'm glad you commented !! And I'm glad you're liking Siruud !!!! 🧡🧡🧡🧡🧡


I knew it was still in development when I started but noooo I want more XD. I didn't realise I was reading romance at first because I was too excited to read the tags lol but it was really good! Siruud kind of reminds me of Howl from Howls Moving Castle. They just kind of give off the same vibe especially the book version of Howl. Anyway can't wait for more <3


Siruud WOULD end up being a himbo from Wales 😂😂 all this mystique WASTED...I'm glad you liked it !! Thanks for commenting !!!!! 🧡🧡🧡🧡


You've been one of my favorites for a long time, but re-reading this has reminded me that I absolutely love your writing. 

And Siruud. 

I can't wait for him to realize he's in love with MC. 

I found quite a few of the same issues the first poster did. Looks like just missing some opening/closing tags for your italics, so hopefully won't be too much work. 

I can't wait for more Manor Hill and Hybrid! And this new one I just noticed! Just to be sure, the demo is ended right after meeting the two agents outside the subway, correct? There is no option to continue or restart. 

I love this format and hope to see a lot more works migrate that way. 


Yep, that's where it ends !! I gotta make a restart button, I thought Twine would work differently once it was run but I'm being proven wrong real time 😅😅 it's a pretty fast fix though so at least by tomorrow it'll be fixed !!


I love it!! At first I was hesitant with the color scheme of red font with a black background (eye strain), but was pleasantly surprised that they brighten to white upon a mouse rollover. It also helps distinguishing when there are multiple options to choose from. 

Question though, I've never used this type of format/platform, so how does one restart the game? I see the save button, but no menu or even load


I think I made a mistake with regards to how Twine ends up working when actually in browser. With the HTML file itself I could keep launching and it would start from the beginning every time: I don't think it does that here 😅😅 quick fix !!

This format is fun and the writing is epic as always! Look forward to seeing what happens next.

Did find a small issue in the text (think it was italic coding that broke):

Siruud's head snaps towards you as if you have been around her without him for ieven a moment,/i and you glower back at him.


Ahh yeah x.x It's an issue with the format it was in vs the format it's in now. Twine uses HTML tags (so tags surrounded by <>) but the previous format used tags in []. It's not a matter of forgetting tags so much as they're just formatted wrong 😅😅 thought I got them all, thanks for letting me know !!