I like the idea and I already have code I can contribute from a project I am working on.
My caveat is that we do not over complicate the core functionality of Twine. Its strength is that a passage is whatever the author wants it to be. The power of this should not be underestimated. I came to Twine precisely because it did not enforce or encourage any particular structure on what I wanted to do as an author. I'd like Twine core to stay that way - but totally see (and will support with code) extensions that make creating certain common types of story easier.
Suggestion:
Can we start by doing these as .twee (.tw) files in a central repository just to get momentum then move them to a more formal "extensions" framework in Twine core as that builds.
I already have a few macros that I reuse across my own project - many more than I have made public on the Future of Twine site. I like the .twee format and have been evolving towards something like this:
9999 Macro name.twee <-- filename
::9999 Macro name.twee About [Twine.private]
This passage is used to document the macro, acknowledgements etc.
It does not end up in generated html files due to the tag
::9999 Macro name [script]
The actual code for the macro/s
I guess I should make that InterTwine screencast I've been meaning to do for a while. Anyways; with a known repository for #TwineQuest then it would serve as a central clearing house for Quest style stories. The best part of that is: InterTwine already supports loading a .tws/.twee file over http or ftp - so authors can just link directly to a #TwineQuest library of their choice and have it automagically update whenever the library is updated. Or, they could download the library and maintain control over the updates.
My first real contribution would be: an random name generator for NPCs ... the names styles can be configured using language stems in appropriately tagged passages. The same code works for elves, orks, humans, aliens, cultures and all the author need do is supply a passage with language parts that are in a simple format. I did adapt the code from elsewhere (acknowledged) and thus will supply "stem passages" for their examples; I think elves, humans and goblins. There is an opportunity for us to develop and share stem files for various cultures too.
My NPC macros allow you to generate a name for an NPC then refer to that henceforth by number... NPC 1, NPC 2 etc...
It only does names for now.
What I learnt from doing this, which I'd like to propose to other #TwineQuest devs: The name generator finds the "culture" passages by looking for a passage tag. That means adding a new naming pattern is as simple as making a passage, adding a tag. Zero tricky syntax - just an extension of what is already known so that the authors can concentrate on making the language stems for the names and not on whether or not they forgot some silly punctuation character to close a declaration. ick.
I'd like to propose doing that with objects too: declare an object by making a passage (title up to the author), giving it a tag... TwineQuest.* seems a good way to prefix them... So, for an "Item" TwineQuest.Item.
I'd also like to suggest a simple format within the passage. People seem to have less trouble with a newline or colon delimited passage (author's option as to when to use a : or a newline or even a colon-newline. I'm not such a fan of using JSON or XML for this type of thing simply because of the unforgiving syntax burden it places on authors. Besides all those < } { , [ symbols in the densities used in JSON or XML are not exactly conducive to being human readable (except for programmers in c-style languages).
Here's what I'm proposing (as a syntax example, ignore the vocab)
::The Golden Axe [TwineQuest.Item]
LABEL: Golden Axe
DESCRIPTION
The Golden Axe of Sega, sort after by Amazons, Dwarves and Warriors. Forged of purist pixels and engraved into the memories of many.
WEIGHT:5kg
MATERIAL:
Gold Alloy
Leather
LENGTH:1.5m
SLOT: 2-handed-weapon
ATTACK MODIFIER: +5
(See how the syntax flexes and is forgiving?)
Then, when/if an UI extensions framework is added to Twine then wizards/special editors can simplify the creation of such things for authors.
So two proposals:
1) Use a passage per object. Mark objects with TwineQuest.* tags so TwineQuest libraries can use the existing Twine engine's API to find what they need
2) Use a forgiving colon/newline format within the passages. It is up to libraries to define the ATTRIBUTE: types allowed, but it should not expect them in any particular order.
As I release my twine stories; if anything looks useful for TwineQuest then let me know and I can lift it out and package it appropriately.
Re: dice macros.... for now... would my randomp macro do what you need?
--Et