# 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]] ```