diff --git a/draft/README.md b/draft/README.md deleted file mode 100644 index cb28c9a..0000000 --- a/draft/README.md +++ /dev/null @@ -1,96 +0,0 @@ -# Interactive Story Draft v0.5 - -- **File Format:** `.isd` - -The Interactive Story Draft (ISD) format is a story format language designed for drafting interactive fiction before implementation in Twine’s Harlowe or similar engines. It allows authors to structure branching narratives, define conditions, and track variables efficiently. - ---- - -## Specifications - -1. **Passages:** - - - **Syntax:** `# PassageName` - - **Description:** Defines a new passage or section in the story. - -2. **Links:** - - - **Syntax:** `[[Link Text -> TargetPassage]]` - - **Description:** Creates a navigational link to another passage. - -3. **Variables:** - - - **Syntax:** `$variableName` - - **Description:** Represents a variable to track states or information. - -4. **Variable Assignment:** - - - **Syntax:** `(set: $variableName to value)` - - **Description:** Assigns a value to a variable. - -5. **Input Variable**: - - - **Syntax:** `(input: $userVariable, "Placeholder")` - - **Description:** Allows the user to input data. - -6. **Conditional Statements:** - - - **Syntax:** `(if: condition)[Text if true]` - - **Description:** Displays text or content based on a condition. - -7. **Else Clause:** - - - **Syntax:** `(else:)[Text if false]` - - **Description:** Follows an `(if:)` statement to handle the false condition. - -8. **Drop down:** - - - **Syntax:** ``(dropdown: $variableName to "Option 1", "Option 2")`` - - **Description:** Assigns a drop down menu with the given strings as options. - -9. **Random Number Generation:** - - - **Syntax:** `(set: $variableName to (random: min, max))` - - **Description:** Sets a variable to a random number between `min` and `max`. - -10. **Text Styling:** - - - **Syntax:** `''italic''`, `'''bold'''`, `^^superscript^^`, `~~subscript~~` - - **Description:** Applies basic text formatting. - -## Example - -``` -# Introduction -Welcome to your adventure! You find yourself at a crossroads. - -[[Take the left path -> LeftPath]] -[[Take the right path -> RightPath]] - -# LeftPath -You walk down the left path and encounter a mysterious stranger. - -(set: $hasKey to true) -The stranger gives you a key. - -[[Continue -> Crossroads]] - -# RightPath -You walk down the right path and find a locked door. - -(if: $hasKey)[ - You use the key to unlock the door and discover a treasure! -] -(else:)[ - The door is locked. You need a key to open it. -] - -[[Return to the crossroads -> Crossroads]] - -# Crossroads -You're back at the crossroads. - -[[Take the left path -> LeftPath]] -[[Take the right path -> RightPath]] - -``` diff --git a/draft/sample.isd b/draft/sample.isd deleted file mode 100644 index ab94c4b..0000000 --- a/draft/sample.isd +++ /dev/null @@ -1,31 +0,0 @@ -# Introduction -Welcome to your adventure! You find yourself at a crossroads. - -[[Take the left path -> LeftPath]] -[[Take the right path -> RightPath]] - -# LeftPath -You walk down the left path and encounter a mysterious stranger. - -(set: $hasKey to true) -The stranger gives you a key. - -[[Continue -> Crossroads]] - -# RightPath -You walk down the right path and find a locked door. - -(if: $hasKey)[ - You use the key to unlock the door and discover a treasure! -] -(else:)[ - The door is locked. You need a key to open it. -] - -[[Return to the crossroads -> Crossroads]] - -# Crossroads -You're back at the crossroads. - -[[Take the left path -> LeftPath]] -[[Take the right path -> RightPath]] diff --git a/src/CrimsonHunter.twee b/src/CrimsonHunter.twee new file mode 100644 index 0000000..badf616 --- /dev/null +++ b/src/CrimsonHunter.twee @@ -0,0 +1,160 @@ +:: StoryTitle +Crimson Hunter + +:: StoryInit +(set: $bond to 50) +(set: $inventory to (a:)) +(set: $thrusters to "stable") +(set: $commStatus to "open") +(set: $callsign to "Crimson Hunter") +(set: $partner to "Patchwork") + + +:: StoryData +{ + "ifid": "CCE85936-2D98-4CC8-BFEB-417AA352506C", + "format": "Harlowe", + "format-version": "3.3.9", + "start": "Main Menu", + "zoom": 1 +} + + +:: Header [header] {"position":"450,350","size":"100,100"} +(align:"=><=")+(box:"X")[''Starter Adventure'' | + [[Settings->Settings]]] + +:: Return {"position":"575,350","size":"100,100"} +(align:"=><=")+(box:"X")[(link-goto: + "Return", (history:)'s last)] + + +:: Settings {"position":"450,500","size":"100,100"} +(align:"=><=")+(box:"X")[= + Name: (input-box:2bind $player,"X",1,"Max") + Location: (dropdown: bind $location, "Sunset Arms", "TPaw HQ") + Class: (dropdown: bind $class, "DJ", "Programmer") + + (display:"Return") + + +:: Main Menu {"position":"325,350","size":"100,100"} +(align:"=><=")+(box:"X")[= + ## [[Play->Start]] + +:: Start +Your cockpit hums like a sleeping dragon. +Through the cracked canopy of *Strider V*, a soft red mist curls off the Skyloft’s edge. Somewhere deep in the chassis, warning lights flicker half-heartedly, like they’re as tired as you are. + +Patchwork’s voice cuts through the static, sharp and dry: + +> {Patchwork}: "Yo. Crimson Hunter. You planning to, uh, **wake up** before sunrise burns your tail off?" + +Your knuckles ache against the worn controls. Another job. Another gamble. Another day your brother keeps you alive, whether you admit it or not. + +[[Snap awake with a grin.->WakeupGrin]] +[[Mutter and stretch lazily.->WakeupLazy]] +[[Groan dramatically into the comms.->WakeupGroan]] + +:: WakeupGrin +You crack a grin so wide it probably pings off every cheap sensor in a ten-meter radius. + +> {You}: "Relax, Patchwork. *Crimson Hunter's* always ready to fly." + +A beat of static. Then Zack’s voice, drier than desert toast: + +> {Patchwork}: "Sure, ace. Tell that to your **left booster**, which by the way, is crying for mercy." + +The Skiff shudders under you — an old, familiar tremble, like a dog itching for the chase. + +[[Check systems manually.->SystemsCheck]] +[[Punch it and hope for the best.->LiftOffWild]] + +:: WakeupLazy +You stretch slow, deliberate, bones cracking like popcorn. +$player Casey’s guide to being technically alive: minimal effort, maximum cool. + +> {You}: "Mmrph. Five more minutes. Tell the sky pirates to hold, will ya?" + +Zack exhales loud enough to blow out the comm mic. + +> {Patchwork}: "Yeah, I'll just *reschedule* reality. Get moving, Hunter." + +The Skiff's dash blinks a soft yellow — not urgent, but not *great* either. + +[[Check systems manually.->SystemsCheck]] +[[Punch it and hope for the best.->LiftOffWild]] + +:: WakeupGroan +You press your forehead to the controls and groan, long and theatrical. + +> {You}: "Consider me dead. Tell my fan club." + +Zack snorts. + +> {Patchwork}: "Cool. I'll write a eulogy. 'Here lies Crimson Hunter. Taken too soon. Self-inflicted cause of death: **Chronic dumbassery.**'" + +Outside, the Skyloft's early light fractures across the clouds — gold and blood-red. + +[[Check systems manually.->SystemsCheck]] +[[Punch it and hope for the best.->LiftOffWild]] + +:: SystemsCheck +You sweep your fingers across the cracked holopanel, coaxing a grudging status feed from *Strider V*. + +- Thrusters: Stable-ish. +- Comms: Open, minor interference. +- Hull: 81% integrity. +- Boost Core: 63% charge. +- Secret Snack Compartment: Empty. (*Tragic.*) + +Zack pings back: + +> {Patchwork}: "All green...ish. C'mon, Crimson Hunter. Skyrise won't loot itself." + +[[Launch clean and professional.->CleanLaunch]] +[[Launch with a barrel roll, style first.->BarrelLaunch]] + +:: LiftOffWild +You slam the throttle without even looking. + +The Skiff lurches forward like a furious catapult. Somewhere, Zack yelps into the comms. + +> {Patchwork}: "WHAT THE HELL MAX—!" + +You grin feral, blood singing. *Now* you're awake. + +[[Steer hard toward the mission marker.->MissionStart]] + +:: CleanLaunch +You ease the throttle up smoothly, letting the Skiff slide off the Skyloft lip like a stone skipping water. + +Zack hums approval through the line. + +> {Patchwork}: "Finally. A **professional criminal.** Mom would be so proud." + +Clouds part under you like gates. The sky is yours. + +[[Head toward the mission marker.->MissionStart]] + +:: BarrelLaunch +You punch a barrel roll straight into launch, laughing as *Strider V* spirals out from the Skyloft like a bottle rocket. + +> {Patchwork}: "Seriously?! They're gonna **see you from orbit,** $player!" + +The Skiff's stabilizers whine — but you land clean, riding momentum straight into open air. + +[[Boost toward the mission marker.->MissionStart]] + +:: MissionStart +Ahead, the coordinates Zack sent shimmer against the endless clouds — a salvage beacon pulsing weakly atop a broken drift. + +Job's simple: +- Retrieve whatever's left. +- Don’t die. +- Optional: look cooler than anyone else ever has while doing it. + +The Sky calls. You answer. + +[[Approach the salvage drift.->DriftApproach]] + diff --git a/src/StarterKit.twee b/src/StarterKit.twee deleted file mode 100644 index 43845a1..0000000 --- a/src/StarterKit.twee +++ /dev/null @@ -1,43 +0,0 @@ -:: StoryTitle -Starter Kit - - -:: StoryData -{ - "ifid": "CCE85936-2D98-4CC8-BFEB-417AA352506C", - "format": "Harlowe", - "format-version": "3.3.9", - "start": "Main Menu", - "zoom": 1 -} - - -:: Header [header] {"position":"450,350","size":"100,100"} -(align:"=><=")+(box:"X")[''Starter Adventure'' | - [[Settings->Settings]]] - -:: Return {"position":"575,350","size":"100,100"} -(align:"=><=")+(box:"X")[(link-goto: - "Return", (history:)'s last)] - - -:: Settings {"position":"450,500","size":"100,100"} -(align:"=><=")+(box:"X")[= - Name: (input-box:2bind $player,"X",1,"Zack") - Location: (dropdown: bind $location, "Sunset Arms", "TPaw HQ") - Class: (dropdown: bind $class, "DJ", "Programmer") - - (display:"Return") - - -:: Main Menu {"position":"325,350","size":"100,100"} -(align:"=><=")+(box:"X")[= - ## [[Play->Prologue]] - - (unless: (history:) contains "Settings")[ - (set: $player to "Zack")] - -:: Prologue {"position":"325,500","size":"100,100"} -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse ultrices quam quam, lacinia consequat justo cursus condimentum. Aenean sed rhoncus orci. Donec accumsan ex magna. Nulla tempor egestas eleifend. Sed eget aliquet augue. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer aliquet quam ut felis tempor, quis tincidunt urna pharetra. Morbi molestie libero id mauris porttitor dapibus. Donec ac ante augue. Duis commodo facilisis mi. Fusce quis enim ante. Praesent vitae est in arcu venenatis molestie nec in arcu. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Sed commodo erat magna. - -Mauris in ipsum imperdiet, tristique turpis ut, interdum metus. Donec ante quam, aliquet quis pulvinar eu, rhoncus nec ipsum. Sed eget sapien neque. Proin convallis justo lacus, a rhoncus eros condimentum nec. Aliquam erat volutpat. Aliquam eu nulla a odio imperdiet posuere. Pellentesque id ipsum vulputate, accumsan enim nec, dignissim elit. Suspendisse lobortis neque ligula, in faucibus libero rutrum ac. Nunc porta gravida congue. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. \ No newline at end of file