<script>document.body.setAttribute("class","day");</script>\
{<!--helper macros-->
(set: $choice to (macro: str-type _name, array-type _options, [(output-data: "(hook: '"+_name+"')[(cycling-link: 2bind $"+_name+", \""+ (joined:"\",\"", ...(shuffled: ..._options))+"\")]")]))
(set: $lock to (macro: str-type _name, [(output-data: "(replace: ?" + _name + ")[$"+_name+"]")]))
(set: $fire to (macro: str-type _text, [(output-data:"|fire>["+_text+"]|invis>["+_text+"]")]))
(set: $scroll to (macro: [(output-data: "(live: 10ms)[(stop:)<script>document.getElementsByTagName(\"tw-story\")[0].scrollIntoView({ behavior: \"smooth\", block: \"end\" });</script>]")]))
(set: $title to "The Djinn")}\
(animate:?passage, "blur")\
\
## ''$title''
by Dirk Meijer
(transition-depart:"blur")[[Start->bedouin1]]
(transition-depart:"blur")[[What is this?->Help]]
<script>document.body.setAttribute("class","day");</script>\
(animate:?passage, "blur")\
Four days after departing Casablanca, you reach the penultimate stop of your journey, a Bedouin camp on the desert's edge.
A man approaches you.
//"Salām traveler! Are you here on pilgrimage?"//
You \
($choice: "bedouinresponse", (array:
"confirm his suspicion",
"stay silent",
"introduce yourself",
"feign ignorance"
)).
(link:"Continue")+(transition: "blur")[=\
($lock: "bedouinresponse")($scroll:)\
(if:$bedouinresponse contains "confirm")[He nods knowingly.
//"//]\
(else-if:$bedouinresponse contains "silent")[He seems take your silence for confirmation.
//"Your business is your own, stranger, I did not mean to pry. //]\
(else-if:$bedouinresponse contains "introduce")[//"Blessings on you, as well. My name is Amin, I am the head of one of the three families in our tribe. Your name is not local, you are a pilgrim then?"// He does not wait for your answer.
//"//]\
(else-if: $bedouinresponse contains "ignorance")[He frowns. //"These are dangerous lands, stranger, be careful where you find yourself. Though I suspect you knew that."//
He continues when you do not respond, //"//]\
[//Half a day's trek to the south-east you will find a lone date tree, it is hard to miss. Rest your eyes beneath the tree, He will come to you in your dreams."//]
You thank him(if:$bedouinresponse contains "ignorance")[, begrudingly].
(link:"Continue")+(transition: "blur")[=\
($lock: "bedouinresponse")($scroll:)\
//"I have not done you any favors(if:$bedouinresponse is not "introduce yourself")[, stranger](else:)[, friend]. I would advise you to turn back, but I have met enough pilgrims to know that you will not. But I will do you a favor now, stay the night with us, you will need your strength tomorrow."//
(transition-depart:"blur")[[Continue->bedouin2]]<script>document.body.setAttribute("class","day");</script>\
(animate:?passage, "blur")\
''$title'' is a semi-interactive work of micro fiction.
Throughout the text you will see choices to make, like this:
//I left my home in the season of ($choice: "season",(array: "spring","summer","autumn","winter")).//
Click on these change them.
There are no right or wrong choices, there is only a story to make your own.
©2025 Dirk Meijer
Made with (link-repeat: "Twine")[(open-url: "https://twinery.org")].
(transition-depart:"blur")[[Back->Menu]]<script>document.body.setAttribute("class","dusk");</script>\
(animate:?passage, "blur")\
The sun begins to set over the dunes when you have settled in and unpacked.
You decide to \
($choice: "activity", (array:
"join the campfire gathering",
"write an entry in your journal",
"go to bed early",
"wander around the camp"
)).
(link:"Continue")+(transition: "blur")[=\
($lock: "activity")($scroll:)\
(if:$activity contains "campfire")[The tribe's adults are gathered around the fire, discussing the day's business, telling stories, making laughter. A young man asks you to contribute a story of your own.(set: $listener to "them")(set: $listenerposs to "none of their business")]\
(else-if:$activity contains "journal")[The pages are weathered and torn, and you are close to running out of paper, but you are also close to the end of the journey. You prepare your quill and find a comfortable sitting position.(set: $listenerposs to "not suitable to be immortalized here")]\
(else-if:$activity contains "bed")[You lay down between the animalskins in the tent assigned to you. It is more comfortable than you had imagined now that the air has cooled.(set: $listenerposs to "fruitless to worry")]\
(else-if:$activity contains "wander")[You come across a group of children playing some game with a ball. The rules seem neither here nor there.
One girl is not playing with the others. She runs over when she sees you and asks you who you are and where you came from and what it's like where you're from.(set: $listener to "her")(set: $listenerposs to "not a story for a child")]\
You (if:$activity contains "journal")[could write](else-if: $activity contains "bed")[keep thinking](else:)[could tell $listener] about ($choice: "tellabout", (array:
"your homeland",
"your eldest daughter",
"your infant son",
"your journey so far",
))\
(hidden:)|hidden>[(if:$tellabout contains "homeland")[, its lush river deltas and thick forests probably unimaginable to these desert dwellers.]\
(else-if:$tellabout contains "daughter")[, the court musician who lives in the palace, how proud she makes you.]\
(else-if:$tellabout contains "son")[, how he overcame childhood illness and grew healthy, how proud he makes you.]\
(else-if:$tellabout contains "journey")[, the seas and mountains you crossed to come here and the people you met.]]
(link:"Continue")[=\
($lock: "tellabout")\
(show: ?hidden)\
(transition: "blur")[=\
($scroll:)\
(if: $activity contains "bed")[You make yourself stop.](else:)[But you don't.] It is ($choice: "reasonnottotalk", (array:
"(if:$activity contains 'bed')[not the right time](else:)[not a worthwhile story]",
"$listenerposs",
"too painful to think about",
"getting late, you should (if: $activity contains 'bed')[try to sleep](else:)[head to bed]",
)).
(link:"Continue")+(transition: "blur")[=\
($lock: "reasonnottotalk")($scroll:)\
(if: $activity contains "bed")[The sounds outside quiet down and you find yourself tired enough by now.](else:)[As you retire to the tent assigned to you, you lay down between the animalskins. It is more comfortable than you had imagined now that the air has cooled.]
You drift off to sleep...
(transition-depart:"blur")[[Continue->bedouin3]]<script>document.body.setAttribute("class","day");</script>\
(animate:?passage, "blur")\
You wake up to a young girl standing over you(if: $activity contains "wander")[, the inquisitive child from last night]. She does not waste any time before asking:
//"What will you ask the Djinn?"//
You wonder ($choice: "girlmorning",(array:
"how you can explain this to a child",
"what this child would know about the Djinn",
"how you can get out of this conversation"
)).
(link:"Continue")+(transition: "blur")[=\
($lock: "girlmorning")($scroll:)\
But before you can finish your thoughts, let alone speak, the child is whisked away and berated.
A little later she returns, offering a piece of honeyed bread as a silent apology.
You thank her for the bread |clause_a>[(if:$girlmorning2 contains "nothing")[but](else:)[and]] tell her ($choice: "girlmorning2", (array:
"life is complicated for grown-ups(re-run:?clause_a)",
"you have lost people close to you(re-run:?clause_a)",
"the world is not always a good place(re-run:?clause_a)",
"nothing(re-run:?clause_a)"
))|clause_a>[(if: $girlmorning2 contains "nothing")[](else:)[ and that you hope the Djinn will ($choice: "girlmorning3",(array:
"help make sense of things",
"grant you a wish",
"make things better",
))]].
(link:"Continue")+(transition: "blur")[=\
($lock: "girlmorning2")($lock: "girlmorning3")($scroll:)\
(if: not ($girlmorning2 contains "nothing"))[\
(if: $girlmorning3 contains "wish")[//"That's silly, He does not grant wishes. //]\
(else-if: $girlmorning3 contains "sense")[//"So you do have a question to ask? //]\
(else:)[//"//]\
//My baba says the Djinn is a trickster and we should not trust Him."//
An adult listening in on your conversation shouts something to let the girl know she has overstepped again. ]She casts her eyes downward and nibbles her own piece of bread.
(transition-depart:"blur")[[Continue->desert1]]<script>document.body.setAttribute("class","day");</script>\
(animate:?passage, "blur")\
You find the lone date tree exactly where (if: $bedouinresponse contains "introduce")[Amin](else:)[the man] said it would be. You set your pack down, sit in its shade, and cover your eyes.
Falling asleep is a bigger challenge. You can't help but think about \
($choice: "fallasleep", (array:
"the journey here",
"your family",
"the stories you heard about the Djinn",
))(link:"
Continue")[=\
($lock: "fallasleep")($scroll:)\
(if: $fallasleep contains "journey")[, you have been traveling for seven months, across seas, over mountains, along rivers and roads, and now through a desert. ]\
(else-if: $fallasleep contains "family")[, you did not even arrange proper burials because you could not face the pain. ]\
(else-if: $fallasleep contains "stories")[, the devil of the desert who is bound by supernatural law to answer the questions of petitioners. ]\
(transition: "blur")[=\
Perhaps you were a fool to come here.
You ($choice: "certain",(array:
"were so certain(rerun: ?certaintense)",
"grasp tightly to the narrative(rerun: ?certaintense)",
"chose to believe(rerun: ?certaintense)",
"are starting to doubt(rerun: ?certaintense)",
))|hidden)[ that the answer to your question |certaintense>[(if: $certain contains "so certain")[would](else-if: $certain contains "believe")[would](else:)[will]] bring you peace.]
(link:"Continue")+(transition: "blur")[=\
(show: ?hidden)($lock: "certain")($scroll:)\
What if it does not?
(transition-depart:"blur")[[Continue->djinn]]<script>document.body.setAttribute("class","dark");</script>\
(animate:?passage, "blur")\
You wake in starry darkness, ruled over by the crescent moon.
As you get your bearings, you see the Djinn standing before you, ten feet tall with glowing embers for eyes, true to His terrifying reputation.
(link:"Continue")+(transition: "blur")[=\
($scroll:)\
(text-size: 1.4)[|fire>[Make this interesting, mortal, I do not care to be summoned for petty nonsense!]]
(link:"Continue")+(transition: "blur")[=\
($scroll:)\
It takes you a second to regain your composure and find your voice.
You ($choice: "djinn1", (array:
"ask(rerun:?toknow)",
"demand(rerun:?toknow)",
))|toknow>[(if: $djinn1 contains "demand")[ to know]] why ($choice: "djinn2", (array:
"your children(rerun:?lives)",
"your family(rerun:?lives)",
"your community(rerun:?lives)",
"you(rerun:?lives)",
"anyone(rerun:?lives)",
)) had to suffer the ($choice: "djinn3", (array:
"plague",
"drought",
"war",
"famine"
)) that took |lives>[(if: $djinn2 is "you(rerun:?lives)")[so many lives](else:)[their lives]].
(link: "Continue")+(transition: "blur")[=\
($lock: "djinn1")($lock: "djinn2")($lock: "djinn3")($scroll:)\
(text-size:1.1)|fire>[You wish to know (text-size: 1.6)+(text-style:"shudder")[WHY?!]]
(transition-depart:"blur")[[Continue->djinn2]]<script>document.body.setAttribute("class","day");</script>\
(animate:?passage, "blur")\
As you return to the camp, the girl from (if: $activity contains "wander")[last night and ]this morning spots you and runs in your direction. Her face gleams with curious anticipation, she is waiting for a sign of either peace or peril in your expression.
Seeing the child makes you realize how ($choice: "ending", (array:
"naive",
"desperate",
"selfish",
"stubborn",
)) you have been (link: "
Continue")[=\
($lock: "ending")($scroll:)\
(if: $ending contains "naive")[to expect a deity to understand the meaning of a human life]\
(else-if: $ending contains "desperate")[to turn to another people's deity for the answer to an unanswerable question]\
(else-if: $ending contains "selfish")[to undertake this journey on a whim instead of staying and rebuilding your community]\
(else-if: $ending contains "stubborn")[to leave an oppressive reality behind in search of a fantasy]\
.
(transition: "blur")[=\
($scroll:)\
You ($choice: "ending2", (array:
"smile(rerun:?eyes)",
"sigh(rerun:?eyes)",
"scowl(rerun:?eyes)",
"avert(rerun:?eyes)",
)) |eyes>[(if: $ending2 contains "avert")[your eyes]](link: "
Continue")[=\
($lock: "ending2")($scroll:)\
(if: $ending2 contains "smile")[ and give her a handful of dates, as if to reassure her that all is well with the world.]\
(else-if: $ending2 contains "sigh")[ and walk past her, taking the first step of your journey back home.]\
(else-if: $ending2 contains "scowl")[ and give her a handful of dates, as if to prepare her for the harshness of this world.]\
(else-if: $ending2 contains "avert")[ and walk past her, not wanting her to know too much of the world she lives in for as long as possible.]\
(transition: "blur")+(transition-delay: 3s)[(transition-depart:"blur")[[END->Menu2]]]<script>document.body.setAttribute("class","dark");</script>\
(animate:?passage, "blur")\
(text-size:3.0)|fire>[(text-style:"shudder")[HAH!]]
(link: "Continue")+(transition:"blur")[=\
($scroll:)\
(text-size:1.6)|fire>[There is no justice, mortal, neither on this earth nor above or below. It is a fable parents tell their children, a comfortable lie for the weak-hearted to help them sleep at night.]
(link:"Continue")+(transition: "blur")[=\
($scroll:)\
(text-size:1.6)|fire>[The //truth// is that (if: $djinn2 is "you(rerun:?lives)")[your insignificant life was ravaged](else-if: $djinn2 is "anyone(rerun:?lives)")[humans are fragile and die](else:)[your loved ones are dead] for NO REASON WHATSOEVER, and with every passing (if: $djinn2 is "you(rerun:?lives)")[moment you hurt yourself further by dwelling on it](else-if: $djinn2 is "anyone(rerun:?lives)")[moment another person is forgotten entirely](else:)[moment your pain distorts their memory further], until (if: $djinn2 is "you(rerun:?lives)")[you are a shell of a man and eventually die.](else-if: $djinn2 is "anyone(rerun:?lives)")[there is no one left.](else:)[they are truly and utterly gone.]]
(link:"Continue")+(transition: "blur")[=\
($scroll:)\
(text-size:1.6)|fire>[I have answered your question, now //leave// this realm! ]
(transition-depart:"blur")[[Continue->transition2]]<script>document.body.setAttribute("class","day");</script>\
(animate:?passage, "blur")\
(after: 3s)[(go-to:'return')[[return]]]<script>document.body.setAttribute("class","day");</script>\
(animate:?passage, "blur")\
\
## |fire>[''$title'']
by Dirk Meijer
(transition-depart:"blur")[[Start->bedouin1]]
(transition-depart:"blur")[[What is this?->Help2]]
<script>document.body.setAttribute("class","day");</script>\
(animate:?passage, "blur")\
''$title'' is a semi-interactive work of micro fiction.
Throughout the text you will see choices to make, like this:
//I left my home in the season of ($choice: "season",(array: "spring","summer","autumn","winter")).//
Click on these change them.
There are no right or wrong choices, there is only a story to make your own.
©2025 Dirk Meijer
Made with (link-repeat: "Twine")[(open-url: "https://twinery.org")].
(transition-depart:"blur")[[Back->Menu2]]