Remove draft and spec

Reworked source code based on changes to Synthetic Fur
This commit is contained in:
Tony Bark 2025-03-01 09:13:42 -05:00
parent f96fcf30e4
commit 2655f0dc96
3 changed files with 30 additions and 146 deletions

View file

@ -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 Twines 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]]
```

View file

@ -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]]

View file

@ -12,32 +12,43 @@ Starter Kit
}
:: 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"}
:: About {"position":"325,250","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")
=|=
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur ac ornare nulla. Suspendisse metus ex, bibendum eget convallis sit amet, cursus efficitur metus. Nulla ullamcorper ex dapibus, porta sapien ac, malesuada tortor. Curabitur aliquam eleifend sapien eu hendrerit. Aenean euismod, enim quis porta vehicula, est lorem sagittis nulla, a congue dui purus sed lorem. Nunc ullamcorper felis et ante laoreet tristique. Ut a justo scelerisque, tristique purus quis, volutpat neque.
=|=
Nulla lobortis euismod mattis. Aenean sit amet augue ullamcorper, pharetra mi sed, finibus arcu. Nullam sed justo at orci varius tristique nec quis lectus. Curabitur id pulvinar libero, eget lacinia justo. Ut eget tempor risus. Sed fermentum lobortis dignissim. Aliquam erat volutpat. Interdum et malesuada fames ac ante ipsum primis in faucibus. Suspendisse potenti. Quisque et aliquet orci, eget sollicitudin neque.
|==|
:: Main Menu {"position":"325,350","size":"100,100"}
:: Header [header] {"position":"325,375","size":"100,100"}
(align:"=><=")+(box:"X")[ [[Settings->Settings]] | [[About->About]] ]
(seed:"36ac6237-cefe-4f59-894e-0cc812654f44")
:: Main Menu {"position":"200,375","size":"100,100"}
(align:"=><=")+(box:"X")[=
## [[Play->Prologue]]
(unless: (history:) contains "Settings")[
(set: $player to "Zack")]
:: On Load [startup] {"position":"200,250","size":"100,100"}
<!-- Character names -->
(set: $player to "Zack")
<!-- Gameplay -->
(set: $d6 to (random: 1,6))
:: 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.
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.
:: Settings {"position":"450,500","size":"100,100"}
(align:"=><=")+(box:"X")[=
''Name''
(input-box:2bind $player,"X",1,"Zack")
<!-- This is needed to persist settings. -->
(button:)(link-goto: "Save", (history:)'s last)