<!--{{{-->
<link rel='alternate' type='application/rss+xml' title='RSS' href='index.xml'/>
<!--}}}-->
Background: #fff
Foreground: #000
PrimaryPale: #8cf
PrimaryLight: #18f
PrimaryMid: #04b
PrimaryDark: #014
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88
/*{{{*/
body {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}

a {color:[[ColorPalette::PrimaryMid]];}
a:hover {background-color:[[ColorPalette::PrimaryMid]]; color:[[ColorPalette::Background]];}
a img {border:0;}

h1,h2,h3,h4,h5,h6 {color:[[ColorPalette::SecondaryDark]]; background:transparent;}
h1 {border-bottom:2px solid [[ColorPalette::TertiaryLight]];}
h2,h3 {border-bottom:1px solid [[ColorPalette::TertiaryLight]];}

.button {color:[[ColorPalette::PrimaryDark]]; border:1px solid [[ColorPalette::Background]];}
.button:hover {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::SecondaryLight]]; border-color:[[ColorPalette::SecondaryMid]];}
.button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::SecondaryDark]];}

.header {background:[[ColorPalette::PrimaryMid]];}
.headerShadow {color:[[ColorPalette::Foreground]];}
.headerShadow a {font-weight:normal; color:[[ColorPalette::Foreground]];}
.headerForeground {color:[[ColorPalette::Background]];}
.headerForeground a {font-weight:normal; color:[[ColorPalette::PrimaryPale]];}

.tabSelected{color:[[ColorPalette::PrimaryDark]];
	background:[[ColorPalette::TertiaryPale]];
	border-left:1px solid [[ColorPalette::TertiaryLight]];
	border-top:1px solid [[ColorPalette::TertiaryLight]];
	border-right:1px solid [[ColorPalette::TertiaryLight]];
}
.tabUnselected {color:[[ColorPalette::Background]]; background:[[ColorPalette::TertiaryMid]];}
.tabContents {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::TertiaryPale]]; border:1px solid [[ColorPalette::TertiaryLight]];}
.tabContents .button {border:0;}

#sidebar {}
#sidebarOptions input {border:1px solid [[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel {background:[[ColorPalette::PrimaryPale]];}
#sidebarOptions .sliderPanel a {border:none;color:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:hover {color:[[ColorPalette::Background]]; background:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:active {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::Background]];}

.wizard {background:[[ColorPalette::PrimaryPale]]; border:1px solid [[ColorPalette::PrimaryMid]];}
.wizard h1 {color:[[ColorPalette::PrimaryDark]]; border:none;}
.wizard h2 {color:[[ColorPalette::Foreground]]; border:none;}
.wizardStep {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];
	border:1px solid [[ColorPalette::PrimaryMid]];}
.wizardStep.wizardStepDone {background:[[ColorPalette::TertiaryLight]];}
.wizardFooter {background:[[ColorPalette::PrimaryPale]];}
.wizardFooter .status {background:[[ColorPalette::PrimaryDark]]; color:[[ColorPalette::Background]];}
.wizard .button {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryLight]]; border: 1px solid;
	border-color:[[ColorPalette::SecondaryPale]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryPale]];}
.wizard .button:hover {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Background]];}
.wizard .button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::Foreground]]; border: 1px solid;
	border-color:[[ColorPalette::PrimaryDark]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryDark]];}

#messageArea {border:1px solid [[ColorPalette::SecondaryMid]]; background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]];}
#messageArea .button {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::SecondaryPale]]; border:none;}

.popupTiddler {background:[[ColorPalette::TertiaryPale]]; border:2px solid [[ColorPalette::TertiaryMid]];}

.popup {background:[[ColorPalette::TertiaryPale]]; color:[[ColorPalette::TertiaryDark]]; border-left:1px solid [[ColorPalette::TertiaryMid]]; border-top:1px solid [[ColorPalette::TertiaryMid]]; border-right:2px solid [[ColorPalette::TertiaryDark]]; border-bottom:2px solid [[ColorPalette::TertiaryDark]];}
.popup hr {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::PrimaryDark]]; border-bottom:1px;}
.popup li.disabled {color:[[ColorPalette::TertiaryMid]];}
.popup li a, .popup li a:visited {color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:active {background:[[ColorPalette::SecondaryPale]]; color:[[ColorPalette::Foreground]]; border: none;}
.popupHighlight {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
.listBreak div {border-bottom:1px solid [[ColorPalette::TertiaryDark]];}

.tiddler .defaultCommand {font-weight:bold;}

.shadow .title {color:[[ColorPalette::TertiaryDark]];}

.title {color:[[ColorPalette::SecondaryDark]];}
.subtitle {color:[[ColorPalette::TertiaryDark]];}

.toolbar {color:[[ColorPalette::PrimaryMid]];}
.toolbar a {color:[[ColorPalette::TertiaryLight]];}
.selected .toolbar a {color:[[ColorPalette::TertiaryMid]];}
.selected .toolbar a:hover {color:[[ColorPalette::Foreground]];}

.tagging, .tagged {border:1px solid [[ColorPalette::TertiaryPale]]; background-color:[[ColorPalette::TertiaryPale]];}
.selected .tagging, .selected .tagged {background-color:[[ColorPalette::TertiaryLight]]; border:1px solid [[ColorPalette::TertiaryMid]];}
.tagging .listTitle, .tagged .listTitle {color:[[ColorPalette::PrimaryDark]];}
.tagging .button, .tagged .button {border:none;}

.footer {color:[[ColorPalette::TertiaryLight]];}
.selected .footer {color:[[ColorPalette::TertiaryMid]];}

.sparkline {background:[[ColorPalette::PrimaryPale]]; border:0;}
.sparktick {background:[[ColorPalette::PrimaryDark]];}

.error, .errorButton {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Error]];}
.warning {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryPale]];}
.lowlight {background:[[ColorPalette::TertiaryLight]];}

.zoomer {background:none; color:[[ColorPalette::TertiaryMid]]; border:3px solid [[ColorPalette::TertiaryMid]];}

.imageLink, #displayArea .imageLink {background:transparent;}

.annotation {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border:2px solid [[ColorPalette::SecondaryMid]];}

.viewer .listTitle {list-style-type:none; margin-left:-2em;}
.viewer .button {border:1px solid [[ColorPalette::SecondaryMid]];}
.viewer blockquote {border-left:3px solid [[ColorPalette::TertiaryDark]];}

.viewer table, table.twtable {border:2px solid [[ColorPalette::TertiaryDark]];}
.viewer th, .viewer thead td, .twtable th, .twtable thead td {background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::Background]];}
.viewer td, .viewer tr, .twtable td, .twtable tr {border:1px solid [[ColorPalette::TertiaryDark]];}

.viewer pre {border:1px solid [[ColorPalette::SecondaryLight]]; background:[[ColorPalette::SecondaryPale]];}
.viewer code {color:[[ColorPalette::SecondaryDark]];}
.viewer hr {border:0; border-top:dashed 1px [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::TertiaryDark]];}

.highlight, .marked {background:[[ColorPalette::SecondaryLight]];}

.editor input {border:1px solid [[ColorPalette::PrimaryMid]];}
.editor textarea {border:1px solid [[ColorPalette::PrimaryMid]]; width:100%;}
.editorFooter {color:[[ColorPalette::TertiaryMid]];}

#backstageArea {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::TertiaryMid]];}
#backstageArea a {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstageArea a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; }
#backstageArea a.backstageSelTab {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
#backstageButton a {background:none; color:[[ColorPalette::Background]]; border:none;}
#backstageButton a:hover {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstagePanel {background:[[ColorPalette::Background]]; border-color: [[ColorPalette::Background]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]];}
.backstagePanelFooter .button {border:none; color:[[ColorPalette::Background]];}
.backstagePanelFooter .button:hover {color:[[ColorPalette::Foreground]];}
#backstageCloak {background:[[ColorPalette::Foreground]]; opacity:0.6; filter:'alpha(opacity:60)';}
/*}}}*/
/*{{{*/
* html .tiddler {height:1%;}

body {font-size:.75em; font-family:arial,helvetica; margin:0; padding:0;}

h1,h2,h3,h4,h5,h6 {font-weight:bold; text-decoration:none;}
h1,h2,h3 {padding-bottom:1px; margin-top:1.2em;margin-bottom:0.3em;}
h4,h5,h6 {margin-top:1em;}
h1 {font-size:1.35em;}
h2 {font-size:1.25em;}
h3 {font-size:1.1em;}
h4 {font-size:1em;}
h5 {font-size:.9em;}

hr {height:1px;}

a {text-decoration:none;}

dt {font-weight:bold;}

ol {list-style-type:decimal;}
ol ol {list-style-type:lower-alpha;}
ol ol ol {list-style-type:lower-roman;}
ol ol ol ol {list-style-type:decimal;}
ol ol ol ol ol {list-style-type:lower-alpha;}
ol ol ol ol ol ol {list-style-type:lower-roman;}
ol ol ol ol ol ol ol {list-style-type:decimal;}

.txtOptionInput {width:11em;}

#contentWrapper .chkOptionInput {border:0;}

.externalLink {text-decoration:underline;}

.indent {margin-left:3em;}
.outdent {margin-left:3em; text-indent:-3em;}
code.escaped {white-space:nowrap;}

.tiddlyLinkExisting {font-weight:bold;}
.tiddlyLinkNonExisting {font-style:italic;}

/* the 'a' is required for IE, otherwise it renders the whole tiddler in bold */
a.tiddlyLinkNonExisting.shadow {font-weight:bold;}

#mainMenu .tiddlyLinkExisting,
	#mainMenu .tiddlyLinkNonExisting,
	#sidebarTabs .tiddlyLinkNonExisting {font-weight:normal; font-style:normal;}
#sidebarTabs .tiddlyLinkExisting {font-weight:bold; font-style:normal;}

.header {position:relative;}
.header a:hover {background:transparent;}
.headerShadow {position:relative; padding:4.5em 0em 1em 1em; left:-1px; top:-1px;}
.headerForeground {position:absolute; padding:4.5em 0em 1em 1em; left:0px; top:0px;}

.siteTitle {font-size:3em;}
.siteSubtitle {font-size:1.2em;}

#mainMenu {position:absolute; left:0; width:10em; text-align:right; line-height:1.6em; padding:1.5em 0.5em 0.5em 0.5em; font-size:1.1em;}

#sidebar {position:absolute; right:3px; width:16em; font-size:.9em;}
#sidebarOptions {padding-top:0.3em;}
#sidebarOptions a {margin:0em 0.2em; padding:0.2em 0.3em; display:block;}
#sidebarOptions input {margin:0.4em 0.5em;}
#sidebarOptions .sliderPanel {margin-left:1em; padding:0.5em; font-size:.85em;}
#sidebarOptions .sliderPanel a {font-weight:bold; display:inline; padding:0;}
#sidebarOptions .sliderPanel input {margin:0 0 .3em 0;}
#sidebarTabs .tabContents {width:15em; overflow:hidden;}

.wizard {padding:0.1em 1em 0em 2em;}
.wizard h1 {font-size:2em; font-weight:bold; background:none; padding:0em 0em 0em 0em; margin:0.4em 0em 0.2em 0em;}
.wizard h2 {font-size:1.2em; font-weight:bold; background:none; padding:0em 0em 0em 0em; margin:0.4em 0em 0.2em 0em;}
.wizardStep {padding:1em 1em 1em 1em;}
.wizard .button {margin:0.5em 0em 0em 0em; font-size:1.2em;}
.wizardFooter {padding:0.8em 0.4em 0.8em 0em;}
.wizardFooter .status {padding:0em 0.4em 0em 0.4em; margin-left:1em;}
.wizard .button {padding:0.1em 0.2em 0.1em 0.2em;}

#messageArea {position:fixed; top:2em; right:0em; margin:0.5em; padding:0.5em; z-index:2000; _position:absolute;}
.messageToolbar {display:block; text-align:right; padding:0.2em 0.2em 0.2em 0.2em;}
#messageArea a {text-decoration:underline;}

.tiddlerPopupButton {padding:0.2em 0.2em 0.2em 0.2em;}
.popupTiddler {position: absolute; z-index:300; padding:1em 1em 1em 1em; margin:0;}

.popup {position:absolute; z-index:300; font-size:.9em; padding:0; list-style:none; margin:0;}
.popup .popupMessage {padding:0.4em;}
.popup hr {display:block; height:1px; width:auto; padding:0; margin:0.2em 0em;}
.popup li.disabled {padding:0.4em;}
.popup li a {display:block; padding:0.4em; font-weight:normal; cursor:pointer;}
.listBreak {font-size:1px; line-height:1px;}
.listBreak div {margin:2px 0;}

.tabset {padding:1em 0em 0em 0.5em;}
.tab {margin:0em 0em 0em 0.25em; padding:2px;}
.tabContents {padding:0.5em;}
.tabContents ul, .tabContents ol {margin:0; padding:0;}
.txtMainTab .tabContents li {list-style:none;}
.tabContents li.listLink { margin-left:.75em;}

#contentWrapper {display:block;}
#splashScreen {display:none;}

#displayArea {margin:1em 17em 0em 14em;}

.toolbar {text-align:right; font-size:.9em;}

.tiddler {padding:1em 1em 0em 1em;}

.missing .viewer,.missing .title {font-style:italic;}

.title {font-size:1.6em; font-weight:bold;}

.missing .subtitle {display:none;}
.subtitle {font-size:1.1em;}

.tiddler .button {padding:0.2em 0.4em;}

.tagging {margin:0.5em 0.5em 0.5em 0; float:left; display:none;}
.isTag .tagging {display:block;}
.tagged {margin:0.5em; float:right;}
.tagging, .tagged {font-size:0.9em; padding:0.25em;}
.tagging ul, .tagged ul {list-style:none; margin:0.25em; padding:0;}
.tagClear {clear:both;}

.footer {font-size:.9em;}
.footer li {display:inline;}

.annotation {padding:0.5em; margin:0.5em;}

* html .viewer pre {width:99%; padding:0 0 1em 0;}
.viewer {line-height:1.4em; padding-top:0.5em;}
.viewer .button {margin:0em 0.25em; padding:0em 0.25em;}
.viewer blockquote {line-height:1.5em; padding-left:0.8em;margin-left:2.5em;}
.viewer ul, .viewer ol {margin-left:0.5em; padding-left:1.5em;}

.viewer table, table.twtable {border-collapse:collapse; margin:0.8em 1.0em;}
.viewer th, .viewer td, .viewer tr,.viewer caption,.twtable th, .twtable td, .twtable tr,.twtable caption {padding:3px;}
table.listView {font-size:0.85em; margin:0.8em 1.0em;}
table.listView th, table.listView td, table.listView tr {padding:0px 3px 0px 3px;}

.viewer pre {padding:0.5em; margin-left:0.5em; font-size:1.2em; line-height:1.4em; overflow:auto;}
.viewer code {font-size:1.2em; line-height:1.4em;}

.editor {font-size:1.1em;}
.editor input, .editor textarea {display:block; width:100%; font:inherit;}
.editorFooter {padding:0.25em 0em; font-size:.9em;}
.editorFooter .button {padding-top:0px; padding-bottom:0px;}

.fieldsetFix {border:0; padding:0; margin:1px 0px 1px 0px;}

.sparkline {line-height:1em;}
.sparktick {outline:0;}

.zoomer {font-size:1.1em; position:absolute; overflow:hidden;}
.zoomer div {padding:1em;}

* html #backstage {width:99%;}
* html #backstageArea {width:99%;}
#backstageArea {display:none; position:relative; overflow: hidden; z-index:150; padding:0.3em 0.5em 0.3em 0.5em;}
#backstageToolbar {position:relative;}
#backstageArea a {font-weight:bold; margin-left:0.5em; padding:0.3em 0.5em 0.3em 0.5em;}
#backstageButton {display:none; position:absolute; z-index:175; top:0em; right:0em;}
#backstageButton a {padding:0.1em 0.4em 0.1em 0.4em; margin:0.1em 0.1em 0.1em 0.1em;}
#backstage {position:relative; width:100%; z-index:50;}
#backstagePanel {display:none; z-index:100; position:absolute; margin:0em 3em 0em 3em; padding:1em 1em 1em 1em;}
.backstagePanelFooter {padding-top:0.2em; float:right;}
.backstagePanelFooter a {padding:0.2em 0.4em 0.2em 0.4em;}
#backstageCloak {display:none; z-index:20; position:absolute; width:100%; height:100px;}

.whenBackstage {display:none;}
.backstageVisible .whenBackstage {display:block;}
/*}}}*/
/***
StyleSheet for use when a translation requires any css style changes.
This StyleSheet can be used directly by languages such as Chinese, Japanese and Korean which need larger font sizes.
***/
/*{{{*/
body {font-size:0.8em;}
#sidebarOptions {font-size:1.05em;}
#sidebarOptions a {font-style:normal;}
#sidebarOptions .sliderPanel {font-size:0.95em;}
.subtitle {font-size:0.8em;}
.viewer table.listView {font-size:0.95em;}
/*}}}*/
/*{{{*/
@media print {
#mainMenu, #sidebar, #messageArea, .toolbar, #backstageButton, #backstageArea {display: none ! important;}
#displayArea {margin: 1em 1em 0em 1em;}
/* Fixes a feature in Firefox 1.5.0.2 where print preview displays the noscript content */
noscript {display:none;}
}
/*}}}*/
<!--{{{-->
<div class='header' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>
<div class='headerShadow'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
<div class='headerForeground'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
</div>
<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>
<div id='sidebar'>
<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
</div>
<div id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
</div>
<!--}}}-->
<!--{{{-->
<div class='toolbar' macro='toolbar closeTiddler closeOthers +editTiddler > fields syncing permalink references jump'></div>
<div class='title' macro='view title'></div>
<div class='subtitle'><span macro='view modifier link'></span>, <span macro='view modified date'></span> (<span macro='message views.wikified.createdPrompt'></span> <span macro='view created date'></span>)</div>
<div class='tagging' macro='tagging'></div>
<div class='tagged' macro='tags'></div>
<div class='viewer' macro='view text wikified'></div>
<div class='tagClear'></div>
<!--}}}-->
<!--{{{-->
<div class='toolbar' macro='toolbar +saveTiddler -cancelTiddler deleteTiddler'></div>
<div class='title' macro='view title'></div>
<div class='editor' macro='edit title'></div>
<div macro='annotations'></div>
<div class='editor' macro='edit text'></div>
<div class='editor' macro='edit tags'></div><div class='editorFooter'><span macro='message views.editor.tagPrompt'></span><span macro='tagChooser'></span></div>
<!--}}}-->
To get started with this blank TiddlyWiki, you'll need to modify the following tiddlers:
* SiteTitle & SiteSubtitle: The title and subtitle of the site, as shown above (after saving, they will also appear in the browser title bar)
* MainMenu: The menu (usually on the left)
* DefaultTiddlers: Contains the names of the tiddlers that you want to appear when the TiddlyWiki is opened
You'll also need to enter your username for signing your edits: <<option txtUserName>>
These InterfaceOptions for customising TiddlyWiki are saved in your browser

Your username for signing your edits. Write it as a WikiWord (eg JoeBloggs)

<<option txtUserName>>
<<option chkSaveBackups>> SaveBackups
<<option chkAutoSave>> AutoSave
<<option chkRegExpSearch>> RegExpSearch
<<option chkCaseSensitiveSearch>> CaseSensitiveSearch
<<option chkAnimate>> EnableAnimations

----
Also see AdvancedOptions
<<importTiddlers>>
The thirty-hour war more or less happened as described on p. 236 of the rulebook. The great nations of the 21st century (USA, Russia and China) were devastated by the war. It was left to the remnants of the European Union to re-build the world after the war.
The Dane-Olmhorst Map was discovered by a British-Icelandic research team operation out of the Syrtis Major colony established by the United Nations of Europe (UNE).
D-Drive was invented by Arthur Dillingham, a citizen of the British Concord of the European Union. The discovery of the underlying principles of the D-Drive gave the UNE an edge in the continued exploration of the solar system.

In the wake of D-Drive invention, the UNE successfully lobbied for a unified worldwide government. World-Gov, as it was termed, turned its efforts on colonizing the stars and replenishing Earth resource with the mineral bounty of the solar system.
As described on p. 237, the Voyager Expedition was the first successful use of the D-Drive to travel to another planetary system. It’s coordinates where derived from the Dane-Olmhorst map. It marked an important turning point in the evolving World-Gov. The planet discovered by the captain of the Voyager was named “New Strasbourg” in honour of the seat of World-Gov.

In the following decades, New Strasbourg became the hub for interstellar exploration and colonization of the Thousand Suns.
First contact happened exactly as described on p. 237 of the rulebook. The peaceful first contact with the Czanik proved a tremendous boon to the political factions advocating a united government and the emancipation of the interstellar colonies. This in turn led to the founding of the United Commonwealth of Planets.
The interstellar colonies and the Sol system founded the United Commonwealth. The era of the United Commonwealth was a period of boundless optimism and equally boundless scientific progress. Artificial intelligence, bio-engineering and psionic research were the most prestigious research disciplines.
This event happened as described on p. 238 of the rulebook. The war put a lid not only on research in the AI field, but other innovative and influential scientists were quietly discouraged from continuing their research.
The Myrmidon units of the United Commonwealth rebelled and full-scale war resulted. In the end, the Myrmidon strains were purged from the United Commonwealth. But, surviving fleets and their personnel fled into the Marches and Wildspace. There, they established small border-states that repelled any all political and military efforts of re-integration into the United Commonwealth.
Political leadership clamped down hard on any further separatist movements and rebellions. Individual freedoms and human rights were compromised in an effort by ambitious politicians to keep the Commonwealth united.

The political elite managed to do quite the opposite. The Commonwealth fell apart as described in the rulebook on p. 239.
Finally, the United Commonwealth of Planets collapsed. If the wars for independence had been bad, now it only grew worse. The Thousand Suns descended into a new dark age, as described in the rulebook on p.240.

One important event of the Age of Warring States was the loss of the coordinates of Earth, New Strasbourg and the core worlds of the former United Commonwealth of Planets. Jump-lines were lost and complete copies of the Dane-Olmhorst map became non-existent.
The Age of Warring States came to an end with the signing of the Concords of Empire on [[Meridian]]. The dynasty of Windsor-Hohenzollern had managed to conquer enough worlds with diplomacy, trade and war to institute themselves as emperors among the Thousand Suns. With the signing of the Concord began the Great Galactic Peace which is still in effect today.

The Windsor-Hohenzollern dynasty can trace their lineage allegedly all the way back to 20th century Earth, or //Terra Perdita// (Terra Lost) as Earth is called in the Interstellar Empire.
The civil war era lasted for nine bloody years. The wife of the deceased emperor, Catherine Anne, Duchess of Meridian, Senator to the Concordium declared herself Empress of the Thousand Suns to facilitate much needed reforms of the imperial bureaucracy and the Concordium. She met with fierce resistance by the Loyalists of the Concordium who wanted the legitimate heir William Henry of Windsor-Hohenzollern to inherit the throne. The still under-age William Henry had to take up arms against the forces of his own mother in order to win the throne.

His mother’s bid for power was backed by her secret lover Grand Admiral Horatio Fairfax of the Imperial Navy. The empress even violated the ancient tradition forbidding the emperor of the Thousand Suns to set foot on Meridian. Together with the Grand Admiral she conceived a child: Andrew Edward called “FitzEmpress”.

It took nine years to oust her from power. In the end, a treaty was negotiated that ceded the throne to the rightful heir William Henry, but only if the Concordium acknowledged Andrew Edward as the sole and legitimate heir to the throne. Reluctantly, the Concordium agreed.

This left William Henry V in a very uncomfortable position regarding the fate of his mother and her lover. He sentenced Catherine Anne to exile and seclusion in the Marches. Grand Admiral Fairfax was executed on charges of treason.

During the war, the Loyalists proved themselves to be honourable opponents. The treated the enemy with respect and nobility. The rebel factions, on the other hand, were ruthless. They knew that their very survival was at stake if they lost. Thus, they fought ferociously liked cornered animals, even in engagements they were wining. Despite this, William Henry V pardoned most rebels. Only the top-most leadership were punished at all.
This is an additional event that doesn’t happen in the Meta-Setting. The Hen Jaa Frontier Wars were a drawn-out border conflict with the Hen Jaa Hegemony.

Characters born or living in the Marches who are older than 11 years will probably remember the war or have even served in the war if they are older than 30 years. The Empire instituted draft in the final stages of the war (3560 to 3564) that made little difference between the common people and the aristocracy. Emperor William Henry V of Windsor-Hohenzollern wanted to show that the aristocracy was as much willing to sacrifice its sons and daughters to save the Interstellar Empire from the Hen Jaa as the common people.

''Note:'' The Hen Jaa War serves as a spring board for player characters from vastly different walks of interstellar life to know each other. Maybe they are war veterans, served together in the final years of the war or at least met during the war.

Also, the Hen Jaa sets the stage for a tense political area of unrest and hot-bed for political intrigue in the form of the Hen Jaa Armistice Zone.

The Hen Jaa Frontier Wars is the last great event in my vision of the meta-setting. Further stories will unfold in the Hen Jaa Armistice Zone to embroil the player characters.
The stories of the campaign ''//Living in Starlight//'' start in this year.
__''Medusa Dreaming''__ These are the voyages of the IIS Medusa...
* [[The Cast of Characters]], //created on March 29, 2008//
* [[Episode 1 - Once More to the Rescue]], //played on March 29, 2008//
* [[Episode 2 - Pyramids of Doom]], //played sometime in April 2008//
* Episode 3 - The Darkness Between the Stars, //forthcoming in spring 2009//
* Episode 4 - From the Depths of Despair, //forthcoming in summer 2009//
* Episode 5 - A Desperate Flight, //forthcoming in summer 2009//
<<option chkGenerateAnRssFeed>> GenerateAnRssFeed
<<option chkOpenInNewWindow>> OpenLinksInNewWindow
<<option chkSaveEmptyTemplate>> SaveEmptyTemplate
<<option chkToggleLinks>> Clicking on links to tiddlers that are already open causes them to close
^^(override with Control or other modifier key)^^
<<option chkHttpReadOnly>> HideEditingFeatures when viewed over HTTP
<<option chkForceMinorUpdate>> Treat edits as MinorChanges by preserving date and time
^^(override with Shift key when clicking 'done' or by pressing Ctrl-Shift-Enter^^
<<option chkConfirmDelete>> ConfirmBeforeDeleting
Maximum number of lines in a tiddler edit box: <<option txtMaxEditRows>>
Folder name for backup files: <<option txtBackupFolder>>
A Belter is an asteroid miner, whether working for a megacorporation or independently as a prospector. Early drafts of ''Thousand Suns'' included this Career Package, but it was eliminated, partially due to space considerations and partially due to the belief that the idea of an asteroid miner doesn't make much sense. The meta-setting's economics section  on pages 253-254 assumes that the extraction of resources from stellar bodies is mostly done robotically, for example. However, the Belter is a common character archetype in many Imperial SF stories and settings and should be added to the options available to players. After all, no two ''Thousand Suns'' settings will be the same. Like psionics, the existence of Belters is entirely optional, but the option should nevertheless be there -- and so it is.

''Novice'': Acrobatics 2, Athletics 2, Computers 1, Engineering 2, Observe 2, Piloting 2, Physical Sciences 2, Profession (Belter) 2, Streetwise 2, Technical Sciences 2, Vehicle Operation 2 and 2 additional skills as individual specialties (each at Rank 2)

''Experienced'': Acrobatics 4, Athletics 3, Bureaucracy 2, Computers 3, Engineering 4, Observe 3, Piloting 4, Physical Sciences 4, Profession (Belter) 4, Streetwise 3, Technical Sciences 4, Vehicles Operation 4, and 2 additional skills as individual specialties (each at Rank 4)

''Veteran'': Acrobatics 6, Athletics 4, Bureaucracy 4, Computers 4, Engineering 6, Observe 4, Piloting 5, Physical Sciences 5, Profession (Belter) 6, Streetwise 4, Technical Sciences 6, Vehicle Operation 6, and 2 additional skills as individual specialties (each at Rank 5)
The British-Icelandic expedition to the crash site of an alien vessel discovered in Syrtis Major on Mars was the first interplanetary archaeological expedition financed by UNE.
''Primary World Profile:'' Commercial
''Primary World Type:'' Terrestrial
''Primary Terrain:'' Mountainous
''World Climate:'' Temperate
''World Atmosphere:'' Standard
''World Hydrographics:'' Wet
''World Gravity:'' Light

''Native Sapients:'' None
''World Population:'' Millions
''World Government:'' Monarchy
''World Tech Level:'' Industrial Age
----
The world is breathtakingly beautiful. Deep sapphire oceans gently lap on the shores of several continents. Tall mountain ranges pierce the clouds and sunset casts a golden glow on the towering peaks. Towers built into the mountainside are the residences of the planetary aristocracy. The common people live on the valley floors near the abundant streams flowing through the winding vales. The world is a prosperous one.

The sensibilities might seem antiquated to the interstellar visitor, reminiscent of Terra’s Victorian Age. The technology is a low-tech, yet fantastic amalgamation of imperial and 19th century technology giving the planet a feeling as if right out of a Jules Verne novel. The most visible components of this technological mix are the zeppelins that glide gracefully between the mountain peaks and over the azure seas.

The Carabas family is ruling the planet ever since the Age of Warring States. The head of the household is titled “Marquis de Carabas”. He serves as the head of state and appoints the Representative to the Assembly. Also, he names a member of his own family to serve as Senator to the Concordium.

While the local technology level is quite primitive by imperial standards, the world serves as the headquarters for mega-corporations operating in and around the Hen Jaa Armistice Zone. All manner of advanced technology is imported to support the interstellar standard of living among the corporate elite.
''p. 20 Character Creation, Additional Rule: Buffer overflow''
If the Ability bonus for species or career raises an Ability score above the maximum of 12, then the excess points may distributed to other Abilities as seen fit by the player.

''p. 41 the Marches''
Because the Language skill does not exist in my games, a character from the Marches instead gains Linguistics 4 plus a Specialization in Lingua Terra and two additional languages.

''p. 42-43 Specialization''
Specialization works a bit different from the official rules. Acquiring a specialization still requires you to lower the skill rank by one (down to minimum of rank 1), but instead of listing a separate specialization, your character instead gains a +2 bonus to the skill test involving the chosen specialization. Thus, it is not really desirable to possess more than one specialization per skill, except for the skills Culture, Linguistics and Profession. Those skills follow slightly different rules.

''p. 59-60 Benefit Points, Additional Uses''
Each Benefit Point can be spent to either:
* Money: gain 5,000$
* Advanced Education: gain +2 ranks in any 2 skills of the player's choice (character ages 2 years while visting an institute of learning)
* Special Training: gain 2 additional ability points (character ages 2 years while participating in the training program)
* Starship Mortgage: gain 1/40 share of a starship representing a year of mortgage paid (for a game in which the player characters own a starship)
''Note:'' If the character receives a pension (as decided by the GM), the pension is based on the amount of benefit points converted into money.
Back in the days of the United Commonwealth, ethics and moral were on the decline. Unfettered scientific progress seemed to be the order of the day. Religion fell by the wayside. This changed with Von Neumann’s War. Ethical standards were suddenly en-vogue again. The faltering churches used the techno-phobic tendencies to their advantage and spear-headed anti-technology groups.

When Earth was lost, the Redemptionist Creed gained a powerful icon of worship and hope. To rediscover Terra Lost one day was a powerful vision to re-kindle faith among the stars. The hope for a return to the cradle of humanity was a beacon to attract the faithful.

The Church of Holy Redemption strongly proposes to limit research within certain sensitive areas such as psionics, artificial intelligence and biological and technological augmentation of the human form.

Today, the congregation of the Redemptionists is the most visible religious group in the Interstellar Empire. The church is headed by Pontifex Joan II. The church is organised into bishoprics and archbishoprics that encompass whole sectors. On a local level, celibate priests and priestesses see to the religious needs of the populace. Numerous holy orders are associated with the main body of the church.
This is small, heretical church is devoted to advanced machinery. It started as a joke among engineers in the War of Independence era. They greeted each other with the words “May the machine god protect you”. It was supposed to be a demonstration of courage in the face of an increasingly technophobe society. Later, superstitious engineers started to pray to the “machine god” when the engines of their ships threatened to malfunction or repairs were going slow.

Nowadays, only a fringe group of engineers of the Civilised Worlds still follows these customs. Society on the Core Worlds considers itself far too enlightened for such superstitious nonsense. Out on the Marches and in Wildspace, talk of the “machine god” might get an engineer killed by an angry mob grown up on faerie-tales on the subject of the Von Neumann’s War.

Still, rumours abound that a dedicated group of engineers is researching AI again and looking for starships vanished since the end of Von Neumann’s War.

Note: During our first episode of [[Medusa Dreaming|Actual Play]] the player character Joanna Laycock kept praying to the machine god that Commander Kowalchickz wouldn’t overtax her precious engines. The player absolutely wanted to have a “machine god” that she could pray to. So I took her idea and fleshed it out.
The ''Church of the Subconscious Mind'' forms the government of [[Coriolis]]. Church officials and members are drawn exclusively from the Delphic clade. Progression in ranks is dependent on continued spiritual awareness and a healthy amount of ambition. Church officials also hold rank within the planetary government of Coriolis. But the interests of the church are not limited to Coriolis alone. It is not unusual to find church officials posted as legates and attachés throughout the Armistice Zone. Their keen insight into politics and matters of the spirit makes them valued advisors in the sector and beyond.

Priests of the Church of the Subconscious Mind follow a modified version of the Psion career package (p. 52):

//Novice:// the psionic skills gained must include: Adaption, Body Control, and Enhance Self, Athletics 1, Bureaucracy 2, Dodge 2, Social Science 2, Unarmed Combat 1; you do not gain the Profession (Choice) skill.

//Experienced:// the psionic skills gained must include: Adaption, Body Control, and Enhance Self, Athletics 2, Bureaucracy 3, Dodge 3, Observe 3 (instead of 2), Social Science 3, Unarmed Combat 2; you do not gain the Profession (Choice) skill.

//Veteran:// the psionic skills gained must include: Adaption, Body Control, and Enhance Self, gain only three psionic skills at rank 6 (instead of four), Athletics 3, Bureaucracy 3, Dodge 4, Observe 4 (instead of 2), Social Science 5, Unarmed Combat 3; you do not gain the Profession (Choice) skill.

Background: #fff
Foreground: #000
PrimaryPale: #8cf
PrimaryLight: #18f
PrimaryMid: #04b
PrimaryDark: #014
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88
''Primary World Profile:'' Luxury/Rare Goods
''Secondary World Profile:'' Military
''Primary World Type:'' Terrestrial
''Primary Terrain:'' Oceans
''World Climate:'' Freezing
''World Atmosphere:'' Hazardous
''World Hydrographics:'' Water World
''World Gravity:'' Standard

''Native Sapients:'' None known
''World Population:'' Hundreds of Thousands
''World Government:'' Theocracy
''World Tech Level:'' Interstellar
----
From space, Coriolis looks like a featureless grey orb. This effect is created by the clouds covering the entire planet and the steel-grey nitric acid ocean that lies below the clouds. The temperatures on the surface are well below zero degrees Celsius. Violent storms sweep across the churning ocean and rain consisting entirely of nitric acid falls on the planet.

Especially reinforced buildings cling to small mountainous islands their jagged cliffs jutting out of the stormy ocean. Pilots find setting down on the surface difficult (-2 on Piloting tests to take-off or land on a Coriolis landing platform. Nevertheless, Coriolis is the imperial headquarters of the Armistice Zone.

Why has the Interstellar Empire stationed its forces here out of all the worlds in the sector? Coriolis contains a natural resource that can be harvested by enterprising seamen. The algae found on Coriolis have some rather interesting pharmaceutical uses. They can be processed into anti-aging drugs, drugs that enhance psionic powers and even versions of rapide, mortinta and truthtell can be manufactured here, enough incentives to warrant an imperial presence.

Ever since its discovery, AMICor (see p. 252) has held the lease to farm and process the algae. The mega-corporation pays very large sums to the imperial treasury and the world government for the continued right to exercise this privilege.

The planetary population consists mainly of the Delphic. Soon after the discovery of the algae they expressed a continuing interest into researching their properties, as well as a desire for experimentation with the psychotropic drugs gained from them. When the colony finally became a member of the Interstellar Empire, the ruling Delphic elite formed the [[Church of the Subconscious Mind]].

Today, a number of competing powers influence the theocracy. Of course, the [[Church of the Subconscious Mind]] has the most influence on day-to-day life on Coriolis, but the Sector Governor, the Imperial Navy, AMICor, and even the Ministry of Science have a considerable stake in the welfare of the star system.

In orbit around Coriolis is a large shipyard of the Imperial Navy. Coriolis Station served as staging ground during the Frontier Wars, and is the designated residence of Prince Andrew Edward FitzEmpress , newly appointed Sector Governor in 3575.

''Note:'' By no means is this scientifically correct. Years ago, I rolled up a planet for the Traveller role-playing game that was a covered by oceans and had a corrosive atmosphere. Then, I had an idea that this could be a kind of “Dune” where precious commodities like anti-aging drugs and psionic-enhancers are farmed from the hostile environment. Thus I created Coriolis.
/***
|''Name:''|CryptoFunctionsPlugin|
|''Description:''|Support for cryptographic functions|
***/
//{{{
if(!version.extensions.CryptoFunctionsPlugin) {
version.extensions.CryptoFunctionsPlugin = {installed:true};

//--
//-- Crypto functions and associated conversion routines
//--

// Crypto "namespace"
function Crypto() {}

// Convert a string to an array of big-endian 32-bit words
Crypto.strToBe32s = function(str)
{
	var be = Array();
	var len = Math.floor(str.length/4);
	var i, j;
	for(i=0, j=0; i<len; i++, j+=4) {
		be[i] = ((str.charCodeAt(j)&0xff) << 24)|((str.charCodeAt(j+1)&0xff) << 16)|((str.charCodeAt(j+2)&0xff) << 8)|(str.charCodeAt(j+3)&0xff);
	}
	while (j<str.length) {
		be[j>>2] |= (str.charCodeAt(j)&0xff)<<(24-(j*8)%32);
		j++;
	}
	return be;
};

// Convert an array of big-endian 32-bit words to a string
Crypto.be32sToStr = function(be)
{
	var str = "";
	for(var i=0;i<be.length*32;i+=8)
		str += String.fromCharCode((be[i>>5]>>>(24-i%32)) & 0xff);
	return str;
};

// Convert an array of big-endian 32-bit words to a hex string
Crypto.be32sToHex = function(be)
{
	var hex = "0123456789ABCDEF";
	var str = "";
	for(var i=0;i<be.length*4;i++)
		str += hex.charAt((be[i>>2]>>((3-i%4)*8+4))&0xF) + hex.charAt((be[i>>2]>>((3-i%4)*8))&0xF);
	return str;
};

// Return, in hex, the SHA-1 hash of a string
Crypto.hexSha1Str = function(str)
{
	return Crypto.be32sToHex(Crypto.sha1Str(str));
};

// Return the SHA-1 hash of a string
Crypto.sha1Str = function(str)
{
	return Crypto.sha1(Crypto.strToBe32s(str),str.length);
};

// Calculate the SHA-1 hash of an array of blen bytes of big-endian 32-bit words
Crypto.sha1 = function(x,blen)
{
	// Add 32-bit integers, wrapping at 32 bits
	add32 = function(a,b)
	{
		var lsw = (a&0xFFFF)+(b&0xFFFF);
		var msw = (a>>16)+(b>>16)+(lsw>>16);
		return (msw<<16)|(lsw&0xFFFF);
	};
	// Add five 32-bit integers, wrapping at 32 bits
	add32x5 = function(a,b,c,d,e)
	{
		var lsw = (a&0xFFFF)+(b&0xFFFF)+(c&0xFFFF)+(d&0xFFFF)+(e&0xFFFF);
		var msw = (a>>16)+(b>>16)+(c>>16)+(d>>16)+(e>>16)+(lsw>>16);
		return (msw<<16)|(lsw&0xFFFF);
	};
	// Bitwise rotate left a 32-bit integer by 1 bit
	rol32 = function(n)
	{
		return (n>>>31)|(n<<1);
	};

	var len = blen*8;
	// Append padding so length in bits is 448 mod 512
	x[len>>5] |= 0x80 << (24-len%32);
	// Append length
	x[((len+64>>9)<<4)+15] = len;
	var w = Array(80);

	var k1 = 0x5A827999;
	var k2 = 0x6ED9EBA1;
	var k3 = 0x8F1BBCDC;
	var k4 = 0xCA62C1D6;

	var h0 = 0x67452301;
	var h1 = 0xEFCDAB89;
	var h2 = 0x98BADCFE;
	var h3 = 0x10325476;
	var h4 = 0xC3D2E1F0;

	for(var i=0;i<x.length;i+=16) {
		var j,t;
		var a = h0;
		var b = h1;
		var c = h2;
		var d = h3;
		var e = h4;
		for(j = 0;j<16;j++) {
			w[j] = x[i+j];
			t = add32x5(e,(a>>>27)|(a<<5),d^(b&(c^d)),w[j],k1);
			e=d; d=c; c=(b>>>2)|(b<<30); b=a; a = t;
		}
		for(j=16;j<20;j++) {
			w[j] = rol32(w[j-3]^w[j-8]^w[j-14]^w[j-16]);
			t = add32x5(e,(a>>>27)|(a<<5),d^(b&(c^d)),w[j],k1);
			e=d; d=c; c=(b>>>2)|(b<<30); b=a; a = t;
		}
		for(j=20;j<40;j++) {
			w[j] = rol32(w[j-3]^w[j-8]^w[j-14]^w[j-16]);
			t = add32x5(e,(a>>>27)|(a<<5),b^c^d,w[j],k2);
			e=d; d=c; c=(b>>>2)|(b<<30); b=a; a = t;
		}
		for(j=40;j<60;j++) {
			w[j] = rol32(w[j-3]^w[j-8]^w[j-14]^w[j-16]);
			t = add32x5(e,(a>>>27)|(a<<5),(b&c)|(d&(b|c)),w[j],k3);
			e=d; d=c; c=(b>>>2)|(b<<30); b=a; a = t;
		}
		for(j=60;j<80;j++) {
			w[j] = rol32(w[j-3]^w[j-8]^w[j-14]^w[j-16]);
			t = add32x5(e,(a>>>27)|(a<<5),b^c^d,w[j],k4);
			e=d; d=c; c=(b>>>2)|(b<<30); b=a; a = t;
		}

		h0 = add32(h0,a);
		h1 = add32(h1,b);
		h2 = add32(h2,c);
		h3 = add32(h3,d);
		h4 = add32(h4,e);
	}
	return Array(h0,h1,h2,h3,h4);
};


}
//}}}
The Dillingham Drive is a means of achieving FTL speed. The known physical universe limits speed to the speed of light. Arthur Dillingham used the scientific discoveries from the alien wreck found on Mars to construct an FTL drive. The energy generated by the drive can punch a hole into another dimension called D-space. There, strong gravitational currents pull the spaceship equipped with D-Drive along to its destination.

After the discovery of the D-Drive, it took another 3 years to figure out how the D-space currents worked. A spaceship deviating from the currents is almost instantly torn apart by the gravitational forces of D-space. Therefore it is only possible to reach a couple of destinations from each star system. Though, an enterprising astrogator may "ride" the currents to reach the destination faster. "Riding" the currents can cut down on the travel time between two systems, but an interstellar voyage always takes at least one week.

Travelling in D-space is also called "jumping" to another star system. The act of tearing a hole into normal space at the beginning and end of the interstellar journey is called "the jump".

''Note:'' This explanation for jump theory is totally non-canon. 
The scientists Oliver Dane and Gitta Olmhorst were the joint leaders of the British-Icelandic expedition that discovered the map named for them. Dane was a brilliant scientist from the Oxbridge University in Great Britain. Olmhorst was an archaeologist from the university of Reykjavik.
[[Dark Planet]]
Home
/***
|''Name:''|DeprecatedFunctionsPlugin|
|''Description:''|Support for deprecated functions removed from core|
***/
//{{{
if(!version.extensions.DeprecatedFunctionsPlugin) {
version.extensions.DeprecatedFunctionsPlugin = {installed:true};

//--
//-- Deprecated code
//--

// @Deprecated: Use createElementAndWikify and this.termRegExp instead
config.formatterHelpers.charFormatHelper = function(w)
{
	w.subWikify(createTiddlyElement(w.output,this.element),this.terminator);
};

// @Deprecated: Use enclosedTextHelper and this.lookaheadRegExp instead
config.formatterHelpers.monospacedByLineHelper = function(w)
{
	var lookaheadRegExp = new RegExp(this.lookahead,"mg");
	lookaheadRegExp.lastIndex = w.matchStart;
	var lookaheadMatch = lookaheadRegExp.exec(w.source);
	if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
		var text = lookaheadMatch[1];
		if(config.browser.isIE)
			text = text.replace(/\n/g,"\r");
		createTiddlyElement(w.output,"pre",null,null,text);
		w.nextMatch = lookaheadRegExp.lastIndex;
	}
};

// @Deprecated: Use <br> or <br /> instead of <<br>>
config.macros.br = {};
config.macros.br.handler = function(place)
{
	createTiddlyElement(place,"br");
};

// Find an entry in an array. Returns the array index or null
// @Deprecated: Use indexOf instead
Array.prototype.find = function(item)
{
	var i = this.indexOf(item);
	return i == -1 ? null : i;
};

// Load a tiddler from an HTML DIV. The caller should make sure to later call Tiddler.changed()
// @Deprecated: Use store.getLoader().internalizeTiddler instead
Tiddler.prototype.loadFromDiv = function(divRef,title)
{
	return store.getLoader().internalizeTiddler(store,this,title,divRef);
};

// Format the text for storage in an HTML DIV
// @Deprecated Use store.getSaver().externalizeTiddler instead.
Tiddler.prototype.saveToDiv = function()
{
	return store.getSaver().externalizeTiddler(store,this);
};

// @Deprecated: Use store.allTiddlersAsHtml() instead
function allTiddlersAsHtml()
{
	return store.allTiddlersAsHtml();
}

// @Deprecated: Use refreshPageTemplate instead
function applyPageTemplate(title)
{
	refreshPageTemplate(title);
}

// @Deprecated: Use story.displayTiddlers instead
function displayTiddlers(srcElement,titles,template,unused1,unused2,animate,unused3)
{
	story.displayTiddlers(srcElement,titles,template,animate);
}

// @Deprecated: Use story.displayTiddler instead
function displayTiddler(srcElement,title,template,unused1,unused2,animate,unused3)
{
	story.displayTiddler(srcElement,title,template,animate);
}

// @Deprecated: Use functions on right hand side directly instead
var createTiddlerPopup = Popup.create;
var scrollToTiddlerPopup = Popup.show;
var hideTiddlerPopup = Popup.remove;

// @Deprecated: Use right hand side directly instead
var regexpBackSlashEn = new RegExp("\\\\n","mg");
var regexpBackSlash = new RegExp("\\\\","mg");
var regexpBackSlashEss = new RegExp("\\\\s","mg");
var regexpNewLine = new RegExp("\n","mg");
var regexpCarriageReturn = new RegExp("\r","mg");

}
//}}}
This web site is completely unofficial and in no way endorsed by Rogue Games Inc. Rogue Games, the Rogue Games logo, Colonial Gothic, the Colonial Gothic logo, New World Almanack, Thousand Suns, the Thousand Suns logo, 12°, the 12° logo, Encyclopedia Galactica, Kitchen Kombat, the Kitchen Kombat logo, Fourth Millennium: Future Imperfect, the Fourth Millennium: Future Imperfect logo are ™ and/or © Copyright Rogue Games, Inc 2006-2008. Used without permission. No challenge to their status intended. All Rights Reserved to their respective owners.

The mention of or reference to any company or product in these pages is not a challenge to the trademark or copyright concerned.

All characters appearing in this work are fictitious. Any resemblance to real persons, living or dead, is purely coincidental.
The story begins at Coriolis Station. The IIS Medusa has docked on the station and disembarkation has begun. Captain Cassandra Umbridge orders shore leave for all non-essential personnel after one year of constant travelling from Meridian to Coriolis. She turns over command to her number one and also leaves for the station. Chief engineer Laycock orders the engineering crew to start looking around for additional spare parts on the station, while she herself plans to go straight to the station's quartermaster for re-supply.

Then Sub commander Stryker is notified that the prince has left the ship - alone and without consulting with either Brooke or him. He races to the gangway leading to Coriolis Station. At the same time, Commander Kowalchickz receives an automated distress signal on a coded channel of the Imperial Diplomatic Corps. He informs Captain Umbridge. She orders him to depart for rescue operations immediately. The commander takes over helm and flies the Medusa out of dock personally, thereby disrupting station traffic. Brooke and Stryker race to the bridge and confront Kowalchickz. Stryker even draws his weapon and threatens to shoot him, if he doesn't turn back. (At this point we tested the social combat rules; it was a close call) Commander Kowalchickz calls Coriolis Station and Umbridge herself orders the rescue operation to continue, never mind the Prince. 

The Medusa is headed to the system's gas giant where the signal originates, when Brooke also receives an automated distress call on a secure channel of the Galactic Security Department. She heads to the Commander and shows him her findings. Due to a series of failed roles, he assumes that she picked up the same distress signal as the bridge did. So he keeps wondering how an imperial bureaucrat could receive a distress call. 

Commander Kowalchickz keeps pushing the engines. The second officer Lieutenat Vasquez has reported a Hen Jaa cruiser on intercept course. Over Sub commander Laycock's objections, Kowalchickz decides to race the Hen Jaa cruiser to the rescue area. This puts heavy strain on the sub-light engines of the Medusa. The commander has been made aware that they are technically in violation of the Armistice treaty, because the Medusa has not picked up the required Hen Jaa observers yet. 

Finally, the Medusa arrives at the rescue site, hours ahead of the Hen Jaa cruiser Maa Jirun. They take a battered escape pod on board with a piloting stunt by Commander Kowalchickz. As Stryker opens the pod, they find a poised member of the Diplomatic Corps on board. He introduces himself as Derek Jacosian. Brooke of course recognizes him as the architect of the Hen Jaa Armistice treaty. Initially, the characters distrust him until identifies himself using the Seal of Nevroon, a device genetically bonded to senior diplomats to identify them as a voice of the emperor. After that, he orders everyone not with the military out of the observation lounge, especially Brooke, who he has reason to distrust. But Brooke will not be thwarted. She hacks into the computer systems and continues to follow the conversation. 

Jacosian hands a black chip over to Commander Kowalchickz and orders him under the authority of the Emperor to jump to the co-ordinates on the chip. He also reveals that his original ship has been in battle with another starship. The other ship belonged to the Galactic Security Department. Both ships were destroyed in the battle. Brooke listens in on this with interest. 

Then she receives a clearer signal on her GSD channel. This time it is not automated. It is Colonel Jeremiah Morray. He tells Brooke that he is on another escape pod and hot on the trail of Derek Jacosian. She tells him of the situation on board. He orders her to remain undercover and avoid contacting him. After finishing the conversation, he sends a non-coded Mayday on open channels to the Medusa. Commander Kowalchickz meanwhile lays in a course to rescue the second pod. 

Joanna starts making repairs to the sub-light engines, but still cannot get the energy reserves to work properly again. But at least the Medusa has got cruising speed available. 

When the second escape pod is taken aboard, Brooke gets to the pod first and talks briefly to Colonel Morray. Then the others arrive. It is fairly apparent, that Derek and Jeremiah are anything but good friends. Jeremiah is taken to the observation lounge and briefly talks with Derek. Colonel Morray tries to order the Medusa back to Coriolis Station, but Kowalchickz stands by his orders. Also, Jacosian orders radio silence. 

This is briefly interrupted by an urgent hail from the Maa Jirun. When Captain Hagala Ren of the Hen Jaa Hegemony realizes that his old friend Jacosian is aboard the Medusa, he let's the ship pass unmolested to the jump point. The diplomat gives his word of honor to uphold the Armistice Treaty. Commander Kowalchickz tries to secretly tape the conversation, in case he needs evidence at a Court Martial. But the attempt is bungled by an inexperienced ensign. Jacosian orders Kowalchickz to delete the tapes. 

Meanwhile Lieutenant Vasquez has plotted the jump. He informs the commander that this is a previously unknown route into the Dark Nebula Expanse from Coriolis to an uncharted system. The commander orders the ship to jump, but is deeply concerned about the whole operation. When he tried to turn back, Jacosian informed him that this is kind of a "treasure" hunt (Actually, the commander was being mislead due to some misunderstanding. Kowalchickz hails from Wildspace and still difficulties with Lingua Terra. He speaks a heavy accent of it. The player spoke deepest Bavarian German the whole evening and we sometimes had real trouble following him... it was hilarious) 

Shortly after entering D-space, Joanna has frightening vision of a dark planet, black pyramids and the wailing of lost souls. She wakes up screaming in her quarters. Still groggy from sleep, she talks to Kowalchickz who shares her unease. She also tells him that her visions usually come true.

The jump takes eight weeks to complete. Everybody is trying to pass time during flight and avoid boredom. Stryker is assigned as acting ship's surgeon, because the medical staff had already left the Medusa when the rescue mission had been launched. Brooke works out. Jacosian and Morray "train" a peculiar fighting style together - this usually ends in bloodshed. 

Later, Kowalchickz confronts Brooke with his suspicions about her true allegiance. She flatly denies everything. Kowalchickz in turn implies rather blatantly that she is also the mistress of Prince Andrew. (I "compelled" her hook "fear of losing her face" at this point and offered her an Action Point back when her character would slap the commander right in the face. She accepted.) 

Eight weeks later, the Medusa exits D-space. At the moment of re-entry into normal space, Joanna has another terrifying vision of the dark planet and faints in the engine room. 

//- To be continued -//

''Funny note:'' 
Stryker: "What do get when you fight Hen Jaa with flame throwers?" 
Answer: "Fried calamari." (The name stuck)
Sub commander Stryker truly is a veteran of the Hen Jaa Frontier War...
Shortly after arriving in orbit of the Dark Planet, a very powerful energy beam shoots the IIS Medusa out of the sky. Commander Kowalchickz barely manages to crash land the Medusa on the barren planet. Chief Engineer Laycock estimates that the Medusa could be repaired and maybe reach orbit again, but it soon becomes apparent that the energy weapon would just shoot them down once more.

Derek Jacosian suggests forming two parties. One party should find the source of the energy beam and shut it down, the other group should scout the area for useable materials. Colonel Morray and Jacosian will scout the area. They seem to be looking for something specific, putting aside the rivalry for a short time. The second party will consist of Commander Kowalchickz, Subcommanders Laycock and Stryker, as well as Brooke Wolf.

The four valiant heroes soon discover a group pyramids where the energy beam seems to originate. They manage to enter the structure and find a way to disable the energy weapon. Along the way they discover the remnants of a reptilian society that used to inhabit the pyramids (or maybe the area around the pyramid), but they are gone now.

As they return to the ship, Morray and Jacosian have also returned. Both bearing "superficial" wounds. Derek Jacosian has managed to recover an emergency beacon from another starship. He hands over a set of coordinates to Commander Kowalchickz, asking him to take the Medusa there - ever deeper into the Dark Nebula expanse.

But first, they have to get off planet. Subcommander Laycock offers a short prayer to the Machine God and starts the engines. As usual, Commander Kowalchickz takes the helm himself. In a desperate race against gravity, the Medusa manages to become spaceborne again. Just barely. Then Commander Kowalchickz navigates to the coordinates provided by the emergency beacon. The IIS Medusa prepares to enter D-space again...

//- To be continued -//

//''Notes:'' This is a rather short write-up, because this episode was played over a year ago. It is mainly based on the classic Traveller adventure "Shadows". You can find the details on the pyramids there, as well as how to disable the energy beam. Of course, I vastly upgraded the efficiency of the beam, enabling it to take down an Imperial cruiser.//
''p. 146 Psi-stam''
Instead of a successful Body test, the Psion has to make a successful Body + Will test.

''p. 152 Projectile Deflector''
The projectile deflector imposes a -2 penalty to all Shoot Tests made against the character.

The surname //FitzEmpress// denotes Prince Andrew Edward as being the son of empress Catherine Anne. Originally, the loyalists used the surname to mock Prince Andrew and his "unusual" parentage. The treaty officially named him as FitzEmpress and the name has stuck. Prince Andrew's full (and legitimate) name and title would be Prince Andrew Edward Fairfax of Windsor-Hohenzollern, Duke of Meridian, Senator to the Concordium.

Legally, as soon as he ascends to the throne, the Duchy of Meridian will lapse and its seat in the senate will become void, because the emperor cannot be the Duke of Meridian. But legislature is underway to legally cede the ducal seat of Meridian to the position of the Heir Apparent until his or her ascension to the imperial throne. This move fiercely debated in the Concordium. The Loyalists being largely in favor of the motion, and the Reformists unanimously opposing the motion citing the neutrality of Meridian.
The GSD is basically an espionage organisation in the service of the emperor. They are responsible for policing internal and external threats to the empire that are best dealt with covertly. The agents, spies and operatives of the GSD usually work in secret and gather intelligence on enemies of the Interstellar Empire. The GSD answers only to the emperor and the Privy Council, but they do not have the vast discretionary powers of the Diplomatic Corps.
''Primary World Profile:'' Commercial
''Primary World Type:'' Other (Space Station)
''Primary Terrain:'' N/A
''World Climate:'' N/A
''World Atmosphere:'' N/A
''World Hydrographics:'' N/A
''World Gravity:'' N/A

''Native Sapients:'' None 
''World Population:'' Tens of Thousands
''World Government:'' Junta
''World Tech Level:'' Stellar
----
Hell's Gate is a former industrial space colony built to exploit a nearby asteroid belt. The ore was mined by roboters and processed on the space station. The colony was used as a shipyard in the late Commonwealth era, but during the Age of Warring States the asteroids were mostly depleted. At that point, many colonists left the station. Those that stayed behind started to run more illegitimate enterprises. Today, Hell’s Gate has become a hub of crime.

But the Hen Jaa Frontier Wars brought another business to the space station: espionage. As the central way station of the sector and supposedly neutral territory, many kinds of people came here during the war. Today, Hell’s Gate hosts an imperial garrison and serves as the diplomatic centre of the Armistice Zone. The Imperial Diplomatic Corps and their opposite number the Hen Jaa Interstellar Contacts Agency are both headquartered on the space station.

Hell’s Gate is as riotous as ever. Gambling dens, seedy taverns, and red-lit houses for ladies and gentlemen of easy virtue form the majority of businesses. This is a place where smugglers and pirates sell their wares while the Imperial Navy turns a blind eye to dealings here, as long as certain rules are observed. It is said that you can find any and all illicit trades on Hell’s Gate, no exceptions. Despite all the general state of lawlessness, a couple of major trading consortiums and the odd mega-corporation maintains offices on Hell’s Gate.

Outside of the Imperial Enclave it is better to go armed. 

''Note:'' Hell's Gate is a tribute to the fan-project [[''Star Trek: Hidden Frontiers"|http://www.hiddenfrontier.org/]]. There, it's a space station for the rogue elements of the Briar Patch where the series is set. 
- [[Overview]] -
[[Carabas]]
[[Coriolis]]
[[Hell's Gate]]
[[Moabit]]
[[New Berlin]]
Welcome to the site '' Living in Starlight''. The content presented here for my //Thousand Suns RPG// campaign builds on the Thousand Suns rulebook from [[Rogue Games|http://www.rogue-games.net/]]. Visit their site for official content and information about the ~role-playing game.

//Thousand Suns// is a science fiction role-playing game that follows in the tradition of Imperial SF. You might also call it golden age science fiction. Some examples included: the Dune books by Frank Herbert, the Foundation trilogy by Isaac Asimov, the Firefly series by Joss Whedon, the Babylon 5 series by J. Michael Stracynski, the Fading Suns role-playing game, or the Traveller role-playing game.

//Thousand Suns// presents a ~Meta-Setting that can be easily modified to the tastes of the individual Game Master. This site presents one of the myriad possible interpretations and customisation of the //Thousand Suns ~Meta-Setting//.

Have fun reading!

''Note:'' The title of this site, //"Living in Starlight"// is an homage to Babylon 5. The pilot episode of the failed series [[Babylon 5: The Legend of the Rangers|http://en.wikipedia.org/wiki/Babylon_5:_The_Legend_of_the_Rangers]] was called //To Live and Die in Starlight//.
Thousand Suns use a tool box approach to the rules. I am taking advantage of this by adding my own house-rules for the setting. The intention of my house-rules is mostly to add missing rules or increase chance of success for existing rules.

For my own campaign, in cases were the house-rules contradict the main //Thousand Suns// rulesbook, the rules listed below take precedence.

[[Character Creation]]
[[Skills]]
[[Personal Combat]]
[[Starship Combat]]
[[Equipment]]
The Imperial Diplomatic Corps was formed back in the Age of the Warring States. Back then, ambassadors of the Corps and their aides-de-camp brokered peace and trade agreements between the warring planets. Due to the vast interstellar distances involved, members of the corps enjoy broad discretionary powers, even today.

Diplomats have easy access to the emperor and their voices carry great weight in the imperial audience chambers. Being invited to the Diplomatic Corps is a great honour, accompanied by greater responsibility. Ambassadors of the corps are considered to be the eyes and ears of the Emperor himself.
/***
|Name|InlineJavascriptPlugin|
|Source|http://www.TiddlyTools.com/#InlineJavascriptPlugin|
|Documentation|http://www.TiddlyTools.com/#InlineJavascriptPluginInfo|
|Version|1.9.2|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides||
|Description|Insert Javascript executable code directly into your tiddler content.|
''Call directly into TW core utility routines, define new functions, calculate values, add dynamically-generated TiddlyWiki-formatted output'' into tiddler content, or perform any other programmatic actions each time the tiddler is rendered.
!!!!!Documentation
>see [[InlineJavascriptPluginInfo]]
!!!!!Revisions
<<<
2008.03.03 [1.9.2] corrected declaration of wikifyPlainText() for 'TW 2.1.x compatibility fallback' (fixes Safari "parse error")
2008.02.23 [1.9.1] in onclick function, use string instead of array for 'bufferedHTML' attribute on link element (fixes IE errors)
2008.02.21 [1.9.0] 'onclick' scripts now allow returned text (or document.write() calls) to be wikified into a span that immediately follows the onclick link.  Also, added default 'return false' handling if no return value provided (prevents HREF from being triggered -- return TRUE to allow HREF to be processed).  Thanks to Xavier Verges for suggestion and preliminary code.
|please see [[InlineJavascriptPluginInfo]] for additional revision details|
2005.11.08 [1.0.0] initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.inlineJavascript= {major: 1, minor: 9, revision: 2, date: new Date(2008,3,3)};

config.formatters.push( {
	name: "inlineJavascript",
	match: "\\<script",
	lookahead: "\\<script(?: src=\\\"((?:.|\\n)*?)\\\")?(?: label=\\\"((?:.|\\n)*?)\\\")?(?: title=\\\"((?:.|\\n)*?)\\\")?(?: key=\\\"((?:.|\\n)*?)\\\")?( show)?\\>((?:.|\\n)*?)\\</script\\>",

	handler: function(w) {
		var lookaheadRegExp = new RegExp(this.lookahead,"mg");
		lookaheadRegExp.lastIndex = w.matchStart;
		var lookaheadMatch = lookaheadRegExp.exec(w.source)
		if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
			var src=lookaheadMatch[1];
			var label=lookaheadMatch[2];
			var tip=lookaheadMatch[3];
			var key=lookaheadMatch[4];
			var show=lookaheadMatch[5];
			var code=lookaheadMatch[6];
			if (src) { // load a script library
				// make script tag, set src, add to body to execute, then remove for cleanup
				var script = document.createElement("script"); script.src = src;
				document.body.appendChild(script); document.body.removeChild(script);
			}
			if (code) { // there is script code
				if (show) // show inline script code in tiddler output
					wikify("{{{\n"+lookaheadMatch[0]+"\n}}}\n",w.output);
				if (label) { // create a link to an 'onclick' script
					// add a link, define click handler, save code in link (pass 'place'), set link attributes
					var link=createTiddlyElement(w.output,"a",null,"tiddlyLinkExisting",wikifyPlainText(label));
					var fixup=code.replace(/document.write\s*\(/gi,'place.bufferedHTML+=(');
					link.code="function _out(place){"+fixup+"\n};_out(this);"
					link.tiddler=w.tiddler;
					link.onclick=function(){
						this.bufferedHTML="";
						try{ var r=eval(this.code);
							if(this.bufferedHTML.length || (typeof(r)==="string")&&r.length)
								var s=this.parentNode.insertBefore(document.createElement("span"),this.nextSibling);
							if(this.bufferedHTML.length)
								s.innerHTML=this.bufferedHTML;
							if((typeof(r)==="string")&&r.length) {
								wikify(r,s,null,this.tiddler);
								return false;
							} else return r!==undefined?r:false;
						} catch(e){alert(e.description||e.toString());return false;}
					};
					link.setAttribute("title",tip||"");
					var URIcode='javascript:void(eval(decodeURIComponent(%22(function(){try{';
					URIcode+=encodeURIComponent(encodeURIComponent(code.replace(/\n/g,' ')));
					URIcode+='}catch(e){alert(e.description||e.toString())}})()%22)))';
					link.setAttribute("href",URIcode);
					link.style.cursor="pointer";
					if (key) link.accessKey=key.substr(0,1); // single character only
				}
				else { // run inline script code
					var fixup=code.replace(/document.write\s*\(/gi,'place.innerHTML+=(');
					var code="function _out(place){"+fixup+"\n};_out(w.output);"
					try { var out=eval(code); } catch(e) { out=e.description?e.description:e.toString(); }
					if (out && out.length) wikify(out,w.output,w.highlightRegExp,w.tiddler);
				}
			}
			w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
		}
	}
} )
//}}}
''Forward:'' This is my first attempt to customize the Meta-setting of Thousand Suns to a personal setting. My aim is to take the events of the Meta-setting and fit them into my own vision of the //Thousand Suns//. This combines many years of ideas and notes into one cohesive whole supported by Chapter 7: Meta-setting (p. 234ff of //''Thousand Suns''//).

So, let’s start with a voyage to the Interstellar Empire, a place where the suns never set…

''Timeline of the Interstellar Empire (all dates are Common Era or Anno Domini notation)''

[[2126 – The Thirty-Hour War]]
[[2202 – Discovery of the Dane-Olmhorst Map]]
[[2294 – D-Drive Invented]]
[[2297 – The UNS Voyager Expedition]]
[[2385 – First Contact]]
[[2408 – Foundation of the United Commonwealth of Planets]]
[[2525 – Von Neumann’s War]]
[[2655 to 2675 – The Gene War]]
[[2675 to 2875 – The Wars of Independence]]
[[2875 to 3075 – The Age of Warring States]]
[[3075 – The Concord of Empire]]
[[3546 to 3554 – The Civil War]]
[[3556 to 3564 – The Hen Jaa Frontier Wars]]
[[3575 – The Present Day]]
''Hen Jaa Hegemony''
The Interstellar Empire has already fought the Hen Jaa to a standstill once. Today, the Armistice Zone separates the hostile territories from each other. In the planetary systems of the Armistice Zone ships from both navies may only operate if accompanied by an official observation team of the other side. The teams usually consist of three delegates.

The star systems are still patrolled by their respective owners, but military actions bring certain “complications” with them. The armistice established in 3564 is sometimes strained, rarely violent and always tense. Diplomats from the Interstellar Empire and the Hen Jaa Hegemony are on stand-by most of the time, trying to diffuse unpleasant situations. Curiously, despite all this turmoil, there is respect growing on both sides of the fence. Some humans and Hen Jaa are actually forming friendships.

''Myrmidon Domains''
Myrmidon Domains are virtually unchanged from the description on p. 256. 

''Kriilkna Consociations''
Kriilkna Consociations are virtually unchanged from the description on p. 256. 

''The Warring States''
They do not exist in my vision of the //Thousand Suns// universe. They either got annexed by the Myrmidon Domains or the Kriilkna Consociations. Somewhere out in the unknown, one precursor state exists: Terra Lost and its allies. But ever since contact has been lost, nobody has heard anything about the lost cradle of humanity.

''Others''

''Czanik''
This old species had been the First Contact as humanity reached out into space. As the United Commonwealth of Planets descended into war and anarchy, the Czanik withdrew from civilised space. Some of them remained, but most of them left for their own star systems. Today, a Czanik is a very rare sight among the Thousand Suns. Most humans won’t ever see one at all. Still, they are remembered as the elder statesman among the alien races.

''The Delphic''
While the Commonwealth sought to expunge the Myrmidon clade, the Delphic managed to avert a similar fate. Indeed, the Delphic can be said to have prospered. They have interwoven themselves with the empire and certain key institutions. Even among the senatorial families they form a distinct minority. They are most visible as agents of the Ministry, their red heads a dead give away as to their nature.

The Delphic keep meticulously track of their genetic lineages and intermarriages. It is said, that a council of matrons working on [[Meridian|http://www.rogue-games.net/galactica.html#Meridian]] keeps track of the Delphic genom, constantly improving on the original design. To what end none can say.
For whatever reason, the Law Enforcer Career Package on page 50 of ''Thousand Suns'' does not include the Profession (Law Enforcer) skill. By design, Career Packages are supposed to include this useful catch-all skill, but the Law Enforcer doesn't. To rectify this, here is an alternate take on the Law Enforcer, which shifts a few points around to make room for the Profession skill.

''Novice'': Athletics 1, Bargain 1, Bureaucracy 1, Defend 2, Dodge 2, Diplomacy 1, Empathy 2, Intimidation 2, Investigation 2, Observe 2, Profession (Law Enforcer) 2, Shoot 2, Streetwise 1, Tactics 1, Unarmed Combat 2, Vehicle Operation 1

''Experienced'': Athletics 2, Bargain 2, Bureaucracy 2, Defend 4, Dodge 4, Empathy 4, Intimidation 3, Investigation 4, Observe 4, Profession (Law Enforcer) 4, Shoot 4, Streetwise 3, Tactics 3, Unarmed Combat 4, Vehicle Operation 3.

''Veteran'': Athletics 3, Bargain 3, Bureaucracy 3, Defend 6, Dodge 4, Diplomacy 3, Empathy 6, Intimidation 4, Investigation 6, Observe 6, Profession (Law Enforcer) 5, Shoot 5, Streetwise 4, Tactics 3, Unarmed Combat 5, Vehicle Operation 4.
/***
|''Name:''|LegacyStrikeThroughPlugin|
|''Description:''|Support for legacy (pre 2.1) strike through formatting|
|''Version:''|1.0.2|
|''Date:''|Jul 21, 2006|
|''Source:''|http://www.tiddlywiki.com/#LegacyStrikeThroughPlugin|
|''Author:''|MartinBudden (mjbudden (at) gmail (dot) com)|
|''License:''|[[BSD open source license]]|
|''CoreVersion:''|2.1.0|
***/

//{{{
// Ensure that the LegacyStrikeThrough Plugin is only installed once.
if(!version.extensions.LegacyStrikeThroughPlugin) {
version.extensions.LegacyStrikeThroughPlugin = {installed:true};

config.formatters.push(
{
	name: "legacyStrikeByChar",
	match: "==",
	termRegExp: /(==)/mg,
	element: "strike",
	handler: config.formatterHelpers.createElementAndWikify
});

} //# end of "install only once"
//}}}
''Thousand Suns Official Sites''
[[Official Thousand Suns site|http://www.rogue-games.net/othergames2.html]]
[[Rogue Games, Publishers of the Thousand Suns RPG|http://www.rogue-games.net/]]
[[Encyclopedia Galactica for the Thousand Suns|http://www.rogue-games.net/galactica.html]]
[[Transmissions from the Thousand Suns Yahoo! Group|http://games.groups.yahoo.com/group/transmission_thousand_suns/]]

''Thousand Suns Fan Sites''
[[The Divide, first fan-created Thousand Suns site|http://www.scruffyco.com/divide/Main/HomePage]]
/***
|''Name:''|LoadRemoteFileThroughProxy (previous LoadRemoteFileHijack)|
|''Description:''|When the TiddlyWiki file is located on the web (view over http) the content of [[SiteProxy]] tiddler is added in front of the file url. If [[SiteProxy]] does not exist "/proxy/" is added. |
|''Version:''|1.1.0|
|''Date:''|mar 17, 2007|
|''Source:''|http://tiddlywiki.bidix.info/#LoadRemoteFileHijack|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.2.0|
***/
//{{{
version.extensions.LoadRemoteFileThroughProxy = {
 major: 1, minor: 1, revision: 0, 
 date: new Date("mar 17, 2007"), 
 source: "http://tiddlywiki.bidix.info/#LoadRemoteFileThroughProxy"};

if (!window.bidix) window.bidix = {}; // bidix namespace
if (!bidix.core) bidix.core = {};

bidix.core.loadRemoteFile = loadRemoteFile;
loadRemoteFile = function(url,callback,params)
{
 if ((document.location.toString().substr(0,4) == "http") && (url.substr(0,4) == "http")){ 
  url = store.getTiddlerText("SiteProxy", "/proxy/") + url;
 }
 return bidix.core.loadRemoteFile(url,callback,params);
}
//}}}
[[Home]]
----
[[Interstellar History]]
[[The Empire Today]]
[[Organisations]]
[[Psionics]]
[[Interstellar Relations]]
----
<<slider "HenJaaArmisticeZone" "Hen Jaa Armistice Zone" "Armistice Zone »" "List of Planets" >>
<<slider "DarkNebulaExpanse" "Dark Nebula Expanse" "Dark Nebula »" "List of Planets" >>
----
[[House Rules]]
[[Actual Play]]
----
[[Links]]
----
[[Disclaimer]]
Profile: Adminstration
Type: Terrestrial
Primary Terrain: Urban
Climate: Temperate
Atmosphere: Standard
Hydrographics: Moderate
Gravity: Standard

Native Sapients: None
Government: Representative Democracy
Population: 90 billion
Tech Level: Interstellar

Meridian is the central system of the Thousand Suns, the hub around which all of civilized space revolves. A true world-city, most of its surface is covered with durasteel buildings and other structures, some of them kilometers tall, although none surpasses the Capitol, where both chambers of the Concordium deliberate when in session. Most travel on Meridian is done via air, whether grav car, aerodyne, or other more exotic forms of transportation. Far below the below the spires lies the Strato, the true surface of the planet—a vibrant, riotous place where species and cultures from across the Thousand Suns mingle, brawl, and wheel and deal. Meridian is a diverse, almost timeless place, strangely insulated from affairs in the wider galaxy. Even at the height of the Civil War, as rebel and loyalist fleets engaged one another throughout Center Sector, the Opera House continued to draw the rich and the powerful, while gravball teams contended in the Arena, and megacorporations plotted how best to sell their goods to emerging markets in the marches. Not much has changed in the generation since the end of the war and, barring some unforeseen turn of events, not much is likely to do so.

In the federal option, Meridian is home to the Presidential Palace, where the Federation president lives and works. The Palace is a grav sphere with several aeroports and its own traffic control system, owing to the intense security under which the president lives. Prior to the Civil War, the Palace was accessible to the public and guided tours were permitted. This is no longer the case, although there have been calls, both from the public and from delegates to the Concordium, to revert to the older practice as a testament to the "return to normalcy." Thus far, these pleas have met with no action and the only regular visitors to the Palace aside from legislators and foreign dignitaries are megacorp officials.

In the imperial option, the emperor is forbidden by law and tradition to step foot on Meridian, instead making his home a jumpline away on Pinnacle/Center. While this has sometimes made coordination between the Throne and the Concordium difficult, no one has ever seriously suggested changing the practice, lest the independence of the latter be called into question. The emperor instead relies on his own delegates to the legislature, who speak on his behalf on important matters.
Usually just called //“The Ministry”//, it is an institution of science, research, and learning that traces its roots into the United Commonwealth of Planets. In the past centuries, the Ministry has primarily engaged in psionic research. The Minister of Science offers Psions employment and security from public prosecution. Indeed, today most members of the Ministry are Psions. It’s become rare for a non-psionically gifted individual to advance far in the ranks of Ministry.

Often, naval military units or installations are accompanied by the green-clad and gloved “researchers” of the Ministry. They offer their assistance in ways other services cannot. Their presence often strikes fear into the hearts of the more fearful inhabitants of the Marches.

Ministry agents are expected to conduct themselves under a strict code of behaviour. They are explicitly forbidden to read minds of anyone without prior permission or authorization.

There are rumours that the Ministry finances illegal psionic research, in order to achieve a scientific breakthrough. If those rumours are to be believed, the Ministry engages in invasive surgery and behaviour modification in secret facilities camouflaged as schools and academies for //“gifted children”//. So far, no proof of these activities has been obtained. Even though, Ministry researchers point to the Delphics as an example how mental prowess and psionic potential maybe related.
''Primary World Profile:'' Academic/Research
''Primary World Type:'' Terrestrial
''Primary Terrain:'' Forested
''World Climate:'' Freezing
''World Atmosphere:'' Standard
''World Hydrographics:'' Dry
''World Gravity:'' Light

''Native Sapients:'' None 
''World Population:'' Tens of Billions
''World Government:'' Governor (will be Direct Democracy)
''World Tech Level:'' Interstellar
----
Moabit is a strange world. It is mostly covered in coniferous forest and experiences a protracted ice age. The oceans have shrunken to cover less than 30% of the world surface. Due to the light gravity, chunks of the soil covered by vegetation have actually begun to float a couple of dozen meters above ground. Their roots draw nourishment from the floating soil and the air. Some trees even trap insects in with their root network. Despite the cold, the vegetation seems to be flourishing. Wood grows at a vastly accelerated rate und replenishes itself fast. Originally, the tree resin and the abundant woods were exploited. The resin can be used to substitute for fossil fuel and as basis for creating various plastics.

Civilization is concentrated in a ring of equatorial arcologies rising out of the wilderness and reaching into the sky. Orbital elevators connect Moabit ground-port to the spaceport in orbit. The planet is a shining example of the marvels human genius can build.

Moabit was used as a prison colony during the era of the United Commonwealth of Planets. Especially New Berlin kept sending prisoners there until late into the Wars of Independence. Then, during the Age of Warring States the colony revolted against the military. The rebels captured the orbital station and crashed it into the space port. The infrastructure of the Commonwealth space marines was destroyed in matter of hours. Then the prisoners took over the planet.

Later, the ruling family of Carabas convinced the former prisoner to acknowledge the Concord of Empire and form an imperial colony under the statues of the Concord. After five hundred years as an imperial colony, the planet is on the verge of becoming an independent member of the Interstellar Empire. The formal recognition is expected to be one of the first official acts of Sector Governor Prince Andrew FitzEmpress.

Today, the face of Moabit is hardly recognisable anymore as a former prison colony. Instead, it has become the pre-eminent centre of learning in the Armistice Zone. This change was fuelled by the discovery of Traveller ruins in the northern wilderness. Much of the technological advancement is based on discoveries in the ruins. The excavations are still an on-going enterprise. 

During the Civil War and also during the Hen Jaa Frontier War, Moabit served as a weapon research facility, leaving the planet armed to its teeth. Now, an influential group of citizens is lobbying for war efforts against New Berlin. The movement is supported by a large and vocal minority of the populace and has the Diplomatic Corps worried. The war lobby wants revenge for evils and atrocities committed by New Berlin during the Commonwealth era. This is hurting the independence movement. The governor of Moabit has yet to hand his final recommendation and review to the sector governor.

''Note:'' The name is pronounced moaw-BEAT. It is named for a city quarter of Berlin and the prison there. I just like the name. The floating forests are inspired by the forest of the same name in [[Monte Cook’s Arcana Evolved|http://www.montecook.com/cgi-bin/page.cgi?arcanaevolved]].
{{{
config.options.txtUserName = "Marquis-de-Carabas";
config.options.chkHttpReadOnly = true; 
config.options.chkSaveBackups = true;
config.options.chkAutoSave = false;
config.commands.editTiddler.hideReadOnly=true; 
}}}
<<tiddler TspotOptions>>These InterfaceOptions for customising TiddlyWiki are saved in your browser

Your username for signing your edits. Write it as a WikiWord (eg JoeBloggs)

<<option txtUserName>>
<<option chkSaveBackups>> SaveBackups
<<option chkAutoSave>> AutoSave
<<option chkRegExpSearch>> RegExpSearch
<<option chkCaseSensitiveSearch>> CaseSensitiveSearch
<<option chkAnimate>> EnableAnimations
The ''Interstellar Empire of the Thousand Suns'' contains all the organisations mentioned on p. 247ff: The Military (divided into Army, Marines and Navy), the Encyclopedia Galactica Foundation, as well as the mega-corporations.

''Marines (Naval Infantry)''
The Marines work mostly as described on p. 249 in the rulebook. The only difference is the armament. Marines are heavily armed troops equipped with Space Combat Armour. They can often be seen to hover through the streets of troubled planets.

Some additional organisations exists the Interstellar Empire of the Thousand Suns, above and beyond those listed in the rulebook:
* [[Church of Holy Redemption]]
* [[Church of the Machine God]]
* [[Church of the Subconscious Mind]]
* [[Galactic Security Department]]
* [[Imperial Diplomatic Corps]]
* [[Ministry of Science]]
* [[Privy Council]]
The Hen Jaa Armistice Zone is the result of the cease-fire that ended the Hen Jaa Frontier Wars. The conflict halted the expanse of the Hen Jaa Hegemony into the Interstellar Empire. The armistice between the Hegemony and the Empire is a fragile one. Each side is still looking for an advantage in the cold war that continues to this day.

Military operations in the Armistice Zone are a delicate matter and require experienced commanding officers who are able to deal with the Hen Jaa on a diplomatic level. Any misstep in the Zone could trigger the next interstellar war. To ease suspicions on both sides, the diplomats agreed on “military observers”. Each vessel has a team of observers from the opposing side on board while conducting operations in the zone.

Putting observers on the vessels also had a beneficial side-effect. For over ten standard years, Terrans and Hen Jaa have worked and lived side-by-side. Even some friendships have developed between members of the two species. 

Still, the Imperial Diplomatic Corps has enough to work on its hands in the Armistice Zone. Relations with the Hen Jaa are not made easier by pirates, smugglers and raiders operating out of [[Hell's Gate]]. Also, a Kriilkna Consociation borders on the Armistice Zone. These Kriilkna are governed by the warrior caste and conduct aggressive raiding of nearby planets of the Empire and the Hegemony.

Of scientific interest is the nearby Dark Nebula Expanse, an interstellar territory consisting mostly of dead worlds, traveller artefacts, and D-Drive routes that take months to traverse.

Into this turmoil, the emperor has sent his younger half-brother and heir apparent Andrew Edward FitzEmpress as the new Sector Governor. After a year of travel, he has finally arrived at the imperial headquarters on [[Coriolis]].
''p. 112 Personal Combat, Additional Rule: Movement''
Most species can move 10 meters per Round, but they can increase that speed by a number of meters equal to the degrees of success on an Athletics Test. Similarly, a character can move up to his full movement speed in a single Round in addition to attacking or defending without penalty. If the character moves more than 10 meters, he incurs the multi-action penalty.

''p. 112 Initiative Modifier''
A character gains a +1 bonus to Initiative Rating for each level in a military Career Package.

''p. 113 Initiative Ties''
In case of ties, the character with the highest (Dexterity + Perception)/2 + number of levels in military Career Package goes first.

''p. 118f Combat Damage''
//Base Damage for Unarmed Combat:// ½ x Degrees of Success (round down) + Body ability
//Base Damage for Melee:// DV x Degrees of Success + Body ability
//Base Damage for Ranged Combat:// DV x Degrees of Success

''Low-tech Melee Weapons''
Most low-tech melee weapons should have Damage Values in the 2-3 range.

''p. 119 Healing''
Second Wind: Recovery of Vitality points is equal to the Degrees of Success on a (Body + Will) test immediately after combat.
The Privy Council’s task is to advise the emperor and serve as ministers of state for the various departments and ministries that form the executive arm of the Interstellar Empire. The Chancellor acts as the head of the Privy Council and is usually a trusted confidante of the emperor. Currently, the Privy Council consists of seven members: the Chancellor, the Minster of Science, the Minister of Foreign Affairs and Interstellar Relations, the Minister of Domestic Affairs and Internal Security, the Minister of Interstellar Warfare, the Minister of Trade, and the Heir Apparent.
Psionics are at best viewed with suspicion on the Core Worlds and in Civilised Space. At worst, they are feared in the Marches and Wildspace. Still, some individuals seek to delve into the secrets of the mind. Foremost among them is the Ministry of Science. The Ministry makes an effort to recruit as many Psions as possible. In the popular image of the Core Worlds, the typical Psion is a Ministry agent. But not all Psions are part of the Ministry, no matter what the Minister of Science wants people to believe. Especially on the outskirts of the empire many Psions are not affiliated with the Ministry. In Ministry lingo they are considered “rogue Psions”. In reality, they may have never even encountered a Ministry official. The rogue Psions of the Marches live in constant danger of being killed by an angry mob for a perceived crime. Almost like witches in the second-half of the 2nd Millennium on Earth.
<<search>><<closeAll>><<permaview>><<newTiddler>><<saveChanges>><<tiddler TspotSidebar>><<slider chkSliderOptionsPanel OptionsPanel "options »" "Change TiddlyWiki advanced options">>
@@padding:0.6em;<<slider chkSliderSideBarTabs SideBarTabsSlider 'tabs »' 'the different tiddler menus'>>@@
<<tabs txtMainTab "Timeline" "Timeline" TabTimeline "All" "All tiddlers" TabAll "Tags" "All tags" TabTags "More" "More lists" TabMore>>

Tales from the Interstellar Empire of the Thousand Suns
<script></script>''Living in Starlight''
''p. 13 Opposed Tests''
Whoever achieves more degrees of success wins the opposed test. In case of a tie, the character with the higher TN wins. A dramatic success always beats a normal success.

'' p. 66 Skill Test Modifiers, Additional Rule: Aiding another''
In some circumstances, it might be possible for several characters to work together to achieve an end. In those circumstances, the group designates a group leader who makes the actual skill test. The other members of the group roll make the same skill test. Each successful test grants the group leader a bonus +2 TN.

It is not possible to aid another in combat, whether personal in scale or taking place in space. The Tactics skill is used to coordinate personnel in combat.

''p. 71 Culture skill''
There is just one Culture skill. If a character does not possess specialization in a particular culture, the Culture test is performed at a -4 penalty.

''p. 70 Language skill''
Language skill is replaced by the Linguistics skill. There is only one Linguistics skill. It covers general familiarity with patterns of language. If a character does not possess specialization in a particular language, the Linguistics test is performed at a -4 penalty.

''p. 72 Profession skill''
There is just one Profession skill. If a character does not possess specialization in a particular profession, the Profession test is performed at a -4 penalty.
/***
|''Name:''|SparklinePlugin|
|''Description:''|Sparklines macro|
***/
//{{{
if(!version.extensions.SparklinePlugin) {
version.extensions.SparklinePlugin = {installed:true};

//--
//-- Sparklines
//--

config.macros.sparkline = {};
config.macros.sparkline.handler = function(place,macroName,params)
{
	var data = [];
	var min = 0;
	var max = 0;
	var v;
	for(var t=0; t<params.length; t++) {
		v = parseInt(params[t]);
		if(v < min)
			min = v;
		if(v > max)
			max = v;
		data.push(v);
	}
	if(data.length < 1)
		return;
	var box = createTiddlyElement(place,"span",null,"sparkline",String.fromCharCode(160));
	box.title = data.join(",");
	var w = box.offsetWidth;
	var h = box.offsetHeight;
	box.style.paddingRight = (data.length * 2 - w) + "px";
	box.style.position = "relative";
	for(var d=0; d<data.length; d++) {
		var tick = document.createElement("img");
		tick.border = 0;
		tick.className = "sparktick";
		tick.style.position = "absolute";
		tick.src = "data:image/gif,GIF89a%01%00%01%00%91%FF%00%FF%FF%FF%00%00%00%C0%C0%C0%00%00%00!%F9%04%01%00%00%02%00%2C%00%00%00%00%01%00%01%00%40%02%02T%01%00%3B";
		tick.style.left = d*2 + "px";
		tick.style.width = "2px";
		v = Math.floor(((data[d] - min)/(max-min)) * h);
		tick.style.top = (h-v) + "px";
		tick.style.height = v + "px";
		box.appendChild(tick);
	}
};


}
//}}}
''p. 180 Starship Combat Basics, Additional rule: Initiative in Space Combat''
Each ship rolls for Initiative: 1D12 + Tactics skill rank of commanding officer +/- modifiers
Military ships gain a +1 to Initiative.

''p. 182 Characters and Ships''
Skills useful in space combat are Piloting to evade enemy fire, Gunnery to enemy ships, Engineering to affect repairs to the ships hull and systems, and Tactics to grant bonuses to tests (similar to Personal Combat, p. 113)

''p. 185 Defending''
A ship’s DM modifies the TN of the pilot and makes the ship harder for an enemy to hit. To determine the TN of the Evasion test, add the ship’s DM to the pilot’s Piloting skill rank. To evade enemy fire, the pilot has to make a test against this TN. If the Evasion test is successful, the pilot determines from which attackers' degree of success to subtract the degrees of success generated on her roll. The pilot may split the degrees of success across as many attacks as she likes, but each degree may only subtract once from an incoming attack.

''p. 185 Optional Critical Hit Results''
The table is not optional in my games. It will be used to determine critical damage.
When a ship’s hull rating is reduced to 0, the ship is considered disabled. Each additional hit (irrespective of damage caused), will cause an automatic critical hit. If the hull rating is reduced to its negative rating, the ship will break apart.

''p. 186 Crew Casualties''
A number of crewmembers and passengers are severely injured and incapacitated. Roll 1d12 to determine the number of crew fatalities and, if the ship carries passengers, 1d12 to determine the number of passenger casualties. After the end of combat, the ship’s medical officer may test his Medical Sciences. Each degree of success stabilizes one casualty. The medical officer decides if crewmembers or passengers have been saved.
* ''Commmander Danny Kowalchickz'' //(novice Pirate, experienced Navy)//, First Officer of the IIS Medusa, Chief Pilot
Hooks: Part of the galaxy's largest hive of rogues; an offer I couldn't refuse; to the farthest reaches of space and onwards; first officer of IIS Medusa; caught up by the past
* ''Subcommander Joanna Laycock'' //(novice Psion, experienced Navy)//, Chief Engineer of the ISS Medusa
Hooks: can scrounge everything; protegée of Admiral Owen Merriweather; Chief Engineer of the ISS Medusa; precognition of battles; likes to play the hero
* ''Subcommander Luke Stryker'' //(novice Army, experienced Marine)//, head of personal honor guard for Prince Andrew Edward
Hooks: father disappeared in Hen Jaa war; career officer & war veteran; failed mission; "honorably" transferred to the Marines
* ''Brooke Wolf'' //(novice Civil Servant, experienced Spy)//, head of staff for Prince Andrew Edward
Hooks: bored by her job & living in luxury; thrill-seeker; curious; likes to solve puzzles; fear of losing her face 
''Forward:'' This is my first attempt to customize the Meta-Setting of Thousand Suns to a personal setting. My aim is to take the events of the Meta-Setting and fit them into my own vision of the //Thousand Suns//. This combines many years of ideas and notes into one cohesive whole supported by Chapter 7: Meta-Setting (p. 234ff of //''Thousand Suns''//).

''The Concord''
The Concord of Empire follows the rules established on p. 241ff.

''The Concordium''
The Concordium of the Interstellar Empire consists of two chambers. The Assembly consists of Representatives of the member worlds. Each member world may send one Representative to the Assembly. How each member world determines its Representative is left for each world to determine individually.

The Senate, on the other hand, consists of the Imperial Aristocracy. The Emperor of the Thousand Suns personally appoints each Senator. The senatorial seat is hereditary as long as the successor can trace a direct line to the originally created Senator. Along with the seat on the Senate, a tract of land is granted on an imperial colony. Later, when an imperial colony transforms into an independent planet that signs the Concord of Empire, most senatorial families from that world also hold governmental authority on the planet.

Imperial legislature must pass both the Assembly and the Senate with a majority vote to be signed into law by the Emperor. Imperial legislature may only be enacted by the Emperor and the Senate. The Assembly does not have the right to enact laws.

The events of the Civil War still divide Concordium politics. Two large parties have formed: Loyalists and Reformists. The Loyalists hold the majority of the senatorial seats and the Reformists marginally outnumber them in the Assembly.

The Emperor of the Thousand Suns may veto any legislature passed by the Concordium. This veto may only be overturned by a ¾ majority in both chambers of the Concordium.

''The Great Crest''
The Great Crest looks exactly as described in the boxed text on p. 243 in the rulebook, except for the words inscribed at the bottom. They read “Eine Vorsehung leuchtender als Tausend Sonnen” (“A Destiny brighter than a Thousand Suns”) in German.

''The State''
Obviously, this setting assumes a benevolent empire as basis. Its full name is “The Interstellar Empire of the Thousand Suns”, though in reality it comprises less than Thousand Suns. Colloquially the state is known as “Interstellar Empire”.

''The Emperor''
Emperor William Henry V of Windsor-Hohenzollern fits most closely in the archetype of the Once and Future Emperor. He reigns for the good of the empire, as shown by his actions in during the Hen Jaa War. He enjoys the support of the common people and the Assembly. He is somewhat at odds with the Senate.

The most troubling issue of the empire is the Heir Apparent, his younger half-brother Andrew Edward FitzEmpress. Prince Andrew Edward is an ambitious young man. Recently, he has been appointed as Sector Governor of the Hen Jaa Armistice Zone.
/***
Contains the stuff you need to use Tiddlyspot
Note you must also have UploadPlugin installed
***/
//{{{

// edit this if you are migrating sites or retrofitting an existing TW
config.tiddlyspotSiteId = 'livinginstarlight';

// make it so you can by default see edit controls via http
config.options.chkHttpReadOnly = false;
window.readOnly = false; // make sure of it (for tw 2.2)
window.showBackstage = true; // show backstage too

// disable autosave in d3
if (window.location.protocol != "file:")
	config.options.chkGTDLazyAutoSave = false;

// tweak shadow tiddlers to add upload button, password entry box etc
with (config.shadowTiddlers) {
	SiteUrl = 'http://'+config.tiddlyspotSiteId+'.tiddlyspot.com';
	SideBarOptions = SideBarOptions.replace(/(<<saveChanges>>)/,"$1<<tiddler TspotSidebar>>");
	OptionsPanel = OptionsPanel.replace(/^/,"<<tiddler TspotOptions>>");
	DefaultTiddlers = DefaultTiddlers.replace(/^/,"[[WelcomeToTiddlyspot]] ");
	MainMenu = MainMenu.replace(/^/,"[[WelcomeToTiddlyspot]] ");
}

// create some shadow tiddler content
merge(config.shadowTiddlers,{

'WelcomeToTiddlyspot':[
 "This document is a ~TiddlyWiki from tiddlyspot.com.  A ~TiddlyWiki is an electronic notebook that is great for managing todo lists, personal information, and all sorts of things.",
 "",
 "@@font-weight:bold;font-size:1.3em;color:#444; //What now?// &nbsp;&nbsp;@@ Before you can save any changes, you need to enter your password in the form below.  Then configure privacy and other site settings at your [[control panel|http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/controlpanel]] (your control panel username is //" + config.tiddlyspotSiteId + "//).",
 "<<tiddler TspotControls>>",
 "See also GettingStarted.",
 "",
 "@@font-weight:bold;font-size:1.3em;color:#444; //Working online// &nbsp;&nbsp;@@ You can edit this ~TiddlyWiki right now, and save your changes using the \"save to web\" button in the column on the right.",
 "",
 "@@font-weight:bold;font-size:1.3em;color:#444; //Working offline// &nbsp;&nbsp;@@ A fully functioning copy of this ~TiddlyWiki can be saved onto your hard drive or USB stick.  You can make changes and save them locally without being connected to the Internet.  When you're ready to sync up again, just click \"upload\" and your ~TiddlyWiki will be saved back to tiddlyspot.com.",
 "",
 "@@font-weight:bold;font-size:1.3em;color:#444; //Help!// &nbsp;&nbsp;@@ Find out more about ~TiddlyWiki at [[TiddlyWiki.com|http://tiddlywiki.com]].  Also visit [[TiddlyWiki Guides|http://tiddlywikiguides.org]] for documentation on learning and using ~TiddlyWiki. New users are especially welcome on the [[TiddlyWiki mailing list|http://groups.google.com/group/TiddlyWiki]], which is an excellent place to ask questions and get help.  If you have a tiddlyspot related problem email [[tiddlyspot support|mailto:support@tiddlyspot.com]].",
 "",
 "@@font-weight:bold;font-size:1.3em;color:#444; //Enjoy :)// &nbsp;&nbsp;@@ We hope you like using your tiddlyspot.com site.  Please email [[feedback@tiddlyspot.com|mailto:feedback@tiddlyspot.com]] with any comments or suggestions."
].join("\n"),

'TspotControls':[
 "| tiddlyspot password:|<<option pasUploadPassword>>|",
 "| site management:|<<upload http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/store.cgi index.html . .  " + config.tiddlyspotSiteId + ">>//(requires tiddlyspot password)//<<br>>[[control panel|http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/controlpanel]], [[download (go offline)|http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/download]]|",
 "| links:|[[tiddlyspot.com|http://tiddlyspot.com/]], [[FAQs|http://faq.tiddlyspot.com/]], [[announcements|http://announce.tiddlyspot.com/]], [[blog|http://tiddlyspot.com/blog/]], email [[support|mailto:support@tiddlyspot.com]] & [[feedback|mailto:feedback@tiddlyspot.com]], [[donate|http://tiddlyspot.com/?page=donate]]|"
].join("\n"),

'TspotSidebar':[
 "<<upload http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/store.cgi index.html . .  " + config.tiddlyspotSiteId + ">><html><a href='http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/download' class='button'>download</a></html>"
].join("\n"),

'TspotOptions':[
 "tiddlyspot password:",
 "<<option pasUploadPassword>>",
 ""
].join("\n")

});
//}}}
<script>readOnly=true;</script>
| !date | !user | !location | !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |
| 17/03/2008 02:46:47 | Marquis-de-Carabas | [[livinginstarlight.html|file:///D:/RolePlayingGames/ThousandSuns/livinginstarlight.html]] | [[store.cgi|http://livinginstarlight.tiddlyspot.com/store.cgi]] | . | [[index.html | http://livinginstarlight.tiddlyspot.com/index.html]] | . | ok |
| 17/03/2008 02:54:10 | Marquis-de-Carabas | [[livinginstarlight.html|file:///D:/RolePlayingGames/ThousandSuns/livinginstarlight.html]] | [[store.cgi|http://livinginstarlight.tiddlyspot.com/store.cgi]] | . | [[index.html | http://livinginstarlight.tiddlyspot.com/index.html]] | . | ok |
| 17/03/2008 03:13:18 | Marquis-de-Carabas | [[livinginstarlight.html|file:///D:/RolePlayingGames/ThousandSuns/livinginstarlight.html]] | [[store.cgi|http://livinginstarlight.tiddlyspot.com/store.cgi]] | . | [[index.html | http://livinginstarlight.tiddlyspot.com/index.html]] | . | ok |
| 18/03/2008 23:45:22 | Marquis-de-Carabas | [[livinginstarlight.html|file:///D:/RolePlayingGames/ThousandSuns/livinginstarlight.html]] | [[store.cgi|http://livinginstarlight.tiddlyspot.com/store.cgi]] | . | [[index.html | http://livinginstarlight.tiddlyspot.com/index.html]] | . | ok |
| 19/03/2008 00:53:24 | Marquis-de-Carabas | [[livinginstarlight.html|file:///D:/RolePlayingGames/ThousandSuns/livinginstarlight.html]] | [[store.cgi|http://livinginstarlight.tiddlyspot.com/store.cgi]] | . | [[index.html | http://livinginstarlight.tiddlyspot.com/index.html]] | . | ok |
| 19/03/2008 00:56:03 | Marquis-de-Carabas | [[livinginstarlight.html|file:///D:/RolePlayingGames/ThousandSuns/livinginstarlight.html]] | [[store.cgi|http://livinginstarlight.tiddlyspot.com/store.cgi]] | . | [[index.html | http://livinginstarlight.tiddlyspot.com/index.html]] | . | ok |
| 04/06/2009 00:54:01 | Marquis-de-Carabas | [[livinginstarlight.html|file:///D:/RolePlayingGames/ThousandSuns/1KS-TiddlyWiki/livinginstarlight.html]] | [[store.cgi|http://livinginstarlight.tiddlyspot.com/store.cgi]] | . | [[index.html | http://livinginstarlight.tiddlyspot.com/index.html]] | . | ok |
| 04/06/2009 00:58:57 | Marquis-de-Carabas | [[livinginstarlight.html|file:///D:/RolePlayingGames/ThousandSuns/1KS-TiddlyWiki/livinginstarlight.html]] | [[store.cgi|http://livinginstarlight.tiddlyspot.com/store.cgi]] | . | [[index.html | http://livinginstarlight.tiddlyspot.com/index.html]] | . | ok |
| 04/06/2009 01:01:29 | Marquis-de-Carabas | [[livinginstarlight.html|file:///D:/RolePlayingGames/ThousandSuns/1KS-TiddlyWiki/livinginstarlight.html]] | [[store.cgi|http://livinginstarlight.tiddlyspot.com/store.cgi]] | . | [[index.html | http://livinginstarlight.tiddlyspot.com/index.html]] | . | ok |
| 04/06/2009 01:30:01 | Marquis-de-Carabas | [[livinginstarlight.html|file:///D:/RolePlayingGames/ThousandSuns/1KS-TiddlyWiki/livinginstarlight.html]] | [[store.cgi|http://livinginstarlight.tiddlyspot.com/store.cgi]] | . | [[index.html | http://livinginstarlight.tiddlyspot.com/index.html]] | . |
/***
|''Name:''|PasswordOptionPlugin|
|''Description:''|Extends TiddlyWiki options with non encrypted password option.|
|''Version:''|1.0.2|
|''Date:''|Apr 19, 2007|
|''Source:''|http://tiddlywiki.bidix.info/#PasswordOptionPlugin|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.2.0 (Beta 5)|
***/
//{{{
version.extensions.PasswordOptionPlugin = {
	major: 1, minor: 0, revision: 2, 
	date: new Date("Apr 19, 2007"),
	source: 'http://tiddlywiki.bidix.info/#PasswordOptionPlugin',
	author: 'BidiX (BidiX (at) bidix (dot) info',
	license: '[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D]]',
	coreVersion: '2.2.0 (Beta 5)'
};

config.macros.option.passwordCheckboxLabel = "Save this password on this computer";
config.macros.option.passwordInputType = "password"; // password | text
setStylesheet(".pasOptionInput {width: 11em;}\n","passwordInputTypeStyle");

merge(config.macros.option.types, {
	'pas': {
		elementType: "input",
		valueField: "value",
		eventName: "onkeyup",
		className: "pasOptionInput",
		typeValue: config.macros.option.passwordInputType,
		create: function(place,type,opt,className,desc) {
			// password field
			config.macros.option.genericCreate(place,'pas',opt,className,desc);
			// checkbox linked with this password "save this password on this computer"
			config.macros.option.genericCreate(place,'chk','chk'+opt,className,desc);			
			// text savePasswordCheckboxLabel
			place.appendChild(document.createTextNode(config.macros.option.passwordCheckboxLabel));
		},
		onChange: config.macros.option.genericOnChange
	}
});

merge(config.optionHandlers['chk'], {
	get: function(name) {
		// is there an option linked with this chk ?
		var opt = name.substr(3);
		if (config.options[opt]) 
			saveOptionCookie(opt);
		return config.options[name] ? "true" : "false";
	}
});

merge(config.optionHandlers, {
	'pas': {
 		get: function(name) {
			if (config.options["chk"+name]) {
				return encodeCookie(config.options[name].toString());
			} else {
				return "";
			}
		},
		set: function(name,value) {config.options[name] = decodeCookie(value);}
	}
});

// need to reload options to load passwordOptions
loadOptionsCookie();

/*
if (!config.options['pasPassword'])
	config.options['pasPassword'] = '';

merge(config.optionsDesc,{
		pasPassword: "Test password"
	});
*/
//}}}

/***
|''Name:''|UploadPlugin|
|''Description:''|Save to web a TiddlyWiki|
|''Version:''|4.1.0|
|''Date:''|May 5, 2007|
|''Source:''|http://tiddlywiki.bidix.info/#UploadPlugin|
|''Documentation:''|http://tiddlywiki.bidix.info/#UploadPluginDoc|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.2.0 (#3125)|
|''Requires:''|PasswordOptionPlugin|
***/
//{{{
version.extensions.UploadPlugin = {
	major: 4, minor: 1, revision: 0,
	date: new Date("May 5, 2007"),
	source: 'http://tiddlywiki.bidix.info/#UploadPlugin',
	author: 'BidiX (BidiX (at) bidix (dot) info',
	coreVersion: '2.2.0 (#3125)'
};

//
// Environment
//

if (!window.bidix) window.bidix = {}; // bidix namespace
bidix.debugMode = false;	// true to activate both in Plugin and UploadService
	
//
// Upload Macro
//

config.macros.upload = {
// default values
	defaultBackupDir: '',	//no backup
	defaultStoreScript: "store.php",
	defaultToFilename: "index.html",
	defaultUploadDir: ".",
	authenticateUser: true	// UploadService Authenticate User
};
	
config.macros.upload.label = {
	promptOption: "Save and Upload this TiddlyWiki with UploadOptions",
	promptParamMacro: "Save and Upload this TiddlyWiki in %0",
	saveLabel: "save to web", 
	saveToDisk: "save to disk",
	uploadLabel: "upload"	
};

config.macros.upload.messages = {
	noStoreUrl: "No store URL in parmeters or options",
	usernameOrPasswordMissing: "Username or password missing"
};

config.macros.upload.handler = function(place,macroName,params) {
	if (readOnly)
		return;
	var label;
	if (document.location.toString().substr(0,4) == "http") 
		label = this.label.saveLabel;
	else
		label = this.label.uploadLabel;
	var prompt;
	if (params[0]) {
		prompt = this.label.promptParamMacro.toString().format([this.destFile(params[0], 
			(params[1] ? params[1]:bidix.basename(window.location.toString())), params[3])]);
	} else {
		prompt = this.label.promptOption;
	}
	createTiddlyButton(place, label, prompt, function() {config.macros.upload.action(params);}, null, null, this.accessKey);
};

config.macros.upload.action = function(params)
{
		// for missing macro parameter set value from options
		var storeUrl = params[0] ? params[0] : config.options.txtUploadStoreUrl;
		var toFilename = params[1] ? params[1] : config.options.txtUploadFilename;
		var backupDir = params[2] ? params[2] : config.options.txtUploadBackupDir;
		var uploadDir = params[3] ? params[3] : config.options.txtUploadDir;
		var username = params[4] ? params[4] : config.options.txtUploadUserName;
		var password = config.options.pasUploadPassword; // for security reason no password as macro parameter	
		// for still missing parameter set default value
		if ((!storeUrl) && (document.location.toString().substr(0,4) == "http")) 
			storeUrl = bidix.dirname(document.location.toString())+'/'+config.macros.upload.defaultStoreScript;
		if (storeUrl.substr(0,4) != "http")
			storeUrl = bidix.dirname(document.location.toString()) +'/'+ storeUrl;
		if (!toFilename)
			toFilename = bidix.basename(window.location.toString());
		if (!toFilename)
			toFilename = config.macros.upload.defaultToFilename;
		if (!uploadDir)
			uploadDir = config.macros.upload.defaultUploadDir;
		if (!backupDir)
			backupDir = config.macros.upload.defaultBackupDir;
		// report error if still missing
		if (!storeUrl) {
			alert(config.macros.upload.messages.noStoreUrl);
			clearMessage();
			return false;
		}
		if (config.macros.upload.authenticateUser && (!username || !password)) {
			alert(config.macros.upload.messages.usernameOrPasswordMissing);
			clearMessage();
			return false;
		}
		bidix.upload.uploadChanges(false,null,storeUrl, toFilename, uploadDir, backupDir, username, password); 
		return false; 
};

config.macros.upload.destFile = function(storeUrl, toFilename, uploadDir) 
{
	if (!storeUrl)
		return null;
		var dest = bidix.dirname(storeUrl);
		if (uploadDir && uploadDir != '.')
			dest = dest + '/' + uploadDir;
		dest = dest + '/' + toFilename;
	return dest;
};

//
// uploadOptions Macro
//

config.macros.uploadOptions = {
	handler: function(place,macroName,params) {
		var wizard = new Wizard();
		wizard.createWizard(place,this.wizardTitle);
		wizard.addStep(this.step1Title,this.step1Html);
		var markList = wizard.getElement("markList");
		var listWrapper = document.createElement("div");
		markList.parentNode.insertBefore(listWrapper,markList);
		wizard.setValue("listWrapper",listWrapper);
		this.refreshOptions(listWrapper,false);
		var uploadCaption;
		if (document.location.toString().substr(0,4) == "http") 
			uploadCaption = config.macros.upload.label.saveLabel;
		else
			uploadCaption = config.macros.upload.label.uploadLabel;
		
		wizard.setButtons([
				{caption: uploadCaption, tooltip: config.macros.upload.label.promptOption, 
					onClick: config.macros.upload.action},
				{caption: this.cancelButton, tooltip: this.cancelButtonPrompt, onClick: this.onCancel}
				
			]);
	},
	refreshOptions: function(listWrapper) {
		var uploadOpts = [
			"txtUploadUserName",
			"pasUploadPassword",
			"txtUploadStoreUrl",
			"txtUploadDir",
			"txtUploadFilename",
			"txtUploadBackupDir",
			"chkUploadLog",
			"txtUploadLogMaxLine",
			]
		var opts = [];
		for(i=0; i<uploadOpts.length; i++) {
			var opt = {};
			opts.push()
			opt.option = "";
			n = uploadOpts[i];
			opt.name = n;
			opt.lowlight = !config.optionsDesc[n];
			opt.description = opt.lowlight ? this.unknownDescription : config.optionsDesc[n];
			opts.push(opt);
		}
		var listview = ListView.create(listWrapper,opts,this.listViewTemplate);
		for(n=0; n<opts.length; n++) {
			var type = opts[n].name.substr(0,3);
			var h = config.macros.option.types[type];
			if (h && h.create) {
				h.create(opts[n].colElements['option'],type,opts[n].name,opts[n].name,"no");
			}
		}
		
	},
	onCancel: function(e)
	{
		backstage.switchTab(null);
		return false;
	},
	
	wizardTitle: "Upload with options",
	step1Title: "These options are saved in cookies in your browser",
	step1Html: "<input type='hidden' name='markList'></input><br>",
	cancelButton: "Cancel",
	cancelButtonPrompt: "Cancel prompt",
	listViewTemplate: {
		columns: [
			{name: 'Description', field: 'description', title: "Description", type: 'WikiText'},
			{name: 'Option', field: 'option', title: "Option", type: 'String'},
			{name: 'Name', field: 'name', title: "Name", type: 'String'}
			],
		rowClasses: [
			{className: 'lowlight', field: 'lowlight'} 
			]}
}

//
// upload functions
//

if (!bidix.upload) bidix.upload = {};

if (!bidix.upload.messages) bidix.upload.messages = {
	//from saving
	invalidFileError: "The original file '%0' does not appear to be a valid TiddlyWiki",
	backupSaved: "Backup saved",
	backupFailed: "Failed to upload backup file",
	rssSaved: "RSS feed uploaded",
	rssFailed: "Failed to upload RSS feed file",
	emptySaved: "Empty template uploaded",
	emptyFailed: "Failed to upload empty template file",
	mainSaved: "Main TiddlyWiki file uploaded",
	mainFailed: "Failed to upload main TiddlyWiki file. Your changes have not been saved",
	//specific upload
	loadOriginalHttpPostError: "Can't get original file",
	aboutToSaveOnHttpPost: 'About to upload on %0 ...',
	storePhpNotFound: "The store script '%0' was not found."
};

bidix.upload.uploadChanges = function(onlyIfDirty,tiddlers,storeUrl,toFilename,uploadDir,backupDir,username,password)
{
	var callback = function(status,uploadParams,original,url,xhr) {
		if (!status) {
			displayMessage(bidix.upload.messages.loadOriginalHttpPostError);
			return;
		}
		if (bidix.debugMode) 
			alert(original.substr(0,500)+"\n...");
		// Locate the storeArea div's 
		var posDiv = locateStoreArea(original);
		if((posDiv[0] == -1) || (posDiv[1] == -1)) {
			alert(config.messages.invalidFileError.format([localPath]));
			return;
		}
		bidix.upload.uploadRss(uploadParams,original,posDiv);
	};
	
	if(onlyIfDirty && !store.isDirty())
		return;
	clearMessage();
	// save on localdisk ?
	if (document.location.toString().substr(0,4) == "file") {
		var path = document.location.toString();
		var localPath = getLocalPath(path);
		saveChanges();
	}
	// get original
	var uploadParams = Array(storeUrl,toFilename,uploadDir,backupDir,username,password);
	var originalPath = document.location.toString();
	// If url is a directory : add index.html
	if (originalPath.charAt(originalPath.length-1) == "/")
		originalPath = originalPath + "index.html";
	var dest = config.macros.upload.destFile(storeUrl,toFilename,uploadDir);
	var log = new bidix.UploadLog();
	log.startUpload(storeUrl, dest, uploadDir,  backupDir);
	displayMessage(bidix.upload.messages.aboutToSaveOnHttpPost.format([dest]));
	if (bidix.debugMode) 
		alert("about to execute Http - GET on "+originalPath);
	var r = doHttp("GET",originalPath,null,null,null,null,callback,uploadParams,null);
	if (typeof r == "string")
		displayMessage(r);
	return r;
};

bidix.upload.uploadRss = function(uploadParams,original,posDiv) 
{
	var callback = function(status,params,responseText,url,xhr) {
		if(status) {
			var destfile = responseText.substring(responseText.indexOf("destfile:")+9,responseText.indexOf("\n", responseText.indexOf("destfile:")));
			displayMessage(bidix.upload.messages.rssSaved,bidix.dirname(url)+'/'+destfile);
			bidix.upload.uploadMain(params[0],params[1],params[2]);
		} else {
			displayMessage(bidix.upload.messages.rssFailed);			
		}
	};
	// do uploadRss
	if(config.options.chkGenerateAnRssFeed) {
		var rssPath = uploadParams[1].substr(0,uploadParams[1].lastIndexOf(".")) + ".xml";
		var rssUploadParams = Array(uploadParams[0],rssPath,uploadParams[2],'',uploadParams[4],uploadParams[5]);
		bidix.upload.httpUpload(rssUploadParams,convertUnicodeToUTF8(generateRss()),callback,Array(uploadParams,original,posDiv));
	} else {
		bidix.upload.uploadMain(uploadParams,original,posDiv);
	}
};

bidix.upload.uploadMain = function(uploadParams,original,posDiv) 
{
	var callback = function(status,params,responseText,url,xhr) {
		var log = new bidix.UploadLog();
		if(status) {
			// if backupDir specified
			if ((params[3]) && (responseText.indexOf("backupfile:") > -1))  {
				var backupfile = responseText.substring(responseText.indexOf("backupfile:")+11,responseText.indexOf("\n", responseText.indexOf("backupfile:")));
				displayMessage(bidix.upload.messages.backupSaved,bidix.dirname(url)+'/'+backupfile);
			}
			var destfile = responseText.substring(responseText.indexOf("destfile:")+9,responseText.indexOf("\n", responseText.indexOf("destfile:")));
			displayMessage(bidix.upload.messages.mainSaved,bidix.dirname(url)+'/'+destfile);
			store.setDirty(false);
			log.endUpload("ok");
		} else {
			alert(bidix.upload.messages.mainFailed);
			displayMessage(bidix.upload.messages.mainFailed);
			log.endUpload("failed");			
		}
	};
	// do uploadMain
	var revised = bidix.upload.updateOriginal(original,posDiv);
	bidix.upload.httpUpload(uploadParams,revised,callback,uploadParams);
};

bidix.upload.httpUpload = function(uploadParams,data,callback,params)
{
	var localCallback = function(status,params,responseText,url,xhr) {
		url = (url.indexOf("nocache=") < 0 ? url : url.substring(0,url.indexOf("nocache=")-1));
		if (xhr.status == httpStatus.NotFound)
			alert(bidix.upload.messages.storePhpNotFound.format([url]));
		if ((bidix.debugMode) || (responseText.indexOf("Debug mode") >= 0 )) {
			alert(responseText);
			if (responseText.indexOf("Debug mode") >= 0 )
				responseText = responseText.substring(responseText.indexOf("\n\n")+2);
		} else if (responseText.charAt(0) != '0') 
			alert(responseText);
		if (responseText.charAt(0) != '0')
			status = null;
		callback(status,params,responseText,url,xhr);
	};
	// do httpUpload
	var boundary = "---------------------------"+"AaB03x";	
	var uploadFormName = "UploadPlugin";
	// compose headers data
	var sheader = "";
	sheader += "--" + boundary + "\r\nContent-disposition: form-data; name=\"";
	sheader += uploadFormName +"\"\r\n\r\n";
	sheader += "backupDir="+uploadParams[3] +
				";user=" + uploadParams[4] +
				";password=" + uploadParams[5] +
				";uploaddir=" + uploadParams[2];
	if (bidix.debugMode)
		sheader += ";debug=1";
	sheader += ";;\r\n"; 
	sheader += "\r\n" + "--" + boundary + "\r\n";
	sheader += "Content-disposition: form-data; name=\"userfile\"; filename=\""+uploadParams[1]+"\"\r\n";
	sheader += "Content-Type: text/html;charset=UTF-8" + "\r\n";
	sheader += "Content-Length: " + data.length + "\r\n\r\n";
	// compose trailer data
	var strailer = new String();
	strailer = "\r\n--" + boundary + "--\r\n";
	data = sheader + data + strailer;
	if (bidix.debugMode) alert("about to execute Http - POST on "+uploadParams[0]+"\n with \n"+data.substr(0,500)+ " ... ");
	var r = doHttp("POST",uploadParams[0],data,"multipart/form-data; boundary="+boundary,uploadParams[4],uploadParams[5],localCallback,params,null);
	if (typeof r == "string")
		displayMessage(r);
	return r;
};

// same as Saving's updateOriginal but without convertUnicodeToUTF8 calls
bidix.upload.updateOriginal = function(original, posDiv)
{
	if (!posDiv)
		posDiv = locateStoreArea(original);
	if((posDiv[0] == -1) || (posDiv[1] == -1)) {
		alert(config.messages.invalidFileError.format([localPath]));
		return;
	}
	var revised = original.substr(0,posDiv[0] + startSaveArea.length) + "\n" +
				store.allTiddlersAsHtml() + "\n" +
				original.substr(posDiv[1]);
	var newSiteTitle = getPageTitle().htmlEncode();
	revised = revised.replaceChunk("<title"+">","</title"+">"," " + newSiteTitle + " ");
	revised = updateMarkupBlock(revised,"PRE-HEAD","MarkupPreHead");
	revised = updateMarkupBlock(revised,"POST-HEAD","MarkupPostHead");
	revised = updateMarkupBlock(revised,"PRE-BODY","MarkupPreBody");
	revised = updateMarkupBlock(revised,"POST-SCRIPT","MarkupPostBody");
	return revised;
};

//
// UploadLog
// 
// config.options.chkUploadLog :
//		false : no logging
//		true : logging
// config.options.txtUploadLogMaxLine :
//		-1 : no limit
//      0 :  no Log lines but UploadLog is still in place
//		n :  the last n lines are only kept
//		NaN : no limit (-1)

bidix.UploadLog = function() {
	if (!config.options.chkUploadLog) 
		return; // this.tiddler = null
	this.tiddler = store.getTiddler("UploadLog");
	if (!this.tiddler) {
		this.tiddler = new Tiddler();
		this.tiddler.title = "UploadLog";
		this.tiddler.text = "| !date | !user | !location | !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |";
		this.tiddler.created = new Date();
		this.tiddler.modifier = config.options.txtUserName;
		this.tiddler.modified = new Date();
		store.addTiddler(this.tiddler);
	}
	return this;
};

bidix.UploadLog.prototype.addText = function(text) {
	if (!this.tiddler)
		return;
	// retrieve maxLine when we need it
	var maxLine = parseInt(config.options.txtUploadLogMaxLine,10);
	if (isNaN(maxLine))
		maxLine = -1;
	// add text
	if (maxLine != 0) 
		this.tiddler.text = this.tiddler.text + text;
	// Trunck to maxLine
	if (maxLine >= 0) {
		var textArray = this.tiddler.text.split('\n');
		if (textArray.length > maxLine + 1)
			textArray.splice(1,textArray.length-1-maxLine);
			this.tiddler.text = textArray.join('\n');		
	}
	// update tiddler fields
	this.tiddler.modifier = config.options.txtUserName;
	this.tiddler.modified = new Date();
	store.addTiddler(this.tiddler);
	// refresh and notifiy for immediate update
	story.refreshTiddler(this.tiddler.title);
	store.notify(this.tiddler.title, true);
};

bidix.UploadLog.prototype.startUpload = function(storeUrl, toFilename, uploadDir,  backupDir) {
	if (!this.tiddler)
		return;
	var now = new Date();
	var text = "\n| ";
	var filename = bidix.basename(document.location.toString());
	if (!filename) filename = '/';
	text += now.formatString("0DD/0MM/YYYY 0hh:0mm:0ss") +" | ";
	text += config.options.txtUserName + " | ";
	text += "[["+filename+"|"+location + "]] |";
	text += " [[" + bidix.basename(storeUrl) + "|" + storeUrl + "]] | ";
	text += uploadDir + " | ";
	text += "[[" + bidix.basename(toFilename) + " | " +toFilename + "]] | ";
	text += backupDir + " |";
	this.addText(text);
};

bidix.UploadLog.prototype.endUpload = function(status) {
	if (!this.tiddler)
		return;
	this.addText(" "+status+" |");
};

//
// Utilities
// 

bidix.checkPlugin = function(plugin, major, minor, revision) {
	var ext = version.extensions[plugin];
	if (!
		(ext  && 
			((ext.major > major) || 
			((ext.major == major) && (ext.minor > minor))  ||
			((ext.major == major) && (ext.minor == minor) && (ext.revision >= revision))))) {
			// write error in PluginManager
			if (pluginInfo)
				pluginInfo.log.push("Requires " + plugin + " " + major + "." + minor + "." + revision);
			eval(plugin); // generate an error : "Error: ReferenceError: xxxx is not defined"
	}
};

bidix.dirname = function(filePath) {
	if (!filePath) 
		return;
	var lastpos;
	if ((lastpos = filePath.lastIndexOf("/")) != -1) {
		return filePath.substring(0, lastpos);
	} else {
		return filePath.substring(0, filePath.lastIndexOf("\\"));
	}
};

bidix.basename = function(filePath) {
	if (!filePath) 
		return;
	var lastpos;
	if ((lastpos = filePath.lastIndexOf("#")) != -1) 
		filePath = filePath.substring(0, lastpos);
	if ((lastpos = filePath.lastIndexOf("/")) != -1) {
		return filePath.substring(lastpos + 1);
	} else
		return filePath.substring(filePath.lastIndexOf("\\")+1);
};

bidix.initOption = function(name,value) {
	if (!config.options[name])
		config.options[name] = value;
};

//
// Initializations
//

// require PasswordOptionPlugin 1.0.1 or better
bidix.checkPlugin("PasswordOptionPlugin", 1, 0, 1);

// styleSheet
setStylesheet('.txtUploadStoreUrl, .txtUploadBackupDir, .txtUploadDir {width: 22em;}',"uploadPluginStyles");

//optionsDesc
merge(config.optionsDesc,{
	txtUploadStoreUrl: "Url of the UploadService script (default: store.php)",
	txtUploadFilename: "Filename of the uploaded file (default: in index.html)",
	txtUploadDir: "Relative Directory where to store the file (default: . (downloadService directory))",
	txtUploadBackupDir: "Relative Directory where to backup the file. If empty no backup. (default: ''(empty))",
	txtUploadUserName: "Upload Username",
	pasUploadPassword: "Upload Password",
	chkUploadLog: "do Logging in UploadLog (default: true)",
	txtUploadLogMaxLine: "Maximum of lines in UploadLog (default: 10)"
});

// Options Initializations
bidix.initOption('txtUploadStoreUrl','');
bidix.initOption('txtUploadFilename','');
bidix.initOption('txtUploadDir','');
bidix.initOption('txtUploadBackupDir','');
bidix.initOption('txtUploadUserName','');
bidix.initOption('pasUploadPassword','');
bidix.initOption('chkUploadLog',true);
bidix.initOption('txtUploadLogMaxLine','10');


/* don't want this for tiddlyspot sites

// Backstage
merge(config.tasks,{
	uploadOptions: {text: "upload", tooltip: "Change UploadOptions and Upload", content: '<<uploadOptions>>'}
});
config.backstageTasks.push("uploadOptions");

*/


//}}}


<!--{{{-->
<div class='toolbar' macro='toolbar closeTiddler closeOthers > fields syncing permalink references jump'></div>
<div class='title' macro='view title'></div>
<div class='subtitle'><span macro='view modifier link'></span>, <span macro='view modified date'></span> (<span macro='message views.wikified.createdPrompt'></span> <span macro='view created date'></span>)</div>
<div class='tagging' macro='tagging'></div>
<div class='tagged' macro='tags'></div>
<div class='viewer' macro='view text wikified'></div>
<div class='tagClear'></div>
<!--}}}-->
Windsor-Hohenzollern has been the ruling dynasty of the Interstellar Empire of the Thousand Sund since the signing of the Concord. It's reign was briefly interrupted by the Civil War. But the Loyalists successfully restored the last heir of the dynasty to the imperial throne in 3554. 

The house of Windsor-Hohenzollern allegedly traces its roots back to two ancient royal houses on Terra Lost. The claim has yet to be conclusively proven. Soon this will become a moot point. The designated heir to the throne is not genetically linked to house Windsor-Hohenzollern. Currently know as FitzEmpress, it is unknown how Prince Andrew will call the dynastic house he is founding.
World-Gov stands short for World Government. It was formed in the wake of the invention of D-Drive. The European politicians successfully pushed for world unity as precondition for interstellar exploration. In the beginning, World-Gov was not a stable entity. Many nations of Terra still squabbled with each other. Even the odd war flared up to be put down by World-Gov forces.

For over a century, from 2294 through 2408, World-Gov was responsible for leading humanity into space. It was disbanded in favour of the United Commonwealth of Planets (UCP).